org.eclipse.xtext.grammaranalysis.impl
Class AbstractPDAProvider<CTX>

java.lang.Object
  extended by org.eclipse.xtext.grammaranalysis.impl.AbstractPDAProvider<CTX>
All Implemented Interfaces:
IPDAProvider<CTX>
Direct Known Subclasses:
SyntacticSequencerPDAProvider.SequencerPDAProvider

public abstract class AbstractPDAProvider<CTX>
extends java.lang.Object
implements IPDAProvider<CTX>

Author:
Moritz Eysholdt - Initial contribution and API

Nested Class Summary
protected static class AbstractPDAProvider.PDAContext<CTX>
           
protected static class AbstractPDAProvider.PDAState
           
protected static class AbstractPDAProvider.RuleCallStackElement
           
 
Constructor Summary
AbstractPDAProvider()
           
 
Method Summary
protected abstract  boolean canEnterRuleCall(INFAState<?,?> state)
           
protected abstract  boolean canPass(CTX context, INFAState<?,?> state, org.eclipse.emf.ecore.EClass constructedType)
           
protected  boolean canReachContextEnd(AbstractPDAProvider.PDAContext<CTX> context, AbstractPDAProvider.RuleCallStackElement stack, INFAState<?,?> fromNfa, org.eclipse.emf.ecore.EClass constructedType, boolean returning, boolean canReturn, java.util.Set<Pair<java.lang.Boolean,INFAState<?,?>>> visited)
           
protected  AbstractPDAProvider.PDAContext<CTX> createContext(CTX obj)
           
protected  AbstractPDAProvider.PDAState createState(AbstractPDAProvider.PDAContext<CTX> ctx, AbstractPDAProvider.RuleCallStackElement stack, INFAState<?,?> fromNfa, org.eclipse.emf.ecore.EClass constructedType, boolean returning, boolean canReturn, java.util.Set<Pair<java.lang.Boolean,INFAState<?,?>>> visited)
           
protected  AbstractPDAProvider.PDAState createState(IPDAState.PDAStateType type, AbstractElement element)
           
protected  org.eclipse.emf.ecore.EClass getConstructedType(AbstractElement ele)
           
protected abstract  java.util.List<INFAState<?,?>> getFollowers(CTX context, INFAState<?,?> state, boolean returning, boolean canReturn)
           
 IPDAState getPDA(CTX context)
           
protected abstract  java.util.List<INFAState<?,?>> getStartFollowers(CTX context)
           
protected  AbstractPDAProvider.PDAState getState(AbstractPDAProvider.PDAContext<CTX> ctx, INFAState<?,?> state, boolean returning)
           
protected abstract  boolean isFinalState(CTX context, INFAState<?,?> state, boolean returning, boolean canReturn)
           
protected  AbstractPDAProvider.RuleCallStackElement stackPush(AbstractPDAProvider.RuleCallStackElement stack, INFAState<?,?> value)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

AbstractPDAProvider

public AbstractPDAProvider()
Method Detail

canEnterRuleCall

protected abstract boolean canEnterRuleCall(INFAState<?,?> state)

canPass

protected abstract boolean canPass(CTX context,
                                   INFAState<?,?> state,
                                   org.eclipse.emf.ecore.EClass constructedType)
Since:
2.0

getConstructedType

protected org.eclipse.emf.ecore.EClass getConstructedType(AbstractElement ele)
Since:
2.0

canReachContextEnd

protected boolean canReachContextEnd(AbstractPDAProvider.PDAContext<CTX> context,
                                     AbstractPDAProvider.RuleCallStackElement stack,
                                     INFAState<?,?> fromNfa,
                                     org.eclipse.emf.ecore.EClass constructedType,
                                     boolean returning,
                                     boolean canReturn,
                                     java.util.Set<Pair<java.lang.Boolean,INFAState<?,?>>> visited)

createContext

protected AbstractPDAProvider.PDAContext<CTX> createContext(CTX obj)
Since:
2.0

createState

protected AbstractPDAProvider.PDAState createState(IPDAState.PDAStateType type,
                                                   AbstractElement element)

createState

protected AbstractPDAProvider.PDAState createState(AbstractPDAProvider.PDAContext<CTX> ctx,
                                                   AbstractPDAProvider.RuleCallStackElement stack,
                                                   INFAState<?,?> fromNfa,
                                                   org.eclipse.emf.ecore.EClass constructedType,
                                                   boolean returning,
                                                   boolean canReturn,
                                                   java.util.Set<Pair<java.lang.Boolean,INFAState<?,?>>> visited)
Since:
2.0

getPDA

public IPDAState getPDA(CTX context)
Specified by:
getPDA in interface IPDAProvider<CTX>
Since:
2.0

getStartFollowers

protected abstract java.util.List<INFAState<?,?>> getStartFollowers(CTX context)
Since:
2.0

getState

protected AbstractPDAProvider.PDAState getState(AbstractPDAProvider.PDAContext<CTX> ctx,
                                                INFAState<?,?> state,
                                                boolean returning)

isFinalState

protected abstract boolean isFinalState(CTX context,
                                        INFAState<?,?> state,
                                        boolean returning,
                                        boolean canReturn)

getFollowers

protected abstract java.util.List<INFAState<?,?>> getFollowers(CTX context,
                                                               INFAState<?,?> state,
                                                               boolean returning,
                                                               boolean canReturn)
Since:
2.0

stackPush

protected AbstractPDAProvider.RuleCallStackElement stackPush(AbstractPDAProvider.RuleCallStackElement stack,
                                                             INFAState<?,?> value)