フレックスREGEXオプティマイザはありますか?そこPerlモジュールと同様のものです:フレックスレクサーREGEXオプティマイザ
http://search.cpan.org/~rsavage/Regexp-Assemble-0.37/
は、残念ながらそれはLEX正規表現の構文をサポートしていません。ほとんど私が何をしたいのか
TOM(A|OV)
は、事前にあなたのすべてに感謝する正規表現
TOMA|TOMOV
を最適化するためのツールを持つことです。
フレックスREGEXオプティマイザはありますか?そこPerlモジュールと同様のものです:フレックスレクサーREGEXオプティマイザ
http://search.cpan.org/~rsavage/Regexp-Assemble-0.37/
は、残念ながらそれはLEX正規表現の構文をサポートしていません。ほとんど私が何をしたいのか
TOM(A|OV)
は、事前にあなたのすべてに感謝する正規表現
TOMA|TOMOV
を最適化するためのツールを持つことです。
これを行う必要はありません。 Flexは正規表現を単一の決定論的有限状態機械(FSM)にコンパイルし、非常に大きなスキャナ定義を伴うマイナーキャッシュ効果の他に、交替または繰返し演算子のパフォーマンス上のペナルティはありません。
フレックスはFSMを最小化しませんが、適用可能であれば、上記のキャッシュエフェクトとは別に、字句分析のスピードではなく、FSMテーブルのサイズを縮小します。
FSMが最小化されていない場合でも、NFAからDFAへの変換プロセスは、提案する特定の変換を実行します。その結果、続く2つのルールが正確同じ字句解析器生成:
TOMA|TOMOV { /* do something */ }
TOM(A|OV) { /* do something */ }
を本当のパフォーマンスの低下はありませんが、あなたは、次のことを避けるために試みるべきですこれはアクションコードを不必要に複製します:
また、this questionのディスカッションも参考になるかもしれません。
同意;-)ありがとう;-) –