0
使用ANTLR 4.6,2016年11月23日的快照。从左递归规则中去除相互左递归
我有两个规则,每个是左递归。我扩展了几个替代方法来公开左递归。 ANTLR4处理这个问题,因为左递归是明确的。但是,这两条规则也是相互左递归的。
如何解决相互左递归,并这样做,使规则不是一团糟?现在我有很好的评论,展示了扩展的内容,并将其移至primary2和constant_primary2中,这些参数并不涉及相互左递归。
constant_primary :
constant_primary2
| primary '.' method_call_body
| constant_primary '\'' '(' constant_expr ')'
;
primary :
primary2
| primary '.' method_call_body
| constant_primary '\'' '(' expr ')'
;