CSc 227 — Program Design and Development
(McCann)
                           Infix → Postfix Conversion Algorithms
1. Manual:
   (a) Fully parenthesize the the infix expression (one set of parentheses per operator)
   (b) Replace the right parentheses with their corresponding operators
   (c) Remove the left parentheses
  Example: 4 + 5 * 6
        (a)   ( 4 + ( 5 * 6 ) )
        (b)   ( 4   ( 5     6 * +
        (c)     4      5    6 * +
2. Stack-based:
         while there are more symbols to be read
             read the next symbol
             case:
                 operand   --> output it
                   ’(’     --> push it on the stack
                   ’)’     --> pop operators from the stack to the output
                                until a ’(’ is popped; do not output the
                                parentheses
                 operator --> pop higher- or equal-precedence operators
                                from the stack to the output; stop before
                                popping a lower-precedence operator or
                                a ’(’. Push the operator on the stack.
             end case
         end while
         pop the remaining operators from the stack to the output
  Example: A / (B + C) - D
          Input Symbol     Stack Content   Output
                A          nil             A
                /          /               A
                (          /(              A
                B          /(              AB
                +          /(+             AB
                C          /(+             ABC
                )          /               ABC+
                -          -               ABC+/
                D          -               ABC+/D
             <eof>         nil             ABC+/D-