1 Introduction
You will create a C++ program to evaluate expressions combining set union, set intersection and parentheses. The program must exploit a stack to convert the matrix expressions from inx notation to postx notation and a second stack to evaluate the postx expression.
In order to maintain similar notation to arithmetic expressions, + will denote union and * will be intersection. You will evaluate expressions like A * B +C, (A + B) (D +E F) or A B +(C * D), where A, B, C and D are sets.
We will dene the operation " + " of two sets A and B as the union of the contents of both sets:
A + B ≡ A U B (1)
Similarly, we will dene the operation " * " of A and B as the intersection of A and B:
A * B ≡ A ∩ B (2)
These denitions allow us to write long algebraic equations. We assign to the " + " a lower precedence than " * " (in the same way as we do in algebra) and parentheses change the precedence of an expression.
2 Input
The input is one script le, in the same format as the script le from previous homeworks, and two or more data les containing words. All operations supported in the previous homework (read(), write()) will still be supported. You will need to extend the script parser in order to accept expressions such as
R0=(A+B)*C
There will be one expression per line, and there might be multiple expressions in each script le. You are expected to be able to reuse the results from previous expressions.