- •Введение
- •Общие требования к курсовой работе
- •Этапы выполнения курсовой работы
- •2.2.2. Определение синтаксиса лексем
- •2.2.3. Построение диаграммы лексического анализатора
- •2.2.4. Тестирование лексического анализатора
- •2.3. Описание этапа синтаксического анализа
- •2.3.1. Построение кс-грамматики входного языка
- •2.4.8. Построение атрибутного дмп-процессора
- •2.4.9. Тестирование атрибутного дмп-процессора
- •3. Задания на курсовую работу
- •Задание 1
2.4.8. Построение атрибутного дмп-процессора
Реализация перевода при помощи атрибутного ДМП-процессора [1] накладывает определенные ограничения на транслирующую атрибутную грамматику, лежащую в его основе. Нисходящие методы синтаксического анализа требуют построения описания перевода в виде L-атрибутной АТГ, восходящие методы – постфиксной АТГ. Методика построения нисходящих и восходящих ДМП-процессоров и их функционирование рассмотрено в [1]. В дополнение к этому дадим несколько частных рекомендаций, связанных с реализацией перевода при помощи алгоритмов типа «перенос-свертка».
Модификация алгоритма типа «перенос-свертка»
Анализ алгоритма показывает, что перенос символа в магазин выполняется в случае, если наверху магазина находится определенный нетерминал, а очередной входной символ имеет заданное значение. Это обстоятельство позволяет связать с операцией переноса выполнение семантических действий. Рассмотрим такие действия подробнее.
Если значение функции переноса f(A, a) = ПЕРЕНОС, то в грамматике существует правило вида B Aa. Добавив в ДМП-процессор возможность при переносе выполнить подпрограмму, соответствующую операционному символу {act}, можно не преобразовывать правило вида
B Aa{act} к постфиксной форме. Эта возможность может быть реализована путем:
указания в таблице переносов алгоритма нового значения функции (например, ПЕРЕНОС + ДЕЙСТВИЕ) и имени (номера) действия;
передачей в операционный символ соответствующих атрибутов;
Сохранение значений синтезированных атрибутов операционных символов можно реализовать, записав в магазин вспомогательные символы с нужными атрибутами, или приписав атрибуты подходящим терминалам. На рис. 2.5 значение метки, сгенерированной в операционном символе {BF}, запоминается (для передачи в операционный символ {DEFL}) как атрибут терминального символа THEN, переносимого в магазин.
Рекомендуемая форма описания функций свертки приведена на рис. 2.6.
Организация взаимодействия ДМП-процессоров
Если перевод описан n транслирующими атрибутными грамматиками, то он должен быть реализован при помощи n взаимосвязанных ДМП-процессоров. Для организации взаимодействия процессоров рекомендуется модифицировать стандартный алгоритм синтаксического анализа следующим образом.
Вызывающий ДМП-процессор. В основе этого процессора лежит АТГ, в которой основной символ подграмматики – специальный терминальный символ (см. 2.4.3). Когда анализ входной цепочки достигает этого символа (например, при нисходящем анализе этот символ находится наверху магазина), то данный процессор должен выполнить переход к вызываемому процессору (если их несколько, то для реализации перехода необходимо задать имя или номер вызываемого процессора).
Вызываемый ДМП-процессор. Каждый процессор должен работать со своим (логически) магазином. В программной реализации ДМП-процессора это может быть новый объект соответствующего класса или, если используется один физический магазин, то в него вталкивается символ «дно магазина» и анализ начинается так, как если бы магазир был пуст.
Действия |
Читать атрибут третьего сверху символа магазина (THEN) и запомнить его в переменной label.
Выполнить функцию, соответствующую операционному символу {DEFL} с параметром label, строящую на выходе тетраду
DEFL
label
Заменить пять верхних символов магазина нетерминалом OpIf.
Магазин | |||||
До (свертки) |
|
После | |||
|
|
|
|
|
|
1 |
END |
|
Атрибуты |
1 |
OpIf |
2 |
Lop |
|
|
| |
3 |
THEN |
|
lab1 |
|
|
4 |
Exp |
|
R1 |
|
|
5 |
IF |
|
|
|
|
|
... |
|
|
|
|
Свертка по правилу (2)
Рис. 2.6
После завершения анализа верх магазина должен быть приведен к виду, пригодному для продолжения работы вызывающего процессора.