Я нахожу грамматику для арифметического выражения в префиксной нотации. Однако у меня возникает проблема при анализе отрицательных чисел или вычитаний. Грамматика пример заключается в следующем:Арифметическая грамматика выражения в префиксном обозначении (Java Cup)
precedence right +, -;
precedence right *, /;
precedence right uminus;
E ::= + E E
| - E E
| * E E
|/E E
| (E)
| - E %prec uminus
| id
| digit
;
Но если мой вход - 5 4
, это уменьшает 5
в E
, рядом уменьшает - E
(отрицательный), а затем парсер дает мне ошибку синтаксиса в 4
. Правильный должен быть 5
как E
, следующий 4
как E
, а затем - E E
как E
. Как я могу решить эту проблему с помощью ассоциативности? или мне нужно переписать мою грамматику?
Это относится только к префиксной нотации, я прав? –
@ System.exit Он также относится к нотации «постфикс», также называемой «Поперечная польская нотация» (RPN). Хотя я не совсем уверен, что вы просите. – rici
Я прошу о возможном решении (если оно существует) грамматике для арифметических выражений в префиксе, которая может принимать отрицательные числа/переменные. На самом деле я сделал неоднозначную грамматику для обозначения «в порядке», и она работает, но я столкнулся с этой проблемой (отрицательные числа) с префиксом. –