bjam_win その12

bjam_winのパース精度を上げるため、BoostのJamfile.v2の傾向を調査しました。
ターゲット名に直接関係のあるルール32個中14個は、

  • ルール名にtestやrun等を含む
  • 仮引数の名前にnameやsources等を含む

もので、わずかにターゲット名が異なるのが15個でした。
これらはある程度特殊な処理を追加することで対応可能です。


しかし、残り3個はglobルールとforループを使用しているもので、インタプリタとしてJamfileを正しく処理しない限り対応できません。
とはいえ、bjamの処理をそのまま実装してしまうと、大量のjamファイルを処理するためパースに時間がかかりすぎます。
となると、BBv2の一部の機能をパーサーに組み込んで、対象Jamfile内の変数/ルールだけを対象にインタプリタとして実行させる感じがよさそうです。
site-config.jam、user-config.jamあたりまで対応できればなお良しですが、どこまで実装できるやら。