在Haskell中使用解析器组合器库编写的分析解析器
问题描述:
在Haskell中剖析解析器组合器库中编写的解析器的标准方法是什么?在Haskell中使用解析器组合器库编写的分析解析器
我目前使用的是uu-parsinglib
,但我会非常感兴趣的是了解其他分析器组合器库(如Parsec
)的分析方法。
现在我写了我的解析器,它很慢,吃了很多内存(对于600行输入文本,需要大约5秒钟才能解析超过1Gb的RAM,我想研究如何改进它)
答
尝试堆纹:
$ ./prog +RTS -K128M -hc -p
$ hp2ps -c prog.hp
如果配置文件看起来像一座山,是在兆, 可能是你先构造一个大的数据结构,然后减少它 (然后可以考虑使用累加器或记忆)。
更详细的信息:http://book.realworldhaskell.org/read/profiling-and-optimization.html
您使用,字符串和列表类型?这可能真的是内存密集型。 – TallerGhostWalt
“我的程序速度很慢,并且在给定小进口时吃了XXX GB RAM”通常意味着某处存在懒惰错误。这可能与您的_parser_无关,而是与您如何使用解析结果相关。 – MathematicalOrchid
@MathematicalOrchid:我正在将AST打印到终端 –