名前付きワードのコンパイル機能(compilation semantics)は、 2 つのセル w xt
で構成されるコンパイル・トークン(compilation token)によって表されます。 一番上のセル xt は実行トークンです。
コンパイル・トークンによって表されるコンパイル機能は、 execute
で実行できます。 これは、 コンパイル・トークン全体を消費し、
コンパイル・トークンが表すコンパイル機能(compilation semantics)によって決定される追加のスタック効果を伴います。
現時点では、 コンパイル・トークンの w 部分は実行トークンで、 xt 部分は execute
または
compile,
のいずれかを表します22。 ただし、 必要な場合を除き、 この知識に頼らないでください。 Gforth の将来のバージョンでは、
普通でない(unusual)なコンパイル・トークン(リテラルのコンパイル機能を表すコンパイル・トークンなど)が導入される可能性があります。
たとえば、 if
のコンパイル・ークンは、 name>compile
を使用した標準的な方法(例: `if
name>compile
)で取得できますが、 コンパイル・トークンを取得するためのパース・ワードもあります:
[COMP']
( compilation "name" – ; run-time – w xt ) gforth-0.2 “bracket-comp-tick”
コンパイル・トークン w xt は、 name のコンパイル機能(compilation semantics)を表します。
COMP'
( "name" – w xt ) gforth-0.2 “comp-tick”
コンパイル・トークン w xt は、 name のコンパイル機能(compilation semantics)を表します。
execute
を使用して、 コンパイル・トークンによって表されるコンパイル機能(compilation
semantics)を実行できます。 postpone,
を使用してコンパイル機能(compilation
semantics)をコンパイルできます。 つまり、 ``x name>compile postpone,
は
postpone x
と同等です。
postpone,
( w xt – ) gforth-0.2 “postpone-comma”
コンパイル・トークン w xt で表されるコンパイル機能(compilation semantics)をコンパイルします。
これは、 ワードのコンパイル機能(compilation
semantics)に依存します。 ワードにデフォルトのコンパイル機能(compilation semantics)がある場合、 xt は
compile,
を表します。 それ以外の場合(たとえば、 即実行ワードの場合)、 xt は execute
を表します