除了左\右递归

时间:2017-09-04 17:00:52

标签: javascript parsing recursion ecmascript-6 compiler-construction

This article声明:

  

编写正确表达运算符关联性的语法:

     
      
  • 对于左关联,请使用左递归。
  •   
  • 对于正确的关联性,   使用正确的递归。
  •   

我是对的,左递归语法是控制语法级别 的唯一方法吗?

这里提到的另一种方式是Associativity和Precedence Declarations:

%left +
%left *

据我所知,它是在实际的解析器级实现上实现的。

但是,LL解析器无法处理左递归语法。因此,如果我想实现递归下降解析器,我需要以某种方式在实现中解决它。这是对的吗?

Here实现递归下降解析器的作者提到:

  

递归下降解析器可以解析不包含的语法   左递归。但是,原始的ECMAScript语法包含一个   一堆左递归对于递归来说会很麻烦   血统解析器。开始解析器的第一步是转换   正如我在这里所做的那样消除左递归的语法。

     

有趣的是要注意消除的方法   左递归也与运算符关联性混淆,但我会处理   以后再用它。

0 个答案:

没有答案