0

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

+0

Вы уверены, что ваше выражение префикс? Можете ли вы вставить несколько примеров? Выражения Infix трудно оценить и обычно конвертируются в постфикс. –

ответ

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

Это называется модель автоматов выталкивания. –

 Смежные вопросы

  • Нет связанных вопросов^_^