编译原理 语法分析问题,那位帮帮忙啊,30分全给了!!救人

对下面文法G:
S->SaA|bB
A->aB|c
B->Bb|d
1.消除该方法的左递归。
2.计算消除左递归后的方法的每个非终结符的FIRST集和FOLLOW集。
3.判断方法是否为LL(1)方法,若是请构造它的预测分析表。

麻烦把过程写下,谢谢。

1.
S->bBS'
S'->aAS'|ε
A->aB|c
B->dB'
B'->bB'|ε
2.
First(S)={b}
First(S')={a,ε}
First(A)={a,c}
First(B)={d}
First(B')={b,ε}
Follow(S)={#}
Follow(S')={a,#}
Follow(A)={a}
Follow(B)={a}
Follow(B')={a}
3.不是LL(1)文法,因为
SELECT(S'->aAS')∩SELECT(S'->ε)={a}∩{a,#} ={a}≠空集
SELECT(A->aB)∩SELECT(A->c)={a}∩{c}=空集
SELECT(B'->bB')∩SELECT(B'->ε)={b}∩{a}=空集
温馨提示:答案为网友推荐,仅供参考
相似回答