Notation - The Rust Reference (original) (raw)
Keyboard shortcuts
Press ← or → to navigate between chapters
Press S or / to search in the book
Press ? to show this help
Press Esc to hide this help
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? | 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 | |
| Rule1 Rule2 | fn Name Parameters | Sequence of rules in order | |
| | | 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 | |
| U+xxxx | U+0060 | A single unicode character | |
| An English description of what should be matched | |||
| Rule suffix | IDENTIFIER_OR_KEYWORD except crate | A modification to the previous rule | |
| // Comment. | // Single line comment. | A comment extending to the end of the line. |
Sequences have a higher precedence than | alternation.
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.
Grammar visualizations
Below each grammar block is a button to toggle the display of a syntax diagram. A square element is a non-terminal rule, and a rounded rectangle is a terminal.