formal_language_theory / lectures / unit_11
.pdf
|
(y, $, ) |
|
|
|
|
Если S lm x , то (xy, T0$, ) |
|
|
I. Докажем сначала, |
что если S |
|
|
||
|
|
lm |
x — закрытая, а — открытая часть |
сентенциальной формы x , то для цепочки y *, такой, что
x , где данной любой
FIRST |
G |
(y) FIRST |
G |
( ), |
|
|
|||
k |
k |
|
анализатор совершает переход
0 |
(y, $, ), |
где |
h( ) |
(xy,T $, ) |
|
||
Попросту |
говоря, если в |
|
.
заменить
LL(k)-таблицы на нетерминалы, с которыми они ассоциированы, то получится .
151
|
|
x , то (xy, T0$, ) |
(y, $, ) |
Если S |
|
||
lm |
Индукция по l = .
База. Пусть l = 1, т. е. = i, где i — номер некоторого правила грамматики.
(i ) |
|
|
|
|
Пусть S x и y *, такая, что |
||||
lm |
|
|
|
|
FIRST |
G |
(y) FIRST |
G |
( ). |
|
|
|||
k |
k |
|
На единственном шаге этого вывода применяется правило вида S x , имеющее номер i. Согласно п. 3.1 алгоритма 2.3
|
M (T |
, u) |
|
|
0 |
|
|
для всех |
|
|
G |
|
k |
||
|
u FIRST |
|
Напомним, что T0
(x , i)
(x ) |
{ }. |
k |
|
= TS,{ } .
152
Если S
lm
x , то (xy, T0$, ) |
(y, $, ) |
Посмотрим, как будет действовать LL(k)- анализатор, начиная с конфигурации
(xy, T0$, ).
Очевидно, что аванцепочка
u FIRST |
G |
(xy) FIRST |
G |
(x ) |
||||
|
|
|
||||||
|
k |
|
|
|
k |
|
||
FIRST |
G |
(x ) |
|
{ } |
|
|
||
|
|
k |
|
|
||||
k |
|
|
|
|
|
и, следовательно, |
M (T |
, u) (x , |
||
|
0 |
|
||
Поэтому |
(xy,T $, |
(xy, x $,i) |
||
0 |
|
|
|
|
причём |
последний |
|
переход |
посредством pop-движений. База
i).
( y, $,i),
происходит доказана.
153
Если S
lm
x , то (xy, T0$, ) |
(y, $, ) |
Индукционная гипотеза. Предположим,
что утверждение выполняется для всех l n
(n 1).
Индукционный переход. Докажем утверж-
дение для l = n + 1.
Пусть имеется |
левосторонний вывод |
длиной n + 1: |
|
' |
(i ) |
S x′ ′ = x′A x′ = x . |
|
lm |
lm |
Здесь = ′i, ′ = |
A , = z , где z VT*, |
x = x′z, A VN, , V *. На последнем шаге вывода применялось i-е правило A —
из множества P.
154
Если S
lm
x , то (xy, T0$, ) (y, $, )
M
Согласно п. 3.1 алгоритма
(TA, L ,u) ( ,i) |
для всех |
L |
|||||
u FIRST |
G |
( |
|
L, |
где |
||
|
|
|
|
|
|
||
k |
|
|
k |
|
|
2.3
FIRST |
G |
( |
|
|
|
k |
|
(I.1)
Посмотрим, как будет действовать анализатор из своей начальной конфигурации
(xy, T0$, ) = (x′zy, T0$, ) = (x′y′, T0$, ),
где y′ = zy.
'
Применим к имеющемуся выводу S x′ ′ индукционную гипотезу с цепочкой y′lm= zy, поскольку
155
Если S
lm
x , то (xy, T0$, )
(y, $, )
G |
|
|
|
|
|
G |
|
|
|
|
|
|
|
|
G |
(z ) |
|||
FIRSTk ( y ) FIRSTk |
(zy) FIRSTk |
||||||||||||||||||
G |
|
|
|
|
|
G |
|
|
|
|
|
|
|
G |
|
|
|||
FIRSTk |
|
|
( ) FIRSTk |
( A ) |
FIRSTk |
|
( ). |
||||||||||||
Как следствие получаем |
|
|
|
|
|
|
|
|
|||||||||||
(xy, T0$, ) = (x′y′, T0$, ) |
|
|
|
|
|
|
|||||||||||||
(y′, |
|
|
|
|
|
|
|
$, ′). |
|
|
|
(I.2) |
|||||||
|
|
|
|
|
$, ′) = (zy, TA, L |
|
|
|
|
|
|||||||||
Вычислим аванцепочку |
|
|
|
|
|
|
|
|
|||||||||||
u FIRST |
G |
(zy) FIRST |
G |
(z ) |
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
||||||||||||
FIRST |
k |
( ) FIRST |
k |
( ) |
|
FIRST |
|
|
( ) |
||||||||||
G |
G |
|
G |
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
k |
|
|
|
k |
|
|
|
|
|
k |
|
k |
|
|
FIRST |
G |
( ) |
|
L, |
|
k |
|||
k |
|
|
а для таких аванцепочек,
как показывает (I.1), M (TA,L , u) ( , i).
156
Если S
lm
x , то (xy, T0$, ) (y, $, )
Поэтому следующее движение типа 1 и завершающие pop-движения продолжают процесс (I.2) следующим образом:
(zy, TA, L $, ′) |
(zy, $, ′i) = |
= (zy, z $, ′i) |
(y, $, ). |
Утверждение I доказано.
157
Если (xy, T0$, ) (y, $, ) , то S
lm
x
II. Докажем теперь, что если LL(k)-анализатор
совершает переход вида (xy, T0$, ) |
(y, $, ) |
||||||||
для любой цепочки y *, такой, что |
|
||||||||
|
FIRST |
G |
( y) FIRST |
G |
( ), |
|
|||
|
|
|
|
||||||
|
|
k |
|
|
k |
|
|
||
|
h( ) |
|
|
|
|
|
|
|
|
где |
то S |
x , |
|
|
|
|
|||
|
|
|
|
|
|||||
|
|
|
|
|
lm |
— открытая часть |
|||
где |
x — закрытая, а |
данной сентенциальной формы.
158
Если (xy, T0$, ) |
(y, $, ) , то S |
lm
x
Индукция по l = .
База. Пусть l = 1, т. е. = i, и
(xy, T0$, ) |
(y, $, i). |
Анализатор пишет на выходную ленту номер правила только, если на вершине магазина LL(k)-таблица. Следовательно, в рассматриваемой исходной конфигурации это
— первое движение, и только оно пишет номер i на выход. Поэтому фактически имеем
(xy, T0$, ) (xy,
причём все остальные движения.
$, i) |
(y, |
|
$, i), |
|
движения — это pop-
159
Если (xy, T0$, ) |
(y, $, ) , то S |
lm
x
Очевидно, что завершающая конфигурация достижима только посредством одних только pop-движений, если = x .
Первое движение обеспечивалось элементом таблицы M(T0 , u) = ( , i), где
u FIRST |
G |
(xy , |
а это подразумевает суще- |
|
|||
k |
|
ствование правила S P, в котором= x , под номером i.
Тогда S
(i ) lm
x , и база доказана.
160