Haskell二进制解析

Cha*_*ham 5 binary haskell protocols custom-protocol

我一直在尝试在haskell中实现协议解析器,我对这种语言很陌生,特别是在涉及monad时.我一直在使用binary-0.5.0.2并描述​​了我的协议的头部和所有有效载荷.我要解析的消息类似于以下内容:header +(有效负载A,有效负载B,..)其中标头中的字段指定消息具有哪种类型的有效负载.

我已经成功解析了bytestring中的第一条消息,但是对于如何阅读下一条消息感到不知所措,丢弃了在处理第一条消息时读取的字节.

这可能是相当模糊的,但我宁愿得到一个通用解析器的输入,而不是让我的丑陋代码改变为以这种方式工作.

谢谢您的帮助

aug*_*tss 6

只需使用一系列解析操作,它们就会消耗输入.

parseAll = do
    hdr <- parseHeader
    pa <- parsePayloadA
    pb <- parsePayloadB
    ...
Run Code Online (Sandbox Code Playgroud)