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

LL(k)-таблицы

Метод.

1.

Построить T0 = TS,{ } и

= {T0}.

2.

Если T

, и для u V

*

k

имеет место

 

 

A, L

 

 

 

 

 

 

T

 

 

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

то к множеству таблиц добавить те таблицы из множества {TBi,Yi | i = 1, 2, …, m}, которых ещё нет в .

141

LL(k)-таблицы

3. Так как для любой данной cfg G существует только конечное число таких таблиц (число нетерминалов — конечно, число подмножеств L VT*k тоже конечно), то процесс пополнения множества закончится за конечное время.

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

142

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

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

Вход: G = (VN, VT, P, S) — LL(k)-грамматика.

Выход: — правильный k-предсказыва- ющий алгоритм анализа для G.

Метод.

1.Построим — множество необходимых LL(k)-таблиц для грамматики G.

2.Положим = ( , {$}, , M, T0, $), где= VT, = VT, = {1, 2, …, #P},

T0

= TS,{ }.

Ret 155

 

Ret 148 Ret 169

 

 

143

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

3. Управляющую таблицу M определим на множестве ( {$}) *k так:

3.1. M (TA, L, u) = (x0TB1,Y1x1TBm,Ymxm, i), если TA, L(u) = (A x0 B1x1Bm xm, Y1,…, Ym )

и A x0 B1x1Bm xm является i-м правилом.

3.2.M (a, av) = pop для всех a , v *k – 1.

3.3.M ($, ) = accept.

3.4.M (X, u) = error для всех пар

(X, u) ( {$}) *k, для которых значения элементов остались не определёнными по пп. 3.1–3.3.

Ret 152

Ret 155

144

 

 

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

Пример 2.9. Рассмотрим ещё раз LL(2)- грамматику, обсуждавшуюся в примере 2.3,

справилами

1)S aAaa, 2) S bAba,

3) A b,

4) A .

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

Ret 251

145

Пример 2.9

Таблица 2.4

Маг.

 

 

А в а н ц е п о ч к и

 

 

 

 

 

 

 

 

 

 

сим.

 

aa

 

ab

ba

bb

a

b

 

 

 

 

 

 

 

 

 

 

 

 

T0

aT1aa,1

aT1aa,1

 

bT2ba, 2

 

 

 

T1

 

, 4

 

 

b, 3

 

 

 

 

T2

 

 

 

 

, 4

b, 3

 

 

 

a

 

pop

 

pop

 

 

pop

 

 

 

 

 

 

 

 

 

 

 

 

b

 

 

 

 

pop

pop

 

pop

 

 

 

 

 

 

 

 

 

 

 

$

 

 

 

 

 

 

 

 

accept

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ret 136

 

Ret 253

 

 

 

 

 

146

Пример 2.9

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

(bba, T $, )

(bba, bT ba$, 2) pop

0

2

(ba, T ba$, 2)

(ba, ba$, 24) pop

2

 

(a, a$, 24)

pop ( , $, 24).

В то же время, посредством правил 2 и 4,

 

(2)

 

(4)

 

получаем S

 

bAba

 

bba.

lm

lm

147

Теорема 2.5. Алгоритм 2.3 производит правильный k-предсказывающий алгоритм анализа для любой LL(k)-грамматики.

Доказательство аналогично доказательству предыдущей теоремы 2.4.

Пусть G = (VN, VT, P, S) — LL(k)-грам-

матика и k-предсказывающий алгоритм анализа для грамматики G, построенный посредством алгоритма 2.3.

 

 

 

Требуется доказать, что S

 

x тогда и

lm

только тогда, когда (x, T0$, )

( , $, ).

Ret 167

 

 

148

Если S

lm

x , то (xy, T0$, ) (y, $, )

По индукции докажем вспомогательное утверждение: анализатор в своем магазине воспроизводит последовательность образов открытых частей сентенциальных форм левостороннего вывода входной цепочки, если они выводимы в данной грамматике G, причём если — последовательность номеров правил, участвующих в их выводе, то образуется на выходе анализатора.

149

Если S

lm

x , то (xy, T0$, ) (y, $, )

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

h( X )

a,

A,

 

если X a, a VT , если X TA, L .

Область определения h легко расширить до *, и мы будем в дальнейшем предполагать, что это сделано.

150

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