2016-09-18 6 views
1

lexツールを学ぶと、新しいプログラミング言語の作成など、テキスト形式のソースファイルを解析するのに役立つことがわかりました。また、コーデック/デコーダなどのバイナリ入力ストリームを解析するツールを構築するためにも使用します。バイナリ形式のソースファイルを解析するためにlex/flexを使用できますか?

lex/flex/yacc/bisonはこのような要件をサポートしていますか?これを有効にするには特別なコマンドラインオプションと構文がありますか?

ありがとうございます!

答えて

1

Flex(および私がよく知っている他のlex implentations)には、NUL文字を含むASCII以外の文字は問題ありません。 8bitオプションを使用する必要があるかもしれませんが、高速状態テーブルを要求しない限り、デフォルトです。

しかし、ほとんどのバイナリ形式では、長さがプレフィックスされた可変長フィールドが使用されますが、これは正規表現では表現できません。さらに、fixed-lengtbフィールドがコンテキスト依存であることは非常に一般的です。開始条件を使ってflexで状態マシンを構築することはできますが、それは多くの作業であり、時間とフレックスの機能を無駄にする可能性があります。

+1

lexの代わりに "length-prefixed variable length"フィールドを持つバイナリファイルにはどのツールをお勧めしますか? – Janthelme

関連する問題