SkRegExp次は?

SkRegExpに、久しぶりに触りました。

今やろうと思っているのは、照合エンジンを別クラスにすることです。

正規表現マッチの仕事は TSkRegExp.IsMatch 以下のメソッドで行っています。

この部分を別のクラスにして、TREMatchEngine のような抽象クラスから継承します。そうすれば照合エンジンを切り替えて使うことができるというアイデアです。

今の照合エンジンは従来型 NFA エンジンですが、次に搭載したいのは純粋な DFA エンジンです。

一気に NFA/DFA ハイブリッドエンジンに行く自信はないので、まずは普通のDFAエンジンからやります。

文法は NFA に比べると貧弱になりますが、用途によっては DFA だけで足りる部分もあると思います。DFA はそれ自体で高速だし、また、幾何級数的マッチが起こらないこともメリットになるかもしれません。

ユーザーが正規表現を入力する場合、幾何級数的マッチな正規表現が入力される可能性は否定できません。拙作の返信屋もその種のアプリなので、文法を凝るより安定性を取った方が良いかもしれないと思いました。

まあ、いずれにせよ、まだ、別クラス化は始まったばかりです。

なお、DFA の実装自体は NFA よりははるかにカンタンそうです。

コメントを残す

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