解析 – 选择一个Haskell解析器

有很多开源parser implementations可供我们在Haskell。 Parsec似乎是文本解析的标准,attoparsec似乎是二进制解析的流行选择,但我不知道的。是否有一个特定的决策树,你选择一个解析器实现?你对图书馆的优势或弱点有什么有趣的了解吗?
最佳答案
你有几个好的选择。

对于String类型的轻量级解析:

> parsec
> polyparse

对于打包的字节解析,例如。的HTTP headers

> attoparsec

对于实际的二进制数据,大多数人使用:

> binary – 用于延迟二进制解析
> cereal – 用于严格的二进制解析

问自己的主要问题是什么是底层字符串类型?

> String?
> bytestring(strict)?
> bytestring(lazy)?
> unicode text

这个决定很大程度上决定了你将使用哪个解析器工具集。

第二个问题是:我已经有一个数据类型的语法了吗?如果是这样,我只能使用快乐

> Happy parser generator

显然对于自定义数据类型有各种好的现有解析器:

> XML

> haxml
> xml-light
> hxt
> hexpat

> CSV

> bytestring-csv
> csv

> JSON

> json

> rss / atom

> feed

转载注明原文:解析 – 选择一个Haskell解析器 - 代码日志