Choosing a Haskell parser

前端 未结 4 396
一生所求
一生所求 2021-01-30 07:25

There are many open sourced parser implementations available to us in Haskell. Parsec seems to be the standard for text parsing and attoparsec seems to be a popular choice for b

4条回答
  •  挽巷
    挽巷 (楼主)
    2021-01-30 07:50

    You have several good options.

    For lightweight parsing of String types:

    • parsec
    • polyparse

    For packed bytestring parsing, e.g. of HTTP headers.

    • attoparsec

    For actual binary data most people use either:

    • binary -- for lazy binary parsing
    • cereal -- for strict binary parsing

    The main question to ask yourself is what is the underlying string type?

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

    That decision largely determines which parser toolset you'll use.

    The second question to ask is: do I already have a grammar for the data type? If so, I can just use happy

    • The Happy parser generator

    And obviously for custom data types there are a variety of good existing parsers:

    • XML
      • haxml
      • xml-light
      • hxt
      • hexpat
    • CSV
      • bytestring-csv
      • csv
    • JSON
      • json
    • rss/atom
      • feed

提交回复
热议问题