public virtual AltAST AddPrecedenceArgToRules(AltAST t, int prec)
{
if (t == null)
return null;
// get all top-level rule refs from ALT
IList<GrammarAST> outerAltRuleRefs = t.GetNodesWithTypePreorderDFS(IntervalSet.Of(RULE_REF));
foreach (GrammarAST x in outerAltRuleRefs)
{
RuleRefAST rref = (RuleRefAST)x;
bool recursive = rref.Text.Equals(ruleName);
bool rightmost = rref == outerAltRuleRefs[outerAltRuleRefs.Count - 1];
if (recursive && rightmost)
{
GrammarAST dummyValueNode = new GrammarAST(new CommonToken(ANTLRParser.INT, "" + prec));
rref.SetOption(LeftRecursiveRuleTransformer.PRECEDENCE_OPTION_NAME, dummyValueNode);
}
}
return t;
}