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

Разработка дмп-процессора

Начальная конфигурация L-атрибутного ДМП-процессора следующая:

P

в магазине находится маркер дна и начальный символ грамматики P

В случае замены нетерминала X в верхушке магазина в соответствии с управляющей таблицей M(X, ) = (, y) L-атрибутный ДМП-процессор вталкивает в магазин цепочку символов  из правой части распознаваемого правила и выдает цепочку операционных символов y. При этом вычисляются атрибуты операционных символов, не вталкиваемых в магазин, и заполняются поля атрибутов магазинных символов и символов цепочки , вталкиваемых в магазин.

Примечание:

В случае, когда верхний символ магазина X – операционный символ, то операция выдача ВЫДАЧА(Х) ДМП-процессора расширяется следующим образом:

1)

Значения унаследованных атрибутов извлекаются из соответствующих полей верхнего

магазинного символа и используется затем при выдаче символа в выходную цепочку.

2)

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

Взаимодействие дмп-процессоров

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

Вызывающий ДМП-процессор.

В основе этого процессора лежит АТГ, в которой основной символ грамматики – специальный терминальный символ. Когда этот символ находится наверху магазина, данный процессор должен выполнить переход к вызываемому процессору

Вызываемый ДМП-процессор.

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

Алгоритм работы дмп-процессора

Описание алгоритма:

1) Затолнуть в стек символ “дно стека”

2) Затолнуть в стек символ начальный символ основной грамматики P(без атрибутов)

3) while TRUE do

4) | распознать входной символ (i)

5) | распознать символ стека (j)

6) | if (j = 0) then {операционный символ}

7) | | вызов соответствующей операционному символу функции

8) | | передать данные по ссылкам вниз

9) | | удалить символ из стека

10) | else

11) | case команда(i, j) of

12) | “Замена”:

13) | произвести замену по правилу(код команды(i, j))

14) | “Выброс”:

15) | | посмотреть на тип верхнего символа стека и присвоить 16) | | атрибутам непосредственные значения

17) | | протолкнуть данные по ссылкам вниз

18) | | удалить из стека

19) | “Ошибка”:

20) | выйти с ошибкой(код ошибки - код команды(i,j))

21) | “Вызов”:

22) | | поместить “дно стека” после первого элемента в

23) | | зависимости от кода команды(i, j)

24) | | вызвать функцию, соответствующую ДМП-процессору

25) | “Возврат”:

26) | | удалить верхний символ “дно стека”

27) | | выйти из функции ДМП-процессора

28) end