Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical
 
PerlMonks  

Re: Random Tips on Parse::RecDescent

by educated_foo (Vicar)
on Jul 11, 2002 at 15:49 UTC ( #181053=note: print w/ replies, xml ) Need Help??


in reply to Random Tips on Parse::RecDescent

Excellent node! I have a couple of questions:

  1. Why do you do [@item[0..$#item]] rather than just [@item]? IIRC, the second will copy the array as well, so there's no need to take a slice.
  2. re: number 15 -- I've noticed that it complains about RD_AUTOACTION when you use Precompile (which is the same as the command-line?), but it seems to still append auto-actions just fine. Is this the behavior you saw?
And finally, one additional suggestion to add: Do as little as possible in your actions, particularly in the ones in lower-level rules. Building up and tearing down parse trees can be awfully slow, so it may be faster to just do the fastest thing possible during the parse, and post-process it afterwards.

/s


Comment on Re: Random Tips on Parse::RecDescent
Select or Download Code
Replies are listed 'Best First'.
Re: Re: Random Tips on Parse::RecDescent
by hsmyers (Canon) on Jul 11, 2002 at 16:49 UTC

    About the [@item[@0..$#item]] thing...no reason other than using the supplied example from the docs (after all, good enough for damian, good enough for me). chromatic caught this when I posted, I checked and as you say, there is no difference other than less typing!

    As far as the #15 goes, the problem is that the grammar file has no way to contain the RD_AUTOACTION specification with the command line as given. I also played with the expanded .pl version but still couldn't get it to provide identical behavior. What did work was the suggested sledge hammer approach--fix each instance by hand! There may have been a discernable pattern to what was used as default, but I didn't see it and didn't have the time to track it down.

    I like your final 'additional suggestion', the Parse::RecDescent version of 'do as little as possible to get the job done'.

    –hsm

    "Never try to teach a pig to sing…it wastes your time and it annoys the pig."

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://181053]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others pondering the Monastery: (11)
As of 2015-07-07 23:14 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (93 votes), past polls