Bài 9: Phân tích văn phạm bằng thuật toán bottom-up.4. Cài đặt bottom-up đơn giản.[r]
(1)CHƯƠNG TRÌNH DỊCH
(2)Nội dung
1. Ý tưởng & thuật toán
2. Ví dụ minh họa
3. Cài đặt bottom-up đơ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
4. Đánh giá bottom-up
(3)Ý tưởng & thuật toán
(4)Bottom-up: ý 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)) +
Thu gọn W thành S:
( + + ( + ) ) + ( E + + ( + ) ) +
( E + E + ( + ) ) + ( E + E + ( E + ) ) +
( E + E + ( E + E ) ) + ( E + E + ( E + S ) ) +
( E + E + ( S ) ) + ( E + E + E ) +
( E + E + S ) + ( E + S ) + ( S ) +
(5)Bottom-up: mục tiêu & ý tưởng
Mục tiêu: số nhiều suy dẫn dạng S * w, thuật tốn tìm suy dẫn phải
Ý tưởng chính:
Thử sai quay lui lực tính tốn máy tính
Dị ngược q trình suy dẫn w wn-1 … w1 S kĩ thuật thu-gọn: tìm xem wi có chứa vế phải luật hay khơng, có thay phần vế phải vế trái tương ứng
(6)Bottom-up: thuật toán
1. A = w
2. Với chuỗi A đạt trình lần ngược:
Nếu A = “S”:
• Kết luận: q trình tìm kiếm thành cơng
• Lưu lại kết (chuỗi biến đổi từ đầu để A)
• Kết thúc q trình tìm kiếm
* Duyệt tất luật sinh dạng x → α, α chuỗi A thì:
• Áp dụng thu-gọn: α A x, ta A’
• Thử bước với chuỗi A = A’
(7)Ví dụ minh họa
(8)Bottom-up: ví dụ
Cho tập luật S → AB, A → ab, B → aba Chỉ trình thu gọn chuỗi w = ababa
…
Áp dụng luật A → ab, thu gọn ababa Aaba
(9)Bottom-up: ví dụ
Áp dụng luật A → ab, thu gọn Aaba AAa
Đến nhánh ngưng khơng thu gọn tiếp
được nữa
(10)Bottom-up: ví dụ
Áp dụng luật S → AB, thu gọn AB S
Đến điều kiện A = “S” xảy ra:
Thuật tốn dừng, kết luận thu gọn thành cơng