2

16進数で埋められたファイルを読んでいます。特定のパターンを特定する必要があります。たとえば、「aaad」(引用符なし)と言います。パターンを見るたびに、他のファイルにデータを生成します。

これは、プログラムを設計する際に非常に一般的なケースです。特定のパターンを解析して検索します

私はそれを有限状態マシンとして設計し、switch-case状態を変更するために使用してCで構造化されました。これは私に起こった最初の実装でした。

  • デザイン:より良いデザインはありますか?
  • 実装:前述のように、スイッチケースの使用に問題がありますか?
4

2 に答える 2

1

手巻きFSMは単純な状況ではうまく機能しますが、状態と入力の数が増えると扱いにくくなる傾向があります。

すでに設計/実装したものを変更する理由はおそらくありませんが、汎用のテキスト解析手法に興味がある場合は、正規表現、Flex、Bison、ANTLRなどを検討する必要があります。

于 2010-05-05T20:14:19.457 に答える
1

恥ずかしいほど単純なケースでは、if「s」またはswitch「es」のカップルで十分です。POSIXシステムで文字列を解析するには、man regex(3)を使用します。ファイル全体(複雑な構成など)の完全な機能を備えた解析には、Lex / FlexおよびYacc / Bisonを使用します。

C ++で作成する場合は、より単純なケースについてはBoost Regexを、より複雑なケースについてはBoostSpiritを参照してください。Flex&BisonはC++でも動作します。

于 2010-05-05T21:18:40.393 に答える