Class PdaUtil
- java.lang.Object
-
- org.eclipse.xtext.util.formallang.PdaUtil
-
public class PdaUtil extends java.lang.Object
-
-
Nested Class Summary
Nested Classes Modifier and Type Class 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>
-
Field Summary
Fields Modifier and Type Field Description protected NfaUtil
nfaUtil
long
UNREACHABLE
-
Constructor Summary
Constructors Constructor Description PdaUtil()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description <S,P>
booleancanReach(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>>
Sclone(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>>
java.util.Map<P,Pair<S,S>>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>>
Dcreate(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>>
voidcreate(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>>
Dcreate(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>
longdistanceTo(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>>
Dexpand(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,D extends Pda<S,P>>
Dfilter(Pda<S,P> pda, com.google.common.base.Predicate<S> filter, PdaFactory<D,S,P,? super S> fact)
<S,P,R,D extends Pda<S,P>>
DfilterEdges(Pda<S,P> pda, Traverser<? super Pda<S,P>,S,R> traverser, java.util.Map<S,java.lang.Integer> distances, PdaFactory<D,S,P,S> factory)
<S,P,R,D extends Pda<S,P>>
DfilterEdges(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>>
DfilterOrphans(Pda<S,P> pda, PdaFactory<D,S,P,S> factory)
<S,P>
Nfa<S>filterUnambiguousPaths(Pda<S,P> pda)
protected <S,P>
voidfilterUnambiguousPaths(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>>
java.util.Map<S,S>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)
-
-
-
Field Detail
-
nfaUtil
@Inject protected NfaUtil nfaUtil
-
UNREACHABLE
public final long UNREACHABLE
- See Also:
- Constant Field Values
-
-
Method Detail
-
canReach
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)
-
expand
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)
-
clone
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)
-
create
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)
-
create
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)
-
create
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)
-
createStack
protected <T> PdaUtil.StackItem<T> createStack(java.util.Iterator<T> stack)
-
distanceTo
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)
-
filterEdges
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)
-
filterEdges
public <S,P,R,D extends Pda<S,P>> D filterEdges(Pda<S,P> pda, Traverser<? super Pda<S,P>,S,R> traverser, java.util.Map<S,java.lang.Integer> distances, PdaFactory<D,S,P,S> factory)
-
filterUnambiguousPaths
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)
-
newItem
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)
-
shortestPathTo
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)
-
shortestPathTo
public <S,P> java.util.List<S> shortestPathTo(Pda<S,P> pda, java.util.Iterator<P> stack, com.google.common.base.Predicate<S> matches)
-
shortestPathTo
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)
-
shortestPathTo
public <S,P> java.util.List<S> shortestPathTo(Pda<S,P> pda, java.util.Iterator<P> stack, S match)
-
shortestPathTo
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)
-
shortestPathToFinalState
public <S,P> java.util.List<S> shortestPathToFinalState(Pda<S,P> pda, java.util.Iterator<P> stack)
-
shortestStackpruningPathTo
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)
-
shortestStackpruningPathTo
public <S,P> java.util.List<S> shortestStackpruningPathTo(Pda<S,P> pda, java.util.Iterator<P> stack, com.google.common.base.Predicate<S> matches)
-
shortestStackpruningPathTo
public <S,P> java.util.List<S> shortestStackpruningPathTo(Pda<S,P> pda, java.util.Iterator<P> stack, S matches)
-
shortestStackpruningPathTo
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)
-
collectReachable
public <S,P,R> java.util.List<R> collectReachable(Pda<S,P> pda, com.google.common.base.Function<S,R> function)
-
trace
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)
-
traceToWithPruningStack
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)
-
filterOrphans
public <S,P,D extends Pda<S,P>> D filterOrphans(Pda<S,P> pda, PdaFactory<D,S,P,S> factory)
-
collectPopsAndPushs
public <S,P,D extends Pda<S,P>> java.util.Map<P,Pair<S,S>> collectPopsAndPushs(Pda<S,P> pda)
-
filter
public <S,P,D extends Pda<S,P>> D filter(Pda<S,P> pda, com.google.common.base.Predicate<S> filter, PdaFactory<D,S,P,? super S> fact)
-
-