Một cụm từ hoán vị là một mở rộng của tiêu chuẩn (E) BNF bối cảnh tự do định nghĩa ngữ pháp: một cụm từ hoán vị chứa sản xuất (hoặc tương đương, không thuộc đầu cuối) qua . Ở vị trí của cụm từ hoán vị, chúng tôi muốn thấy mỗi một trong số các sản phẩm này chính xác một lần, nhưng chúng tôi không quan tâm đến việc đặt hàng của các nonterminals này.
Ví dụ:
S <- X { A, B, C } Y
tương đương với:
S <- X A B C Y
S <- X A C B Y
S <- X B A C Y
S <- X B C A Y
S <- X C A B Y
S <- X C B A Y
Khái niệm này dường như được giới thiệu trong "Mở rộng ngữ pháp không ngữ cảnh với các cụm từ hoán vị" . Trong đó, nó cũng được mô tả cách phân tích các cụm từ này trong thời gian tuyến tính bằng cách sử dụng trình phân tích cú pháp LL (1).
Bài viết "Phân tích cụm từ hoán vị" mô tả một phương pháp để phân tích các cụm từ hoán vị bằng cách sử dụng các trình kết hợp trình phân tích cú pháp. Đây là hai bài báo duy nhất tôi thấy nói về các cụm từ hoán vị và cách phân tích chúng.
Thấy rằng chúng ta có thể dễ dàng phân tích các loại cụm từ hoán vị này bằng các trình phân tích cú pháp dựa trên LL (1), tôi đoán rằng chúng ta có thể làm tương tự với các trình phân tích cú pháp kiểu LR (1). Câu hỏi của tôi là:
Một ngữ pháp có chứa các cụm từ hoán vị có thể được phân tích cú pháp tuyến tính theo thời gian trong kích thước chuỗi đầu vào bằng cách sử dụng máy móc LR (1) trong khi duy trì một bảng có kích thước hợp lý không?
Các cụm từ hoán vị không mở rộng sức mạnh của các ngôn ngữ không ngữ cảnh: như trong ví dụ của tôi ở trên, người ta có thể chỉ cần liệt kê tất cả các hoán vị có thể. Tuy nhiên, ngữ pháp sau đó phát nổ khi ngữ pháp kết quả có thể có kích thước . Điều này cho phép phân tích thời gian tuyến tính, nhưng kích thước của ngữ pháp trở nên quá lớn.
Cách tiếp cận trên hoạt động cho bất kỳ thuật toán phân tích cú pháp nào (mặc dù nó không hữu ích), vì vậy có lẽ chúng ta có thể làm tốt hơn cho các thuật toán cụ thể. Chúng ta có thể giảm số lần thổi xuống 'chỉ' theo cấp số nhân ( ) bằng cách mã hóa các cụm từ vào bảng LR: chúng ta có thể mã hóa các mục LR mà sản phẩm chưa được nhìn thấy, và do đó làm giảm việc thổi phồng cho tất cả các tập hợp con của cụm từ hoán vị.
Mặc dù điều này tốt hơn, nhưng tất nhiên là không đủ tốt - có một cụm từ hoán vị gồm 30 mục sẽ làm cho ngữ pháp không thể sử dụng được. Vẫn còn một phần của phân tích cú pháp LR mà chúng ta chưa chạm tới và đó là quy trình dựa trên ngăn xếp thực tế được sử dụng để phân tích cú pháp. Tôi tưởng tượng việc lưu trữ các quầy trên ngăn xếp có thể giải quyết vấn đề, nhưng tôi không chắc làm thế nào để làm điều đó.
Tôi hiện đang triển khai trình tạo trình phân tích cú pháp và trong cụm từ hoán vị miền có vấn đề sẽ là một món quà từ thiên đường. Khi tôi đang sử dụng máy móc LR (1), câu hỏi trên tiếp theo.