トップ 差分 一覧 Farm ソース 検索 ヘルプ RSS ログイン

Forthを作ってみる / ワード名を登録する

ワード名を登録する

まずワード名を保存する領域を作っておく。

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")のように使う。その名前が必要なくなったらどうするかは考えていない。

戻る 前へ 次へ