Алгоритм вычисления функции
4. Наконец, полагаем
для всех A VN и
FOLLOWG (S ) (S, S ) { }, |
k |
|
|
так как всегда |
|
|
FOLLOW |
G |
(S ), |
|
k |
|
но может оказаться, что (S, S).
Пример вычисления функции
Пример 2.12. Пусть G = ({S, A}, {a, b}, P, S),
где P = {S aAaa, S bAba, A b, A }.
Построим множества
FOLLOW2G (S) и FOLLOW2G ( A),
используя описанный алгоритм (см. табл. 2.6).
Получаем
FOLLOW2G (S) (S, S) { } { };
FOLLOW2G ( A) (S, A) {aa, ba},
поскольку
Алгоритм вычисления функции
Покажем теперь, что алгоритм 2.7 действительно вычисляет функцию
для любого нетерминала A.
Теорема 2.9. Пусть cfg. Алгоритм 2.7
G = (VN, VT, P, S) —
правильно вычисляет
Доказательство. Фактически достаточно показать, что
( A, B),
при i > j для всех
База. Пусть l = 0. Имеем |
w |
( A, |
|
|
|
Согласно шагу 1 алгоритма 2.7
правило A B P, , V , и |
w |
FIRSTk |
|
|
. |
* |
|
G |
( |
) |
|
|
|
|
|
Это правило позволяет построить вывод
A B , причём любая цепочка |
G |
|
( ) |
w FIRST |
G |
|
|
k |
|
также является элементом множества |
|
|
( A, |
— таково определение этой функции, т. е.
w ( A, B). База доказана.
j(A, B) (A, B)
Индукционная гипотеза. Предположим, что аналогичное утверждение выполняется для всех l n (0 n j).
j(A, B) (A, B)
Индукционный переход. Докажем, что тогда аналогичное утверждение верно для l = n + 1.
Итак, пусть w n 1 ( A, B). Согласно шагу 2 алгоритма 2.7
и тогда согласно индукцион-
ной гипотезе |
w ( A, B), |
|
либо существует правило |
|
A X1 X2 … Xp Xp + 1… Xm P и |
w |
( Xp, B) |
k |
FIRSTG ( Xp 1 ... Xm), |
n |
|
|
k |
где Xp VN, 1 p m.
j(A, B) (A, B)
Иначе говоря, по определению операцииk существуют
w (X , B), w FIRSTG (X ... X ) и
1 n p 2 k p 1 m
|
|
|
w FIRST |
G |
(w w ). |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
k |
1 |
2 |
|
|
|
В соответствии с индукционным предпо- |
ложением из того, что |
w |
( X |
p |
, B), |
следует, |
|
1 |
n |
|
|
что |
w ( X |
p |
, B). |
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
По самому определению функции (A, B) последнее вхождение w1 означает, что суще-
|
|
* |
G |
ствует вывод X |
|
w FIRSTk ( ). |
p |
B и |
|
G |
1 |