I have a feeling that most (all?) parser generators are written with one overwhelming goal: Parse fast/well when the grammar and input are both correct.
Other worthwhile goals include: Handle buggy grammars well. Handle
errant input well (some generators do try to do this, although I don't
know any that both provide automatic fallback mechanisms and good ways
to emit appropriate error messages). Provide a pleasant API between
the generated parser and the program in which it lives. Leverage the
compiler's diagnostics to help correctness as the program and grammar
foo not used,
enum value not handled in switch,
blah). Lessen the effect of the language boundary, e.g. make it as
easy/natural to singlestep the generated parser as the rest of the
I am frustrated. Stupid Monday + stupid grammar blah = frustration.