/** Return a list of edge labels from start state to targetState. */ public List<IntSet> getEdgeLabels(DFAState targetState) { List<DFAState> dfaStates = getAnyDFAPathToTarget(targetState); List<IntSet> labels = new ArrayList<IntSet>(); for (int i = 0; i < dfaStates.size() - 1; i++) { DFAState d = dfaStates.get(i); DFAState nextState = dfaStates.get(i + 1); // walk looking for edge whose target is next dfa state for (int j = 0; j < d.getNumberOfTransitions(); j++) { Transition e = d.getTransition(j); if (e.target.stateNumber == nextState.stateNumber) { labels.add(e.label.getSet()); } } } return labels; }
/** Return a list of edge labels from start state to targetState. */ public List<IntSet> getEdgeLabels(DFAState targetState) { List<DFAState> dfaStates = getAnyDFAPathToTarget(targetState); List<IntSet> labels = new ArrayList<IntSet>(); for (int i = 0; i < dfaStates.size() - 1; i++) { DFAState d = dfaStates.get(i); DFAState nextState = dfaStates.get(i + 1); // walk looking for edge whose target is next dfa state for (int j = 0; j < d.getNumberOfTransitions(); j++) { Transition e = d.getTransition(j); if (e.target.stateNumber == nextState.stateNumber) { labels.add(e.label.getSet()); } } } return labels; }
/** Return a list of edge labels from start state to targetState. */ public List<IntSet> getEdgeLabels(DFAState targetState) { List<DFAState> dfaStates = getAnyDFAPathToTarget(targetState); List<IntSet> labels = new ArrayList<IntSet>(); for (int i = 0; i < dfaStates.size() - 1; i++) { DFAState d = dfaStates.get(i); DFAState nextState = dfaStates.get(i + 1); // walk looking for edge whose target is next dfa state for (int j = 0; j < d.getNumberOfTransitions(); j++) { Transition e = d.getTransition(j); if (e.target.stateNumber == nextState.stateNumber) { labels.add(e.label.getSet()); } } } return labels; }
public List<DFAState> getAnyDFAPathToTarget(DFAState startState, DFAState targetState, Set<DFAState> visited) { List<DFAState> dfaStates = new ArrayList<DFAState>(); visited.add(startState); if (startState.equals(targetState)) { dfaStates.add(targetState); return dfaStates; } // for (Edge e : startState.edges) { // walk edges looking for valid // path for (int i = 0; i < startState.getNumberOfTransitions(); i++) { Transition e = startState.getTransition(i); if (!visited.contains(e.target)) { List<DFAState> path = getAnyDFAPathToTarget( (DFAState) e.target, targetState, visited); if (path != null) { // found path, we're done dfaStates.add(startState); dfaStates.addAll(path); return dfaStates; } } } return null; }
public List<DFAState> getAnyDFAPathToTarget(DFAState startState, DFAState targetState, Set<DFAState> visited) { List<DFAState> dfaStates = new ArrayList<DFAState>(); visited.add(startState); if (startState.equals(targetState)) { dfaStates.add(targetState); return dfaStates; } // for (Edge e : startState.edges) { // walk edges looking for valid // path for (int i = 0; i < startState.getNumberOfTransitions(); i++) { Transition e = startState.getTransition(i); if (!visited.contains(e.target)) { List<DFAState> path = getAnyDFAPathToTarget( (DFAState) e.target, targetState, visited); if (path != null) { // found path, we're done dfaStates.add(startState); dfaStates.addAll(path); return dfaStates; } } } return null; }
public List<DFAState> getAnyDFAPathToTarget(DFAState startState, DFAState targetState, Set<DFAState> visited) { List<DFAState> dfaStates = new ArrayList<DFAState>(); visited.add(startState); if (startState.equals(targetState)) { dfaStates.add(targetState); return dfaStates; } // for (Edge e : startState.edges) { // walk edges looking for valid // path for (int i = 0; i < startState.getNumberOfTransitions(); i++) { Transition e = startState.getTransition(i); if (!visited.contains(e.target)) { List<DFAState> path = getAnyDFAPathToTarget( (DFAState) e.target, targetState, visited); if (path != null) { // found path, we're done dfaStates.add(startState); dfaStates.addAll(path); return dfaStates; } } } return null; }
Transition trans = d.getTransition(transitionIndex);
Transition trans = d.getTransition(transitionIndex);
Transition trans = d.getTransition(transitionIndex);
Transition trans = d.getTransition(transitionIndex);