import sys
sys.dont_write_bytecode=True 
def say(x): sys.stdout.write(x)

def rpn(input):
    """Very simple rpn translator-- assumes
    no syntactic errors in the input."""
    minus    = lambda x,y : x - y
    plus     = lambda x,y : x + y
    mult     = lambda x,y : x * y
    args     = {"+" : plus, 
                "*" : mult, 
                "-" : minus}
    operator = lambda x: x in args
    stack    = []
    while input:
        token = input.pop(0)
        if not operator(token):
          stack += [token]
        else:
          two = stack.pop()
          one = stack.pop()
          f= args[token]
          stack += [f(one,two)]
    return stack[0]

def _shunt():
  print rpn([4])

  say("5 + ((1 + 2) * 4) - 3 = " )
  print rpn([5,1,2,"+",4,"*","+",3,"-"])

_shunt()    

