質問

Spirit(Boost C ++ライブラリの一部)を使用して、ストリームからのバイナリデータを解析できますか?たとえば、ソケットからのデータを構造、バイト、および個々のビットフラグに解析するために使用できますか?ありがとう!

役に立ちましたか?

解決

Boost Spiritでは、 Extended Backus–を使用してパーサーを定義できます。 テンプレートメタプログラミングを使用したNaur Form(EBNF)構文。非常に柔軟で、カスタマイズ可能な解析プロセスのすべてのフェーズで抽象クラスを使用します。バイナリデータストリームを処理するには、デフォルトのタイプがテキスト入力用に調整されているため、カスタムスキャナークラスを実装する必要があります。 スキャナーと解析セクションでさらに読むことができます。 Spiritユーザーガイド

私の謙虚な意見では、バイナリデータストリームは手巻きのシリアル化コードで処理するのが最適です。 Spiritは、マークアップ言語やスクリプト言語のような整形式の文法を対象としています。たとえば、 Luaの完全な構文はEBNFで提供されています。そのため、Spiritを使用してカスタムパーサーを構築することは理にかなっています。一方、文脈自由文法も存在します。

補遺

Boost Spiritの最新バージョンには、バイナリデータを処理する機能が含まれています。

他のヒント

Spirit2がリリースされたばかりで、バイナリを解析する機能があります。 こちらをご覧ください

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top