选择Haskell解析器

Kei*_*ith 31 parsing haskell

Haskell中有许多可供我们使用的开源解析器实现.Parsec似乎是文本解析的标准,而attoparsec似乎是二进制解析的流行选择,但除此之外我不太了解.是否存在选择解析器实现的特定决策树?您是否了解过有关图书馆优势或劣势的任何有趣内容?

Don*_*art 51

你有几个不错的选择.

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

对于压缩字节串解析,例如HTTP头.

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

  • binary - 用于延迟二进制解析
  • 谷物 - 用于严格的二进制解析

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

该决定很大程度上决定了您将使用哪个解析器工具集.

要问的第二个问题是:我是否已经拥有数据类型的语法?如果是这样,我可以用得开心

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


小智 11

只是为了添加Don的帖子:就我个人而言,我非常喜欢Text.ParserCombinators.ReadP(基础的一部分),用于简单明了的快速简单的东西.特别是当Parsec看起来有点矫枉过正时.

有一个bytestringreadp库用于bytestring版本,但它不包括Char8字节串,我怀疑attoparsec在这一点上是一个更好的选择.