Скачиваний:
5
Добавлен:
01.05.2014
Размер:
7.43 Кб
Скачать

part5416 Пред.СтраницаСлед.Страница  Раздел Содержание

 

 

5.4.6. Демонстрация работы АП Работу построенного АТ-преобразователя рассмотрим на примере трансляции цепочки i%22-i%24 при начальном значении атрибута b=28, которое является указателем на первый свободный элемент ТЗ.

Описание работы представим в виде последовательности тактов.

1. В исходном состоянии в стеке находится маркер дна, а на входе - заданная цепочка.

2. После выполнения команды (1) в стек заносится начальный символ грамматики с двумя атрибутами, один из которых имеет начальное значение 28.

3.  Затем выполняется команда (2), которая предписывает построение фрагмента стека, определяемого инструкцией  #2. В результате получаем: 4.  На входе и в вершине магазина находятся терминальные символы, поэтому выполняется команда (6), которая сравнивает терминалы, читает атрибут входного терминала и проверяет значение магазинного терминала. Обнаружив, что значением магазинного терминала является указатель, команда осуществляет запись значения атрибута входного терминала в ячейку стека, определяемую указателем. 5. Знак минуса и нетерминал <R> в вершине магазина определяют выполнение команды (4). Эта команда удаляет нетерминал из вершины стека, производит построение фрагмента стека в соответствии с инструкцией  #4 и сдвигает входную головку на следующую позицию. 6. Преобразователь, анализируя символ, находящийся в вершине, и обнаружив, что это операционный символ, выполняет действия, предписываемые этим символом, которые заключаются в вычислении указателя на следующий свободный элемент таблицы значений. Полученное значение указателя присваивается элементу стека с указателем SP-10, поскольку этот указатель записан в качестве значения атрибута операционного символа. В результате имеем: 7. Обнаружив в вершине стека терминал, преобразователь читает очередной символ на входе и сравнивает его с магазинным терминалом, выполняя команду (6). Убедившись, что символы совпадают, преобразователь читает атрибут входного терминала и проверяет значение атрибута магазинного терминала. Затем он заносит значение атрибута входного нетерминала в ячейку с атрибутом SP-3, удаляет атрибут из стека и сдвигает входную головку. 8. В вершине магазина находится операционный символ, который должен быть передан на выход, поэтому преобразователь читает из магазина этот символ и его атрибуты и записывает их на выходную ленту. 9. Символ в вершине магазина и входной терминал определяют возможность выполнения преобразователем команды (5). В результате выполнения инструкции, соответствующей этой команде, определяется значение синтезируемого атрибута. В ячейке стека, выделенной этому атрибуту, находится указатель, представляющий

собой начало цепочки. Преобразователь заносит полученное значение атрибута во все ячейки стека, входящие в цепочку, и удаляет нетерминал R и его атрибуты из магазина. 10. После удаления нетерминала R и его атрибутов в стеке остаются атрибуты начального символа грамматики, которые могут быть использованы для построения дальнейшей трансляции конструкций, включающих арифметические выражения, например, оператора присваивания. Если же конструкции более высокого уровня не рассматриваются, то преобразователь  просто удаляет все атрибуты из стека, поскольку их значения определены. После  удаления атрибутов из стека в вершине магазина оказывается маркер дна. Маркер дна  и пустой символ  на входе определяют команду преобразователя (13) , которая переводит преобразователь в заключительное состояние s1.

 

Пред.СтраницаСлед.Страница  Раздел Содержание

 

Соседние файлы в папке Формальные языки, грамматики и автоматы