簡體   English   中英

Haskell解析器組合器

[英]Haskell Parser Combinators

我閱讀了很多有關Haskell Parser組合器的信息,發現了很多主題,例如:

但是所有這些主題都將Parser CombinatorsParser Generators進行了比較。

我想問您哪種Parser Combinator最適合以下條件:

  1. 我想對錯誤(包括錯誤恢復)和用戶消息進行良好控制
  2. 我希望能夠為解析器提供一小部分文本(而不是一次輸入整個文件)
  3. 我希望能夠很好地重新設計語法(我目前正在開發語法,因此“工作很不錯”很重要”
  4. 最終的解析器應該很快(性能很重要,但不如1-3點那么大)。

我發現,最受歡迎的解析器組合器是:

我會說絕對選擇Parsec,這是為什么:

Attoparsec的設計旨在快速使用,但缺乏對您在Parsec中收到的錯誤消息的強大支持,因此這是您的第一點優勢。

我使用解析器組合器庫的經驗是,無論是在GHCi中還是在測試中,對解析器的各個部分進行測試都是非常容易的,因此所有這些都真的滿足了第二點。 最后,Attoparsec和Parsec非常快。

最后,Parsec最長,並且具有許多有用和高級的功能。 這意味着一般的可維護性將變得更加容易,Parsec中有更多示例,並且更多人熟悉它。 uu-parsinglib絕對值得花時間探索,但是出於這些原因,我建議先熟悉Parsec是更好的方法。 (Alex也是與Parsec或其他方式一起使用的最推薦的詞法分析器,但我自己並未使用它。)

如果有人發現此問題,我將在此處發布答案。 目前的答案已經過時了。

最好將megaparsec包用作解析器組合器庫。 這是一個現代化的生產就緒型圖書館。 它的README.md與其他解析器組合器庫進行了出色的比較:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM