Okay, I'm being a little sarcastic, but I was just thinking that while parser generators make the lives of us that implement languages frequently easier, are they really the best thing for »production« language implementations. Mostly I'm thinking about this in terms of error reporting to the user rather than in terms of performance. In particular, during a discussion in PLClub on Friday there was a question of whether the new breed of parser generators become available (elkhound, frown, ml-antlr, sugar, etc.) whether the ones that offer or implicitly provide arbitrary lookahead can actually produce comprehensible error messages. At worst, you will be facing an O(nk) number of ways to resolve a rule (where n is the number of tokens in your language and k the lookahead). Maybe it doesn't turn out to be that bad in practice. Still it seems like one could perhaps provide the most informative error messages by writing the parser by hand.
Of course the argument against, is quite similar to the arguments for not programming in assembly language when it gives you the ability to achieve maximal performance. Using a parser generator allows you to express the parsing process in a more abstract way which means that you get all the nice things like easier maintenance, it is possible to actually perform analysis of your grammar. I guess the issue is that perhaps some more thought should be put into giving developers a way to »profile« their grammars (»is there anywhere where lookahead gets unmanageable?«, etc.) and more sophisticated methods for customizing the error reporting process (for example ml-yacc only reports errors in terms of its tokens, which are not necessarily meaningful to the user).
Anyway, I'm about to give Aaron's new lexing and parsing tools for SML/NJ a try. I'm not sure whether I will make the leap from ml-yacc to ml-antlr just yet, but I'll probably give ml-ulex a try, just because ml-lex doesn't allow comments in the rule section of the file.
I should spend some time reading over the Dragon Book tomorrow just to remind myself about the trade-offs with traditional parsing techniques. There actually turns out to be a second edition of the Dragon Book that was just released, but I didn't find the first edition useful enough to pay a 100 USD for the new one yet. I admittedly remember very little of what was covered concerning parsing algorithms in my undergraduate compilers course.