メッセージ連鎖を書くforthでのifの実装を考え中

中途半端ですが、、、。

1 if{a else (b)}
というイメージのことをやりたいって事になると思います。

1からifをメソッドを取り出します。その後の式は
a else (b)なわけですが、ここですぐに、aとbは評価したくありません。
式オブジェクトを生成して、ifメソッドに渡したいです。
{}は遅延するとすると案外よさそうな気がするのでそう考えて見ます。
{のバイトコードは、}までのバイトコードをあらわすオブジェクトとします。
バイトコードというか式ですね。tclでいうとただの文字列ですが。

1if{a else (b);};,[] 初期状態
if{a else (b);};,[1] 1をpush
{a else (b);};,[1,if] ifをpush
};,[functionExecTrueBlock{a else(b)}] 1からifを取り出し、{に対応する}まで読み込んだメソッド呼び出しするか、あるいは、式オブジェクト生成モードになって、
式オブジェクトを作る。
といっても、式オブジェクトというのはバイトコードそのものであるので、
ムムムです。が、elseは式オブジェクト生成のメソッドとかとすると、
1個目の処理と2個目の処理の2つのポインタと終了ポインタを作る感じだろう。
a,[;,;] }で、遅延関数を実行する。今回のばあいはaを評価する。
って感じです。感じって何よって感じですけどwww
感じばかりですいません。
適当に実装することを考えると、
一度スタックに戻りアドレスを入れて、実行する。で、リターンする記号が;であれば、;があるとリターンします。a;else(b;)とならないといけない感じです。(なの?なんで?
とかいろいろあります。1 if{a;b;}がほんとはよいのかもしれませんし、
1 if({a;}{b;})のほうがよいのかもしれません。