更新履歴
主な更新履歴は以下の通りです。
version 0.4.0.0
-
不具合修正
- Borland C++ Compilerでコンパイルすると、マッチングのオフセットがおかしな値になることがある不具合を修正
- 後方一致の空文字列パターンがテキストにマッチしない不具合を修正("a*$"が"bbbb"にマッチしない等)
- 集合内部で文字クラスやエスケープシーケンスを使うと構文エラーが起きることがある不具合を修正
-
機能追加
- 最短(lazy)マッチに対応
- エラーコードからエラーメッセージを生成する関数 mercury::error_message() を追加
- NFAの状態数の上限を設定できるようにし、状態数が多くなりすぎたら例外をスローするように変更
- エスケープシーケンス"\C"を追加
- STL風に、regex_traits::char_type, basic_regex::size_type, basic_regex::value_type, basic_regex::traits_typeを追加
-
仕様変更
- "nfa.h"を"_regex/"ディレクトリに移動(汎用性を失い、完全に正規表現用のモデルとなったため)
- "dfa.h"を削除し、NFA→DFA変換ルーチンを正式にサポートから除外(最短マッチ演算子の導入により、DFAの表現能力を超えたため)
- "parse_tree.h"と"_regex/parse_node.h"の内容を統合し、"_regex/parse_tree.h"に移動("nfa.h"の移動に伴う変更)
- 正規表現パターンとテキストによっては、必ずしも最長マッチにならないことがある(例:パターン"aa|a"でテキスト"aa"を検索すると、"a"にマッチする。これは不具合ではなく仕様)
-
機能改善
- NUL終端文字列を指定したときのパフォーマンスを、それ以外(長さ指定文字列、コンテナ、終端イテレータ指定)とほぼ同じにした
- 検索速度が向上(全パターン検索を廃止したため)
- 構文木の作成時(rule_xxx())に、いちいち例外をキャッチしなくても済むように std::auto_ptr<> に対応
- BCCとDMCで、文字列として文字配列やポインタを普通に渡せるようにした
-
その他
- Digital Mars C++に対応
- ヘルプファイルに「使用上の注意」を追加
- 参考資料の"Henry Spencer"の綴りが間違っていたので修正(ゴメンナサイ)
version 0.3.0.0
-
機能追加
- エスケープシーケンス"\u", "\U", "\l", "\L", "\d", "\D", "\s", "\S", "\w", "\W", "\a", "\r", "\n", "\f", "\t", "\e"を追加
- 行頭および行末にマッチするメタ文字"^", "$"を追加
- 上記追加に伴い、パターンの先頭に"^", 末尾に"$"がない場合は部分一致検索を行うように変更
-
仕様変更
- マッチング関数 regex::match() で、マッチング情報を得られるようにした
- コンストラクタ以外でパターンのコンパイルを行えるようにした(関数 compile() および演算子 operator= を追加)
-
その他
- Borland C++ Compiler 5.82に対応
- ソースファイルとヘルプファイルを別ディレクトリに分離
version 0.2.0.0
-
機能追加
-
以下のメタ文字を追加
- 任意の1文字(.)
- 集合([ ])
- 補集合([^ ])
- 文字クラス([:alpha:]等)
- 量化回数指定演算子({n}, {n,}, {m,n})
-
仕様変更
- DFAエンジンからNFAエンジンに変更(NFA→DFA変換関数に不具合が見つかったため)
- nfa::can_accpet()の実装を、再帰からスタックに変更
version 0.1.1.0
-
不具合修正
- basic_regexのコンストラクタ内で例外が発生した場合に構文木が解放されない事がある不具合を修正
- 整数型以外にも、いくつかの要件さえ満たせばあらゆる型を「文字型」として使えるように変更(最初は「どんな文字型でも使える」という触れ込みだったので、仕様変更ではなくバグフィックスとして扱う)
-
機能追加
- メタ文字に'+'(1回以上の繰り返し), '?'(0回または1回の繰り返し)を追加
- ヘルプファイルに「使える文字型・データ構造」の解説を追加
-
仕様変更
- 正規表現の構文エラー時にスローする例外をmercury名前空間の直下に移動
- regex_traitsクラスの定数を、「定数を返す関数」に置換
- ε遷移用の文字を不要にした(ε遷移専用のマップを内部的に持つことにした)
version 0.1.0.0
Copyright© 2008-2009 しまたろ