Dưới phân tích cú pháp, chúng tôi hiểu hầu hết phân tích các ngôn ngữ tự do ngữ cảnh. Một ngôn ngữ tự do ngữ cảnh mạnh hơn ngôn ngữ thông thường, do đó trình phân tích cú pháp có thể (thường xuyên nhất) thực hiện công việc của bộ phân tích từ vựng ngay lập tức.
Nhưng, đây là một) khá không tự nhiên b) thường không hiệu quả.
Đối với a), nếu tôi nghĩ về việc ví dụ if
biểu thức trông như thế nào , tôi nghĩ NẾU expr THEN expr ELSE expr chứ không phải 'i' 'f', có thể một số khoảng trắng, sau đó bất kỳ ký tự nào mà một biểu thức có thể bắt đầu, v.v. ý tưởng.
Đối với b) có các công cụ mạnh mẽ thực hiện công việc tuyệt vời để nhận ra các thực thể từ vựng, như định danh, nghĩa đen, dấu ngoặc, v.v. Chúng sẽ thực hiện công việc của chúng trong thực tế không có thời gian và cung cấp cho bạn một giao diện đẹp: danh sách các mã thông báo. Không phải lo lắng về việc bỏ qua khoảng trắng trong trình phân tích cú pháp nữa, trình phân tích cú pháp của bạn sẽ trừu tượng hơn nhiều khi nó xử lý các mã thông báo chứ không phải với các ký tự.
Rốt cuộc, nếu bạn nghĩ rằng một trình phân tích cú pháp nên bận rộn với các công cụ cấp thấp, tại sao sau đó xử lý các ký tự? Người ta có thể viết nó cũng trên cấp độ bit! Bạn thấy đấy, một trình phân tích cú pháp như vậy hoạt động ở cấp độ bit sẽ gần như không thể hiểu được. Nó giống với các ký tự và mã thông báo.
Chỉ 2 xu của tôi.