/** 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; }
protected static Integer getTokenType(Label label) { if ( label.isSet() ) { // pick random element of set IntervalSet typeSet = (IntervalSet)label.getSet(); int randomIndex = random.nextInt(typeSet.size()); return typeSet.get(randomIndex); } else { return Utils.integer(label.getAtom()); } //System.out.println(t0.label.toString(g)); }
protected static Integer getTokenType(Label label) { if ( label.isSet() ) { // pick random element of set IntervalSet typeSet = (IntervalSet)label.getSet(); int randomIndex = random.nextInt(typeSet.size()); return typeSet.get(randomIndex); } else { return Utils.integer(label.getAtom()); } //System.out.println(t0.label.toString(g)); }
protected static Integer getTokenType(Label label) { if ( label.isSet() ) { // pick random element of set IntervalSet typeSet = (IntervalSet)label.getSet(); int randomIndex = random.nextInt(typeSet.size()); return typeSet.get(randomIndex); } else { return Utils.integer(label.getAtom()); } //System.out.println(t0.label.toString(g)); }
protected static Integer getTokenType(Label label) { if ( label.isSet() ) { // pick random element of set IntervalSet typeSet = (IntervalSet)label.getSet(); int randomIndex = random.nextInt(typeSet.size()); return typeSet.get(randomIndex); } else { return Utils.integer(label.getAtom()); } //System.out.println(t0.label.toString(g)); }
public boolean matches(Label other) { if ( other.isSet() ) { return matches(other.getSet()); } if ( other.isAtom() ) { return matches(other.getAtom()); } return false; }
public boolean matches(Label other) { if ( other.isSet() ) { return matches(other.getSet()); } if ( other.isAtom() ) { return matches(other.getAtom()); } return false; }
public boolean matches(Label other) { if ( other.isSet() ) { return matches(other.getSet()); } if ( other.isAtom() ) { return matches(other.getAtom()); } return false; }
public boolean matches(Label other) { if ( other.isSet() ) { return matches(other.getSet()); } if ( other.isAtom() ) { return matches(other.getAtom()); } return false; }
public boolean matches(IntSet set) { if ( isAtom() ) { return set.member(getAtom()); } if ( isSet() ) { // matches if intersection non-nil return !getSet().and(set).isNil(); } return false; }
/** Given a collapsed block of alts (a set of atoms), pull out * the set and return it. */ protected IntSet getCollapsedBlockAsSet(State blk) { State s0 = blk; if ( s0!=null && s0.transition(0)!=null ) { State s1 = s0.transition(0).target; if ( s1!=null && s1.transition(0)!=null ) { Label label = s1.transition(0).label; if ( label.isSet() ) { return label.getSet(); } } } return null; }
public boolean matches(IntSet set) { if ( isAtom() ) { return set.member(getAtom()); } if ( isSet() ) { // matches if intersection non-nil return !getSet().and(set).isNil(); } return false; }
/** Given a collapsed block of alts (a set of atoms), pull out * the set and return it. */ protected IntSet getCollapsedBlockAsSet(State blk) { State s0 = blk; if ( s0!=null && s0.transition(0)!=null ) { State s1 = s0.transition(0).target; if ( s1!=null && s1.transition(0)!=null ) { Label label = s1.transition(0).label; if ( label.isSet() ) { return label.getSet(); } } } return null; }
/** Given a collapsed block of alts (a set of atoms), pull out * the set and return it. */ protected IntSet getCollapsedBlockAsSet(State blk) { State s0 = blk; if ( s0!=null && s0.transition(0)!=null ) { State s1 = s0.transition(0).target; if ( s1!=null && s1.transition(0)!=null ) { Label label = s1.transition(0).label; if ( label.isSet() ) { return label.getSet(); } } } return null; }
/** Given a collapsed block of alts (a set of atoms), pull out * the set and return it. */ protected IntSet getCollapsedBlockAsSet(State blk) { State s0 = blk; if ( s0!=null && s0.transition(0)!=null ) { State s1 = s0.transition(0).target; if ( s1!=null && s1.transition(0)!=null ) { Label label = s1.transition(0).label; if ( label.isSet() ) { return label.getSet(); } } } return null; }
public boolean matches(IntSet set) { if ( isAtom() ) { return set.member(getAtom()); } if ( isSet() ) { // matches if intersection non-nil return !getSet().and(set).isNil(); } return false; }
public boolean matches(IntSet set) { if ( isAtom() ) { return set.member(getAtom()); } if ( isSet() ) { // matches if intersection non-nil return !getSet().and(set).isNil(); } return false; }
/** Generate an expression for traversing an edge. */ protected ST genLabelExpr(STGroup templates, Transition edge, int k) { Label label = edge.label; if ( label.isSemanticPredicate() ) { return genSemanticPredicateExpr(templates, edge); } if ( label.isSet() ) { return genSetExpr(templates, label.getSet(), k, true); } // must be simple label ST eST = templates.getInstanceOf("lookaheadTest"); eST.add("atom", getTokenTypeAsTargetLabel(label.getAtom())); eST.add("atomAsInt", Utils.integer(label.getAtom())); eST.add("k", Utils.integer(k)); return eST; }