- 追加された行はこのように表示されます。
- 削除された行は
このように表示されます。
!!!Forthを実行してみる?
さて、以下の準備はできた。
*スタック(データ構造)
*値をスタックに積む処理
*スタックから値をとる処理
*加算処理
*表示処理
では実行してみよう。と思ったができない。
プログラム
4 5 + .
を内部的に表現できていないのだった。
すっかり忘れていた。
プログラムとして表現するには、文字列"4 5 + ."をコード化して表現すればよい。
次のようにコード化する。
,コード化対象, コード
,値をスタックに積む処理(push) ,-1
,加算処理(plus) ,-2
,表示処理(print) ,-3
,値4 ,4
,値5 ,5
スタックから値をとる処理(pop)はコード化していないが、popはプログラム上で単独で現れないためである。
コード化すると、プログラムは配列として表現できる。
プログラムデータ構造は、以下の変数を用いる。
char prog[100];
int prog_cnt;
prog[]にはコード化されたプログラムが保存され、prog_cntはprog[]からコードを取り出すためのインデックスの役割を担う。
コード化されたプログラム"4 5 + ."は次のような配列データとなる。
-1, 4, -1, 5, -2, -3
プログラム配列prog[]に代入してみる。
prog[0] = -1;
prog[1] = 4;
prog[2] = -1;
prog[3] = 5;
prog[4] = -2;
prog[5] = -3;
prog[6] = 0;
コード0はプログラムの終了にしておく。今決めた。
[[戻る|ForthImplementation]] [[前へ|DisplayingStack]] [[次へ|ScanningProgramCode]]
{{adsence}}
[[Forthを作ってみる / Forthを実行してみる?]]に移動しました。