Expression parsing
Many expressions have the concept of "precedence".
I.e., some operators have higher priority than others.
One way to express priority among operators is by using a separate rule for each precedence level.
This gets very tedious. It's also very slow to parse.