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

j(A, B) (A, B)

Кроме того,

w FIRSTkG (w1w2) =

 

 

 

 

 

= FIRSTG (w )

k

FIRSTG

(w )

FIRST

 

k 1

 

 

 

 

 

 

k

2

G

( )

 

FIRST

G

(X

X ) =

 

 

 

 

 

 

 

 

 

 

 

k

( X

 

k

 

 

 

 

k

 

p + 1 m

= FIRSTG

p + 1

X

m

)

 

 

k

 

 

 

 

 

 

 

 

и при этом существует вывод

A

 

X1X2 Xp Xp +1Xm

G

 

*

 

 

 

B X

 

 

G

X

X

 

 

1

2

 

 

p +1

Следовательно,

 

 

 

 

 

 

w ( A, B).

* G

Xm.

241

II. Покажем теперь, что (A, B) j (A, B).

Пусть w (A, B) благодаря тому, что су-

l

 

G

 

ществует вывод A B и w

 

( ).

k

G

FIRST

 

 

(A, B) j(A, B).

 

 

 

Индукцией по длине вывода l покажем, что w j (A, B).

База. Пусть l = 1.

Имеем A B G Тогда существует

и w

 

G

k

 

FIRST

 

правило A

( ).

B P и

согласно шагу 1 алгоритма 2.7

w 0(A, B) j(A, B).

База доказана.

242

(A, B) j(A, B).

Индукционная гипотеза. Предположим, что аналогичное утверждение выполняется для всех l n (n 1).

243

(A, B) j(A, B).

Индукционный переход. Докажем, что тогда аналогичное утверждение верно для l = n + 1.

Пусть w (A, B) благодаря тому, что су-

ществует вывод длиной

n + 1 вида

 

 

 

 

*

*

A G X1X2Xp – 1 Xp Xp+1Xm G

Xp

 

 

G

 

 

B = B ,

 

 

 

*

 

 

G

 

в котором

 

 

X1X2Xp – 1 G* ; Xp + 1Xm

X p VN, = , = ;

* G,

; Xp G* B ;, , V.

244

(A, B) j(A, B).

w

FIRST

G

k

 

( )

=

FIRST

G

k

 

( ) =

=

FIRST

G

k

 

(Xp,

( ) k

B) k

 

k

( )

 

FIRST

G

 

 

 

 

 

 

 

 

 

FIRST G

(X

p + 1

X

)

 

k

 

m

 

j (Xp, B) k

FIRST

G

k

 

(Xp + 1Xm)

j+ 1(A, B) = j (A, B), поскольку

FIRST kG ( ) (Xp, B) j (Xp, B).

Первое вложение следует в соответствии с определением функции (Xp, B) из суще-

ствования вывода Xp * B , а предпослед-

G

нее — ещё из индукционной гипотезы, поскольку этот вывод не длинее n.

245

(A, B) j(A, B).

Здесь использовано существование правила

A X1X2 Xp Xp + 1Xm P,

благодаря которому, учитывая шаг 2 алгоритма 2.7, мы заключили, что

w j+ 1(A, B).

Утверждение II доказано.

Из рассуждений I и II следует равенствоj (A, B) = (A, B) и утверждение теоремы.

246

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

Ранее была доказана теорема 1.3 о том, что

выходную цепочку простой семантически одно-

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

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

схемой.

247

 

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

Использованный в лемме 1.1 приём можно применить для модификации k-предсказывающего алгоритма анализа в k-предсказывающий алгоритм трансляции, реализующий трансляцию, специфи- цируемую простой семантически однозначной sdts с входной грамматикой класса LL(k).

Это устройство отличается от LL(k)-анализатора лишь тем, что имеет ещё один тип движений (pass), состоящий в том, чтобы перенести верхний символ магазина, являющийся гомоморфным образом выходного символа, на выходную ленту, превратив его в оригинал выходного символа (как в лемме 1.1). Детали прояснятся из описания алгоритма 2.8.

248

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

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

Вход: T = (N, , , R, S) — простая семантически однозначная sdts с входной грамматикой Gi класса LL(k).

Выход: k-предсказывающий алгоритм трансляции, реализующий трансляцию (T).

Ret 245 Ret 254 Ret 259 Ret 266

249

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

Метод.

Предполагая, что множество LL(k)-таблиц , необходимых и достаточных для анализа

в грамматике Gi, уже построено, положим

= ( , {$}, , M, X0, $),

где и — такие же, как в схеме T;

= ;

={bb= h (b), b }; = ;

X0 = T0 = TS,{ } — начальный символ магазина; $ — маркер “дна” магазина;

250

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