辞書にはシステムが備えているすべての Forth コマンドが含まれています。
表 4-15に辞書検索用のツールを示します。これらのツールの一部は、方法またはコマンドだけを検索処理の対象とするのに対して、その他のツールは (たとえば、変数や値をはじめとする) すべての種類のワードを対象とすることに注意してください。
表 4-15 辞書検索コマンド
辞書検索ツールの動作を理解するには、その前に、ワードがどのようにして見えるようになるかを理解する必要があります。ワードを定義するときにアクティブパッケージがあった場合は、新しいワードはその有効パッケージの方法になり、そのパッケージが有効のときしか見えません。dev、find-device というコマンドを使用して、有効パッケージを選択したり、変更することができます。コマンド device-end は、現在有効なパッケージの選択を解除して、有効パッケージをなくします。
ワードを定義するときにアクティブパッケージがなかった場合は、そのワードはグローバルに見ることができます。(つまり、特定のパッケージ専用ではなく、つねに使用可能です)。
辞書検索コマンドは、存在する場合、最初に有効パッケージのワードに対して検索し、次にグローバルに見えるワードに対して検索します。
Forth コマンドの only と also が、どのワードを見えるようにするかを制御します。
.calls を使用して、それぞれの定義に指定されたワードを使用しているすべての Forth コマンドを検索できます。.calls はスタックから実行トークンを取り出し、辞書全体を検索して、その実行トークンを使用しているすべての Forth コマンドの名前とアドレスのリストを生成します。次の例を参照してください。
ok ' input .calls Called from input at 1e248d8 Called from io at 1e24ac0 Called from install-console at 1e33598 Called from install-console at 1e33678 ok |
see は、
see thisword
の形式で使用すると、thisword のソースの「プリティプリント」リストを表示します。次の例を参照してください。
ok see see : see ⊆ [⊆] (see) catch if drop then ; ok |
see の使用上の詳細は、「Forth 言語逆コンパイラの使用方法」を参照してください。
sifting は入力ストリームから文字列を取り出し、辞書の検索順にすべての語を調べ、次の画面に示すように、指定された文字列を含むすべてのコマンド名を見つけます。
ok sifting input In vocabulary options (1e333f8) input-device In vocabulary forth (1e2476c) input (1e0a9b4) set-input (1e0a978) restore-input (1e0a940) save-input (1e0a7f0) more-input? (1e086cc) input-file ok |
words は辞書内のすべての見えるワード名を、最も新しい定義から先に表示します。ノードが現在 (たとえば dev で) 選択されている場合は、words によって生成されるリストはその選択されているノードのワードだけに限定されます。