The lowest possible rating as this module has always sucked something terrible on Cygwin. I cannot update or install a "growing" number of key modules because they rely on this piece of dodgy donkey doodoo.
No offence, but Cygwin is my key link to the world of sanity, and although Strawberry Perl is wonderful it doesn't easily mesh with my Cygwin environment.
Without the background Perl6/regex knowledge, this module is difficult to understand from the documentation alone.
However I do remember it taking me a while to get to grip with PRD as well, so this isn't necessarily a universally valid criticism.
I was drawn to R::G by its promise of power and efficiency. So far it hasn't won me over, even though, once I started converting my PRD grammar, I found it easy enough.
Currently I'm finding it more resource hungry than PRD, and liable to run out of memory and crash on large inputs. I hope these problems will go away once I learn how to tweak the default behaviours. So, only 3's for now.
Altering part of my grammar saw large improvements, for reasons I can't quite fathom. One general point is that you should avoid adding unnecessary cloistering brackets to your regexp's as this kills performance. I'm still seeing out of memory problems on larger (1+ Mb) input files, with both cygwin and strawberry perls, where PRD works perfectly well (if somewhat slowly).
Far too easy to waste too much time shaving extra milliseconds from your run-times once you get your hands on this module...........
It's helped me immensely when I've had to fix my software to run acceptably quickly. In the most recent case it highlighted a bug where I was effectively, and wholly unintentionally, recalculating the same data over and over.
It's always nice to reduce a 10 minute run-time to under 10 seconds.
I'm giving this a rating of 1 overall, not because it isn't a good piece of code, and not because I never use it. I use it quite a lot, but have only recently come across its one big failing, which is **PERFORMANCE**. Simply 'use'ing Parse::RecDescent apparently lets in the 3 bug-bears of regexp performance $`,$&, and $'. If you have a simple parsing requirement that must scale linearly with the size of the input, use regexps, and leave PRD at home.
If you must use PRD, and must have as much performance as possible, do as much as possible with plain old regexp's. You'll still find that performance tails off dramatically as you increase the size of your input file, but in practical terms, for your data it may not matter. Unfortunately, for me, in this particular case it did. Perhaps there's a case to be made for a new 5.10 only version of PRD which uses the new 5.10 regexp match variables.
Have you the time to do this Damian ?