ANTLRは、バイナリデータ形式をデシリアライズ/シリアライズするための適切なツールですか?

StackOverflow https://stackoverflow.com/questions/517004

質問

私は、スマート電気メーターと通信するために、様々なネットワークを介して送信するためのオクテットストリームを読み書きする必要があります。バイナリデータ形式を記述するANSI規格ANSI C12.19が、あります。データ形式が過度に複雑ではありませんが、それは多くの異なるタイプを説明している標準は、(500+ページ)非常に大きいです。標準は完全にEBNF文法で記述されています。私はEBNF文法またはそれの修正版を読んで、オクテットストリームを読み書きすることができますC#クラスを作成するために、ANTLRを利用し検討しています。

これはANTLRの良い使用ですか?

もしそうなら、どのような私はANTLR 3.1を利用できるように行う必要があるのですか?私は文字のかわりにバイトを読み取ることができる新しいストリームを実装する必要がありますようにニュースグループアーカイブの検索から、それがそうです。すべてのことですか私もレクサー誘導体を実装しなければならないでしょう?

ANTLRは私が読むことができます/ストリームを解析し、それはまた、私は、ストリームを書き込むことができますか?

感謝します。

ダンfinucane

役に立ちましたか?

解決

この主題はANTLRメーリングリストで随時アップします。バイナリファイル形式は非常に規則的であり、それだけでオーバーヘッド価値はないので答えは、通常はありませんです。

他のヒント

あなたは Ragel のを見てかかることがあります。これは、オン・ワイヤープロトコルを実装するために有用であるステートマシンコンパイラ/レクサーです。私はそれが非常に高速なコードを生成するレポートを読みました。あなたはパーサとテンプレートエンジンを必要としない場合、ragelはANTLRよりもオーバーヘッドが少ないです。あなたが本格パーサ、AST、と素敵なテンプレートエンジンのサポートが必要な場合は、ANTLRは、より良い選択かもしれません。

文法を持つことは、あなたに多大な脚アップを与えるように私には思えます。

ANTLR 3.1は、あなたが問題をそのように分解することができるので、解析/字句から分離されStringTemplateとコード生成機能を備えています。

私に勝者、試してみる価値ます。

のように思えます
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top