public <S, P> List<S> shortestPathTo(Pda<S, P> pda, Iterator<P> stack, Predicate<S> matches, Predicate<S> canPass) { return shortestPathTo(pda, pda.getStart(), stack, matches, canPass); }
public <S, P> List<S> shortestPathTo(Pda<S, P> pda, Iterator<P> stack, S match) { return shortestPathTo(pda, pda.getStart(), stack, Predicates.equalTo(match), Predicates.<S> alwaysTrue()); }
public <S, P> List<S> shortestPathTo(Pda<S, P> pda, Iterator<P> stack, Predicate<S> matches, Predicate<S> canPass) { return shortestPathTo(pda, pda.getStart(), stack, matches, canPass); }
public <S, P> List<S> shortestPathTo(Pda<S, P> pda, Iterator<P> stack, S match) { return shortestPathTo(pda, pda.getStart(), stack, Predicates.equalTo(match), Predicates.<S> alwaysTrue()); }
public <S, P> List<S> shortestPathTo(Pda<S, P> pda, Iterator<P> stack, Predicate<S> matches) { return shortestPathTo(pda, pda.getStart(), stack, matches, Predicates.<S> alwaysTrue()); }
public <S, P> List<S> shortestPathTo(Pda<S, P> pda, Iterator<P> stack, Predicate<S> matches) { return shortestPathTo(pda, pda.getStart(), stack, matches, Predicates.<S> alwaysTrue()); }
protected List<ISynState> shortestPathTo(Iterator<RuleCall> stack, Predicate<ISynState> matches, boolean includeMatch) { List<ISynState> pathTo = new PdaUtil().shortestPathTo(getPathToTarget(), stack, matches); if (pathTo != null) return pathTo.subList(1, pathTo.size() - (includeMatch ? 0 : 1)); return null; }
public <S, P> List<S> shortestPathToFinalState(Pda<S, P> pda, Iterator<P> stack) { return shortestPathTo(pda, pda.getStart(), stack, Predicates.equalTo(pda.getStop()), Predicates.<S> alwaysTrue()); }
public <S, P> List<S> shortestPathToFinalState(Pda<S, P> pda, Iterator<P> stack) { return shortestPathTo(pda, pda.getStart(), stack, Predicates.equalTo(pda.getStop()), Predicates.<S> alwaysTrue()); }