Bài 8: Phân tích văn phạm bằng thuật4. toán top-down..[r]
(1)CHƯƠNG TRÌNH DỊCH
Bài 8: Phân tích văn phạm thuật
(2)Nội dung
1. Ý tưởng & thuật toán
2. Ví dụ minh họa
3. Cài đặt top-down đơn giản
Cấu trúc luật văn phạm
Cấu trúc suy diễn trực tiếp
Máy phân tích: hàm hỗ trợ
Máy phân tích: hàm
Thử nghiệm
4. Đánh giá top-down
(3)Ý tưởng & thuật toán
(4)Top-down: ý tưởng
Cho văn phạm G với luật sinh:
S → E + S | E
E → | | | | | ( S )
Xâu vào: W = (1 + + (3 + 4)) +
Tìm suy dẫn từ S thành W.
S E + S ( S ) + S ( E + S ) + S ( + S ) + S ( + E + S ) + S ( + + S ) + S
( + + E ) + S ( + + ( S ) ) + S
( + + ( E + S ) ) + S ( + + ( + S ) ) + S
(5)Top-down: ý tưởng
Xét trình suy dẫn S W1 W2 … W
Wi ln chứa non-terminal
Xét X non-terminal trái Wi:
W không chứa non-terminal nên X phải “biến mất”
Cách làm “biến mất” X sử dụng luật văn phạm mà vế trái X
Nhận xét: trước sau X “biến mất” một luật văn phạm có dạng X → α
(6)Top-down: ý tưởng
Dị tìm q trình suy dẫn S W1 … W:
Với Wi, tìm non-terminal X
Tìm luật X → α, áp dụng luật biến đổi Wi thành Wi+1
Dừng Wi+1 = W (tìm phương án suy dẫn)
Thử tiếp với Wi+1 quay lui không phù hợp
Đặc điểm Top-down:
Nếu Wi có chứa nhiều non-terminal cần thử với non-terminal trái
(7)Top-down: thuật toán
1. A = S
2. Với chuỗi A đạt trình suy dẫn:
Nếu A = W:
• Kết luận: q trình tìm kiếm thành cơng
• Lưu lại q trình biến đổi từ đầu để A
• Kết thúc trình tìm kiếm
Nếu A ≠ W: tìm kí hiệu trung gian trái X
Khơng tìm X dừng, trở lại hàm gọi
Duyệt tất luật sinh dạng X → α
• Áp dụng luật A (ở vị trí X), ta A’
(8)Ví dụ minh họa
(9)Top-down: ví dụ
Phân tích W = aacbc với tập luật S → aSbS | aS | c
1. Xét A = aSbS
2. Tìm kí hiệu S thứ A non-terminal
(10)Top-down: ví dụ
1. Xét A = aaSbSbS
2. Tìm kí hiệu S thứ A non-terminal
1 Thử áp dụng luật S → aSbS A’ = aaaSbSbSbS Thử áp dụng luật S → aS A’ = aaaSbSbS