RSS | Module Info | Add a review of Parse-RecDescent

1 out of 2 found this review helpful:

Parse-RecDescent (1.962.2) *

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 ?

MB - 2009-11-06 01:53:21
Was this review helpful to you?  Yes No

7 out of 7 found this review helpful:

Parse-RecDescent (1.94) ****

Parse::RecDescent used to be my second favourite module for parsing.
I like the powerful directives that make parsing much easier.

However there are three considerations where I feel Parse::Yapp is preferable:

- In RD is more difficult to deal with left recursive grammars. Usually you have to transform the "natural rules"

- Performance

- In RD, the language described by the grammar depends on the order of the rules. But probably this is more a question of taste than a drawback.

This is why Parse::Yapp was my favourite module for parsing
even if it lacks most of the beautiful features provided by Parse::RecDescent.

For these reasons I wrote an extension of Parse::Yapp named 'Parse::Eyapp'. Any program that runs on Parse::Yapp works without changing a comma on Parse::Eyapp.

Parse::Eyapp provides extensions similar to the ones you can find in Parse::RecDescent. For example, using the directive %defaultaction works as RD "autoactions".
The directive %tree is similar to <autotree>, etc.

I tried to merge the best of Yapp and RecDescent
and added a few extensions. Among others:
translations schemes and a language for the manipulation of abstract syntax trees.

If you like Parse::RecDescent, give it a try to Parse::Eyapp.

casiano - 2007-09-26 10:14:10
Was this review helpful to you?  Yes No

2 out of 2 found this review helpful:

Parse-RecDescent (1.94) ****

Easy to use, very flexible, very powerful, well-documented and venerable, Parse::RecDescent is a very good module for parsing any text that could be described by a grammar. Compared to Parse::Yapp, Perl-byacc, this one definitely wins hands down in all those aspects. The only caveat is the speed of the module when dealing with long input strings - its processing increases polynomially to string length (nearly O(n3) in benchmark). I made a detailed comparison, usage example of Parse::RecDescent, Parse::Yapp, and Perl-byacc during my Entrez Gene parser project at http://sourceforge.net/docman/display_doc.php?docid=27420&group_id=133629

This module is best for novice users, complex (context-sensitive or dynamic) grammars, or any situation where input is short or performance is no issue.

Mingyi Liu - 2005-03-15 14:10:46
Was this review helpful to you?  Yes No

1 out of 1 found this review helpful:

Parse-RecDescent (1.94) ****

I used this module to generate a parser for input files for the CADENCE SPECTRE simulator, and generate an XML DOM tree as output.

The parser I obtained is somewhat slow, but OK it does the job. I did not yet manage to use the 'warning messages' properly.

Renaud GILLON - 2004-08-17 13:03:17
Was this review helpful to you?  Yes No

1 out of 1 found this review helpful:

Parse-RecDescent (1.94) ****

Clearly one of my favourite modules. I do not find it ease to use nor can I make any statement about the quality of the interface. But I am absolutedly willing to accept, that this is because of the sheer complexity of the functionality this module provides.

I would not hesitate to give it a straight 5 overall rating, if it
was not so slow (execution speed of the grammars).

Richard Jelinek - 2004-06-01 09:18:23
Was this review helpful to you?  Yes No

1 out of 1 found this review helpful:

Parse-RecDescent (1.94) *****

Really great module.
When I tried using it, I realized that this module wiser than me, because it is capable accomplishing tasks that I can not do :)
Also afetr my PocketPC could easily run it, I got much more respect to my WinCE device :)
Also perlmonks.org community loves this module and find Parse::RecDescent questions very interesting to investigate and answer.

Vadim Konovalov - 2003-08-20 07:08:53
Was this review helpful to you?  Yes No

2 out of 2 found this review helpful:

Parse-RecDescent (1.94) ****

Learning Parse::RecDescent will make you smarter, and it might even help you get your job done. The documentation is fairly good, but I still needed to crack my copy of "lex & yacc" a few times while using it. The only major drawback of this module is its performance. It's probably the slowest module I've used since Date::Manip!

Sam Tregar - 2003-08-18 15:56:41
Was this review helpful to you?  Yes No

1 out of 1 found this review helpful:

Parse-RecDescent (1.94) ****

Parse::RecDescent is a great module.

It's saved me a lot of time when writing the parser for the Math::Symbolic module. In fact, I doubt there would be a parser for the Math::Symbolic module if there hadn't been Parse::RecDescent to do the difficult work for me.

Writing P::RD grammars needs a bit of time to get accustomed to if you know yacc, but once you get the hang of it, it's not too difficult.

The one main gripe I have with this module is its speed. Compiling parsers takes forever. (As of version 0.112, the Math::Symbolic parser took about a second to compile on my 2GHz machine!) Parsing isn't blazingly fast either. Especially with long input strings.

Steffen M�ller - 2003-08-17 03:55:35
Was this review helpful to you?  Yes No

2 out of 2 found this review helpful:

Parse-RecDescent (1.94) ****

Great module, except for speed on large target strings (known issue). To be fixed "next christmas".

Randal L. Schwartz - 2003-08-13 15:03:52
Was this review helpful to you?  Yes No


the camel