在Haskell中使用解析器组合器库编写的分析解析器

问题描述:

在Haskell中剖析解析器组合器库中编写的解析器的标准方法是什么?在Haskell中使用解析器组合器库编写的分析解析器

我目前使用的是uu-parsinglib,但我会非常感兴趣的是了解其他分析器组合器库(如Parsec)的分析方法。

现在我写了我的解析器,它很慢,吃了很多内存(对于600行输入文本,需要大约5秒钟才能解析超过1Gb的RAM,我想研究如何改进它)

+1

您使用,字符串和列表类型?这可能真的是内存密集型。 – TallerGhostWalt

+0

“我的程序速度很慢,并且在给定小进口时吃了XXX GB RAM”通常意味着某处存在懒惰错误。这可能与您的_parser_无关,而是与您如何使用解析结果相关。 – MathematicalOrchid

+0

@MathematicalOrchid:我正在将AST打印到终端 –

尝试堆纹:

$ ./prog +RTS -K128M -hc -p 
$ hp2ps -c prog.hp 

如果配置文件看起来像一座山,是在兆, 可能是你先构造一个大的数据结构,然后减少它 (然后可以考虑使用累加器或记忆)。

更详细的信息:http://book.realworldhaskell.org/read/profiling-and-optimization.html