One of my tasks at work now is to code a simplified Verilog front-end. This means a lot of lex/yacc. I really like these tools. Just yesterday I read in "The art of Unix programming" that lex/yacc are examples of algorithmic tools, bringing to life known CS theory. Thus, they're understandable, bug free and just do the job. I wholeheartedly agree.
It's interesting to note that the most heavily used book in our group is OReilly's "lex & yacc". It is old and almost falls apart, some pages dropping out, etc. It's a terrific book - small, simple and explains the topic well. Just like the tools it describes, I'd say !