regexモジュール

BBv2のjamファイルでテストしつつバグをつぶしていったところ、ようやく次のメッセージまで辿り着きました。

error: missing native rule 'regex.transform'
error: or interface version of that rule is too low
error: your version of bjam is likely out of date
error: please get a fresh version from CVS.

というわけで、手始めにregexモジュールからネイティブルールの実装を開始しました。
regexのネイティブルールはtransformだけです。

rule transform ( list * : pattern : indices * )

listが変換対象、patternが正規表現、indicesは結果として使う部分式のインデックスです。
使い方は次のようになります。

import regex ;
ECHO [ regex.transform a b1 : ^([a-z]+)([0-9]*)$ : 1 2 ] ; # 「a b 1」を出力

BBv2の高速化の都合上、空の部分式は結果に含められません。


結局、regex.transformのチェックもパスしてmodulesモジュールの途中まで動くようになりました。
今日の差分
今日はここまで。