This assignment comes in two parts. The second part builds upon a correct solution to the first part. PART ONE Make a Reverse Polish Notation Calculator If you don't know about Reverse Polish Notation, don't worry. It is very easy to understand, and even the wikipedia entry for it is understandable. This program should have an interactive loop: program asks for a formula user types a formula, as a single string if the string is "stop" then exit program evaluates that formula program prints the result Here's a small sample run showing the sort of thing that should work: formula: 1 2 3 4 5 + + + + result is 15 formula: 12.3 45.6 + result is 57.9 formula: 1 2 + 3 + 4 + 5 + 10 / result is 1.5 formula: 1 2 * 3 4 * + 5 + result is 19 formula: 1 2 + 3 4 + * 5 * result is 105 formula: stop Your program should be crash-proof and fool-proof. That means that it should continue running no matter what bad inputs the user provides, and it should never print an invalid result, the results are only allowed to be proper numbers. Check for all possible problems. PART TWO Make the Reverse Polish Notation calculator work with variables To do this, we introduce a new operator, ->. This does not behave like a normal operator. Immediately following the -> there must be a variable name. Whatever is on top of the stack becomes the value of that variable, but it isn't removed, it the value remains on the top of the stack. Whenever a name appears anywhere else in a formula, the value of that variable is pushed onto the stack. An example run: formula: 3.14159 -> pi result is 3.14159 formula: 10 -> r result is 10 formula: pi r r * * -> area result is 314.159 formula: stop That's it.