Search code examples
algorithmlanguage-agnosticprefixinfix-notationpostfix-notation

Algorithm to evaluate prefix expression?


I have a prefix expression that only has the 4 binary operators(+,-,*,/) .A straight forward way to evaluate such an expression is to convert it to a postfix expression and then evaluate that expression. But I am looking for an algorithm that does this directly without converting it to any other expression ?


Solution

  • Simple recursion:

    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)