我正在尝试使用ANTLR4(来自Java)解析C#代码。到目前为止,我找不到合适的语法,所以我决定写自己的语法。我使用了此附录here,但遇到了问题。问题是我有很多左递归规则。我试图通过使用ANTLRWorks(antlrworks-1.5)来修复它们,但是我一直在获取异常。我能够手动修复其中一些,但不能修复此类问题:

multiplicative_expression:
| unary_expression
| multiplicative_expression '*' unary_expression
| multiplicative_expression '/' unary_expression
| multiplicative_expression '%' unary_expression;


因此,有没有人可以指导我采用适合ANTLR4的语法,或帮助我解决左递归问题。谢谢。

最佳答案

ANTLR 4在内部处理直接的左递归。您上面发布的规则将在ANTLR 4中正常运行。

10-04 12:23