import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
//-------------------------------------------------------------------------
// Main class:
//-------------------------------------------------------------------------
/**
* Provides a <code>driver</code> method that chains to the super class'
* <code>driver</code> method to obtain a parse tree which is visited by a
* test version of an {@link AstVisitor}. This version implements a test
* that walks the parse tree, printing labels of {@link BaliGrammarNode}
* nodes -- these are the names of the grammar rules.
*
* @layer<visitor>
*/
public class Main {
public Object driver( String[] args ) throws Throwable {
DEBUG.entering( "visitor.Main", "driver", args ) ;
setVersion( "v2002.09.04" ) ;
BaliParse parseTree =
( BaliParse ) original( args ) ;
MainVisitor visitor = new MainVisitor() ;
visitor.dispatch( parseTree ) ;
if ( ! targetRules.equals( visitor.rules ) ) {
System.err.println( targetRules ) ;
System.err.println( visitor.rules ) ;
throw new IllegalStateException( "rule names differ" ) ;
}
DEBUG.exiting( "visitor.Main", "driver", "parseTree" ) ;
return parseTree ;
}
final public List targetRules = Arrays.asList( new String []
{"BaliParse", "Options", "ParserCode", "Block", "Statements",
"Statement", "BaliTokenDefinition", "JavacodeProduction",
"TokenManagerDeclarations", "ScanBlock", "BaliGrammarRule",
"Productions", "Production", "Lookahead", "Rewrite",
"PrimitiveRewrite", "Pattern", "ClassName", "Primitive",
"Terminal", "RegexTokenDefinition", "StateSet", "StatesSpecifier",
"StatesList", "StateName", "REKind", "CaseFlag", "REList",
"RegexBlock", "NextState", "Regex", "AngleRegex", "ComplexRegex",
"Label"} ) ;
}