Next: , Previous: , Up: Forth Words   [Contents][Index]


6.11 Interpretation and Compilation Semantics

(名前付き)ワード(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”)が表示されることに注意してください。


Footnotes

(18)

標準の用語では、 「現在の定義に追加する」と言います

(19)

標準の用語でいうと、 デフォルトのインタプリタ機能はその実行機能です。 デフォルトのコンパイル機能は、 その実行機能を現在の定義の実行機能に追加します