2017-05-01 9 views
0

私は好奇心のためにおもちゃの言語を書いています。私は、いくつかの正規表現を使用してトークンを作成するための関数レクサーを作成しました。ループはレクサーの正規表現よりも効率的ですか?

パフォーマンスの観点からは、文字コードごとにソースコードをループして、トークンを見つけ出すのがより速く/より効率的ですか、正規表現に固執すべきですか? 「適切な」レクサーがどのように実装されているのか不思議です。

+2

本当に実装方法によって異なります。間違って記述されたループは、正規表現よりも遅くなる可能性がありますが、慎重に最適化されたループはおそらく高速になります。おもちゃの言語については、あなたのために簡単なものから始めて、パフォーマンスが十分でない場合には他のアプローチを試みます。 – svick

答えて

0

私たちが使用するコンピュータのアーキテクチャが与えられると、正規表現はループで実装されます。コードが構成されている場合

は、それが正規表現と同じ言語を認識しDeterministic Finite Automatonの状態を表すswitchのケースで、whileステートメント内switchの文のようなものの組み合わせになります。 後藤が許可されている

場合、実装は、一般的な正規表現ライブラリが何ができるかよりもはるかに効率的な場合があります。

特定の効率が必要な場合を除いて、正規表現ライブラリを使用すると効率的で、プログラミング(デバッグ)時間を大幅に節約できます。

+0

私は[Grako](https://pypi.python.org/pypi/grako)と書いており、Pythonの標準ライブラリで根底にある 're'モジュールに行きました。 – Apalala

関連する問題