我收到了这个著名的错误
由于递归规则调用,规则具有非 LL(*) 决策
遵循简单的语法。
expr
: INTEGER
| '(' expr '+' expr ')'
;
bool_expr
: '(' bool_expr 'and' bool_expr ')'
| '(' expr '<' expr ')'
;
INTEGER
: '0'..'9'+
;
WS
: (' ' | '\t' | ('\r')? '\n')+ {$channel = HIDDEN; }
;
我已经经历了以下没有帮助的答案。
这个问题:我不想将数学表达式和布尔表达式合二为一,所以我不必通过 AST 来验证它。我试图将这两个表达式分开。
这个问题维基百科没有帮助我理解这种具体情况。而且我认为我不能比这更简化这个语法。
这个问题这里我想我们有不同的情况。
我不明白这里的左递归是什么。我没有看到任何A-->Ab|b
或类似的东西。谁能帮我解决这个问题。
请注意以下。
- 我没有运算符优先级,我总是使用括号
- 我不想结合两种类型的表达式
- 如果有人感兴趣,这适用于 ANTLR4