Đáp án đúng: CCâu hỏi này liên quan đến việc xây dựng bảng phân tích LR(0) cho một văn phạm. Cụ thể, nó yêu cầu tính Goto(I0, S), tức là trạng thái mới của tập mục khi đọc ký hiệu S từ trạng thái I0.
Để giải quyết, ta cần xác định I0 (tập mục khởi đầu) trước. I0 chứa luật sinh gốc (S' -> .S) và closure của nó. Closure bao gồm tất cả các luật sinh có vế phải bắt đầu bằng một non-terminal có mặt sau dấu chấm trong một luật sinh khác. Trong trường hợp này, I0 sẽ chứa S' -> .S, S -> .AS, S -> .b, A -> .SA và A -> .a.
Goto(I0, S) là tập hợp các luật sinh có dạng X -> S.Y, với X -> .SY thuộc I0, sau đó tính closure của tập hợp này.
Từ I0, ta thấy các luật sinh S' -> .S và A -> .SA có S sau dấu chấm.
- Khi đọc S từ S' -> .S, ta được S' -> S.
- Khi đọc S từ A -> .SA, ta được A -> S.A.
Vậy, tập hợp ban đầu là {S' -> S., A -> S.A}. Ta cần tính closure của tập hợp này.
Closure của A -> S.A bao gồm việc thêm tất cả các luật sinh có A ở vế trái, với dấu chấm ở đầu vế phải: A -> .SA và A -> .a.
Do đó, Goto(I0, S) = {S' -> S., A -> S.A, A -> .SA, A -> .a}.
Đáp án C: {S' -> S., A -> S.A, A -> .a} là gần đúng nhất, nhưng thiếu A -> .SA
Đáp án B: {A -> S.A, S -> .b} là sai.
Đáp án A: {S' -> S, A -> .a} là sai.
Đáp án D: {S -> .b , A -> .a} là sai.
Vì không có đáp án nào hoàn toàn chính xác, ta chọn đáp án gần đúng nhất là C, nhưng cần lưu ý rằng nó thiếu A -> .SA.