org.eclipse.ocl.examples.xtext.essentialocl.cs2pivot
Class EssentialOCLLeft2RightVisitor

java.lang.Object
  extended by org.eclipse.ocl.examples.xtext.base.util.AbstractBaseCSVisitor<R,C>
      extended by org.eclipse.ocl.examples.xtext.base.util.AbstractExtendingBaseCSVisitor<Element,CS2PivotConversion>
          extended by org.eclipse.ocl.examples.xtext.base.cs2pivot.BaseLeft2RightVisitor
              extended by org.eclipse.ocl.examples.xtext.essentialocl.cs2pivot.AbstractEssentialOCLLeft2RightVisitor
                  extended by org.eclipse.ocl.examples.xtext.essentialocl.cs2pivot.EssentialOCLLeft2RightVisitor
All Implemented Interfaces:
BaseCSVisitor<Element>, EssentialOCLCSVisitor<Element>
Direct Known Subclasses:
AbstractCompleteOCLLeft2RightVisitor, AbstractOCLinEcoreLeft2RightVisitor, AbstractOCLstdlibLeft2RightVisitor

public class EssentialOCLLeft2RightVisitor
extends AbstractEssentialOCLLeft2RightVisitor


Field Summary
protected  MetaModelManager metaModelManager
           
 
Fields inherited from class org.eclipse.ocl.examples.xtext.base.util.AbstractBaseCSVisitor
context
 
Constructor Summary
EssentialOCLLeft2RightVisitor(CS2PivotConversion context)
           
 
Method Summary
protected  OCLExpression checkImplementation(NamedExpCS csNavigatingExp, Feature feature, CallExp callExp, OCLExpression expression)
           
protected  Operation getBadOperation()
           
protected  Property getBadProperty()
           
protected  VariableDeclaration getImplicitSource(ModelElementCS csExp, Feature feature)
           
protected  Type getSourceElementType(InvocationExpCS csNavigatingExp, OCLExpression source)
           
protected  EnumLiteralExp resolveEnumLiteral(ExpCS csExp, EnumerationLiteral enumerationLiteral)
           
protected  void resolveIterationAccumulators(InvocationExpCS csNavigatingExp, LoopExp expression)
           
protected  void resolveIterationBody(InvocationExpCS csNavigatingExp, LoopExp expression)
           
protected  LoopExp resolveIterationCall(InvocationExpCS csNavigatingExp, OCLExpression source, Iteration iteration)
           
protected  void resolveIterationExplicitAccumulators(InvocationExpCS csNavigatingExp)
           
protected  void resolveIterationIterators(InvocationExpCS csNavigatingExp, OCLExpression source, LoopExp expression)
           
protected  CallExp resolveNavigationFeature(NamedExpCS csElement, OCLExpression source, Feature feature, CallExp callExp)
          Synthesize any any implicit collect() call.
protected  OCLExpression resolveNavigationSource(NamedExpCS csNameExp, Feature feature)
          Resolve any implicit source and any associated implicit oclAsSet().
protected  OCLExpression resolveOperation(InvocationExpCS csNavigatingExp)
           
protected  void resolveOperationArguments(InvocationExpCS csNavigatingExp, OCLExpression source, Operation operation, OperationCallExp expression)
          Complete the installation of each operation argument in its operation call.
protected  void resolveOperationArgumentTypes(InvocationExpCS csNavigatingExp)
          Determine the type of each operation argument so that the appropriate operation overload can be selected.
protected  void resolveOperationCall(OperationCallExp expression, OperatorCS csOperator, ScopeFilter filter)
           
protected  void resolveOperationReturnType(CallExp callExp)
           
protected  OCLExpression resolvePropertyCallExp(NamedExpCS csNameExp, Property property)
           
protected  OCLExpression resolvePropertyNavigation(NamedExpCS csNamedExp)
           
protected  TypeExp resolveTypeExp(ExpCS csExp, Type type)
           
protected  OCLExpression resolveUnknownOperation(NamedExpCS csNamedExp)
           
protected  VariableExp resolveVariableExp(NameExpCS csNameExp, VariableDeclaration variableDeclaration)
           
 Element visitBinaryOperatorCS(BinaryOperatorCS csOperator)
           
 Element visitBooleanLiteralExpCS(BooleanLiteralExpCS csBooleanLiteralExp)
           
 Element visitCollectionLiteralExpCS(CollectionLiteralExpCS csCollectionLiteralExp)
           
 Element visitCollectionLiteralPartCS(CollectionLiteralPartCS csCollectionLiteralPart)
           
 Element visitCollectionTypeCS(CollectionTypeCS object)
           
 Element visitConstructorExpCS(ConstructorExpCS csConstructorExp)
           
 Element visitConstructorPartCS(ConstructorPartCS csConstructorPart)
           
 Element visitContextCS(ContextCS csContext)
           
 Element visitExpCS(ExpCS object)
           
 Element visitExpSpecificationCS(ExpSpecificationCS object)
           
 Element visitIfExpCS(IfExpCS csIfExp)
           
 Element visitIndexExpCS(IndexExpCS csIndexExp)
           
 Element visitInfixExpCS(InfixExpCS csInfixExp)
           
 Element visitInvalidLiteralExpCS(InvalidLiteralExpCS csInvalidLiteralExp)
           
 Element visitInvocationExpCS(InvocationExpCS csNavigatingExp)
           
 Element visitLetExpCS(LetExpCS csLetExp)
           
 Element visitLetVariableCS(LetVariableCS csLetVariable)
           
 Element visitNameExpCS(NameExpCS csNameExp)
           
 Element visitNavigatingArgCS(NavigatingArgCS csNavigatingArg)
           
 OCLExpression visitNavigationOperatorCS(NavigationOperatorCS csOperator)
           
 Element visitNestedExpCS(NestedExpCS csNestedExp)
           
 Element visitNullLiteralExpCS(NullLiteralExpCS csNullLiteralExp)
           
 Element visitNumberLiteralExpCS(NumberLiteralExpCS csNumberLiteralExp)
           
 Element visitOperatorCS(OperatorCS object)
           
 Element visitPrefixExpCS(PrefixExpCS csPrefixExp)
           
 Element visitSelfExpCS(SelfExpCS csSelfExp)
           
 Element visitStringLiteralExpCS(StringLiteralExpCS csStringLiteralExp)
           
 Element visitTupleLiteralExpCS(TupleLiteralExpCS csTupleLiteralExp)
           
 Element visitTupleLiteralPartCS(TupleLiteralPartCS csTupleLiteralPart)
           
 Element visitTypeLiteralExpCS(TypeLiteralExpCS csTypeLiteralExp)
           
 Element visitUnaryOperatorCS(UnaryOperatorCS csOperator)
           
 Element visitUnlimitedNaturalLiteralExpCS(UnlimitedNaturalLiteralExpCS csUnlimitedNaturalLiteralExp)
           
 Element visitVariableCS(VariableCS csVariable)
           
 
Methods inherited from class org.eclipse.ocl.examples.xtext.essentialocl.cs2pivot.AbstractEssentialOCLLeft2RightVisitor
visitLiteralExpCS, visitPrimitiveLiteralExpCS, visitTypeNameExpCS
 
Methods inherited from class org.eclipse.ocl.examples.xtext.base.cs2pivot.BaseLeft2RightVisitor
visitAnnotationCS, visitClassifierCS, visitConstraintCS, visitDetailCS, visiting, visitOperationCS, visitParameterCS, visitSpecificationCS, visitStructuralFeatureCS, visitTemplateBindingCS, visitTemplateParameterCS, visitTemplateParameterSubstitutionCS, visitTemplateSignatureCS, visitTuplePartCS, visitTupleTypeCS, visitTypeRefCS
 
Methods inherited from class org.eclipse.ocl.examples.xtext.base.util.AbstractExtendingBaseCSVisitor
visitAnnotationElementCS, visitAttributeCS, visitClassCS, visitCollectionTypeRefCS, visitDataTypeCS, visitDocumentationCS, visitElementCS, visitElementRefCS, visitEnumerationCS, visitEnumerationLiteralCS, visitImportCS, visitLambdaTypeCS, visitLibraryCS, visitModelElementCS, visitModelElementRefCS, visitMultiplicityBoundsCS, visitMultiplicityStringCS, visitNamedElementCS, visitPackageCS, visitPathElementCS, visitPathNameCS, visitPivotableElementCS, visitPrimitiveTypeRefCS, visitReferenceCS, visitRootPackageCS, visitTypedElementCS, visitTypedRefCS, visitTypedTypeRefCS, visitTypeParameterCS, visitWildcardTypeRefCS
 
Methods inherited from class org.eclipse.ocl.examples.xtext.base.util.AbstractBaseCSVisitor
getAdapter, safeVisit, visit
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.eclipse.ocl.examples.xtext.base.util.BaseCSVisitor
getAdapter, visitAnnotationCS, visitAnnotationElementCS, visitAttributeCS, visitClassCS, visitClassifierCS, visitCollectionTypeRefCS, visitConstraintCS, visitDataTypeCS, visitDetailCS, visitDocumentationCS, visitElementCS, visitElementRefCS, visitEnumerationCS, visitEnumerationLiteralCS, visitImportCS, visiting, visitLambdaTypeCS, visitLibraryCS, visitModelElementCS, visitModelElementRefCS, visitMultiplicityBoundsCS, visitMultiplicityStringCS, visitNamedElementCS, visitOperationCS, visitPackageCS, visitParameterCS, visitPathElementCS, visitPathNameCS, visitPivotableElementCS, visitPrimitiveTypeRefCS, visitReferenceCS, visitRootPackageCS, visitSpecificationCS, visitStructuralFeatureCS, visitTemplateBindingCS, visitTemplateParameterCS, visitTemplateParameterSubstitutionCS, visitTemplateSignatureCS, visitTuplePartCS, visitTupleTypeCS, visitTypedElementCS, visitTypedRefCS, visitTypedTypeRefCS, visitTypeParameterCS, visitTypeRefCS, visitWildcardTypeRefCS
 

Field Detail

metaModelManager

protected final MetaModelManager metaModelManager
Constructor Detail

EssentialOCLLeft2RightVisitor

public EssentialOCLLeft2RightVisitor(CS2PivotConversion context)
Method Detail

checkImplementation

protected OCLExpression checkImplementation(NamedExpCS csNavigatingExp,
                                            Feature feature,
                                            CallExp callExp,
                                            OCLExpression expression)

getBadOperation

protected Operation getBadOperation()

getBadProperty

protected Property getBadProperty()

getImplicitSource

protected VariableDeclaration getImplicitSource(ModelElementCS csExp,
                                                Feature feature)

getSourceElementType

protected Type getSourceElementType(InvocationExpCS csNavigatingExp,
                                    OCLExpression source)

resolveEnumLiteral

protected EnumLiteralExp resolveEnumLiteral(ExpCS csExp,
                                            EnumerationLiteral enumerationLiteral)

resolveIterationAccumulators

protected void resolveIterationAccumulators(InvocationExpCS csNavigatingExp,
                                            LoopExp expression)

resolveIterationBody

protected void resolveIterationBody(InvocationExpCS csNavigatingExp,
                                    LoopExp expression)

resolveIterationCall

protected LoopExp resolveIterationCall(InvocationExpCS csNavigatingExp,
                                       OCLExpression source,
                                       Iteration iteration)

resolveIterationExplicitAccumulators

protected void resolveIterationExplicitAccumulators(InvocationExpCS csNavigatingExp)

resolveIterationIterators

protected void resolveIterationIterators(InvocationExpCS csNavigatingExp,
                                         OCLExpression source,
                                         LoopExp expression)

resolveNavigationFeature

protected CallExp resolveNavigationFeature(NamedExpCS csElement,
                                           OCLExpression source,
                                           Feature feature,
                                           CallExp callExp)
Synthesize any any implicit collect() call. The return type is left unresolved since operation parameters or loop body must be resolved first.


resolveNavigationSource

protected OCLExpression resolveNavigationSource(NamedExpCS csNameExp,
                                                Feature feature)
Resolve any implicit source and any associated implicit oclAsSet().


resolveOperation

protected OCLExpression resolveOperation(InvocationExpCS csNavigatingExp)

resolveUnknownOperation

protected OCLExpression resolveUnknownOperation(NamedExpCS csNamedExp)

resolveOperationArgumentTypes

protected void resolveOperationArgumentTypes(InvocationExpCS csNavigatingExp)
Determine the type of each operation argument so that the appropriate operation overload can be selected. Iterator bodies are left unresolved.


resolveOperationArguments

protected void resolveOperationArguments(InvocationExpCS csNavigatingExp,
                                         OCLExpression source,
                                         Operation operation,
                                         OperationCallExp expression)
Complete the installation of each operation argument in its operation call.


resolveOperationCall

protected void resolveOperationCall(OperationCallExp expression,
                                    OperatorCS csOperator,
                                    ScopeFilter filter)

resolveOperationReturnType

protected void resolveOperationReturnType(CallExp callExp)

resolvePropertyCallExp

protected OCLExpression resolvePropertyCallExp(NamedExpCS csNameExp,
                                               Property property)

resolvePropertyNavigation

protected OCLExpression resolvePropertyNavigation(NamedExpCS csNamedExp)

resolveTypeExp

protected TypeExp resolveTypeExp(ExpCS csExp,
                                 Type type)

resolveVariableExp

protected VariableExp resolveVariableExp(NameExpCS csNameExp,
                                         VariableDeclaration variableDeclaration)

visitBinaryOperatorCS

public Element visitBinaryOperatorCS(BinaryOperatorCS csOperator)
Specified by:
visitBinaryOperatorCS in interface EssentialOCLCSVisitor<Element>
Overrides:
visitBinaryOperatorCS in class AbstractEssentialOCLLeft2RightVisitor

visitBooleanLiteralExpCS

public Element visitBooleanLiteralExpCS(BooleanLiteralExpCS csBooleanLiteralExp)
Specified by:
visitBooleanLiteralExpCS in interface EssentialOCLCSVisitor<Element>
Overrides:
visitBooleanLiteralExpCS in class AbstractEssentialOCLLeft2RightVisitor

visitCollectionLiteralExpCS

public Element visitCollectionLiteralExpCS(CollectionLiteralExpCS csCollectionLiteralExp)
Specified by:
visitCollectionLiteralExpCS in interface EssentialOCLCSVisitor<Element>
Overrides:
visitCollectionLiteralExpCS in class AbstractEssentialOCLLeft2RightVisitor

visitCollectionLiteralPartCS

public Element visitCollectionLiteralPartCS(CollectionLiteralPartCS csCollectionLiteralPart)
Specified by:
visitCollectionLiteralPartCS in interface EssentialOCLCSVisitor<Element>
Overrides:
visitCollectionLiteralPartCS in class AbstractEssentialOCLLeft2RightVisitor

visitCollectionTypeCS

public Element visitCollectionTypeCS(CollectionTypeCS object)
Specified by:
visitCollectionTypeCS in interface EssentialOCLCSVisitor<Element>
Overrides:
visitCollectionTypeCS in class AbstractEssentialOCLLeft2RightVisitor

visitConstructorExpCS

public Element visitConstructorExpCS(ConstructorExpCS csConstructorExp)
Specified by:
visitConstructorExpCS in interface EssentialOCLCSVisitor<Element>
Overrides:
visitConstructorExpCS in class AbstractEssentialOCLLeft2RightVisitor

visitConstructorPartCS

public Element visitConstructorPartCS(ConstructorPartCS csConstructorPart)
Specified by:
visitConstructorPartCS in interface EssentialOCLCSVisitor<Element>
Overrides:
visitConstructorPartCS in class AbstractEssentialOCLLeft2RightVisitor

visitContextCS

public Element visitContextCS(ContextCS csContext)
Specified by:
visitContextCS in interface EssentialOCLCSVisitor<Element>
Overrides:
visitContextCS in class AbstractEssentialOCLLeft2RightVisitor

visitExpCS

public Element visitExpCS(ExpCS object)
Specified by:
visitExpCS in interface EssentialOCLCSVisitor<Element>
Overrides:
visitExpCS in class AbstractEssentialOCLLeft2RightVisitor

visitExpSpecificationCS

public Element visitExpSpecificationCS(ExpSpecificationCS object)
Specified by:
visitExpSpecificationCS in interface EssentialOCLCSVisitor<Element>
Overrides:
visitExpSpecificationCS in class AbstractEssentialOCLLeft2RightVisitor

visitIfExpCS

public Element visitIfExpCS(IfExpCS csIfExp)
Specified by:
visitIfExpCS in interface EssentialOCLCSVisitor<Element>
Overrides:
visitIfExpCS in class AbstractEssentialOCLLeft2RightVisitor

visitIndexExpCS

public Element visitIndexExpCS(IndexExpCS csIndexExp)
Specified by:
visitIndexExpCS in interface EssentialOCLCSVisitor<Element>
Overrides:
visitIndexExpCS in class AbstractEssentialOCLLeft2RightVisitor

visitInfixExpCS

public Element visitInfixExpCS(InfixExpCS csInfixExp)
Specified by:
visitInfixExpCS in interface EssentialOCLCSVisitor<Element>
Overrides:
visitInfixExpCS in class AbstractEssentialOCLLeft2RightVisitor

visitInvalidLiteralExpCS

public Element visitInvalidLiteralExpCS(InvalidLiteralExpCS csInvalidLiteralExp)
Specified by:
visitInvalidLiteralExpCS in interface EssentialOCLCSVisitor<Element>
Overrides:
visitInvalidLiteralExpCS in class AbstractEssentialOCLLeft2RightVisitor

visitInvocationExpCS

public Element visitInvocationExpCS(InvocationExpCS csNavigatingExp)
Specified by:
visitInvocationExpCS in interface EssentialOCLCSVisitor<Element>
Overrides:
visitInvocationExpCS in class AbstractEssentialOCLLeft2RightVisitor

visitLetExpCS

public Element visitLetExpCS(LetExpCS csLetExp)
Specified by:
visitLetExpCS in interface EssentialOCLCSVisitor<Element>
Overrides:
visitLetExpCS in class AbstractEssentialOCLLeft2RightVisitor

visitLetVariableCS

public Element visitLetVariableCS(LetVariableCS csLetVariable)
Specified by:
visitLetVariableCS in interface EssentialOCLCSVisitor<Element>
Overrides:
visitLetVariableCS in class AbstractEssentialOCLLeft2RightVisitor

visitNameExpCS

public Element visitNameExpCS(NameExpCS csNameExp)
Specified by:
visitNameExpCS in interface EssentialOCLCSVisitor<Element>
Overrides:
visitNameExpCS in class AbstractEssentialOCLLeft2RightVisitor

visitNavigatingArgCS

public Element visitNavigatingArgCS(NavigatingArgCS csNavigatingArg)
Specified by:
visitNavigatingArgCS in interface EssentialOCLCSVisitor<Element>
Overrides:
visitNavigatingArgCS in class AbstractEssentialOCLLeft2RightVisitor

visitNavigationOperatorCS

public OCLExpression visitNavigationOperatorCS(NavigationOperatorCS csOperator)
Specified by:
visitNavigationOperatorCS in interface EssentialOCLCSVisitor<Element>
Overrides:
visitNavigationOperatorCS in class AbstractEssentialOCLLeft2RightVisitor

visitNestedExpCS

public Element visitNestedExpCS(NestedExpCS csNestedExp)
Specified by:
visitNestedExpCS in interface EssentialOCLCSVisitor<Element>
Overrides:
visitNestedExpCS in class AbstractEssentialOCLLeft2RightVisitor

visitNullLiteralExpCS

public Element visitNullLiteralExpCS(NullLiteralExpCS csNullLiteralExp)
Specified by:
visitNullLiteralExpCS in interface EssentialOCLCSVisitor<Element>
Overrides:
visitNullLiteralExpCS in class AbstractEssentialOCLLeft2RightVisitor

visitNumberLiteralExpCS

public Element visitNumberLiteralExpCS(NumberLiteralExpCS csNumberLiteralExp)
Specified by:
visitNumberLiteralExpCS in interface EssentialOCLCSVisitor<Element>
Overrides:
visitNumberLiteralExpCS in class AbstractEssentialOCLLeft2RightVisitor

visitOperatorCS

public Element visitOperatorCS(OperatorCS object)
Specified by:
visitOperatorCS in interface EssentialOCLCSVisitor<Element>
Overrides:
visitOperatorCS in class AbstractEssentialOCLLeft2RightVisitor

visitPrefixExpCS

public Element visitPrefixExpCS(PrefixExpCS csPrefixExp)
Specified by:
visitPrefixExpCS in interface EssentialOCLCSVisitor<Element>
Overrides:
visitPrefixExpCS in class AbstractEssentialOCLLeft2RightVisitor

visitSelfExpCS

public Element visitSelfExpCS(SelfExpCS csSelfExp)
Specified by:
visitSelfExpCS in interface EssentialOCLCSVisitor<Element>
Overrides:
visitSelfExpCS in class AbstractEssentialOCLLeft2RightVisitor

visitStringLiteralExpCS

public Element visitStringLiteralExpCS(StringLiteralExpCS csStringLiteralExp)
Specified by:
visitStringLiteralExpCS in interface EssentialOCLCSVisitor<Element>
Overrides:
visitStringLiteralExpCS in class AbstractEssentialOCLLeft2RightVisitor

visitTupleLiteralExpCS

public Element visitTupleLiteralExpCS(TupleLiteralExpCS csTupleLiteralExp)
Specified by:
visitTupleLiteralExpCS in interface EssentialOCLCSVisitor<Element>
Overrides:
visitTupleLiteralExpCS in class AbstractEssentialOCLLeft2RightVisitor

visitTupleLiteralPartCS

public Element visitTupleLiteralPartCS(TupleLiteralPartCS csTupleLiteralPart)
Specified by:
visitTupleLiteralPartCS in interface EssentialOCLCSVisitor<Element>
Overrides:
visitTupleLiteralPartCS in class AbstractEssentialOCLLeft2RightVisitor

visitTypeLiteralExpCS

public Element visitTypeLiteralExpCS(TypeLiteralExpCS csTypeLiteralExp)
Specified by:
visitTypeLiteralExpCS in interface EssentialOCLCSVisitor<Element>
Overrides:
visitTypeLiteralExpCS in class AbstractEssentialOCLLeft2RightVisitor

visitUnaryOperatorCS

public Element visitUnaryOperatorCS(UnaryOperatorCS csOperator)
Specified by:
visitUnaryOperatorCS in interface EssentialOCLCSVisitor<Element>
Overrides:
visitUnaryOperatorCS in class AbstractEssentialOCLLeft2RightVisitor

visitUnlimitedNaturalLiteralExpCS

public Element visitUnlimitedNaturalLiteralExpCS(UnlimitedNaturalLiteralExpCS csUnlimitedNaturalLiteralExp)
Specified by:
visitUnlimitedNaturalLiteralExpCS in interface EssentialOCLCSVisitor<Element>
Overrides:
visitUnlimitedNaturalLiteralExpCS in class AbstractEssentialOCLLeft2RightVisitor

visitVariableCS

public Element visitVariableCS(VariableCS csVariable)
Specified by:
visitVariableCS in interface EssentialOCLCSVisitor<Element>
Overrides:
visitVariableCS in class AbstractEssentialOCLLeft2RightVisitor