Языки и трансляции. Мартыненко Б.К. - 200 стр.

UptoLike

Составители: 

198
Рис. 3.1.
Глава 3
LR(k)-ГРАММАТИКИ И ТРАНСЛЯИИ
§ 3.1. Синтаксический анализ
типаснизувверх
В предыдущей главе был рассмотрен класс LL(k)-грамматик, наибольший
подкласс КС-грамматик, естественным образом детерминированно анализируемых
в техникесверхувниз”, которая предполагает последовательное построение
сентенциальных форм левостороннего вывода, начиная с начальной формы S,
причём Sначальный нетерминал грамматики, и заканчивая конечной
формойанализируемой терминальной цепочкой. Один шаг этого процесса
состоит в определении того правила, правая часть которого должна
использоваться для замены крайнего левого нетерминала в текущей
сентенциальной форме, чтобы получить следующую сентенциальную форму.
Именно, если wAαтекущая сентенциальная форма, где w закрытая часть,
Aαоткрытая часть и xанализируемая цепочка, то правило определяется
по нетерминалу A, множеству допустимых локальных правых контекстов
()
FIRST
G
k
L
α
=
и аванцепочке
(),
FIRST
G
k
y
u
причём
x = wy. Адекватный тип
анализатора k-предсказывающий алгоритм анализа, выполняя эти шаги,
воспроизводит открытые части сентенциальных форм в своём магазине.
В альтернативной терминологии такого рода анализатор выстраивает
дерево вывода анализируемой цепочки, начиная с корня и на каждом шаге при-
страивая очередное поддерево к крайнему левому нетерминальному листу
строящегося дерева (рис. 3.1).
В противоположность этому подходу техника анализаснизувверх
основана на воспроизведении сентенциальных форм правостороннего вывода,
начиная с последнейанализируемой цепочки и заканчивая первой
начальным нетерминалом грамматики. Именно, пусть
12
() () () ()
0
1
rm rm rm rm
... ...
i
n
pppp
n
Sx α ⇒α =
правосторонний вывод терминальной
цепочки x в некоторой КС-грамматике.
Индекс p
i
(i = 1, 2,, n) над стрелкой
означает, что на данном шаге нетерминал текущей сентенциальной формы α
i –1
w
α
z
β
S
A
B
A zB
β