Giaû söû nuùt n cuûa caây phaân tích coù teân cuù phaùp X, X.a laø trò thuoäc tính a cuûa X, ñöôïc tính nhôø luaät ngöõ nghóa.. Caây phaân tích coù chuù thích caùc trò thuoäc tính ôû moã[r]
(1)CHƯƠNG 2
TRÌNH BIÊN DỊCH ĐƠN GIẢN 2.1 Tổng quát
2.2 Định nghóa cú pháp
Văn phạm phi ngữ cảnh (PNC) định nghĩa: G2 = (Vt, Vn, S, P)
P : A → α1 | α2 |………|αn Thí dụ 2.1. Cho văn phaïm G:
P: list → list + digit | list – digit
| digit
digit → |1| | …|9
Bộ phân tích
từ vựng Bộ biên dịch trựctiếp cú pháp
Chuoãi token
Chuỗi ký tự Mã trung gian
(2)Thí dụ 2.2 Văn phạm miêu tả phát biểu hỗn hợp begin end Pascal P : block → begin opt_stmts end
opt_stmts → stmt_list |€
stmt_list → stmt_list ; stmt | stmt - Cây phân tích
Sự khơng tường minh
Thí dụ 2.3. Văn phạm G sau không tường minh:
P : string → string + string | string – string | | | |9 Caâu – + cho hai phân tích:
string string
string string
string string
Hình 2.2 Hai phân tích câu – + 2
+
9
string
string
-5
string
string
-a)
2 9 +
(3)Sự kết hợp toán tử
Mức ưu tiên tốn tử: * / có mức ưu tiên + , - Dựa vào nguyên tắc xây dựng cú pháp cho biểu thức số học:
exp → exp + term | exp – term | term
term → term * factor | term / factor | factor factor → digit | ( exp )
Lưu ý: phép toán lũy thừa phép gán C phép toán kết hợp phải Văn phạm cho phép gán sau:
right → letter = right | letter letter → a | b | … | z
2.3 Sự biên dịch trực tiếp cú pháp (Syntax-Directed Translation) 1 Ký hiệu hậu tố
1) Nếu E biến số ký hiệu hậu tố E E 2) Nếu E biểu thức có dạng E1 op E2 với op tốn tử hai ngơi ký hiệu hậu tố E E1’ E2’ op
(4)Lưu ý: Khơng cần có dấu đóng, mở ngoặc ký hiệu hậu tố 2 Định nghiã trực tiếp cú pháp (Syntax-directed definition)
Văn phạm phi ngữ cảnh tập luật ngữ nghiã thiết lập định nghĩa trực tiếp cú pháp Biên dịch phép ánh xạ từ nhập → xuất Dạng xuất chuỗi nhập x xác định sau:
1 Xây dựng phân tích cho chuỗi x
2 Giả sử nút n phân tích có tên cú pháp X, X.a trị thuộc tính a X, tính nhờ luật ngữ nghĩa Cây phân tích có thích trị thuộc tính nút gọi phân tích thích
Tổng hợp thuộc tính (synthesized attributes) Thí dụ 2.4. Cho văn phạm G có tập luật sinh P:
Tập luật sinh Tập luật ngữ nghĩa
exp → exp + term exp.t ::= exp.t || term.t || ‘+’ exp → exp – term exp.t ::= exp.t || term.t || ‘-’ exp → term exp.t ::= term.t
term → term.t ::= ‘0’
… …
(5)exp.t ::= 95 – + exp.t ::= 95 –
exp.t ::= 95 – exp.t ::=
termt ::=
termt.t ::=
termt ::=
9 - +
Hình 2.3 Cây phân tích thích cho định nghĩa trực tiếp cú pháp
Lược đồ dịch
Lược đồ dịch văn phạm PNC, đoạn chương trình gọi hành vi ngữ nghiã nhúng vào vế phải luật sinh
(6)Tập luật sinh Tập luật ngữ nghĩa
exp → exp + term exp → exp + term { print (‘+’)} exp → exp – term exp → exp – term {print (‘-’)}
exp → term exp → term
term → term → {print (‘0’)}
……
term → term → {print {‘9’)}
exp exp
term
term exp
-5
+
{print (‘-‘)}
term
{print (‘5‘)}
{print (‘+‘)} {print (‘2‘)}
9 {print (‘9‘)}
(7)Mô 2.1 Giải thuật depth- first traversals phân tích
Procedure visit (n: node); begin
for với m n, từ trái sang phải do visit (m);
tính trị ngữ nghiã nút n end;
2.4 Phân tích cú pháp
1 Phân tích cú pháp từ xuống Thí dụ 2.6 Cho văn phạm G:
type → simple ⏐↑ id ⏐ array [ simple] of type simple → integer ⏐char ⏐num dotdot num Hãy xây dựng phân tích cho câu:
(8)type a)
type b)
array [simple] of type
type c)
array [simple] of type
type
num dotdot num
array [simple] of
num dotdot num
Hình 2.6.Các bước xây dựng cây phân tích
theo phương pháp từ trên xuống cho câu:
array [numdotdot num] of integer
d)
type simple type
e)
array [simple] of
num dotdot num
(9)2 Sự phân tích cú pháp đốn nhận trước
Dạng đặc biệt phân tích cú pháp từ xuống phương pháp đoán nhận trước Phương pháp nhìn trước ký hiệu nhập để định chọn thủ tục cho ký hiệu không kết thúc tương ứng
Thí dụ 2.8 Cho văn phạm G: P: S → xA A → z | yA Dùng văn phạm G để phân tích câu nhập xyyz
Bảng 2.1 Các bước phân tích cú pháp câu xyyz
Luật áp dụng Chuỗi nhập
S xA yA A yA A
z
-xyyz xyyz yyz
(10)-Thí dụ 2.9 Cho văn phạm với luật sinh sau : S → A | B A → xA | y B → xB | z
Bảng 2.2 Phân tích cú pháp cho câu xxxz không thành công
Luật áp dụng Chuỗi nhập
S A xA A xA A xA
A