88问答网
所有问题
为什么在自上而下的语法分析中,文法不能含有左递归和公共左因子
如题所述
举报该问题
推荐答案 2011-12-22
因为需要某个扩展时,需要根据读的到第一个字符来判断执行哪个扩展。
如果有左递归的话,将会陷入不停扩展的死循环。如果有公共左因子的话,也无法判断该选择哪个扩展。
比如E->EF,语法分析程序应该是
E()
{
E();
F();
}
这样,明显是个无限递归。
再比如E->aA|aB,当读到a时,分析器无法知道下一步该调用A的扩展函数还是B的扩展函数。
温馨提示:答案为网友推荐,仅供参考
当前网址:
http://88.wendadaohang.com/zd/tVcVtcaKM.html
相似回答
自顶向下
的语法分析
方法
答:
一个文法中含有左递归和左公共因子绝对不是LL(1)文法,所以也就
不可能
用确定的自顶向下分析法。某些
含有左递归和左公共因子的文法
在通过等价变换把它们消除以后可能变为LL(1)
文法,
但需要用LL(1)文法的定义判别,也就是说
文法中
不
含左递归和左公共因子,
只是LL(1)文法的必要条件。掌握LL(1)文法的...
...
分析中,
消除
左递归和
提取
左因子
的目的是
什么
?
答:
通常LL(1) 是以函数递归调用来实现的 如文法: A -> A + a | a 代码实现则为:function A(){ A();match('+');Term(a);} 这样你可以看得出死循环了吧...?将文法消除
左递归
后 A -> aA'A' -> +aA'则可以避免这一问题 提出公因式 就像楼上说的一样,避免程序回溯,消除二义性....
...
语法分析
器时,提
左因子
和消除
左递归
的目的是
什么
答:
消除左递归是因为LL文法不能处理含有左递归的文法
。提左因子只是推后产生式的选择决定,等到获取足够多的输入再作选择。
要证明一个文法是SLR(1)
文法,
但不是LL(1)文法,是不是要分SLR和LL来
分析
...
答:
1、首先该文法无
左递归
存在,没有
公共左因子
。其次:对于S→AaAb|BbBa FIRST(AaAb)={a} FIRST(BbBa)={b} FIRST(AaAb)∩FIRST(BbBa)=Φ 所以该文法是LL(1)文法.2、证明该
文法不
是SLR的。文法的LR(0)项目集规范族为:I0={S’→.S S→.AaAb S→.BbBa A→. B→.} I1={ S’→ S...
编译原理的LL(1)
文法
是
什么
意思
答:
1.
文法不含左递归,
没有
公共左因子
2.对于
文法中
的每个非终结符A的产生式的候选首符集两两不相交。3.对于文法中的每个非终结符A,它存在某个候选首符集包括ε,则FIRST(A)∩FOLLOW(A)=空 满足以上条件
的文法
为LL(1)文法
编译原理
语法分析中,
求first,follow集合时,要消除
左递归
吗
答:
如果题目是单纯求first、follow集合,不需要消除左递归.但是,如果求first、follow集合是为了判断文法是否为LL(1)文法的话,可以直接得出否定的结论(因为
含有左递归的文法
绝对不是LL(1)文法).可以先对文法进行改写,一般是消除
左递归和
提取
左公共因子,
然后再判断.
采用
自上而下分析,
必须()。
答:
采用
自上而下分析,
必须()。A.消除
左递归
B.消除右递归 C.消除回溯 D.提取
公共左因子
正确答案:C
如何判断一个
文法
是否为SLR(1)文法
答:
最有效的方法是画slr分析表,有移入-规约冲突,或者规约-规约冲突的就不是slr
文法,
没有冲突就是slr文法。简单的用follow集合是不能准确判断它是不是slr文法的
大家正在搜
自上而下和自下而上的知识
自上而下和自下而上
英语语法和中文语法的区别
编译原理中语法分析的方法
什么是语法分析
语法分析应遵循什么规则
语法分析的常用方法
什么是文法的语言
自上而下法
相关问题
自顶向下的语法分析方法
对下面文法先消除左递归,并提取左公共因子,再判断其是否是LL...
如果使用预测分析法来进行语法分析,为什么文法必须先转化为ll...
消除下列文法G[S]的左递归,获得与其等价的、无左递归的文法...
编译原理题目
简述为什么自顶向下的语法分析技术不能处理具有左递归的文法
编译原理试题
简述为什么自顶向下的语法分析技术不能处理具有左递归的文法