基于Monster 组和GPT的调写:
C) 由于某个非终结符的一个产生式的FIRST集合与另一个产生式的FIRST集合有交集,所以这个文法不是LL(1)的。具体来说,L的两个产生式的FIRST集合都包含a,而S的产生式的FIRST集合包含s,这就导致了S的产生式和L的产生式存在冲突,无法进行预测性分析。
D) 对文法进行改写如下:
G -> S
S -> aS' | sS'
S' -> ,SaS' | ε
首先计算FIRST集合和FOLLOW集合:
FIRST(S) = {a, s}
FIRST(S') = {,, ε}
FIRST(G) = FIRST(S) = {a, s}
FOLLOW(S) = {), ,}
FOLLOW(S') = {), ,}
FOLLOW(G) = {$, )}