Pau*_*ner 12 haskell parsec alex
在一个阶段中混合词法分析器和解析阶段有时会使Parsec解析器的可读性降低,但也会降低它们的速度.一种解决方案是使用Alex作为标记化器,然后使用Parsec作为标记流的解析器.
这很好但是如果我能摆脱Alex会更好,因为它在编译管道中添加了一个预处理阶段,与haskell"IDE"等没有很好地集成.我想知道是否有这样的事情用于描述标记器的haskell EDSL,非常符合Alex的风格,但是作为库.
是的 - http://www.cse.unsw.edu.au/~chak/papers/Cha99.html
在Hackage之前,Manuel曾经将代码发布在一个名为CTK(编译器工具包)的包中。我不确定这些天项目的状态如何。
我认为 Thomas Hallgren 在论文“Lexing Haskell in Haskell”中的词法分析器是动态的,而不是代码生成器,而该版本是为词法 Haskell 量身定制的,库中的机制更加通用。Iavor Diatchki 已将代码放在 Hackage 上。
http://hackage.haskell.org/package/haskell-lexer