Objective: The goal of this assignment is to practice the use of stacks in compiling.
Part 1: Write a program that, given a postfix expression, computes its value. Allow your program to take arbitrary non-negative integers, blank spaces between numbers and/or symbols, and the power operation symbol ^ in addition to the usual arithmetic operations +, -, *, and /, so that 23^ (or 2 3 ^) means 2^3, i.e., raising 2 to the power 3.
Part 2: Write a compiler program that takes, as inputs, usual (infix) expressions containing +, -, *, /, and ^, and uses the stacks to compute their values.
Comment: The book has a detailed code, but without the extra power operation.
For extra credit: Write a compiler program that allows variables in the expressions; for each variable, your program should ask the user for the value of this variable, and then compute the value of this expression.