2016-07-21 5 views
0

フレックスREGEXオプティマイザはありますか?そこPerlモジュールと同様のものです:フレックスレクサーREGEXオプティマイザ

http://search.cpan.org/~rsavage/Regexp-Assemble-0.37/

は、残念ながらそれはLEX正規表現の構文をサポートしていません。ほとんど私が何をしたいのか

TOM(A|OV) 

は、事前にあなたのすべてに感謝する正規表現

TOMA|TOMOV 

を最適化するためのツールを持つことです。

答えて

0

これを行う必要はありません。 Flexは正規表現を単一の決定論的有限状態機械(FSM)にコンパイルし、非常に大きなスキャナ定義を伴うマイナーキャッシュ効果の他に、交替または繰返し演算子のパフォーマンス上のペナルティはありません。

フレックスはFSMを最小化しませんが、適用可能であれば、上記のキャッシュエフェクトとは別に、字句分析のスピードではなく、FSMテーブルのサイズを縮小します。

FSMが最小化されていない場合でも、NFAからDFAへの変換プロセスは、提案する特定の変換を実行します。その結果、続く2つのルールが正確同じ字句解析器生成:

  1. TOMA|TOMOV { /* do something */ } 
    
  2. TOM(A|OV) { /* do something */ } 
    

を本当のパフォーマンスの低下はありませんが、あなたは、次のことを避けるために試みるべきですこれはアクションコードを不必要に複製します:

また、this questionのディスカッションも参考になるかもしれません。

+0

同意;-)ありがとう;-) –

関連する問題