Operator Precedence Parsing
A + B * C
| op | 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
| op | 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 | |||