- •Теория языков программирования и методы трасляции
- •1. Цель работы
- •2. Основные понятия и термины
- •3. Описание и ввод грамматики
- •Проверка и трансляция набранной грамматики
- •Непроизводящие и недостижимые символы
- •Проверка синтаксиса грамматики
- •Трансляция грамматики и запуск g&a
- •Разбор цепочек по созданной грамматике
- •Подготовка к лабораторной работе
- •Порядок выполнения работы
- •Содержание отчета
- •Защита лабораторной работы
- •Контрольные вопросы
Проверка и трансляция набранной грамматики
Непроизводящие и недостижимые символы
По завершении трансляции осуществляется проверка грамматики на наличие непроизводящих и недостижимых символов.
Непроизводящими символами называются нетерминальные символы, из которых нельзя вывести ни одной терминальной цепочки. Такие символы могут появиться в грамматике, если в правой части хотя бы одного её правила имеется нетерминал, не встречающийся в левой части других правил, или, если в правилах отсутствует альтернатива рекурсивному правилу, которая позволяла бы выйти из рекурсии.
Недостижимыми символами называются те нетерминальные символы, которые не могут встретиться ни в одной цепочке, выводимой из начального символа. Недостижимые символы появляются, если в грамматике есть нетерминальные символы, не встречающиеся в правых частях ни одного из правил (за исключением начального символа грамматики).
Наиболее частая причина появления таких символов – ошибки в написании имени символа или пропуск какого-либо правила.
Проверка синтаксиса грамматики
После того как файл с грамматикой создан и сохранен на диске, можно проверить его на соответствие правилам записи БНФ. Для проверки синтаксиса и трансляции в редакторе есть две кнопки на панели инструментов (рис.2).
Кнопки на панели для работы с грамматикой
Кнопка проверить синтаксис позволяет проанализировать набранную грамматику и обнаружить строки, не соответствующие правилам формального описания. Вся отладочная информация выводится в окно статуса, находящееся в нижней части редактора (рис.3).
Окно статуса при успешной проверке
На рис. 3 показан случай, когда набранная вами грамматика соответствует всем правилам БНФ и может быть откомпилирована и использована в дальнейшем для разбора цепочек. Если же цепочка не соответствует правилам, то в этом окошке можно посмотреть информацию об ошибке. Так, если в грамматику ввести ошибочное правило (например, использовать специальные символы)
pro&gram ::= part_prog;
то можно увидеть сообщение об ошибке, показанное на рис.4.
Окно статуса с ошибкой
При этом будет указана строка в файле грамматики и символ, который вызвал ошибку. В указанном примере ошибочным является правило, набранное в первой строке, четвертом символе.
Помимо проверки синтаксиса, происходит также проверка правил на наличие непроизводящих символов. Если будет найден хотя бы один такой символ, то в окне статуса появится соответствующее сообщение.
Трансляция грамматики и запуск g&a
Если введенная грамматика не содержит ошибок (при проверке синтаксиса вы видите окно статуса, похожее на то, что изображено на рис. 4), то можно компилировать и запускать саму программу G&A. Для этого необходимо, установив указтель мыши на кнопке запуска на панели инструментов (кнопка в виде зеленого треугольника рис. 3), нажать левую клавишу мыши.
После этого должно открыться окно программы, в котором можно вводить цепочки для разбора по введенной вами грамматике.
G&A также позволяет просматривать словари нетерминальных и терминальных символов. Для этого достаточно воспользоваться кнопкам VN и VT соответственно. Окно программы с открытым словарем нетерминальных символов показано на рис.5.
Словарь нетерминальных символов