Нотация
Грамматика
В грамматических фрагментах Лексера и Синтаксиса используются следующие обозначения:
| Обозначение | Примеры | Значение |
|---|---|---|
| ЗАГЛАВНЫЕ | KW_IF, INTEGER_LITERAL | Токен, созданный лексером |
| ItalicCamelCase | LetStatement, Item | Синтаксическая конструкция |
строка | x, while, * | Точный символ(ы) |
| x? | pub? | Необязательный элемент |
| x* | OuterAttribute* | 0 или более повторений x |
| x+ | MacroMatch+ | 1 или более повторений x |
| xa..b | HEX_DIGIT1..6 | от a до b повторений x |
| Правило1 Правило2 | fn Name Parameters | Последовательность правил по порядку |
| | | u8 | u16, Block | Item | Либо одно, либо другое |
| [ ] | [b B] | Любой из перечисленных символов |
| [ - ] | [a-z] | Любой из символов в диапазоне |
| ~[ ] | ~[b B] | Любые символы, кроме перечисленных |
~строка | ~\n, ~*/ | Любые символы, кроме этой последовательности |
| ( ) | (, Parameter)? | Группирует элементы |
| U+xxxx | U+0060 | Одиночный символ Юникода |
| <текст> | <любой ASCII символ кроме CR> | Текстовое описание на английском того, что должно быть сопоставлено |
| Правило суффикс | IDENTIFIER_OR_KEYWORD except crate | Модификация предыдущего правила |
| // Комментарий. | // Однострочный комментарий. | Комментарий до конца строки. |
Последовательности имеют более высокий приоритет, чем альтернатива |.
Продукции таблицы строк
Некоторые правила в грамматике — в частности, унарные операторы, бинарные операторы и ключевые слова — представлены в упрощённой форме: в виде перечня печатаемых строк. Эти случаи образуют подмножество правил, касающихся Токены, и предполагается, что они являются результатом фазы лексического анализа, которая передаёт данные парсеру, управляемая ДКА, работающим над дизъюнкцией всех таких записей таблицы строк.
Когда такая строка в шрифте monospace встречается внутри грамматики, это неявная ссылка на отдельный элемент такой продукции таблицы строк. Более подробную информацию см. в разделе Токены.
Визуализация грамматики
Под каждым блоком грамматики находится кнопка для переключения отображения синтаксической диаграммы. Квадратный элемент представляет собой нетерминальное правило, а скруглённый прямоугольник — терминал.