我在语法中有以下规则:
CCExpression
: LiteralExpression
| CCParenthesizedExpression
| CCSimpleNameExpression
| CCCastExpression
| CCOperatorExpression
| CCConditionalExpression
;
CCOperatorExpression
: CCUnaryOperator CCExpression
| CCExpression CCBinaryOperator CCExpression
;
我收到以下错误:
以下几组规则是相互左递归的[CCExpression,CCOperatorExpression]
我尝试将CCOperatorExpression
规则折叠为CCExpression
规则:
CCExpression
: CCExpression CCBinaryOperator CCExpression
| CCUnaryOperator CCExpression
| '(' CCExpression ')'
| LiteralExpression
| CCSimpleNameExpression
| CCCastExpression
| CCConditionalExpression
;
但这似乎没有帮助。我还是得到了:
以下规则集是相互左递归的[CCExpression]
我该如何解决这个问题?
答案 0 :(得分:0)
这是因为词法分析器规则不能保持递归,只有解析器规则可以。
请参阅:Practical difference between parser rules and lexer rules in ANTLR?