Antlr4.Analysis.LeftRecursionDetector.Check C# (CSharp) Method

Check() public method

public Check ( ) : void
return void
        public virtual void Check()
        {
            foreach (RuleStartState start in atn.ruleToStartState)
            {
                //System.out.print("check "+start.rule.name);
                rulesVisitedPerRuleCheck.Clear();
                rulesVisitedPerRuleCheck.Add(start);
                //FASerializer ser = new FASerializer(atn.g, start);
                //System.out.print(":\n"+ser+"\n");

                Check(g.GetRule(start.ruleIndex), start, new HashSet<ATNState>());
            }
            //System.out.println("cycles="+listOfRecursiveCycles);
            if (listOfRecursiveCycles.Count > 0)
            {
                g.tool.errMgr.LeftRecursionCycles(g.fileName, listOfRecursiveCycles);
            }
        }

Same methods

LeftRecursionDetector::Check ( Rule enclosingRule, ATNState s, ISet visitedStates ) : bool

Usage Example

Example #1
0
        public virtual void Process()
        {
            // LEFT-RECURSION CHECK
            LeftRecursionDetector lr = new LeftRecursionDetector(g, g.atn);
            lr.Check();
            if (lr.listOfRecursiveCycles.Count > 0)
                return; // bail out

            if (g.IsLexer())
            {
                ProcessLexer();
            }
            else
            {
                // BUILD DFA FOR EACH DECISION
                ProcessParser();
            }
        }
All Usage Examples Of Antlr4.Analysis.LeftRecursionDetector::Check