我正在尝试解析具有特定结构的二进制文件。我目前正在研究“attoparsec”软件包,但我觉得这个应用程序的级别太低了。
例如,为了阅读Int32
,我必须这样做:
return
. (fromIntegral :: Word32 -> Int32)
. runGet getWord32le
. BS.fromStrict
=<< A.take 4
我认为这对于一个Int32
来说太复杂了!但是,我真的很喜欢parsec
样式解析提供的框架,因此我可以用类似于语法本身的样式定义语法。
是否有更高级别的二进制文件解析解决方案?理想情况下,它是一个基于attoparsec的包,并具有帮助函数来读取各种类型的值,如Char
,Int
,Float
等。