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

Нотация

Грамматика

В грамматических фрагментах Лексера и Синтаксиса используются следующие обозначения:

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

Последовательности имеют более высокий приоритет, чем альтернатива |.

Продукции таблицы строк

Некоторые правила в грамматике — в частности, унарные операторы, бинарные операторы и ключевые слова — представлены в упрощённой форме: в виде перечня печатаемых строк. Эти случаи образуют подмножество правил, касающихся Токены, и предполагается, что они являются результатом фазы лексического анализа, которая передаёт данные парсеру, управляемая ДКА, работающим над дизъюнкцией всех таких записей таблицы строк.

Когда такая строка в шрифте monospace встречается внутри грамматики, это неявная ссылка на отдельный элемент такой продукции таблицы строк. Более подробную информацию см. в разделе Токены.

Визуализация грамматики

Под каждым блоком грамматики находится кнопка для переключения отображения синтаксической диаграммы. Квадратный элемент представляет собой нетерминальное правило, а скруглённый прямоугольник — терминал.