Ng Duc ThuanCh-ơng III văn phạm phi ngữ cảnh Trong ch-ơng này chúng ta sẽ khảo sát NN Phi ngữ cảnh, là ngôn ngữ khá gần với ngôn ngữ tự nhiên và có vai trò quan trọng nhất trong việc ứ
Trang 1Ng Duc Thuan
Ch-ơng III
văn phạm phi ngữ cảnh Trong ch-ơng này chúng ta sẽ khảo sát NN Phi ngữ cảnh, là ngôn ngữ khá gần với
ngôn ngữ tự nhiên và có vai trò quan trọng nhất trong việc ứng dụng xây dựng các ngôn
ngữ lập trình và ch-ơng trình dịch
3.1 Xuất xứ và Cây suy dẫn của Văn phạm Phi ngữ cảnh:
3.1.1 Xuất xứ:
Xuất xứ của ngôn ngữ phi ngữ cảnh là việc mô tả ngôn ngữ tự nhiên Cấu trúc câu
của ngôn ngữ tự nhiên đ-ợc định nghĩa bằng các qui tắc ngữ pháp Ví dụ, câu của ngôn
ngữ tự nhiên (tiếng việt) ở trên bây giờ có thể đ-ợc định nghĩa bởi các qui tắc văn phạm
sau:
1 <Câu > đ <Chủ ngữ> <Vị ngữ>
2 <Chủ ngữ > đ <Danh từ> <Tính từ>
3 <Danh từ > đ gà
4 <Tính từ > đ trống
5 <Vị ngữ > đ <Động từ> <Bổ ngữ>
6 <Động từ> đ ăn
7 <Bổ ngữ > đ <Danh từ>
8 <Danh từ> đ thóc Một câu đúng ngữ nghĩa đ-ợc suy dẫn từ văn phạm trên :
gà trống ăn thóc Tuy nhiên, với những qui tắc ngữ pháp của ngôn ngữ phi ngữ cảnh nh- trên, sẽ dẫn
đến những sai sót về mặt ngữ nghĩa của ngôn ngữ tự nhiên, ví dụ: "thóc trống ăn gà"
Nh-ng với nhu cầu biểu diễn các ngôn ngữ lập trình, ng-ời ta nhận thấy văn phạm phi ngữ
cảnh có một khuôn khổ thích hợp Những nhà Tin học đã sử dụng dạng chuẩn
Backus-Naus (BNF) để diễn tả cú pháp của các ngôn ngữ lập trình cấp cao (nh- Algol, Pascal, )
chính là một biến t-ớng của văn phạm phi ngữ cảnh; với dấu ::= đ-ợc dùng thay cho đ
Chẳng hạn, để định nghĩa một biểu thức số học ng-ời ta viết:
<biểu thức> ::= <biểu thức> + <biểu thức>
<biểu thức> ::= <biểu thức> * <biểu thức>
<biểu thức> ::= (<biểu thức>)
<biểu thức> ::= db Với các qui tắc đó, ta sinh đ-ợc mọi biểu thức số học có chứa các toán tử +,* cùng
các toán hạng, biểu diễn bởi ký hiệu db, ngăn cách bởi các cặp vòng đơn ( và ) Chẳng hạn
biểu thức (db+db) *db đ-ợc sinh ra theo một quá trình diễn tả bởi cây sau đây:
Trang 2Ng Duc Thuan
<biểu thức>
<biểu thúc> * <biểu thức>
<biểu thức> + <biểu thức>
3.1 Hình sản sinh một xâu Việc nghiên cứu các văn phạm phi ngữ cảnh tạo ra một cơ sở lý luận để biểu diễn ngôn ngữ lập trình, việc tìm kiếm các giải thuật phân tích cú pháp vận dụng
trong các ch-ơng trình dịch và cho nhiều ứng dụng khác cho việc xử lý xâu
3.1.2 Cây suy dẫn trong văn phạm phi ngữ cảnh:
3.1.2.1 Định nghĩa : Cho văn phạm phi ngữ cảnh G = <ồ,D,S,P> Cây suy dẫn
trong văn phạm phi ngữ cảnh là một cây đ-ợc thành lập từ một suy dẫn nào đó trong G
Mỗi xâu x ẻồ* mà S ╞═G x sẽ t-ơng ứng với một cây suy dẫn nào đó Xâu x đ-ợc gọi là
kết quả của cây suy dẫn
Cây suy dẫn trong văn phạm phi ngữ cảnh G = <ồ,D,S,P> là một cây thỏa mãn 5
yêu cầu sau:
1 ở mỗi đỉnh đ-ợc gán 1 nhãn Nhãn gán ở đỉnh là các ký hiệu trong tập
ồẩDẩ{e} Gốc của cây đ-ợc gán nhãn là S
2 Mỗi đỉnh trong đ-ợc gán nhãn là một ký hiệu nào đó trong D
3 Mỗi đỉnh ngoài (lá của cây) đ-ợc gán nhãn là một ký hiệu trong tập ồẩ{e}
4 Nếu đỉnh m đ-ợc gán nhãn là A ẻD, còn các đỉnh n1, n2, , nk là các con của
đỉnh m theo thứ tự từ trái sang phải, và đ-ợc gán nhãn X1, X2, , Xk t-ơng ứng thì A đ
X1X2 Xk là một qui tắc trong P của văn phạm G
5 Nếu nút n mang nhãn là e, thì n phải là một lá, và là nút con duy nhất của nút
mẹ nó
Nếu đọc tất cả nhãn ở các lá (lá đ-ợc gán nhãn trong tập ồẩ{e} theo thứ tự từ trái
qua phải ta sẽ nhận đ-ợc một xâu nào đó Xâu đó là một phần tử trong L(G)
Ví dụ 1: Cho văn phạm
G = < {+,-,*,0,1,2,3,4,5,6,7,8,9,z},{A,B,C,D,E,F,G}, S,P>
Trang 3Ng Duc Thuan
P : S ® B½ BzD
C ® +½-½e
E ® F*½F*F½*F
G ® 0 ½1½2½3½ ½9
Ta cã thÓ nhËn ®-äc c©y dÉn xuÊt:
S
F G F G G 3
G 4 G 5 1
3 2
VÝ dô 2: XÐt V¨n ph¹m phi ng÷ c¶nh sau:
G = <{if, then, else, for, do, a,b,c}, {S,A},S, {S® if b then A, S® if b then A else S, S®a, A® for c do S, A®a}>
Trong v¨n ph¹m nµy cã 2 c©y cho kÕt qña cïng mét c©u :
if b then for c do if b then a else a
s
b
Trang 4Ng Duc Thuan
Chú ý :
- Nh- vậy có thể có nhiều kết quả, ứng với các cây suy dẫn khác nhau cho cùng
một văn phạm phi ngữ cảnh
- ứng một kết quả thì có thể có nhiều cây suy dẫn khác nhau
- Ta gọi cây con của một cây suy dẫn là một nút nào đó, cùng với các nút "con,
cháu " của nó, các nhánh nối chúng và các nhãn kèm theo Cây con cũng giống cây suy
dẫn, chỉ khác là nhãn của gốc không nhất thiết là ký hiệu đầu S Nếu nhãn của gốc cây
con là A, thì gọi đó là một A-cây
3.1.3 Mối liên quan giữa suy dẫn và cây suy dẫn:
3.1.3.1 Định lý: Cho G = <ồ,D,S,P> là một văn phạm phi ngữ cảnh, thì S╞═ a khi
và chỉ khi có 1 cây suy dẫn trong G mà kết quả là a
Chứng minh: Ta sẽ chứng minh một mệnh đề rộng hơn:
"AẻD, A╞═ a khi và chỉ khi có 1 A-cây trong G mà kết quả là a
a.(Điều kiện đủ): Giả sử a là kết quả của 1 A-cây Ta chứng minh bằng qui nạp
theo số nút trong của cây là A╞═ a:
- Nếu chỉ có một nút trong, thì A-cây có dạng nh- hình:
A
Hình 3.2 A- cây với chỉ 1 nút trong
Bấy giờ, a= X1X2 Xn và Ađ a là một sản xuất trong P bởi định nghĩa của cây
suy dẫn Vậy A╞═ a:
S
a
s
b
a
if b then A
Trang 5Ng Duc Thuan
- Giả thiết rằng kết luận là đúng đối với mọi cây có số nút trong không quá k-1,
với k>1 Cho a là kết quả của một A-cây với k nút trong Xét các con của gốc A Chúng
không thể đều là lá cả Giả sử các nhãn của chúng kể từ trái qua phải là X1, X2, ,Xn , với
n³1 Vậy thì Ađ X1X2 Xn là một sản xuất trong P
Nếu nút mang nhãn Xi không phải là lá, nó sẽ là gốc của một cây con với một kết
quả là ai nào đó Nếu nút mang nhãn Xi là lá, thì cho ai = Xi Dễ thấy, nếu i< j, nút j và
mọi nút "con, cháu" của nó là ở bên trái nút i Vậy thì a = a1a2 an Vì một cây con thực
sự của cây phải có ít nút hơn trong cây, vậy giả thiết qui nạp là đúng với mọi Xi-cây với
các nút i không là lá, tức là có Xi ╞═ ai Còn các nút là lá thì ai = Xi, vậy cũng có Xi ╞═
ai Ghép các dãy suy dẫn bộ phận lại với nhau ta có:
A├─ X1X2 Xn ╞═ aiX2X3 Xn ╞═ aia2X3 Xn ╞═ ╞═ aia2a3 a n = a
Vậy A ╞═ a ( Chú ý suy dẫn này chỉ là 1 trong nhiều suy dẫn có thể đ-ợc thành
lập từ cây suy dẫn đã cho)
b (Điều kiện cần) Bây giờ giả sử A ╞═ a Ta cần chứng minh rằng có A-cây với
kết quả là a
- Nếu A ╞═ a chỉ với một b-ớc suy dẫn, thì A ╞═ a là một sản xuất trong P và ta
có A cây nh- hình 3.2 với kết quả là a
- Giả sử với mọi biến A, nếu có A ╞═ a là một suy dẫn ít hơn k b-ớc, thì có 1
A-cây với kết quả là a Xét suy dẫn A ╞═ a là k b-ớc Giả sử trong b-ớc thứ nhất sản xuất
đ-ợc dùng là A đ X1X2 Xn tức là A ├─ X1X2 Xn ╞═ a Thế thì mọi ký hiệu trong a
phải hoặc là trùng với một Xi nào đó, hoặc là đ-ợc suy dẫn từ một Xi hơn nữa, do các sản
xuất đều có dạng Bđa chỉ cho phép thay thế từng biến 1, cho nên nếu i<j, thì toàn bộ các
ký hiệu sinh ra bởi Xj đều ở bên trái toàn bộ các ký hiệu sinh ra bởi Xj Bởi vậya phải có
dạng a1a2 an, trong đó Xi ╞═ ai, i =1,2, ,n, và đọ dài các suy dẫn này là không, nếu Xi là
ký hiệu cuối, nếu không độ dài suy dẫn đó >0, nh-ng không quá k-1 Nh- vậy bởi giả
thiết qui nạp, khi Xi là một biến thì có Xi - cây với kết quả là ai Gọi cây đó là Ti
Bây giờ thì ta có thể thành lập A-cây với kết quả là a nh- sau:
Tr-ớc hết dựng một A-cây với n lá có nhãn X1, X2, ,Xn; tiếp đó, mỗi nút có nhãn Xi với
Xi là biến, sẽ đ-ợc thay bởi cây Ti t-ơng ứng; còn khi Xi là ký hiệu cuối, thì không cần
thay gì nữa kết quả này kết thúc chứng minh
Hình 3.3 A- cây
A
cuối cuối
Trang 6Ng Duc Thuan
3.1.4 Suy dẫn bên trái nhất, suy dẫn bên phải nhất; Sự nhập nhằng:
3.1.4.1 Định nghĩa : Suy dẫn bên trái nhất (nói gọn là suy dẫn trái), nếu ở mỗi
b-ớc suy dẫn, biến đ-ợc thay thế là biến nằm ở bên trái nhất trong dạng câu T-ơng tự,
suy dẫn bên phải nhất (nói gọn là suy dẫn phải), nếu ở mỗi b-ớc suy dẫn, biến đ-ợc thay
thế là biến nằm ở bên phải nhất trong dạng câu
Mỗi cây suy dẫn với kết quả a, t-ơng ứng với nhiều suy dẫn S╞═ a Chúng có thể
chỉ khác nhau bởi thứ tự áp dụng các sản xuất
L-u ý, với cùng một xâu aẻ L(G), có thể có nhiều cây suy dẫn khác nhau, có
cùng kết quả là a Nói khác hơn xâu a có thể phân tích cú pháp theo nhiều cách khác
nhau
3.4.1.2 Sự nhập nhằng trong ngôn ngữ phi ngữ cảnh:
Định nghĩa: Cho văn phạm phi ngữ cảnh G = <ồ,D,S,P>, ta nói văn phạm G là
nhập nhằng nếu tồn tại một xâu w là kết quả của 2 cây suy dẫn khác nhau trong G
Ngôn ngữ do văn phạm G sinh ra là ngôn ngữ nhập nhằng nếu G là văn phạm
nhập nhằng
Ví dụ 3: Cho văn phạm phi ngữ cảnh G = <ồ,D,S,P>,
ồ = {+,a,*}, D={S}, P = {SđS+S, SđS*S, Sđ a}
ở đây ký hiệu + là phép cộng, * là phép nhân
Xâu a+a*a là kết quả của cây suy dẫn (thực hiện phép * tr-ớc) Suy dẫn bên trái nhất ứng với cây suy dẫn là :
S ├─ S*S ├─ S+S*S ├─ a+S*S ├─ a+a*S ├─ a+a*a
Xâu a+a*a là kết quả của cây suy dẫn (thực hiện phép + tr-ớc)
Suy dẫn bên phải nhất ứng với cây đó là:
S ├─ S*S ├─ S*a ├─ S+S*a ├─ S+a*a├─ a+a*a
S
a +
*
S
a
+
*
Trang 7Ng Duc Thuan
Nh- vậy xâu a+a*a là kết quả của 2 cây suy dẫn khác nhau Vì vậy văn phạm
trong ví dụ này là văn phạm nhập nhằng
Để khắc phục sự nhập nhằng của G đó, ta có thể :
- Hoặc là qui định rằng các phép cộng và nhân luôn luôn đ-ợc thực hiện theo thứ
tự từ trái qua phải (trừ khi gặp vòng đơn) Qui định đó đ-ợc thể hiện trong G1 d-ới đây,
t-ơng đ-ơng với Gnh-ng không còn nhập nhằng nữa:
S đ S+TẵS*TẵT
T đ (S)ẵa
- Hoặc là qui định rằng, khi không có vòng đơn ngăn cách, thì phép nhân * đ-ợc
-u tiên tr-ớc phép cọng + Qui định đó đ-ợc thể hiện trong văn phạm G2 d-ới đây, cũng
t-ơng đ-ơng với G mà không còn nhập nhằng nữa
S đ S + T ẵT
T đ T*F ẵF
F đ (S)ẵa
3.2 Giản l-ợc các văn phạm phi ngữ cảnh:
Trong văn phạm phi ngữ cảnh có thể có nhiều yếu tố thừa, ví dụ có những ký hiệu
không hề tham gia vào quá trình sinh các ngôn ngữ, hoặc có những qui tắc dạng A đ B
chỉ làm mất thời gian trong quá trình hình thành các xâu của ngôn ngữ Vì lẽ đó cần loại
bỏ những yếu tố của d- thừa không có ích trong việc sinh ngôn ngữ, sao cho việc loại bỏ
đó không làm ảnh h-ởng tới quá trình sinh ngôn ngữ Điều đó có nghĩa là chỉ giữ lại các
ký hiệu và các qui tắc có ích trong văn phạm G mà chúng thực sự là cần thiết trong quá
trình sinh ngôn ngữ mà thôi
3.2.1 Ký hiệu có ích và ký hiệu thừa:
Cho văn phạm phi ngữ cảnh G = <ồ,D,S,P>, X đ-ợc gọi là ký hiệu có ích, nếu tồn
tại suy dẫn S ├─ αXò ├─ w, ở đây α,ò ẻ(ồẩD)*, X ẻồẩD và wẻồ*
Nếu ký hiệu X không thỏa mãn điều kiện trên thì X gọi là ký hiệu thừa Nh- vậy
X là ký hiệu thừa nếu từ X không thể dẫn ra một xâu w ẻồ* Ký hiệu X có tính chất nh-
vậy còn đ-ợc gọi là ký hiệu vô sinh Nếu từ ký hiệu ban đầu S không dẫn đ-ợc một xâu
nào có chứa ký hiệu X thì ta nói X là ký hiệu không đến đ-ợc Nh- vậy một ký hiệu thừa
nếu nó là ký hiệu vô sinh hoặc là không đến đ-ợc
3.2.2 Bổ đề 1 (loại ký hiệu vô sinh)
Cho một VPPNC G = <ồ,D,S,P>, với L(G) ạặ Ta có thể xây dựng đ-ợc văn
phạm PNC G' = <ồ,D',S,P'>, t-ơng đ-ơng với G, sao cho mỗi A ẻD' có một xâu w ẻồ*
để A╞═ G w
Chứng minh: Duyệt tập sản xuất P của G và kết nạp dần các biến vào D' nh- sau:
- Nếu A đ w là một sản xuất, với AẻD,wẻồ* thì kết nạp A vào D'
Trang 8Ng Duc Thuan
- Nếu A đ X1X2 Xn là qui tắc trong P, mà Xiẻồ hoặc Xi là biến đã đ-ợc kết nạp
vào D' thì đ-a A vào D'
Quá trình xây dựng D' theo giải thuật sau:
Begin
1) D cũ := ặ; 2) D mới := {AẵAđ w, với wẻồ*};
3) While D cũ ạD mới do
begin
5) D mới := D cũ ẩ {AẵA đa với aẻ(ồẩDcũ)* }
end;
6) D' := D mới;
end
Ta thấy thuật toán là dừng vì P là hữu hạn Thiết lập P' gồm các sản xuất của P mà
các ký hiệu trong đó thuộc về D' ẩồ
Ngoài ra: nếu A đ-ợc đ-a vào D mới ở các dòng 2) hay 5) thì A suy dẫn ra một
xâu các ký hiệu kết thúc
Ng-ợc lại ta chứng minh rằng nếu A suy dẫn ra một xâu các ký hiệu kết thúc, thì
A tr-ớc sau sẽ đ-ợc đ-a vào D mới Chứng minh điều đó bằng qui nạp theo độ dài của suy
dẫn A╞═ w
Cơ sở qui nạp:
- Nếu độ dài suy dẫn là 1, thì A đw là một sản xuất, và A đ-ợc kết nạp vào D mới
ở b-ớc 2)
- Giả sử A ├─ X1X2 Xn╞═ w bởi suy dẫn k b-ớc Vậy có thể viết w = w1w2 wn,
trong đó Xi ╞═ wi, với 1 Ê i Ê n, bởi suy dẫn không đến k b-ớc.Theo giả thiết qui nạp, các
Xi là các b-ớc tr-ớc sau đ-ợc kết nạp vào D mới Ngay sau khi Xi đ-ợc kết nạp vào D mới
ở b-ớc 5), trở lại dòng 3) ta có Dcũ ạD mới vì Xi cuối cùng đó ch-a đ-ợc đ-a vào D cũ
Do đó vòng lặp While đ-ợc thực hiện thêm 1 lần nữa, và A sẽ đ-ợc kết nạp vào D mới ở
dòng 5)
Bây giờ chứng minh L(G') = L(G):
- Hiển nhiên L(G') Í L(G)
- Ng-ợc lại giả sử có w trong L(G) nh-ng không ở trong L(G') Vậy mỗi suy dẫn
của w trong G đều phải có dùng một biến trong D-D' hoặc có dùng một sản xuất trong P-P'
Nh- vậy tồn tại 1 biến D-D' cho phép suy dẫn ra một xâu các ký hiệu cuối Đó là mâu
thuẫn Vậy L(G) Í L(G').(đ.p.c.m)
3.2.3 Bổ đề 2 (loại ký hiệu không đến đ-ợc)
Cho một VPPNC G = <ồ,D,S,P>, ta có thể xây dựng đ-ợc văn phạm phi ngữ cảnh
G' t-ơng đ-ơng với G, ở đây G' = <ồ',D',S,P'>, sao cho mỗi X ẻồ'ẩD' đều tồn tại
a,bẻ(ồ'ẩD')* để S ├─ aXb
Chứng minh: a Xây dựng tập ồ' và D' nh- sau:
Trang 9Ng Duc Thuan
Đ-a ký hiệu S vào D' Nếu một biến A đã đ-ợc kết nạp vào D' và A đa, ở đây
aẻồ'ẩD' thì ta kết nạp các ký hiệu ch-a kết thúc trong a vào D', còn các ký hiệu kết thúc
trong a thì kết nạp vào ồ'
Thủ tục kết nạp trên sẽ ngừng khi không còn bổ sung thêm đ-ợc bất kỳ ký hiệu
nào nữa vào các tập ồ' và D'
b Tập các qui tắc P' đ-ợc xây dựng nh- sau:
P' bao gồm mọi qui tắc trong P mà các ký hiệu thuộc tập ồ'ẩD' Với cách xây
dựng đó ta có L(G) = L(G'), trong đó G' gồm các ký hiệu đến đ-ợc
Từ 2 bổ đề trên, ta có định lý:
3.2.4 Định lý : Mọi ngôn ngữ PNC không rỗng đều có thể đ-ợc sinh ra từ một văn
phạm phi ngữ cảnh không có ký hiệu thừa
Ví dụ 4: Cho văn phạm phi ngữ cảnh G = <ồ,D,S,P>, ở đây ồ={a}, D= {S,A,B},
P= {SđAB, Sđa, Ađa} văn phạm sinh ra ngôn ngữ L(G) = {a} ( tập gồm một xâu a)
Văn phạm phi ngữ cảnh G' nhận đ-ợc từ G bằng cách áp dụng các kết quả trên là
văn phạm không có ký hiệu thừa có dạng nh- sau:
G' = <ồ',D',S,P'>, với ồ'= {a}, D'={S}, P' = {S đ a}
Rõ ràng L(G') = L(G)= {a}
Chú ý : Việc áp dụng các 2 bổ đề trên để xây dựng NNPNC từ một VPPNC
không có ký hiệu thừa, nếu áp dụng theo thứ tự bổ đề 2 , rồi đến bổ đề 1, thì không
nhất thiết loại bỏ được hết các ký hiệu thừa
Ví dụ 5: Xét văn phạm :
S đ ABẵa
A đ a
áp dụng bổ đề 1, B bị loại cùng với sản xuất S đ AB
áp dụng bổ đề 2 cho văn phạm
S đ a
A đ a
ta thấy chỉ S và a là đến đ-ợc Vậy văn phạm t-ơng đ-ơng không chứa ký hiệu
thừa là <{a}, {S}, S ,{Sđa} >
Nếu tiến hành theo thứ tự ng-ợc lại, áp dụng bổ đề 2 tr-ớc ta không loại đ-ợc ký
hiệu nào, sau đó áp dụng bổ đề 1, ta loại B cùng S đ AB, Vậy văn phạm còn:
<{a},{S,A}, S , {Sđa, Ađa}> và vẫn chứa các ký hiệu vô ích A
3.2.5 Các e - sản xuất: Cho văn phạm phi ngữ cảnh G = <ồ,D,S,P> Nếu trong P
có sản xuất A đe, AẻD thì ta nói trong G có e-sản xuất Nếu eẻL(G), ta không thể loại
Trang 10Ng Duc Thuan
hết mọi e-sản xuất đ-ợc Ng-ợc lại eẽL(G), ta có thể loại bỏ toàn bộ e-sản xuất khỏi
L(G)
3.2.5.1 Định lý: Giả sử G = <ồ,D,S,P> là văn phạm phi ngữ cảnh và L(G) là ngôn
ngữ của văn phạm G Khi đó L\{e} là ngôn ngữ phi ngữ cảnh L(G') với văn phạm PNC G'
= <ồ',D',S,P'> không chứa các ký hiệu vô ích và không chứa các e-sản xuất
Chứng minh: Do định lý 3.2.4 không mất tính tổng quát, có thể xem L(G) không
chứa các ký hiệu vô ích Ta chỉ xét đến các e-sản xuất
Ký hiệu A ẻD đ-ợc gọi là ký hiệu triệt tiêu nếu tồn tại dẫn xuất A╞═ e Ta có thể
xác định các ký hiệu triệt tiêu bằng ph-ơng pháp sau:
a Nếu Ađe là một sản xuất trong P thì A là ký hiệu triệt tiêu
b Nếu B đa là một sản xuất trong P, mà a mọi ký hiệu trong a đều đã biết là
triệt tiêu đ-ợc, thì B cũng triệt tiêu đ-ợc; lặp lại quá trình đó cho đến khi không tìm thêm
đ-ợc ký hiệu triệt tiêu nào nữa
Tập P' đ-ợc xác định nh- sau:
Nếu A đ X1X2 Xn là một sản xuất trong P thì ta đ-a vào P' các sản xuất có dạng
A đa1a2a3 an, trong đó:
1 Nếu Xi là ký hiệu không triệt tiêu thì đặt ai = Xi
2 Nếu ký hiệu Xi là ký hiệu triệt tiêu thì ai = e hoặc ai = Xi
3 Nếu mọi ký hiệu Xi, là ký hiệu triệt tiêu thì thay ai = e với mọi i = 1,2, ,n (loại)
D’ = {AẻD, A có tham gia vào các sản xuất của P’Ư
Khi đó ta có thể kiểm chứng L(G') = L(G)- {e} (Việc kiểm tra xem nh- bài tập)
Ví dụ 6: Xét văn phạm phi ngữ cảnh G có các sản xuất sau:
S đ AB
A đ aAẵe
B đ bBẵe
áp dụng cách thành lập P trong định lý:
- từ sản xuất S đ AB, ta có S đ ABẵAẵB
- từ sản xuất A đ aA, ta có A đ aAẵa
- từ sản xuất B đ bB, ta có B đ bBẵb L-u ý rằng văn phạm mới G' không sản sinh e, trong khi G lại sản sinh e vậy
muốn có một văn phạm t-ơng đ-ơng G, thì phải bổ sung S đe vào G'
3.2.6 Các sản xuất đơn: (Unit Production) Cho văn phạm phi ngữ cảnh G =
<ồ,D,S,P> Nếu sản xuất trong P có dạng có dạng A đ B, ở đây A,B ẻD thì ta nói A đ B
là sản xuất đơn Sản xuất đơn có tác dụng làm kéo dài quá trình sinh ra ngôn ngữ, vì vậy
ta sẽ tìm cách loại sản xuất đơn mà không làm ảnh h-ởng tới quá trình sinh ra ngôn ngữ
của văn phạm đã cho
Chú ý : Sản xuất Ađ a với A ẻD và aẻồ không là sản xuất đơn