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

Регулярность языка, порождаемого несамовставленной cfg

Теперь, если в любой сентенциальной форме самое большее ml нетерминалов, мы можем построить грамматику типа 3

G2

= (V 2 N

, VT, P2, S2),

порождающую язык L(G) следующим образом. Нетерминалы грамматики G2 соответствуют цепочкам нетерминалов грамматики G1, длина

которых не больше ml, т. е.

2

= {[ ] VN1

 

, ml}; S2

 

VN

 

= [S];

P2 = {[A ] b[ ] A b P1}.

131

Регулярность языка, порождаемого несамовставленной cfg

Из построения должно быть очевидно, что грамматика G2 моделирует все левосторонние выводы в грамматике G1, так что

L(G2) = L(G1).

Действительно, индукцией по длине

вывода легко показать, что S

*

 

x посред-

 

 

 

G1

 

ством левостороннего вывода тогда и только

тогда, когда [S]

*

 

 

 

x[ ].

 

 

 

 

G

 

 

 

+

2

 

1*

 

Здесь x VT — закрытая, а

 

— откры-

VN

тая часть данной сентенциальной формы.

132

Регулярность языка, порождаемого несамовставленной cfg

I. Докажем сначала, что

l

*

если S x , то

[S] x[ ].

G1

G2

База. Пусть l = 1.

 

Имеем S x , S x P1, x VT, V

G

 

1

 

Следовательно, существует правило

 

[S] x[ ] P2

и потому [S]

x[ ].

 

G

 

2

1*. N

Индукционная гипотеза. Предположим, что аналогичное утверждение имеет место при всех l n (n 1).

133

Регулярность языка, порождаемого несамовставленной cfg

Индукционный переход. Докажем утвержде-

ние при l n +1.

 

n

 

 

Пусть S

 

x′A x′b ′ = x , т. е.

 

G1

G1

= .

 

 

x = x′b,

По индукционной гипотезе из существова-

n

 

 

 

 

*

 

ния вывода S x′A следует, что [S]

x′ [A ],

G

1

G

2

вывода

а поскольку на последнем шаге

 

 

использовано правило A b ′ P1, то суще-

ствует правило [A ] b[ ] P2, с помощью которого можно завершить имеющийся вывод

*

 

[S] x′ [A ] x′b[ ] = x[ ].

G2

G2

134

Регулярность языка, порождаемого несамовставленной cfg

II. Докажем теперь, что

l

 

*

если [S] x[ ], то

S x .

G

2

G

1

База. Пусть l = 1. Имеем [S] x[ ].

 

 

G

 

 

 

2

 

Существует правило [S] x[ ] P2, x VT,

V 1*

 

 

 

N , которое обусловлено существованием

правила S x P1, и потому S

x .

 

 

 

G

 

 

 

1

Индукционная гипотеза. Предположим, что

аналогичное утверждение имеет место при всех l n (n 1).

135

Регулярность языка, порождаемого несамовставленной cfg

Индукционный переход.

ние при l = n + 1.

n

 

 

 

Пусть [S] x[A ]

G

2

 

G

2

 

2

 

 

 

 

 

здесь x = xb, VN.

 

 

Докажем утвержде-

xb[ ] = x[ ],

По индукционной гипотезе из существова-

ния вывода

[S]

n

 

 

G

следует, что

2

 

S *

G1

x[A ]

xA .

136

Регулярность языка, порождаемого несамовставленной cfg

На последнем шаге вывода использовано правило [A ] b[ ] P2, существование которого обусловлено существованием правила A b P1, где = , которое можно использовать для завершения

имеющегося вывода в грамматике G1.

S xA xb = x .

*

 

 

G

1

G

1

Из рассуждений I и II при = получаем

L(G1) = L(G2). Таким образом, язык L(G) — регулярен.

Что и требовалось доказать.

137

§ 4.6. -Правила в КСграмматиках

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

Теперь мы рассмотрим расширения КСграмматик, которые разрешают использовать правила вида A для любого нетерминала. Многие описания синтаксиса языков программирования допускают такие продукции (т. е. правила).

138

-Правила в cfg

Мы покажем, что язык, порождаемый КС-грамматикой с -правилами, — всегда КС-язык, т. е. может быть порождён без правил вида A , где A S.

Понятия, касающиеся деревьев вывода для КС-грамматик, непосредственно переносятся на эти расширенные грамматики. Просто разрешается использовать обозначение в качестве метки узла. Ясно, что такой узел может быть только листом.

139

Теорема 4.11. Если L — язык, порождаемый грамматикой

G = (VN, VT, P, S),

где каждое правило в P имеет вид A ,

где A — нетерминал, а V

*

( =

 

 

допустимо), то L может быть порождён грамматикой, в которой каждое правило имеет вид A , где A — нетерминал, а

V, либо S , и, кроме того, начальный нетерминал грамматики S не появляется в правой части никакого правила.

Ret 150

140

 

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