You are on page 1of 16

CHƯƠNG 3: VĂN PHẠM PHI NGỮ CẢNH (VPPNC)

VÀ VĂN PHẠM CHÍNH QUY (VPCQ)

• Xuất xứ và định nghĩa của VPPNC


1
• Cây suy dẫn và sự nhập nhằng trong VPPNC
2
• Văn phạm chính quy
3
• Giản lược các VPPNC
4
• Dạng chuẩn Chomsky
5
• Một số bài toán quyết định đối với các NNPNC
6
1. XUẤT XỨ VÀ ĐỊNH NGHĨA CỦA VPPNC
1.1. Xuất xứ: từ việc mô tả các ngôn ngữ tự nhiên
<Chủ ngữ> → <Danh ngữ> <Câu> <Câu> → <Chủ ngữ> <Vị ngữ>
... <Chủ ngữ> <Vị ngữ>
<Danh từ> → <Bò>
... <Danh ngữ> <Động từ> <Bổ ngữ>

<Danh từ> <Tính từ> <Danh ngữ>

<Danh từ> <Tính từ>

Bò vàng gặm cỏ non


1. XUẤT XỨ VÀ ĐỊNH NGHĨA CỦA VPPNC
1.1. Xuất xứ: từ việc mô tả các ngôn ngữ tự nhiên
- Các quy tắc cú pháp như <Câu> → <Chủ ngữ> <Vị ngữ>
chính là thuộc dạng các quy tắc trong VPPNC.
- Ban đầu các nhà ngôn ngữ học đã đặt hy vọng vào mô
hình văn phạm phi ngữ cảnh. Nhưng khi nghiên cứu
thêm thì các nhà ngôn ngữ thấy mô hình này còn quá
chật hẹp, khó diễn tả hết được sự phong phú và linh
hoạt trong các ngôn ngữ tự nhiên.
1. XUẤT XỨ VÀ ĐỊNH NGHĨA CỦA VPPNC
1.1. Xuất xứ: từ việc mô tả các ngôn ngữ tự nhiên
- Chính các nhà Tin học, với nhu cầu biểu diễn các ngôn ngữ lập trình, đã tìm
thấy ở VPPNC một khuôn khổ thích hợp.
VD: Biểu thức: (db + db) * db
được sinh ra như sau:

- Việc nghiên cứu các VPPNC đã tạo nên một cơ sở lý luận vững chắc cho việc
biểu diễn các ngôn ngữ lập trình, cho 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.
1. XUẤT XỨ VÀ ĐỊNH NGHĨA CỦA VPPNC
1.2. Định nghĩa VPPNC
Một VPPNC là một hệ thống:
G = (, , P, S), trong đó:
+  là tập hữu hạn các ký hiệu kết thúc (ký hiệu cuối)
+  là tập hữu hạn các ký hiệu không kết thúc (ký hiệu trung
gian hay biến),   =
+ S   gọi là ký hiệu đầu
+ P là tập hữu hạn các sản xuất có dạng: (bị hạn chế)
A

Dạng tổng quát: , 


1. XUẤT XỨ VÀ ĐỊNH NGHĨA CỦA VPPNC
1.3. Ngôn ngữ sản sinh bởi VPPNC
- Một VPPNC tạo thành một hệ viết lại sản sinh:
W = (V, P) với tiên đề {S}, với cách thiết lập quan hệ suy dẫn
trực tiếp (=>) và suy dẫn (=>* ) như trong chương 1
- Từ đó ngôn ngữ sản sinh bởi văn phạm G được định nghĩa là:
L(G) = {w | w  * và S =>* w}
- L(G) được gọi là một ngôn ngữ phi ngữ cảnh (NNPNC)
- Hai văn phạm G1 và G2 được gọi là tương đương khi và chỉ
khi L(G1) = L(G2)
- Nếu S =>* và (
1. XUẤT XỨ VÀ ĐỊNH NGHĨA CỦA VPPNC
1.4. Quy ước về cách viết
1. XUẤT XỨ VÀ ĐỊNH NGHĨA CỦA VPPNC
VD: Cho trước VPPNC, tìm ngôn ngữ

Bài tập thêm: Tìm ngôn ngữ được sản sinh bởi các VPPNC:
a) G = ({a, b}, {S,}, S, {S aS | Sbb | c}
b) G = ({0, 1}, {S, A}, S, {S 0A, A A1 | 00)
1. XUẤT XỨ VÀ ĐỊNH NGHĨA CỦA VPPNC
Bài tập: Cho trước ngôn ngữ, Lập VPPNC

Bài tập thêm: { dj ej ai+1 bi | i, j 1}, { ai (bc)j di | i, j1}, { ai+2 (bc)j di | i, j1}
2. CÂY SUY DẪN VÀ SỰ
BàiNHẬP NHẰNG
tập: Tìm suy TRONG
dẫn bên trái VPPNC
nhất, suy dẫn bên phải nhất
của xâu aaaabaa và lập cây suy dẫn của suy dẫn đó.
2.1. Cây suy dẫn
Thí dụ 3.3: Xét VPPNC G có tập sản xuất là:
1) S aAS 2) S a - Cây suy dẫn tương ứng:
3) A SbA 4) A SS 5) Aba 1
- Giả sử có suy dẫn:
2
1 3 2 2 5 3
S=>aAS=>aSbAS=>aSbAa=>aabAa=>aabbaa
- Nếu đọc các nhãn của các nút lá theo thứ tự từ trái 2 5
qua phải, ta có một dạng câu và gọi đó là kết quả của
cây suy dẫn, VD: aabbaa
- Một cây suy dẫn ứng với nhiều suy dẫn. Các suy dẫn này có
cùng độ dài vì cùng áp dụng một số các sản xuất như nhau và
chỉ khác nhau ở thứ tự áp dụng các sản xuất. 1 3 2 5 2
S=>aAS=>aSbAS=>aabAS=>aabbaS=>aabbaa
- Suy dẫn bên trái nhất (thay biến bên trái trước) :
1 2 3 5 2
- Suy dẫn bên phải nhất (thay biến bên phải trước:S=>aAS=>aAa=>aSbAa=>aSbbaa=>aabbaa
2. CÂY SUY DẪN VÀ SỰ NHẬP NHẰNG TRONG VPPNC
2.2. Sự nhập nhằng trong VPPNC

Thí dụ 3.5: Xét VPPNC


G, có tập sản xuất là: Cách phân tích 1: Cách phân tích 2:
E E+E | E*E | (E) | a
Khi đó xâu: a + a * a
Sẽ có 2 cách phân tích:

Bài tập về nhà: 3.2, 3.3


3. VĂN PHẠM CHÍNH QUY (VPCQ)
3.1. Định nghĩa VPCQ
- Một VPPNC được gọi là một văn - Một VPPNC được gọi là một văn
phạm chính quy phải (VPCQP) phạm chính quy trái (VPCQT) nếu
nếu các sản xuất của nó chỉ có hai các sản xuất của nó chỉ có hai
dạng: dạng:
1) A aB (biến bên phải) 1) A Ba (biến bên trái)
2) A a, với a và A, B 2) A a, với a và A, B
- Các văn phạm chính quy phải và trái được gọi chung là VPCQ.
- Người ta lấy từ “chính quy” để đặt tên cho các văn phạm trên bởi chúng sản
sinh ra các ngôn ngữ chính quy (sai khác xâu ), tức là các ngôn ngữ được đoán
nhận bởi các ÔH, hay được chỉ định bởi các BTCQ.
3. VĂN PHẠM CHÍNH QUY (VPCQ)
3.2. Cách Lập VPCQP tương đương với ÔH
Cho ÔH M=(, Q, , q0, F)
Tìm VPCQP tương đương G = (, , P, S), với:
- = Q VD: Cho ÔH: a
- S= q0 Đầu a b
A B C
- Tập sản xuất P được tính như sau:
Có VPCQP tương đương là:
1) Nếu (q, a) = p thì có sản xuất:
- = {A, B, C}
a
q ap q p - A là ký hiệu đầu
2) Nếu (q, a)  F thì có sản xuất: - P={A aB, bC, b
a C aC, C a}
qa q p Ngôn ngữ xác định L= { aban, n ≥ 0}
3. VĂN PHẠM CHÍNH QUY (VPCQ)
3.3. Định nghĩa văn phạm tuyến tính (VPTT)
- Một VPPNC được gọi là một văn - Một VPPNC được gọi là một văn
phạm tuyến tính phải (VPTTP) nếu phạm tuyến tính trái (VPTTT) nếu
các sản xuất của nó chỉ có hai các sản xuất của nó chỉ có hai
dạng: dạng:
1) A xB (biến bên phải) 1) A Bx (biến bên trái)
2) A x, với x+ và A, B   2) A x, với x+ và A, B  
- Như vậy VPCQ trái/phải là VPTT trái/phải với |x|=1
- Các văn phạm tuyến tính phải và trái được gọi chung là VPTT.
- VPTT <=> VPCQ
3. VĂN PHẠM CHÍNH QUY (VPCQ)
3.4. Cách Lập VPTTP tương đương với ÔH
- Tương tự cách lập VPCQP tương đương với ÔH, chỉ khác là có thể
bỏ các trạng thái trung gian (chỉ đi một hướng) a Bài tập
VD: Cho ÔH: a Đầu b a
A B C
Đầu a b
A B C
a b
Có VPCQP tương đương là: D
- = {A, B, C} Có VPTTP tương đương là:
- A là ký hiệu đầu - = {A, C}
- P={A aB, bC, b - A là ký hiệu đầu
C aC, C a} - P={A abC, A ab,
Ngôn ngữ xác định L= { aban, n ≥ 0}
C aC, C a}
3. VĂN PHẠM CHÍNH QUY (VPCQ)
3.5. Tóm tắt các kết quả của lớp các NNCQ

Bài tập: 3.4, 3.5, 3.8, 3.11

You might also like