Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
55
Добавлен:
16.04.2015
Размер:
1.47 Mб
Скачать

Алгоритм построения магазинного процессора

Метод.

Магазинный процессор в своем магазине будет повторять действия LL(k)- анализатора , построенного по входной грамматике схемы T, используя вместо выходной ленты устройство памяти прямого доступа, в котором он строит дерево вывода результата трансляции в выходной грамматике схемы.

291

Алгоритм построения магазинного процессора

1.Первоначально имеет запись (S, pr) на вершине магазина, где pr — указатель на корневой узел nr дерева результата трансляции. Этот же указатель дублируется переменной Root.

Вслучае использования LL(k)-таблиц вместо начального нетерминала S будет использоваться начальная LL(k)-таблица

T0 = TS,{ } .

292

Алгоритм построения магазинного процессора

2. Если имеет терминал входной грамматики на вершине магазина и текущий входной символ (первый символ аванцепочки) — такой же терминал, то планируется pop-движение процессора , аналогичное движению анализатора.

293

Алгоритм построения магазинного процессора

3. Если раскрывает нетерминал A (или замещает LL(k)-таблицу, ассоциированную с A) посредством правила A X1 X2Xm с семантическим элементом y0 B1 y1Bm ym в схеме, и при этом рядом с этим нетерминалом A (или заменяющей его LL(k)- таблицы) на вершине магазина процессора находится указатель на узел n, то планируются следующие действия процессора:

294

Алгоритм построения магазинного процессора

a) создание узлов — прямых потомков для n, помеченных слева направо символами цепочки y0 B1 y1Bm ym;

б) замена на вершине магазина нетерминала A (или соответствующей ему LL(k)-таблицы) и указателя при нём (ней) на цепочку X1X2 Xm (или её образ) с указателями при каждом нетерминале (или заменяющей его LL(k)-таблицы).

295

Алгоритм построения магазинного процессора

Если Xj — нетерминал (или заменяющая его LL(k)-таблица), то указатель при нем (ней) должен указывать на узел, созданный для Bi, при условии, что Xj и Bi связаны в правиле схемы

A X1X2Xj Xm, y0B1 y1Bi yi Bm ym.

296

Алгоритм построения магазинного процессора

4. Планируется, что завершает работу, когда в его магазине только маркер дна магазина, а аванцепочка пуста.

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

297

Алгоритм построения магазинного процессора

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

298

Алгоритм построения магазинного процессора

Теорема 2.12. Алгоритм 2.9 строит правильный магазинный процессор, выдающий в качестве выхода дерево, метки листьев которого, выписанные слева направо, представляют результат трансляции входной цепочки.

Доказательство следует из предыдущих рассуждений.

299

Соседние файлы в папке lectures