Yesterday was my first serious experience with the RD module (historically, I did a lot of Yacc (in C), and coded some simple recursive descent parsers by hand). The module works nicely, and is easy to learn and understand. Some notable differences from Yacc:
- Integrated lexing. Very nice ! It looks much more natural this way, and there's no need for extra headache with Lex linkage. Tokens are defined as simple regex rules in the grammar itself.
- Some little things that make life easier and more pleasant. For example, the rule quantifiers (s), (s?) etc.
- Left recursion problem. Hits blatantly when arithmetic expressions must be parsed. A different mindset must be employed when comparing with Yacc.