Identifiers
Lexer:
IDENTIFIER_OR_KEYWORD :
XID_start XID_continue*
|_XID_continue+RAW_IDENTIFIER :
r#IDENTIFIER_OR_KEYWORD Exceptcrate,self,super,SelfNON_KEYWORD_IDENTIFIER : IDENTIFIER_OR_KEYWORD Except a strict or reserved keyword
IDENTIFIER :
NON_KEYWORD_IDENTIFIER | RAW_IDENTIFIER
An identifier is any nonempty Unicode string of the following form:
Either
- The first character has property
XID_start. - The remaining characters have property
XID_continue.
Or
- The first character is
_. - The identifier is more than one character.
_alone is not an identifier. - The remaining characters have property
XID_continue.
Note:
XID_startandXID_continueas character properties cover the character ranges used to form the more familiar C and Java language-family identifiers.
A raw identifier is like a normal identifier, but prefixed by r#. (Note that
the r# prefix is not included as part of the actual identifier.)
Unlike a normal identifier, a raw identifier may be any strict or reserved
keyword except the ones listed above for RAW_IDENTIFIER.