为什么在自上而下的语法分析中,文法不能含有左递归和公共左因子

如题所述

因为需要某个扩展时,需要根据读的到第一个字符来判断执行哪个扩展。
如果有左递归的话,将会陷入不停扩展的死循环。如果有公共左因子的话,也无法判断该选择哪个扩展。
比如E->EF,语法分析程序应该是
E()
{
E();
F();
}
这样,明显是个无限递归。

再比如E->aA|aB,当读到a时,分析器无法知道下一步该调用A的扩展函数还是B的扩展函数。
温馨提示:答案为网友推荐,仅供参考
相似回答