当前位置:  开发笔记 > 编程语言 > 正文

ANTLR是否是用于序列化/反序列化二进制数据格式的适当工具?

如何解决《ANTLR是否是用于序列化/反序列化二进制数据格式的适当工具?》经验,为你挑选了2个好方法。

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

这是一个很好的使用ANTLR?

如果是这样,我需要做些什么才能使用ANTLR 3.1?从搜索新闻组档案看来,我似乎需要实现一个可以读取字节而不是字符的新流.是全部还是我必须实现Lexer衍生物?

如果ANTLR可以帮助我读取/解析流,它还可以帮助我编写流吗?

谢谢.

丹芬卡



1> Todd Stout..:

你可以看看Ragel.它是一个状态机编译器/词法分析器,可用于实现线上协议.我已经阅读了报告,它生成了非常快的代码.如果您不需要解析器和模板引擎,ragel的开销比ANTLR少.如果你需要一个完整的解析器,AST和漂亮的模板引擎支持,ANTLR可能是更好的选择.



2> U62..:

这个主题不时出现在ANTLR邮件列表中.答案通常是否定的,因为二进制文件格式非常规则,并且不值得花费.


500页(?!)的标准主题经常出现在ANTLR邮件列表中?机器开销必须很大,才能超过使用优秀的解析器生成器来正确实现标准的好处.
推荐阅读
跟我搞对象吧
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有