Notation - The Rust Reference (original) (raw)
The Rust Reference
Notation
Grammar
The following notations are used by the Lexer and Syntax grammar snippets:
Notation | Examples | Meaning | |
---|---|---|---|
CAPITAL | KW_IF, INTEGER_LITERAL | A token produced by the lexer | |
ItalicCamelCase | LetStatement, Item | A syntactical production | |
string | x, while, * | The exact character(s) | |
\x | \n, \r, \t, \0 | The character represented by this escape | |
x? | pub? | An optional item | |
x* | OuterAttribute* | 0 or more of x | |
x+ | MacroMatch+ | 1 or more of x | |
xa..b | HEX_DIGIT1..6 | a to b repetitions of x | |
| | u8 | u16, Block | Item | Either one or another |
[ ] | [b B] | Any of the characters listed | |
[ - ] | [a-z] | Any of the characters in the range | |
~[ ] | ~[b B] | Any characters, except those listed | |
~string | ~\n, ~*/ | Any characters, except this sequence | |
( ) | (, Parameter)? | Groups items |
String table productions
Some rules in the grammar — notably unary operators, binary operators, and keywords — are given in a simplified form: as a listing of printable strings. These cases form a subset of the rules regarding thetoken rule, and are assumed to be the result of a lexical-analysis phase feeding the parser, driven by a DFA, operating over the disjunction of all such string table entries.
When such a string in monospace
font occurs inside the grammar, it is an implicit reference to a single member of such a string table production. See tokens for more information.