private String getStateString(int n, State s) { String stateStr = ".s"+n; if ( s.isAcceptState() ) { if ( s instanceof DFAState ) { stateStr = ":s"+n+"=>"+((DFAState)s).getUniquelyPredictedAlt(); } else { stateStr = ":s"+n; } } return stateStr; }
private String getStateString(int n, State s) { String stateStr = ".s"+n; if ( s.isAcceptState() ) { if ( s instanceof DFAState ) { stateStr = ":s"+n+"=>"+((DFAState)s).getUniquelyPredictedAlt(); } else { stateStr = ":s"+n; } } return stateStr; }
private String getStateString(int n, State s) { String stateStr = ".s"+n; if ( s.isAcceptState() ) { if ( s instanceof DFAState ) { stateStr = ":s"+n+"=>"+((DFAState)s).getUniquelyPredictedAlt(); } else { stateStr = ":s"+n; } } return stateStr; }
private String getStateString(int n, State s) { String stateStr = ".s"+n; if ( s.isAcceptState() ) { if ( s instanceof DFAState ) { stateStr = ":s"+n+"=>"+((DFAState)s).getUniquelyPredictedAlt(); } else { stateStr = ":s"+n; } } return stateStr; }
int alt = d.getUniquelyPredictedAlt(); if ( alt!=NFA.INVALID_ALT_NUMBER ) { // uniquely predicts an alt? d = convertToAcceptState(d, alt);
int alt = d.getUniquelyPredictedAlt(); if ( alt!=NFA.INVALID_ALT_NUMBER ) { // uniquely predicts an alt? d = convertToAcceptState(d, alt);
int alt = d.getUniquelyPredictedAlt(); if ( alt!=NFA.INVALID_ALT_NUMBER ) { // uniquely predicts an alt? d = convertToAcceptState(d, alt);
int alt = d.getUniquelyPredictedAlt(); if ( alt!=NFA.INVALID_ALT_NUMBER ) { // uniquely predicts an alt? d = convertToAcceptState(d, alt);
protected void optimizeExitBranches(DFAState d) { Integer sI = Utils.integer(d.stateNumber); if ( visited.contains(sI) ) { return; // already visited } visited.add(sI); int nAlts = d.dfa.getNumberOfAlts(); for (int i = 0; i < d.getNumberOfTransitions(); i++) { Transition edge = d.transition(i); DFAState edgeTarget = ((DFAState)edge.target); /* System.out.println(d.stateNumber+"-"+ edge.label.toString(d.dfa.nfa.grammar)+"->"+ edgeTarget.stateNumber); */ // if target is an accept state and that alt is the exit alt if ( edgeTarget.isAcceptState() && edgeTarget.getUniquelyPredictedAlt()==nAlts) { /* System.out.println("ignoring transition "+i+" to max alt "+ d.dfa.getNumberOfAlts()); */ d.removeTransition(i); i--; // back up one so that i++ of loop iteration stays within bounds } optimizeExitBranches(edgeTarget); } }
protected void optimizeExitBranches(DFAState d) { Integer sI = Utils.integer(d.stateNumber); if ( visited.contains(sI) ) { return; // already visited } visited.add(sI); int nAlts = d.dfa.getNumberOfAlts(); for (int i = 0; i < d.getNumberOfTransitions(); i++) { Transition edge = d.transition(i); DFAState edgeTarget = ((DFAState)edge.target); /* System.out.println(d.stateNumber+"-"+ edge.label.toString(d.dfa.nfa.grammar)+"->"+ edgeTarget.stateNumber); */ // if target is an accept state and that alt is the exit alt if ( edgeTarget.isAcceptState() && edgeTarget.getUniquelyPredictedAlt()==nAlts) { /* System.out.println("ignoring transition "+i+" to max alt "+ d.dfa.getNumberOfAlts()); */ d.removeTransition(i); i--; // back up one so that i++ of loop iteration stays within bounds } optimizeExitBranches(edgeTarget); } }
protected void optimizeExitBranches(DFAState d) { Integer sI = Utils.integer(d.stateNumber); if ( visited.contains(sI) ) { return; // already visited } visited.add(sI); int nAlts = d.dfa.getNumberOfAlts(); for (int i = 0; i < d.getNumberOfTransitions(); i++) { Transition edge = (Transition) d.transition(i); DFAState edgeTarget = ((DFAState)edge.target); /* System.out.println(d.stateNumber+"-"+ edge.label.toString(d.dfa.nfa.grammar)+"->"+ edgeTarget.stateNumber); */ // if target is an accept state and that alt is the exit alt if ( edgeTarget.isAcceptState() && edgeTarget.getUniquelyPredictedAlt()==nAlts) { /* System.out.println("ignoring transition "+i+" to max alt "+ d.dfa.getNumberOfAlts()); */ d.removeTransition(i); i--; // back up one so that i++ of loop iteration stays within bounds } optimizeExitBranches(edgeTarget); } }
protected void optimizeExitBranches(DFAState d) { Integer sI = Utils.integer(d.stateNumber); if ( visited.contains(sI) ) { return; // already visited } visited.add(sI); int nAlts = d.dfa.getNumberOfAlts(); for (int i = 0; i < d.getNumberOfTransitions(); i++) { Transition edge = (Transition) d.transition(i); DFAState edgeTarget = ((DFAState)edge.target); /* System.out.println(d.stateNumber+"-"+ edge.label.toString(d.dfa.nfa.grammar)+"->"+ edgeTarget.stateNumber); */ // if target is an accept state and that alt is the exit alt if ( edgeTarget.isAcceptState() && edgeTarget.getUniquelyPredictedAlt()==nAlts) { /* System.out.println("ignoring transition "+i+" to max alt "+ d.dfa.getNumberOfAlts()); */ d.removeTransition(i); i--; // back up one so that i++ of loop iteration stays within bounds } optimizeExitBranches(edgeTarget); } }
edgeTarget.getUniquelyPredictedAlt();
edgeTarget.getUniquelyPredictedAlt();
edgeTarget.getUniquelyPredictedAlt();
int EOTPredicts = ((DFAState)edge.target).getUniquelyPredictedAlt(); if ( EOTPredicts==NFA.INVALID_ALT_NUMBER ) {
int EOTPredicts = ((DFAState)edge.target).getUniquelyPredictedAlt(); if ( EOTPredicts==NFA.INVALID_ALT_NUMBER ) {
int EOTPredicts = ((DFAState)edge.target).getUniquelyPredictedAlt(); if ( EOTPredicts==NFA.INVALID_ALT_NUMBER ) {
int EOTPredicts = ((DFAState)edge.target).getUniquelyPredictedAlt(); if ( EOTPredicts==NFA.INVALID_ALT_NUMBER ) {