public virtual GrammarRootAST Parse(string fileName, ICharStream @in) { try { GrammarASTAdaptor adaptor = new GrammarASTAdaptor(@in); ToolANTLRLexer lexer = new ToolANTLRLexer(@in, this); CommonTokenStream tokens = new CommonTokenStream(lexer); lexer.tokens = tokens; ToolANTLRParser p = new ToolANTLRParser(tokens, this); p.TreeAdaptor = adaptor; try { var r = p.grammarSpec(); GrammarAST root = (GrammarAST)r.Tree; if (root is GrammarRootAST) { ((GrammarRootAST)root).hasErrors = lexer.NumberOfSyntaxErrors > 0 || p.NumberOfSyntaxErrors > 0; Debug.Assert(((GrammarRootAST)root).tokenStream == tokens); if (grammarOptions != null) { ((GrammarRootAST)root).cmdLineOptions = grammarOptions; } return ((GrammarRootAST)root); } } catch (v3TreeGrammarException e) { errMgr.GrammarError(ErrorType.V3_TREE_GRAMMAR, fileName, e.location); } return null; } catch (RecognitionException) { // TODO: do we gen errors now? ErrorManager.InternalError("can't generate this message at moment; antlr recovers"); } return null; }