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.