У меня есть префиксное выражение, в котором есть только 4 бинарных оператора (+, -, *, /). Прямым способом оценки такого выражения является преобразование его в постфиксное выражение, а затем оценка этого выражения. Но я ищу алгоритм, который делает это напрямую, не преобразовывая его в какое-либо другое выражение?Алгоритм для оценки префиксного выражения?
0
A
ответ
4
Простой рекурсии:
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)
0
Используйте стопку. Поместите ваши вары и операторы и начните выскакивать каждый стек, один для операторов, а другой для varaiablss (количество всплывающих окон в зависимости от arity).
+1
Это довольно смутный ответ. У вас есть источники? – 2013-02-16 15:50:39
+2
Это называется модель автоматов выталкивания. –
Вы уверены, что ваше выражение префикс? Можете ли вы вставить несколько примеров? Выражения Infix трудно оценить и обычно конвертируются в постфикс. –