/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* This file is part of SableCC. *
* See the file "LICENSE" for copyright information and the *
* terms and conditions for copying, distribution and *
* modification of SableCC. *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
package org.sablecc.sablecc;
import org.sablecc.sablecc.analysis.*;
import org.sablecc.sablecc.node.*;
public class AcceptStates extends DepthFirstAdapter {
public DFA dfa;
public String stateName;
private ResolveIds ids;
public AcceptStates(DFA dfa, ResolveIds ids, String stateName) {
this.dfa = dfa;
this.ids = ids;
this.stateName = stateName;
}
@Override
public void caseStart(Start node) {
for (int i = 0; i < dfa.states.size(); i++) {
DFA.State state = (DFA.State) dfa.states.elementAt(i);
state.accept = -1;
int accept = -1;
for (int k = 0; k < state.nfaStates.size(); k++) {
if (state.nfaStates.get(k)) {
if (dfa.nfa.states[k].accept != null) {
if (accept == -1) {
accept = ids.tokenList.indexOf(dfa.nfa.states[k].accept);
} else {
accept = Math.min(
ids.tokenList.indexOf(dfa.nfa.states[k].accept),
accept);
}
}
}
}
state.accept = accept;
}
}
}