protected virtual void ProcessParser() { g.decisionLOOK = new List<IntervalSet[]>(g.atn.NumberOfDecisions + 1); foreach (DecisionState s in g.atn.decisionToState) { g.tool.Log("LL1", "\nDECISION " + s.decision + " in rule " + g.GetRule(s.ruleIndex).name); IntervalSet[] look; if (s.nonGreedy) { // nongreedy decisions can't be LL(1) look = new IntervalSet[s.NumberOfTransitions + 1]; } else { LL1Analyzer anal = new LL1Analyzer(g.atn); look = anal.GetDecisionLookahead(s); g.tool.Log("LL1", "look=[" + string.Join(", ", look.AsEnumerable()) + "]"); } Debug.Assert(s.decision + 1 >= g.decisionLOOK.Count); Utils.SetSize(g.decisionLOOK, s.decision + 1); g.decisionLOOK[s.decision] = look; g.tool.Log("LL1", "LL(1)? " + Disjoint(look)); } }