I’ve had this idea in my head for a projection-based parser.

Here’s how it works: