4 为什么左递归不好? 此问题是从理论计算机科学堆栈交换迁移而来的,因为可以在计算机科学堆栈交换上回答。 迁移 6年前。 在编译器设计中,为什么应在语法中消除左递归?我正在读这是因为它可能导致无限递归,但是对于正确的递归语法来说,它也不是真的吗? 20 formal-grammars compilers left-recursion
1 算术表达式语法转换 在Theodore Norvell(1999)的文章“ 递归下降解析表达式”中,作者从算术表达式的以下语法入手: E --> E "+" E | E "-" E | "-" E | E "*" E | E "/" E | E "^" E | "(" E ")" | v 这很糟糕,因为它是模棱两可的并且是左递归的。因此,他从移除左递归开始,其结果如下: E --> P {B P} P --> v | "(" E ")" | U P B … 9 formal-languages context-free formal-grammars left-recursion