Parser generators tend to produce very bad error messages, and by the time you put in enough of your own code to generate actual good error messages, you might as well have just written the parser yourself, it's simpler and faster.
The "ambiguity" issue, that people claim recursive descent parsers have, is a made-up issue. There is no actual ambiguity, as your code will pick one preferred parse over another. This is just the same thing as operator precedence, but for general syntax, and it is what your users want.
Parser generators have the same "ambiguity" issue, you just solve it by tweaking numbers or refactoring the grammar slightly, instead of writing code. (See the classic "if ... if ... else" construction... if you insist there's ambiguity of some kind, there's no answer, so duh, you pick a preferred parse.)
In short almost all discussion around these issues is a dumb waste of time and everyone is fired.