我正在做一个练习来为语法创建 FIRST 和 FOLLOW 集。我认为我所做的是正确的,但答案与我的略有不同。所以需要有人帮助来验证这一点。谢谢你。语法是:
P -> L
L -> I X
X -> ; L | EPSILON
I -> A | C | W
A -> id := E
C -> if E then L O endif
O -> else L | EPSILON
W -> while E do L end
E -> E2 R
R -> Op1 E2 R | EPSILON
E2 -> T S
S -> Op2 E2 | EPSILON
T -> c | id
Op1 -> < | = | !=
Op2 -> + | -
EPSILON 是真正的“epsilon”,这是我为 X 设置的第一个答案:
FIRST(; L) = {;}
FOLLOW(X) = {$, else, end, endif}
但给出的答案是:
FIRST(; L) = {;}
FOLLOW(X) = {$, else, end, endif, then}
有人可以验证哪个是正确答案吗?谢谢:)