Identifiers in X# appear on many places in the language. They consist of a character followed by one or more characters, numbers or digits. The lexer definition for identifiers is below. As you can see we also allow 'special characters' and 'unicode characters' , but in general that is not recommended.
New keywords that are introduced in Vulcan and X# (see the keyword table) can also be used as Identifier
When an identifier must be used that has the same value as a keyword, then you can prefix the identifier with a double @@ sign, like in the following example.
This is not recommended. But it can happen that code in an external DLL has properties or method names that are keywords in X#. In that case using the @@ prefix can work too.
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'
;