2011-11-30 2 views
6

デフォルトでは、flexは最長一致ルールを使用します。 この動作をオーバーライドして最短シーケンスと一致させる方法はありますか?flex(lexer)で最短一致ルールを有効にする方法は?

は、Flexのマニュアルで、あなたに

+0

いいえ、あなたがそれを持っていたらあなたはそれを望んでいません。たとえば、ほとんどのレクサー(確かにすべての鉱山)がキャッチオールルールで終わっているのは、多くの場合です。 return yytext [0]; '。それが何かをした唯一のルールになるでしょう。 – EJP

答えて

0

This pageをありがとう、それはスキャナではなく、パーサーですので、それは任意の非貪欲な演算子を持っていないと言うと、正規表現が不足している機能を追加するために使用することができ示唆しています。

+0

私は貪欲な演算子を意味するわけではありません。あなたが完全に別の正規表現をいくつかの文字列の同じ接頭辞にマッチさせると、デフォルトではレクサーが最も長いものを選択します。私が必要とするのは、短いものを取り上げてリセットし、再度マッチングを開始することです。 – VilleDePommes

関連する問題