作成している言語の実行モデル
いま作成している言語。仮に Zui と命名する。
その実行モデルとして現状考えているものをメモする。
- ワードを読み込む。
- 読み込んだワードがマクロの場合
- ワードを実行。実行結果はスタックのトップにリストでつむ。
- スタックのトップのリスト要素それぞれついて
- 実行モードなら、2から実行。
- 実行モードでないなら、スタックにつむ。
- 読み込んだワードがマクロではない場合
- 実行モードなら、実行。
- 実行モードでないなら、スタックにつむ。
実行中の実行モードが切り替わる場合があるが、1の時点の実行モードで判定する。
実行モードでない場合の「スタックにつむ」は Forth での , によるワードコンパイルにあたる。
- コロン定義やクォーテーションな始めにスタック上に開始記号を置いておく。
- コロン定義中やクォーテーション中のワードはスタックにつんでおく。
- コロン定義やクォーテーションの終りで開始記号までスタックからポップする。