ANTLR4 yet another left recursion -
i'm ashamed ask... wrote grammar language typecast int bool , vice versa.
logic_expr : expr not? or | , 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 ')' ;
but antlr tells me "the following sets of rules mutually left-recursive [logic_expr, expr, math_expr]" cant understand what's wrong in grammar?
as of antlr 4.2.2, antlr 4 not support grammars contain indirect left recursion. limitation addressed issue #522, i'm hopeful makes antlr 4.3.
since antlr 4 supports direct left recursion, can solve problem inlining logic_expr
, math_expr
rules. edited 3 broken alternatives adding parentheses omitted. did not remove ambiguity present in original rules.
expr : expr not? (or | and) expr | expr '|' expr (smaller | larger) | number | number_short | ident | logic_defined | expr (add | sub) expr | number | number_short | ident | logic_full | ident | logic_defined | '(' expr ')' ;
Comments
Post a Comment