2.1. НОТАЦИЯ ДЛЯ ЗАПИСИ СИНТАКСИСА
Для описания синтаксиса используется расширенная форма Бекуса-Наура (РБНФ).
Синтаксические понятия (нетерминалы) обозначаются словами, выражающими их интуитивный смысл. Цепочки терминальных символов заключаются в двойные кавычки либо апострофы, с тем, чтобы их можно было отличить от нетерминалов.
Если конструкция A представляет собой конкатенацию конструкций B и C, т.е. состоит из конструкции B и следующей вслед за ней конструкции C, мы будем называть B и C синтаксическими множителями и описывать A следующей синтаксической формулой:A = B C.
Если конструкция A является либо конструкцией B, либо конструкцией C, мы будем называть B и C синтаксическими слагаемыми и описывать A следующей синтаксической формулой:A = B | C.
Для группировки синтаксических слагаемых и множителей можно использовать круглые скобки. Если конструкция A представляет собой либо конструкцию B, либо является пустой цепочкой, это выражается в видеA = [B].
Если же A представляет собой произвольную (может быть, пустую) последовательность из конструкций B, это выражается в видеA = {B}.
Приведем несколько примеров того, как множества предложений описываются формулами в РБНФ.(A|B)(C|D) A C, A D, B C, B D
A[B]C A B C, A C
A {B A} A, A B A, A B A B A, A B A B A B A, ...
{A|B} C C, A C, B C, A A C, A B C, B B C, B A C, ...
Чтобы отличать описания синтаксиса на РБНФ от окружающего их текста на русском языке, мы будем помечать все строчки, в которых находится текст на РБНФ, литерой $ в первой позиции.Поскольку и сама РБНФ представляет собой некоторый язык, ее синтаксис также может быть описан с помощью РБНФ следующим образом:
$ Синтаксис = { СинтФормула }.
$ СинтФормула = Идентификатор "=" СинтВыражение ".".
$ СинтВыражение = СинтСлагаемое { "|" СинтСлагаемое }.
$ СинтСлагаемое = СинтМножитель { СинтМножитель }.
$ СинтМножитель = Идентификатор | Цепочка |
$ "(" СинтВыражение ")" | "[" СинтВыражение "]" |
$ "{" СинтВыражение "}".