Văn phạm phi ngữ cảnh Context-Free Grammars MỤC ĐÍCH: Khái niệm về văn phạm phi ngữ cảnh; Sự nhập nhằng trong văn phạm phi ngữ cảnh; Rút gọn và chuẩn văn phạm phi ngữ cảnh; Các tính
Trang 1Automat a
Trang 2Bài 5 Văn phạm phi ngữ cảnh
(Context-Free Grammars)
MỤC ĐÍCH:
Khái niệm về văn phạm phi ngữ cảnh;
Sự nhập nhằng trong văn phạm phi ngữ cảnh;
Rút gọn và chuẩn văn phạm phi ngữ cảnh;
Các tính chất của văn phạm phi ngữ cảnh
Trang 3Bài 5 Văn phạm phi ngữ cảnh (CFG)
12/03/2023
3
5.1 Khái niệm văn phạm phi ngữ cảnh
5.2 Dẫn xuất, cây dẫn xuất trong CFG và CFL 5.3 Sự nhập nhằng trong CFG
5.4 Rút gọn văn phạm phi ngữ cảnh
5.4.1 Loại bỏ các ký hiệu thừa
5.4.2 Loại bỏ các luật sinh ε
5.4.3 Loại bỏ các luật sinh đơn vị
5.5 Chuẩn hóa các văn phạm phi ngữ cảnh
5.5.1 Dạng chuẩn Chomsky
5.5.2 Dạng chuẩn Greibach
5.6 Các tính chất của văn phạm phi ngữ cảnh
Automata và ngôn ngữ hình thức - ©copyright by PhD C.T.Ha, Le Quy Don
Technical University
Trang 4Bài 5 Văn phạm phi ngữ cảnh (CFG)
4
5.1 Khái niệm văn phạm phi ngữ cảnh
5.2 Dẫn xuất, cây dẫn xuất trong CFG và CFL 5.3 Sự nhập nhằng trong CFG
5.4 Rút gọn văn phạm phi ngữ cảnh
5.4.1 Loại bỏ các ký hiệu thừa
5.4.2 Loại bỏ các luật sinh ε
5.4.3 Loại bỏ các luật sinh đơn vị
5.5 Chuẩn hóa các văn phạm phi ngữ cảnh
5.5.1 Dạng chuẩn Chomsky
5.5.2 Dạng chuẩn Greibach
5.6 Các tính chất của văn phạm phi ngữ cảnh
Trang 55.1 Khái niệm văn phạm phi ngữ cảnh
12/03/2023
5
Ví dụ: các ngôn ngữ lập trình là CFL( thông thường được biểu diễn dưới dạng Backus - Naur Form - BNF)
<expression> ::= <expression> + <expression>
<expression> ::= <expression> * <expression>
<expression> ::= ( <expression> )
<expression> ::= <identifier>
Việc nghiên cứu các văn phạm phi ngữ cảnh đã tạo nên một cơ
sở lý luận vững chắc cho việc 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 chương trình dịch và cho nhiều ứng dụng khác về xử lý chuỗi Chẳng hạn, nó rất hữu ích trong việc mô tả các biểu thức số học với nhiều dấu ngoặc lồng nhau hoặc cấu trúc khối trong ngôn ngữ lập trình mà biểu thức chính quy không thể đặc tả Automata và ngôn ngữ hình thức - ©copyright by PhD C.T.Ha, Le Quy Don
Technical University
Trang 65.1 Khái niệm văn phạm phi ngữ cảnh
12/03/2023
6
Nhắc lại khái niệm: Văn phạm G là một bộ sắp
thứ tự gồm 4 thành phần G = < Σ, Δ, S, P >, trong đó:
Σ - bảng chữ cái, gọi là bảng chữ cái cơ bản (bảng chữ cái kết thúc – terminal symbol);
Δ , Δ ∩ Σ =Ø, gọi là bảng ký hiệu phụ (báng chữ cái không kết thúc – nonterminal symbol);
S ∈ Δ - ký hiệu xuất phát hay tiên đề (start
variable);
P - tập các luật sinh (production rules) dạng
α→β, α, β ∈ (Σ ∪ Δ)*, trong α chứa ít nhất một ký hiệu không kết thúc (đôi khi, ta gọi chúng là các
Automata và ngôn ngữ hình thức - ©copyright by PhD C.T.Ha, Le Quy Don
Trang 75.1 Khái niệm văn phạm phi ngữ cảnh
12/03/2023
7
Văn phạm loại 2 – Văn phạm phi ngữ cảnh (CFG – Context-Free Grammar): là văn phạm mà mọi luật sinh có dạng A→α với A là một biến đơn và α ∈ (Σ ∪ Δ)*
S aSb
S ab
Automata và ngôn ngữ hình thức - ©copyright by PhD C.T.Ha, Le Quy Don
Technical University
Trang 85.1 Khái niệm văn phạm phi ngữ cảnh
8
Phân loại văn phạm theo Chomsky:
Recursively enumerable
Context-sensitiveContext-free
RegularRegular
Trang 9Bài 5 Văn phạm phi ngữ cảnh (CFG)
12/03/2023
9
5.1 Khái niệm văn phạm phi ngữ cảnh
5.2 Dẫn xuất, cây dẫn xuất trong CFG và CFL
5.3 Sự nhập nhằng trong CFG
5.4 Rút gọn văn phạm phi ngữ cảnh
5.4.1 Loại bỏ các ký hiệu thừa
5.4.2 Loại bỏ các luật sinh ε
5.4.3 Loại bỏ các luật sinh đơn vị
5.5 Chuẩn hóa các văn phạm phi ngữ cảnh
5.5.1 Dạng chuẩn Chomsky
5.5.2 Dạng chuẩn Greibach
5.6 Các tính chất của văn phạm phi ngữ cảnh
Automata và ngôn ngữ hình thức - ©copyright by PhD C.T.Ha, Le Quy Don
Technical University
Trang 105.2 Dẫn xuất, cây dẫn xuất trong CFG
và CFL
10
Dẫn xuất: Nếu A là luật sinh trong văn phạm G và
, là 2 chuỗi bất kỳ, thì khi áp dụng luật sinh A
vào chuỗi A ta sẽ thu được chuỗi :
A→
Dẫn xuất gián tiếp: Giả sử: 1→ 2, 2→ 3, , m-1→
m, ta viết 1→ *m (chú ý rằng → * với mọi chuỗi )
Ngôn ngữ sinh bởi CFG: cho CFG G = < Σ, Δ, S, P >
L(G) = { ww Σ* và S *w } (chuỗi w gồm toàn ký hiệu kết thúc và được dẫn ra từ S)
Trang 115.2 Dẫn xuất, cây dẫn xuất trong CFG
X1, X2, , Xk thì A X1X2 Xk là một luật sinh trong P
(5) Nếu nút n có nhãn là ε} ) thì n phải là nút lá và là nút con duy nhất của nút cha của nó
Automata và ngôn ngữ hình thức - ©copyright by PhD C.T.Ha, Le Quy Don
Technical University
Trang 125.2 Dẫn xuất, cây dẫn xuất trong CFG và CFL
w1
A21
A1
Trang 135.2 Dẫn xuất, cây dẫn xuất trong CFG
b
b
S
aa
A
Trang 145.2 Dẫn xuất, cây dẫn xuất trong CFG
và CFL
14
Định lý 5.1: G = < Σ, Δ, S, P > là một CFG thì S → *
nếu và chỉ nếu có cây dẫn xuất trong văn phạm sinh ra .
Dẫn xuất trái nhất (phải nhất): nếu tại mỗi bước dẫn xuất, luật sinh được áp dụng vào biến bên trái nhất (phải nhất)
Ví dụ 5.4: Cho G: S AB; A aAa; B bBb;
(a) S → AB → aAB → aaAB → aaaB → aaabB → aaabb
(b) S → AB → AbB → Abb → aAbb → aaAbb → aaabb
(c) S → AB → aAB → aAbB → aAbb → aaAbb → aaabb
(d) S → AB → aAB → aaAB → aaAbB → aaabB → aaabb
Lưu ý: (a) là dẫn xuất trái nhất, (b) -phải nhất Các dãy ở trên có cùng một cây dẫn xuất.
Trang 15Bài 5 Văn phạm phi ngữ cảnh (CFG)
12/03/2023
15
5.1 Khái niệm văn phạm phi ngữ cảnh
5.2 Dẫn xuất, cây dẫn xuất trong CFG và CFL
5.3 Sự nhập nhằng trong CFG
5.4 Rút gọn văn phạm phi ngữ cảnh
5.4.1 Loại bỏ các ký hiệu thừa
5.4.2 Loại bỏ các luật sinh ε
5.4.3 Loại bỏ các luật sinh đơn vị
5.5 Chuẩn hóa các văn phạm phi ngữ cảnh
5.5.1 Dạng chuẩn Chomsky
5.5.2 Dạng chuẩn Greibach
5.6 Các tính chất của văn phạm phi ngữ cảnh
Automata và ngôn ngữ hình thức - ©copyright by PhD C.T.Ha, Le Quy Don
Technical University
Trang 165.3 Sự nhập nhằng trong CFG
16
Khái niệm: một văn phạm phi ngữ cảnh G có yếu tố
nhập nhằng (ambiguity) nếu tồn tại nhiều hơn một cây dẫn xuất cho cùng một chuỗi w.
Ví dụ 5.5: xét văn phạm G dạng:
E E + E E * E (E) a;
và với chuỗi a + a * a, có 2 cây dẫn xuất khác nhau:
a
E
E * E + E
a
a
(a + a) * a hay a + (a * a) ???
Trang 18Bài 5 Văn phạm phi ngữ cảnh (CFG)
18
5.1 Khái niệm văn phạm phi ngữ cảnh
5.2 Dẫn xuất, cây dẫn xuất trong CFG và CFL 5.3 Sự nhập nhằng trong CFG
5.4 Rút gọn văn phạm phi ngữ cảnh
5.4.1 Loại bỏ các ký hiệu thừa
5.4.2 Loại bỏ các luật sinh ε
5.4.3 Loại bỏ các luật sinh đơn vị
5.5 Chuẩn hóa các văn phạm phi ngữ cảnh
5.5.1 Dạng chuẩn Chomsky
5.5.2 Dạng chuẩn Greibach
5.6 Các tính chất của văn phạm phi ngữ cảnh
Trang 195.4 Rút gọn văn phạm phi ngữ cảnh
12/03/2023
19
Trong CFG có thể chứa các yếu tố thừa:
Các ký hiệu không tham gia vào quá trình dẫn
xuất ra chuỗi ký hiệu kết thúc;
Luật sinh dạng A B (làm kéo dài chuỗi dẫn
Không có luật sinh dạng A B (với A, B ∈ Δ)
Nếu ngôn ngữ không chấp nhận chuỗi rỗng ε} ) thì loại bỏ luật sinh A ε} )
Automata và ngôn ngữ hình thức - ©copyright by PhD C.T.Ha, Le Quy Don
Technical University
Trang 20Bài 5 Văn phạm phi ngữ cảnh (CFG)
20
5.1 Khái niệm văn phạm phi ngữ cảnh
5.2 Dẫn xuất, cây dẫn xuất trong CFG và CFL 5.3 Sự nhập nhằng trong CFG
5.4 Rút gọn văn phạm phi ngữ cảnh
5.4.1 Loại bỏ các ký hiệu thừa
5.4.2 Loại bỏ các luật sinh ε
5.4.3 Loại bỏ các luật sinh đơn vị
5.5 Chuẩn hóa các văn phạm phi ngữ cảnh
5.5.1 Dạng chuẩn Chomsky
5.5.2 Dạng chuẩn Greibach
5.6 Các tính chất của văn phạm phi ngữ cảnh
Trang 215.4 Rút gọn văn phạm phi ngữ cảnh
12/03/2023
21
Định nghĩa 5.3: một ký hiệu X được gọi là có ích
nếu có một dẫn xuất dạng S * X* w với ,
là các chuỗi bất kỳ và w Σ*
Bổ đề 5.1: Cho CFG G = < Σ, Δ, S, P > với L(G) ≠
Ø, có một CFG G = < Σ’, Δ’, S, P’ > tương đương
sao cho mỗi A Δ’ tồn tại w Σ* để A * w.
Ý nghĩa: Có thể loại bỏ các biến không dẫn ra
chuỗi ký hiệu kết thúc.
Automata và ngôn ngữ hình thức - ©copyright by PhD C.T.Ha, Le Quy Don
Technical University
Trang 22(2) NewΔ' := { A A w với w T* };
(3) while (OldΔ' NewΔ' ) do {
(4) OldΔ' := NewΔ';
(5) NewΔ' := OldΔ' {A A ; (Σ OldΔ’)* }
};
(6) Δ' := NewΔ’;
Bổ đề 5.2: Cho CFG G = <Σ, Δ, S, P>, ta có thể
tìm được CFG G = < Σ’, Δ’, S, P’ > tương đương
sao cho mỗi X (Δ' Σ') tồn tại , (Δ' Σ')*
để S * X
Ý nghĩa: Có thể loại bỏ các biến không dẫn ra từ
Automata và ngôn ngữ hình thức - ©copyright by PhD C.T.Ha, Le Quy Don
Technical University
Trang 23Thêm X trong vào Δ’ ;
(3) Lặp lại bước (2) cho đến khi không còn biến
nào được thêm vào nữa
Automata và ngôn ngữ hình thức - ©copyright by PhD C.T.Ha, Le Quy Don
Technical University
Trang 245.4 Rút gọn văn phạm phi ngữ cảnh
24
Định lý 5.2: Mỗi một ngôn ngữ phi ngữ cảnh (CFL)
không rỗng được sinh ra từ một văn phạm phi ngữ cảnh (CFG) không có ký hiệu vô ích
Ví dụ 5.6: xét văn phạm G = < Σ, Δ, S, P > :
S → A; A → aBb | ε} ); B → A | cB | cC
Trang 25Bài 5 Văn phạm phi ngữ cảnh (CFG)
12/03/2023
25
5.1 Khái niệm văn phạm phi ngữ cảnh
5.2 Dẫn xuất, cây dẫn xuất trong CFG và CFL 5.3 Sự nhập nhằng trong CFG
5.4 Rút gọn văn phạm phi ngữ cảnh
5.4.1 Loại bỏ các ký hiệu thừa
5.4.2 Loại bỏ các luật sinh ε
5.4.3 Loại bỏ các luật sinh đơn vị
5.5 Chuẩn hóa các văn phạm phi ngữ cảnh
5.5.1 Dạng chuẩn Chomsky
5.5.2 Dạng chuẩn Greibach
5.6 Các tính chất của văn phạm phi ngữ cảnh
Automata và ngôn ngữ hình thức - ©copyright by PhD C.T.Ha, Le Quy Don
Technical University
Trang 265.4 Rút gọn văn phạm phi ngữ cảnh
26
Định lý 5.3: Cho CFG G(Σ, Δ, S, P) và L là ngôn ngữ sinh ra bởi G Khi đó L –{ε} )} là ngôn ngữ sinh
ra bởi CFG G(Σ’, Δ’, S, P’) không có ký hiệu vô ích
và không có luật sinh ε} )
Ý nghĩa: loại bỏ luật sinh dạng A ε.
Trang 275.4 Rút gọn văn phạm phi ngữ cảnh
12/03/2023
27
Giải thuật loại bỏ luật sinh dạng A ε: Xét G =
< Σ, Δ, S, P >, G’ = < Σ, Δ, S, P’ > không chứa luật sinh ε} )
Bước 1:
Ω := ;
Nếu luật sinh A ε} ) thì thêm A vào Ω;
Nếu B X1X2 Xn, Xi Ω thêm B vào Ω;
Bước 2: Xây dựng P’ Với mỗi luật A X1X2 Xn , Xi
(Σ+Δ)trong P, ta xây dựng luật sinh A 12ntrong P’ với điều kiện:
Nếu Xi Ω thì i = Xi
Nếu Xi Ω thì i = Xi ε} )
Không gán đồng thời tất cả i đều bằng ε} )
Automata và ngôn ngữ hình thức - ©copyright by PhD C.T.Ha, Le Quy Don
Technical University
Trang 29Bài 5 Văn phạm phi ngữ cảnh (CFG)
12/03/2023
29
5.1 Khái niệm văn phạm phi ngữ cảnh
5.2 Dẫn xuất, cây dẫn xuất trong CFG và CFL 5.3 Sự nhập nhằng trong CFG
5.4 Rút gọn văn phạm phi ngữ cảnh
5.4.1 Loại bỏ các ký hiệu thừa
5.4.2 Loại bỏ các luật sinh ε
5.4.3 Loại bỏ các luật sinh đơn vị
5.5 Chuẩn hóa các văn phạm phi ngữ cảnh
5.5.1 Dạng chuẩn Chomsky
5.5.2 Dạng chuẩn Greibach
5.6 Các tính chất của văn phạm phi ngữ cảnh
Automata và ngôn ngữ hình thức - ©copyright by PhD C.T.Ha, Le Quy Don
Technical University
Trang 305.4 Rút gọn văn phạm phi ngữ cảnh
30
Định lý 5.4: Mỗi CFL không chứa ε} ) được sinh ra bởi CFG không có ký hiệu vô ích, không có luật sinh ε} ) hoặc luật sinh đơn vị.
Ý nghĩa: loại bỏ các luật sinh đơn vị làm dài dẫn xuất.
Chứng minh: Cho G=(Σ, Δ, S, P), đặt L(G) là CFL sinh
ra bởi G và không chứa ε} ).
Theo bổ đề 5.1, 5.2 có thể loại bỏ các ký hiệu vô ích.
Theo ĐL 3, ta có thể loại bỏ tất cả luật sinh ε} ) trong G.
Để chứng minh định lý 5.4 ta chỉ ra giải thuật xây dựng CFG không có luật sinh đơn vị Xét G = < Σ, Δ,
S, P >, ta xây dựng G’ = < Σ, Δ, S, P’> không chứa
luật sinh đơn vị.
Trang 31for (mỗi biến B ΔA){
for (mỗi luật sinh B thuộc P){
if (B không là luật sinh đơn vị) {
Thêm luật sinh A vào P’;
} }
} }
Automata và ngôn ngữ hình thức - ©copyright by PhD C.T.Ha, Le Quy Don
Technical University
Trang 32ΔT = {T, F} thêm vào P' : T T * F (E) a
ΔF = {F} thêm vào P' : F (E) a
Trang 33Bài 5 Văn phạm phi ngữ cảnh (CFG)
12/03/2023
33
5.1 Khái niệm văn phạm phi ngữ cảnh
5.2 Dẫn xuất, cây dẫn xuất trong CFG và CFL 5.3 Sự nhập nhằng trong CFG
5.4 Rút gọn văn phạm phi ngữ cảnh
5.4.1 Loại bỏ các ký hiệu thừa
5.4.2 Loại bỏ các luật sinh ε
5.4.3 Loại bỏ các luật sinh đơn vị
5.5 Chuẩn hóa các văn phạm phi ngữ cảnh
5.5.1 Dạng chuẩn Chomsky
5.5.2 Dạng chuẩn Greibach
5.6 Các tính chất của văn phạm phi ngữ cảnh
Automata và ngôn ngữ hình thức - ©copyright by PhD C.T.Ha, Le Quy Don
Technical University
Trang 345.5 Dạng chuẩn Chomsky
34
Dạng chuẩn Chomsky (CNF): Văn phạm CFG
G(Σ, Δ, S, P) có dạng chuẩn Chomsky nếu tất cả
các luật sinh của nó có dạng A → BC hoặc A → a
(nếu ε} ) ∉ L, ngược lại chỉ cần luật sinh S → ε} ))
Trang 35Bước 1: thay thế tất cả các luật sinh có độ dài vế phải là 1
Áp dụng định lý 5.4 để loại bỏ luật sinh đơn vị và ε} )
Bước 2: thay thế tất cả luật sinh có độ dài vế phải lớn hơn
Dm-2 Bm-1 Bm
Trang 36S aA a bB b ABA;
A aA a bB b; B bB bBước 2: thay a bằng Ca và b bằng Cb trong các luật sinh có độ dài vế phải > 1:
S CaA a CbB b ABA
A CaA a CbB b; B CbB b
C a; C b
Trang 38Bài 5 Văn phạm phi ngữ cảnh (CFG)
38
5.1 Khái niệm văn phạm phi ngữ cảnh
5.2 Dẫn xuất, cây dẫn xuất trong CFG và CFL 5.3 Sự nhập nhằng trong CFG
5.4 Rút gọn văn phạm phi ngữ cảnh
5.4.1 Loại bỏ các ký hiệu thừa
5.4.2 Loại bỏ các luật sinh ε
5.4.3 Loại bỏ các luật sinh đơn vị
5.5 Chuẩn hóa các văn phạm phi ngữ cảnh
5.5.1 Dạng chuẩn Chomsky
5.5.2 Dạng chuẩn Greibach
5.6 Các tính chất của văn phạm phi ngữ cảnh
Trang 395.6 Dạng chuẩn Greibach
12/03/2023
39
Dạng chuẩn Greibach (GNF): Văn phạm CFG G(Σ, Δ,
S, P) có dạng chuẩn Greibach nếu các luật sinh của nó có dạng A → aα (α là chuỗi các ký hiệu phụ hoặc ε} ) nếu ε} ) ∉ L; ngược lại thêm vào luật sinh S → ε} )).
Bổ đề 5.3: Cho G(Σ, Δ, S, P) là một CFG, đặt A 1B2
là luật sinh trong P và B 12 r là các B - luật sinh; Văn phạm G1(Σ, Δ1, S, P1) thu được từ G bằng cách loại bỏ luật sinh A 1B2 và thêm vào các luật sinh
A 1121221r2tương đương G.
Ý nghĩa: áp dụng để thay thế các luật sinh trực tiếp
Automata và ngôn ngữ hình thức - ©copyright by PhD C.T.Ha, Le Quy Don
Technical University
Trang 405.6 Dạng chuẩn Greibach
12/03/2023
40
Bổ đề 5.4: Đặt G(Σ, Δ, S, P) là CFG; A A1A2Ar
là tập các A – luật sinh có A là ký hiệu trái nhất của vế phải (luật sinh đệ quy trái) Đặt A 12 s là các A - luật sinh còn lại;
G1(Σ, Δ{B}, S, P1) là CFG được tạo thành bằng cách thêm biến mới B và thay các A - luật sinh bằng các luật dạng:
A i; A iB; (1 ≤ i ≤ s)
B i; B iB; (1 ≤ i ≤ r) thì ta có G1 tương đương G, hay L(G) = L(G1).
Ý nghĩa: dùng loại bỏ văn phạm đệ quy trái.
Định lý 5.6: Mỗi CFL bất kỳ không chứa ε} ) được sinh ra bởi một CFG mà mỗi luật sinh có dạng A a với A là
Automata và ngôn ngữ hình thức - ©copyright by PhD C.T.Ha, Le Quy Don
Technical University
Trang 415.6 Dạng chuẩn Greibach
12/03/2023
41
Giải thuật đưa về dạng chuẩn Greibach (GNF):
Đặt G là CFG sinh ra CFL không chứa ε} )
Bước 1: xây dựng G' có dạng CNF tương đương G
Bước 2: đổi tên các biến trong G' thành A1, A2, ,
Am (m ≥1 ) với A1 là ký hiệu bắt đầu Đặt V = {A1,
Trang 42(5) Loại bỏ luật sinh A k A j
} (6) forearch (luật sinh dạng A k A k)
(7) Thêm các luật B k và B k B k ;
(8) Loại bỏ luật A k A k
(9) forearch (luật sinh Ak mà không bắt đầu bằng A k )
Thêm luật sinh A B