Antlr4.AntlrTool.Parse C# (CSharp) Method

Parse() public method

public Parse ( string fileName, Antlr.Runtime.ICharStream @in ) : GrammarRootAST
fileName string
@in Antlr.Runtime.ICharStream
return Antlr4.Tool.Ast.GrammarRootAST
        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;
        }