Packrat parser isn't linear space or time; can use unbounded space and time to parse the empty string, getting OOM kills
This code runs out of memory and, if no ulimit is in place, it gets OOM-killed:
$ LD_LIBRARY_PATH=. python
Python 2.7.6 (default, Nov 12 2018, 20:00:40)
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import hammer as h
>>> h.many(h.sequence()).parse('')
Now, by itself, that's hardly surprising --- after all, it's the Kleene closure of epsilon, and this is a recursive-descent parser, so an infinite loop at least is to be expected. But what if we use Packrat? Packrat parsing guarantees linear space and time usage!
>>> g = h.many(h.sequence())
>>> g.compile(h._PB_PACKRAT)
True
>>> g.parse('')
That crashes the same way. So, we're failing to deliver Packrat's linear space and time bounds, which are the main advance of Packrat parsing over TransMoGrifier from the 1970s.