Package dtool.parser

Source Code of dtool.parser.SourceEquivalenceChecker

package dtool.parser;

import static melnorme.utilbox.core.Assert.AssertNamespace.assertFail;
import dtool.parser.common.Token;
import melnorme.utilbox.misc.ArrayUtil;

public class SourceEquivalenceChecker {
 
  public static void assertCheck(String source, String expectedSource, DeeTokens... additionalIgnores) {
    check(source, expectedSource, true, additionalIgnores);
  }
  public static boolean check(String source, String expectedSource) {
    return check(source, expectedSource, false);
  }
 
  public static boolean check(String source, String expectedSource, boolean failOnUnequal,
    DeeTokens... additionalIgnores) {
    DeeLexer generatedSourceLexer = new DeeLexer(source);
    DeeLexer expectedSourceLexer = new DeeLexer(expectedSource);
   
    while(true) {
      Token tok = getContentToken(generatedSourceLexer, true, additionalIgnores);
      Token tokExp = getContentToken(expectedSourceLexer, true, additionalIgnores);
      if(tok.type.equals(tokExp.type) && tok.source.equals(tokExp.source)) {
      } else if(failOnUnequal) {
        assertFail();
      } else {
        return false;
      }
     
      if(tok.type == DeeTokens.EOF) {
        return true;
      }
    }
  }
 
  public static Token getContentToken(DeeLexer lexer, boolean ignoreComments, DeeTokens... additionalIgnores) {
    while(true) {
      Token token = lexer.next();
      DeeTokens type = token.type;
      if((type.isSubChannel && (type.getGroupingToken() != DeeTokens.GROUP_COMMENT || ignoreComments))
        || (ArrayUtil.contains(additionalIgnores, type)))
        continue;
      return token;
    }
  }
}
TOP

Related Classes of dtool.parser.SourceEquivalenceChecker

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.