## Transform in stages, for example the first stage might eliminate left recursion, so

- exp = term | exp + term OP | exp - term OP

## becomes

- exp = term exp1
- exp1 = + term OP exp1 | - term OP exp1

## or

- exp = term ( + term OP | - term OP )*

## Each transformation comes with an explanation

## Originally, each rule is deterministic only if you give it a start and end point, now you only need a start point and a longest parse convention