2010-06-19 95 views

回答

49

你有幾個不錯的選擇。

對於字符串類型的輕質解析:

對於填料字節串解析,例如的HTTP headers

對於實際的二進制數據,大多數人使用兩種:

  • binary - 懶惰的二元分析
  • cereal - 嚴格的二元分析
主要是

問問自己,底層字符串類型是什麼?

這一決定在很大程度上決定了你會使用哪個分析器工具集。

問的第二個問題是:我是否已經有了數據類型的語法?如果是這樣,我就可以用得開心

而且很明顯自定義數據類型有很多種好現有的解析器:

+1

感謝您的詳細解答 – Keith 2010-06-19 22:18:07

+1

非常棒的答案,非常感謝。 – Litherum 2012-03-25 05:57:53

9

只需添加到唐的職務:就個人而言,我很喜歡Text.ParserCombinators.ReadP(底座的一部分)的無 - 非常快速和容易的東西。特別是當Parsec看起來過度殺傷力時。

字節串版本有一個bytestringreadp庫,但它不包含Char8字節串,我懷疑attoparsec在這一點上是更好的選擇。

4

我最近將一些代碼從Parsec轉換到Attoparsec。兩者都很有能力。

Attoparsec贏得了性能和內存佔用,但Parsec提供了更好的錯誤報告並且具有更完整的文檔。