Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Грамматика АТ в2.doc
Скачиваний:
11
Добавлен:
16.05.2015
Размер:
946.18 Кб
Скачать
  1. Проверка и трансляция набранной грамматики

    1. Проверка синтаксиса грамматики

После того как файл с грамматикой создан и сохранен на диске, можно проверить его на соответствие правилам записи БНФ. Для проверки синтаксиса и трансляции в редакторе есть две кнопки на панели инструментов (рис.2).

  1. Кнопки на панели для работы с грамматикой

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

  1. Окно статуса при успешной проверке

На рис. 3 показан случай, когда набранная вами грамматика соответствует всем правилам БНФ и может быть откомпилирована и использована в дальнейшем для разбора цепочек. Если же цепочка не соответствует правилам, то в этом окошке можно посмотреть информацию об ошибке. Так, если в грамматику ввести ошибочное правило (например, использовать специальные символы)

Var&Block = VarRule VarBlock;

то можно увидеть сообщение об ошибке, показанное на рис.4.

  1. Окно статуса с ошибкой

При этом будет указана строка в файле грамматики и символ, который вызвал ошибку. В указанном примере ошибочным является правило, набранное в первой строке, четвертом символе.

    1. Трансляция грамматики и запуск sag

Если введенная грамматика не содержит ошибок (при проверке синтаксиса вы видите окно статуса, похожее на то, что изображено на рис. 4), то можно компилировать и запускать саму программу SAG. Для этого необходимо, установив указатель мыши на кнопке запуска на панели инструментов (кнопка в виде зеленого треугольника  рис. 3), нажать левую клавишу мыши.

После этого должно открыться окно программы, в котором можно вводить цепочки для разбора по введенной вами грамматике.

SAG также позволяет просматривать словари нетерминальных и терминальных символов. Для этого достаточно воспользоваться кнопкам VN и VT соответственно. Окно программы с открытым словарем нетерминальных символов показано на рис.5.

  1. Словарь нетерминальных символов

  1. Разбор цепочек по созданной грамматике

Окно SAG (рис. 6) состоит из двух главных полей: левое поле – дерево разбора, правое – разбираемая цепочка.

Цепочку можно вводить в правое окно, используя клавиатуру, или открыть какой-нибудь текстовый файл, содержащий ее. Для загрузки цепочки из файла используется пункт меню Файл Открыть.

При вводе цепочки в правое окно в левом производится ее разбор по созданной грамматике и построение дерева. Если цепочка не соответствует грамматике, в левом окне появляется надпись «цепочка не распознана» (рис.6).

  1. Анализ ошибочной цепочки

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

Рассмотрим пример разбора строки, приведенной в листинге 2 (разбор производится по грамматике, представленной в листинге 1).

Листинг 2. Строка для разбора.

int a,b;

float c,d;

После ввода этой строки в правую панель слева будет построено дерево разбора (рис. 7). На верхнем уровне дерева находится нетерминальный символ VarBlock, соответствующий всей рассматриваемой цепочке. Видно, что для каждого нетерминального символа Var, обозначающего имя переменной в программе-цепочке анализатор создал атрибут type, в котором сохранил тип переменной.

  1. Дерево разбора

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]