1

グラマー ファイルから antlr を使用してレクサーを生成すると、一連の文字列が 16 進形式で生成されることに気付きました。

これらの文字列は、次のトークンを予測するために DFA によって使用されます。

これらの文字列は何を意味し、どのように生成されますか。

私が参照している文字列は、生成されたレクサーに次のように表示されます (コンストラクターで DFA に渡されます)。

static final String DFA1_eotS = ....

static final String DFA1_eofS = ....

static final String DFA1_minS = ....

static final String DFA1_maxS = ....

static final String DFA1_acceptS = ....

static final String DFA1_specialS = ....                                                

static final String[] DFA1_transitionS = ....

編集:

私たちを始めるために、私は自分の質問で答え始めます

acceptS[i] = 可能なトークンの識別子を含む配列 (多くの -1 値が含まれている理由はわかりません)

4

1 に答える 1

1

DFA_minS、DFA_maxSは、状態テーブルを移動するときに間に入る可能性のある文字の範囲を指すと思います

DFA_transitionS . 私は状態テーブルだと思います

DFA_specialsSセマンティック述語をルールに追加することと関係があると思います。

DFA_acceptSは、DFA が受け入れるトークンを指定するスイッチのケース値のセットのようです

注:これらが正しいかどうか、およびそれらがどのように生成されるかを知りたい

于 2011-04-06T16:14:39.490 に答える