消除左递归
来源:互联网 发布:时间同步服务器软件 编辑:程序博客网 时间:2024/04/30 22:35
参考关健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
0 0
- 消除左递归文法
- 消除左递归文法
- 消除左递归
- 二义性 消除左递归
- 消除左递归
- 如何消除左递归
- 消除文法的左递归
- 消除文法的左递归
- 编译原理 消除左递归
- 编译原理 消除左递归
- 消除文法中一切左递归算法
- 消除文法左递归-编译原理
- 编译原理(三) 消除文法左递归
- 编译原理:如何消除左递归,提取公共左因子
- 文法左递归的消除(直接左递归和间接左递归)
- 编译原理(三) 消除文法的左递归
- 编译原理之消除算术表达式文法的左递归
- 编译原理(三) 消除文法的左递归
- HttpServletResponse编码问题
- DVWA之Brute Force
- 【数据库学习】机房收费系统(二)组合查询
- 【LeetCode 88 】 Merge Sorted Array
- 软件测试初体验
- 消除左递归
- 如何仅用递归函数和栈操作逆序一个栈
- Java面试题之一---------字符串截取(字节分配)(编码)
- jQuery带左右按钮控制图片切换
- 设计模式(7):原型模式
- Swift初级:变量与数据类型
- VirtualBox不能启动虚拟机的原因
- [UIImage resizableImageWithCapInsets:]使用注意
- linux查看进程运行路径