Step 1: Input
input: a string containing an infix expression
output: a queue of (token) pointers to Operator and Operand objects
Step 2: Convert: (Shunting Yard)
Input: a queue of token pointers to Operator and Operand objects representing an infix expression
output: a queue of token pointers to Operator and Operand objects representing an postfix expression
Step 3: Evaluate (RPN)
Input: a queue of token pointers to Operator and Operand objects representing an postfix expression
output: a double number
RPN:
Write a function rpn that will take a queue of token pointers and returns a double.
Token, Number, Operator
Design a class Token with an integer _type to indicate what type of token it is: 1 for numbers, 2 for operators.
Design two derived classes: Number and Operator.
Number will have a double member variable named. _val, Operator will have a character _op to hold the operator.
The operator will have a function evaluate() that takes two doubles and returns the resulting double value
Input Queue: holds the inputted expression one token at a time:
Queue<Token*> input_q
RPN Stack:
Stack<Token*> rpn_stack will be used in the rpn function
rpn()
double rpn(Queue<Token*> input_q);
takes in an input queue and returns the evaluation of the expression.