9.3.4 simpleNameCS

该产生式规则代表了一个简单名称。没有可应用的特殊规则。simpleNameCS字符串的抽象语法在UML中是未定义的,因此在OCL中也是未定义的,原因在于国际化。

simpleNameCS字符串的具体语法支持以Unicode字母为前缀的标识符(格式[A])。保留字和涉及类似标点符号等的名称可以通过字符串字面量加'_'前缀的方式(格式[B]和[C])。

[A] simpleNameCS ::= NameStartChar NameChar*
[B] simpleNameCS ::= '_' #x27 StringChar* #x27
[C] simpleNameCS[1] ::= simpleNameCS[2] WhiteSpaceChar* #x27 StringChar* #x27

以Unicode字母开头的标识符:

NameStartChar ::= [A-Z] | "_" | "$" | [a-z]
                | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF]
                | [#x370-#x37D] | [#x37F-#x1FFF]
                | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF]
                | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD]
                | [#x10000-#xEFFFF]

并且可以继续与一个Unicode字母或数字进行组合。

NameChar ::= NameStartChar | [0-9]

StringChar格式在StringLiteralExpCS下定义。

simpleNameCS的实例:

String    i3    αρετη    MAX_VALUE     isLetterOrDigit     _'true'     _'>='     _'\''

抽象语法映射

simpleNameCS.ast : String

合成的属性

[A] simpleNameCS.ast = <CodePoints of NameStartChar NameChar*>
[B] simpleNameCS.ast = <CodePoints of StringChar*>
[C] simpleNameCS[1].ast = simpleNameCS[2] + <CodePoints of StringChar*>

继承的属性

--没有

歧义消除规则

[1] [A] the character, if any, following the last NameChar is not a NameChar.
[2] [A] simpleNameCS.ast不是一个保留字。
[3] [B] '_'和第一个NameChar之间不能有空格。
[4] [C] simpleNameCS[2]是一个simpleNameCS [B] 或 [C].

results matching ""

    No results matching ""