[Haskell-cafe] monadic parser with Happy and Alex

Manlio Perillo manlio_perillo at libero.it
Wed Oct 8 11:10:21 EDT 2008


Timothy Goddard ha scritto:
> 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. 

Thanks, this seems the best solution.

> 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.
> 


Regards  Manlio


More information about the Haskell-Cafe mailing list