(My Pratt is smaller than my precedence-climbing here because I ended up actually using the latter, so it got some extras added.)