続 正規表現の差異

またもや正規表現の仕様の違いでハマりました。
Bjamの正規表現はドキュメントにはegrepのものと書いてあって、実際には拡張POSIX表現の一部を含んでいます。
それで、Boost.Regexのフォーマットにextendedを指定していたのですが、重大な違いがありました。
それは拡張POSIX表現は最右最長一致(leftmost longest match)で、bjamは深さ優先探索一致(depth first search match)であるということです。
↓この動作の違いはここにも書かれています。
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2003/n1429.htm


この問題のため、フォーマットの指定をECMAScript(デフォルト)に変更しました。
さらにbjamの正規表現エスケープシーケンスが「\<」と「\>」しか使えないので、それ以外の「\」は「\\」で置換することにしました。
差分


これで正規表現関連のエラーは出なくなりました。
actions文にも対応して、現在project.jamの途中まで動いています。
あとちょっとだと思うんですけど、なかなか終わりません。