I find myself writing yet another toy parser, as one does during a Christmas break. It roughly follows
Resilient LL Parsing Tutorial.
Not because I need resilience, but mostly because I find producing a syntax tree and a collection of
diagnostics a more natural fit for the problem than bailing out on the first error.