有限状態マシンを使用すると、一般的なテキスト解析のための優れたデザインですか?

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

質問

私は16進数で満たされたファイルを読んでいます。特定のパターンを特定する必要があります。「AAAD」(引用符なし)と言っています。パターンを見るたびに、他のファイルにデータを生成します。

これは、プログラムの設計において非常に一般的なケースです - 特定のパターンを解析して探しています.

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

  • 設計: 可能なより良いデザインはありますか?
  • 実装: 私が述べたように、スイッチケースを使用することにいくつかの問題がありますか?
役に立ちましたか?

解決

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

おそらく、既に設計/実装したものを変更する理由はないでしょうが、汎用テキスト解析技術に興味がある場合は、おそらく正規表現、フレックス、バイソン、ANTLRなどを見る必要があります。

他のヒント

恥ずかしいほどシンプルなケースのために if'sまたは switch'esで十分です。 POSIXシステムで文字列を解析するために、 男の正規表現(3). 。ファイル全体の完全な機能の解析(複雑な構成など)を使用する レックス/フレックスYACC/バイソン.

C ++で書くときは、見てください 復gexをブーストします より単純なケースの場合 スピリットを後押しします より複雑なもののために。 Flex&BisonもC ++を使用します。

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