public class PdaUtil
extends java.lang.Object
Modifier and Type | Class and Description |
---|---|
static class |
PdaUtil.CyclicStackItem<T> |
static class |
PdaUtil.CyclicStackTraverser<S,P> |
static class |
PdaUtil.HashStack<T> |
protected static class |
PdaUtil.Identity<T> |
protected static class |
PdaUtil.IsPop<S,P> |
protected class |
PdaUtil.StackItem<T> |
protected class |
PdaUtil.TraceItem<S,P> |
protected static class |
PdaUtil.TraversalItem<S,R> |
Modifier and Type | Field and Description |
---|---|
protected NfaUtil |
nfaUtil |
long |
UNREACHABLE |
Constructor and Description |
---|
PdaUtil() |
Modifier and Type | Method and Description |
---|---|
<S,P> boolean |
canReach(Pda<S,P> pda,
S state,
java.util.Iterator<P> stack,
com.google.common.base.Predicate<S> matches,
com.google.common.base.Predicate<S> canPass) |
protected <S,P,T,D extends Pda<S,P>> |
clone(S state,
Pda<S,P> src,
D target,
com.google.common.base.Function<S,T> tokens,
PdaFactory<D,S,P,T> fact,
PdaUtil.Identity<S> identity) |
<S,P,D extends Pda<S,P>> |
collectPopsAndPushs(Pda<S,P> pda) |
<S,P,R> java.util.List<R> |
collectReachable(Pda<S,P> pda,
com.google.common.base.Function<S,R> function) |
<S,P,E,T,D extends Pda<S,P>> |
create(Cfg<E,T> cfg,
FollowerFunction<E> ff,
PdaFactory<D,S,P,? super E> fact) |
protected <S,P,E,T1,T2,D extends Pda<S,P>> |
create(Cfg<E,T1> cfg,
D pda,
S state,
E ele,
java.lang.Iterable<E> followerElements,
FollowerFunction<E> ff,
com.google.common.base.Function<E,T2> tokens,
PdaFactory<D,S,P,? super T2> fact,
java.util.Map<E,S> states,
java.util.Map<E,S> stops,
com.google.common.collect.Multimap<E,E> callers) |
<S,P,E,T1,T2,D extends Pda<S,P>> |
create(Cfg<E,T1> cfg,
FollowerFunction<E> ff,
com.google.common.base.Function<E,T2> element2token,
PdaFactory<D,S,P,? super T2> fact) |
protected <T> PdaUtil.StackItem<T> |
createStack(java.util.Iterator<T> stack) |
<S,P> long |
distanceTo(Pda<S,P> pda,
java.lang.Iterable<S> starts,
java.util.Iterator<P> stack,
com.google.common.base.Predicate<S> matches,
com.google.common.base.Predicate<S> canPass) |
<S,P,T,D extends Pda<S,P>> |
expand(Pda<S,P> pda,
com.google.common.base.Function<S,Pda<S,P>> expand,
com.google.common.base.Function<S,T> tokens,
PdaFactory<D,S,P,T> fact) |
<S,P,R,D extends Pda<S,P>> |
filterEdges(Pda<S,P> pda,
Traverser<? super Pda<S,P>,S,R> traverser,
PdaFactory<D,S,P,S> factory) |
<S,P,D extends Pda<S,P>> |
filterOrphans(Pda<S,P> pda,
PdaFactory<D,S,P,S> factory) |
<S,P> Nfa<S> |
filterUnambiguousPaths(Pda<S,P> pda) |
protected <S,P> void |
filterUnambiguousPaths(Pda<S,P> pda,
S state,
java.util.Map<S,java.lang.Integer> dist,
java.util.Map<S,java.util.List<S>> followers) |
<S,P,D extends Pda<S,P>> |
mapPopAndPush(Pda<S,P> pda) |
protected <S,R,P> PdaUtil.TraversalItem<S,R> |
newItem(Pda<S,P> pda,
NfaUtil.MappedComparator<S,java.lang.Integer> comp,
java.util.Map<S,java.lang.Integer> distances,
S next,
R item) |
<S,P> java.util.List<S> |
shortestPathTo(Pda<S,P> pda,
java.lang.Iterable<S> starts,
java.util.Iterator<P> stack,
com.google.common.base.Predicate<S> matches,
com.google.common.base.Predicate<S> canPass) |
<S,P> java.util.List<S> |
shortestPathTo(Pda<S,P> pda,
java.util.Iterator<P> stack,
com.google.common.base.Predicate<S> matches) |
<S,P> java.util.List<S> |
shortestPathTo(Pda<S,P> pda,
java.util.Iterator<P> stack,
com.google.common.base.Predicate<S> matches,
com.google.common.base.Predicate<S> canPass) |
<S,P> java.util.List<S> |
shortestPathTo(Pda<S,P> pda,
java.util.Iterator<P> stack,
S match) |
<S,P> java.util.List<S> |
shortestPathTo(Pda<S,P> pda,
S start,
java.util.Iterator<P> stack,
com.google.common.base.Predicate<S> matches,
com.google.common.base.Predicate<S> canPass) |
<S,P> java.util.List<S> |
shortestPathToFinalState(Pda<S,P> pda,
java.util.Iterator<P> stack) |
<S,P> java.util.List<S> |
shortestStackpruningPathTo(Pda<S,P> pda,
java.lang.Iterable<S> starts,
java.util.Iterator<P> stack,
com.google.common.base.Predicate<S> matches,
com.google.common.base.Predicate<S> canPass) |
<S,P> java.util.List<S> |
shortestStackpruningPathTo(Pda<S,P> pda,
java.util.Iterator<P> stack,
com.google.common.base.Predicate<S> matches) |
<S,P> java.util.List<S> |
shortestStackpruningPathTo(Pda<S,P> pda,
java.util.Iterator<P> stack,
S matches) |
<S,P> java.util.List<S> |
shortestStackpruningPathTo(Pda<S,P> pda,
S start,
java.util.Iterator<P> stack,
com.google.common.base.Predicate<S> matches,
com.google.common.base.Predicate<S> canPass) |
protected <S,P> PdaUtil.TraceItem<S,P> |
trace(Pda<S,P> pda,
java.lang.Iterable<S> starts,
java.util.Iterator<P> stack,
com.google.common.base.Predicate<S> matches,
com.google.common.base.Predicate<S> canPass) |
protected <S,P> PdaUtil.TraceItem<S,P> |
traceToWithPruningStack(Pda<S,P> pda,
java.lang.Iterable<S> starts,
java.util.Iterator<P> stack,
com.google.common.base.Predicate<S> matches,
com.google.common.base.Predicate<S> canPass) |
@Inject protected NfaUtil nfaUtil
public final long UNREACHABLE
public <S,P> boolean canReach(Pda<S,P> pda, S state, java.util.Iterator<P> stack, com.google.common.base.Predicate<S> matches, com.google.common.base.Predicate<S> canPass)
public <S,P,T,D extends Pda<S,P>> D expand(Pda<S,P> pda, com.google.common.base.Function<S,Pda<S,P>> expand, com.google.common.base.Function<S,T> tokens, PdaFactory<D,S,P,T> fact)
protected <S,P,T,D extends Pda<S,P>> S clone(S state, Pda<S,P> src, D target, com.google.common.base.Function<S,T> tokens, PdaFactory<D,S,P,T> fact, PdaUtil.Identity<S> identity)
public <S,P,E,T,D extends Pda<S,P>> D create(Cfg<E,T> cfg, FollowerFunction<E> ff, PdaFactory<D,S,P,? super E> fact)
protected <S,P,E,T1,T2,D extends Pda<S,P>> void create(Cfg<E,T1> cfg, D pda, S state, E ele, java.lang.Iterable<E> followerElements, FollowerFunction<E> ff, com.google.common.base.Function<E,T2> tokens, PdaFactory<D,S,P,? super T2> fact, java.util.Map<E,S> states, java.util.Map<E,S> stops, com.google.common.collect.Multimap<E,E> callers)
public <S,P,E,T1,T2,D extends Pda<S,P>> D create(Cfg<E,T1> cfg, FollowerFunction<E> ff, com.google.common.base.Function<E,T2> element2token, PdaFactory<D,S,P,? super T2> fact)
protected <T> PdaUtil.StackItem<T> createStack(java.util.Iterator<T> stack)
public <S,P> long distanceTo(Pda<S,P> pda, java.lang.Iterable<S> starts, java.util.Iterator<P> stack, com.google.common.base.Predicate<S> matches, com.google.common.base.Predicate<S> canPass)
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)
protected <S,P> void filterUnambiguousPaths(Pda<S,P> pda, S state, java.util.Map<S,java.lang.Integer> dist, java.util.Map<S,java.util.List<S>> followers)
protected <S,R,P> PdaUtil.TraversalItem<S,R> newItem(Pda<S,P> pda, NfaUtil.MappedComparator<S,java.lang.Integer> comp, java.util.Map<S,java.lang.Integer> distances, S next, R item)
public <S,P> java.util.List<S> shortestPathTo(Pda<S,P> pda, java.lang.Iterable<S> starts, java.util.Iterator<P> stack, com.google.common.base.Predicate<S> matches, com.google.common.base.Predicate<S> canPass)
public <S,P> java.util.List<S> shortestPathTo(Pda<S,P> pda, java.util.Iterator<P> stack, com.google.common.base.Predicate<S> matches)
public <S,P> java.util.List<S> shortestPathTo(Pda<S,P> pda, java.util.Iterator<P> stack, com.google.common.base.Predicate<S> matches, com.google.common.base.Predicate<S> canPass)
public <S,P> java.util.List<S> shortestPathTo(Pda<S,P> pda, java.util.Iterator<P> stack, S match)
public <S,P> java.util.List<S> shortestPathTo(Pda<S,P> pda, S start, java.util.Iterator<P> stack, com.google.common.base.Predicate<S> matches, com.google.common.base.Predicate<S> canPass)
public <S,P> java.util.List<S> shortestPathToFinalState(Pda<S,P> pda, java.util.Iterator<P> stack)
public <S,P> java.util.List<S> shortestStackpruningPathTo(Pda<S,P> pda, java.lang.Iterable<S> starts, java.util.Iterator<P> stack, com.google.common.base.Predicate<S> matches, com.google.common.base.Predicate<S> canPass)
public <S,P> java.util.List<S> shortestStackpruningPathTo(Pda<S,P> pda, java.util.Iterator<P> stack, com.google.common.base.Predicate<S> matches)
public <S,P> java.util.List<S> shortestStackpruningPathTo(Pda<S,P> pda, java.util.Iterator<P> stack, S matches)
public <S,P> java.util.List<S> shortestStackpruningPathTo(Pda<S,P> pda, S start, java.util.Iterator<P> stack, com.google.common.base.Predicate<S> matches, com.google.common.base.Predicate<S> canPass)
public <S,P,R> java.util.List<R> collectReachable(Pda<S,P> pda, com.google.common.base.Function<S,R> function)
protected <S,P> PdaUtil.TraceItem<S,P> trace(Pda<S,P> pda, java.lang.Iterable<S> starts, java.util.Iterator<P> stack, com.google.common.base.Predicate<S> matches, com.google.common.base.Predicate<S> canPass)
protected <S,P> PdaUtil.TraceItem<S,P> traceToWithPruningStack(Pda<S,P> pda, java.lang.Iterable<S> starts, java.util.Iterator<P> stack, com.google.common.base.Predicate<S> matches, com.google.common.base.Predicate<S> canPass)
public <S,P,D extends Pda<S,P>> D filterOrphans(Pda<S,P> pda, PdaFactory<D,S,P,S> factory)
public <S,P,D extends Pda<S,P>> java.util.Map<P,Pair<S,S>> collectPopsAndPushs(Pda<S,P> pda)