I haven't utterly failed at thinking about a Pratt parser.
Pratt uses recursive descent when parsing inputs. Whenever I read an operator, I call that operator's thing (whether it's a NUD or a LED), and it reads inputs until it hits something with equal or lower priority than itself, returning what it has finished recursively discovering was this piece of generated code. I hope instead of recursing, I can just keep moving forwards (in a way that looks a lot like recursing, to be fair).