Giả sử I là một tập các mục của văn phạm G thì bao đóng closure(I) là tập các mục được xây dựng từ I theo qui tắc sau:
A.
Đầu tiên là tất cả các mục của I được thêm cho closure(I). Sau đó nếu A → x.By thuộc closure(I) và B → z là một luật sinh thì thêm B → . z vào closure(I) nếu nó chưa có trong đó. Lặp lại bước này cho đến khi không thể thêm vào closure(I) được nữa.
B.
Nếu A → x.By thuộc closure(I) và B → z là một luật sinh thì thêm B → . z vào closure(I) nếu nó chưa có trong đó.
C.
Nếu A → x.By thuộc closure(I) và tồn tại B → z thì thêm B → z vào closure(I).
D.
Nếu A → x.By thuộc closure(I) và tồn tại B → z thì loại A → x.By khỏi closure(I).
Trả lời:
Đáp án đúng: A
Định nghĩa bao đóng (closure) của một tập các mục văn phạm (items) I là một tập các mục được xây dựng lặp đi lặp lại. Đầu tiên, tất cả các mục trong I được thêm vào closure(I). Sau đó, nếu có một mục A → x.By trong closure(I), nghĩa là ta đang xét một luật sinh A → xBy và đã đọc xong x, chuẩn bị đọc B, thì ta cần thêm tất cả các luật sinh của B (B → z) vào closure(I) dưới dạng B → .z (nếu nó chưa có trong đó). Việc này được lặp lại cho đến khi không còn mục nào có thể được thêm vào closure(I) nữa.
Phương án A mô tả chính xác định nghĩa này. Các phương án còn lại không đầy đủ hoặc không chính xác quy tắc thêm các luật sinh của B.





