作成している言語の実行モデル

いま作成している言語。仮に Zui と命名する。
その実行モデルとして現状考えているものをメモする。

  1. ワードを読み込む。
  2. 読み込んだワードがマクロの場合
    1. ワードを実行。実行結果はスタックのトップにリストでつむ。
    2. スタックのトップのリスト要素それぞれついて
      1. 実行モードなら、2から実行。
      2. 実行モードでないなら、スタックにつむ。
  3. 読み込んだワードがマクロではない場合
    1. 実行モードなら、実行。
    2. 実行モードでないなら、スタックにつむ。

実行中の実行モードが切り替わる場合があるが、1の時点の実行モードで判定する。

実行モードでない場合の「スタックにつむ」は Forth での , によるワードコンパイルにあたる。

  1. コロン定義やクォーテーションな始めにスタック上に開始記号を置いておく。
  2. コロン定義中やクォーテーション中のワードはスタックにつんでおく。
  3. コロン定義やクォーテーションの終りで開始記号までスタックからポップする。