Antlr4.Analysis.LeftRecursiveRuleTransformer.ParseArtificialRule C# (CSharp) Method

ParseArtificialRule() public method

public ParseArtificialRule ( Grammar g, string ruleText ) : RuleAST
g Antlr4.Tool.Grammar
ruleText string
return Antlr4.Tool.Ast.RuleAST
        public virtual RuleAST ParseArtificialRule(Grammar g, string ruleText)
        {
            ANTLRLexer lexer = new ANTLRLexer(new ANTLRStringStream(ruleText));
            GrammarASTAdaptor adaptor = new GrammarASTAdaptor(lexer.CharStream);
            CommonTokenStream tokens = new CommonTokenStream(lexer);
            lexer.tokens = tokens;
            ToolANTLRParser p = new ToolANTLRParser(tokens, tool);
            p.TreeAdaptor = adaptor;
            IToken ruleStart = null;
            try
            {
                Antlr.Runtime.AstParserRuleReturnScope<GrammarAST, IToken> r = p.rule();
                RuleAST tree = (RuleAST)r.Tree;
                ruleStart = r.Start;
                GrammarTransformPipeline.SetGrammarPtr(g, tree);
                GrammarTransformPipeline.AugmentTokensWithOriginalPosition(g, tree);
                return tree;
            }
            catch (Exception e)
            {
                tool.errMgr.ToolError(ErrorType.INTERNAL_ERROR,
                                      e,
                                      ruleStart,
                                      "error parsing rule created during left-recursion detection: " + ruleText);
            }
            return null;
        }