Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая работа по ТЯП. / готовый курсовик.doc
Скачиваний:
36
Добавлен:
01.05.2014
Размер:
1.2 Mб
Скачать

4.4.7 Атрибутный перевод дляLl(1)-грамматик

Расширим «1-предсказывающий» алгоритм разбора так, чтобы он мог выполнять атрибутный перевод, определяемый L-атрибутной транслирующей грамматикой, входной грамматикой которой является LL(1)-грамматика.

Моделирование такого алгоритма можно осуществить с помощью атрибутного ДМП-преобразователя с концевым маркером.

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

Полученный алгоритм есть нисходящий детерминированный процессор с магазинной памятью(нисходящий ДМП-процессор).

Нам потребуется конкретный вид такого процессора – L-атрибутный ДМП-процессор, тогда АТГ должна быть L-атрибутной ТГ в форме простого присваивания.

4.4.8 Атрибутный дмп-процессор

Для описания перевода нам понадобилось шесть атрибутных транслирующих грамматик.

Если одна грамматика является подграмматикой для другой, то её начальный символ описан в той другой грамматике как специальный терминальный. Соответственно для осуществления перевода необходимо шесть взаимодействующих ДМП-процессоров. Когда ДМП-процессор встречает специальный терминал, вызывается соответствующий ему ДМП-процессор.

Алгоритм работы ДМП-процессоров представляет собой алгоритм разбора для LL(1) грамматик, дополненный возможностью во время выполнения операции СВЁРТКА также выполнять другие действия, предусмотренные операционными символами атрибутной транслирующей грамматики(действия, предусмотренные различными операционными символами, уже были описаны выше).

Все ДМП-процессоры используют один и тот же магазин. При запуске каждого процессора в магазин заносится символ дна магазина, а при успешном завершении его работы этот символ удаляется.

Магазинный символ с n атрибутами в магазине представляется n+1 полями, верхнее из которых содержит имя символа, а остальные – значения атрибутов. Поля магазинного символа заполняются значениями атрибутов во время вталкивания символа в магазин и не изменяются до момента выталкивания его из магазина.

Операция ПЕРЕНОС расширяется таким образом, что значения атрибутов переносимого входного символа помещаются в соответствующие поля вталкиваемого при переносе магазинного символа.

При выполнении операции СВЁРТКА для правила с номером i, верхние символы магазина представляют собой правую часть i-го правила вывода входной грамматики, а поля поля магазинных символов содержат значения атрибутов соответствующих символов грамматики.

Расширенная операция свёртки использует эти значения для вычисления значений всех атрибутов операционных символов, связанных с правилом вывода транслирующей грамматики, и значений всех атрибутов нетерминала из левой части правила. Значения атрибутов операционных символов используются для выдачи результатов и выполнения других действий, определяемых этими символами (например, проверки соответствия типов).

ДМП-процессор основной грамматики может вызвать ДМП-процессор подграматики типов(если на входной ленте текущая лексема есть базовый тип, либо ключевое слово «вектор») или ДМП-процессор подграмматики операторов, в противном случае.

ДМП-процессор подграмматики переменной никого не вызывает.