61
11. ПОСТРОЕНИЕ ПРОГРАММЫ
ГРАММАТИЧЕСКОГО РАЗ БО РА ДЛЯ ЗАДАННОГО
СИНТАКСИСА
Программу, которая распознает какой-либо язык, легко построить на
основе его детерминированного синтаксического графа (если таковой
существует). Этот граф фактически представляет собой блок-схему
программы, при ее разработке рекомендуется строго следовать правилам
преобразования, подобным тем, с помощью которых можно предварительно
получить из БНФ графическое представление синтаксиса. Применение
данных правил предполагает наличие
основной программы, содержащей
процедуры, которые соответствуют различным подцелям, а также процедуру
перехода к очередному символу.
Для простоты мы будем считать, что предложение, которое нужно
анализировать, представлено входным файлом input и что терминальные
символы – отдельные значения типа char. Пусть символьная переменная
char ch всегда содержит очередной читаемый символ. Тогда переход к
следующему
символу выражается оператором:
ch = fgetc(input);
Следует отметить, что функция char fgetc(FILE *fp) является
стандартной функцией языка Си для чтения символа из файла и для ее
использования необходимо в начале программы подключить
соответствующий заголовочный файл директивой #include <stdio.h>
Основная программа будет состоять из оператора чтения первого
символа, за которым следует оператор активации основной цели
грамматического разбора.
Отдельные процедуры, соответствующие целям
грамматического разбора или графам, получаются по следующим правилам.
Пусть оператор, полученный с помощью преобразования графа S,
обозначается через T(S).
Правила преобразования графа в программу: