Re: Un Petit Haskell Parser

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Re: Un Petit Haskell Parser

Lukas Renggli
Hi Frank,

I forward this to the Moose list (most PP action is going on there),
because other people might be interested as well.

On Wednesday, 20 July 2011, Frank Shearar <[hidden email]> wrote:

> Hi Lukas,
>
> I've been playing around with PetitParser lately
> (http://www.lshift.net/blog/2011/07/19/un-petit-haskell), and I
> thought (a) I'd tell you about another happy user and (b) share a
> trick, which you may already know. A println analogue for debugging
> one's productions, occasionally useful when one runs too far ahead of
> one's tests:
>
> PPParser>>debug: aString
>         ^ self ==> [:x | Transcript showln: ('{1} ({2})' format: {aString. x.}). x].

You might be also be interested in #>=> that passes you a continuation
into the block, so it allows you to "debug" before and after the
parse. I used it to write the Glamour-based debugger. Look at the
tests for more details.

> One problem I have found is that PetitStream doesn't work well
> wrapping a (Squeak) FileStream. I had expected the following to just
> work:
>
>     FileStream
>         fileNamed: 'myFile'
>         do: [:f | HaskellParser new parse: f]
>
> but I currently have to read the entire file into a String and parse
> that. I'm don't know if that's because of a difference between
> Squeak's and Pharo's FileStream implementation or a problem in
> PetitParer?

It should work, but convert the stream to a PPStram using
#asPetitStream. I cannot verify right now, because I don't have a
computer accessible. Parsing directly on a filestream could
potentially work (you might need to implement #uncheckedPeek) but will
be dead slow (PP extensively uses #position: and #next to randomly
acces the stream, as you can see on Figure 2 in
http://scg.unibe.ch/archive/papers/Reng10cDynamicGrammars.pdf).

Thanks for sharing your blog post and experience!

Lukas

--
Lukas Renggli
www.lukas-renggli.ch

_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.iam.unibe.ch/mailman/listinfo/moose-dev