编译原理—消除直接左递归

自顶向下语法分析

语法分析从顶部(树根、文法的开始符号)到底部(叶子、语言的终结符号)为输入的符号串建立分析树。

自顶向下语法分析要求无左递归,有左递归会陷入无穷递归。

左递归

一个文法G,若存在P经过一次或多次推导得到Pa(即能推导出以P开头的式子), 则称G是左递归的

左递归分为直接左递归和间接左递归。
直接左递归经过一次推导就可以看出文法存在左递归,如P→Pa|b。
间接左递归侧需多次推导才可以看出文法存在左递归,如文法:S→Qc|c,Q→Rb|b,R→Sa|a有S =>Qc =>Rbc =>Sabc


消除左递归

a)消除直接左递归

将直接左递归改写为右递归

P→Pa|b       //含左递归

P—>bP'

P'—>aP' | ε     //更改后的右递归


猜你喜欢

转载自blog.csdn.net/m0_37205611/article/details/80815632
今日推荐