This article声明:
编写正确表达运算符关联性的语法:
- 对于左关联,请使用左递归。
- 对于正确的关联性, 使用正确的递归。
我是对的,左递归语法是控制语法级别 的唯一方法吗?
这里提到的另一种方式是Associativity和Precedence Declarations:
%left +
%left *
据我所知,它是在实际的解析器级实现上实现的。
但是,LL解析器无法处理左递归语法。因此,如果我想实现递归下降解析器,我需要以某种方式在实现中解决它。这是对的吗?
Here实现递归下降解析器的作者提到:
递归下降解析器可以解析不包含的语法 左递归。但是,原始的ECMAScript语法包含一个 一堆左递归对于递归来说会很麻烦 血统解析器。开始解析器的第一步是转换 正如我在这里所做的那样消除左递归的语法。
有趣的是要注意消除的方法 左递归也与运算符关联性混淆,但我会处理 以后再用它。