# CMPSCI 187: Programming With Data Structures

### David Mix Barrington

### Fall, 2011

# Discussion Assignment #3: Playing with the Postfix Evaluator

### 28 September 2011

Last Monday in lecture we reviewed the postfix evaluator from Section 3.5
of L&C. Today we will play with translating and evaluating postfix expressions.

#### Question 1:

The first set of questions asks you to evaluate some
postfix expressions. Some are valid and some are not -- identify which ones
are invalid and why, and evaluate the valid ones:
- (a)
1 1 + 1 + 1 1 + + 1 1 + 1 + *

- (b)
2 3 + 1 * / 3 2 1 + 4 *

- (c)
3 1 - 4 * 2 4 * 7 + 3 3 -

- (d)
7 6 + 5 * 4 3 2 - + 1 - * *

#### Question 2:

Translate the *valid* postfix expressions from
Question 1 into infix expressions.
#### Question 3:

Next we will translate some infix expressions into postfix.
(If you have time, evaluate these as well.) Remember the rule -- find the
operator to be executed lasst, consider the infix experession as "R op S",
translate R to R' and S to S' by the same rule, then write "R' S' op".
- (a)
(1 - 2 + 3) * (2 * 3 + 4) - 8 / 2 + 3 + 5

- (b)
(1 + 2 * (1 + 2 * (1 + 2 * (1 + 2 * 3))))

- (c)
7 / (2 + 2) + (3 * 7 - 1) / 5

- (d)
(((((7 / 6) / 5) / 4) / 3) / 2) / 1

#### Question 4:

Every valid postfix expression has one more number than
it has operators -- explain why.
#### Question 5:

An expression with k operators and k+1 numbers (and no
parentheses) may or may not be a valid postfix expression. How can you tell?
Last modified 29 September 2011