Мне нужно сделать простой калькулятор (с инфиксным) парсером, который обрабатывает операторы +, -, *,/и float и переменные. Чтобы сделать это, я использовал javacc, и я сделал this grammar с jjtree. Он работает, но не гарантирует, что конечное дерево будет бинарным деревом, которое мне нужно. я хочу что-то вроде 5 * 3 + х-у, чтобы создать следующее дерево:Сделать грамматику калькулятора, которая делает двоичное дерево с javacc
*
/\
5 +
/\
3 -
/\
x y
Что бы правильная грамматика, чтобы сделать это, что не осталось бы рекурсией?
Но сохранит ли он приоритет оператора, должен ли я разбирать уравнение в нотации infix? – Maeln
Нет, это не соответствует приоритету оператора. И он не получает права ассоциативности. Это преднамеренно. Если вы посмотрите на дерево примеров в исходном сообщении, вы увидите, что он также не учитывает приоритет оператора и не получает ассоциативности + и - права. См. Править. –
К сожалению, мой плохой, я быстро сделал пример, он должен уважать приоритет оператора, мой плохой. Я пытаюсь [this] (http://stackoverflow.com/a/7867104/1149206), у него нет формального использования грамматики, но он работает очень хорошо для того, чего я пытаюсь достичь. В любом случае спасибо за ваш ответ! – Maeln