Crafting a parser, part 4: Pratt parsing and precedence

One loop and a binding-power table replace a forest of precedence functions.