Can Spirit(Boost C++库的一部分)用于解析来自流的二进制数据吗?例如,它可以用来将来自套接字的数据解析为结构,字节和单个位标志吗?谢谢!Can Boost Spirit可以用来分析字节流数据吗?
8
A
回答
12
Boost Spirit允许使用Extended Backus–Naur Form (EBNF)语法与template meta-programming定义解析器。它非常灵活,并且在解析过程的所有阶段都可以使用抽象类来定制。为了处理二进制数据流,您需要实现自定义扫描器类,因为默认类型是为文本输入量身定制的。您可以在Spirit User's Guide的The Scanner and Parsing部分进一步阅读。
在我的愚见,二进制数据流最好用手动序列化代码来处理。 Spirit更多地面向格式良好的语法,如标记语言或脚本语言。例如,EBNF提供了The Complete Syntax of Lua。因此,使用Spirit构建自定义分析器可能是有意义的。另一方面,具有同步字节和CRC包围消息的专有串行数据链路如果仅仅为了定义EBNF,就需要更多的工作,如果其中还存在context-free grammar。
附录
The latest version of Boost Spirit includes functionality for dealing with binary data.
9
Spirit2,刚刚发布,为解析二元设施。 Check out this。
相关问题
- 1. 使用Boost :: Spirit解析转义字符串:: Spirit
- 2. Boost Spirit可选解析器和回溯
- 3. 可以将PMD用于Java上的数据流分析吗?
- 4. 用boost spirit x3解析一个数字到一个字符串
- 5. Can Marpa可以用来加速Perl解释器的解析吗?
- 6. 使用boost :: spirit以任何顺序解析命名参数
- 7. 你可以使用Boost.Regex来解析流吗?
- 8. 把字符串解析为int或者用boost spirit浮点数
- 9. 用boost :: spirit解析双精度列表
- 10. 用Boost Spirit Classic解析SQL INSERT
- 11. 如何用boost :: spirit :: qi解析行尾?
- 12. 用Boost :: Spirit(V2.4)解析为容器
- 13. 用boost :: spirit解析python语法 - 问题
- 14. boost :: spirit :: qi - 可选匹配
- 15. Can Boost 1.65.x可以用于Visual C++ 2010吗?
- 16. 用boost-spirit解析超过15个字符的字符串
- 17. can tags可以代替分类吗?
- 18. 用boost :: spirit解析带引号的字符串
- 19. 如何用Boost :: Spirit解析复杂的字符串文件
- 20. 使用boost :: spirit解析字符串列表
- 21. Can Meteor的Appcache也可以存储数据库数据吗?
- 22. boost :: spirit stream_parser消耗太多了吗?
- 23. 如何使用qi :: symbols分析器使用no_case来匹配来自spirit词法分析器的标记?
- 24. 流分析可以写入具有整数数据类型的Azure SQL表吗?
- 25. Can Racket宏可以使用关键字参数吗?
- 26. Can Variant参数可以变成vbError吗?
- 27. boost :: spirit :: qi matches [] trouble
- 28. Nashorn的`eval`函数可以用来解释字节码吗?
- 29. Can Regex可以从字符串中提取多个数字吗?
- 30. 以Boost Spirit和Fusion的关联方式解析结构
你可以给出更多关于数据格式的细节。它是一些复杂的格式? – 2008-11-12 21:29:29
当我最初提出这个问题时,我不记得我的想法,但它可能与识别SSL/TLS标头有关。 – Brian 2010-07-29 16:14:33