Hàm chuyển trạng thái GOTO(I,X) trong xây dựng automat LR(0) được định nghĩa:
GOTO(I,X)=closure({[A→αX⋅γ]:[A→α⋅Xγ]∈I})
tức là: lấy tất cả các mục trong tập (đã đóng) I có ký hiệu ngay sau dấu chấm bằng đúng X, dịch dấu chấm qua phải một vị trí (vượt qua X), rồi tính bao đóng của tập mục thu được (theo quy tắc đóng LR(0) chuẩn, xem lại: nếu mục có ký hiệu ngay sau dấu chấm là phi kết thúc B thì thêm mọi mục [B→⋅δ]).
Nếu không có mục nào trong I có ký hiệu ngay sau dấu chấm là X, thì GOTO(I,X) là tập rỗng.
Cho văn phạm, một tập mục I đã đóng đầy đủ (là một trạng thái hợp lệ của automat LR(0)), và một ký hiệu X, hãy tính GOTO(I,X).
A -> X1 X2 ... Xk hoặc A -> #).A -> β . γ (định dạng dấu chấm như bài closure).Nếu GOTO(I,X) là tập rỗng, in ra đúng một dòng EMPTY.
Ngược lại, in ra:
A -> β . γ, liệt kê theo thứ tự tăng dần khi so sánh chuỗi (thứ tự từ điển theo mã ASCII).Ví dụ:
Đầu vào:
7
E -> E + T
E -> T
T -> T * F
T -> F
F -> ( E )
F -> id
E' -> E
7
E -> . E + T
F -> . ( E )
E' -> . E
E -> . T
F -> . id
T -> . T * F
T -> . F
(
Đầu ra:
7
E -> . E + T
E -> . T
F -> ( . E )
F -> . ( E )
F -> . id
T -> . F
T -> . T * F
Đầu vào:
7
E -> E + T
E -> T
T -> T * F
T -> F
F -> ( E )
F -> id
E' -> E
7
E -> . E + T
F -> . ( E )
E' -> . E
E -> . T
F -> . id
T -> . T * F
T -> . F
id
Đầu ra:
1
F -> id .
Đang tải editor...