Forth は、既存ワードの処理から新しいコマンドワードを作成するための簡単な手段を提供します。表 4-4に、利用者定義作成用の Forth ワードを示します。
表 4-4 コロン定義ワード
コマンド |
スタックダイアグラム |
説明 |
---|---|---|
( -- ) |
ワード new-name の新しいコロン定義を開始します。 |
|
; |
( -- ) |
コロン定義を終了します。 |
新しいコマンドの定義は、: を用いて定義することから、コロン定義と呼ばれます。たとえば、任意の 4 つの数値を加算し、結果を表示する新しいワード add4 を作成します。定義は、たとえば次のように作成できます。
ok : add4 + + + . ; ok |
; (セミコロン) は、(+ + + .) の操作を行う add4 の定義する定義の終わりを示します。3 つの加算演算子 (+) は 4 つのスタック項目を 1 つの和に変えてスタックに残します。次に . はその結果を削除し、表示します。次に例を示します。
ok 1 2 3 3 + + + . 9 ok 1 2 3 3 add4 9 ok |
これらの定義はシステムをリセットすると消去されます。よく使う定義を保存するには、それらをスクリプトにする、つまりテキストファイルにして、ホストシステムにそれらの定義を保存します。このテキストファイルは、以降、必要に応じて読み込みできます。(ファイルの読み込みについての詳細は、第 5 章「プログラムの読み込みと実行」を参照してください。)
ユーザーインタフェースから定義を入力すると : (コロン) を入力してから ; (セミコロン) を入力するまで、okプロンプトが、] (右角括弧) プロンプトになります。たとえば、add4 の定義は次のように入力できます。
ok : add4 ] + + + ] . ] ; ok |
複数行の定義に ] プロンプトを使用するのは、サン・マイクロシステムズ社の実装の特徴です。
スタックダイアグラムはワードの正しい使い方を示します。したがって、そのスタック効果がない場合 (--) であっても、作成する定義ごとに必ずスタックダイアグラムを入れてください。複雑な定義内にはわかりやすいスタックコメントを使用してください。それによって、実行のフローを容易に追跡できます。たとえば、add4 を作成するには、次のように定義できます。
: add4 (n1 n2 n3 n4 -- ) + + + . ; |
または、次のようにも定義できます。
: add4 (n1 n2 n3 n4 -- ) + + + (sum ) . ( ) ; |
「(」(左側括弧) は、それ以降「)」(右側括弧) までのテキストを無視することを意味します。ほかのすべての Forth ワードと同様に、左側括弧の右側には 1 つまたはそれ以上の空白文字が必要です。