formal_language_theory / lectures / unit_4
.pdf
Регулярность языка, порождаемого несамовставленной 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 = x’b, VN.  | 
	
  | 
	
  | 
||
Докажем утвержде-
x’b[ ] = x[ ],
По индукционной гипотезе из существова-
ния вывода
[S]  | 
	n  | 
  | 
|
  | 
	G  | 
следует, что  | 
	2  | 
  | 
S *
G1
x’[A ]
x’A .
136
Регулярность языка, порождаемого несамовставленной cfg
На последнем шаге вывода использовано правило [A ] b[ ] P2, существование которого обусловлено существованием правила A b ’ P1, где = ’ , которое можно использовать для завершения
имеющегося вывода в грамматике G1.  | 
|||
S x’A x’b ’ = 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  | 
  | 
