[10 Points] Please have the following at the top of HW5.py (Please don't put you name on the homework for privacy reasons.)

# HW5.py
# Homework 5
#
# UT EID: XXX999, UTCS username: XXXXXXXX
# CS313e, Fall 2013, Dr. P. Cannata
# Department of Computer Science, The University of Texas at Austin --
Problem 1 [10 Points]: Write a python function called calc (we now know this will be an example of a general
recursive function or effective decision procedure or algorithm) that will use a Stack (from Homework 4) to
evaluate arithmetic expressions composed of just single digit integers, and "+" and "*" operators passed to
the function as a string (e.g., calc("((1+2)*3)") ). You should assume that there are opening and closing
parentheses at the beginning and end of the expression respectively e.g., calc("(1+1)") not calc("1+1").
You can also assume the expression is well formed, i.e., it contains no syntax errors.
(You may find the "break" operation handy in your solution, see pages 151-152 in the textbook. Also, you can
use the str() function to convert a number to a string, see page 71 of the textbook.)
To jog your memory, here's what we did in class to help motivate the solution (if you weren't in class,
this might not make much sense) :
e = "(((2+3)*(4*7))*2)"s1 = Stack()for s in e: print s s1.push(s)print s1s1 = Stack()s1.push("(")s1.push("(")s1.push("(")s1.push("2")s1.push("+")s1.push("3")print s1# Because we see a ")" in the expression, now do the following:v = eval(s1.pop() + s1.pop() + s1.pop())s1.pop()print vs1.push(v)print s1