Khi xây dựng bảng ACTION cho một bộ phân tích SLR, đôi khi tại cùng một ô (một cặp trạng thái, ký hiệu kết thúc) lại có nhiều hơn một hành động được đề xuất — đó chính là xung đột (conflict) khiến văn phạm không thuộc lớp SLR(1). Cho một bảng ACTION thô dưới dạng danh sách các bộ ba (state, terminal, action) (có thể trùng lặp, có thể mâu thuẫn), với action là một trong: S<k> (shift đến trạng thái k), R<i> (reduce theo luật i), hoặc ACC (accept). Trong đề bài này, ACC chỉ xuất hiện đơn lẻ ứng với ký hiệu $ và không bao giờ xung đột với hành động khác.
Với mỗi cặp (state, terminal) xuất hiện trong bảng, gom tất cả các hành động khác nhau về nội dung được đề xuất cho cặp đó (nếu bảng liệt kê 2 dòng giống hệt nhau cho cùng 1 cặp thì chỉ tính là 1 hành động, không phải xung đột). Nếu tập hành động của một cặp có từ 2 phần tử trở lên:
SR.RR.Hãy liệt kê tất cả các xung đột tìm được.
Ví dụ: nếu bảng có 2 dòng 2 + S6 và 2 + R2, thì tại (state=2, terminal="+") có cả shift và reduce → xung đột 2 + SR.
state terminal action (state là số nguyên ≥0, terminal là một chuỗi không chứa khoảng trắng, action có dạng S<k>, R<i> hoặc ACC).Nếu không có xung đột nào: in đúng một dòng NONE.
Ngược lại: in mỗi xung đột trên một dòng theo định dạng state terminal type (type là SR hoặc RR), các dòng được sắp xếp tăng dần theo state, nếu bằng nhau thì theo thứ tự từ điển của terminal.
Ví dụ:
Đầu vào:
4
0 id S5
0 ( S4
1 + S6
1 $ ACC
Đầu ra:
NONE
Đầu vào:
6
2 + S6
2 + R2
2 * S7
2 $ R2
5 ) R4
5 + R4
Đầu ra:
2 + SR
Đang tải editor...