Looks ok I think! Tbh I do prefer separating out the lexing stage, from parsing, even though in PEG you can sometimes get away with smooshing it all together. Not sure if pest supports separate lexers though... 🤔
Food for thought:
A lexerless parser with a discrete set of terminal productions is isomorphic to a pull-lexer parser where you don't tokenize the whole thing first.
It's for this reason that I'm less vocal about preferring a separate lexer now. What I want requires pull lexing