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

Алгоритм построения k-предсказывающего алгоритма трансляции

*

k

* {pop, pass, accept,

 

M: ( {$})

 

error} — управляющая таблица, которая строится по следующим шагам:

1. M (TA, L, u) = x0 y0TA1,Y1x1 y1TAm,Ymxmym,

если

TA, L(u) = (A x0 A1x1Am xm, Y1, …, Ym ),

и

A x0 A1x1 Am xm, y0 A1 y1 Am ym R i правило схемы.

*

k

, а yi= h (yi), i = 0, 1, 2, …, m.

 

Здесь u

 

251

Алгоритм построения k-предсказывающего алгоритма трансляции

2. M (a, u) = pop, если a , u = av, v * k 1 .

3. M (b, u) = pass

для всех b’ ’, u

.

*

k

 

Такой управляющий элемент определяет переход между конфигурациями:

(x, b$, y) (x, $, yb).

4.

M ($, ) = accept.

 

5.

M (X, u) = error

 

 

*

k

 

, для которых

для всех (X, u) ( {$})

элементы M не определены по пп. 1– 4.

252

Пример построения 2-предсказывающего алгоритма трансляции

Пример 2.13.

Пусть T = ({S, A}, {a, b}, {a, b, e, < , >}, R, S) ― sdts, где

R= {(1) S aAaa, aAaa;

(2)S bAba, < A > a;

(3)A b, b;

(4)A , e}.

Входная грамматика этой схемы — не сильная LL(2)-грамматика. В примере 2.9 для неё был построен 2-предсказывающий алгоритм анализа.

253

Пример построения 2-предсказывающего алгоритма трансляции

Применяя алгоритм 2.8 к данной схеме, получаем следующий 2-предсказывающий алгоритм трансляции, реализующий определяемую ею трансляцию:

= ({a, b}, {T0, T1, T2, a, b, a, b, e, < , > , $}, {a, b, e, < , > }, M, T0, $),

где M представляется управляющей табл. 2.7.

254

 

 

 

 

 

 

 

 

Таблица 2.7

 

 

 

 

 

 

 

 

 

 

Маг.

 

 

 

А в а н ц е п о ч к и

 

 

 

 

 

 

 

 

 

 

 

 

cим.

aa

 

ab

 

ba

bb

a

b

 

 

 

 

 

 

 

 

 

T0

aaT1aaaa

aaT1aaaa

 

b <T2 ba>a

 

 

 

T1

e

 

 

 

bb′

 

 

 

 

T2

 

 

 

 

e

bb′

 

 

 

a

pop

 

pop

 

 

 

pop

 

 

 

 

 

 

 

 

 

 

 

 

b

 

 

 

 

pop

pop

 

pop

 

a′

 

 

 

 

 

 

 

 

 

<

p

 

a

s

 

s

 

b′

 

 

 

 

 

 

 

 

 

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

>

 

 

 

 

 

 

 

 

 

$

 

 

 

 

 

 

 

 

accept

 

 

 

 

 

 

 

 

 

 

Ret 145

255

Пример построения 2-предсказывающего алгоритма трансляции

Для иллюстрации работы только что построенного 2-предсказывающего алгоритма трансляции рассмотрим обработку входной цепочки bba:

(bba, T0$, )

(bba, b<T2 b a>a$, )

(ba, < T2 b a>a′$, )

(ba, T2 b a > a′$, <)

(ba, e b a>a′$, <)

(ba, b a>a′$, < e)

(a, a>a′$, < e)

( , > a′$, < e)

 

( , a′$, < e > )

( , $, < e > a).

 

Итак, (bba) = < e >a.

 

 

 

 

 

 

 

*

Нетрудно проверить, что (S, S)

T (bba,<e>a).

256

k-Предсказывающий алгоритм трансляции

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

257

Пример 1-предсказывающего алгоритма трансляции

Пример 2.14.

Пусть T =

({E, E, T, T, F}, {a, +, *, (, )},

 

 

{a, +, *}, R, E) ― sdts, где

 

R = {(1) E TE, TE;

 

(2) E+TE, T+E;

E T E

 

FTE

 

(3) E

 

(E) TE

 

 

, ;

 

 

 

(4) T FT , FT ;

 

 

 

 

 

 

(TE) TE

(5) T

 

 

 

E TE

 

 

*FT , F *T ;

 

(6) T , ;

 

FTE

(7) F (E), E;

 

FT

 

(8) F a, a}.

258

Пример 1-предсказывающего алгоритма трансляции

Очевидно, что T — простая семантически однозначная sdts с входной грамматикой

LL(1).

Используя модификацию алгоритма 2.8 с учётом леммы 1.1, алгоритмов 2.1 и 2.7 получаем следующий 1-предсказывающий алгоритм трансляции:

= ({a, +, *, (, )}, {E, E, T, T, F, a, +, *, (, ), a, +, *, $}, {a, +, *}, M, E, $), где M

представлена в табл. 2.8.

259

Пример 1-предсказывающего алгоритма трансляции

Таблица 2.8

Маг.

 

 

А в а н ц е п о ч к и

 

 

 

 

 

 

 

 

 

 

 

сим.

a

+

 

*

(

 

)

 

 

 

 

 

 

 

 

 

 

E

TE′

 

 

 

TE′

 

 

 

 

 

 

 

 

 

 

 

E′

 

+T+′E′

 

 

 

 

 

 

 

 

 

 

 

 

 

 

T

FT′

 

 

 

FT′

 

 

 

 

 

 

 

 

 

 

 

 

T′

 

 

 

*F*T

 

 

 

 

 

 

 

 

 

 

 

 

 

F

aa′

 

 

 

(E)

 

 

 

 

 

 

 

 

 

 

 

 

(Ср. с анализатором для входной грамматики примера 2.6).

260

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