Lesson 03 — Văn phạm phi ngữ cảnh (Grammar & CFG)
Ba công cụ tương tác: dựng cây phân tích từng bước theo grammar phân tầng, so sánh hai cây của một grammar nhập nhằng (14 vs 20), và kiểm tra một dãy token có hợp lệ về cú pháp không.
1. Derivation Stepper — dựng cây phân tích từng bước
Dùng grammar phân tầng (không nhập nhằng, đã mã hoá ưu tiên * > + và trái-kết-hợp):
2. Ambiguity Demo — một chuỗi, hai cây, hai giá trị
Grammar nhập nhằng E → E + E | E * E | ( E ) | num chấp nhận
hai cây khác nhau cho cùng 2 + 3 * 4. Cây trái lấy
* trước (đúng) → 14; cây phải lấy + trước (sai) → 20.
E → E + E ở gốcE → E * E ở gốc* ưu tiên)
→ Một grammar cho ra hai cây = nguy hiểm. Grammar phân tầng ở Module 1 loại bỏ cây B ngay từ thiết kế: ở đó 2 + 3 * 4 chỉ có MỘT cây = 14.
3. Kiểm tra chuỗi hợp lệ — accepted / rejected
Nhập dãy token (cách nhau bởi dấu cách): dùng num hoặc số,
+ - * / ( ). Công cụ chạy parser theo grammar phân tầng và báo
chuỗi có thuộc ngôn ngữ không — đúng như câu hỏi mở bài "vì sao 2 + * 3 bị bác bỏ".