2
Тема 11: Грамматики с -продукциями. Удаление -правил Определение : Правила вида А→ ε, АV N называются ε-правилами. Эти правила хотя и удобны в задачах построения грамматик, не являются существенными. Без ε-продукций в грамматике невозможно породить пустое слово как элемент языка. Таким образом будет доказано что если язык L задается КС-грамматикой, то L-{ε} имеет КС-грамматику без ε-продукций. Пример 1: G = (V T , V N , P, S), V T ={a, b}, V N ={S}, P={1.S aSb, 2.S ε}. Пример 2: G = (V T , V N , P, S), V T ={(, )}, V N ={S}, P={1.S (S)S, 2.S ε}. Определение : Определим следующее множество N ε ={AV N / 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=(V T , V N , P, A), V T ={a}, V N ={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 стоп.

Tema12asdasdasd

Embed Size (px)

DESCRIPTION

asdasdasd

Citation preview

Page 1: Tema12asdasdasd

Тема 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}.

Page 2: Tema12asdasdasd

Шаг 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' тогда стоп.

Примечание: Сперва удаляются ε-продукции, а потом бесполезные

символы.