Tema12asdasdasd

Preview:

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

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

символы.