是不是所有的文法都可以化为LL(1)文法?
来源:互联网 发布:仓库平面图制作软件 编辑:程序博客网 时间:2024/05/22 05:18
这个问题也是我想问的... 然后就搜到了这样的一个回答
提出一个问题:是不是所有的文法都可以化为LL(1)文法?
这个问题提得很好,说明该同学确实认真学习了本章内容,对没有讲到的问题进行了深入的思考。
应当指出,并非一切非LL(1)文法都能利用提取左因子的方法将它改造为LL(1)文法。例如,对于文法
S→AU|BR
B→aBR|b
对于S产生式,因有
FIRST(AU)∩FIRST(BR)={a,b}
故它不是一个LL(1)文法,为对S产生式的两个候选式提取左因子,可先将其中的非终结符号A,B分别用相应产生式的右部进行替换,我们得到
S→aAUU|bU|aBRR|bR
经提取左因子后,得到了与原文法等价的文法
S→aS′|bS″
A→aAU|b
显然,它仍不是一个LL(1)文法,且不难看出,无论将上述操作重复多少次都不能把它改造为LL(1)文法。
能由某一LL(1)文法产生的语言称为LL(1)语言。已经证明,LL(1)文法及LL(1)语言具有许多重要的特性。现不加证明地列举其中的一些主要结论如下:
(1) 任何LL(1)文法都是无二义性的;
(2) 左递归文法必然不是LL(1)文法;
(3) 存在一种算法,它能判断任意的文法是否为LL(1)文法;
(4) 存在一种算法,它能判定任意两个LL(1)文法是否产生相同的语言;
(5) 不存在这样的算法,它能判定任意的前后文无关语言是否为LL(1)语言;
(6) 非LL(1)语言 (即不能由任何LL(1)文法产生的前后文无关语言)是存在的。
- 是不是所有的文法都可以化为LL(1)文法?
- LL(1)文法判定
- HDU1409-LL(1)文法
- LL(1)文法
- LL(1)文法生成器。
- LL(1)文法判断
- LL(1) 文法
- LL(1) 文法分析器
- LL(1)文法
- LL(1)的一个文法分析
- LL(1)文法的判别[00原创]
- LL(1)文法 JAVA
- LL(1)文法first集
- 如何判断文法是否是LL(1)文法
- 一个基于LL(1)文法的语法分析程序
- 编译原理实验二 tiny文法的LL(1)分析
- 程序实现给定文法的LL(1)分析
- LL(1)文法代码(有一定的纠错能力)
- [Quartz2D-1]-绘图
- SVN – 搭建 SVN 服务器 && 多项目分别建立版本库 && 同步至生产环境
- Android开发--遍历SQLite数据库下的所有表名
- BroadCastReceiver 简介
- dynamic programming
- 是不是所有的文法都可以化为LL(1)文法?
- Android 开机自启动应用
- sql REPLACE 把()替换成空
- Android 开发者笔记(OP)
- 用@ExceptionHandler 来进行异常处理
- 获取缓存大小和清除缓存功能
- 使用字体编辑软件修改字体
- 《犯错的孩子值得表扬》
- 解决不同类型手机系统照相机拍照无法确定返回问题