コンピレーションステートとインタープリテーションステートの混用
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/03/10 20:29 UTC 版)
「Forth」の記事における「コンピレーションステートとインタープリテーションステートの混用」の解説
ここに 実行されると単一の文字 Q を発行するワード EMIT-Q の定義がある。 : EMIT-Q 81 (the ASCII value for the character 'Q') EMIT ; この定義は Q のASCII値 (81) を直接を使うことで書かれている。括弧の間の文字列はコメントで、コンパイラに無視される。ワード EMIT はデータスタックから値をとり、対応する文字を表示する。 次の EMIT-Q の再定義は、ワード[(左大括弧)、](右大括弧), CHAR、LITERAL をインタプリタステートを一時的に切り替えるために使っており、文字 Q のAscii値を計算し、コンピレーションステートを返し、計算した値を現在のコロン定義に追加する。 : EMIT-Q [ CHAR Q ] LITERAL EMIT ; 構文解析ワード CHAR は空白で区切られたワードをパラメータとしてとり、データスタック上のその最初の文字の値を置く。ワード [CHAR] は CHAR のイミディエイトバージョンである。[CHAR]を使って、EMIT-Q の定義例は次のように書くことができる。 : EMIT-Q [CHAR] Q EMIT ; \ Emit the single character 'Q' この定義はコメントを書くために \(バックスラッシュ)を使っている。 CHAR と [CHAR]の両方は ANS Forth では事前に定義される。IMMEDIATE と POSTPONE と使って、[CHAR] はこのように定義することができる。 : [CHAR] CHAR POSTPONE LITERAL ; IMMEDIATE
※この「コンピレーションステートとインタープリテーションステートの混用」の解説は、「Forth」の解説の一部です。
「コンピレーションステートとインタープリテーションステートの混用」を含む「Forth」の記事については、「Forth」の概要を参照ください。
- コンピレーションステートとインタープリテーションステートの混用のページへのリンク