A rare case where I disagree with you, Doug. If the language is reasonably regular (I do not mean in the strict Kleene sense), a recursive descent parser is not much harder to write than a yacc grammar, and much smoother at providing good error messages. Having done many yaccs and many RD parsers, I no longer go to yacc.
To put it another way, there are few programming tasks I enjoy more than writing a recursive descent parser for a sane language.
Now if the language is not so regular, my position might shift. I do recall Bjarne dynamically editing the generated tables mid-parse to get yacc to handle at least one stage of C++'s development.
Another way to think of it is that if you are designing the language and it is undergoing frequent changes in grammar, yacc could certainly be move you along faster. But even then once things had settled I'd still redo it as RD, for the quality of the result.
You can credit Stephen R. "Software" Steve for this change in my thinking.
-rob