0

この質問で述べたように、DFA を使用してすべてのコメント、文字列などを追跡しています。この DFA は 11 の状態で終了しました。

今、Java でキーワードを認識する DFA を作成しようとしています。

考え:

最初は pos=0 です。pos は遷移ごとに 1 ずつインクリメントされます。

iskeyword() は私自身の関数です。

isalnum() は、将来の要件に応じて、任意のユーザー定義関数に置き換えることができます。

(実際の DFA には存在しますが、関連のない多くのトランジションとセルフ ループは提供されません)。

(q0) -- !isalnum(pos)-------> (q1) ---iskeyword(pos,pos+len)---> (pos+=len)(q2)----- ! isalnum(pos)-------->(q3[読み取ったキーワードをBOLDにする])---iskeyword(pos,pos+len)-->(q2).

少なくとも 4 つの州が必要です。上記の方法は、通常の DFA の実装とはかなり異なります。

私の質問は....

  1. 上記の方法でよろしいでしょうか?それに従うのは正しいですか?(それが機能する場合)
  2. 上記の方法でこれを実装する必要がある場合、どうすればそれを行うことができますか? 読みやすさを向上させるために別の DFA を構築しますか? または、このDFAをコメント、文字列を認識するDFAと組み合わせることができますか(状態の数を減らすため)
4

0 に答える 0