Antlr4.Analysis.LeftRecursiveRuleAnalyzer.AddPrecedenceArgToRules C# (CSharp) Method

AddPrecedenceArgToRules() public method

public AddPrecedenceArgToRules ( AltAST t, int prec ) : AltAST
t AltAST
prec int
return AltAST
        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;
        }