1. Trang chủ
  2. » Thể loại khác

CHƯƠNG TRÌNH DỊCH Bài 6: Phân tích cú pháp

22 13 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 22
Dung lượng 590,93 KB

Nội dung

CHƯƠNG TRÌNH DỊCH Bài 6: Phân tích cú pháp Nội dung Vai trò phân tích cú pháp (PTCP) Nhiệm vụ PTCP Các mục tiêu PTCP Đầu vào đầu PTCP Các bước xây dựng PTCP Bài tập thảo luận TRƯƠNG XUÂN NAM Phần Vai trị phân tích cú pháp (PTCP) TRƯƠNG XN NAM Cấu trúc chương trình dịch Mã nguồn Phân tích từ vựng Phân tích cú pháp Bộ quản lý kí hiệu Phân tích Phân tích ngữ nghĩa Sinh mã trung gian Tối ưu mã trung gian Tổng hợp Sinh mã đích Mã đích TRƯƠNG XUÂN NAM Vai trị phân tích cú pháp  Phân tích cú pháp pha thứ hai trình dịch  Bộ PTCP nhận liệu đầu vào dãy từ tố (cùng với thông tin kèm theo), dựa theo luật văn phạm ngôn ngữ, xây dựng cú pháp (syntax tree) chuỗi vào  PTCP làm việc chặt chẽ với PTTV thường bắt đầu thực công việc PTTV có kết ban đầu (khơng cần đợi PTTV kết thúc)  Đối với số ngôn ngữ đơn giản, thiết kế trình dịch cịn xa cách ghép PTTV PTCP thành module (dịch trực tiếp văn bản) TRƯƠNG XUÂN NAM Vai trị phân tích cú pháp  PTCP cung cấp liệu cho phân tích ngữ nghĩa  Làm việc độc lập với PTNN  Chỉ trả kết cho phân tích ngữ nghĩa sau hoàn thành đầy đủ (hoặc tương đối đầy đủ) việc tạo cú pháp  Ngoài PTCP cung cấp liệu lỗi gợi ý sửa lỗi cho soạn thảo TRƯƠNG XUÂN NAM Vai trị phân tích cú pháp  Trái với PTTV, thường “đính kèm” nhiều nhiệm vụ khác, thiết kế PTCP thường nhắm tới nhiệm vụ dựng cú pháp  Lý việc xây PTCP hiệu phức tạp  Tuy PTCP trả kết cho PTNN, số thiết kế, PTCP định thực phân tích ngữ nghĩa dựa điều kiện khởi động (trigger)  Chẳng hạn: sau kết thúc khai báo class (trong ngơn ngữ C++) tiến hành ln việc phân tích ngữ nghĩa class TRƯƠNG XN NAM Phần Nhiệm vụ phân tích cú pháp TRƯƠNG XUÂN NAM Nhiệm vụ phân tích cú pháp  PTCP đảm nhiệm nhiệm vụ phức tạp trình dịch, kiểm tra lỗi cú pháp chuỗi vào (vốn làm sai lệch hồn tồn ý nghĩa input)  Các nhiệm vụ (nhất thiết phải có để đảm bảo hoạt động chương trình dịch):  Xây dựng cú pháp cho chuỗi vào  Thực số thao tác ngữ nghĩa phục vụ cho việc phân tích  Phát lỗi văn phạm lựa chọn phương pháp xử lý phù hợp • Xử lý lỗi để tiếp tục thực việc phân tích • Đưa gợi ý sửa lỗi cho mã nguồn TRƯƠNG XUÂN NAM Phần Các mục tiêu phân tích cú pháp TRƯƠNG XUÂN NAM 10 Các mục tiêu PTCP  Chính xác: mục tiêu quan trọng nhất, kết phân tích cần trả xác phân tích  Tốc độ: khó xây dựng PTCP tuyến tính theo độ dài chuỗi vào (ngoại trừ ngơn ngữ đầu vào có văn phạm đơn giản), PTCP cần hoạt động đủ nhanh (nên cận tuyến tính)  Chịu lỗi: PTCP cần có khả chịu lỗi có chiến lược khắc phục lỗi phù hợp  Hiệu nhớ: PTCP cần sử dụng nhớ cách hiệu (do việc phải lưu trữ toàn phân tích cho mã nguồn) TRƯƠNG XUÂN NAM 11 Phần Đầu vào đầu phân tích cú pháp TRƯƠNG XUÂN NAM 12 Ví dụ phân tích cú pháp if (b == 0) a = b; Scanner if ( b == ) a = b ; Parser if = == b a Cây phân tích rút b TRƯƠNG XUÂN NAM 13 Ví dụ phân tích cú pháp PTCP áp dụng với ngôn ngữ tự nhiên, nhưng:  Ngôn ngữ tự nhiên có luật ngữ pháp phức tạp  Ngơn ngữ tự nhiên có yếu tố ngữ cảnh  Ngơn ngữ tự nhiên có nhiều lỗi (trong thực tế sử dụng) sentence “I gave him the book” subject verb indirect obj object noun phrase I gave TRƯƠNG XUÂN NAM him article noun the book 14 Đầu vào PTCP  Đầu vào PTCP dãy từ vựng xác định chi tiết từ loại  Bộ PTCP thường cần quan sát nhiều kí hiệu đầu vào để định dựng phân tích Input (dãy từ vựng) Quy tắc ngữ pháp (bảng phương án) Bộ PTCP Output (cây phân tích) TRƯƠNG XUÂN NAM 15 Đầu PTCP  Đầu PTCP đầu vào PTNN, thường hiểu ngữ nghĩa xác định đầy đủ cấu trúc câu, PTCP thường trả phân tích đầy đủ cho PTNN  Cây phân tích thường có thành phần sau:  Cấu trúc (có nhiều lựa chọn kiểu cấu trúc liệu)  Cấu trúc nút cây: • Kí hiệu nút • Từ vựng liên quan (nếu nút lá) • Danh sách nút • Thơng tin bổ sung, phục vụ cho việc phân tích TRƯƠNG XUÂN NAM 16 Phần Các bước xây dựng phân tích cú pháp TRƯƠNG XUÂN NAM 17 Các bước xây dựng PTCP  Mô tả luật văn phạm ngôn ngữ nguồn  Các mơ tả ban đầu dạng ngôn ngữ tự nhiên  Đặc tả ý nghĩa kí hiệu khơng kết thúc (non-terminal)  Chuyển thành luật văn phạm dạng chặt chẽ  Phân tích văn phạm để lựa chọn phương pháp phân tích cú pháp phù hợp     Văn phạm có nhập nhằng hay khơng? Văn phạm có đệ quy trái hay khơng? Văn phạm có mơ hồ hay khơng? Văn phạm có độ phức tạp mức độ nào? TRƯƠNG XUÂN NAM 18 Các bước xây dựng PTCP  Lựa chọn phương pháp phân tích cú pháp phù hợp  Xây dựng PTCP trực tiếp (dành cho ngơn ngữ có độ phức tạp đơn giản)  Xây dựng PTCP bước • Dựa văn phạm đầu vào, xây dựng automat đốn nhận • Sử dụng automat để xử lý dãy từ tố từ PTTV  Xây dựng PTCP vạn năng: trường hợp văn phạm phức tạp, sử dụng phương pháp phân tích vạn để xây dựng PTCP  Lựa chọn cách xử lý tình lỗi cú pháp, sinh gợi ý sửa lỗi tình cần phải tổ hợp ngữ nghĩa TRƯƠNG XUÂN NAM 19 Phần Bài tập thảo luận TRƯƠNG XUÂN NAM 20 Thảo luận Có thể sử dụng biểu thức quy automat hữu hạn để thực việc mô tả ngôn ngữ dựng phân tích hay khơng?  Chỉ vấn đề đơn giản thường gặp ngơn ngữ lập trình khơng thể giải automat hữu hạn Lựa chọn cấu trúc liệu phù hợp cho:  Kết trả PTCP (cây phân tích)  Lưu trữ luật văn phạm  Cấu trúc nút Thiết kế prototype cho máy PTCP  Viết mã minh họa hoạt động prototype TRƯƠNG XUÂN NAM 21 Bài tập Cho biểu thức số học gồm số ngun, phép tốn cặp ngoặc Ngơn ngữ L xây dựng cách xóa thành phần biểu thức giữ lại ngoặc (đóng ngoặc mở ngoặc)  Hãy xây dựng văn phạm mô tả ngơn ngữ L  Ngơn ngữ L có đặc điểm gì?  *Có bao nhiều chuỗi w có độ dài 20 thuộc L? Viết luật văn phạm câu tiếng Việt mô tả đồ vật  Vẽ cú pháp câu “quyển màu xanh nhạt”  Vẽ cú pháp câu “quyển sách to màu xanh” TRƯƠNG XUÂN NAM 22 ... ngữ nguồn  Các mô tả ban đầu dạng ngơn ngữ tự nhiên  Đặc tả ý nghĩa kí hiệu khơng kết thúc (non-terminal)  Chuyển thành luật văn phạm dạng chặt chẽ  Phân tích văn phạm để lựa chọn phương pháp

Ngày đăng: 16/03/2022, 02:38

TỪ KHÓA LIÊN QUAN