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. Spirit Boost real_p分析器行爲奇怪
- 3. Boost Spirit可選解析器和回溯
- 4. 可以將PMD用於Java上的數據流分析嗎?
- 5. C++,boost :: spirit解析文本
- 6. 用boost spirit x3解析一個數字到一個字符串
- 7. Can Marpa可以用來加速Perl解釋器的解析嗎?
- 8. 你可以使用Boost.Regex來解析流嗎?
- 9. 使用boost :: spirit以任何順序解析命名參數
- 10. 把字符串解析爲int或者用boost spirit浮點數
- 11. 用Boost :: Spirit解析時發生Segfault
- 12. 使用boost :: spirit解析Newick語法
- 13. 如何用boost :: spirit :: qi解析行尾?
- 14. 用Boost Spirit Classic解析SQL INSERT
- 15. 用boost :: spirit解析雙精度列表
- 16. 用boost :: spirit解析python語法 - 問題
- 17. 用Boost :: Spirit(V2.4)解析爲容器
- 18. boost :: spirit :: qi :: double_和boost :: spirit :: qi :: int_
- 19. Can Boost 1.65.x可以用於Visual C++ 2010嗎?
- 20. boost :: spirit :: qi - 可選匹配
- 21. 如何在boost :: spirit :: qi分析器中使用多態屬性?
- 22. 用boost-spirit解析超過15個字符的字符串
- 23. 使用boost :: spirit :: x3
- 24. can tags可以代替分類嗎?
- 25. 如何使用boost :: spirit來解析UTF-8?
- 26. 如何在Boost Spirit X3中進行「流」解析?
- 27. Boost Spirit QI slow
- 28. Boost :: spirit序列沒有得到解析
- 29. 解析boost :: spirit遞歸結構
- 30. 如何用Boost :: Spirit解析複雜的字符串文件
你可以給出更多關於數據格式的細節。它是一些複雜的格式? – 2008-11-12 21:29:29
當我最初提出這個問題時,我不記得我的想法,但它可能與識別SSL/TLS標頭有關。 – Brian 2010-07-29 16:14:33