Upload
raducan-mihai
View
213
Download
0
Embed Size (px)
DESCRIPTION
asdasdasd
Citation preview
Тема 11: Грамматики с -продукциями. Удаление -правил
Определение: Правила вида А→ ε, АVN называются ε-правилами. Эти
правила хотя и удобны в задачах построения грамматик, не являются
существенными. Без ε-продукций в грамматике невозможно породить
пустое слово как элемент языка. Таким образом будет доказано что если
язык L задается КС-грамматикой, то L-{ε} имеет КС-грамматику без ε-
продукций.
Пример 1: G = (VT, VN, P, S), VT={a, b}, VN={S}, P={1.S aSb, 2.S ε}.
Пример 2: G = (VT, VN, P, S), VT={(, )}, VN={S}, P={1.S (S)S, 2.S ε}.
Определение: Определим следующее множество Nε={AVN/ A ε} – все
нетерминальные символы которые порождют нулевое слово через
определенное количество шагов.
Алгоритм создания множества Nε:
Шаг 1: i=1, Nε1 = {A/ A->ε, eps-продукция}
Шаг 2: i=i+1, Nεi = Nε
i-1 {A/ A-> и ( Nεi-1)*}
Шаг 3: Если Nεi Nε
i-1 тогда повторяется шаг 2
Шаг 4: Если Nεi = Nε
i-1 тогда стоп.
Пример: G=(VT, VN, P, A), VT={a}, VN={A, B, C}, P={1.A->BC, 2.B->BC,
3.B->, 4.B->a, 5.C->}. Необходимо создать множество Nε. Используем
алгоритм:
1. Nε1={B,C}
2. Nε2={B,C,A}. Символ А генерирует символы из Nε
1, то добавляем и его.
3. Nε2 Nε
1 повторяем шаг 2 и Nε3={B,C,A}
4. Nε3 = Nε
2 стоп.
Ищем среди правил все символы, которые сгенерировали нулевое
слово. Это означает, что все они, в том числе и A, через определённое
число шагов будет генерировать нулевое слово.
Теорема: Для любой контекстно-свободной грамматики G можно
построить эквивалентную грамматику G' без -продукций.
Другими словами, можно создать другой язык L', не содержащий
нулевое слово.
Алгоритм создания G'={VT,VN', P', S}.
Шаг 1. i=0, P0'={A-> / }, где — последовательность символов,
которые не содеражтся в N.
Шаг 2. i=i+1 Для всех правил вида A→1B2, где BN, а 12
определим множество правил Pi' = Pi-1'{A->12}.
Шаг 3. Если Pi' Pi-1' тогда повторяется шаг 2.
Шаг 4. Если Pi' = Pi-1' тогда стоп.
Примечание: Сперва удаляются ε-продукции, а потом бесполезные
символы.