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

标签 parsing antlr generator ebnf ragel

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

这是对 ANTLR 的一个很好的使用吗?

如果是这样,我需要做什么才能使用 ANTLR 3.1?通过搜索新闻组文件,似乎我需要实现一个可以读取字节而不是字符的新流。这就是全部还是我还必须实现 Lexer 派生词?

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

谢谢。

丹菲纽肯

最佳答案

这个主题不时出现在 ANTLR 邮件列表中。答案通常是否定的,因为二进制文件格式是非常规则的,因此不值得付出这样的代价。

关于parsing - ANTLR 是序列化/反序列化二进制数据格式的合适工具吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/517004/

相关文章:

ios - 有没有办法将 PFFile(图像)传递给另一个 Controller 并在不查询新 Controller 中的数据库的情况下显示它?

objective-c - 字符串解析,用逗号分隔,除非用撇号括起来

MySQL:检查一个值是否包含在一个范围区间内

python - 在 Python 中使用装饰器将函数变成生成器

java - XTend 中的递归缩进

java - 如何从 java 中的字符串中删除无效的 unicode 字符

java - 如何关闭antlr4中的不匹配警告

java - 在 Antlr 3 中生成自定义 JavaDoc

antlr - 在 antlr4 词法分析器中,如何有一个规则将所有剩余的 "words"捕获为未知标记?

python - 如何在恒定大小的 block 中拆分可迭代