Пример 1-предсказывающего алгоритма трансляции
Таблица 2.8 (прод.)
Маг. |
|
А в а н ц е п о ч к и |
|
|
|
|
|
|
|
|
сим. |
a |
+ |
* |
( |
) |
|
|
|
|
|
|
|
|
a |
pop |
|
|
|
|
|
|
|
|
|
|
|
|
+ |
|
pop |
|
|
|
|
|
|
|
|
|
|
|
* |
|
|
pop |
|
|
|
|
|
|
|
|
|
|
( |
|
|
|
pop |
|
|
|
|
|
|
|
|
|
) |
|
|
|
|
pop |
|
|
|
|
|
|
|
|
Пример 1-предсказывающего алгоритма трансляции
Таблица 2.8 (прод.1)
Маг. |
|
|
|
|
А в а н ц е п о ч к и |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
сим. |
a |
|
|
+ |
|
* |
( |
|
) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
a′ |
|
p |
|
|
a |
s |
|
s |
|
|
|
|
|
+′ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
*′ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$ |
|
|
|
|
|
|
|
|
|
|
accept |
|
|
|
|
|
|
|
|
|
|
|
|
*) Пустые клетки соответствуют значениям error.
Пример 1-предсказывающего алгоритма трансляции
Посмотрим, как будет действовать построенный нами 1-предсказывающий алгоритм трансляции на входной цепочке (a + a).
1.((a + a), E$, )
2.((a + a ), TE’$, )
3.((a + a ), FT’E’$, )
4.((a + a ), (E) T ’E’$, )
5.(a + a ), E) T’E’$, )
Пример 1-предсказывающего алгоритма трансляции
16.( ), a’T’+’E’) T’E’$, a)
17.( ), T’+’E’) T’E’$, a a )
18.( ), +’E’) T’E’$, a a )
19.( ), E’) T’E’$, a a +)
20.( ), )T’E’$, a a +)
21.( , T’E’$, a a +)
22.( , E’$, a a +)
23.( , $, a a +) ― accept.
Итак, ((a + a)) = a a +.
Не трудно проверить, что
(E, E) T* ((a + a), a a +).
265
(T)= ( )
Теорема 2.10. Пусть T = (N, , , R, S) —
простая семантически однозначная схема синтаксически управляемой трансляции с входной грамматикой Gi класса LL(k), и
= ( , {$}, , M, T0, $)
— k-предсказывающий алгоритм трансляции, построенный посредством алгоритма 2.8, применённого к данной схеме трансляции T.
Тогда (T) = ().
Ret 273
(T)= ( )
Доказательство. Справедливость данного утверждения следует из того факта, что LL(k)-анализатор, построенный по входной грамматике данной схемы, является правильным.
(T)= ( )
Модификация, превращающая LL(k)- анализатор в LL(k)-транслятор, фактически состоит в том, что когда анализатор, моделируя шаг левостороннего вывода, замещает некоторую LL(k)-таблицу TA, L на вершине магазина образом правой части
правила вида x0TA1, L1x1 TA2, L2…TAm, Lm xm, транслятор “подмешивает” к этой
магазинной цепочке образы выходных символов из семантической цепочки соответствующего правила схемы.
(T)= ( )
Таким образом, что полученная смесь
x0 y0’TA1, L1x1 y1’TA2,L2…TAm, Lm xm ym’ в магазине обеспечивает точное воспроизведение
движений анализатора и синхронизированную с ними генерацию соответствующей цепочки на выходной ленте.
(T)= ( )
Действительно, выполнив pop-движения и продвинувшись по фрагменту xi входной цепочки, который является также и фрагментом правила входной грамматики A x0 A1x1A2 ... Am xm, транслятор тут же выдает на выход соответствующий фрагмент yi выходной цепочки, который также является и фрагментом семантической цепочки соответствующего правила схемы
A x0 A1x1A2 … Am xm, y0 A1 y1A2 … Am ym.
Что и требовалось доказать.