Package de.monticore.types.check.helpers
Class SubExprNameExtractionVisitor
java.lang.Object
de.monticore.types.check.helpers.SubExprNameExtractionVisitor
- All Implemented Interfaces:
CommonExpressionsVisitor2,ExpressionsBasisVisitor2,de.monticore.visitor.IVisitor
public class SubExprNameExtractionVisitor
extends Object
implements CommonExpressionsVisitor2, ExpressionsBasisVisitor2
The usage of this class is to collect information about a call expression
so that it is easier to resolve in the TypeCheck
We take the call expression, and split it into a qualified name and an expression having a type
such that type.qualifiedName(args) has the type of the call expression
if no type can be found, the expression is set to the inner expression for compatibility reasons
This makes it far easier to calculate the type of call expressions.
To use this class:
- Create an inheritance traverser
- Create an instance of this class and set
subExpressions. This is a shared state object that should be synchronized among the all name extracting visitors of the different languages - Register the instance of this class to be a visitor for ExpressionsBasis and CommonExpressions in the traverser.
DeriveSymTypeOfCommonExpressions.-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected SubExprNameExtractionResultCollects the name parts of the expression that the visitor is applied to. -
Constructor Summary
ConstructorsConstructorDescriptionSubExprNameExtractionVisitor(SubExprNameExtractionResult commonNamePartsRecord) -
Method Summary
Modifier and TypeMethodDescriptionvoidvoidvisit(ASTExpression expr) Default implementation that marks an expression as *not* being a name part.voidvisit(ASTNameExpression expr) Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface de.monticore.expressions.commonexpressions._visitor.CommonExpressionsVisitor2
endVisit, endVisit, endVisit, endVisit, endVisit, endVisit, endVisit, endVisit, endVisit, endVisit, endVisit, endVisit, endVisit, endVisit, endVisit, endVisit, endVisit, endVisit, endVisit, endVisit, endVisit, endVisit, endVisit, endVisit, endVisit, endVisit, endVisit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visitMethods inherited from interface de.monticore.expressions.expressionsbasis._visitor.ExpressionsBasisVisitor2
endVisit, endVisit, endVisit, endVisit, endVisit, endVisit, endVisit, endVisit, visit, visit, visit, visit, visit, visitMethods inherited from interface de.monticore.visitor.IVisitor
endVisit, endVisit, endVisit, endVisit, visit, visit, visit, visit
-
Field Details
-
subExpressions
Collects the name parts of the expression that the visitor is applied to.
-
-
Constructor Details
-
SubExprNameExtractionVisitor
-
-
Method Details
-
getSubExpressions
- See Also:
-
visit
Default implementation that marks an expression as *not* being a name part. This marking will be ignored if the expression indeed represents a valid name. UseSubExprNameExtractionResult.putNameAtStart(ASTExpression, String)onsubExpressionsin the visit implementations of the expressions representing names to overwrite this "invalidity" marking.- Specified by:
visitin interfaceExpressionsBasisVisitor2
-
visit
- Specified by:
visitin interfaceCommonExpressionsVisitor2
-
visit
- Specified by:
visitin interfaceExpressionsBasisVisitor2
-