/** From list of lookahead sets (one per alt in decision), create * an LL(1) DFA. One edge per set. * * s0-{alt1}->:o=>1 * | \ * | -{alt2}->:o=>2 * | * ... */ @SuppressWarnings("OverridableMethodCallInConstructor") public LL1DFA(int decisionNumber, NFAState decisionStartState, LookaheadSet[] altLook) { DFAState s0 = newState(); startState = s0; nfa = decisionStartState.nfa; nAlts = nfa.grammar.getNumberOfAltsForDecisionNFA(decisionStartState); this.decisionNumber = decisionNumber; this.decisionNFAStartState = decisionStartState; initAltRelatedInfo(); unreachableAlts = null; for (int alt=1; alt<altLook.length; alt++) { DFAState acceptAltState = newState(); acceptAltState.acceptState = true; setAcceptState(alt, acceptAltState); acceptAltState.k = 1; acceptAltState.cachedUniquelyPredicatedAlt = alt; Label e = getLabelForSet(altLook[alt].tokenTypeSet); s0.addTransition(acceptAltState, e); } }
/** From list of lookahead sets (one per alt in decision), create * an LL(1) DFA. One edge per set. * * s0-{alt1}->:o=>1 * | \ * | -{alt2}->:o=>2 * | * ... */ public LL1DFA(int decisionNumber, NFAState decisionStartState, LookaheadSet[] altLook) { DFAState s0 = newState(); startState = s0; nfa = decisionStartState.nfa; nAlts = nfa.grammar.getNumberOfAltsForDecisionNFA(decisionStartState); this.decisionNumber = decisionNumber; this.decisionNFAStartState = decisionStartState; initAltRelatedInfo(); unreachableAlts = null; for (int alt=1; alt<altLook.length; alt++) { DFAState acceptAltState = newState(); acceptAltState.acceptState = true; setAcceptState(alt, acceptAltState); acceptAltState.k = 1; acceptAltState.cachedUniquelyPredicatedAlt = alt; Label e = getLabelForSet(altLook[alt].tokenTypeSet); s0.addTransition(acceptAltState, e); } }
/** From list of lookahead sets (one per alt in decision), create * an LL(1) DFA. One edge per set. * * s0-{alt1}->:o=>1 * | \ * | -{alt2}->:o=>2 * | * ... */ public LL1DFA(int decisionNumber, NFAState decisionStartState, LookaheadSet[] altLook) { DFAState s0 = newState(); startState = s0; nfa = decisionStartState.nfa; nAlts = nfa.grammar.getNumberOfAltsForDecisionNFA(decisionStartState); this.decisionNumber = decisionNumber; this.decisionNFAStartState = decisionStartState; initAltRelatedInfo(); unreachableAlts = null; for (int alt=1; alt<altLook.length; alt++) { DFAState acceptAltState = newState(); acceptAltState.acceptState = true; setAcceptState(alt, acceptAltState); acceptAltState.k = 1; acceptAltState.cachedUniquelyPredicatedAlt = alt; Label e = getLabelForSet(altLook[alt].tokenTypeSet); s0.addTransition(acceptAltState, e); } }
/** From list of lookahead sets (one per alt in decision), create * an LL(1) DFA. One edge per set. * * s0-{alt1}->:o=>1 * | \ * | -{alt2}->:o=>2 * | * ... */ @SuppressWarnings("OverridableMethodCallInConstructor") public LL1DFA(int decisionNumber, NFAState decisionStartState, LookaheadSet[] altLook) { DFAState s0 = newState(); startState = s0; nfa = decisionStartState.nfa; nAlts = nfa.grammar.getNumberOfAltsForDecisionNFA(decisionStartState); this.decisionNumber = decisionNumber; this.decisionNFAStartState = decisionStartState; initAltRelatedInfo(); unreachableAlts = null; for (int alt=1; alt<altLook.length; alt++) { DFAState acceptAltState = newState(); acceptAltState.acceptState = true; setAcceptState(alt, acceptAltState); acceptAltState.k = 1; acceptAltState.cachedUniquelyPredicatedAlt = alt; Label e = getLabelForSet(altLook[alt].tokenTypeSet); s0.addTransition(acceptAltState, e); } }
MultiMap<IntervalSet, Integer> edgeMap) DFAState s0 = newState(); startState = s0; nfa = decisionStartState.nfa; DFAState s = newState(); s.k = 1; Label e = getLabelForSet(edge); DFAState predDFATarget = getAcceptState(alt); if ( predDFATarget==null ) { predDFATarget = newState(); // create if not there. predDFATarget.acceptState = true; predDFATarget.cachedUniquelyPredicatedAlt = alt;
MultiMap<IntervalSet, Integer> edgeMap) DFAState s0 = newState(); startState = s0; nfa = decisionStartState.nfa; DFAState s = newState(); s.k = 1; Label e = getLabelForSet(edge); DFAState predDFATarget = getAcceptState(alt); if ( predDFATarget==null ) { predDFATarget = newState(); // create if not there. predDFATarget.acceptState = true; predDFATarget.cachedUniquelyPredicatedAlt = alt;
MultiMap<IntervalSet, Integer> edgeMap) DFAState s0 = newState(); startState = s0; nfa = decisionStartState.nfa; DFAState s = newState(); s.k = 1; Label e = getLabelForSet(edge); DFAState predDFATarget = getAcceptState(alt); if ( predDFATarget==null ) { predDFATarget = newState(); // create if not there. predDFATarget.acceptState = true; predDFATarget.cachedUniquelyPredicatedAlt = alt;
MultiMap<IntervalSet, Integer> edgeMap) DFAState s0 = newState(); startState = s0; nfa = decisionStartState.nfa; DFAState s = newState(); s.k = 1; Label e = getLabelForSet(edge); DFAState predDFATarget = getAcceptState(alt); if ( predDFATarget==null ) { predDFATarget = newState(); // create if not there. predDFATarget.acceptState = true; predDFATarget.cachedUniquelyPredicatedAlt = alt;