LUẬT SINH QUI TÁC NGỮ NGHĨA

Một phần của tài liệu Trình biên dịch nguuyên lý kỹ thuật và công cụ (Trang 47 - 49)

. 98 TỔNG QUAN VỀ BIÊN DỊCH

LUẬT SINH QUI TÁC NGỮ NGHĨA

seq seq x+ Ínsir.d

LUẬT SINH QUI TÁC NGỮ NGHĨA

res? —> + term resft rest.Ê t= term.l || *+` || resty.t (2.7)

nhưng một lần nữa, chưa tận ferm xuất hiện trước resí ở vế phải.

Các định nghĩa dựa cú pháp đơn giản cĩ thể được cài đặt với các lược đỏ dịch trong đĩ các hành động sẽ in ra các chuỗi bổ sung theo đúng thứ tự xuất biện trong định nghĩa đĩ. Các hành động trong luật sinh dưới đây sẽ in ra chuỗi bổ sung tương ứng

trong (9.6) và (2.7):

#xpr ~» exprị + tlerm | prhHtẺ+) }

restt c» + term | prínÚ+) } resii

Thí dụ 2.8. Hình 2.5 cĩ chứa một định nghĩa đơn giản để dịch các biểu thức thành đạng hậu vị. Một lược để địch suy ra từ định nghĩa này được cho trong Hình 2,13 và cây phân tích cú pháp cĩ các hành động kèm theo cho biểu thức 9-5+2 được trình bày

PHẦN 2.3 PHIÊN DỊCH DỰA CÚ PHÁP 45 trong Hình 2.14. Chú ý rằng mặc dù Hinh 2.6 và 2.14 biểu điễn cùng một ánh xạ nguyên liệu-thành phẩm, bản dịch trong hai trường hợp này được xây dựng khác nhau; Hình 2.6 gắn thành phẩm vào gốc của cây, cịn trong Hình 2.14 lại in ra dần dần.

CXpP —> 6xpr + ferH { pruúŒ+)} † CXPP —> €Xpr — ÍGPH { prữŒ~) † đxp" — lerni tầ'm —» O {| prữdŒ01 } tem —» 1 { primfŒ1) † term —> 9 prừưdt09) } Hình 2.18. Các hành động dịch biểu thức thành ký pháp hậu vị.

Gốc của Hình 2.14 biểu diễn luật sinh thứ nhất trong Hình 2.13. Khi duyệt theo hướng sâu, đầu tiên chúng ta thực hiện tất cả các hành động trong cây con cho tốn hạng trái expr khi duyệt qua cây con tận trái của gốc. Sau đĩ chúng ta thăm nút lá + nhưng khơng thực hiện hành động nào. Kế tiếp chúng ta thực hiện các hành động trong cây con cho tốn hạng bên phải là /ezn và cuối cùng là thực hiện hành động ngữ nghĩa { ørtrtŒ+`) }.

Vì các luật sinh cho ứerm: chỉ cĩ một ký số ở vế phải, ký số đĩ được ìn ra bằng các hành động cho các luật sinh đĩ, Đối với luật sinh expr —> term chúng ta khơng cẩn phải cho ra kết quá nào và chỉ cần phải in tốn tử bằng hành động của bai luật sinh đầu tiên, Khi duyệt theo hướng sáu. các hành động trong Hình 2.14 sẽ in ra 95-2+. [1

expr ⁄ TỐ + prim( +')) expr lerm Z7. NƯ<S /. Àx - {primrU'=?)† 32 tprim(2')† eo. term † term 5 tprim(59 +» 9 (pim(99)} Hình 2.14. Các hành động dịch 9-5+2 thành 95-2+.

Xem như một qui tắc tổng quát, phần lớn các phương pháp phân tích cú pháp đều xử lý nguyên liệu của chúng từ trái sang phải theo lối “(hiển cận” (greedy fashion); nghĩa là trước khi đọc thẻ từ tiếp theo, chúng xây dựng càng nhiều phần cho cây phân

46 MỘT TRÌNH BIÊN DỊCH MỘT LƯỢT ĐƠN GIẢN

tích cú pháp càng tốt. Trong một lược đổ dịch đơn giản (là lược đồ dẫn xuất từ một định nghĩa dựa cú pháp đơn giản), các hành động cũng được thực hiện theo thứ tự từ trái sang phải. Vì thể để cài đặt một lược đỏ dịch đơn giản, chúng ta cĩ thể thực hiện các hành động ngữ nghĩa trong lúc phân tích cú pháp mà khơng nhất thiết phải xây dựng cây phân tích cú pháp.

Một phần của tài liệu Trình biên dịch nguuyên lý kỹ thuật và công cụ (Trang 47 - 49)