消除左递归
Posted miaoxiaowen
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了消除左递归相关的知识,希望对你有一定的参考价值。
1.将以下文法消除左递归,分析符号串 i*i+i 。
并分别求FIRST集、FOLLOW集,和SELECT集
E -> E+T | T
T -> T*F | F
F -> (E) | i
2.P101练习7(2)(3)文法改写,并分别求FIRST集、FOLLOW集,和SELECT集
消除左递归: FIRST集: FOLLOW集: SELECT集:
A→aA‘ FIRST(A)→{a} FOLLOW(A)→{d,#} SELECT(A→aA‘)={d,#}
A‘→ABe|ε FIRST(A‘)→{a,ε} FOLLOW(A‘)→{d,#} SELECT(A‘→ABe)={a}
B→dB‘ FIRST(B)→{d} FOLLOW(B)→{e} SELECT(A‘→ε)={d,#}
B‘→bB‘|ε FIRST(B‘)→{b,ε} FOLLOW(B‘)→{e} SELECT(B→dB‘)={e}
SELECT(B‘→bB‘)={b}
SELECT(B‘→ε)={e}
(3)S→Aa|b
A→SB
B→ab
课堂练习:
求以下文法的FIRST集、FOLLOW集和SELECT集。
S->Ap
A->a |ε
A->cA
A->aA
S->Ap
S->Bq
A->a
A->cA
B->b
B->dB
以上是关于消除左递归的主要内容,如果未能解决你的问题,请参考以下文章