Nhập môn Chương trình dịch - Bài 5
Thông tin tài liệu:
Nội dung trích xuất từ tài liệu:
Nhập môn Chương trình dịch - Bài 5Nhập môn Chương trình dịch Bài 05: Phân tích trên xuống (Top – down parsing) Nội dung chính Tiếp tục với CFG Phân tích trên xuống Lớp ngôn ngữ LL(1) Chuyển văn phạm về dạng LL(1) Phân tích đệ quy xuống (recursive descent) Phân tích cú phápMã nguồn (dãy các kí tự) Phân tích từ vựngIf (a == 0) min = a;Dãy các từ tố (token)If ( Id:a == 0 ) Id:min = Id:a ; ifCây cú pháp Phân tích cú pháp == = ; a 0 min a Phân tích ngữ nghĩa Văn phạm phi ngữ cảnh (CFG) CFG có thể mô tả cú pháp của ngôn ngữ lập trình CFG có khả năng diễn tả các cú pháp lồng nhau (VD: dấu ngoặc, các lệnh lồng nhau) Một xâu nằm trong ngôn ngữ của CFG nếu có một suy dẫn từ kí hiệu bắt đầu sinh ra xâu đó Vấn đề: Văn phạm nhập nhằng if-then-else Văn phạm cho câu lệnh if ? S →if (E) S S →if (E) S else S S →X = E | if (E) S else S Văn phạm có mô tả được câu lệnh if không? if-then-else S → if (E) S Phân tích câu sau S → if (E) S else Sif (E1) if (E2) S1 else S2 S → other S S if (E1) S if E1 S if (E1) if (E2) S1 else S2 if E2 S1 else S2 S if (E1) S else S2 S if (E1) if (E2) S1 else S2 if E2 S else S2 else đi với if nào? if E1 S1 if-then-else statement Ta không muốn else đi với unmatched if đầu tiên statement if E if (E) if (E) S else S matched E matched else matched Vấn đề: Không có gì phân if biệt 2 kí hiệu S với nhau Sửa lại văn phạm → matched | unmatched statement matched → if (E) matched else matched | other → if (E) matched else unmatched unmatched | if (E) statementPhân tích trên xuống (top-down) Văn phạm có thể phân tích trên xuống Cài đặt bộ phân tích cú pháp trên xuống (recursive descent parser) Xây dựng cây cú pháp Phân tích trên xuống SE+S|E E số | (S) Mục tiêu: xây dựng cây suy dẫn trái trong khi đọc dãy từ tố Từ tố Dãy từ tố Suy dẫn nhìn trước Đã đọc / Chưa đọc S ( (1+2+(3+4))+5 E+S ( (1+2+(3+4))+5 (S)+S 1 (1+2+(3+4))+5 (E+S)+S 1 (1+2+(3+4))+5 (1+S)+S 2 (1+2+(3+4))+5 (1+E+S)+S 2 (1+2+(3+4))+5 (1+2+S)+S ( (1+2+(3+4))+5 (1+2+E)+S ( (1+2+(3+4))+5 (1+2+(S))+S 3 (1+2+(3+4))+5 Vấn đề SE+S|E E số | (S) Ta muốn lựa chọn sản xuất dựa vào từ tố nhìn trước(1) S E (S) (E) (1)(1)+2 S E + S (S) + S (E) + S (1)+E (1)+2 Với văn phạm này ta không lựa chọn được Vấn đề ở văn phạm Văn phạm này không thể phân tích trên xuống nếu chỉ nhìn trước 1 kí tự Không phải thuộc lớp văn phạm LL(1) Left–to–right scanning Left–most derivation 1 token lookahead Có thể viết lại văn phạm, cho phép phân tích trên xuống Tức là, văn phạm LL(1) cho cùng ngôn ngữ Viết lại văn phạm - LL(1) Không lựa chọn được khiSE+S kí hiệu không kết thúc là SSE phải nhìn thấy dấu “+”E số để quyết địnhE (S) Nhận xét: S E(+S)* Chuyển việc lựa chọn cho S’S ES’S’ + S S’ (+S)*S’ E số Left factoringE (S) Phân tích trên xuống với văn phạm LL(1)S ( (1+2+(3+4))+5ES’ ( (1+2+(3+4))+5(S)S’ 1 (1+2+(3+4))+5(ES’)S’ 1 (1+2+(3+4))+5(1S’)S’ + (1+2+(3+4))+5(1+S)S’ 2 (1+2+(3+4))+5(1+ES’)S’ 2 (1+2+(3+4))+5(1+2S’)S’ + (1+2+(3+4))+5(1+2+S)S’ ( (1+2+(3+4))+5(1+2+ES’)S’ ( (1+2+(3+4))+5(1+2+(S)S’)S’ 3 (1+2+(3+4))+5(1+2+(ES’)S’)S’ 3 (1+2+(3+4))+5(1+2+(3S’)S’)S’ + (1+2+(3+4))+5(1+2+(3+S)S’)S’ 4 (1+2+(3+4))+5 Phân tích tất định Lớp văn phạm LL(1): – Với mỗi kí hiệu không kết thúc, từ tố nhìn trước sẽ xác định sản xuất phải sử dụng – Phân tích trên xuống phân tích tất định – Cài đặt bằng bảng phân tích Kí hiệu không kết thúc x ký hiệu kết thúc sản xuất Bảng phân tíchS ( (1+2+(3+4))+5ES’ ( (1+2+(3+4))+5(S)S’ 1 (1+2+(3+4))+5(ES’)S’ 1 (1+2+(3+4))+5(1S’)S’ + (1+2+(3+4))+5(1+S)S’ 2 (1+2+(3+4))+5(1+ES’)S’ 2 (1+2+(3+4))+5(1+2S’)S’ + (1+2+(3+4))+5 số + ( ) $ - EOF ES’ ES’ S +S S’ số (S) E Cài đặt Bảng phân tích được dùng trong phân tích đệ quy xuống (recursive descent) số + ( ) $ - EOF ES’ ES’ S +S S’ số ...
Tìm kiếm theo từ khóa liên quan:
kỹ năng máy tính lưu trữ dữ liệu hệ thống thông tin lập trình dữ liệu chương trình dịch phân tích từ vựng lý thuyết ngôn ngữ ngôn ngữ lập trình cấu trúc dữ liệu ngôn ngữ máyTài liệu cùng danh mục:
-
62 trang 388 3 0
-
Đề thi kết thúc học phần học kì 2 môn Cơ sở dữ liệu năm 2019-2020 có đáp án - Trường ĐH Đồng Tháp
5 trang 369 6 0 -
Bài giảng Phân tích thiết kế hệ thống thông tin: Chương 3 - Hệ điều hành Windowns XP
39 trang 318 0 0 -
Phương pháp truyền dữ liệu giữa hai điện thoại thông minh qua môi trường ánh sáng nhìn thấy
6 trang 307 0 0 -
Đề cương chi tiết học phần Cấu trúc dữ liệu và giải thuật (Data structures and algorithms)
10 trang 299 0 0 -
Đáp án đề thi học kỳ 2 môn cơ sở dữ liệu
3 trang 288 1 0 -
Giáo trình Cơ sở dữ liệu: Phần 2 - TS. Nguyễn Hoàng Sơn
158 trang 279 0 0 -
PHÂN TÍCH THIẾT KẾ HỆ THỐNG XÂY DỰNG HỆ THỐNG ĐẶT VÉ TÀU ONLINE
43 trang 276 2 0 -
Phân tích thiết kế hệ thống - Biểu đồ trạng thái
20 trang 265 0 0 -
Một số vấn đề về chuyển đổi số và ứng dụng trong doanh nghiệp
11 trang 247 0 0
Tài liệu mới:
-
Khảo sát tình trạng dinh dưỡng trước mổ ở người bệnh ung thư đại trực tràng
9 trang 21 0 0 -
94 trang 19 0 0
-
Tham vấn Thanh thiếu niên - ĐH Mở Bán công TP Hồ Chí Minh
276 trang 20 0 0 -
Kết hợp luân phiên sóng T và biến thiên nhịp tim trong tiên lượng bệnh nhân suy tim
10 trang 19 0 0 -
Đề thi giữa học kì 1 môn Ngữ văn lớp 9 năm 2024-2025 có đáp án - Trường THCS Nguyễn Trãi, Thanh Khê
14 trang 21 0 0 -
Đánh giá hiệu quả giải pháp phát triển thể chất cho sinh viên Trường Đại học Kiến trúc Hà Nội
8 trang 20 0 0 -
Tỉ lệ và các yếu tố liên quan đoạn chi dưới ở bệnh nhân đái tháo đường có loét chân
11 trang 20 0 0 -
39 trang 19 0 0
-
Đề thi học kì 1 môn Tiếng Anh lớp 6 năm 2024-2025 có đáp án - Trường TH&THCS Quang Trung, Hội An
6 trang 19 1 0 -
Tôm ram lá chanh vừa nhanh vừa dễRất dễ làm, nhanh gọn mà lại ngon. Nhà mình
7 trang 19 0 0