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 | |||