Haskell Binary Parsing

我一直在尝试在haskell中实现协议解析器,我对这种语言很陌生,特别是在涉及monad时。我一直在使用binary-0.5.0.2并描述​​了我的协议的头部和所有有效负载。我想要解析的消息类似于以下内容:header +(有效负载A,有效负载B,..)其中标头中的字段指定消息具有哪种类型的有效负载。 我已经成功解析了bytestring中的第一条消息,但是对于如何阅读下一条消息感到不知所措,丢弃了在处理第一条消息时读取的字节。 这可能是相当模糊的,但我宁愿得到一个通用解析器的输入,而不是让我的丑陋代码改变为以这种方式工作。 谢谢您的帮助     
已邀请:
只需使用一系列解析操作,它们就会消耗输入。
parseAll = do
    hdr <- parseHeader
    pa <- parsePayloadA
    pb <- parsePayloadB
    ...
    
runGetState
Data.Binary.Get
返回的元组的第二个元素是剩余的
ByteString
。您可以继续应用解析器,直到出现错误或用完字节为止。     

要回复问题请先登录注册