> **<sup>Lexer:<sup>**
> IDENTIFIER :
-> XID_start XID_continue<sup>\*</sup>
-> | `_` XID_continue<sup>+</sup>
+> [`a`-`z` `A`-`Z`] [`a`-`z` `A`-`Z` `0`-`9` `_`]<sup>\*</sup>
+> | `_` [`a`-`z` `A`-`Z` `0`-`9` `_`]<sup>+</sup>
-An identifier is any nonempty Unicode[^non_ascii_idents] string of the following form:
+An identifier is any nonempty ASCII string of the following form:
Either
- * The first character has property [`XID_start`]
- * The remaining characters have property [`XID_continue`]
+ * The first character is a letter
+ * The remaining characters are alphanumeric or `_`
Or
* The first character is `_`
* The identifier is more than one character, `_` alone is not an identifier
- * The remaining characters have property [`XID_continue`]
-
-that does _not_ occur in the set of [keywords].
-
-> **Note**: [`XID_start`] and [`XID_continue`] as character properties cover the
-> character ranges used to form the more familiar C and Java language-family
-> identifiers.
-
-
-
-[`XID_start`]: http://unicode.org/cldr/utility/list-unicodeset.jsp?a=%5B%3AXID_Start%3A%5D&abb=on&g=&i=
-[`XID_continue`]: http://unicode.org/cldr/utility/list-unicodeset.jsp?a=%5B%3AXID_Continue%3A%5D&abb=on&g=&i=
-[keywords]: keywords.html
-[^non_ascii_idents]: Non-ASCII characters in identifiers are currently feature
- gated. This is expected to improve soon.
+ * The remaining characters are alphanumeric or `_`