org.eclipse.xtext.serializer.sequencer
Class GenericSemanticSequencer

java.lang.Object
  extended by org.eclipse.xtext.serializer.sequencer.AbstractSemanticSequencer
      extended by org.eclipse.xtext.serializer.sequencer.GenericSemanticSequencer
All Implemented Interfaces:
ISemanticSequencer

public class GenericSemanticSequencer
extends AbstractSemanticSequencer

Author:
Moritz Eysholdt - Initial contribution and API

Nested Class Summary
protected  class GenericSemanticSequencer.Allocation
           
protected  class GenericSemanticSequencer.AllocationValue
           
protected  class GenericSemanticSequencer.AlternativeAllocation
           
protected  class GenericSemanticSequencer.Feature2Assignment
           
protected  class GenericSemanticSequencer.GroupAllocation
           
protected  class GenericSemanticSequencer.MVFeature2AssignmentAmbiguous
           
protected  class GenericSemanticSequencer.MVFeature2AssignmentUnambiguous
           
protected static class GenericSemanticSequencer.Quantity
           
protected  class GenericSemanticSequencer.SVFeature2Assignment
           
protected  class GenericSemanticSequencer.SVFeature2AssignmentAmbiguous
           
protected  class GenericSemanticSequencer.SVFeature2AssignmentUnambiguous
           
 
Field Summary
protected  IAssignmentFinder assignmentFinder
           
protected  java.util.List<IGrammarConstraintProvider.IConstraintContext> constraintContexts
           
protected  java.util.Map<Pair<org.eclipse.emf.ecore.EObject,org.eclipse.emf.ecore.EClass>,IGrammarConstraintProvider.IConstraint> constraints
           
protected  ICrossReferenceSerializer crossRefSerializer
           
protected  IEnumLiteralSerializer enumLiteralSerializer
           
protected  IGrammarAccess grammarAccess
           
protected  IGrammarConstraintProvider grammarConstraintProvider
           
protected  IKeywordSerializer keywordSerializer
           
static int MAX
           
protected static int NO_ASSIGNMENT
           
protected  ITransientValueService transientValueService
           
static int UNDEF
           
protected static int UNDEFINED_QUANTITY
           
protected  IValueSerializer valueSerializer
           
 
Fields inherited from class org.eclipse.xtext.serializer.sequencer.AbstractSemanticSequencer
diagnosticProvider, errorAcceptor, feederProvider, masterSequencer, nodeProvider, sequenceAcceptor, transientValues
 
Constructor Summary
GenericSemanticSequencer()
           
 
Method Summary
protected  void acceptAction(Action action, org.eclipse.emf.ecore.EObject semanticChild, ICompositeNode node)
           
protected  void acceptEObjectRuleCall(RuleCall ruleCall, org.eclipse.emf.ecore.EObject semanticChild, ICompositeNode node)
           
protected  boolean acceptSemantic(org.eclipse.emf.ecore.EObject semanticObj, IGrammarConstraintProvider.IConstraintElement constr, java.lang.Object value, int index, INode node)
           
protected  boolean containsUnavailableFeature(GenericSemanticSequencer.Feature2Assignment[] values, IGrammarConstraintProvider.IConstraintElement element, IGrammarConstraintProvider.IConstraintElement excludeAssignment)
           
 void createSequence(org.eclipse.emf.ecore.EObject context, org.eclipse.emf.ecore.EObject semanticObject)
           
protected  java.util.List<? extends GenericSemanticSequencer.Allocation> createUnambiguousAllocation(IGrammarConstraintProvider.IConstraintElement constraint, GenericSemanticSequencer.Feature2Assignment[] values)
           
protected  GenericSemanticSequencer.Feature2Assignment[] createValues(org.eclipse.emf.ecore.EObject semanticObject, IGrammarConstraintProvider.IConstraint constraint, ISemanticNodeProvider.INodesForEObjectProvider nodes)
           
protected  void createValues(org.eclipse.emf.ecore.EObject semanticObj, IGrammarConstraintProvider.IFeatureInfo feature, boolean optional, GenericSemanticSequencer.AllocationValue value, GenericSemanticSequencer.Feature2Assignment[] target)
           
protected  void createValues(org.eclipse.emf.ecore.EObject semanticObj, IGrammarConstraintProvider.IFeatureInfo feature, java.util.List<GenericSemanticSequencer.AllocationValue> values, GenericSemanticSequencer.Feature2Assignment[] target)
           
protected  void distributeValuesByQuantity(java.util.List<IGrammarConstraintProvider.IConstraintElement> assignments, java.util.List<GenericSemanticSequencer.AllocationValue> values, GenericSemanticSequencer.Feature2Assignment[] target)
           
protected  java.lang.String f2aToStr(IGrammarConstraintProvider.IConstraintElement ele, GenericSemanticSequencer.Feature2Assignment[] values)
           
protected  void f2aToStr(IGrammarConstraintProvider.IConstraintElement ele, GenericSemanticSequencer.Feature2Assignment[] values, java.lang.String prefix, java.lang.StringBuilder result)
           
protected  java.util.List<IGrammarConstraintProvider.IConstraintElement> findValidAssignments(org.eclipse.emf.ecore.EObject semanticObj, IGrammarConstraintProvider.IConstraintElement[] assignments, GenericSemanticSequencer.AllocationValue value)
           
protected  java.util.List<IGrammarConstraintProvider.IConstraintElement> findValidAssignments(org.eclipse.emf.ecore.EObject semanticObj, java.util.List<IGrammarConstraintProvider.IConstraintElement> assignments, java.util.List<GenericSemanticSequencer.AllocationValue> values)
           
protected  IGrammarConstraintProvider.IConstraint getConstraint(org.eclipse.emf.ecore.EObject context, org.eclipse.emf.ecore.EClass type)
           
protected  java.util.List<GenericSemanticSequencer.AllocationValue> getNonTransientValuesForMVFeature(org.eclipse.emf.ecore.EObject semanticObject, IGrammarConstraintProvider.IFeatureInfo feature, ISemanticNodeProvider.INodesForEObjectProvider nodes)
           
protected  void initConstraints()
           
protected  boolean isAmbiguous(GenericSemanticSequencer.Feature2Assignment[] allocations)
           
protected  boolean isExcludedByDependees(IGrammarConstraintProvider.IConstraintElement assignments, GenericSemanticSequencer.Feature2Assignment[] target)
           
 
Methods inherited from class org.eclipse.xtext.serializer.sequencer.AbstractSemanticSequencer
createNodeProvider, createSequencerFeeder, createSequencerFeeder, init, init, setMasterSequencer
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

MAX

public static final int MAX
See Also:
Constant Field Values

NO_ASSIGNMENT

protected static final int NO_ASSIGNMENT
See Also:
Constant Field Values

UNDEF

public static final int UNDEF
See Also:
Constant Field Values

UNDEFINED_QUANTITY

protected static final int UNDEFINED_QUANTITY
See Also:
Constant Field Values

constraintContexts

protected java.util.List<IGrammarConstraintProvider.IConstraintContext> constraintContexts

constraints

protected java.util.Map<Pair<org.eclipse.emf.ecore.EObject,org.eclipse.emf.ecore.EClass>,IGrammarConstraintProvider.IConstraint> constraints

crossRefSerializer

@Inject
protected ICrossReferenceSerializer crossRefSerializer

enumLiteralSerializer

@Inject
protected IEnumLiteralSerializer enumLiteralSerializer

grammarAccess

@Inject
protected IGrammarAccess grammarAccess

grammarConstraintProvider

@Inject
protected IGrammarConstraintProvider grammarConstraintProvider

keywordSerializer

@Inject
protected IKeywordSerializer keywordSerializer

transientValueService

@Inject
protected ITransientValueService transientValueService

valueSerializer

@Inject
protected IValueSerializer valueSerializer

assignmentFinder

@Inject
protected IAssignmentFinder assignmentFinder
Constructor Detail

GenericSemanticSequencer

public GenericSemanticSequencer()
Method Detail

acceptAction

protected void acceptAction(Action action,
                            org.eclipse.emf.ecore.EObject semanticChild,
                            ICompositeNode node)

acceptEObjectRuleCall

protected void acceptEObjectRuleCall(RuleCall ruleCall,
                                     org.eclipse.emf.ecore.EObject semanticChild,
                                     ICompositeNode node)

acceptSemantic

protected boolean acceptSemantic(org.eclipse.emf.ecore.EObject semanticObj,
                                 IGrammarConstraintProvider.IConstraintElement constr,
                                 java.lang.Object value,
                                 int index,
                                 INode node)

containsUnavailableFeature

protected boolean containsUnavailableFeature(GenericSemanticSequencer.Feature2Assignment[] values,
                                             IGrammarConstraintProvider.IConstraintElement element,
                                             IGrammarConstraintProvider.IConstraintElement excludeAssignment)

createSequence

public void createSequence(org.eclipse.emf.ecore.EObject context,
                           org.eclipse.emf.ecore.EObject semanticObject)

createUnambiguousAllocation

protected java.util.List<? extends GenericSemanticSequencer.Allocation> createUnambiguousAllocation(IGrammarConstraintProvider.IConstraintElement constraint,
                                                                                                    GenericSemanticSequencer.Feature2Assignment[] values)

createValues

protected GenericSemanticSequencer.Feature2Assignment[] createValues(org.eclipse.emf.ecore.EObject semanticObject,
                                                                     IGrammarConstraintProvider.IConstraint constraint,
                                                                     ISemanticNodeProvider.INodesForEObjectProvider nodes)

createValues

protected void createValues(org.eclipse.emf.ecore.EObject semanticObj,
                            IGrammarConstraintProvider.IFeatureInfo feature,
                            boolean optional,
                            GenericSemanticSequencer.AllocationValue value,
                            GenericSemanticSequencer.Feature2Assignment[] target)

createValues

protected void createValues(org.eclipse.emf.ecore.EObject semanticObj,
                            IGrammarConstraintProvider.IFeatureInfo feature,
                            java.util.List<GenericSemanticSequencer.AllocationValue> values,
                            GenericSemanticSequencer.Feature2Assignment[] target)

distributeValuesByQuantity

protected void distributeValuesByQuantity(java.util.List<IGrammarConstraintProvider.IConstraintElement> assignments,
                                          java.util.List<GenericSemanticSequencer.AllocationValue> values,
                                          GenericSemanticSequencer.Feature2Assignment[] target)

f2aToStr

protected java.lang.String f2aToStr(IGrammarConstraintProvider.IConstraintElement ele,
                                    GenericSemanticSequencer.Feature2Assignment[] values)

f2aToStr

protected void f2aToStr(IGrammarConstraintProvider.IConstraintElement ele,
                        GenericSemanticSequencer.Feature2Assignment[] values,
                        java.lang.String prefix,
                        java.lang.StringBuilder result)

findValidAssignments

protected java.util.List<IGrammarConstraintProvider.IConstraintElement> findValidAssignments(org.eclipse.emf.ecore.EObject semanticObj,
                                                                                             IGrammarConstraintProvider.IConstraintElement[] assignments,
                                                                                             GenericSemanticSequencer.AllocationValue value)

findValidAssignments

protected java.util.List<IGrammarConstraintProvider.IConstraintElement> findValidAssignments(org.eclipse.emf.ecore.EObject semanticObj,
                                                                                             java.util.List<IGrammarConstraintProvider.IConstraintElement> assignments,
                                                                                             java.util.List<GenericSemanticSequencer.AllocationValue> values)

getConstraint

protected IGrammarConstraintProvider.IConstraint getConstraint(org.eclipse.emf.ecore.EObject context,
                                                               org.eclipse.emf.ecore.EClass type)

getNonTransientValuesForMVFeature

protected java.util.List<GenericSemanticSequencer.AllocationValue> getNonTransientValuesForMVFeature(org.eclipse.emf.ecore.EObject semanticObject,
                                                                                                     IGrammarConstraintProvider.IFeatureInfo feature,
                                                                                                     ISemanticNodeProvider.INodesForEObjectProvider nodes)

initConstraints

protected void initConstraints()

isAmbiguous

protected boolean isAmbiguous(GenericSemanticSequencer.Feature2Assignment[] allocations)

isExcludedByDependees

protected boolean isExcludedByDependees(IGrammarConstraintProvider.IConstraintElement assignments,
                                        GenericSemanticSequencer.Feature2Assignment[] target)