Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things
 
PerlMonks  

Re: Parse::RecDescent grammar that winds its way all the way back to start

by gnosti (Friar)
on Sep 23, 2010 at 16:33 UTC ( #861605=note: print w/ replies, xml ) Need Help??


in reply to Parse::RecDescent grammar that winds its way all the way back to start

You might design your parser to consume only one entry at a time. Pass your data to the parser as scalar reference. This way the scalar will be left with the remaining (unconsumed) text.

$parser->start_rule(\$data) or warn("not a job file"), return; while( $data ){ $parser->job_statement(\$data) }
Since you're calling the parser anew each time, you won't have a problem with unwinding entries.

This doesn't address the question of how to resync if you encounter a bad entry.


Comment on Re: Parse::RecDescent grammar that winds its way all the way back to start
Download Code
Re^2: Parse::RecDescent grammar that winds its way all the way back to start
by sundialsvc4 (Abbot) on Sep 23, 2010 at 20:04 UTC

    That is a very clever strategy.   I will ponder it carefully.

    In this case, “resyncing after a syntax error” is a non-issue.   I am interested in the error messages because I am debugging the grammar.

    Thanks for all your help, everyone.

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others imbibing at the Monastery: (5)
As of 2014-10-22 01:57 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    For retirement, I am banking on:










    Results (112 votes), past polls