Я пишу простой анализатор выражений, используя Antlr4 для приложения калькулятора.Я понятия не имею, как написать грамматику, которая различает цифру -9 и арифметическое выражение 9 - 9. Любая помощь очень ценится
Вот мое выражение грамматики.g4:
grammar expression;
expression = expression ADDOPER expression
| expression SUBOPER expression
| NUMBER;
/* lexical rules */
ADDOPER :'+';
SUBOPER :'-';
NUMBER : -?[1-9]+ [0-9]*('.'DIGIT+)? |'0'?('.'DIGIT+) |'0' ;
Проблема с приведенной выше грамматикой заключается в том, что она соответствует -9
как число в арифметическом выражении 9 - 9
, но предполагается, что это полная арифметическая операция.
Но -9 + 9
работает нормально.