202
Предположим, что выводы 1 и 2 удовлетворяют условиям а) и б), но условие
в) не выполнено, т.е. что
|γδ|< |αβ|. Покажем, что тогда найдется другая пара
выводов, которые удовлетворяют всем трем условиям.
Поскольку
γδx = αβy, то |γδx| = |αβy|, и, учитывая, что |γδ|< |αβ|, заключа-
ем:
|x | > |y |, т.е. x = zy при некотором z ∈V
T
+
, |z | >0. Заметим, что цепочка z яв-
ляется префиксом цепочки
x, а не ее окончанием, так как именно цепочка y яв-
ляется окончанием всей сентенциальной формы
αβy. Два разных разбиения од-
ной и той же сентенциальной формы
γδx = αβy представлено на рис. 3.2.
Условие
γδx = αβy можно переписать как γδzy = αβy, и потому
γδz = αβ. (3.1)
Второй вывод разметим по образцу первого с учетом равенства
x = zy, а пер-
вый разметим по образцу второго с учетом равенства (3.1):
1
’
) S
’
γ B zy
γ δ zy ,
2
’
) S
’
α A w
αβw = γδ zw .
Эти два вывода обладают следующими особенностями:
а
’)
FIRST
k
([w]) =
FIRST
k
([y]), так как [w]=zy, [y]=zw и
FIRST
k
(w)=
FIRST
k
( y);
б
’) [γ][B][x] ≠ [α][A][y], так как [γ]=α, [B]=A, [x]=w, [α]=γ, [A]=B, [y]=zw, по-
скольку [
γ][B][x]=αAw и [α][A][y]=γBzw, а цепочки αAw и γBzw не могут быть
равными, так как их терминальные окончания
w и zw не равны между собой,
ибо
|z |>0.
Наконец, выполняется условие
в
’) |[γδ]| > |[αβ]|, ибо [γδ] = αβ, [αβ] = γδ и |γδ| < |αβ| по предположению.
Итак, исходная пара правосторонних выводов 1 и 2, которые обменялись ро-
лями, представлены в требуемом виде 1
’
и 2
’
, которые удовлетворяют всем трем
условиям а
’), б
’
) и в
’
). Что и требовалось доказать.
Введем функцию
EFF
G
k
(α), где α∈(V
N
∪V
T
)
*
, необходимую для построения
LR(k)-анализатора. Она будет помогать при определении, является ли ε-це-почка
основой для данной сентенциальной формы, подлежащей свертке.
Определение 3.7. Пусть G = (V
N
, V
T
, P, S) — cfg и α∈(V
N
∪V
T
)
*
. Положим
[
]
[B] [x]
[α
]
[y]
[α]
[A]
[w]
[α]
[
]
[w]
EFF
G
k
(α) =
FIRST
G
k
(α), если α начинается на терминал, а иначе
{w∈V
T
*
k
|∃α
β
wx, где β≠Awx, A∈V
N
, |w|= k или |w|< k и x = ε}.
γδ
y
αβ
Рис. 3.2.