LoginSignup
4
1

More than 3 years have passed since last update.

aho-corasick 0.7.6 コードリーディング

Posted at

aho-corasick クレイトの現在の最新バージョン (0.7.6) のコードリーディングをしました。

モジュール図

aho-corasick-0.7.6-mods.png

各モジュールの責務

docs.rs にあるのは詳細を省く。

packed

ベクトル化した探索の実装

state_id

状態の番号を表す型である StateID トレイトの定義

error

エラー型 (error::Error, error::Result) の定義

classes

u8 の同値類を表現する classes::ByteClasses の定義。これにより大文字小文字を同一視した探索などができる。

buffer

u8 ロールバッファ (buffer::Buffer) の定義

prefilter

マッチがありえない時にフィルタする機能を持つ prefilter::Prefilter トレイトの定義。偽陰性 (マッチがあるのにないと主張すること) は許されない

automaton

Automaton トレイトの定義

nfa

NFA (非決定性有限オートマトン) の定義

dfa

DFA (決定性有限オートマトン) の定義、NFA -> DFA の変換 (決定化) 関数 Builder::build の実装

ahocorasick

公開インタフェイスである AhoCorasick, AhoCorasickBuilder などの定義

ソースコード

モジュール図 (dot) https://gist.github.com/koba-e964/5fa51a9426061d027142d55c7542acc7

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1