!!!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はプログラムの終了にしておく。今決めた。 [[戻る|Forthを作ってみる]] [[前へ|Forthを作ってみる / スタックの内容を表示する]] [[次へ|Forthを作ってみる / プログラム配列を走査する]] {{adsence}}