我需要读写八位字节流以通过各种网络发送具有智能电表通信。有一个ANSI标准,ANSI C12.19,描述二进制数据格式。虽然数据格式不是过于复杂的标准是,它描述了许多不同类型非常大(500 +页)。该标准由EBNF语法充分的描述。我正在考虑利用ANTLR读取EBNF语法或它的一个修改的版本,并创建可读取的C#类和写入字节流。

这是一个良好的使用ANTLR的?

如果是这样,我需要做什么才能够利用ANTLR 3.1?从搜索新闻组档案好像我需要实现能够读取的字节字符,而不是一个新的数据流。是,所有的或我必须实现一个词法分析器衍生物以及?

如果ANTLR能帮助我读/解析流可也帮我写流?

感谢。

担菲纽肯

有帮助吗?

解决方案

此主题从时间到来最多时间ANTLR邮件列表中。答案通常是否定的,因为二进制文件格式是非常有规律的,它只是不值得的开销。

其他提示

您不妨来看看在 Ragel 。它是一个状态机的编译器/词法是用于实现上沿丝协议是有用的。我已阅读,它产生非常快的代码报告。如果你并不需要一个解析器和模板引擎,ragel比ANTLR的开销少。如果你需要一个全面的解析,AST,和漂亮的模板引擎的支持,ANTLR可能是一个更好的选择。

在我看来,有一个语法给你一个巨大的腿。

3.1 ANTLR具有来自解析/分离词法,所以可以分解的问题是方式StringTemplate的和代码生成功能。

看起来像一个胜利者对我来说,值得一试。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top