すべての状況で適切に動作する単純な Scanner-Generator を実装しました。
これはコードの問題ではなく、DFA を最適化する方法に関する質問です。Hopcroft のアルゴリズムを使用した 1 つの Accept Node の最小化と、同じルールを受け入れるための Accept Nodes はうまく機能しましたが、このアルゴリズムは、いくつかの異なる Accept Nodes を使用した DFA を最小化しませんでした。たとえば、2 つの「if」、「[az][a-z0-9]*」を受け入れる DFA を作成し、Hopcroft のアルゴリズムを実行すると、固有の Accept Node が消えます。もちろん、各ノードは最初から異なるグループにグループ化されていました。
このタイプの DFA を最小限に抑える方法を知りたいです。これらの最小化問題を解く方法がなくても答えていただきたいです。