Fix NFA generation in metaparser for grammar rules of form "foo: [a* b]"

Merged Ondrej Baranovič requested to merge branch/metaparser-optional-repeater into branch/default

I have spent the past few months writing a Lua interpreter in RPython. (While I haven't implemented the full standard library yet, the benchmarks I have run are quite impressive.)

While implementing the parser, I noticed that the LL(1) PyPy parser generator generates an invalid NFA for grammar rules of the form foo: [hello* world]. Instead, the generated NFA corresponds to foo: [hello*] [world]. This MR fixes the NFA generation.

Merge request reports