0
我想解析一个具有特定结构的二进制文件。我目前正在研究“attoparsec”软件包,但我觉得这个应用程序的级别太低。是否有比attoparsec更高级别的二进制解析包?
例如,为了在Int32
读书,我必须这样做:
return
. (fromIntegral :: Word32 -> Int32)
. runGet getWord32le
. BS.fromStrict
=<< A.take 4
我觉得这办法只是一个Int32
太复杂了!但是,我真的很喜欢parsec
式解析提供的框架,以便我可以用类似于语法本身的样式来定义语法。
是否有更高级别的二进制文件解析解决方案?理想情况下它是是基于attoparsec一个包,并具有辅助功能的各类值的阅读,像Char
,Int
,Float
等
是的,我有。实际上'runGet'和'getWord32be'来自该包。我的意思是使用“binary”解析文件总是可能的,但是我错过了“attoparsec”中的'many','choice','*>'和'<|>'等,这使得构建复杂的解析逻辑变得更愉快。 – trVoldemort
现在我想到了,也许我要求太多了。 – trVoldemort
你真的需要回溯吗?通常二进制格式的设计,所以你不必。 – ErikR