Алгоритм для оценки префиксного выражения?

У меня есть префиксное выражение, которое имеет только 4 бинарных оператора (+,-,*,/). Прямой способ оценить такое выражение - преобразовать его в постфиксное выражение, а затем оценить это выражение. Но я ищу алгоритм, который делает это напрямую, не преобразовывая его в какое-либо другое выражение?


person Nikunj Banka    schedule 16.02.2013    source источник
comment
Вы уверены, что ваше выражение является префиксом? Можете ли вы вставить несколько примеров? Инфиксные выражения трудно вычислить, и они обычно преобразуются в постфиксные.   -  person Amir Afghani    schedule 16.02.2013


Ответы (2)


Простая рекурсия:

Evaluate(input):
  Read a token from input.
  If the token is a value:
    Return the value of the token
  If the token is a binary operator:
    Let first_argument = Evaluate(input)
    Let second_argument = Evaluate(input)
    Return apply(operator, first_argument, second_argument)
person rici    schedule 16.02.2013

Используйте стек. Разместите свои переменные и операторы и начните извлекать каждый стек, один для операторов, а другой для varaiablss (количество извлечений зависит от арности).

person Srikant Krishna    schedule 16.02.2013
comment
Это довольно расплывчатый ответ. У вас есть какие-нибудь источники? - person ; 16.02.2013
comment
Она называется моделью автоматов выталкивания вниз. - person Srikant Krishna; 16.02.2013