formal_language_theory / lectures / unit_11
.pdfLL(k)-таблицы
Множество терминальных цепочек Yi
называется множеством локальных правых контекстов для Bi.
В частности, если m = 0, то
TA, L(u) = (A , ).
3) TA, L(u)
или более
таких, что
=
A-
u
undefined, если существует два правил:
A 1 | 2 | … | n,
|
G |
i |
) |
k |
L |
для |
k |
||||||
FIRST |
|
( |
|
|
1 i n, n 2.
Случай 3 для LL(k)-грамматик не актуален.
131
LL(k)-таблицы
Пусть мы имеем левосторонний вывод в
LL(k)-грамматике: S |
wA |
wx. |
|
|
* |
|
* |
|
lm |
|
lm |
Как было сказано в |
начале этого пара- |
графа, именно таблица TA, L, где L FIRSTkG ( ), сообщает, что следующую за wA сентенциальную форму следует получать при по-
мощи правила A , если для |
|
G |
(x) |
k |
|||
|
u FIRST |
|
окажется, что
TA, L(u) = (A , Y1,Y2,…, Ym ).
132
LL(k)-таблицы
Если = x0 B1x1B2…Bm xm, то следующая за wA сентенциальная форма будет
w = wx0 B1x1B2 … Bm xm ,
и в свое время раскрытием B1 будет руководить LL(k)-таблица TB1,Y1, раскрытием B2 будет руководить LL(k)-таблица TB2,Y2, …, а раскрытием Bm — LL(k)-таблица TBm,Ym.
*)
S wA |
|
w wx, |
|
|
|
|
|
|
|
|
|
|
||||
* |
|
|
|
* |
|
|
|
|
|
|
|
|
|
|
|
|
lm |
|
lm |
lm |
|
|
|
|
|
|
|
|
|
|
|
|
|
u FIRST |
G |
(x) FIRST |
G |
(αγ) FIRST |
G |
(α) |
|
FIRST |
G |
(γ) FIRST |
G |
(α) |
|
L, |
||
|
|
|
|
k |
|
|
k |
|||||||||
k |
|
|
k |
k |
|
k |
k |
|
|
|
|
G |
(γ); |
TA, L(u) = |
|||
|
k |
|
|||||
L FIRST |
|
|
|
|
|
||
Y =FIRSTG |
(x B x |
B |
... |
||||
i |
k |
|
|
i i 1 i 1 |
i 2 |
|
(A , Y1,Y2,…, Ym ), = x0 B1x1B2…Bm xm,
Bm xm ) k L,
133
LL(k)-таблицы
Пример 2.8. Рассмотрим уже не раз обсуждавшуюся несильную LL(2)-грамматику с правилами
S aAaa bAba; A b
и построим все LL(2)-таблицы, необходимые для анализа в этой грамматике.
Начнем с таблицы TS,{ }. Именно она диктует выбор первого правила для раскрытия нетерминала S.
134
Пример 2.8
Используя правило S aAaa, вычисляем
FIRST |
G |
(aAaa) |
|
|
2 |
||
2 |
|
Используя правило S
{ } {ab, aa}.
bAba,
вычисляем
FIRST |
G |
(bAba) |
|
{ } {bb}. |
|
2 |
|||
2 |
|
|
Соответственно определяем LL(2)-таблицу:
T0 = TS,{ } (табл. 2.3).
135
Пример 2.8
|
|
|
|
|
|
|
Таблица 2.3 |
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
LL(2)-табл. |
|
u |
Элементы LL(2)-таблиц |
|
||||
|
|
|
|
|
|
|||
|
Правило |
Мн-во лок. контекстов |
||||||
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
aa |
S aAaa |
|
{aa} |
|
|
T0 = TS,{ } |
|
ab |
S aAaa |
|
{aa} |
|
||
|
|
|
bb |
S bAba |
|
{ba} |
|
|
|
|
|
|
|
|
|
|
|
T1 = TA,{aa} |
|
ba |
A b |
|
|
|
||
|
aa |
A |
|
|
|
|||
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
T2 = TA,{ba} |
|
bb |
A b |
|
|
|
||
|
ba |
A |
|
|
|
|||
|
|
|
|
|
||||
|
|
|
|
|
|
|
||
Ret 146 FIRST2G (aAaa) k {ε} {aa, ab} |
FIRST2G (aa) k {ε} {aa} |
|
||||||
|
G |
(bAba) k {ε} {bb} |
G |
(ba) k {ε} {ba} |
136 |
|||
|
FIRST2 |
FIRST2 |
|
Пример 2.8
Глядя на T0, легко определить, что потребуются ещё таблицы
T1 = TA,{aa} и T2 = TA,{ba}.
Таблица T1 |
получается с учётом того, |
||||
что для правила A b получаем |
|||||
FIRST |
G |
(b) |
|
{aa} {ba}, |
|
|
2 |
||||
2 |
|
|
|
||
а для правила A — |
|||||
FIRSTG |
( ) |
2 |
{aa} {aa}. |
||
2 |
|
|
137
Пример 2.8
Таблица T2 получается с учетом того, что для правила A b имеем
FIRST |
G |
(b) |
|
{ba} {bb}, |
|
|
2 |
||||
2 |
|
|
|
||
а для правила A — |
|||||
FIRST |
G |
( ) |
|
|
{ba} {ba}. |
|
2 |
||||
2 |
|
|
В правых частях правил для нетерминала A нет ни одного нетерминала. Поэтому в двух последних таблицах множества локальных правых контекстов пусты.
138
Пример 2.8
При построении этих LL(2)-таблиц мы придерживались простой дисциплины: начинали с построения начальной таблицы TS,{ }, а затем в каждой из уже построенных LL(2)-таблиц использовали значения элементов, чтобы определить пары индексов других необходимых таблиц — каждое вхождение нетерминала в правую часть правила сочеталось с соответствующим локальным множеством.
139
LL(k)-таблицы
Этот порядок построения LL(k)-таблиц фиксируется в следующем описании алгоритма.
Алгоритм 2.2: построение множества LL(k)- таблиц, необходимых и достаточных для анализа цепочек в данной LL(k)-грамматике.
Вход: G = (VN, VT, P, S) — LL(k)-грамматика.
Выход: — множество LL(k)-таблиц, необходимых и достаточных для анализа цепочек в грамматике G.
140