- Thuật toán duyệt gần như hoàn toàn, không có các bước cắt nhánh, chậm nhưng dễ hiểu
- Thuật toán không phải vạn năng, không làm việc được với các văn phạm có đệ quy trái
- Lý do là vì không có cắt nhánh phù hợp, dẫn đến việc đi mãi theo chiều sâu mà không quay lui
- Việc cài đặt cắt nhánh là rất khó khăn mặc dù có nhiều gợi ý thú vị:
- Cắt nhánh khi trong A có terminal không có trong w
- Cắt nhánh khi số terminal trong A nhiều hơn trong w
- Sử dụng lại những kết quả đã duyệt cũ
1 số bài tập tham khảo:
1. Chỉ ra quá trình thực hiện phân tích top-down của chuỗi (a=(b+a)) thuộc văn phạm G có tập luật: S → B B → R | ( B ) R → E = E E → a | b | ( E + E )
2. Chỉ ra quá trình thực hiện phân tích top-down của chuỗi true and not false với tập luật văn phạm: E → E and T | T T → T or F | F F → not F | ( E ) | true | false
3. Chỉ ra quá trình thực hiện phân tích top-down của chuỗi abbcbd thuộc văn phạm G có tập luật: S → a A | b A A→ c A | b A | d
3. Chỉ ra quá trình thực hiện phân tích top-down của chuỗi abbcbd thuộc văn phạm G có tập luật: S → a A | b A A→ c A | b A | d
4. Có thể áp dụng thuật toán phân tích top-down cho chuỗi (5+7)*3 thuộc văn phạm G dưới đây hay không? Chỉ ra quá trình thực hiện nếu có thể E → E + T | T T → T * F | F F → ( E ) | số
0 comments: