java.lang.Object
net.ssehub.easy.dslCore.translation.MessageReceiver
net.ssehub.easy.dslCore.translation.ExpressionTranslator
de.uni_hildesheim.sse.vil.expressions.translation.ExpressionTranslator<net.ssehub.easy.instantiation.core.model.templateModel.VariableDeclaration,net.ssehub.easy.instantiation.core.model.templateModel.Resolver,net.ssehub.easy.instantiation.core.model.templateModel.ExpressionStatement>
de.uni_hildesheim.sse.vil.templatelang.templateLanguageTranslation.ExpressionTranslator
All Implemented Interfaces:
net.ssehub.easy.dslCore.translation.IMessageReceiver, net.ssehub.easy.instantiation.core.model.expressions.ResolutionListener, net.ssehub.easy.instantiation.core.model.expressions.StringResolver.IExpressionTranslator<net.ssehub.easy.instantiation.core.model.templateModel.VariableDeclaration,net.ssehub.easy.instantiation.core.model.templateModel.Resolver>

public class ExpressionTranslator extends de.uni_hildesheim.sse.vil.expressions.translation.ExpressionTranslator<net.ssehub.easy.instantiation.core.model.templateModel.VariableDeclaration,net.ssehub.easy.instantiation.core.model.templateModel.Resolver,net.ssehub.easy.instantiation.core.model.templateModel.ExpressionStatement>
A specific expression translator for the template language.
Author:
Holger Eichelberger
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    static interface 
     

    Nested classes/interfaces inherited from class de.uni_hildesheim.sse.vil.expressions.translation.ExpressionTranslator

    de.uni_hildesheim.sse.vil.expressions.translation.ExpressionTranslator.CallType
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
     
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    protected String
     
    protected net.ssehub.easy.instantiation.core.model.templateModel.ExpressionStatement
    createExpressionStatement(net.ssehub.easy.instantiation.core.model.expressions.Expression expression, net.ssehub.easy.instantiation.core.model.templateModel.Resolver resolver)
     
    protected net.ssehub.easy.instantiation.core.model.expressions.ExpressionVersionRestriction
    createExpressionVersionRestriction(net.ssehub.easy.instantiation.core.model.expressions.Expression expr, net.ssehub.easy.instantiation.core.model.common.VariableDeclaration decl, org.eclipse.emf.ecore.EObject cause, org.eclipse.emf.ecore.EStructuralFeature feature)
     
    protected net.ssehub.easy.instantiation.core.model.templateModel.VariableDeclaration
    createImplicitVariableDeclaration(String name, net.ssehub.easy.instantiation.core.model.vilTypes.TypeDescriptor<?> type, boolean isConstant, net.ssehub.easy.instantiation.core.model.expressions.Expression expression, net.ssehub.easy.instantiation.core.model.templateModel.Resolver resolver)
     
    protected net.ssehub.easy.instantiation.core.model.templateModel.VariableDeclaration
    createVariableDeclaration(String name, net.ssehub.easy.instantiation.core.model.vilTypes.TypeDescriptor<?> type, boolean isConstant, net.ssehub.easy.instantiation.core.model.expressions.Expression expression, net.ssehub.easy.instantiation.core.model.templateModel.Resolver resolver)
     
    net.ssehub.easy.instantiation.core.model.expressions.Expression
    parseExpression(String expression, net.ssehub.easy.instantiation.core.model.templateModel.Resolver resolver, StringBuilder warnings)
     
    protected net.ssehub.easy.instantiation.core.model.expressions.Expression
    processCall(net.ssehub.easy.instantiation.core.model.expressions.Expression firstParam, de.uni_hildesheim.sse.vil.expressions.expressionDsl.Call call, de.uni_hildesheim.sse.vil.expressions.translation.ExpressionTranslator.CallType type, de.uni_hildesheim.sse.vil.expressions.expressionDsl.Expression arrayEx, net.ssehub.easy.instantiation.core.model.templateModel.Resolver resolver)
    Processes a function call.
    protected net.ssehub.easy.instantiation.core.model.expressions.Expression
    processSubCall(net.ssehub.easy.instantiation.core.model.expressions.Expression result, de.uni_hildesheim.sse.vil.expressions.expressionDsl.SubCall call, de.uni_hildesheim.sse.vil.expressions.translation.ExpressionTranslator.CallType callType, net.ssehub.easy.instantiation.core.model.templateModel.Resolver resolver)
     
    void
     

    Methods inherited from class de.uni_hildesheim.sse.vil.expressions.translation.ExpressionTranslator

    assertBooleanExpression, checkCallExpression, checkSemantics, continueResolution, createConstant, enactIvmlWarnings, error, getIvmlMessageAdapter, processAdditiveExpression, processArguments, processAssignment, processConstant, processEqualityExpression, processExpression, processExpressionStatement, processLogicalExpression, processMultiplicativeExpression, processPostfixExpression, processPrimaryExpression, processQualifiedValue, processRelationalExpression, processRestriction, processSubCalls, processType, processTypeParameter, processUnaryExpression, processVariableDeclaration, reProcessVariableDeclaration, resolveCallArguments, resolved, resolveIteratorDeclarations, setIvmlMessageAdapter, warning, warnVersionRestrictions

    Methods inherited from class net.ssehub.easy.dslCore.translation.ExpressionTranslator

    addMessage, clearMessages, clearMessages, collect, error, error, getErrorCount, getMessage, getMessageCount, warning

    Methods inherited from class net.ssehub.easy.dslCore.translation.MessageReceiver

    error

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

  • Constructor Details

    • ExpressionTranslator

      public ExpressionTranslator()
  • Method Details

    • setStatementTranslator

      public void setStatementTranslator(ExpressionTranslator.IStatementTranslator sTranslator)
    • processCall

      protected net.ssehub.easy.instantiation.core.model.expressions.Expression processCall(net.ssehub.easy.instantiation.core.model.expressions.Expression firstParam, de.uni_hildesheim.sse.vil.expressions.expressionDsl.Call call, de.uni_hildesheim.sse.vil.expressions.translation.ExpressionTranslator.CallType type, de.uni_hildesheim.sse.vil.expressions.expressionDsl.Expression arrayEx, net.ssehub.easy.instantiation.core.model.templateModel.Resolver resolver) throws net.ssehub.easy.dslCore.translation.TranslatorException
      Processes a function call.
      Specified by:
      processCall in class de.uni_hildesheim.sse.vil.expressions.translation.ExpressionTranslator<net.ssehub.easy.instantiation.core.model.templateModel.VariableDeclaration,net.ssehub.easy.instantiation.core.model.templateModel.Resolver,net.ssehub.easy.instantiation.core.model.templateModel.ExpressionStatement>
      Parameters:
      firstParam - the first parameter (may be null)
      call - the function all (may be null, but then arrayEx is required)
      arrayEx - an array access expression (may be null, but then call is required)
      resolver - a resolver instance for resolving variables etc.
      Returns:
      the resulting expression node
      Throws:
      net.ssehub.easy.dslCore.translation.TranslatorException - in case that the translation fails for some reason
    • createVariableDeclaration

      protected net.ssehub.easy.instantiation.core.model.templateModel.VariableDeclaration createVariableDeclaration(String name, net.ssehub.easy.instantiation.core.model.vilTypes.TypeDescriptor<?> type, boolean isConstant, net.ssehub.easy.instantiation.core.model.expressions.Expression expression, net.ssehub.easy.instantiation.core.model.templateModel.Resolver resolver)
      Specified by:
      createVariableDeclaration in class de.uni_hildesheim.sse.vil.expressions.translation.ExpressionTranslator<net.ssehub.easy.instantiation.core.model.templateModel.VariableDeclaration,net.ssehub.easy.instantiation.core.model.templateModel.Resolver,net.ssehub.easy.instantiation.core.model.templateModel.ExpressionStatement>
    • createImplicitVariableDeclaration

      protected net.ssehub.easy.instantiation.core.model.templateModel.VariableDeclaration createImplicitVariableDeclaration(String name, net.ssehub.easy.instantiation.core.model.vilTypes.TypeDescriptor<?> type, boolean isConstant, net.ssehub.easy.instantiation.core.model.expressions.Expression expression, net.ssehub.easy.instantiation.core.model.templateModel.Resolver resolver)
      Specified by:
      createImplicitVariableDeclaration in class de.uni_hildesheim.sse.vil.expressions.translation.ExpressionTranslator<net.ssehub.easy.instantiation.core.model.templateModel.VariableDeclaration,net.ssehub.easy.instantiation.core.model.templateModel.Resolver,net.ssehub.easy.instantiation.core.model.templateModel.ExpressionStatement>
    • createExpressionVersionRestriction

      protected net.ssehub.easy.instantiation.core.model.expressions.ExpressionVersionRestriction createExpressionVersionRestriction(net.ssehub.easy.instantiation.core.model.expressions.Expression expr, net.ssehub.easy.instantiation.core.model.common.VariableDeclaration decl, org.eclipse.emf.ecore.EObject cause, org.eclipse.emf.ecore.EStructuralFeature feature) throws net.ssehub.easy.basics.modelManagement.RestrictionEvaluationException
      Specified by:
      createExpressionVersionRestriction in class de.uni_hildesheim.sse.vil.expressions.translation.ExpressionTranslator<net.ssehub.easy.instantiation.core.model.templateModel.VariableDeclaration,net.ssehub.easy.instantiation.core.model.templateModel.Resolver,net.ssehub.easy.instantiation.core.model.templateModel.ExpressionStatement>
      Throws:
      net.ssehub.easy.basics.modelManagement.RestrictionEvaluationException
    • parseExpression

      public net.ssehub.easy.instantiation.core.model.expressions.Expression parseExpression(String expression, net.ssehub.easy.instantiation.core.model.templateModel.Resolver resolver, StringBuilder warnings) throws net.ssehub.easy.instantiation.core.model.common.VilException
      Specified by:
      parseExpression in interface net.ssehub.easy.instantiation.core.model.expressions.StringResolver.IExpressionTranslator<net.ssehub.easy.instantiation.core.model.templateModel.VariableDeclaration,net.ssehub.easy.instantiation.core.model.templateModel.Resolver>
      Specified by:
      parseExpression in class de.uni_hildesheim.sse.vil.expressions.translation.ExpressionTranslator<net.ssehub.easy.instantiation.core.model.templateModel.VariableDeclaration,net.ssehub.easy.instantiation.core.model.templateModel.Resolver,net.ssehub.easy.instantiation.core.model.templateModel.ExpressionStatement>
      Throws:
      net.ssehub.easy.instantiation.core.model.common.VilException
    • createExpressionStatement

      protected net.ssehub.easy.instantiation.core.model.templateModel.ExpressionStatement createExpressionStatement(net.ssehub.easy.instantiation.core.model.expressions.Expression expression, net.ssehub.easy.instantiation.core.model.templateModel.Resolver resolver)
      Specified by:
      createExpressionStatement in class de.uni_hildesheim.sse.vil.expressions.translation.ExpressionTranslator<net.ssehub.easy.instantiation.core.model.templateModel.VariableDeclaration,net.ssehub.easy.instantiation.core.model.templateModel.Resolver,net.ssehub.easy.instantiation.core.model.templateModel.ExpressionStatement>
    • cannotAssignHint

      protected String cannotAssignHint()
      Specified by:
      cannotAssignHint in class de.uni_hildesheim.sse.vil.expressions.translation.ExpressionTranslator<net.ssehub.easy.instantiation.core.model.templateModel.VariableDeclaration,net.ssehub.easy.instantiation.core.model.templateModel.Resolver,net.ssehub.easy.instantiation.core.model.templateModel.ExpressionStatement>
    • processSubCall

      protected net.ssehub.easy.instantiation.core.model.expressions.Expression processSubCall(net.ssehub.easy.instantiation.core.model.expressions.Expression result, de.uni_hildesheim.sse.vil.expressions.expressionDsl.SubCall call, de.uni_hildesheim.sse.vil.expressions.translation.ExpressionTranslator.CallType callType, net.ssehub.easy.instantiation.core.model.templateModel.Resolver resolver) throws net.ssehub.easy.dslCore.translation.TranslatorException
      Overrides:
      processSubCall in class de.uni_hildesheim.sse.vil.expressions.translation.ExpressionTranslator<net.ssehub.easy.instantiation.core.model.templateModel.VariableDeclaration,net.ssehub.easy.instantiation.core.model.templateModel.Resolver,net.ssehub.easy.instantiation.core.model.templateModel.ExpressionStatement>
      Throws:
      net.ssehub.easy.dslCore.translation.TranslatorException