(名前付き)ワード(word)のインタープリター機能(interpretation semantics)は、
テキスト・インタープリターがインタープリター状態でワードに遭遇したときに行うことです。 これは他の文脈でも表れます。 たとえば、 '
word
によって返される実行トークンは、 word のインタープリター機能(interpretation
semantics)を識別します(つまり、 ' word execute
は、 word
のインタープリター状態でのテキスト通訳(interpretation)と同等です)。
(名前付き)ワード(word)のコンパイル機能(compilation semantics)は、
テキスト・インタープリターがコンパイル状態でワードに遭遇したときに行うことです。 これは他の文脈でも表れます。 たとえば、 POSTPONE
word
は、 word のコンパイル機能(compilation
semantics)コンパイルします18。
ほとんどのワードにはデフォルトのコンパイル機能(compilation semantics)があります。 つまり実行機能(execution
semantics)(スタック効果 ( -- )
)をコンパイルします。 ただし、多くのワードが他のコンパイル機能(compilation
semantics)を持っていて、 その個々のワードについては文書化されています(スタック効果を含む)。
標準では、 実行機能(execution semantics)についても述べています。 標準では、 両方が定義されている場合はインタープリター機能(interpretation semantics)と異なることはありませんが、 一方が定義されていない、 または、 両方とも定義されていない場合もあります。 Gforth ではインタープリター機能(interpretation semantics)と実行機能(execution semantics)には違いがないため、 これらの用語は同じ意味で使用されます。
Gforth (1.0 以降)では、 すべてのワードに インタープリター機能/実行機能 が定義されています。
標準でインタープリター機能も実行機能も定義されていない多くのワード(if
など)については、 Gforth の
インタープリター機能/実行機能 がコンパイル機能を実行します。
標準では、 実行機能はデフォルトでインタープリター機能とコンパイル機能を定義するために使用されます。
デフォルトでは、ワードのインタープリター機能はその実行機能を execute
し、 ワードのコンパイル機能はその実行機能を
compile,
します19。
名前無しワード(see Anonymous Definitions)は、 テキスト・インタープリターまたはチック(tick)または
postpone
では検出できません。 このようなワードはその xt (see Tokens for Words)
によって表され、 この xt が execute
されたときは、 その実行機能が呼び出されます。
あなたは、 最後に定義されたワードの機能(semantics)を変更できます:
immediate
( – ) core “immediate”
ワードのコンパイル機能を、 その実行機能を実行するように設定します。
compile-only
( – ) gforth-0.2 “compile-only”
最後の定義をコンパイル専用としてマークします。 その結果、 テキスト・インタプリタと '
は、
そのようなワードに遭遇すると警告を発します。
restrict
( – ) gforth-0.2 “restrict”
compile-only
の同義語(synonym)
慣習により、 デフォルト以外のコンパイル機能を持つワード(即実行ワードなど)は、多くの場合、
名前が括弧(brackets;角括弧)で囲まれています(例: [']
see Execution token)。
注意: compile-only のワードにチック(tick)('
)を付けると、警告(“<word> is
compile-only”)が表示されることに注意してください。