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() );
}