Мне очень стыдно спрашивать... Я написал грамматику для языка с приведением типов от int к bool и наоборот.
logic_expr : expr NOT? OR | AND expr
| expr '|' expr SMALLER | LARGER
| NUMBER
| NUMBER_SHORT
| IDENT
| LOGIC_DEFINED
;
math_expr : expr ADD | SUB expr
| NUMBER
| NUMBER_SHORT
| IDENT
| LOGIC_FULL
;
expr : logic_expr
| math_expr
| IDENT
| LOGIC_DEFINED
| '(' expr ')'
;
Но antlr говорит мне: «Следующие наборы правил взаимно леворекурсивны [logic_expr, expr, math_expr]». Я не могу понять, что не так в моей грамматике?