私のレクサーにDFAミニマイザを実装しようとしていますが、DFAを作成することはできません。表現。死んだ状態や余分な状態のDFAを生成する正規表現
私は、後置式の正規表現からThomson構造を使用して構築されたNFAからDFAを構築しています。それはドラゴンの本に描かれているものとほぼ同じです。レクサーを作成するために、いくつかのNFAは、開始状態からのイプシロン遷移を使用して結合される。 DFAアルゴリズムが適用されているのは、この結合されたNFAです。
DFAを生成する「既知の」正規表現はありますか?死んだ状態の除去と状態の最小化のための素晴らしいテストベッドを作るでしょうか?
もちろん、奇妙なDFAをハックアップしてアルゴリズムを適用することはできますが、それは本当に適切なテストケースではありませんか?私がDFAを構築しているメソッドが死んでいる状態にならないようにするならば、その情報はまったく価値があります。それ以来、私は状態除去機能を完全に実装することをスキップできます。
編集:あなたは正確に答えるために、実装の詳細を必要とする場合、コードは、特にNFA.csとDFA.csクラスgithubで提供されています。さらに、私が使用している構築アルゴリズムについては、blog postsというシリーズを書いています。