Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 59 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
59
Dung lượng
0,92 MB
Nội dung
ÔN TẬP MÔN AUTOMAT VÀ TRÌNH BIÊN DỊCH Tiến sĩ: Lê Minh Trung Khoa CNTT, Đại học Sư phạm Tp HCM NÔI DUNG ÔN TẬP Ngôn ngữ và văn phạm phi ngữ cảnh Automat đẩy xuống Đại cương về trình biên dịch Thể phân tích cú pháp (parser) Sinh mã trung gian VĂN PHẠM PHI NGỮ CẢNH Là bộ bốn G = (V, Σ, R, S) V là tập tất cả các kí hiệu Σ là tập các kí hiệu tận (terminal) R là tập các luật Aα S ϵ V\ Σ là kí hiệu bắt đầu Văn phạm phi ngữ cảnh G có thể sinh ra ngôn ngữ phi ngữ cảnh L = L(G) CHỨNG MINH CHUỖI SINH RA TỪ VĂN PHẠM Cho văn phạm: S aAa | bAb| e, ASS Trình bày quá trình suy diễn ra chuỗi baabbb S bAb bSSb baAaSb baaSb baabSbb baabbb CHO BIẾT NGÔN NGỮ SINH RA BỞI VĂN PHẠM Cho văn phạm G S aSa | bSb | aSb | bSa |e Cho biết văn phạm này sinh ra ngôn ngữ nào? S a1Sb1 a1a2Sb2b1 … a1a2…akSbk…b2b1 a1a2… akbk…b2b1 với a1,a2, ,ak,bk, ,b2,b1 ϵ {a,b} L(G) = {w ϵ {a,b}*: w có một số chẵn kí tự} = (aa ᴗ ab ᴗ ba ᴗ bb)* THIẾT KẾ VĂN PHẠM Thiết kế các văn phạm sinh ra các ngôn ngữ sau {wcwR: w ϵ {a,b}*} {wwR: w ϵ {a,b}*} {w ϵ {a,b}*: w=wR} S aSa | bSb | c S aSa | bSb | e S aSa | bSb | a | b | e THIẾT KẾ VĂN PHẠM Thiết kế các văn phạm sinh ra các ngôn ngữ sau a) {ambn: m≥n} b) {uavb: u,v ϵ {a,b}* và |u| = |v|} c) {ambn: m≤2n} {ambn: m≥n} S aSb | aS |e {uavb: u,v ϵ {a,b}* và |u| = |v|} SAb AaAb | aAa| bAa| bAb | a {ambn: m≤2n} SaSbb | aSb | e [...]... THIẾT KẾ AUTOMAT CHẤP NHẬN NGÔN NGỮ Thiết kế automat chấp nhận ngôn ngữ L = {ambncpdq: m+n = p+q} L = {w ϵ {a,b}*: số chữ a = số chữ b} L = {w = uavb: u,v ϵ {a,b}* và |u| = |v|} ĐẠI CƯƠNG VỀ TRÌNH BIÊN DỊCH 1 2 3 4 5 6 Thể phân tích từ vựng Thể phân tích cú pháp Thể phân tích ngữ nghĩa Sinh mã trung gian Tối ưu hóa mã trung gian Sinh ra mã máy Cần phân biệt trình biên dịch và trình thông dịch THỂ... M=(K,Σ,Γ,Δ,s,F) K tập các trạng thái Σ tập các kí hiệu trên vùng đệm nguyên liệu Γ tập các kí hiệu trên ngăn xếp s trạng thái bắt đầu F tập các trạng thái kết thúc Δ là các quan hệ chuyển có dạng ((p,a,α),(q,β)) CHUỖI CHẤP NHẬN BỞI AUTOMAT Cho automat có tập quan hệ chuyển sau ((s,a,e),(s,a)), ((s,e,e),(f,e)), ((f,b,a),(f,e)) F = {f} Chuỗi aaabbb có được chấp nhận bởi automat không? Ngôn ngữ... KẾ AUTOMAT CHẤP NHẬN NGÔN NGỮ Thiết kế automat chấp nhận ngôn ngữ L= {w ϵ {a,b}*: số chữ a trong w bằng hai lần số b trong w} ((s,b,e),(s,bb)), ((s,b,b),(s,bbb)), ((s,a,b),(s,e)), ((s,a,e), (s,a)), ((s,a,a),(s,aa)), ((s,b,aa),(s,e)), ((s,b,a),(s,b)), ((s,e,e),(f,e)) b vùng đệm = 2 b ngăn xếp = 2 a vùng đệm = 2 a ngăn xếp THIẾT KẾ AUTOMAT CHẤP NHẬN NGÔN NGỮ Thiết kế automat chấp nhận ngôn... nhận bởi automat trên là ngôn ngữ nào? Trạng thái Chuỗi nguyên liệu Ngăn xếp s aaabbb s aabbb a s abbb aa s bbb aaa f bbb aaa f bb aa f b b f e e Hoạt động của automat này như sau: - Đẩy các chữ a đầu tiên vào ngăn xếp - Tự động chuyển sang trạng thái f - Gỡ các chữ b trong vùng đệm nguyên liệu nếu gặp a ở đỉnh ngăn xếp Ngôn ngữ chấp nhận bởi automat: L(M) = {anbn: n ≥ 0} NGÔN NGỮ CHẤP NHẬN BỞI AUTOMAT. .. automat: L(M) = {anbn: n ≥ 0} NGÔN NGỮ CHẤP NHẬN BỞI AUTOMAT Cho automat có tập quan hệ chuyển sau: ((s,a,e),(s,a)), ((s,b,e),(s,b)), ((s,a,e),(f,e)), ((f,b,a),(f,e)), ((f,b,b),(f,e)), ((f,a,a),(f,e)), ((f,a,b),(f,e)) và F ={f} Cho biết ngôn ngữ chấp nhận bởi automat trên? Hoạt động của automat này như sau: - Đầu tiên, đẩy các chữ a,b vào ngăn xếp - Tự động chuyển sang trạng thái f khi gặp một a nào... sang trạng thái f khi gặp một a nào đó - Khi ở trạng thái f, gỡ các chữ b,a trong ngăn xếp nếu gặp các chữ b,a trong vùng đệm Ngôn ngữ chấp nhận bởi automat: L(M) = {uav: u,v ϵ {a,b}* và |u| = |v|} THIẾT KẾ AUTOMAT CHẤP NHẬN NGÔN NGỮ Thiết kế các automat chấp nhận các ngôn ngữ sau a) L = {wcwR: w ϵ {a,b}*} b) L = {w ϵ {a,b}*: w=wR} a) ((s,a,e),(s,a)), ((s,b,e),(s,b)), ((s,c,e),(f,e)), ((f,a,a),(f,a)),...BÀI TẬP THÊM Thiết kế văn phạm chấp nhận ngôn ngữ {ambncp:m+n = p} {ambncpdq:m+n = p+q} {uav: u,v ϵ{a,b}* và |u| = |v|} CÂY PHÂN TÍCH Tóm tắt nhiều sự suy diễn cho ra cùng một chuỗi kết quả SSS | (S) | e S SS(S)S()S()(S)()() (suy diễn cực trái) SSSS(S)S()(S)()()() (suy diễn cực phải) CÂY PHÂN TÍCH Vẽ cây phân tích cho một chuỗi đầu vào id * (id + id) AUTOMAT ĐẨY... ngăn xếp = 2 a vùng đệm = 2 a ngăn xếp THIẾT KẾ AUTOMAT CHẤP NHẬN NGÔN NGỮ Thiết kế automat chấp nhận ngôn ngữ L= {w ϵ {a,b}*: số chữ b trong w bằng hai lần số a trong w} ((s,e,e),(s,c)), ((s,b,c),(p,**c)), ((p,b,*),(p,***)), ((p,a,**),(p,*)), ((p,a,*c),(s,c)), ((s,a,c), (q,*c)), ((q,a,*),(q,**)), ((q,b,***),(q,*)), ((q,b,**c),(s,c)) ,((q,b,*c),(p,*c)) và F={s} b vùng đệm = 2 * a vùng đệm = *... ((s,e,e),(f,e)), ((s,a,e),(f,a)), ((s,b,e),(f,b)) , ((f,a,a),(f,e)), ((f,b,b),(f,e)) F = {f} THIẾT KẾ AUTOMAT CHẤP NHẬN NGÔN NGỮ Thiết kế các automat chấp nhận các ngôn ngữ sau L = {w =ambn: m≤n≤2m} ((s,a,e),(s,aa)), ((s,e,e),(f,e)), ((f,b,a),(f,e)), ((f,b,aa),(f,e)) Nguyên tắc hoạt động: Thêm 2m chữ b vào ngăn xếp Tự động chuyển sang trạng thái f (khi tiêu thụ hết a) Ở trạng thái f, gặp b trong... phạm bị mơ hồ hay đa nghĩa vì câu lệnh có hai cây phân tích if E1then if E2 then S1 else S2 LOẠI BỎ TÍNH ĐA NGHĨA Không có thuật toán tổng quát để loại bỏ tính đa nghĩa Thông thường chỉ dựa vào kinh nghiệm Với văn phạm trên, có thể loại bỏ tính đa nghĩa bằng cách phân biệt matched_stmt và open_stmt if E1then if E2 then S1 else S2 sẽ chỉ có một cách hiểu duy nhất KHỬ ĐÊ QUI TRÁI Một văn phạm được . ÔN TẬP MÔN AUTOMAT VÀ TRÌNH BIÊN DỊCH Tiến sĩ: Lê Minh Trung Khoa CNTT, Đại học Sư phạm Tp HCM NÔI DUNG ÔN TẬP Ngôn ngữ và văn phạm phi ngữ cảnh Automat đẩy xuống Đại cương về trình biên. b,a trong vùng đệm Ngôn ngữ chấp nhận bởi automat: L(M) = {uav: u,v ϵ {a,b}* và |u| = |v|} THIẾT KẾ AUTOMAT CHẤP NHẬN NGÔN NGỮ Thiết kế các automat chấp nhận các ngôn ngữ sau a) L = {wcwR:. ((s,e,e),(f,e)), ((f,b,a),(f,e)) F = {f} Chuỗi aaabbb có được chấp nhận bởi automat không? Ngôn ngữ chấp nhận bởi automat trên là ngôn ngữ nào? Trạng thái Chuỗi nguyên liệu Ngăn xếp s aaabbb s aabbb