1

JFlex を使用してパーサーを構築しようとしていますが、非常に基本的な問題が発生します。このトークンが欲しい

[A-Za-z]+_N$ { System.out.println("Noun"); }

「car_N」を「名詞」として認識させ、「car_NN」は認識させません。しかし、使用しても機能しません

[A-Za-z]+_N { System.out.println("Noun"); } 

「car_N」は認識されますが、「car_NN」は「car_N」も返します。これは私が望むものではありません。

ここにいる誰かが助ける方法を知っているのだろうか?

JFlex および Flex の先読み記号 '$' が機能していないようです

4

1 に答える 1

4

「$」の意味を誤解していると思います。先読みとして、テキストの行末 (ハードライン ブレーク) でのみ一致します。そのため、完全に正常に動作します。ただし、行の最後にある car_N のインスタンスを除いて、car_N と car_NN を区別することはできません。おそらく、次のような先読みが本当に必要な場合があります。

[A-Za-z]+_N/[^A-Za-z]
于 2011-11-06T04:29:38.947 に答える