X# 中的标识符出现在语言的许多地方。它们由一个字符和一个或多个字符、数字或位数组成。标识符的 lexer 定义如下。正如你所看到的,我们也允许使用 “特殊字符” 和 “unicode 字符”,但一般不建议使用。
Vulcan 和 X# 中引入的新关键字(见关键字列表)也可用作标识符。
当必须使用与关键字具有相同值的标识符时,可以在标识符前加上双 @@ 符号,如下例所示。
不建议这样做。但如果外部 DLL 中的代码的属性或方法名称与 X# 中的关键字相同,这种情况也有可能发生。在这种情况下,使用 @@ 前缀也是可行的。
LOCAL @@Class as STRING
LOCAL @@Local as LOGIC
ID : IDStartChar IDChar*
;
fragment IDStartChar: 'A'..'Z' | 'a'..'z'
| '_'
| '\u00C0'..'\u00D6'
| '\u00D8'..'\u00F6'
| '\u00F8'..'\u02FF'
| '\u0370'..'\u037D'
| '\u037F'..'\u1FFF'
| '\u200C'..'\u200D'
;
fragment IDChar : IDStartChar
| '0'..'9'
| '\u00B7'
| '\u0300'..'\u036F'
| '\u203F'..'\u2040'
;