public DFA(DecisionState atnStartState, int decision) { this.atnStartState = atnStartState; this.decision = decision; boolean precedenceDfa = false; if (atnStartState instanceof StarLoopEntryState) { if (((StarLoopEntryState)atnStartState).isPrecedenceDecision) { precedenceDfa = true; DFAState precedenceState = new DFAState(new ATNConfigSet()); precedenceState.edges = new DFAState[0]; precedenceState.isAcceptState = false; precedenceState.requiresFullContext = false; this.s0 = precedenceState; } } this.precedenceDfa = precedenceDfa; }
DFAState proposed = new DFAState(configs); ATNConfig firstConfigWithRuleStopState = null; for (ATNConfig c : configs) {
DFAState D = new DFAState(reach);
public DFA(DecisionState atnStartState, int decision) { this.atnStartState = atnStartState; this.decision = decision; boolean precedenceDfa = false; if (atnStartState instanceof StarLoopEntryState) { if (((StarLoopEntryState)atnStartState).isPrecedenceDecision) { precedenceDfa = true; DFAState precedenceState = new DFAState(new ATNConfigSet()); precedenceState.edges = new DFAState[0]; precedenceState.isAcceptState = false; precedenceState.requiresFullContext = false; this.s0 = precedenceState; } } this.precedenceDfa = precedenceDfa; }
public DFA(DecisionState atnStartState, int decision) { this.atnStartState = atnStartState; this.decision = decision; boolean precedenceDfa = false; if (atnStartState instanceof StarLoopEntryState) { if (((StarLoopEntryState)atnStartState).isPrecedenceDecision) { precedenceDfa = true; DFAState precedenceState = new DFAState(new ATNConfigSet()); precedenceState.edges = new DFAState[0]; precedenceState.isAcceptState = false; precedenceState.requiresFullContext = false; this.s0 = precedenceState; } } this.precedenceDfa = precedenceDfa; }
DFAState proposed = new DFAState(configs); ATNConfig firstConfigWithRuleStopState = null; for (ATNConfig c : configs) {
DFAState proposed = new DFAState(configs); ATNConfig firstConfigWithRuleStopState = null; for (ATNConfig c : configs) {
DFAState proposed = new DFAState(configs); ATNConfig firstConfigWithRuleStopState = null; for (ATNConfig c : configs) {
this.states.clear(); if (precedenceDfa) { DFAState precedenceState = new DFAState(new ATNConfigSet()); precedenceState.edges = new DFAState[0]; precedenceState.isAcceptState = false;
@NotNull protected DFAState createDFAState(@NotNull DFA dfa, @NotNull ATNConfigSet configs) { return new DFAState(dfa, configs); }
/** Add a new DFA state if there isn't one with this set of configurations already. This method also detects the first configuration containing an ATN rule stop state. Later, when traversing the DFA, we will know which rule to accept. */ @NotNull protected DFAState addDFAState(@NotNull ATNConfigSet configs) { /* the lexer evaluates predicates on-the-fly; by this point configs * should not contain any configurations with unevaluated predicates. */ assert !configs.hasSemanticContext(); DFAState proposed = new DFAState(atn.modeToDFA[mode], configs); DFAState existing = atn.modeToDFA[mode].states.get(proposed); if ( existing!=null ) return existing; configs.optimizeConfigs(this); DFAState newState = new DFAState(atn.modeToDFA[mode], configs.clone(true)); ATNConfig firstConfigWithRuleStopState = null; for (ATNConfig c : configs) { if ( c.getState() instanceof RuleStopState ) { firstConfigWithRuleStopState = c; break; } } if ( firstConfigWithRuleStopState!=null ) { int prediction = atn.ruleToTokenType[firstConfigWithRuleStopState.getState().ruleIndex]; LexerActionExecutor lexerActionExecutor = firstConfigWithRuleStopState.getLexerActionExecutor(); newState.setAcceptState(new AcceptStateInfo(prediction, lexerActionExecutor)); } return atn.modeToDFA[mode].addState(newState); }
DFAState D = new DFAState(reach);
DFAState D = new DFAState(reach);
DFAState D = new DFAState(reach);