我有语用编程器型代码生成一些经验:在一个代码生成器,消费这些数据结构,文件和产生拉原始字节到特定语言的数据代码提供了平台无关的格式和写作模板指定的数据结构结构,对数字数据进行缩放,打印出数据等。好的实用性(TM)思想是(a)我可以通过修改规范文件和重新生成源文件(干燥文件和所有文件)来更改数据结构,和(b)我可以通过修改我的模板添加可以为我的所有结构生成的附加功能。构建结构化二进制数据解析器的框架?
我曾经使用过一个名为Jeeves的Perl脚本,它可以工作,但它是通用的,并且我想编写的任何函数都可以用来处理我从头开始编写的数据。
是否存在一些非常适合用于创建结构化的二进制数据解析器任何框架?我读过的Antlr表明,这是过度的。我感兴趣的目标语言是C#,C++和Java,如果它很重要的话。
感谢一如既往。
编辑:我把一个赏金对这一问题。如果我有任何需要查看的地方(搜索关键词)或其他攻击你自己开发的问题的方法,我很乐意听到他们的消息。
不准备使用的框架,但至少有一些食物认为:http://okmij.org/ftp/Scheme/binary-parse.scm - 可以在C#中应用相同的方法。 – 2011-03-18 16:58:49
我不知道你为什么认为ANTLR(或任何解析器生成器)是矫枉过正。你需要有一些方法来定义你的数据,这需要一种规范语言,对此,必须有一个解析器;为此写一个完全临时解析器是没有意义的。您还需要某种解析器来解析原始二进制数据;传统的解析器生成器通常用于处理文本,但您可以轻松滥用它们来处理二进制数据。现在,为了解析二进制数据,一个正则表达式必须足够;完整的CFG可能不是必需的。 – 2011-03-18 17:03:51
@Ira:关于规范语言的好处。我的Jeeves工作有一个,我只是用它而不是添加或设计它。 – John 2011-03-23 16:58:45