编译原理 语法分析问题,30分全给了!救人对下面文法G:S->SaA|bBA->aB|cB->Bb|d1.消除该方法的左递归.2.计算消除左递归后的方法的每个非终结符的FIRST集和FOLLOW集.3.判断方法是否为LL(1)方法,若是

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/10 23:20:25
编译原理 语法分析问题,30分全给了!救人对下面文法G:S->SaA|bBA->aB|cB->Bb|d1.消除该方法的左递归.2.计算消除左递归后的方法的每个非终结符的FIRST集和FOLLOW集.3.判断方法是否为LL(1)方法,若是

编译原理 语法分析问题,30分全给了!救人对下面文法G:S->SaA|bBA->aB|cB->Bb|d1.消除该方法的左递归.2.计算消除左递归后的方法的每个非终结符的FIRST集和FOLLOW集.3.判断方法是否为LL(1)方法,若是
编译原理 语法分析问题,30分全给了!救人
对下面文法G:
S->SaA|bB
A->aB|c
B->Bb|d
1.消除该方法的左递归.
2.计算消除左递归后的方法的每个非终结符的FIRST集和FOLLOW集.
3.判断方法是否为LL(1)方法,若是请构造它的预测分析表.
麻烦把过程写下,

编译原理 语法分析问题,30分全给了!救人对下面文法G:S->SaA|bBA->aB|cB->Bb|d1.消除该方法的左递归.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}=空集