Tài liệu này dành cho sinh viên, giáo viên khối ngành công nghệ thông tin tham khảo và có những bài học bổ ích hơn, bổ trợ cho việc tìm kiếm tài liệu, giáo án, giáo trình, bài giảng các môn học khối ngành công nghệ thông tin
Trang 1Nguyễn Phương Thái
Bộ môn Khoa học Máy tính
http://www.coltech.vnu.vn/~thainp/
Trang 2 Cú pháp
Trang 3 Văn phạm
Phân loại văn phạm của Chomsky
Cây phân tích, dẫn xuất, và văn
phạm nhập nhằng
Ôtômát đẩy xuống
Trang 4 Một ngôn ngữ L trên bộ chữ Σ là một
tập con của Σ*
Bài toán đối với L:
Trang 5 Thường dùng: văn phạm
hiệu quả
đã được nghiên cứu kỹ
văn phạm = ngữ pháp = cú pháp
Trang 7 S gọi là ký hiệu khởi đầu
là các sản xuất hay luật cú pháp (→)
Trang 8Ví dụ:
= {“bò”, “vàng”, “gặm”, “cỏ”, “non”bò”, “vàng”, “gặm”, “cỏ”, “non””, “bò”, “vàng”, “gặm”, “cỏ”, “non”vàng”, “gặm”, “cỏ”, “non””, “bò”, “vàng”, “gặm”, “cỏ”, “non”g”, “gặm”, “cỏ”, “non”ặm”, “cỏ”, “non””, “bò”, “vàng”, “gặm”, “cỏ”, “non”cỏ”, “non””, “bò”, “vàng”, “gặm”, “cỏ”, “non”non”}
= {<câu>,<chủ ngữ>, <vị ngữ>, câu>,<câu>,<chủ ngữ>, <vị ngữ>, chủ ngữ>, <câu>,<chủ ngữ>, <vị ngữ>, vị ngữ>,
<câu>,<chủ ngữ>, <vị ngữ>, danh ngữ>, <câu>,<chủ ngữ>, <vị ngữ>, động từ>, <bổ ngữ>, >, <câu>,<chủ ngữ>, <vị ngữ>, bổ ngữ>,
<câu>,<chủ ngữ>, <vị ngữ>, danh từ>, <bổ ngữ>, >, <câu>,<chủ ngữ>, <vị ngữ>, tính từ>, <bổ ngữ>, > }
Trang 9Các qui ước:
Dùng các chữ in hoa A, B, C, D, E hoặc cụm từ>, <bổ ngữ>, trong
cặp ngoặc nhọn (như <câu>,<chủ ngữ>, <vị ngữ>, chủ ngữ>) để trỏ các ký hiệu
không kết thúc;
Dùng các chữ thường a, b, c, d, e và các con số, các
phép toán +, -, *, /, cặp ngoặc đơn để trỏ các ký hiệu
kết thúc Trong một số trường hợp dùng qui ước là
một từ>, <bổ ngữ>, được in đậm (như số và chữ) hoặc cụm từ>, <bổ ngữ>,
trong cặp ngoặc kép (như "bò");
gồm các biến và ký hiệu cuối;
Nếu có các sản xuất cùng vế trái A và A thì
ta viết gộp lại cho gọn thành A | Các sản xuất
có cùng một kí hiệu không kết thúc vế trái có thể gọi
chung bằng tên kí hiệu vế trái Ví dụ, sản xuất-A.
Trang 10 V+ cũng như vậy trừ>, <bổ ngữ>, xâu rỗng;
| | là ký hiệu độ dài xâu (ví dụ |
| là độ dài của xâu );
Ký hiệu là một kí hiệu đặc biệt,
chỉ xâu rỗng hoặc kí hiệu rỗng
Trang 11 Định nghĩa suy dẫn (derivation): Cho
văn phạm G = (, , P, S) như trên,
ta gọi suy dẫn trực tiếp là một quan
hệ hai ngôi ký hiệu trên tập V* nếu
là một xâu thuộc V* và là
một sản xuất trong P, thì
Suy dẫn k bước k
Xâu suy dẫn xâu : *
Suy dẫn không tầm thường: +
Trang 12 Định nghĩa: Ngôn ngữ của văn phạm
G là tập hợp các xâu ký hiệu kết thúc,
ta ký hiệu là L(G), được sinh ra từ>, <bổ ngữ>, S,
hoặc được phân tích (đoán nhận) về
S:
L(G) = { w | w * và S * w }
hoặc:
L(G) = { w | w * và w * S }
Trang 13 Định nghĩa: Hai văn phạm G1 và G2
(sản sinh hoặc đoán nhận) là tương
đương khi và chỉ khi L(G1) = L(G2)
Trang 15Cho văn phạm G = (, , P, S), ta gọi
nó là văn phạm:
structure) nếu sản xuất có dạng:
trong đó V+, V*
hoặc cũng có thể nói, lớp văn phạm này
không bị ràng buộc gì.
Trang 17 Lớp 2, văn phạm phi ngữ cảnh
(context free - viết tắt là VPPNC) nếu
sản xuất có dạng:
A trong đó A , V*
Trang 18 Lớp 3, văn phạm chính quy (regular -
viết tắt là VPCQ) nếu sản xuất có
dạng:
A a, A Ba trong đó A, B , a
hoặc tương tự
A a, A aB với A, B , a
Trang 190 1 2 3
Trang 20 Ngôn ngữ loại 0 được đoán nhận bởi một
máy Turing;
Ngôn ngữ loại 1 (cảm ngữ cảnh) được đoán nhận bởi một ôtômát tuyến tính giới nội
(sai khác xâu rỗng);
Ngôn ngữ loại 2 (phi ngữ cảnh - viết tắt là
NNPNC) đoán nhận bởi một ôtômát đẩy
xuống (không đơn định);
Ngôn ngữ loại 3 (chính qui - viết tắt là
NNCQ) được đoán nhận bởi một ôtômát
hữu hạn (sai khác xâu rỗng).
Trang 21Dạng BNF (Backus - Naur Form): thực chất chỉ là
một cách biểu diễn khác của VPPNC Quy ước:
Các ký tự viết hoa biểu diễn các ký hiệu không kết thúc (nonterninal), cũng có thể thay bằng một xâu đặt trong cặp dấu <câu>,<chủ ngữ>, <vị ngữ>, > hoặc một từ>, <bổ ngữ>, in nghiêng;
Các ký tự viết chữ nhỏ và dấu toán học biểu diễn
các ký hiệu kết thúc (terninal), cũng có thể thay
bằng một xâu đặt trong cặp dấu nháy kép " " hoặc một từ>, <bổ ngữ>, in đậm;
Ký hiệu hoặc = là ký hiệu chỉ phạm trù cú pháp
ở vế trái được giải thích bởi vế phải;
Ký hiệu | chỉ sự lựa chọn.
Trang 22Định nghĩa toán hạng: có thể là một
biến (tên), số hoặc một biểu thức ở
trong cặp dấu ngoặc đơn
Trang 23Định nghĩa: Cây phân tích trong một
n k là các con của nút n, theo thứ tự từ>, <bổ ngữ>, trái
sang phải, và lần lượt mang các nhãn
X1,X2, Xk thì XX1X2…Xk phải là một sản
xuất trong P
Trang 25 Bắt đầu từ>, <bổ ngữ>, S
Hai thứ tự dẫn xuất thường dùng:
• Suy dẫn trái: chọn kí hiệu bên trái nhất
• Suy dẫn phải: chọn kí hiệu bên phải nhất
Ví dụ: Dẫn xuất trái nhất và dẫn xuất phải nhất của cây cú pháp trên
Trang 26Ký hiệu không kết thúc A của văn
phạm G = (, , P, S) gọi là đệ quy
nếu:
A + A với , V*
Nếu = , A gọi là đệ quy trái
Nếu = , A gọi là đệ quy phải
Nếu và , A gọi là đệ quy
Trang 27 Một VPPNC G gọi là văn phạm nhập
nhằng nếu có một xâu là kết quả
của hai cây suy dẫn khác nhau trong
G Ngôn ngữ do văn phạm này sinh ra gọi là ngôn ngữ nhập nhằng
Một NNPNC L được gọi là ngôn ngữ
nhập nhằng cố hữu nếu mọi VPPNC
sản sinh ra L đều nhập nhằng.
Trang 28*
Trang 29 Viết lại văn phạm để nó không nhập
nhằng nữa
Sử dụng qui tắc xử lý nhập nhằng
Trang 30 Định lý: Tồn tại giải thuật để xác định, với
mỗi văn phạm phi ngữ cảnh bất kỳ G = (,
, P, S) và một xâu bất kỳ w *, xác định
được w L(G) hay không.
Chứng minh được định lý này bằng cách
đưa ra các giải thuật cài đặt trên thực tế:
• Thuật toán phân tích Top - Down.
• Thuật toán phân tích Bottom - Up.
• Thuật toán phân tích CYK
(Coke-Younger-Kasami).
• Thuật toán phân tích Earley.
Trang 31 Ôtômát đẩy xuống dùng để đoán
nhận một xâu vào có thuộc một NN
PNC cho trước hay không
Là một cái “máy” trừ>, <bổ ngữ>, u tượng
Trang 32Đầ u điề u khiể n
Xâu vào
0 1 1
Ngăn xế p
Trang 33Có hai cách khác nhau để thừ>, <bổ ngữ>, a nhận
xâu vào:
Xâu vào được đọc xong và ôtômát
đến được một trong các trạng thái
cuối mong muốn
Xâu vào được đọc xong và ngăn xếp
trở thành rỗng
Hai cách thừ>, <bổ ngữ>, a nhận xâu vào như trên
là tương đương với nhau