Write Java classes to support a processing of arithmetic expressions in prefix notation called PNInterpreter.? Expressions in prefix notation contain an operator first and then the operands on which the operation is performed. For example, + 3 4 is equal to 3 + 4 in the infix notation. For this assignment your program should support integers only and the following operators: + - * / ^. ? There are a variety of ways to implement the prefix notation interpreter. One way is to use stacks.? Another would be to use a tree.? Chose either one of the two ways and implement the necessary data structures instead of using the built-in Java classes. Trees and stacks and their implementation are discussed in most data structure textbooks. Your interpreter should accept strings of operators and operands seperated by spaces (no parenthesis) and return each operation it performed and the final result or output an error if the input is invalid. ? Write a main program that calls the test on your implementation to demonstrate that it works correctly. Call the main class PNInterpreterDriver. Write a test method testInterpreter that works with an object of your implementation of PNInterpreter.? testInterpreter should be able to read from standard input a list of expressions like this: * + 2 * 4 6 + 3 5 - - / 3 4 * 5 6 2 - 3 2 + 2 quit ??quit?? (or encountering the end of stream) is the signal to stop reading from the standard input. The test method (using StreamTokenizer or similar built-in stream class) should read these commands and act appropriately. For example, with the following test file, you might see something like this as the output of the program: brillig(65)#java PNInterpreterDriver < [url removed, login to view] Testing string: * + 2 * 4 5 + 3 5 operation performed: 4 * 6, result 24 operation performed: 2 + 24, result 26 operation performed: 3 + 5, result 8 operation performed: 26 * 8, result 208 Final result: 208. Testing string: - - / 3 4 * 5 6 2 operation performed: 3 / 4, result 0 operation performed: 5 * 6, result 30 operation performed: 0 ??" 30, result -30 operation performed: -30 ??" 2, result -32 Final result: -32. Testing string: - 3 2 + 2 operation performed: 3 ??" 2, result 1 invalid expression, reached end of expression command: quit Testing complete.
1) Complete and fully-functional working program(s) in executable form as well as complete source code of all work done. 2) The program MUST meet the specifications EXACTLY. In other words, DO NOT add any extra "features". If it doesn't ask for a GUI or extra mathematical features, don't include it! 3) Complete ownership and distribution copyrights to all work purchased.
This program is to be written in Java only so it should be platform independent.
## Deadline information
This project MUST be completed by Tuesday, October 1, 2002, 8:00am EST, US. Do not bid on this project if you cannot meet the deadline.