Ai đó có thể khai sáng cho tôi lý do tại sao một trình phân tích cú pháp gốc đệ quy với quay lui thử các sản phẩm và (theo thứ tự đó) không nhận ra ngôn ngữ được tạo bởi ngữ pháp .
Nó dường như chỉ phân tích các từ trong ngôn ngữ .
Tôi đã tạo một trình phân tích cú pháp như vậy bằng cách sử dụng Trình tạo phân tích cú pháp ABNF này với quy tắc sản xuất S = "a" S "a" / "aa"
và trình phân tích cú pháp không nhận ra từ đó aaaaaa
, ví dụ.
Tôi hy vọng nó sẽ sử dụng sản xuất cho đến khi nối các nút đầu cuối của cây parse từ bên trái bắt đầu bằng 7 , và sau đó đi lên cây parse chọn sản phẩm thay cho đến khi cây trông như thế điều này:a
S
/ | \
a S a
/ | \
a S a
/ \
a a
aaaaaa
.
aaaaaa
nên phân tích và không. Nhưng aaaa
không phân tích cú pháp. Bạn rõ ràng đúng về quyền hạn của 2. Điều phải được xử lý. nó chỉ phân tích cú pháp aa
với S = "aa" / "a" [S] "a"
. Bạn có thể theo dõi những gì trình phân tích cú pháp làm?