Regular Expressions Alphabet S 1. Æ, l và a Î å là các bi u th c chính quy. Nh ng bi u th ể ứ ữ ể ức này gọi là các biểu thức chính qui nguyên tố. 1. Nếu r1 và r2 là các biểu thức chính quy thì r1 + r2,
Trang 1Chương 3 Ngôn ngữ chính qui và văn
phạm chính qui
3.1 Biểu thức chính qui (Regular Expression)
3.2 Mối quan hệ giữa BTCQ và ngôn ngữ chính qui
3.3 Văn phạm chính qui (Regular Grammar)
Trang 2Biểu thức chính qui
Biểu thức chính qui (BTCQ) là gì?
Là một sự kết hợp các chuỗi kí hiệu của một bảng chữ cái ∑
nào đó, các dấu ngoặc, và các phép toán +, , và * trong đó
phép + biểu thị cho phép hội, phép biểu thị cho phép kết nối,
phép * biểu thị cho phép bao đóng sao.
Ví dụ
Ngôn ngữ {a} được biểu thị bởi BTCQ a.
Ngôn ngữ {a, b, c} được biểu thị bởi BTCQ a + b + c.
Ngược lại BTCQ (a + b.c)* biểu thị cho ngôn ngữ {λ, a, bc, aa,
abc, bca, bcbc, aaa, aabc, }.
Trang 3Định nghĩa hình thức BTCQ
Định nghĩa 3.1
Cho ∑ là một bảng chữ cái, thì
1 ∅, λ, và a ∈ ∑ tất cả đều là những BTCQ hơn nữa chúng được
gọi là những BTCQ nguyên thủy.
2 Nếu r1 và r2 là những BTCQ, thì r1 + r2, r1 r2, r1*, và (r1) cũng vậy
3 Một chuỗi là một BTCQ nếu và chỉ nếu nó có thể được dẫn
xuất từ các BTCQ nguyên thủy bằng một số lần hữu hạn áp
dụng các quy tắc trong (2)
Ví dụ
Cho ∑ = {a, b, c}, thì chuỗi (a + b.c)*.(c + ∅) là BTCQ, vì nó
được xây dựng bằng cách áp dụng các qui tắc ở trên Còn (a + b
+) không phải là BTCQ
Trang 4Ngôn ngữ tương ứng với BTCQ
Định nghĩa 3.2
Ngôn ngữ L(r) được biểu thị bởi BTCQ bất kỳ là được định
nghĩa bởi các qui tắc sau
Trang 5Ngôn ngữ tương ứng với BTCQ (tt)
Qui định về độ ưu tiên
Độ ưu tiên của các phép toán theo thứ tự từ cao đến thấp là
= {λ, a, aa, aaa, }{a, b}
= {a, aa, aaa, , b, ab, aab, }
Trang 8 Trong một số tài liệu phép cộng (+) được kí hiệu bằng dấu |
thay cho dấu + Chẳng hạn (a + b).c thì được viết là (a | b).c
Trang 11Thủ tục: re-to-nfa (tt)
B2 Xây dựng các nfa cho các BTCQ phức tạp
nfa cho BTCQ r1 + r2
hoặcλ
λλ
Trang 121 Không có cạnh đi ra q f1 hoặc
2 Không có cạnh đi vào q02
Trang 13Thủ tục: re-to-nfa (tt)
nfa cho BTCQ r*
λ λ
Trang 14Hoặc theo
phương pháp
cải tiến
Trang 15 r5 = (ab* + a*b)(a + b*a)* b
r6 = (b + a*)(ba* + ab)*(b*a + ab)
Trang 17Đồ thị chuyển trạng thái tổng quát
Hình bên biểu diễn một ĐTCTTTQ
NN được chấp nhận bởi nó là L(a*(a + b)c*)
Trang 18Rút gọn trạng thái của ĐTCTTTQ
Để tìm BTCQ cho một ĐTCTTTQ ta sẽ thực hiện quá trình rút gọn các trạng thái trung gian của nó thành ĐTCTTTQ tương đương đơn giản nhất có thể được
Trạng thái trung gian
Là trạng thái mà không phải là trạng thái khởi đầu, cũng không phải là trạng thái kết thúc
a d
b c
Trang 21BTCQ dùng để mô tả các mẫu đơn giản
Trang 22Văn phạm chính qui
Văn phạm tuyến tính - phải và – trái.
Văn phạm tuyến tính - phải sinh ra NNCQ.
Văn phạm tuyến tính - phải cho NNCQ.
Sự tương đương giữa VPCQ và NNCQ.
Trang 23Văn phạm tuyến tính - phải và - trái
Định nghĩa 3.3
Một văn phạm G = (V, T, S, P) được gọi là tuyến tính - phải
(TT-P) (right-linear) nếu tất cả luật sinh là có dạng
A → xB
A → x trong đó A, B ∈ V, x ∈ T* Một văn phạm được gọi là tuyến
tính - trái (TT-T) (left-linear) nếu tất cả các luật sinh là có dạng
A → Bx
A → x
Một văn phạm chính qui (VPCQ) là hoặc tuyến tính-phải hoặc tuyến tính-trái
Trang 25 Văn phạm tuyến tính (Linear Grammar)
Một văn phạm được gọi là tuyến tính nếu mọi luật sinh của nó
có dạng có tối đa một biến xuất hiện ở vế phải của luật sinh vàkhông có sự giới hạn nào trên vị trí xuất hiện của biến này
Trang 26B1 Ứng với mỗi biến V i của văn phạm ta xây dựng một trạng thái
mang nhãn V i cho nfa tức là: Q ⊃ V.
B2 Ứng với biến khởi đầu V0, trạng thái V0 của nfa sẽ trở thành trạng
thái khởi đầu, tức là: S = V0
B3 Nếu trong văn phạm có một luật sinh nào đó dạng V i → a1a2…a m
thì thêm vào nfa một và chỉ một trạng thái kết thúc V f
Trang 31Sự tương đương giữa VPCQ và NNCQ
Trang 32Sự tương đương giữa VPCQ và NNCQ
1 Ứng với luật sinh TT-T A → Bv ta xây dựng luật sinh TT-P A → v R B.
2 Ứng với luật sinh TT-T A → v ta xây dựng luật sinh TT-P A → v R.
G P được xây dựng theo cách trên có quan hệ với G T như sau