再帰の無限ループをエラーにしたいが

たとえば、PHPの正規表現(mb_ereg)で次のように指定します。

(?’foo’g’foo’d)

これは無限ループに陥るので構文エラーになります。

まあ、場合によってはそうならないこともありますが、処理を分けると面倒なのでSkRegExpでもこうしたいと考えています。

ところが、これが思ったより厄介です。

ぶっちゃけ、カンタンにできるだろうとはじめたところ、こんな時間になってしまいました。

つい今、パーサーで処理するのではなく、NFAへコンパイルする段階で処理した方が良さそうだと思いつきました。

^ や $ はコンパイルの段階で、普通の文字か、あるいはメタ文字かを判断しています。

それと同じ処理でやれば良さそうです。

まあ、やるのは後日ですが。せっかく時間があったんだから、もっと面白いことをやりたかったなあ。

コメントを残す

メールアドレスが公開されることはありません。