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, ...

Чтобы отличать описания синтаксиса на РБНФ от окружающего их текста на русском языке, мы будем помечать все строчки, в которых находится текст на РБНФ, литерой $ в первой позиции.

Поскольку  и сама РБНФ представляет собой некоторый язык, ее синтаксис также может быть описан с помощью РБНФ следующим образом:

$ Синтаксис = { СинтФормула }.

$ СинтФормула = Идентификатор "=" СинтВыражение ".".

$ СинтВыражение = СинтСлагаемое { "|" СинтСлагаемое }.

$ СинтСлагаемое = СинтМножитель { СинтМножитель }.

$ СинтМножитель = Идентификатор | Цепочка |

$ "(" СинтВыражение ")" | "[" СинтВыражение "]" |

$ "{" СинтВыражение "}".