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

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

На рис. 2.1б входная цепочка представлена как wx, причем w обозначает просмотренную, а x — не просмотренную её часть, которая начинается с аванцепочки u и заканчивается цепочкой y. Магазинная цепочка представлена в виде X $, где X обозначает верхний символ магазина, — символы магазина, располагающиеся ниже его вершины, а $ — маркер “дна”. Выходная цепочка представлена как i, где обозначает часть выходной цепочки, образованной перед последним движением алгоритма, а i — последнюю произведённую запись на выходную ленту

71

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

2.3.2. Формальное определение.

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

ритмом анализа называется формальная система = ( , , , M, X0, $), где

входной алфавит,— магазинный алфавит,

$ — маркер “дна” магазина,— выходной алфавит,

X0 начальный символ магазина,

M: ( {$}) *k {( , i), pop, accept, error}

управляющая таблица,

*, i (номер правила грамматики).

72

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

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

Определение 2.9. Под конфигурацией k-

предсказывающего алгоритма анализа будем

подразумевать тройку (x,

,

), где x *

непросмотренная

часть

входной цепочки,

G

(x) *

k

аванцепочка,

причём u FIRSTk

 

*{$} — всё содержимое магазина,* выходная цепочка.

73

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

Начальная конфигурация есть (w, X0$, ),

где w * — вся входная цепочка.

Пусть (x, X , ) — текущая конфигурация, где x * — непросмотренная часть входной цепочки, X { } — верхний символ магазина или пустая цепочка, *{$} — остальная часть магазинной цепочки, *

— выходная цепочка, образованная к этому моменту.

74

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

Определим следующую конфигурацию в зависимости от значения элемента управляющей таблицы M(X, u).

1. Если M(X, u) = ( , i), то

(x, X , ) (x, , i).

2. Если M(X, u) = pop, и в этом случае всегда

X = a, a , x = ax, x*,

то (x, X , ) = (ax, a , ) (x, , ).

75

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

3.Если M (X, u) = accept, что бывает только

по достижении конечной или принимающей конфигурации ( , $, ), то анализатор останавливается, принимая входную цепочку.

4.Если M (X, u) = error, то анализатор сообщает об ошибке на входе и

останавливается, не принимая входной цепочки.

76

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

Как обычно, определяется степень (),

транзитивное замыкание () и рефлексивнотранзитивное замыкание ( ) этого отношения на конфигурациях.

Если (w, X0$, ) ( , $, ), то мы пишем (w) = и называем выходом для входа

w.

Если алгоритм из начальной конфигурации не достигает принимающей конфигурации, то говорят, что значение (w) не определено.

77

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

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

() = {(w, ) (w) = }.

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

(1)

L(G) = {w (w) — определено} и

(2)

 

если (w) = , то S w.

 

lm

78

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

Если k-предсказывающий алгоритм анализа , использующий управляющую таблицу M,

является правильным для cfg G, то говорят,

что M правильная управляющая таблица

для грамматики G.

79

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

Пример 2.4. Построим 1-предсказыва- ющий алгоритм анализа для простой LL(1)- грамматики, приведённой в примере II-2.2.

Пронумеруем её правила: 1) S aBS, 2) S b,

3)B a, 4) B bSB.

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

80

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