Antlr3.Tool.Grammar.TranslateLeftRecursiveRule C# (CSharp) Method

TranslateLeftRecursiveRule() public method

public TranslateLeftRecursiveRule ( Antlr3.Tool.GrammarAST ruleAST ) : void
ruleAST Antlr3.Tool.GrammarAST
return void
        public void TranslateLeftRecursiveRule(GrammarAST ruleAST)
        {
            var input = new Antlr.Runtime.Tree.CommonTreeNodeStream(ruleAST);
            LeftRecursiveRuleAnalyzer leftRecursiveRuleWalker = new LeftRecursiveRuleAnalyzer(input, this, ruleAST.enclosingRuleName);
            bool isLeftRec = false;
            try
            {
                //System.out.println("TESTING "+ruleAST.enclosingRuleName);
                isLeftRec = leftRecursiveRuleWalker.rec_rule(this);
            }
            catch (RecognitionException re)
            {
                ErrorManager.Error(ErrorManager.MSG_BAD_AST_STRUCTURE, re);
            }

            if (!isLeftRec)
                return;

            List<string> rules = new List<string>();
            rules.Add(leftRecursiveRuleWalker.GetArtificialPrecStartRule());
            rules.Add(leftRecursiveRuleWalker.GetArtificialOpPrecRule());
            rules.Add(leftRecursiveRuleWalker.GetArtificialPrimaryRule());
            foreach (string r in rules)
            {
                GrammarAST t = ParseArtificialRule(r);
                AddRule(grammarTree, t);
                //System.out.println(t.toStringTree());
            }

            //precRuleInitCodeBlocks.add( precRuleWalker.getOpPrecJavaCode() );
        }
Grammar