bjam_win その13

bjamインタプリタの実装を検討中です。
bjamの実行の単位/スコープとしては、

  • グローバル
  • ({〜}による)明示的なブロック
  • if/for/while/switchのブロック
  • rule(関数に相当)

などがあります。
パースの段階でこれらを文字列のまま保存しておいて、必要に応じて実行用のパーサーに渡す感じで考えています。


最初は一つのパーサーでブロックの切り出しと実行の両方を行い、no_actions_dディレクティブで動作を切り替えようかと思ったのですが、だんだん頭が混乱してきたのでやめました。
とりあえずは、なるべく素直な実装をする方向で。