For instance, you are responsible for declaring any possible branches with choice operators.
The approach becomes quite similar to manual lookahead in a recursive descent parser, but more declarative.
I presume that this makes the runtime characteristics of the parsing a lot more predictable and bounded, and I'm surprised I hadn't thought about the solution before. Seems like a great idea, and worked well for my usecase.