辞書にはシステムが備えているすべての Forth コマンドが含まれています。表 4-15 に辞書検索用のツールを示します。これらのツールの一部は、方法またはコマンドだけを検索処理の対象とするのに対して、その他のツールは (たとえば、変数や値をはじめとする) すべての種類のワードを対象とすることに注意してください。
表 4-15 辞書検索コマンド
コマンド |
スタックダイアグラム |
説明 |
---|---|---|
' name |
( -- xt ) |
指定されたワードを辞書から検索します。実行トークンを返します。外部定義を使用します。 |
['] name |
( -- xt ) |
内部、外部のどちらの定義でも使用される点以外は、' と同じです。 |
.calls |
( xt -- ) |
実行トークンが xt を使用するすべてのコマンドのリストを表示します。 |
$find |
( str len -- xt true | str len false ) |
str len によって指定されるワードを探します。見つかった場合は、xt と true をスタックに残します。見つからなかった場合は、名前の文字列と false をスタックに残します。 |
find |
( pstr -- xt n | pstr false ) |
pstr によって指定されるワードを探します。見つかった場合は、xt と true をスタックに残します。見つからなかった場合は、名前の文字列と false をスタックに残します。 (パックされた文字列を使用しないようにするため、$find を使用するよう推奨します)。 |
see thisword |
( -- ) |
指定されたワードを逆コンパイルします。 |
(see) |
( xt -- ) |
実行トークンが xt であるワードを逆コンパイルします。 |
$sift |
( text-addr text-len -- ) |
text-string を含むすべてのコマンド名を表示します。 |
sifting text |
( -- ) |
text を含むすべてのコマンド名を表示します。text 内には空白文字はありません。 |
words |
( -- ) |
次に説明するように辞書内のすべてのワードを表示します。 |
辞書検索ツールの動作を理解するには、その前に、ワードがどのようにして見えるようになるかを理解する必要があります。ワードを定義するときにアクティブパッケージがあった場合は、新しいワードはその有効パッケージの方法になり、そのパッケージが有効のときしか見えません。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 によって生成されるリストはその選択されているノードのワードだけに限定されます。