formal_language_theory / lectures / unit_4
.pdfОб устранении левой рекурсии
В общем случае вся последовательность шагов этого перестроенного участка вывода, в которых участвует Z, имеет вид
|
|
|
... |
|
t j ip ... i2Z |
|
|||||
tA G |
1 |
t j Z G |
1 |
t j ip Z G |
1 |
G |
1 |
G |
1 |
||
t j ip ... i2 i1 . |
|
|
|
|
|
|
|
||||
G |
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
|
Очевидно, что такой же результат может быть
получен |
в грамматике G: |
|
|
|
tA tA i1 tA i2 i1 ... tA ip |
... i2 i1 |
|||
G |
G |
G |
G |
G |
t j ip... i2 i1 .
G
Таким образом, L(G1) = L(G). Что и требовалось доказать.
71
Теорема 4.6 — нормальная форма Грейбах.
Каждый КС-язык может быть порожден КС-грамматикой в нормальной форме Грейбах.
Доказательство. Пусть G = (VN, VT, P, S)
— КС-грамматика в нормальной форме Хомского, порождающая КС-язык L, где
VN = {A1, A2,..., Am}.
72
Нормальная форма Грейбах
Первый этап построения новой грамматики состоит в том, чтобы в её правилах вида Ai Aj , где — цепочка нетерминалов, всегда было j > i.
ПрямойЭтотход шагметода Гауссавыполняетсядля систем линейныхпоследовательноалгебраических уравнений: Приведение матрицы системы к треугольному виду!
для i = 1, 2, ... , m следующим образом.
При i = 1 правило для A1 может иметь вид
A1 a, где a VT,
который не нуждается в преобразованиях, либо оно имеет вид
A1 Aj Ak, где Aj, Ak VN , j ≥ 1.
73
Нормальная форма Грейбах
Если j > 1, то правило уже имеет требуемый вид.
Если j = 1, то оно леворекурсивно, и в соответствии с леммой об устранении левой рекурсии 4.3 может быть заменено правилами вида
A1 , A1 Z1, Z1 Ak, Z1 AkZ1,
где = a, a VT , Z1 новый нетерминал, или = BC, причём B A1.
74
Нормальная форма Грейбах
Предположим, что для i = 1, 2, ..., k (k < m) правила вида Ai Aj были преобразованы так, что j > i.
Покажем, как добиться выполнения этого условия для Ak + 1-порождений.
Если Ak+ 1 Aj есть правило, в котором j < k +1, то мы образуем новые правила, подставляя вместо Aj правую часть каждого Aj-порождения согласно лемме о подстановке 4.2. В результате, если в позиции Aj окажется нетерминал, то его номер будет больше j.
75
Нормальная форма Грейбах
Повторив этот процесс самое большее k раз, получим порождения вида Ak + 1 Ap , p k + 1.
Порождения с p = k + 1 затем преобразуются согласно лемме 4.3 введением новой
переменной Zk + 1.
Повторив описанный процесс для каждого из оставшихся нетерминалов исходной грамматики, мы получим правила только одного из трёх следующих видов:
76
Нормальная форма Грейбах
1.Ak Ap , где Ak, Ap VN , p > k,
(VN {Z1, Z2,..., Zm})+;
2.Ak a , где a VT, Ak VN ,
(VN {Z1, Z2,..., Zm})*;
3.Zk , где (VN {Z1, Z2,..., Zm})+.
Цель второго этапа добиться, чтобы правые части правил вида (1) начинались с терминалов.
Ret 79
77
Нормальная форма Грейбах
Заметим, что первый символ правой части правила для Am по необходимости является терминалом, так как нетерминала с большим номером не существует.
Первый символ правой части правила для Am – 1 может быть терминалом, либо нетерминалом Am. В последнем случае мы можем построить новые правила, заменяя Am правыми частями Am-порождений согласно лемме 4.2 о подстановке. Эти новые правила будут иметь правые части, начинающиеся с терминального символа.
78
Нормальная форма Грейбах
Подобным же образом преобразуем правила для Am – 2, Am – 3, ..., A1. В результате
все правила вида 1 будут преобразованы к |
||
виду 2. |
Обратный ход метода Гаусса |
|
|
|
|
|
для систем линейных алгебраических уравнений ! |
|
|
|
|
Остается преобразовать правила вида 3 |
для новых переменных Z1, Z2,..., Zm, так чтобы правые части этих правил тоже начинались с терминалов.
Эти преобразования составляют третий, последний, этап.
79
Нормальная форма Грейбах
Пусть имеется правило вида Zi Ak . Достаточно ещё раз применить к нему преобразования леммы о подстановке 4.2, заменив Ak правыми частями Ak- порождений, чтобы получить требуемую форму правил, поскольку правые части правил для Ak уже начинаются с терминалов.
На этом построение грамматики в нормальной форме Грейбах, эквивалентной исходной грамматике G, завершается.
80