Shunting yard
Upcoming SlideShare
Loading in...5
×
 

Shunting yard

on

  • 396 views

 

Statistics

Views

Total Views
396
Views on SlideShare
386
Embed Views
10

Actions

Likes
0
Downloads
1
Comments
0

2 Embeds 10

http://education.weebly.com 5
http://www.bradfieldweb.com 5

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Shunting yard Shunting yard Presentation Transcript

  • Shunting-yard algorithm Infix to postfix conversion Based on http://en.wikipedia.org/wiki/Shunting_yard_algorithm
  • 2 + (3 * (8 - 4)) = ? How to evaluate this (or similar) formula? TODO: • rules should be visible and highlighted when a rule is applied • an example containing operator precedence rules
  • 2 + (3 * (8 - 4)) = ?Let’s play that the tokens are train cars and we are shunting the shunting yard. 2 + ( 3 * ( 8 - 4 ) )
  • 2 + (3 * (8 - 4)) = ?The first car is a number, it goes straight through. 2 + ( 3 * ( 8 - 4 ) )
  • 2 + (3 * (8 - 4)) = ?Next, the third track (the stack) is empty, we move the operator there. 2 + ( 3 * ( 8 - 4 ) )
  • 2 + (3 * (8 - 4)) = ?Left parenthesis goes always down. 2 ( 3 * ( 8 - 4 ) ) +
  • 2 + (3 * (8 - 4)) = ?Again, there is a number. It moves always straight to the left. 2 3 * ( 8 - 4 ) ) ( +
  • 2 + (3 * (8 - 4)) = ?Next there is an operator, it goes down because the topmost car there is an parenthesis. 2 3 * ( 8 - 4 ) ) ( +
  • 2 + (3 * (8 - 4)) = ?Again a left parenthesis, they go always to the stack. 2 3 ( 8 - 4 ) ) * ( +
  • 2 + (3 * (8 - 4)) = ?A number, straight to the left. 2 3 8 - 4 ) ) ( * ( +
  • 2 + (3 * (8 - 4)) = ?A number, straight to the left. 2 3 8 - 4 ) ) ( * ( +
  • 2 + (3 * (8 - 4)) = ?An operator, move it down. 2 3 8 - 4 ) ) ( * ( +
  • 2 + (3 * (8 - 4)) = ?A number, to the left, as always. 2 3 8 4 ) ) - ( * ( +
  • 2 + (3 * (8 - 4)) = ?A right parenthesis. Now we move the cars from the bottom until there is leftparenthesis. 2 3 8 4 ) ) - ( * ( +
  • 2 + (3 * (8 - 4)) = ?The pair of the parenthesis just disappear. 2 3 8 4 - ) ) ( * ( +
  • 2 + (3 * (8 - 4)) = ?Again, we pop out the items until there is a left parenthesis. 2 3 8 4 - ) * ( +
  • 2 + (3 * (8 - 4)) = ?A pair of parenthesis disappear. 2 3 8 4 - * ) ( +
  • 2 + (3 * (8 - 4)) = ?No more cars on the right side, so we move the cars from the bottom to the left. 2 3 8 4 - * +
  • 2 + (3 * (8 - 4)) = ?Now the transformation is done, how to evaluate it? 2 3 8 4 - * +
  • 2 + (3 * (8 - 4)) = ?Move the cars back to the right side. 2 3 8 4 - * +
  • 2 + (3 * (8 - 4)) = ?Move the cars back to the right side. 2 3 8 4 - * +
  • 2 + (3 * (8 - 4)) = ?Move the numbers to the down until we find an operator. 2 3 8 4 - * +
  • 2 + (3 * (8 - 4)) = ?When operator is found, place it to the middle so that it is between two numbers. - * + 4 8 3 2
  • 2 + (3 * (8 - 4)) = ?Do the calculation and put the result back to down. 8 - 4 * + 3 2
  • 2 + (3 * (8 - 4)) = ?Do the calculation and put the result back to down. 4 * + 3 2
  • 2 + (3 * (8 - 4)) = ?Again, operator to the middle, between the two upmost numbers. * + 4 3 2
  • 2 + (3 * (8 - 4)) = ?Calculate the expression and put the result back to the down. 3 * 4 + 2
  • 2 + (3 * (8 - 4)) = ?Calculate the expression and put the result back to the down. 12 + 2
  • 2 + (3 * (8 - 4)) = ?And the last operator, it is handled in the same way. + 12 2
  • 2 + (3 * (8 - 4)) = ?Calculate the result and that’s it! 2 + 12
  • 2 + (3 * (8 - 4)) = 14Calculate the result and that’s it! 14