因为需要某个扩展时,需要根据读的到第一个字符来判断执行哪个扩展.
如果有左递归的话,将会陷入不停扩展的死循环.如果有公共左因子的话,也无法判断该选择哪个扩展.
比如E->EF,语法分析程序应该是
E()
{
E();
F();
}
这样,明显是个无限递归.
再比如E->aA|aB,当读到a时,分析器无法知道下一步该调用A的扩展函数还是B的扩展函数.
因为需要某个扩展时,需要根据读的到第一个字符来判断执行哪个扩展.
如果有左递归的话,将会陷入不停扩展的死循环.如果有公共左因子的话,也无法判断该选择哪个扩展.
比如E->EF,语法分析程序应该是
E()
{
E();
F();
}
这样,明显是个无限递归.
再比如E->aA|aB,当读到a时,分析器无法知道下一步该调用A的扩展函数还是B的扩展函数.