Operator Precedence Parsing

A + B * C
operator operand input action       why
A + B * C start
A + B * C shift A
+ A B * C shift +       empty < +
+ A B * C shift B
+ * A B C shift *       + < *
+ * A B C shift C
+ A (* B C) reduce
(+ A (* B C)) reduce

A * B + C
operator operand input action       why
A * B + C start
A * B + C shift A
* A B + C shift *       empty < *
* A B + C shift B
(* A B) + C reduce       * ≥ +
+ (* A B) C shift +       empty < +
+ (* A B) C shift C
(+ (* A B) C) reduce

(A + B) * C
operator operand input action       why
( A + B ) * C start
( A + B ) * C shift (
( A + B ) * C shift A
( + A B ) * C shift +       ( < +
( + A B ) * C shift B
(+ A B) * C reduce, discard ( )       )
* (+ A B) C shift *       empty < *
* (+ A B) C shift C
(* (+ A B) C) reduce