Lecture Notes on 19 Mar 2014 1) Suppose that A = 7.0, B = 4.0, C = 3.0, and D = -2.0. Evaluate the following RPN expressions: a) A B + C / D * b) A B C D + / * 2) Convert the following infix expressions to RPN: a) (A + B) / (C + D) b) (A - B) * (C - (D + E)) 3) Convert the following RPN expressions to infix notation a) A B C D + - * b) A B + C - D E * / class Stack (object): def __init__ (self): self.stack = [] def push (self, item): self.stack.append ( item ) def pop (self): return self.stack.pop() def peek (self): return self.stack[-1] def isEmpty (self): return (len(self.stack) == 0) def size (self): return (len(self.stack)) def operate (oper1, oper2, token): if (token == '+'): return oper1 + oper2 elif (token == '-'): return oper1 - oper2 elif (token == '*'): return oper1 * oper2 else: return oper1 / oper2 def rpn (s): stack = Stack() operators = ['+', '-', '*', '/'] tokens = s.split() for item in tokens: if (item in operators): oper2 = stack.pop() oper1 = stack.pop() stack.push (operate (oper1, oper2, item)) else: stack.push (float(item)) return stack.pop() def main(): inFile = open ('./rpn.txt', 'r') for line in inFile: line = line.rstrip ('\n') value = rpn (line) print (line, '=', value) inFile.close() main()