org.eclipse.xtext.serializer.sequencer
Class AbstractSyntacticSequencer

java.lang.Object
  extended by org.eclipse.xtext.serializer.sequencer.AbstractSyntacticSequencer
All Implemented Interfaces:
ISemanticSequenceAcceptor, ISyntacticSequencer
Direct Known Subclasses:
AbstractXbaseSyntacticSequencer, AbstractXbaseWithAnnotationsSyntacticSequencer, AbstractXtend2SyntacticSequencer, AbstractXtypeSyntacticSequencer, GenericSyntacticSequencer

public abstract class AbstractSyntacticSequencer
extends java.lang.Object
implements ISyntacticSequencer, ISemanticSequenceAcceptor

Author:
Moritz Eysholdt - Initial contribution and API

Nested Class Summary
protected static class AbstractSyntacticSequencer.SyntacticalContext
           
 
Nested classes/interfaces inherited from interface org.eclipse.xtext.serializer.sequencer.ISyntacticSequencer
ISyntacticSequencer.ISyntacticSequencerOwner
 
Field Summary
protected  java.util.Stack<AbstractSyntacticSequencer.SyntacticalContext> contexts
           
protected  ISyntacticSequenceAcceptor delegate
           
protected  ISyntacticSequencerDiagnosticProvider diagnosticProvider
           
protected  ISerializationDiagnostic.Acceptor errorAcceptor
           
protected  ISyntacticSequencerPDAProvider pdaProvider
           
protected  TokenUtil tokenUtil
           
 
Fields inherited from interface org.eclipse.xtext.serializer.acceptor.ISemanticSequenceAcceptor
NO_INDEX
 
Constructor Summary
AbstractSyntacticSequencer()
           
 
Method Summary
protected  void accept(INode fromNode, java.util.List<ISyntacticSequencerPDAProvider.ISynState> path, RuleCallStack stack)
           
protected  void accept(ISyntacticSequencerPDAProvider.ISynState emitter, INode node, RuleCallStack stack)
           
 void acceptAssignedCrossRefDatatype(RuleCall datatypeRC, java.lang.String token, org.eclipse.emf.ecore.EObject value, int index, ICompositeNode node)
           
 void acceptAssignedCrossRefEnum(RuleCall enumRC, java.lang.String token, org.eclipse.emf.ecore.EObject value, int index, ICompositeNode node)
           
 void acceptAssignedCrossRefTerminal(RuleCall terminalRC, java.lang.String token, org.eclipse.emf.ecore.EObject value, int index, ILeafNode node)
           
 void acceptAssignedDatatype(RuleCall datatypeRC, java.lang.String token, java.lang.Object value, int index, ICompositeNode node)
           
 void acceptAssignedEnum(RuleCall enumRC, java.lang.String token, java.lang.Object value, int index, ICompositeNode node)
           
 void acceptAssignedKeyword(Keyword keyword, java.lang.String token, java.lang.Boolean value, int index, ILeafNode node)
           
 void acceptAssignedKeyword(Keyword keyword, java.lang.String token, java.lang.String value, int index, ILeafNode node)
           
 void acceptAssignedTerminal(RuleCall terminalRC, java.lang.String token, java.lang.Object value, int index, ILeafNode node)
           
protected  void acceptNode(INode node)
           
protected  void acceptNodes(ISyntacticSequencerPDAProvider.ISynNavigable fromState, INode fromNode, INode toNode)
           
protected  void acceptNodes(ISyntacticSequencerPDAProvider.ISynNavigable fromState, java.util.List<INode> nodes)
           
 void acceptUnassignedAction(Action action)
           
 void acceptUnassignedDatatype(RuleCall datatypeRC, java.lang.String value, ICompositeNode node)
           
 void acceptUnassignedEnum(RuleCall enumRC, java.lang.String value, ICompositeNode node)
           
 void acceptUnassignedKeyword(Keyword keyword, java.lang.String token, ILeafNode node)
           
 void acceptUnassignedTerminal(RuleCall terminalRC, java.lang.String value, ILeafNode node)
           
protected  void collectAbstractElements(GrammarAlias.AbstractElementAlias ele, java.util.Set<AbstractElement> elments)
           
protected  java.util.List<INode> collectNodes(INode fromNode, INode toNode)
           
protected abstract  void emitUnassignedTokens(org.eclipse.emf.ecore.EObject semanticObject, ISyntacticSequencerPDAProvider.ISynTransition transition, INode fromNode, INode toNode)
           
 boolean enterAssignedAction(Action action, org.eclipse.emf.ecore.EObject semanticChild, ICompositeNode node)
           
 boolean enterAssignedParserRuleCall(RuleCall rc, org.eclipse.emf.ecore.EObject semanticChild, ICompositeNode node)
           
protected  ISyntacticSequencerPDAProvider.ISynTransition findTransition(org.eclipse.emf.ecore.EObject context, org.eclipse.emf.ecore.EObject semanticObject, ISyntacticSequencerPDAProvider.ISynFollowerOwner fromState, INode fromNode, AbstractElement toEle, INode toNode, RuleCallStack stack)
           
 void finish()
           
protected  INode getLastLeaf(INode node)
           
protected  ISyntacticSequencerPDAProvider.ISynNavigable getLastNavigableState()
           
protected  java.util.List<INode> getNodesFor(java.util.List<INode> nodes, GrammarAlias.AbstractElementAlias ele)
           
protected  java.lang.String getTokenText(INode node)
           
protected  java.lang.String getUnassignedRuleCallToken(org.eclipse.emf.ecore.EObject semanticObject, RuleCall ruleCall, INode node)
           
protected  java.lang.String getUnassignedRuleCallToken(RuleCall ruleCall, INode node)
           
 void init(org.eclipse.emf.ecore.EObject context, org.eclipse.emf.ecore.EObject semanticObject, ISyntacticSequenceAcceptor sequenceAcceptor, ISerializationDiagnostic.Acceptor errorAcceptor)
           
 void leaveAssignedAction(Action action, org.eclipse.emf.ecore.EObject semanticChild)
           
 void leaveAssignedParserRuleCall(RuleCall rc, org.eclipse.emf.ecore.EObject semanticChild)
           
protected  void navigateToAbsorber(AbstractElement ele, INode node)
           
protected  ISyntacticSequencerPDAProvider.ISynAbsorberState navigateToAbsorber(ISyntacticSequencerPDAProvider.ISynFollowerOwner fromState, INode fromNode, INode toNode, RuleCallStack stack)
           
protected  void navigateToEmitter(AbstractElement ele, INode node)
           
protected  ISyntacticSequencerPDAProvider.ISynFollowerOwner navigateToEmitter(ISyntacticSequencerPDAProvider.ISynFollowerOwner fromState, INode fromNode, AbstractElement toEle, INode toNode, RuleCallStack stack)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

contexts

protected java.util.Stack<AbstractSyntacticSequencer.SyntacticalContext> contexts

delegate

protected ISyntacticSequenceAcceptor delegate

diagnosticProvider

@Inject
protected ISyntacticSequencerDiagnosticProvider diagnosticProvider

errorAcceptor

protected ISerializationDiagnostic.Acceptor errorAcceptor

pdaProvider

@Inject
protected ISyntacticSequencerPDAProvider pdaProvider

tokenUtil

@Inject
protected TokenUtil tokenUtil
Constructor Detail

AbstractSyntacticSequencer

public AbstractSyntacticSequencer()
Method Detail

accept

protected void accept(INode fromNode,
                      java.util.List<ISyntacticSequencerPDAProvider.ISynState> path,
                      RuleCallStack stack)

accept

protected void accept(ISyntacticSequencerPDAProvider.ISynState emitter,
                      INode node,
                      RuleCallStack stack)

acceptAssignedCrossRefDatatype

public void acceptAssignedCrossRefDatatype(RuleCall datatypeRC,
                                           java.lang.String token,
                                           org.eclipse.emf.ecore.EObject value,
                                           int index,
                                           ICompositeNode node)
Specified by:
acceptAssignedCrossRefDatatype in interface ISemanticSequenceAcceptor

acceptAssignedCrossRefEnum

public void acceptAssignedCrossRefEnum(RuleCall enumRC,
                                       java.lang.String token,
                                       org.eclipse.emf.ecore.EObject value,
                                       int index,
                                       ICompositeNode node)
Specified by:
acceptAssignedCrossRefEnum in interface ISemanticSequenceAcceptor

acceptAssignedCrossRefTerminal

public void acceptAssignedCrossRefTerminal(RuleCall terminalRC,
                                           java.lang.String token,
                                           org.eclipse.emf.ecore.EObject value,
                                           int index,
                                           ILeafNode node)
Specified by:
acceptAssignedCrossRefTerminal in interface ISemanticSequenceAcceptor

acceptAssignedDatatype

public void acceptAssignedDatatype(RuleCall datatypeRC,
                                   java.lang.String token,
                                   java.lang.Object value,
                                   int index,
                                   ICompositeNode node)
Specified by:
acceptAssignedDatatype in interface ISemanticSequenceAcceptor

acceptAssignedEnum

public void acceptAssignedEnum(RuleCall enumRC,
                               java.lang.String token,
                               java.lang.Object value,
                               int index,
                               ICompositeNode node)
Specified by:
acceptAssignedEnum in interface ISemanticSequenceAcceptor

acceptAssignedKeyword

public void acceptAssignedKeyword(Keyword keyword,
                                  java.lang.String token,
                                  java.lang.Boolean value,
                                  int index,
                                  ILeafNode node)
Specified by:
acceptAssignedKeyword in interface ISemanticSequenceAcceptor

acceptAssignedKeyword

public void acceptAssignedKeyword(Keyword keyword,
                                  java.lang.String token,
                                  java.lang.String value,
                                  int index,
                                  ILeafNode node)
Specified by:
acceptAssignedKeyword in interface ISemanticSequenceAcceptor

acceptAssignedTerminal

public void acceptAssignedTerminal(RuleCall terminalRC,
                                   java.lang.String token,
                                   java.lang.Object value,
                                   int index,
                                   ILeafNode node)
Specified by:
acceptAssignedTerminal in interface ISemanticSequenceAcceptor

acceptNode

protected void acceptNode(INode node)

acceptNodes

protected void acceptNodes(ISyntacticSequencerPDAProvider.ISynNavigable fromState,
                           INode fromNode,
                           INode toNode)

getLastNavigableState

protected ISyntacticSequencerPDAProvider.ISynNavigable getLastNavigableState()

acceptNodes

protected void acceptNodes(ISyntacticSequencerPDAProvider.ISynNavigable fromState,
                           java.util.List<INode> nodes)

acceptUnassignedAction

public void acceptUnassignedAction(Action action)

acceptUnassignedDatatype

public void acceptUnassignedDatatype(RuleCall datatypeRC,
                                     java.lang.String value,
                                     ICompositeNode node)

acceptUnassignedEnum

public void acceptUnassignedEnum(RuleCall enumRC,
                                 java.lang.String value,
                                 ICompositeNode node)

acceptUnassignedKeyword

public void acceptUnassignedKeyword(Keyword keyword,
                                    java.lang.String token,
                                    ILeafNode node)

acceptUnassignedTerminal

public void acceptUnassignedTerminal(RuleCall terminalRC,
                                     java.lang.String value,
                                     ILeafNode node)

collectAbstractElements

protected void collectAbstractElements(GrammarAlias.AbstractElementAlias ele,
                                       java.util.Set<AbstractElement> elments)

collectNodes

protected java.util.List<INode> collectNodes(INode fromNode,
                                             INode toNode)

emitUnassignedTokens

protected abstract void emitUnassignedTokens(org.eclipse.emf.ecore.EObject semanticObject,
                                             ISyntacticSequencerPDAProvider.ISynTransition transition,
                                             INode fromNode,
                                             INode toNode)

enterAssignedAction

public boolean enterAssignedAction(Action action,
                                   org.eclipse.emf.ecore.EObject semanticChild,
                                   ICompositeNode node)
Specified by:
enterAssignedAction in interface ISemanticSequenceAcceptor

enterAssignedParserRuleCall

public boolean enterAssignedParserRuleCall(RuleCall rc,
                                           org.eclipse.emf.ecore.EObject semanticChild,
                                           ICompositeNode node)
Specified by:
enterAssignedParserRuleCall in interface ISemanticSequenceAcceptor

findTransition

protected ISyntacticSequencerPDAProvider.ISynTransition findTransition(org.eclipse.emf.ecore.EObject context,
                                                                       org.eclipse.emf.ecore.EObject semanticObject,
                                                                       ISyntacticSequencerPDAProvider.ISynFollowerOwner fromState,
                                                                       INode fromNode,
                                                                       AbstractElement toEle,
                                                                       INode toNode,
                                                                       RuleCallStack stack)

finish

public void finish()
Specified by:
finish in interface ISemanticSequenceAcceptor

getLastLeaf

protected INode getLastLeaf(INode node)

getNodesFor

protected java.util.List<INode> getNodesFor(java.util.List<INode> nodes,
                                            GrammarAlias.AbstractElementAlias ele)

getTokenText

protected java.lang.String getTokenText(INode node)

getUnassignedRuleCallToken

protected java.lang.String getUnassignedRuleCallToken(RuleCall ruleCall,
                                                      INode node)

getUnassignedRuleCallToken

protected java.lang.String getUnassignedRuleCallToken(org.eclipse.emf.ecore.EObject semanticObject,
                                                      RuleCall ruleCall,
                                                      INode node)

init

public void init(org.eclipse.emf.ecore.EObject context,
                 org.eclipse.emf.ecore.EObject semanticObject,
                 ISyntacticSequenceAcceptor sequenceAcceptor,
                 ISerializationDiagnostic.Acceptor errorAcceptor)
Specified by:
init in interface ISyntacticSequencer

leaveAssignedAction

public void leaveAssignedAction(Action action,
                                org.eclipse.emf.ecore.EObject semanticChild)
Specified by:
leaveAssignedAction in interface ISemanticSequenceAcceptor

leaveAssignedParserRuleCall

public void leaveAssignedParserRuleCall(RuleCall rc,
                                        org.eclipse.emf.ecore.EObject semanticChild)
Specified by:
leaveAssignedParserRuleCall in interface ISemanticSequenceAcceptor

navigateToAbsorber

protected void navigateToAbsorber(AbstractElement ele,
                                  INode node)

navigateToAbsorber

protected ISyntacticSequencerPDAProvider.ISynAbsorberState navigateToAbsorber(ISyntacticSequencerPDAProvider.ISynFollowerOwner fromState,
                                                                              INode fromNode,
                                                                              INode toNode,
                                                                              RuleCallStack stack)

navigateToEmitter

protected void navigateToEmitter(AbstractElement ele,
                                 INode node)

navigateToEmitter

protected ISyntacticSequencerPDAProvider.ISynFollowerOwner navigateToEmitter(ISyntacticSequencerPDAProvider.ISynFollowerOwner fromState,
                                                                             INode fromNode,
                                                                             AbstractElement toEle,
                                                                             INode toNode,
                                                                             RuleCallStack stack)