He says Yacc and Lex suck, but didn't mention ANTLR which, I'm told, sucks a lot less. Does anyone here have experience enough to compare and contrast?
There are also parser combinator libraries in several languages. Haskell's Parsec is quite a pleasure to work with. Even if the one in your language is quite beta it should be enough for such a toy project.