我正在尝试使用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中正常运行。