Didn't do a lot, just a recompile so I can test each individual stage better. On first glance: Two errors in the lexical analysis it seems. It doesn't seem to match on a double quote, it doesn't seem to handle the exception thrown right, not sure.
Went for a bike-ride, got my cigarettes at 1 a.m.; it's a 10 mile drive or something. Anyway, it refreshed the head. I found and patched the quotation bug in the generated C by hand, no idea where it came from, it shouldn't have accepted stage 1 with that bug. It lexifies and parses small files, it lexifies and parses the system file. But, I think I see stuttering behavior in the garbage collector. I.e., it probably stutters against the gc-limit; so, I need another simple strategy for doubling the heap.
Except for the stuttering, it is fast. Looks like it parses faster than stage 0, the ocaml parser.
[Not sure about the latter. Fixed the GC-grow trigger to 75% of the heap, it passes the heap unit tests, but the top fails because posix-memalign gives up? Silliness...]