9.3.38 AssociationClassCallExpCS
该产生式规则代表了一个到关联类的导航。
[A] AssociationClassCallExpCS ::= OclExpressionCS ‘.’ simpleNameCS (‘[‘ argumentsCS ‘]’)? isMarkedPreCS?
[B] AssociationClassCallExpCS ::= simpleNameCS (‘[‘ argumentsCS ‘]’)? isMarkedPreCS?
抽象语法映射
AssociationClassCallExpCS.ast : AssociationClassCallExp
合成的属性
[A] AssociationClassCallExpCS.ast.referredAssociationClass =
OclExpressionCS.ast.type.lookupAssociationClass(simpleNameCS.ast)
AssociationClassCallExpCS.ast.source = if isMarkedPreCS->isEmpty()
then OclExpressionCS.ast
else OclExpressionCS.ast.isPre = true
endif
[A] AssociationClassCallExpCS.ast.qualifiers = argumentsCS.ast
[B] AssociationClassCallExpCS.ast.referredAssociationClass =
env.lookupImplicitAssociationClass(simpleNameCS.ast)
AssociationClassCallExpCS.ast.source =
if isMarkedPreCS->isEmpty()
then env.findImplicitSourceForAssociationClass(simpleNameCS.ast)
else env.findImplicitSourceForAssociationClass(simpleNameCS.ast).isPre = true
endif
[B] AssociationClassCallExpCS.ast.qualifiers = argumentsCS.ast
继承的属性
[A] OclExpressionCS.env = AssociationClassCallExpCS.env
[A, B] argumentsCS.env = AssociationClassCallExpCS.env
歧义消除规则
[1] ‘simpleName’是source类型的关联类的名称。
not AssociationClassCallExpCS.ast.referredAssociationClass.oclIsUndefined()