bjam_win その13
bjamインタプリタの実装を検討中です。
bjamの実行の単位/スコープとしては、
- グローバル
- ({〜}による)明示的なブロック
- if/for/while/switchのブロック
- rule(関数に相当)
などがあります。
パースの段階でこれらを文字列のまま保存しておいて、必要に応じて実行用のパーサーに渡す感じで考えています。
最初は一つのパーサーでブロックの切り出しと実行の両方を行い、no_actions_dディレクティブで動作を切り替えようかと思ったのですが、だんだん頭が混乱してきたのでやめました。
とりあえずは、なるべく素直な実装をする方向で。