Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
57
Добавлен:
16.04.2015
Размер:
912.3 Кб
Скачать

Об устранении левой рекурсии

В общем случае вся последовательность шагов этого перестроенного участка вывода, в которых участвует 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

Соседние файлы в папке lectures