Trong bảng ACTION của một bộ phân tích LR, mỗi ô ứng với một cặp (trạng thái, ký hiệu kết thúc) có thể chứa nhiều hơn một hành động — đây chính là các xung đột khiến văn phạm không thuộc lớp LR đang xét. Có hai loại xung đột:
sK) và ít nhất một hành động rút gọn (rK).rK1, rK2, ... với K1=K2).Một ô có thể vừa là SR vừa là RR (ví dụ: 1 shift + 2 reduce khác nhau). Cho danh sách các ô của bảng ACTION cùng toàn bộ hành động được liệt kê trong từng ô, hãy đếm số ô có xung đột SR, số ô có xung đột RR, và liệt kê chi tiết.
Ví dụ: ô (trạng thái 2, ký hiệu +) chứa {s6, r3} → xung đột SR. Ô (trạng thái 2, ký hiệu *) chứa {r2, r4} → xung đột RR.
Dòng đầu là C (0≤C≤300) — số ô được liệt kê. Với mỗi ô: một dòng state symbol k (state là tên trạng thái dạng chuỗi/số, symbol là ký hiệu kết thúc, k≥1 là số hành động trong ô), tiếp theo k dòng, mỗi dòng một hành động dạng sK (shift), rK (reduce), hoặc acc. Nếu C=0 thì không còn dòng nào tiếp theo.
In ra dòng 1: số ô có xung đột SR. Dòng 2: số ô có xung đột RR. Sau đó, với mỗi ô có ít nhất một xung đột (sắp xếp theo state rồi theo symbol, so sánh chuỗi tăng dần), in một dòng state symbol LOAI với LOAI là SR, RR, hoặc SR+RR nếu ô có cả hai loại xung đột. Nếu không có ô nào xung đột, chỉ in 2 dòng số ở trên.
Ví dụ:
Đầu vào:
3
0 a 1
s1
1 b 1
r2
2 c 1
acc
Đầu ra:
0
0
Đầu vào:
4
0 id 1
s5
2 + 2
s6
r3
2 * 2
r2
r4
7 $ 1
acc
Đầu ra:
1
1
2 * RR
2 + SR
Đang tải editor...