public <S> void removeOrphans(Nfa<S> nfa) { Map<S, Integer> distances = distanceToFinalStateMap(nfa); for (S s : collect(nfa)) { Iterator<S> i = nfa.getFollowers(s).iterator(); while (i.hasNext()) if (!distances.containsKey(i.next())) i.remove(); } }
public <S> void removeOrphans(Nfa<S> nfa) { Map<S, Integer> distances = distanceToFinalStateMap(nfa); for (S s : collect(nfa)) { Iterator<S> i = nfa.getFollowers(s).iterator(); while (i.hasNext()) if (!distances.containsKey(i.next())) i.remove(); } }
public <S, P, R, D extends Pda<S, P>> D filterEdges(Pda<S, P> pda, Traverser<? super Pda<S, P>, S, R> traverser, PdaFactory<D, S, P, S> factory) { Map<S, Integer> distances = new NfaUtil().distanceToFinalStateMap(pda); return filterEdges(pda, traverser, distances, factory); }
public <S, P> Nfa<S> filterUnambiguousPaths(Pda<S, P> pda) { Map<S, List<S>> followers = Maps.newLinkedHashMap(); Map<S, Integer> distanceMap = nfaUtil.distanceToFinalStateMap(pda); filterUnambiguousPaths(pda, pda.getStart(), distanceMap, followers); return new NfaUtil.NFAImpl<S>(pda.getStart(), pda.getStop(), followers); }
public <S, P> Nfa<S> filterUnambiguousPaths(Pda<S, P> pda) { Map<S, List<S>> followers = Maps.newHashMap(); Map<S, Integer> distanceMap = nfaUtil.distanceToFinalStateMap(pda); filterUnambiguousPaths(pda, pda.getStart(), distanceMap, followers); return new NfaUtil.NFAImpl<S>(pda.getStart(), pda.getStop(), followers); }
public Nfa<ISemState> getNFA(EObject context, EClass type) { Pair<EObject, EClass> key = Tuples.create(context, type); Nfa<ISemState> nfa = resultCache.get(key); if (nfa != null) return nfa; NfaUtil util = new NfaUtil(); SynAbsorberNfaAdapter synNfa = new SynAbsorberNfaAdapter(pdaProvider.getPDA(context, type)); // System.out.println(new NfaFormatter().format(synNfa)); Map<ISynAbsorberState, Integer> distanceMap = util.distanceToFinalStateMap(synNfa); nfa = util.create(util.sort(synNfa, distanceMap), new SemStateFactory()); // util.sortInplace(nfa, distanceMap); if (type != null) initContentValidationNeeded(type, nfa); initRemainingFeatures(nfa.getStop(), util.inverse(nfa), Sets.<ISemState> newHashSet()); initOrderIDs(nfa); // System.out.println(new NfaFormatter().format(nfa)); resultCache.put(key, nfa); return nfa; }
if (previous == null) return factory.create(pda.getStart(), pda.getStop()); Map<S, Integer> distances = new NfaUtil().distanceToFinalStateMap(pda); MappedComparator<S, Integer> distanceComp = new MappedComparator<S, Integer>(distances); trace.push(newItem(pda, distanceComp, distances, pda.getStart(), previous));