[Haskell-cafe] monadic parser with Happy and Alex

Timothy Goddard tim at goddard.net.nz
Tue Oct 7 22:36:34 EDT 2008


On Sun, 05 Oct 2008 04:05:51 Manlio Perillo wrote:
> Hi.
>
> I have completed a draft of a CSS lexer, using Alex.
> http://hg.mperillo.ath.cx/haskell/webtools/file/tip/src/CSS/Lexer.x
>
> The lexer use the posn wrapper.
>
> Now I'm starting to write the parser with Happy, however for the final
> product I would like to:
> 1) Be able to do I/O in the lexer, for stylesheets inclusion
>     (@import rule)
> 2) be able to keep state in the parser (or lexer?), for character
>     transcoding (@charset rule)
>
>
> This should be possible with Happy (and there are some example), however
>   I don't find examples that make use of a lexer written with Alex.
>
> Should I write a lexer using only the Alex basic interface (without
> wrappers)?
>
>
>
> Thanks   Manlio Perillo
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe

Hi Manlio,

You may be better off separating the parsing from the import process. You 
would first parse it in to internal data structures (including an option for 
import) then go through that and replace import statements with the parsed 
content of those files. Producing a list which is then consumed by an IO 
procedure is almost exactly equivalent to threading IO through the entire 
parser and is a lot tidier, more flexible and should be easier to maintain.

Cheers,

Tim


More information about the Haskell-Cafe mailing list