public ParserInterpreter(string grammarFileName, IVocabulary vocabulary, IEnumerable <string> ruleNames, ATN atn, ITokenStream input) : base(input) { this._grammarFileName = grammarFileName; this._atn = atn; this._ruleNames = ruleNames.ToArray(); this.vocabulary = vocabulary; // identify the ATN states where pushNewRecursionContext must be called this.pushRecursionContextStates = new BitSet(atn.states.Count); foreach (ATNState state in atn.states) { if (!(state is StarLoopEntryState)) { continue; } if (((StarLoopEntryState)state).isPrecedenceDecision) { this.pushRecursionContextStates.Set(state.stateNumber); } } //init decision DFA int numberofDecisions = atn.NumberOfDecisions; this._decisionToDFA = new Dfa.DFA[numberofDecisions]; for (int i = 0; i < numberofDecisions; i++) { DecisionState decisionState = atn.GetDecisionState(i); _decisionToDFA[i] = new Dfa.DFA(decisionState, i); } // get atn simulator that knows how to do predictions Interpreter = new ParserATNSimulator(this, atn, _decisionToDFA, null); }
static DotLexer() { decisionToDFA = new DFA[_ATN.NumberOfDecisions]; for (var i = 0; i < _ATN.NumberOfDecisions; i++) { decisionToDFA[i] = new DFA(_ATN.GetDecisionState(i), i); } }
public LexerInterpreter(string grammarFileName, IVocabulary vocabulary, IEnumerable <string> ruleNames, IEnumerable <string> modeNames, ATN atn, ICharStream input) : base(input) { if (atn.grammarType != ATNType.Lexer) { throw new ArgumentException("The ATN must be a lexer ATN."); } this.grammarFileName = grammarFileName; this.atn = atn; this.ruleNames = ruleNames.ToArray(); this.modeNames = modeNames.ToArray(); this.vocabulary = vocabulary; this.decisionToDFA = new DFA[atn.NumberOfDecisions]; for (int i = 0; i < decisionToDFA.Length; i++) { decisionToDFA[i] = new DFA(atn.GetDecisionState(i), i); } this.Interpreter = new LexerATNSimulator(this, atn, decisionToDFA, sharedContextCache); }