Trong một trình phân tích cú pháp LR (0), mỗi trạng thái bao gồm một tập hợp các mục LR (0), là các sản phẩm được chú thích với một vị trí. Trong một trình phân tích cú pháp LR (1), mỗi trạng thái bao gồm một tập hợp các mục LR (1), là các sản phẩm được chú thích với một vị trí và một ký tự nhìn.
Người ta biết rằng với một trạng thái trong một máy tự động LR (1), bộ cấu hình được hình thành bằng cách thả các mã thông báo nhìn từ mỗi mục LR (1) mang lại một bộ cấu hình tương ứng với một số trạng thái trong máy tự động LR (0). Theo nghĩa đó, sự khác biệt chính giữa máy tự động LR (1) và máy tự động LR (0) là máy tự động LR (1) có nhiều bản sao của các trạng thái trong máy tự động LR (0), mỗi trạng thái được chú thích bằng giao diện thông tin. Vì lý do này, tự động LR (1) cho một CFG nhất định thường lớn hơn trình phân tích cú pháp LR (0) tương ứng cho CFG đó.
Câu hỏi của tôi là máy tự động LR (1) có thể lớn hơn bao nhiêu. Nếu có ký hiệu đầu cuối riêng biệt trong bảng chữ cái của ngữ pháp, thì về nguyên tắc, chúng ta có thể cần sao chép từng trạng thái trong máy tự động LR (0) ít nhất một lần cho mỗi tập hợp con của ký hiệu đầu cuối riêng biệt đó, có khả năng dẫn đến một LR (1 ) automaton lớn gấp lần so với automaton gốc (0). Cho rằng mỗi mục riêng lẻ trong máy tự động LR (0) bao gồm một tập hợp các mục khác nhau (0), chúng ta có thể nhận được một cú đánh thậm chí còn lớn hơn.n 2 n
Điều đó nói rằng, tôi dường như không thể tìm ra cách xây dựng một họ ngữ pháp mà máy tự động LR (1) lớn hơn đáng kể so với máy tự động LR (0) tương ứng. Tất cả mọi thứ tôi đã thử đã dẫn đến sự gia tăng kích thước khiêm tốn (thường là khoảng 2-4 lần), nhưng dường như tôi không thể tìm thấy một mô hình dẫn đến một vụ nổ lớn.
Có những họ đã biết về ngữ pháp không ngữ cảnh có automata LR (1) lớn hơn theo cấp số nhân so với automata LR (0) tương ứng không? Hoặc được biết rằng trong trường hợp xấu nhất, bạn thực sự không thể có được một cú đánh theo cấp số nhân?
Cảm ơn!