- 追加された行はこのように表示されます。
- 削除された行は
このように表示されます。
!!!ワード名を登録する
まずワード名を保存する領域を作っておく。
char word_heap[100]; /* ワード名登録領域 */
ワード名を登録するには、word_heapの先頭から領域を少しずつ分けてもらう。
領域内のワードは、文字終端記号(0x0)で区切られている。
最初はすべて未使用領域であり、ワード名を登録する必要が生じたときに、空き領域を先頭から少しずつ使っていく。
なので、未使用領域の先頭位置を保存する変数が必要である。
char word_heap_index; /* ワード名登録領域の未使用領域の先頭を指す */
ワード名登録関数は以下の通りである。
/* ワード名を登録する */
char reg_word_name(char *str)
{
char reg_pos = word_heap_index;
/* コピーする */
while (*str != '\x0') {
word_heap[word_heap_index++] = *str++;
}
/* 文字終端をつける */
word_heap[word_heap_index++] = '\x0';
/* 登録時の先頭位置を返す */
return reg_pos;
}
先のワード名hogeを登録するには、reg_word_name("hoge")のように使う。
その名前が必要なくなったらどうするかは考えていない。
[[戻る|ForthImplementation]] [[前へ|ImplementingDefineWord]] [[次へ|RegistingWordProcedure]]
[[戻る|Forthを作ってみる]] [[前へ|Forthを作ってみる / ワード定義を実装する]] [[次へ|Forthを作ってみる / 処理内容を登録する]]
{{adsence}}