Нотация для записи синтаксических конструкций |
Синтаксические конструкции представлены в виде расширенных форм Бэкуса-Науэра (РБНФ). Определение языковой конструкции в РБНФ состоит из терминальных символов, нетерминальных символов и правил продукции.
терминальный символ |
Одиночный символ или строка символов, написание и смысл которых предопределен в данном языке. |
нетерминальный символ |
Нетерминальные символы используются для описания частей допустимой конструкции языка. Нетерминальный символ обозначает правило продукции, определяющее этот символ, или имеет текстовое описание. Нетерминальные символы всегда могут быть расширены в последовательность из одного или более терминальных символов. |
Правило продукции |
Правило продукции описывает валидную конструкцию языка. Оно определяет каким образом нетерминальный символ в левой части продукции расширяется в последовательность терминальных и нетерминальных символов из правой части продукции. Последовательное расширение всех нетерминальных символов в правых частях правил продукций в конечном итоге приводит к допустимой последовательности терминальных символов. |
Нетерминальный символ всегда обозначается одним словом, заключенным в уголки.
Помимо терминальных и нетерминальных символов и правил продукции в РБНФ используется ряд символов, имеющих специальное значение (метасимволы):
(выражение) |
Группирование. Выражение является синтаксических конструкцией. |
A = B | C |
Альтернатива. Конструкция A состоит либо из B, либо из C. |
A = [ B ] |
Условное вхождение. Конструкция A состоит либо из B, либо из пустой цепочки. |
A = B C |
Конкатенация. Конструкция A состоит из следующих друг за другом конструкций B и C включая ноль) |
A = { B } |
Повторение. A может состоять из конкатенации любого числа конструкций B. |
Все остальные слова и символы является частью синтаксической конструкции. Для удобства чтения они выделены в тексте шрифтом. В многострочных синтаксических конструкциях строки продолжения выделяются отступом.
Для повышения наглядности используются следующие соглашения:
слова, входящие в нетерминальный символ, разделяются дефисом (<нетерминальный-символ>) или заглавными буквами (<НетерминальныйСимвол>);
терминальный символ выделяется шрифтом (терминальный символ);
нетерминальный символ выделяется шрифтом (<нетерминальный-символ>);
метасимвол выделяется шрифтом (метасимвол);
в очевидных случаях допускается содержательное определение нетерминального символа в его названии. В приведенном примере продукция <имя-файла-данных-таблицы-если-необходимо-то-с-DOS-путем> считается самоопределенной.
первая строка определения продукции начинается с левого края абзаца. Если определение содержит более одной строки текста, то последующие строки выводятся с отступом. В приведенном примере продукция <имя-файла-данных> состоит из двух строк определения, а продукция <заголовок-таблицы> - из одной строки.
альтернативные варианты в сложных продукциях оформляются в виде последовательности одноименных продукций. В приведенном примере четыре продукции с одинаковым именем <опция> эквивалентны одной продукции <опция1>.
<имя-файла-данных> = <имя-файла-данных-таблицы-если-необходимо-то-с-DOS-путем> <заголовок-таблицы> = <строка> <опция> = noProtect <опция> = header <опция> = jornal <опция> = corpo <опция1> = noProtect | header | jornal | corpo