从左获取规则中删除相互的左回归



与antlr 4.6,11/23/2016的快照。

我有两个规则,每个规则均为左派。我扩展了几种替代方案,以暴露左侧递归。Antlr4处理此问题,因为左递归是显式的。但是,这两个规则也是相互左派的。

我如何解决相互的左递归并这样做,以使规则不是完全混乱?现在,我有很好的评论,显示了扩展的内容,我将其移至primary2和constant_primary2,而这些2和constant_primary2不涉及相互左侧的递归。

constant_primary : 
  constant_primary2
  | primary '.' method_call_body
  | constant_primary ''' '(' constant_expr ')'
  ;
primary : 
  primary2
  | primary '.' method_call_body
  | constant_primary ''' '(' expr ')'
  ;

一个选项是切换到我的antlr 4的叉子,可以使用组ID com.tunnelvisionLabs 通过maven获得。该叉子在产生与您在语法中实际写的形式相匹配的解析树时处理相互的左递归。

请注意,此功能有些实验。如果您遇到问题,请随时在我的叉子上发布问题。

相关内容

  • 没有找到相关文章

最新更新