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 |
|