title: Choice of Parser Generator
body: <p>OK, I understand this question may sound quite opinion-based, however since I have several specific criteria of choice, I think it would make a nice fit for SO. So, here I am...</p>
  
  <p>I've worked with compiler/interpreter construction in the past quite a lot (mostly as a hobby obviously) and for some reason I stuck with Lex/Yacc (or Flex/Bison, I'm quite confused as to how they call them now... lol).</p>
  
  <p>However, since I'm finding myself currently playing with yet another hobbyist interpreter project, I thought I should give a try to something different maybe in order to avoid what I don't like about Lex/Yacc.</p>
  
  <p><strong>So, namely :</strong></p>
  
  <ul>
  <li>Better <strong>C++-friendly</strong> (than C-friendly)</li>
  <li><strong>Good documentation</strong> (preferably with some existing grammars already implemented + instructions on how to compile/use them - sounds rather obvious, huh?)</li>
  <li><strong>Could be LALR, LL(*), Recursive descent, I don't really care</strong> (<em>note:</em> an input as to which type you would prefer and for what type of implementations would be great though; I've never really understood their pros and cons, to be perfectly honest, even though I do know what they refer to)</li>
  <li><strong>Combining the Lexer part and the Parser grammar in one file</strong> wouldn't be bad at all; never really got it why it has to be split in two.</li>
  <li>Last but not least : I've always had issues with... issues. I mean - at least as far as Lex/Yacc go, parsing error messages are more-or-less cryptic (<code>Syntax Error</code>... Yuhuu!) and rarely do they help diagnose an issue. (Well, unless you are the one who developed the interpreter... lol). So, is there anything better than Lex/Yacc regarding <strong>error reporting</strong>?</li>
  </ul>
  
  <p>OK, I hope that wasn't too verbose. I'm all ears! :-)</p>