MATCH再び

bjamの文法はほとんど実装できたので、組み込みルールを実装しています。
今日はGLOB、GLOB-RECURSIVELY、MATCHを実装しました。
GLOB、GLOB-RECURSIVELYの差分
MATCHの差分
どれも旧バージョンで一度実装していますが、POSIX対応で若干修正が入っています。


MATCHで使う正規表現ですが、ドキュメントによるとegrepと同じものとなっています。
しかし実際にはegrepのものより機能は少ないようです。(というか規格化前の古い動作に従っている模様)
ソースをざっと見て確認した限り、"{2}"のような回数指定の繰り返しや"[:space:]"などの名前付き文字クラスはサポートされていません。
厳密には正しくありませんが、実装にはとりあえずBoost.Regexのextendedスタイルを使っています。
この辺の微妙な仕様の違いがあるのが正規表現の嫌なところです。