I've been playing with PetitParser and I keep running into what seems like a common case. I want to skip everything up to the first match of my second parser. For example, if I don't care about anything in a string that comes before 'dd', I write: parser2 := 'dd' asParser negate plus, 'dd' asParser ==> [ :nodes | nodes second ]. parser2 parse: 'kslkxjclkxjcdd'. "Returns 'dd'"
This gets the job done, but seems awkward. What's the most elegant way? I thought maybe "'dd' asParser not plus, 'dd' asParser." But the image just hangs.
Thanks. Sean
Hi Sean,
#negate is the way to go. #not does not consume the stream.
Cheers, Doru
On 12 Nov 2010, at 00:25, Sean P. DeNigris wrote:
I've been playing with PetitParser and I keep running into what seems like a common case. I want to skip everything up to the first match of my second parser. For example, if I don't care about anything in a string that comes before 'dd', I write: parser2 := 'dd' asParser negate plus, 'dd' asParser ==> [ :nodes | nodes second ]. parser2 parse: 'kslkxjclkxjcdd'. "Returns 'dd'"
This gets the job done, but seems awkward. What's the most elegant way? I thought maybe "'dd' asParser not plus, 'dd' asParser." But the image just hangs.
Thanks. Sean -- View this message in context: http://forum.world.st/PetitParser-skip-everything-up-to-X-tp3038824p3038824.... Sent from the Moose mailing list archive at Nabble.com. _______________________________________________ Moose-dev mailing list Moose-dev@iam.unibe.ch https://www.iam.unibe.ch/mailman/listinfo/moose-dev
-- www.tudorgirba.com
"Yesterday is a fact. Tomorrow is a possibility. Today is a challenge."
What do you think of adding it to the API?
Something like http://forum.world.st/file/n3038839/PPParser-skipUntil.st PPParser-skipUntil.st :
PPParser>>skipUntil
^ self negate plus, self ==> [ :nodes | nodes second ].
parser2 := 'dd' asParser skipUntil. parser2 parse: 'kslkxjclkxjcdd'. "Returns 'dd'"
I doubt this is generally useful. Sometimes you might want the skipped input, sometimes you might want it as a token, sometimes as a trimmed token, sometimes you need the end as a token, sometimes the end as a trimmed token, sometimes both or a combination of any of the two.
Lukas
On 11 November 2010 20:36, Sean P. DeNigris sean@clipperadams.com wrote:
What do you think of adding it to the API?
Something like http://forum.world.st/file/n3038839/PPParser-skipUntil.st PPParser-skipUntil.st :
PPParser>>skipUntil
^ self negate plus, self ==> [ :nodes | nodes second ].
parser2 := 'dd' asParser skipUntil. parser2 parse: 'kslkxjclkxjcdd'. "Returns 'dd'"
-- View this message in context: http://forum.world.st/PetitParser-skip-everything-up-to-X-tp3038824p3038839.... Sent from the Moose mailing list archive at Nabble.com. _______________________________________________ Moose-dev mailing list Moose-dev@iam.unibe.ch https://www.iam.unibe.ch/mailman/listinfo/moose-dev
Lukas Renggli wrote:
I doubt this is generally useful. Sometimes you might want the skipped input, sometimes you might want it as a token, sometimes as a trimmed token, sometimes you need the end as a token, sometimes the end as a trimmed token, sometimes both or a combination of any of the two.
Okay, thanks for the reply. I'm really enjoying PetitParser!
Sean
+1
Doru
On 12 Nov 2010, at 03:40, Lukas Renggli wrote:
I doubt this is generally useful. Sometimes you might want the skipped input, sometimes you might want it as a token, sometimes as a trimmed token, sometimes you need the end as a token, sometimes the end as a trimmed token, sometimes both or a combination of any of the two.
Lukas
On 11 November 2010 20:36, Sean P. DeNigris sean@clipperadams.com wrote:
What do you think of adding it to the API?
Something like http://forum.world.st/file/n3038839/PPParser-skipUntil.st PPParser-skipUntil.st :
PPParser>>skipUntil
^ self negate plus, self ==> [ :nodes | nodes second ].
parser2 := 'dd' asParser skipUntil. parser2 parse: 'kslkxjclkxjcdd'. "Returns 'dd'"
-- View this message in context: http://forum.world.st/PetitParser-skip-everything-up-to-X-tp3038824p3038839.... Sent from the Moose mailing list archive at Nabble.com. _______________________________________________ Moose-dev mailing list Moose-dev@iam.unibe.ch https://www.iam.unibe.ch/mailman/listinfo/moose-dev
-- Lukas Renggli www.lukas-renggli.ch
Moose-dev mailing list Moose-dev@iam.unibe.ch https://www.iam.unibe.ch/mailman/listinfo/moose-dev
-- www.tudorgirba.com
"No matter how many recipes we know, we still value a chef."