9.3.41 LetExpCS

该产生式规则代表了一个let表达式。LetExpSubCS非终结符的目的是允许使用简化语法进行直接的let表达式内嵌,即用‘in’关键字。

LetExpCS ::= ‘let’ VariableDeclarationCS LetExpSubCS

抽象语法映射

LetExpCS.ast : LetExp

合成的属性

LetExpCS.ast.variable = VariableDeclarationCS.ast
LetExpCS.ast.in = LetExpSubCS.ast

继承的属性

LetExpSubCS.env = LetExpCS.env.nestedEnvironment().addElement(
                                VariableDeclarationCS.ast.varName,
                                VariableDeclarationCS.ast,
                                false)

歧义消除规则

[1] 变量名在当前范围内必须是唯一的。

LetExpCS.env.lookup (VariableDeclarationCS.ast.varName).oclIsUndefined()

[2] let中的变量声明必须有一个类型和初始值。

not VariableDeclarationCS.ast.type.oclIsUndefined() and
VariableDeclarationCS.ast.initExpression->notEmpty()

results matching ""

    No results matching ""