Class ExpressionTranslator
- java.lang.Object
-
- net.ssehub.easy.dslCore.translation.MessageReceiver
-
- net.ssehub.easy.dslCore.translation.ExpressionTranslator
-
- de.uni_hildesheim.sse.vil.expressions.translation.ExpressionTranslator<VariableDeclaration,Resolver,ExpressionStatement>
-
- de.uni_hildesheim.sse.buildLanguageTranslation.ExpressionTranslator
-
- All Implemented Interfaces:
IMessageReceiver,ResolutionListener,StringResolver.IExpressionTranslator<VariableDeclaration,Resolver>
public class ExpressionTranslator extends ExpressionTranslator<VariableDeclaration,Resolver,ExpressionStatement>
A specific expression translator for the build language.- Author:
- Holger Eichelberger
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class de.uni_hildesheim.sse.vil.expressions.translation.ExpressionTranslator
ExpressionTranslator.CallType
-
-
Constructor Summary
Constructors Constructor Description ExpressionTranslator()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected java.lang.StringcannotAssignHint()A hint if an assignment is not allowed.protected ExpressionStatementcreateExpressionStatement(Expression expression, Resolver resolver)Creates an expression statement.protected ExpressionVersionRestrictioncreateExpressionVersionRestriction(Expression expr, VariableDeclaration decl, org.eclipse.emf.ecore.EObject cause, org.eclipse.emf.ecore.EStructuralFeature feature)Creates an expression version restriction matching this class.protected VariableDeclarationcreateImplicitVariableDeclaration(java.lang.String name, TypeDescriptor<?> type, boolean isConstant, Expression expression, Resolver resolver)Creates a new implicit variable declaration.protected VariableDeclarationcreateVariableDeclaration(java.lang.String name, TypeDescriptor<?> type, boolean isConstant, Expression expression, Resolver resolver)Creates a new variable declaration.ExpressionparseExpression(java.lang.String expression, Resolver resolver, java.lang.StringBuilder warnings)Parse the given expression.private AlternativeExpressionprocessAlternative(de.uni_hildesheim.sse.vilBuildLanguage.Alternative alt, Resolver resolver)Processes an alternative expression.protected ExpressionprocessCall(Expression firstParam, de.uni_hildesheim.sse.vil.expressions.expressionDsl.Call call, ExpressionTranslator.CallType type, de.uni_hildesheim.sse.vil.expressions.expressionDsl.Expression arrayEx, Resolver resolver)Processes a function call.ExpressionStatementprocessExpressionStatement(de.uni_hildesheim.sse.vilBuildLanguage.ExpressionStatement expr, Resolver resolver)Processes an expression statement.private ForStatementprocessForStatement(de.uni_hildesheim.sse.vilBuildLanguage.For stmt, Resolver resolver)Processes a "for" statement.private InstantiateExpressionprocessInstantiate(de.uni_hildesheim.sse.vilBuildLanguage.Instantiate inst, Resolver resolver)Processes an instantiate expression.protected JoinExpressionprocessJoin(de.uni_hildesheim.sse.vilBuildLanguage.Join join, Resolver resolver)Processes a join.protected JoinVariableDeclarationprocessJoinVariable(de.uni_hildesheim.sse.vilBuildLanguage.JoinVariable var, Resolver resolver)Processes a join variable.private MapExpressionprocessMap(de.uni_hildesheim.sse.vilBuildLanguage.Map map, Resolver resolver)Processes a "map" expression.ExpressionprocessPrimaryExpression(de.uni_hildesheim.sse.vil.expressions.expressionDsl.PrimaryExpression ex, Resolver resolver)Processes a primary expression.private WhileStatementprocessWhileStatement(de.uni_hildesheim.sse.vilBuildLanguage.While stmt, Resolver resolver)Processes a "while" statement.IRuleElement[]resolveBlock(de.uni_hildesheim.sse.vilBuildLanguage.RuleElementBlock block, Resolver resolver)Resolves a block of rule elements.IRuleElement[]resolveBlock(java.util.List<? extends de.uni_hildesheim.sse.vilBuildLanguage.RuleElement> block, Resolver resolver)Resolves a block of rule elements.protected IRuleElementresolveRuleElement(de.uni_hildesheim.sse.vilBuildLanguage.RuleElement elt, Resolver resolver)Called if the default processing of rule elements cannot be applied.private IRuleBlockresolveStatementOrBlock(de.uni_hildesheim.sse.vilBuildLanguage.StatementOrBlock part, Resolver resolver)Resolves a statement-or-block part.-
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, 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
clearMessages, clearMessages, collect, error, error, getErrorCount, getMessage, getMessageCount, warning
-
Methods inherited from class net.ssehub.easy.dslCore.translation.MessageReceiver
error
-
-
-
-
Method Detail
-
processPrimaryExpression
public Expression processPrimaryExpression(de.uni_hildesheim.sse.vil.expressions.expressionDsl.PrimaryExpression ex, Resolver resolver) throws TranslatorException
Processes a primary expression.- Overrides:
processPrimaryExpressionin classExpressionTranslator<VariableDeclaration,Resolver,ExpressionStatement>- Parameters:
ex- the expression to be processedresolver- a resolver instance for resolving variables etc.- Returns:
- the resulting expression node
- Throws:
TranslatorException- in case that the translation fails for some reason
-
processInstantiate
private InstantiateExpression processInstantiate(de.uni_hildesheim.sse.vilBuildLanguage.Instantiate inst, Resolver resolver) throws TranslatorException
Processes an instantiate expression. Here, many must be deferred to runtime as the main parameter determining the rule to be executed can only be determined at runtime.- Parameters:
inst-resolver-- Returns:
- Throws:
TranslatorException
-
processAlternative
private AlternativeExpression processAlternative(de.uni_hildesheim.sse.vilBuildLanguage.Alternative alt, Resolver resolver) throws TranslatorException
Processes an alternative expression.- Parameters:
alt- the ECore object representing the alternative expressionresolver- a resolver instance for resolving variables etc.- Returns:
- the translated object in terms of the build language model
- Throws:
TranslatorException- in case that the translation fails
-
processWhileStatement
private WhileStatement processWhileStatement(de.uni_hildesheim.sse.vilBuildLanguage.While stmt, Resolver resolver) throws TranslatorException
Processes a "while" statement.- Parameters:
stmt- the ECore object representing the statementresolver- a resolver instance for resolving variables etc.- Returns:
- the translated object in terms of the build language model
- Throws:
TranslatorException- in case that the translation fails
-
processForStatement
private ForStatement processForStatement(de.uni_hildesheim.sse.vilBuildLanguage.For stmt, Resolver resolver) throws TranslatorException
Processes a "for" statement.- Parameters:
stmt- the ECore object representing the statementresolver- a resolver instance for resolving variables etc.- Returns:
- the translated object in terms of the build language model
- Throws:
TranslatorException- in case that the translation fails
-
processMap
private MapExpression processMap(de.uni_hildesheim.sse.vilBuildLanguage.Map map, Resolver resolver) throws TranslatorException
Processes a "map" expression.- Parameters:
map- the ECore object representing the expressionresolver- a resolver instance for resolving variables etc.- Returns:
- the translated object in terms of the build language model
- Throws:
TranslatorException- in case that the translation fails
-
resolveStatementOrBlock
private IRuleBlock resolveStatementOrBlock(de.uni_hildesheim.sse.vilBuildLanguage.StatementOrBlock part, Resolver resolver) throws TranslatorException
Resolves a statement-or-block part.- Parameters:
part- the ECore part object to be resolved (may be null)resolver- the resolver- Returns:
- the resolved element (may be null)
- Throws:
TranslatorException- in case of translation problems
-
resolveBlock
public IRuleElement[] resolveBlock(de.uni_hildesheim.sse.vilBuildLanguage.RuleElementBlock block, Resolver resolver)
Resolves a block of rule elements.- Parameters:
block- the block to be resolvedresolver- a resolver instance for resolving variables etc.- Returns:
- the resolved elements
- Throws:
TranslatorException- in case that the translation fails due to semantic reasons
-
resolveBlock
public IRuleElement[] resolveBlock(java.util.List<? extends de.uni_hildesheim.sse.vilBuildLanguage.RuleElement> block, Resolver resolver)
Resolves a block of rule elements.- Parameters:
block- the block to be resolvedresolver- a resolver instance for resolving variables etc.- Returns:
- the resolved elements
- Throws:
TranslatorException- in case that the translation fails due to semantic reasons
-
resolveRuleElement
protected IRuleElement resolveRuleElement(de.uni_hildesheim.sse.vilBuildLanguage.RuleElement elt, Resolver resolver) throws TranslatorException
Called if the default processing of rule elements cannot be applied.- Parameters:
elt- the rule elementresolver- the resolver- Returns:
- the resolved element (may be null, is ignored then)
- Throws:
TranslatorException- in case that resolving the rule element fails for some reason
-
createExpressionStatement
protected ExpressionStatement createExpressionStatement(Expression expression, Resolver resolver)
Description copied from class:ExpressionTranslatorCreates an expression statement.- Specified by:
createExpressionStatementin classExpressionTranslator<VariableDeclaration,Resolver,ExpressionStatement>- Parameters:
expression- the expressionresolver- the resolver instance- Returns:
- the expression statement
-
processExpressionStatement
public ExpressionStatement processExpressionStatement(de.uni_hildesheim.sse.vilBuildLanguage.ExpressionStatement expr, Resolver resolver) throws TranslatorException
Processes an expression statement.- Parameters:
expr- the expression to be processedresolver- a resolver instance for resolving variables etc.- Returns:
- the expression statement
- Throws:
TranslatorException- in case that the translation fails due to semantic reasons
-
processJoin
protected JoinExpression processJoin(de.uni_hildesheim.sse.vilBuildLanguage.Join join, Resolver resolver) throws TranslatorException
Processes a join.- Parameters:
join- the join to be processedresolver- a resolver instance for resolving variables etc.- Returns:
- the join model representation
- Throws:
TranslatorException- in case that the translation fails for some reason
-
processJoinVariable
protected JoinVariableDeclaration processJoinVariable(de.uni_hildesheim.sse.vilBuildLanguage.JoinVariable var, Resolver resolver) throws TranslatorException
Processes a join variable.- Parameters:
var- the variable to be processedresolver- a resolver instance for resolving variables etc.- Returns:
- the join variable
- Throws:
TranslatorException- in case that the translation fails for some reason
-
processCall
protected Expression processCall(Expression firstParam, de.uni_hildesheim.sse.vil.expressions.expressionDsl.Call call, ExpressionTranslator.CallType type, de.uni_hildesheim.sse.vil.expressions.expressionDsl.Expression arrayEx, Resolver resolver) throws TranslatorException
Processes a function call.- Specified by:
processCallin classExpressionTranslator<VariableDeclaration,Resolver,ExpressionStatement>- Parameters:
firstParam- the first parameter (may be null)call- the function all (may be null, but thenarrayExis required)arrayEx- an array access expression (may be null, but thencallis required)resolver- a resolver instance for resolving variables etc.- Returns:
- the resulting expression node
- Throws:
TranslatorException- in case that the translation fails for some reason
-
createVariableDeclaration
protected VariableDeclaration createVariableDeclaration(java.lang.String name, TypeDescriptor<?> type, boolean isConstant, Expression expression, Resolver resolver)
Description copied from class:ExpressionTranslatorCreates a new variable declaration.- Specified by:
createVariableDeclarationin classExpressionTranslator<VariableDeclaration,Resolver,ExpressionStatement>- Parameters:
name- the name of the variabletype- the type of the variableisConstant- whether this variable is a constantexpression- an expression denoting the initial value (may be null)resolver- the resolver instance
-
createImplicitVariableDeclaration
protected VariableDeclaration createImplicitVariableDeclaration(java.lang.String name, TypeDescriptor<?> type, boolean isConstant, Expression expression, Resolver resolver)
Description copied from class:ExpressionTranslatorCreates a new implicit variable declaration.- Specified by:
createImplicitVariableDeclarationin classExpressionTranslator<VariableDeclaration,Resolver,ExpressionStatement>- Parameters:
name- the name of the variabletype- the type of the variableisConstant- whether this variable is a constantexpression- an expression denoting the initial value (may be null)resolver- the resolver instance
-
createExpressionVersionRestriction
protected ExpressionVersionRestriction createExpressionVersionRestriction(Expression expr, VariableDeclaration decl, org.eclipse.emf.ecore.EObject cause, org.eclipse.emf.ecore.EStructuralFeature feature) throws RestrictionEvaluationException
Description copied from class:ExpressionTranslatorCreates an expression version restriction matching this class.- Specified by:
createExpressionVersionRestrictionin classExpressionTranslator<VariableDeclaration,Resolver,ExpressionStatement>- Parameters:
expr- the expression for the restrictiondecl- the version variablecause- the grammar cause for this callfeature- the causing feature- Returns:
- the created instance
- Throws:
RestrictionEvaluationException- in case of any type related problems
-
parseExpression
public Expression parseExpression(java.lang.String expression, Resolver resolver, java.lang.StringBuilder warnings) throws VilException
Description copied from class:ExpressionTranslatorParse the given expression.- Specified by:
parseExpressionin interfaceStringResolver.IExpressionTranslator<VariableDeclaration,Resolver>- Specified by:
parseExpressionin classExpressionTranslator<VariableDeclaration,Resolver,ExpressionStatement>- Parameters:
expression- the expression as stringresolver- the resolverwarnings- a collector for warnings- Returns:
- the resulting expression
- Throws:
VilException- if problems occur while parsing / resolving
-
cannotAssignHint
protected java.lang.String cannotAssignHint()
Description copied from class:ExpressionTranslatorA hint if an assignment is not allowed.- Specified by:
cannotAssignHintin classExpressionTranslator<VariableDeclaration,Resolver,ExpressionStatement>- Returns:
- the hint (must not be null)
-
-