formal_language_theory / lectures / unit_11
.pdfk-Предсказывающие алгоритмы анализа
На рис. 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