
答案
解:(1)由于有TT,S的产生式,所以消除该产生式的左递归,有新的文法G/[S]:
Sa|∧|(T)
TSU
U,SU|ε
(2)判断文法G/[S]是否为LL(1)文法。
各非终结符的FIRST集合如下:
FIRST(S)={a,∧,(}
FIRST(T)=FIRST(S)={a,∧,(}
FIRST(U)={,,ε}
各非终结符的FOLLOW集合如下:
FOLLOW(S)={#} ∪ FIRST(U) ∪ FOLLOW(T) ∪ FOLLOW(U)={#,,,)}
FOLLOW(T)={)}
FOLLOW(U)=FOLLOW(T)={)}
每个产生式的SELECT集合如下:
SELECT(Sa)={a}
SELECT(S∧)={∧}
SELECT(S(T))={(}
SELECT(TSU)=FIRST(S)={a,∧,(}
SELECT(U,SU)={,}
SELECT(Uε)=FOLLOW(U)={)}
可见,相同左部产生式的SELECT集的交集均为空,所以文法G/[S]是LL(1)文法。
文法G/[S]的预测分析表如下:
a ∧ ( ) , #
S a ∧ (T)
T SU SU SU
U ε ,SU