Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw
 
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 perusing the Monastery: (8)
As of 2015-07-07 05:35 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 (87 votes), past polls