C++.Бархатный путь


Язык и грамматика - часть 3


Следующее правило определяет прилагательное: прилагательное ::= ПРОЗРАЧНЫЙ | СИНИЙ (5)

Здесь вертикальная черта между двумя ключевыми словами означает, альтернативу (прилагательным в выражении может быть либо ключевое слово ПРОЗРАЧНЫЙ, либо ключевое слово СИНИЙ). Существует еще, по крайней мере, один способ описания альтернативы. Воспользуемся им при определении существительного. Это правило задаёт множество имён: существительное ::= ШАР (6)

::= КУБ

Правила построения предложений в нашем языке оказались записаны с помощью шести коротких формул. Слова, стоящие справа и слева от знака "заменить" принято называть символами формальной грамматики, а сами формулы - грамматическими правилами.

Заметим, что символы в формулах грамматики не являются словами в обычном смысле этого слова. Символ в формуле является лишь своеобразным иероглифом, по внешнему виду напоминающим слово. При изменении внешнего вида символов суть формул грамматики нисколько бы не изменилась. Мы всего лишь используем возможность кодирования дополнительной информации с помощью внешнего вида символа. В надежде, что это поможет лучше понять происходящее.

Символы, которые встречаются только в левой части правил, называются начальными нетерминальными символами или начальными нетерминалами.

Символы, которые встречаются как в левой, так и в правой части грамматических правил называются нетерминальными символами.

Символы, которые встречаются только в правой части правил, называются терминальными символами.

Воспользуемся этой грамматикой и построим несколько предложений.

Алгоритм порождения операторов-предложений и отдельных выражений с помощью правил формальной грамматики очень прост:

  1. Выбрать начальный нетерминал (оператор) или отдельный нетерминальный символ, найти правило, содержащее этот символ в левой части и заменить его на символ или на последовательность символов из правой части правила.
  2. Процесс замены продолжать до тех пор, пока в предложении будут встречаться нетерминальные символы.

Выбор нетерминального символа обеспечивает порождение выражения, выбор начального нетерминала обеспечивает вывод оператора:




- Начало -  - Назад -  - Вперед -