Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Формальные языки и грамматики. Учебное пособие для студентов факультета компьютерных наук и информационных технологий.pdf
Скачиваний:
0
Добавлен:
09.08.2026
Размер:
457 Кб
Скачать

2.2. Классификация грамматик по Хомскому

Существует классификация грамматик по четырем типам. Введем классификацию для порождающих грамматик. Двойственные им аналитические грамматики будут иметь тип исходных порождающих грамматик.

Определение 31 описывает грамматику общего вида, или, другими словами, грамматику типа 0.

Определение 37 (Грамматика типа 1). Грамматику G = (N,Σ,P,S) называют

контекстно-зависимой грамматикой (КЗ-грамматикой), или грамматикой типа 1, если любое правило в ней имеет вид

γ12 → γ1αγ2,

где γ12 (N + Σ) , A N, α (N + Σ)+. Возможно также присутствие правила

S → ε

при условии, что S не встречается в правых частях остальных правил.

Определение 38 (Грамматика типа 2). Грамматику G = (N,Σ,P,S) называют

контекстно-свободной грамматикой (КС-грамматикой), или грамматикой типа 2, если любое ее правило имеет вид A → α, A N, α (N + Σ) .

Иными словами, грамматика является грамматикой типа 2, если в любом ее правиле в левой части точно один символ – нетерминальный.

КС-грамматики приведены в примерах 18, 20 и 22.

Определение 39 (Грамматика типа 3). Грамматику G = (N,Σ,P,S) называют леволинейной грамматикой, или грамматикой типа 3, если любое ее правило имеет вид

A → Bα,

или

A → α,

где A,B N, α Σ .

Наряду с приведенной классификацией существует несколько определений дополнительных классов грамматик. С некоторыми из них мы познакомимся в рамках данного курса. Один из таких классов – неукорачивающие грамматики.

Определение 40 (Неукорачивающие грамматики). Порождающую грамматику G = (N,Σ,P,S) называют неукорачивающей грамматикой, если для любого правила α → β P выполняется |α| 6 |β|. Кроме того, в неукорачивающей грамматике возможно присутствие правила

S → ε

при условии, что S не встречается в правых частях остальных правил.

17

Грамматика из примера 19 является неукорачивающей.

Язык, определенный грамматикой, называют языком того же типа, что и грамматика. Например, язык, определенный грамматикой типа 3, называют языком типа 3, или леволинейным языком, а язык, определенный грамматикой типа 2, называют языком типа 2, или контекстно-свободным языком (КС-языком).

Будем обозначать Li – класс языков типа i.

2.3. Свойства языков и грамматик

Теорема 2 (О существовании эквивалентной грамматики с ограничением на наличие терминальных символов в правилах). Для любой грамматики G = (N,Σ,P,S) можно построить эквивалентную грамматику G= = (N,Σ,P,S) такую, что каждое правило в P, содержащее символы из Σ, имеет вид A → a, где A N, a Σ. Более того, если G – грамматика типа 0, 1, 2 или неукорачивающая, то Gтакже грамматика типа 0, 1, 2 или неукорачивающая соответственно.

Доказательство. Для каждого a Σ создадим новый нетерминал Aa и сформируем новое множество нетерминалов:

N= N {Aa | a Σ}.

Множество Pполучается из P заменой во всех правилах терминалов a на соответствующие Aa, а также добавлением всевозможных правил:

Aa → a, a Σ.

(2.4)

Покажем, что для полученной грамматики G= (N,Σ,P,S)

 

L(G) L(G).

(2.5)

Пусть непустое слово w = w1w2 ...wn L(G). Тогда можем вывести по грамматике Gсначала слово Aw1 Aw2 ...Awn , a затем, используя (2.4), слово w. Если ε L(G), то вывод этого слова можно произвести в G. Значит (2.5)

верно.

 

Покажем, что

 

L(G) L(G).

(2.6)

Определим гомоморфизм h из (N+ Σ) в (N + Σ) :

h(Aa) = a,

a Σ,

h(X ) = X ,

X N Σ.

Пусть α Gβ. Если такой вывод был произведен с помощью правила Aa → a, то h(α) = h(β). Иначе, h(α) G h(β). В любом случае

h(α) G h(β).

18

Отсюда если w L(G), то

S = h(S) G h(w) = w,

откуда w L(G), что доказывает (2.6).

Преобразования, проведенные для получения грамматики G, не выводят грамматику из того класса, к которому относилась грамматика G. Иными словами, G– грамматика типа 0, 1, 2, или неукорачивающая, если грамматика G является таковой.

Таким образом, утверждение теоремы доказано.

Пример 23. Рассмотрим грамматику G = (N,Σ,P,A), где N = {A,B,C}, Σ = = {a,b,c}, множество P состоит из правил

A → aABC,

A → abc, CB → BC,

bB → bb,

bC → bc, cC → cc.

Построим новую грамматику так, как это определено в доказательстве теоремы 2.

Для каждого терминального символа введем соответствующий ему новый нетерминальный символ с дополнительным новым правилом:

D → a, E → b, F → c.

(2.7)

Подставим новые символы в исходные правила вместо соответствующих терминальных:

A → DABC,

A → DE F, CB → BC,

(2.8)

E B → E E ,

EC → E F,

FC → F F.

 

Получим новую грамматику G= (N,Σ,P,A), где

N= {A,B,C,D,E ,F },

Pсостоит из всех правил, перечисленных в (2.7) и (2.8).

Теорема 3 (О неукорачиваемости контекстно-зависимых языков). Классы языков L1 и неукорачивающих эквивалентны.

Доказательство. Так как по определению любая грамматика типа 1 является неукорачивающей, для доказательства теоремы достаточно показать, что для любой неукорачивающей грамматики найдется эквивалентная грамматика типа 1.

Пусть дана произвольная неукорачивающая грамматика G = (N,Σ,P,S),

#P = n. По теореме 2 можем предположить, что терминальные символы не встречаются в левых частях правил грамматики.

19

Построим новую грамматику Gс множеством правил P, определенным следующим образом:

1)если S → ε P, то S → ε P;

2)если γ12 → γ1αγ2 P, где γ12 (N + Σ) , A N, α (N + Σ)+, то

γ12 → γ1αγ2 P;

3)если i-e правило в P не подходит под определение правила в пункте 2 и имеет вид

X1X2 ...Xk−1Xk → Y1Y2 ...Yl−1Yl ,

то в Pвключаем набор правил

X1X2X3 ...Xk−1Xk → Zi1X2X3 ...Xk−1Xk, Zi1X2X3 ...Xk−1Xk → Zi1Zi2X3 ...Xk−1Xk, Zi1Zi2X3 ...Xk−1Xk Zi1Zi2Zi3 ...Xk−1Xk,

···

Zi1Zi2Zi3 ...Zi k−1Xk Zi1Zi2Zi3 ...Zi k−1Zik,

Zi1Zi2Zi3 ...Zi k−1Zik Y1Zi2Zi3 ...Zi k−1Zik,

Y1Zi2Zi3 ...Zi k−1Zik Y1Y2Zi3 ...Zi k−1Zik,

Y1Y2Zi3 ...Zi k−1Zik Y1Y2Y3 ...Zi k−1Zik,

···

Y1Y2Y3 ...Yk−1Zik → Y1Y2Y3 ...Yk−1Yk ...Yl ,

где Zi j – новые нетерминалы.

Пусть NZ – множество, составленное из всех символов Zi j , введенных на шаге 3.

Тогда грамматика G= (N,Σ,P,S), где N= NNZ , будет определять тот же язык, что и исходная неукорачивающая грамматика. Более того, по определению, получившаяся грамматика является контекстно-зависимой.

Пример 24. Рассмотрим грамматику, полученную в предыдущем примере. Грамматика G= (N,Σ,P,A), где N= {A,B,C,D,E ,F }, Σ = {a,b,c}, P

состоит из правил

A → DABC,

A → DE F, CB → BC,

E B → E E ,

EC → E F,

FC → F F,

D → a,

E → b,

F → c.

Данная грамматика является неукорачивающей, но не будет при этом грамматикой типа 1 из-за наличия в ней правила CB → BC.

В соответствии с алгоритмом преобразования, предложенным в доказательстве теоремы 3, это правило в новой грамматике будет заменено на

20

правила

CB → Z31B,

Z31B → Z31Z32,

Z31Z32 BZ32,

BZ32 → BC.

Так как все остальные правила удовлетворяют условиям, накладываемым на контекстно-зависимые грамматики, то их можно оставить без изменения. Новая грамматика G′′ = (N{Z31,Z32},Σ,P′′,A), где P′′ состоит из правил

A → DABC,

A → DE F, CB → Z31B, Z31B → Z31Z32,

Z31Z32 → BZ32,

BZ32 → BC,

E B → E E ,

EC → E F,

FC → F F,

D → a,

E → b,

F → c,

является контекстно-зависимой грамматикой и определяет тот же язык, что и грамматика G.

Теорема 4 (Классификация конечных языков). Любой из классов языков

Li, 0 6 i 6 3, содержит все конечные языки.

Доказательство. Пусть w1,w2,...,wn – набор слов над алфавитом Σ. Тогда грамматика

G1 = ({S},Σ,{S → w1,S → w2,...,S → wn},S)

порождает язык L(G1) = {w1,w2,...,wn}. Грамматика

G2 = ({S},Σ,{S → S},S)

порождает пустой язык L(G2) = .

Как грамматика G1, так и грамматика G2 подходят под определение грамматики любого типа. Следовательно, теорема доказана.

Пример 25. Пусть дан конечный язык

L = {ε,a,ab,abaa}.

Пользуясь методом, представленным в доказательстве теоремы 4, для него можно определить грамматику

G = (N,Σ,P,S),

где N = {S}, Σ = {a,b} и множество P представлено правилами

S → ε | a | ab | abaa.

Полученная грамматика удовлетворяет ограничениям, накладываемым на любой из типов грамматик, а значит, данный язык можно отнести к классу языков любого типа.

21

Теорема 5 (О замкнутости класса L3 относительно регулярных операций).

Класс леволинейных языков замкнут относительно регулярных операций.

Доказательство. Пусть L и L– леволинейные языки, определенные с помощью грамматик

G = (N,Σ,P,S), G= (N,P,S)

соответственно.

Не теряя общности предположим, что N ∩ N= (в противном случае можем переименовать нетерминалы одного из множеств).

I. Язык L Lопределяется грамматикой

G1 = (N + N+ {S0},Σ + Σ,P P{S0 → S,S0 → S},S0).

Действительно, любое слово языка L выводится из S. Следовательно, его можно вывести и из S0. Аналогично любое слово языка Lможно вывести из S0. Другими словами, любое слово объединения L Lможно вывести из S0. В то же время, так как в грамматиках G и Gнет одинаковых нетерминалов при выводе слова из S по грамматике G1 невозможно получить цепочку, содержащую нетерминальные символы из N, т. е. при таком выводе нельзя применить ни одного правила из P. Аналогично, при выводе цепочки из нетерминала Sпо грамматике G1 невозможно применить ни одного правила из P. Следовательно, из нетерминала S0 можно вывести только слова из L(G1) L(G2).

II. Заменим в Pкаждое правило вида

 

A → α, A N,α Σ

(2.9)

на правило A → Sα. Обозначим полученное множество правил через P1. Тогда грамматика типа 3

G2 = (N + N,Σ + Σ,P P1,S)

порождает язык LL.

В самом деле, если β L, то существует вывод SGβ. Вследствие произведенной замены правил вида (2.9) имеет место вывод по грамматике G2 SG2 Sw. Значит, для любого слова α L выполняется SG2 G2 αβ. Так как слово β взято произвольным, все слова конкатенации LLможно вывести по грамматике G2 из S. Более того, легко убедиться, что никакие другие слова не выводятся по грамматике G2 из S.

III. Заменим в Pкаждое правило вида (2.9) на правило вида

A → Sα

22

и обозначим полученное множество правил через P2. Тогда грамматика ти-

па 3

G3 = (N+ {S0},Σ,PP2 {S0 → ε,S0 → S},S0)

порождает язык L.

По грамматике G3 возможны выводы:

S0

G3

ε;

 

S0

G3

S;

 

Sα,

α L;

 

G3

 

 

S

 

Sα,

α L.

 

G3

 

 

Отсюда получаем, что из S0 можно вывести любое слово, составленное из слов языка L, т. е. L(G3) = L.

Пример 26. Рассмотрим две грамматики.

 

G1

= ({S,A,B},{0,1,2},P1,S) с множеством продукций P1:

 

S → A11 | B0,

A → S01 | 1,

B → A0 | B2.

G2

= ({E ,C,D},{0,1,2},P2,E ), с множеством продукций P2:

 

E → C0 | ε,

C → C1 | D2,

D → E 0 | 2.

Всоответствии с доказательством теоремы 5 объединение языков L(G1)

L(G2) будет определять грамматика G3 = ({S0,S,A,B,C, D,E }, {0,1,2}, P3,S0), в которой P3 представлено продукциями

S0

→ S | E ,

 

S → A11 | B0,

E → C0 | ε,

A → S01 | 1,

C → C1 | D2,

B → A0 | B2,

D → E 0 | 2.

Для конкатенации языков L(G1)L(G2) преобразуем правила грамматики G2, не содержащие нетерминальных символов в правой части

E → ε,

D → 2,

(2.10)

в правила

 

 

E → S,

D → S2

(2.11)

Объединив правила грамматики G1 с модифицированным множеством правил грамматики G2, получим грамматику G4 = ({S,A,B,C,D,E }, {0,1,2}, P4,E ), где P4 – множество правил:

S → A11 | B0, C → C1 | D2,

E → C0 | S,

A → S01 | 1,

B → A0 | B2,

D → E 0 | S2.

23

Преобразуя правила (2.10) так, как сказано в последней части доказательства теоремы 5 получим новые правила

E → E , D → E 2.

Добавим новый начальный нетерминальный символ и два правила для него, после чего объединим новые правила с правилами грамматики G2. Получим множество правил P5

S0 → ε | E ,

E → C0 | E | ε,

C → C1 | D2,

D → E 0 | E 2 | 2.

Грамматика G5 = ({S0,E ,C,D},{0,1,2},P5,S0) определяет итерацию L(G2) . Аналогичным образом можно найти грамматику для итерации L(G1) :

G6 = ({S0,S,A,B},{0,1,2},P6,S0) с множеством продукций P6:

S0 → ε | S,

S → A11 | B0,

A → S01 | S1 | 1,

B → A0 | B2.

Теорема 6 (О замкнутости класса L2 относительно регулярных операций).

Класс контекстно-свободных языков замкнут относительно регулярных операций.

Доказательство. Пусть L и Lопределены с помощью контекстно-свобод- ных грамматик

G = (N,Σ,P,S), G= (N,P,S)

соответственно.

Не теряя общности, предположим, что N ∩ N= (в противном случае можем переименовать нетерминалы одного из множеств).

Тогда язык L Lопределяется грамматикой

(N + N+ {S0},Σ + Σ,P P{S0 → S,S0 → S},S0),

язык LL– грамматикой типа 2

(N + N+ {S0},Σ + Σ,P P{S0 → SS},S0),

язык L – грамматикой типа 2

(N + {S0},Σ,P {S0 → ε,S0 → S0S},S0).

24

Методы построения грамматик для конкатенации и итерации языков типа 2 несколько проще, чем подобные методы для языков типа 3. Такое упрощение связано с тем, что грамматики типа 3 – это грамматики типа 2 с дополнительными ограничениями, которые не выполняются при построении грамматик в доказательстве теоремы 6. Действительно, рассмотрим грамматики G1 и G2 из примера 26 и построим сначала грамматику для конкатенации L(G1)L(G2) методом, предложенным в доказательстве теоремы 6. Для этого объединим все правила исходных грамматик и добавим правило для нового начального нетерминала. Получим грамматику со следующим набором правил:

S0 → SE ,

 

 

S → A11 | B0,

E → C0 | ε,

A → S01 | 1,

C → C1 | D2,

B → A0 | B2,

D → E 0 | 2,

где S0 – новый начальный нетерминал. Так как исходные грамматики можно было отнести ко 2-му типу, полученная грамматика определяет конкатенацию определенных ими языков. Но из-за первого правила построенную грамматику нельзя отнести к типу 3. Поэтому такое построение не доказывает факта, что конкатенация языков типа 3 есть язык типа 3.

Аналогичная ситуация имеет место при применении метода построения грамматики для итерации языка, предложенного в доказательстве теоремы 6, к грамматике типа 3. Построим этим методом грамматику для (L(G1)) . Получим грамматику с набором правил

S0 → ε | S0S,

S → A11 | B0, A → S01 | 1, B → A0 | B2,

где S0 – новый начальный нетерминал. Как и в предыдущем случае, из-за правила S0 → S0S данную грамматику нельзя отнести к типу 3.

Теорема 7 (О замкнутости класса L1 относительно регулярных операций).

Класс контекстно-зависимых языков замкнут относительно регулярных операций.

Доказательство. Пусть L и Lопределены с помощью контекстно-зависи-

мых грамматик

G = (N,Σ,P,S), G= (N,P,S)

соответственно.

По теореме 2 можем предположить, что терминальные символы не встречаются в левых частях правил грамматик. Кроме того, пусть N ∩ N= = (в противном случае можем переименовать нетерминалы одного из множеств).

25

I. Если ε / L L, то язык L Lопределяется грамматикой

 

(N + N+ {S0},Σ + Σ,P P{S0 → S,S0 → S},S0).

(2.12)

Если ε L L, рассмотрим языки L −{ε} и L−{ε}. Для них определим грамматику по (2.12), после чего добавим дополнительное правило S0 → ε. Это не выведет получившуюся грамматику из класса языков L1, так как S0 – новый нетерминал, который не встречается в правых частях правил. Полученная грамматика определяет язык L L.

II. Предположим, что ε / L L. Тогда грамматика типа 1

(N + N+ {S0},Σ + Σ,P P{S0 → SS},S0)

(2.13)

порождает язык LL.

Действительно, очевидно, что каждое слово в LLможет быть выведено по (2.13). В то же время если

S0 γ1 γ2 ··· γu

вывод по (2.13), тогда любая из цепочек γ j может быть представлена в форме γ j = ϑ j ϑj , где S G ϑ j и SGϑj . Это можно доказать по индукции. Ясно, что γ1 = SSнаходится в такой форме. Если же γk в данной форме, то γk+1 также в данной форме, поскольку левые части правил грамматик не содержат терминальных символов, а множества нетерминальных символов не пересекаются. Значит, только слова из LLпорождаются грамматикой

(2.13).

Пусть ε L L. Обозначим L1 = L − {ε}, L1= L− {ε}. Очевидно, что LL– это один из следующих языков:

L1L1L1, L1L1L1, L1L1L1 L1{ε}.

Так как класс L1 замкнут относительно объединения, а в конкатенации участвуют языки без пустого слова, то весь класс L1 замкнут относительно конкатенации.

III. В связи с тем что (L {ε}) = L , можем, не теряя общности, предположить, что L не содержит ε.

Действительно, если ε L(G), мы всегда можем построить грамматику G1 такую, что L(G1) = L(G) − {ε} (просто удаляем правило S → ε).

В таком случае грамматика

 

(N + {S0,S1},Σ,P {S0 → ε,S0 → S,S0 → S1S}

 

{S1a → S1Sa | a Σ}

(2.14)

{S1a → Sa | a Σ},S0)

 

26

порождает язык L . Действительно видно, что любое слово в L порождается (2.14). В то же время рассмотрим произвольный вывод

S0 γ1 γ2 ··· γu, u > 1

согласно (2.14). Если γ1 = ε или γ1 = S, то в результате вывода можно получить только слова из L и, следовательно, γu L . В противном случае γ1 = S1S и каждая цепочка γ j находится в одной из следующих форм:

1)S1ϕ1 ...ϕV , V > 1, где первый символ в цепочках ϕ2,...,ϕV терминальный

иS G ϕν, ν = 1,...,V;

2)ϕ1 ...ϕV , V > 1, где первый символ в цепочках ϕ2,...,ϕV терминальный

иS G ϕν, ν = 0,...,V.

Это можно показать по индукции. Пусть γ j в форме 1 или 2. Из вида продукций в (2.14) и из того, что терминалы не встречаются в правых частях правил, следует, что γ j+1 также в форме 1 или 2. Отсюда следует, что только цепочки из L могут быть выведены по (2.14).

Теорема 8 (О замкнутости класса L0 относительно регулярных операций).

Класс языков общего вида замкнут относительно регулярных операций.

Доказательство. Пусть L и Lопределены с помощью грамматик

G = (N,Σ,P,S), G= (N,P,S)

соответственно.

По теореме 2 можем предположить, что терминальные символы не встречаются в левых частях правил грамматик. Кроме того, пусть N ∩ N= = (в противном случае можем переименовать нетерминалы одного из множеств).

I. Язык L Lопределяется грамматикой

(N + N+ {S0},Σ + Σ,P P{S0 → S,S0 → S},S0).

 

II. Грамматика типа 0

 

(N + N+ {S0},Σ + Σ,P P{S0 → SS},S0)

(2.15)

порождает язык LL.

Действительно, очевидно, что каждое слово в LLможет быть выведено по (2.15). При этом если

S0 γ1 γ2 ··· γu

вывод по (2.15), тогда любая из γ j может быть представлена в форме γ j = ϑ j ϑj , где S G ϑ j и SGϑj . Это можно доказать по индукции. Ясно,

27

что γ1 = SSнаходится в такой форме. Если же γk в данной форме, то γk+1 также в данной форме, поскольку левые части правил грамматик не содержат терминальных символов, а значит, только слова из LLпорождаются грамматикой (2.15).

III. Так как (L {ε}) = L , можем, не теряя общности, предположить, что L не содержит ε.

Действительно, если ε L(G), мы всегда можем построить грамматику G1 такую, что L(G1) = L(G) − {ε} (заменим каждое правило α → ε на правила xα → x и αx → x для всех x (N + Σ)).

В таком случае грамматика

 

(N + {S0,S1},Σ,P {S0 → ε,S0 → S,S0 → S1S}

 

{S1a → S1Sa | a Σ}

(2.16)

{S1a → Sa | a Σ},S0)

порождает язык L . Действительно видно, что любое слово в L порождается (2.16). В то же время рассмотрим произвольный вывод

S0 γ1 γ2 ··· γu, u > 1

согласно (2.16). Если γ1 = ε или γ1 = S, то в результате вывода можно получить только слова из L и, следовательно, γu L . В противном случае γ1 = S1S и каждая цепочка γ j находится в одной из следующих форм:

1)S1ϕ1 ...ϕV , V > 1, где первый символ в цепочках ϕ1,...,ϕV терминальный

иS G ϕν, ν = 1,...,V;

2)ϕ1 ...ϕV , V > 1, где первый символ в цепочках ϕ1,...,ϕV терминальный

иS G ϕν, ν = 0,...,V.

Это можно показать по индукции. Пусть γ j в форме 1 или 2. Из вида продукций в (2.16) и из того, что терминалы не встречаются в правых частях правил, следует, что γ j+1 также в форме 1 или 2. Отсюда следует, что только цепочки из L могут быть выведены по (2.16).

Теорема 9 (О замкнутости классов языков относительно положительной итерации). Любой из классов языков Li, 0 6 i 6 3, замкнут относительно операции положительной итерации.

Утверждение теоремы напрямую следует из замкнутости классов языков относительно регулярных операций, так как L+ = LL .

Теорема 10 (О замкнутости классов языков относительно зеркального отражения). Любой из классов языков Li, 0 6 i 6 2, замкнут относительно операции зеркального отражения.

28

Доказательство следует из того факта, что если в грамматике типа i (0 6 i 6 2) поменять каждое правило

α → β

на правило

αR → βR,

то получим грамматику, относящуюся к тому же классу, что и первоначальная, и определяющую зеркальное отражение исходного языка.

Теорема 11 (О замкнутости L0 и L2 относительно подстановки). Классы языков L0 и L2 замкнуты относительно подстановки.

Доказательство. I. Рассмотрим класс L2. Пусть L = L(G), где

G= (N,Σ,P,S), Σ = {a1,...,ar },

σ– подстановка такая, что σ(ai), 1 6 i 6 r, порождается контекстно-свобод- ной грамматикой

Gi = (Nii,Pi,Si).

Предположим, что множества нетерминалов всех введенных грамматик попарно не пересекаются.

Обозначим через P0 множество правил, полученное из P заменой ai на Si. Тогда грамматика

(N N1 ··· Nr 1 ··· Σr ,P0 ··· Pr ,S)

есть грамматика типа 2, порождающая язык σ(L). II. Рассмотрим класс L0.

Пусть L = L(G), где

G= (N,Σ,P,S), Σ = {a1,...,ar },

σ– подстановка такая, что σ(ai), 1 6 i 6 r, порождается грамматикой общего вида

Gi = (Nii,Pi,Si).

Предположим, что множества нетерминалов всех введенных грамматик попарно не пересекаются.

Для каждого терминального символа ai Σ введем новый нетерминал Ai. Кроме того, введем два новых нетерминала X0 и X .

Обозначим через P0 множество правил, полученное из P заменой всех терминальных символов ai на новый нетерминал Ai.

29

Возьмем новый нетерминал X и обозначим

P= {X Ai → X Si | 1 6 i 6 r},

P′′ = {X a → aX | a Σ1 ··· Σr }.

Тогда грамматика

(N N1 ··· Nr {X ,X0},

Σ1 ··· Σr ,

P0 ··· Pr PP′′ {X0 → X S, X → ε},X0)

есть грамматика типа 0, порождающая язык σ(L).

Следствие 11.1. Классы языков L0 и L2 замкнуты относительно гомоморфизма.

Теорема 12 (О замкнутости класса L0 относительно пересечения). Класс языков общего вида замкнут относительно пересечения.

Доказательство. Пусть L = L(G) и L= L(G), где

G = (N,Σ,P,S), G= (N,P,S)

грамматики типа 0. Рассмотрим грамматику

G1 = (N NN1,Σ Σ,P PP1,X0),

где

N1 = {Aa | a Σ Σ} {X0,X1,X2}

 

– новые нетерминалы, a P1 состоит из правил

 

X0 → X1SX2SX1,

 

(2.17)

X2a → AaX2,

a Σ Σ,

(2.18)

bAa → Aab,

a,b Σ Σ,

(2.19)

X1Aaa → aX1,

a Σ Σ,

(2.20)

X1X2X1 → ε.

 

(2.21)

Используя (2.17) и продукции из P P, все цепочки формы

 

X1wX2wX1,

w L, wL

(2.22)

могут быть выведены из X0. По (2.18)–(2.20) цепочка

 

wX1X2X1

(2.23)

30

выводится из (2.22) тогда и только тогда, когда w = w. По (2.21) слово w выводится из (2.23). Так как только таким образом можно получить из X0 терминальную цепочку, делаем заключение, что

L(G1) = L ∩ L.

Контрольные вопросы и задания

1.Дайте определение порождающей грамматики.

2.Поясните понятие вывода строки в заданной грамматике.

3.Какие грамматики могут выступать как средства распознавания языка?

4.Поясните понятие распознавания слова с помощью заданной грамматики.

5.Какую роль в грамматике играют терминальные и нетерминальные символы?

6.Охарактеризуйте классы формальных языков в иерархии Хомского.

7.Охарактеризуйте правила контекстно-свободной грамматики.

8.Как классифицируются аналитические грамматики?

9.Что означает утверждение, что две грамматики эквивалентны?

10.Дайте определение двойственных грамматик.

11.Дайте определение неукорачивающей грамматики.

12.Какой класс языков порождается неукорачивающими грамматиками?

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]