首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ANTLR是序列化/反序列化二进制数据格式的合适工具吗?

ANTLR是序列化/反序列化二进制数据格式的合适工具吗?
EN

Stack Overflow用户
提问于 2009-02-05 17:47:07
回答 3查看 3.2K关注 0票数 10

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

这是ANTLR的好用法吗?

如果是这样,我需要做什么才能使用ANTLR 3.1?通过搜索新闻组档案,我似乎需要实现一个新的流,它可以读取字节而不是字符。这就是全部吗?或者我还需要实现一个词法分析器派生函数?

如果ANTLR可以帮助我读取/解析流,那么它也可以帮助我写流吗?

谢谢。

丹·菲努卡恩

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-02-05 18:03:23

这个话题经常出现在ANTLR邮件列表中。答案通常是否定的,因为二进制文件格式是非常规则的,这是不值得开销的。

票数 10
EN

Stack Overflow用户

发布于 2009-04-11 15:44:48

你可以看看Ragel。它是一个状态机编译器/词法分析器,对于实现在线协议非常有用。我读过一些报道,说它能生成非常快的代码。如果你不需要解析器和模板引擎,ragel比ANTLR有更少的开销。如果需要完整的解析器、AST和良好的模板引擎支持,ANTLR可能是更好的选择。

票数 16
EN

Stack Overflow用户

发布于 2009-02-05 17:54:17

在我看来,掌握语法会给你很大的帮助。

ANTLR3.1具有独立于解析/词法分析的StringTemplate和代码生成功能,因此您可以通过这种方式分解问题。

在我看来是个赢家,值得一试。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/517004

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档