Когда я пытаюсь скомпилировать мою грамматику калькулятора antlr4, оказывается, что она остается рекурсивной. Мне нужно изменить это, чтобы исправить.
Я пытался переписать правила и использовать разные места в скобках, но все они не работают. Вот моя последняя версия правил ошибок:
Parser:
expression: INT | DECIMAL | arithmetic;
arithmetic: expression OPERATION expression;
Лексер:
OPERATION: SUB | ADD | MULT | DIV;
SUB: '-';
ADD: '+';
MULT: '*';
DIV: '/';
DPOINT: '.';
INT: SUB? NUMBER+;
DECIMAL: SUB? NUMBER+ DPOINT NUMBER+;
Я ожидаю, что компиляция будет успешной, но возникает следующая ошибка:
ANTLR Tool v4.4 (/tmp/antlr-4.4-complete.jar)
hZH.g4 -o /home/heng/workspace/Ultimate ZH Compiler/target/generated-sources/antlr4 -listener -no-visitor -encoding UTF-8
error(119): hZH.g4::: The following sets of rules are mutually left-recursive [expression, arithmetic]
1 error(s)
BUILD FAIL
Как я могу изменить свои правила для успешной сборки?