51
) Number ) Operator Operator ) Number (7 + (3 * (4 + 4) * 2 * 2 * (1 + 2) ) * 3) Operator Operands Stacks Two Stacks to Evaluate a Simple Arithmetic Expr ( Start Operat or

) Number ) Operator ) Number (7 + (3 * (4 + 4) * 2 * 2 * (1 + 2) ) * 3) OperatorOperands Stacks Using Two Stacks to Evaluate a Simple Arithmetic Expression

  • View
    218

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ) Number ) Operator ) Number (7 + (3 * (4 + 4) * 2 * 2 * (1 + 2) ) * 3) OperatorOperands Stacks Using Two Stacks to Evaluate a Simple Arithmetic Expression

)Number

)

OperatorOperator

)

Number

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

Operator Operands

Stacks

Using Two Stacks to Evaluate a Simple Arithmetic Expression

( StartOperator

Page 2: ) Number ) Operator ) Number (7 + (3 * (4 + 4) * 2 * 2 * (1 + 2) ) * 3) OperatorOperands Stacks Using Two Stacks to Evaluate a Simple Arithmetic Expression

)Number

)

OperatorOperator

)

Number

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

Operator Operands

Stacks

Using Two Stacks to Evaluate a Simple Arithmetic Expression

( StartOperator

+ 0

Init: Push + and 0 onto the stacks

Page 3: ) Number ) Operator ) Number (7 + (3 * (4 + 4) * 2 * 2 * (1 + 2) ) * 3) OperatorOperands Stacks Using Two Stacks to Evaluate a Simple Arithmetic Expression

)Number

)

OperatorOperator

)

Number

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

Operator Operands

Stacks

Using Two Stacks to Evaluate a Simple Arithmetic Expression

( StartOperator

++

00

Lparen: Push + and 0 onto the stacks

Page 4: ) Number ) Operator ) Number (7 + (3 * (4 + 4) * 2 * 2 * (1 + 2) ) * 3) OperatorOperands Stacks Using Two Stacks to Evaluate a Simple Arithmetic Expression

)Number

)

OperatorOperator

)

Number

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

Operator Operands

Stacks

Using Two Stacks to Evaluate a Simple Arithmetic Expression

( StartOperator

+

+

0

0

Number: Pop + and 0 from the stacks,

Page 5: ) Number ) Operator ) Number (7 + (3 * (4 + 4) * 2 * 2 * (1 + 2) ) * 3) OperatorOperands Stacks Using Two Stacks to Evaluate a Simple Arithmetic Expression

)Number

)

OperatorOperator

)

Number

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

Operator Operands

Stacks

Using Two Stacks to Evaluate a Simple Arithmetic Expression

( StartOperator

+

+

0

0

Number: Pop + and 0 from the stacks, add the 7

7

Page 6: ) Number ) Operator ) Number (7 + (3 * (4 + 4) * 2 * 2 * (1 + 2) ) * 3) OperatorOperands Stacks Using Two Stacks to Evaluate a Simple Arithmetic Expression

)Number

)

OperatorOperator

)

Number

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

Operator Operands

Stacks

Using Two Stacks to Evaluate a Simple Arithmetic Expression

( StartOperator

+70

Number: Pop + and 0 from the stacks, add the 7 and stack the result

Page 7: ) Number ) Operator ) Number (7 + (3 * (4 + 4) * 2 * 2 * (1 + 2) ) * 3) OperatorOperands Stacks Using Two Stacks to Evaluate a Simple Arithmetic Expression

)Number

)

OperatorOperator

)

Number

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

Operator Operands

Stacks

Using Two Stacks to Evaluate a Simple Arithmetic Expression

( StartOperator

++

70

Operator: Push the + onto the stack

Page 8: ) Number ) Operator ) Number (7 + (3 * (4 + 4) * 2 * 2 * (1 + 2) ) * 3) OperatorOperands Stacks Using Two Stacks to Evaluate a Simple Arithmetic Expression

)Number

)

OperatorOperator

)

Number

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

Operator Operands

Stacks

Using Two Stacks to Evaluate a Simple Arithmetic Expression

( StartOperator

+++

070

LParen: Push a + and 0 onto the stacks

Page 9: ) Number ) Operator ) Number (7 + (3 * (4 + 4) * 2 * 2 * (1 + 2) ) * 3) OperatorOperands Stacks Using Two Stacks to Evaluate a Simple Arithmetic Expression

)Number

)

OperatorOperator

)

Number

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

Operator Operands

Stacks

Using Two Stacks to Evaluate a Simple Arithmetic Expression

( StartOperator

+

++

0

70

Number: Pop a + and 0 from the stacks

Page 10: ) Number ) Operator ) Number (7 + (3 * (4 + 4) * 2 * 2 * (1 + 2) ) * 3) OperatorOperands Stacks Using Two Stacks to Evaluate a Simple Arithmetic Expression

)Number

)

OperatorOperator

)

Number

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

Operator Operands

Stacks

Using Two Stacks to Evaluate a Simple Arithmetic Expression

( StartOperator

+

++

0

70

Number: Pop a + and 0 from the stacks add the 3

3

Page 11: ) Number ) Operator ) Number (7 + (3 * (4 + 4) * 2 * 2 * (1 + 2) ) * 3) OperatorOperands Stacks Using Two Stacks to Evaluate a Simple Arithmetic Expression

)Number

)

OperatorOperator

)

Number

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

Operator Operands

Stacks

Using Two Stacks to Evaluate a Simple Arithmetic Expression

( StartOperator

++

370

Number: Pop a + and 0 from the stacks add the 3, stack the result

Page 12: ) Number ) Operator ) Number (7 + (3 * (4 + 4) * 2 * 2 * (1 + 2) ) * 3) OperatorOperands Stacks Using Two Stacks to Evaluate a Simple Arithmetic Expression

)Number

)

OperatorOperator

)

Number

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

Operator Operands

Stacks

Using Two Stacks to Evaluate a Simple Arithmetic Expression

( StartOperator

*++

370

Operator: Push a * onto the stack

Page 13: ) Number ) Operator ) Number (7 + (3 * (4 + 4) * 2 * 2 * (1 + 2) ) * 3) OperatorOperands Stacks Using Two Stacks to Evaluate a Simple Arithmetic Expression

)Number

)

OperatorOperator

)

Number

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

Operator Operands

Stacks

Using Two Stacks to Evaluate a Simple Arithmetic Expression

( StartOperator

+*++

0370

LParen: Push a + and 0 onto the stacks

Page 14: ) Number ) Operator ) Number (7 + (3 * (4 + 4) * 2 * 2 * (1 + 2) ) * 3) OperatorOperands Stacks Using Two Stacks to Evaluate a Simple Arithmetic Expression

)Number

)

OperatorOperator

)

Number

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

Operator Operands

Stacks

Using Two Stacks to Evaluate a Simple Arithmetic Expression

( StartOperator

+

*++

0

370

Number: Pop the + and 0 from the stacks

Page 15: ) Number ) Operator ) Number (7 + (3 * (4 + 4) * 2 * 2 * (1 + 2) ) * 3) OperatorOperands Stacks Using Two Stacks to Evaluate a Simple Arithmetic Expression

)Number

)

OperatorOperator

)

Number

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

Operator Operands

Stacks

Using Two Stacks to Evaluate a Simple Arithmetic Expression

( StartOperator

+

*++

0

370

Number: Pop the + and 0 from the stacks add the 4

4

Page 16: ) Number ) Operator ) Number (7 + (3 * (4 + 4) * 2 * 2 * (1 + 2) ) * 3) OperatorOperands Stacks Using Two Stacks to Evaluate a Simple Arithmetic Expression

)Number

)

OperatorOperator

)

Number

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

Operator Operands

Stacks

Using Two Stacks to Evaluate a Simple Arithmetic Expression

( StartOperator

*++

4370

Number: Pop the + and 0 from the stacks add the 4, stack the result

Page 17: ) Number ) Operator ) Number (7 + (3 * (4 + 4) * 2 * 2 * (1 + 2) ) * 3) OperatorOperands Stacks Using Two Stacks to Evaluate a Simple Arithmetic Expression

)Number

)

OperatorOperator

)

Number

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

Operator Operands

Stacks

Using Two Stacks to Evaluate a Simple Arithmetic Expression

( StartOperator

+*++

4370

Operator: Push the + onto the stack

Page 18: ) Number ) Operator ) Number (7 + (3 * (4 + 4) * 2 * 2 * (1 + 2) ) * 3) OperatorOperands Stacks Using Two Stacks to Evaluate a Simple Arithmetic Expression

)Number

)

OperatorOperator

)

Number

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

Operator Operands

Stacks

Using Two Stacks to Evaluate a Simple Arithmetic Expression

( StartOperator

+

*++

4

370

Number: Pop the + and 4 from the stacks

Page 19: ) Number ) Operator ) Number (7 + (3 * (4 + 4) * 2 * 2 * (1 + 2) ) * 3) OperatorOperands Stacks Using Two Stacks to Evaluate a Simple Arithmetic Expression

)Number

)

OperatorOperator

)

Number

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

Operator Operands

Stacks

Using Two Stacks to Evaluate a Simple Arithmetic Expression

( StartOperator

+

*++

4

370

Number: Pop the + and 4 from the stacks, add the read 4

4

Page 20: ) Number ) Operator ) Number (7 + (3 * (4 + 4) * 2 * 2 * (1 + 2) ) * 3) OperatorOperands Stacks Using Two Stacks to Evaluate a Simple Arithmetic Expression

)Number

)

OperatorOperator

)

Number

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

Operator Operands

Stacks

Using Two Stacks to Evaluate a Simple Arithmetic Expression

( StartOperator

*++

8370

Number: Pop the + and 4 from the stacks, add the read 4, stack the result

Page 21: ) Number ) Operator ) Number (7 + (3 * (4 + 4) * 2 * 2 * (1 + 2) ) * 3) OperatorOperands Stacks Using Two Stacks to Evaluate a Simple Arithmetic Expression

)Number

)

OperatorOperator

)

Number

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

Operator Operands

Stacks

Using Two Stacks to Evaluate a Simple Arithmetic Expression

( StartOperator

*

++

8

70

RParen: Pop the * and 8 and 3 from the stacks,

3

Page 22: ) Number ) Operator ) Number (7 + (3 * (4 + 4) * 2 * 2 * (1 + 2) ) * 3) OperatorOperands Stacks Using Two Stacks to Evaluate a Simple Arithmetic Expression

)Number

)

OperatorOperator

)

Number

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

Operator Operands

Stacks

Using Two Stacks to Evaluate a Simple Arithmetic Expression

( StartOperator

++

70

RParen: Pop the * and 8 and 3 from the stacks, multiply the two

24

Page 23: ) Number ) Operator ) Number (7 + (3 * (4 + 4) * 2 * 2 * (1 + 2) ) * 3) OperatorOperands Stacks Using Two Stacks to Evaluate a Simple Arithmetic Expression

)Number

)

OperatorOperator

)

Number

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

Operator Operands

Stacks

Using Two Stacks to Evaluate a Simple Arithmetic Expression

( StartOperator

++

2470

RParen: Pop the * and 8 and 3 from the stacks, multiply the two, push the result

Page 24: ) Number ) Operator ) Number (7 + (3 * (4 + 4) * 2 * 2 * (1 + 2) ) * 3) OperatorOperands Stacks Using Two Stacks to Evaluate a Simple Arithmetic Expression

)Number

)

OperatorOperator

)

Number

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

Operator Operands

Stacks

Using Two Stacks to Evaluate a Simple Arithmetic Expression

( StartOperator

*++

2470

Operator: Push the * onto the stack

Page 25: ) Number ) Operator ) Number (7 + (3 * (4 + 4) * 2 * 2 * (1 + 2) ) * 3) OperatorOperands Stacks Using Two Stacks to Evaluate a Simple Arithmetic Expression

)Number

)

OperatorOperator

)

Number

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

Operator Operands

Stacks

Using Two Stacks to Evaluate a Simple Arithmetic Expression

( StartOperator

*

++

24

70

Number: Pop the * and 24 from the stacks

Page 26: ) Number ) Operator ) Number (7 + (3 * (4 + 4) * 2 * 2 * (1 + 2) ) * 3) OperatorOperands Stacks Using Two Stacks to Evaluate a Simple Arithmetic Expression

)Number

)

OperatorOperator

)

Number

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

Operator Operands

Stacks

Using Two Stacks to Evaluate a Simple Arithmetic Expression

( StartOperator

*

++

24

70

Number: Pop the * and 24 from the stacks, multiply by the read 2

2

Page 27: ) Number ) Operator ) Number (7 + (3 * (4 + 4) * 2 * 2 * (1 + 2) ) * 3) OperatorOperands Stacks Using Two Stacks to Evaluate a Simple Arithmetic Expression

)Number

)

OperatorOperator

)

Number

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

Operator Operands

Stacks

Using Two Stacks to Evaluate a Simple Arithmetic Expression

( StartOperator

++

4870

Number: Pop the * and 24 from the stacks, multiply by the read 2, stack the 48

Page 28: ) Number ) Operator ) Number (7 + (3 * (4 + 4) * 2 * 2 * (1 + 2) ) * 3) OperatorOperands Stacks Using Two Stacks to Evaluate a Simple Arithmetic Expression

)Number

)

OperatorOperator

)

Number

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

Operator Operands

Stacks

Using Two Stacks to Evaluate a Simple Arithmetic Expression

( StartOperator

*++

4870

Operator: Push the * onto the stack

Page 29: ) Number ) Operator ) Number (7 + (3 * (4 + 4) * 2 * 2 * (1 + 2) ) * 3) OperatorOperands Stacks Using Two Stacks to Evaluate a Simple Arithmetic Expression

)Number

)

OperatorOperator

)

Number

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

Operator Operands

Stacks

Using Two Stacks to Evaluate a Simple Arithmetic Expression

( StartOperator

*

++

48

70

Number: Pop the * and 48 from the stacks

Page 30: ) Number ) Operator ) Number (7 + (3 * (4 + 4) * 2 * 2 * (1 + 2) ) * 3) OperatorOperands Stacks Using Two Stacks to Evaluate a Simple Arithmetic Expression

)Number

)

OperatorOperator

)

Number

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

Operator Operands

Stacks

Using Two Stacks to Evaluate a Simple Arithmetic Expression

( StartOperator

*

++

48

70

Number: Pop the * and 48 from the stacks, multiply the 2 and 48

2

Page 31: ) Number ) Operator ) Number (7 + (3 * (4 + 4) * 2 * 2 * (1 + 2) ) * 3) OperatorOperands Stacks Using Two Stacks to Evaluate a Simple Arithmetic Expression

)Number

)

OperatorOperator

)

Number

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

Operator Operands

Stacks

Using Two Stacks to Evaluate a Simple Arithmetic Expression

( StartOperator

++

9670

Number: Pop the * and 48 from the stacks, multiply the 2 and 48, stack the 96

Page 32: ) Number ) Operator ) Number (7 + (3 * (4 + 4) * 2 * 2 * (1 + 2) ) * 3) OperatorOperands Stacks Using Two Stacks to Evaluate a Simple Arithmetic Expression

)Number

)

OperatorOperator

)

Number

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

Operator Operands

Stacks

Using Two Stacks to Evaluate a Simple Arithmetic Expression

( StartOperator

*++

9670

Operator: Push the * onto the stack

Page 33: ) Number ) Operator ) Number (7 + (3 * (4 + 4) * 2 * 2 * (1 + 2) ) * 3) OperatorOperands Stacks Using Two Stacks to Evaluate a Simple Arithmetic Expression

)Number

)

OperatorOperator

)

Number

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

Operator Operands

Stacks

Using Two Stacks to Evaluate a Simple Arithmetic Expression

( StartOperator

+*++

09670

LParen: Push a + and 0 onto the stacks

Page 34: ) Number ) Operator ) Number (7 + (3 * (4 + 4) * 2 * 2 * (1 + 2) ) * 3) OperatorOperands Stacks Using Two Stacks to Evaluate a Simple Arithmetic Expression

)Number

)

OperatorOperator

)

Number

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

Operator Operands

Stacks

Using Two Stacks to Evaluate a Simple Arithmetic Expression

( StartOperator

+

*++

0

9670

Number: Pop the + and 0 from the stacks

Page 35: ) Number ) Operator ) Number (7 + (3 * (4 + 4) * 2 * 2 * (1 + 2) ) * 3) OperatorOperands Stacks Using Two Stacks to Evaluate a Simple Arithmetic Expression

)Number

)

OperatorOperator

)

Number

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

Operator Operands

Stacks

Using Two Stacks to Evaluate a Simple Arithmetic Expression

( StartOperator

+

*++

0

9670

Number: Pop the + and 0 from the stacks, add the 1

1

Page 36: ) Number ) Operator ) Number (7 + (3 * (4 + 4) * 2 * 2 * (1 + 2) ) * 3) OperatorOperands Stacks Using Two Stacks to Evaluate a Simple Arithmetic Expression

)Number

)

OperatorOperator

)

Number

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

Operator Operands

Stacks

Using Two Stacks to Evaluate a Simple Arithmetic Expression

( StartOperator

*++

19670

Number: Pop the + and 0 from the stacks, add the 1, stack the result

Page 37: ) Number ) Operator ) Number (7 + (3 * (4 + 4) * 2 * 2 * (1 + 2) ) * 3) OperatorOperands Stacks Using Two Stacks to Evaluate a Simple Arithmetic Expression

)Number

)

OperatorOperator

)

Number

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

Operator Operands

Stacks

Using Two Stacks to Evaluate a Simple Arithmetic Expression

( StartOperator

+*++

19670

Operator: Push the + onto the stack

Page 38: ) Number ) Operator ) Number (7 + (3 * (4 + 4) * 2 * 2 * (1 + 2) ) * 3) OperatorOperands Stacks Using Two Stacks to Evaluate a Simple Arithmetic Expression

)Number

)

OperatorOperator

)

Number

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

Operator Operands

Stacks

Using Two Stacks to Evaluate a Simple Arithmetic Expression

( StartOperator

+

*++

1

9670

Number: Pop the + and 1from the stacks

Page 39: ) Number ) Operator ) Number (7 + (3 * (4 + 4) * 2 * 2 * (1 + 2) ) * 3) OperatorOperands Stacks Using Two Stacks to Evaluate a Simple Arithmetic Expression

)Number

)

OperatorOperator

)

Number

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

Operator Operands

Stacks

Using Two Stacks to Evaluate a Simple Arithmetic Expression

( StartOperator

+

*++

1

9670

Number: Pop the + and 1from the stacks, add the 2 and 1

2

Page 40: ) Number ) Operator ) Number (7 + (3 * (4 + 4) * 2 * 2 * (1 + 2) ) * 3) OperatorOperands Stacks Using Two Stacks to Evaluate a Simple Arithmetic Expression

)Number

)

OperatorOperator

)

Number

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

Operator Operands

Stacks

Using Two Stacks to Evaluate a Simple Arithmetic Expression

( StartOperator

*++

39670

Number: Pop the + and 1from the stacks, add the 2 and 1, stack the result

Page 41: ) Number ) Operator ) Number (7 + (3 * (4 + 4) * 2 * 2 * (1 + 2) ) * 3) OperatorOperands Stacks Using Two Stacks to Evaluate a Simple Arithmetic Expression

)Number

)

OperatorOperator

)

Number

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

Operator Operands

Stacks

Using Two Stacks to Evaluate a Simple Arithmetic Expression

( StartOperator

*

++

3

70

RParen: Pop the * and 3 and 96 from stacks,

96

Page 42: ) Number ) Operator ) Number (7 + (3 * (4 + 4) * 2 * 2 * (1 + 2) ) * 3) OperatorOperands Stacks Using Two Stacks to Evaluate a Simple Arithmetic Expression

)Number

)

OperatorOperator

)

Number

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

Operator Operands

Stacks

Using Two Stacks to Evaluate a Simple Arithmetic Expression

( StartOperator

++

28870

RParen: Pop the * and 3 and 96 from stacks, multiply 96 and 3 and stack the result

Page 43: ) Number ) Operator ) Number (7 + (3 * (4 + 4) * 2 * 2 * (1 + 2) ) * 3) OperatorOperands Stacks Using Two Stacks to Evaluate a Simple Arithmetic Expression

)Number

)

OperatorOperator

)

Number

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

Operator Operands

Stacks

Using Two Stacks to Evaluate a Simple Arithmetic Expression

( StartOperator

+

+

288

0

RParen: Pop the + and 7 and 288 from stacks,

7

Page 44: ) Number ) Operator ) Number (7 + (3 * (4 + 4) * 2 * 2 * (1 + 2) ) * 3) OperatorOperands Stacks Using Two Stacks to Evaluate a Simple Arithmetic Expression

)Number

)

OperatorOperator

)

Number

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

Operator Operands

Stacks

Using Two Stacks to Evaluate a Simple Arithmetic Expression

( StartOperator

+2950

RParen: Pop the + and 7 and 288 from stacks, add 7 and 288 and stack the result

Page 45: ) Number ) Operator ) Number (7 + (3 * (4 + 4) * 2 * 2 * (1 + 2) ) * 3) OperatorOperands Stacks Using Two Stacks to Evaluate a Simple Arithmetic Expression

)Number

)

OperatorOperator

)

Number

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

Operator Operands

Stacks

Using Two Stacks to Evaluate a Simple Arithmetic Expression

( StartOperator

*+

2950

Operator: Push the * onto the stack

Page 46: ) Number ) Operator ) Number (7 + (3 * (4 + 4) * 2 * 2 * (1 + 2) ) * 3) OperatorOperands Stacks Using Two Stacks to Evaluate a Simple Arithmetic Expression

)Number

)

OperatorOperator

)

Number

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

Operator Operands

Stacks

Using Two Stacks to Evaluate a Simple Arithmetic Expression

( StartOperator

*

+

295

0

Number: Pop the * and 295 from the stacks

Page 47: ) Number ) Operator ) Number (7 + (3 * (4 + 4) * 2 * 2 * (1 + 2) ) * 3) OperatorOperands Stacks Using Two Stacks to Evaluate a Simple Arithmetic Expression

)Number

)

OperatorOperator

)

Number

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

Operator Operands

Stacks

Using Two Stacks to Evaluate a Simple Arithmetic Expression

( StartOperator

*

+

295

0

Number: Pop the * and 295 from the stacks, multiply the read 3 and 295

3

Page 48: ) Number ) Operator ) Number (7 + (3 * (4 + 4) * 2 * 2 * (1 + 2) ) * 3) OperatorOperands Stacks Using Two Stacks to Evaluate a Simple Arithmetic Expression

)Number

)

OperatorOperator

)

Number

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

Operator Operands

Stacks

Using Two Stacks to Evaluate a Simple Arithmetic Expression

( StartOperator

+8850

Number: Pop the * and 295 from the stacks, multiply the read 3 and 295, stack it

Page 49: ) Number ) Operator ) Number (7 + (3 * (4 + 4) * 2 * 2 * (1 + 2) ) * 3) OperatorOperands Stacks Using Two Stacks to Evaluate a Simple Arithmetic Expression

)Number

)

OperatorOperator

)

Number

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

Operator Operands

Stacks

Using Two Stacks to Evaluate a Simple Arithmetic Expression

( StartOperator

+ 885

RParen: Pop the + and 0 and 885 from stacks

0

Page 50: ) Number ) Operator ) Number (7 + (3 * (4 + 4) * 2 * 2 * (1 + 2) ) * 3) OperatorOperands Stacks Using Two Stacks to Evaluate a Simple Arithmetic Expression

)Number

)

OperatorOperator

)

Number

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

Operator Operands

Stacks

Using Two Stacks to Evaluate a Simple Arithmetic Expression

( StartOperator

885

RParen: Pop the + and 0 and 885 from stacks, add the 0 and 885 and stack the result

Page 51: ) Number ) Operator ) Number (7 + (3 * (4 + 4) * 2 * 2 * (1 + 2) ) * 3) OperatorOperands Stacks Using Two Stacks to Evaluate a Simple Arithmetic Expression

)Number

)

OperatorOperator

)

Number

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

Operator Operands

Stacks

Using Two Stacks to Evaluate a Simple Arithmetic Expression

( StartOperator

885

Done: Result is in Operands stack: 885