Cho một văn phạm phi ngữ cảnh nhỏ, ký hiệu bắt đầu là vế trái của sản xuất đầu tiên trong danh sách. Quy ước ký hiệu (giống bài phát hiện xung đột SLR(1)): ký hiệu bắt đầu bằng chữ in hoa là non-terminal, mọi ký hiệu khác là terminal.
Hãy xây dựng tự động LR(0) chuẩn tắc (canonical LR(0) automaton) của văn phạm theo đúng thuật toán kinh điển:
Yêu cầu: cho biết tổng số trạng thái (số tập mục — item set) phân biệt trong tự động LR(0) chuẩn tắc thu được (bao gồm cả I0).
Ví dụ: với văn phạm chỉ có 1 sản xuất S -> a, tự động LR(0) có đúng 3 trạng thái: I0={S′→⋅S, S→⋅a}, I1={S′→S⋅} (từ goto(I0,S)), I2={S→a⋅} (từ goto(I0,a)). Kết quả in ra: 3.
LHS -> s1 s2 ... sk (nếu vế phải rỗng — sản xuất sinh ε — dòng chỉ có LHS ->).
Đảm bảo văn phạm đủ nhỏ để tự động LR(0) tương ứng có không quá vài trăm trạng thái.In ra đúng một dòng, là một số nguyên: tổng số trạng thái của tự động LR(0) chuẩn tắc.
Ví dụ:
Đầu vào:
1
S -> a
Đầu ra:
3
Đầu vào:
2
S -> ( S )
S -> id
Đầu ra:
6
Đang tải editor...