参考关健Young的博客,网址:http://blog.sina.com.cn/s/blog_687911280100nc8t.html
左递归形式为:
1)A→Aβ,A∈VN,β∈V*
2)A→Bβ,B→Aα,A、B∈VN,α、β∈V*
称其为左递归。
其中可以采取修改左递归为右递归:
A→Aβ|γ。其中β非空,γ不以A打头
可写为:A→γA'
A'→βA'|ε
即:
A→Aα1| Aα2 |…|Aαm|β1|β2|…|βn
其中,αi(1≤i≤m)均不为空,βj(1≤j≤n)均不以A打头。
则消除直接左递归后改写为:
A→ β1A'| β2 A' |…| βnA'
A'→ α1A' | α2A' |…| αmA'|ε
例4.12:有文法G(E):
E→E +T |T
T→T*F | F
F→i| (E)
消除该文法的直接左递归。
解:按转换规则,可得:
E→TE'
E'→+TE'|ε
T→FT '
T'→*FT'|ε
F→i| (E)
腾讯实例:
S->Aa|b A->Ac|Sd|e,消除左递归
左递归消除方法如下:其中e为空集
U=Ux1|Ux2|y1|y2--àU=y1U’|y2U’ U’=x1U’|x2U’|e
故此为:A->Ac|Sd|e
A=Ac|Aad|bd|e ---àA=bdA’|A’ A’=cA’|adA’|e
320

被折叠的 条评论
为什么被折叠?



