Characters, letters and digits

There are a few predefined rules that could not easily be written as valid EBNF or are used multiple times and therefor defined here to avoid repeating them. The EBNF rules for the identifiers unicode_* are written within comments as there is no real way to define them otherways.

unicode_any       = // any Unicode code point
unicode_letter    = // any Unicode code point classified as a "Letter"
unicode_digit     = // any Unicode code point classified as a "Digit"

letter            = unicode_letter | "_"
digit_decimal    = { "0" ... "9" }
digit_binary     = { "0" | "1" }
digit_octal      = { "0" ... "7" }
digit_hex        = { "0" ... "9" | "A" ... "F" | "a" ... "f" }