protected <S, R, P> TraversalItem<S, R> newItem(Pda<S, P> pda, MappedComparator<S, Integer> comp, Map<S, Integer> distances, S next, R item) { List<S> followers = Lists.newArrayList(); for (S f : pda.getFollowers(next)) if (distances.containsKey(f)) followers.add(f); Collections.sort(followers, comp); return new TraversalItem<S, R>(next, followers, item); }
protected <S, R, P> TraversalItem<S, R> newItem(Pda<S, P> pda, MappedComparator<S, Integer> comp, Map<S, Integer> distances, S next, R item) { List<S> followers = Lists.newArrayList(); for (S f : pda.getFollowers(next)) if (distances.containsKey(f)) followers.add(f); Collections.sort(followers, comp); return new TraversalItem<S, R>(next, followers, item); }
public String format(Pda<STATE, STACKITEM> pda, STATE state) { Iterable<STATE> followers2 = pda.getFollowers(state); if (!followers2.iterator().hasNext()) return null; List<String> followers = Lists.newArrayList(); for (STATE f : followers2) followers.add(title(pda, f)); if (sortFollowers) Collections.sort(followers); return title(pda, state) + " -> " + Joiner.on(", ").join(followers); }
public String format(Pda<STATE, STACKITEM> pda, STATE state) { Iterable<STATE> followers2 = pda.getFollowers(state); if (!followers2.iterator().hasNext()) return null; List<String> followers = Lists.newArrayList(); for (STATE f : followers2) followers.add(title(pda, f)); if (sortFollowers) Collections.sort(followers); return title(pda, state) + " -> " + Joiner.on(", ").join(followers); }
if (followers.containsKey(state)) return; List<S> f = Lists.newArrayList(pda.getFollowers(state)); if (f.size() <= 1) { followers.put(state, f);
if (followers.containsKey(state)) return; List<S> f = Lists.newArrayList(pda.getFollowers(state)); if (f.size() <= 1) { followers.put(state, f);
idstates.put(sub.getStart(), s_start); idstates.put(sub.getStop(), s_stop); followers.putAll(s_start, sub.getFollowers(sub.getStart())); followers.putAll(s_stop, pda.getFollowers(s_old)); for (S f_old : nfaUtil.collect(sub)) if (f_old != sub.getStart() && f_old != sub.getStop()) { if (f_new == null) { idstates.put(f_old, f_new = clone(f_old, sub, result, tokens, fact, identity)); followers.putAll(f_new, pda.getFollowers(f_old)); followers.putAll(s_new, pda.getFollowers(s_old));
idstates.put(sub.getStart(), s_start); idstates.put(sub.getStop(), s_stop); followers.putAll(s_start, sub.getFollowers(sub.getStart())); followers.putAll(s_stop, pda.getFollowers(s_old)); for (S f_old : nfaUtil.collect(sub)) if (f_old != sub.getStart() && f_old != sub.getStop()) { if (f_new == null) { idstates.put(f_old, f_new = clone(f_old, sub, result, tokens, fact, identity)); followers.putAll(f_new, pda.getFollowers(f_old)); followers.putAll(s_new, pda.getFollowers(s_old));
S o = todo.pop(); if (visited.add(o)) { for (S s : pda.getFollowers(o)) { S f = orig2copy.get(s); if (f != null) {
List<TraceItem<S, P>> newCurrent = Lists.newArrayList(); for (TraceItem<S, P> trace : current) for (S follower : pda.getFollowers(trace.state)) { if (matches.apply(follower)) return new TraceItem<S, P>(trace, follower, trace.stackitem);
List<TraceItem<S, P>> newCurrent = Lists.newArrayList(); for (TraceItem<S, P> trace : current) for (S follower : pda.getFollowers(trace.state)) { if (matches.apply(follower)) return new TraceItem<S, P>(trace, follower, trace.stackitem);
protected void draw(Digraph result, Pda<STATE, STACKITEM> pda) { for (STATE s : new NfaUtil().collect(pda)) { result.add(create(result, pda, s)); for (STATE f : pda.getFollowers(s)) result.add(create(result, pda, s, f)); } }
protected void draw(Digraph result, Pda<STATE, STACKITEM> pda) { for (STATE s : new NfaUtil().collect(pda)) { result.add(create(result, pda, s)); for (STATE f : pda.getFollowers(s)) result.add(create(result, pda, s, f)); } }
List<TraceItem<S, P>> newCurrent = Lists.newArrayList(); for (TraceItem<S, P> trace : current) for (S follower : pda.getFollowers(trace.state)) { if (matches.apply(follower)) { TraceItem<S, P> found = new TraceItem<S, P>(trace, follower, trace.stackitem);
List<TraceItem<S, P>> newCurrent = Lists.newArrayList(); for (TraceItem<S, P> trace : current) for (S follower : pda.getFollowers(trace.state)) { if (matches.apply(follower)) { TraceItem<S, P> found = new TraceItem<S, P>(trace, follower, trace.stackitem);