ファイルの内容を通訳(interpret)する最も簡単な方法は、 以下の 2 つの形式のいずれかを使用することです:
include mysource.fs s" mysource.fs" included
通常、 ファイルをインクルードする必要があるのは、 そのファイルがまだインクルードされていない場合(たとえば、 別のソース・ファイルなど)です。 その場合、 以下の 3 つの形式のいずれかを使用できます:
require mysource.fs needs mysource.fs s" mysource.fs" required
ソース・ファイルを通訳(interpret)してもスタックが変更されないようにソース・ファイルを作成することをお勧めします。
この方法で設計されたソース・ファイルは、 required
やそのファミリーと一緒に問題なく使用できます。 例:
1024 require foo.fs drop
ここでは、 引数 1024 (バッファ・サイズなど) を foo.fs に渡しています。 foo.fs
の通訳(interpret)にはスタック効果 ( n – n ) があり、 require
での使用が可能になります。 もちろん、
require されるファイルにこのようなパラメーターを指定する場合は、 最初の require
がすべての用途に適合することを確認する必要があります(つまり、 マスター・ロード・ファイルの早い段階で require
することになります)。
include-file
( i*x wfileid – j*x ) file “include-file”
ファイル wfileid の内容を通訳(interpret)します(テキスト・インタープリターを使用して処理します)。
included
( i*x c-addr u – j*x ) file “included”
文字列 c-addr u で指定される名前のファイルを include-file
します。
included?
( c-addr u – f ) gforth-0.2 “included?”
ファイル c-addr u が以前にインクルードされたファイルのリストにある場合にのみ true。 ファイルがロードされている場合、
たとえば foo.fs として指定されたのが Forth 検索パスのどこかで見つかった可能性があります。 include?
から true
を返すには、 (たとえ ./foo.fs であっても、 )ファイルへの正確なパスを指定する必要があります。
include
( ... "file" – ... ) file-ext “include”
file を include-file
する。
required
( i*x addr u – i*x ) file-ext “required”
既に include
(または required
) されてないなら、 addr u で指定した名前のファイルを
include-file
します。 現状では、
これは(パス(path)付きの)ファイル名を以前にインクルードしたファイルの名前と比較することによって機能します。
require
( ... "file" – ... ) file-ext “require”
file がまだインクルードされていない場合のみ、 include-file
します。
needs
( ... "name" – ... ) gforth-0.2 “needs”
require
のエイリアス。 他のシステム(Win32Forth など)に存在します。
\\\
( – ) gforth-1.0 “\\\”
ソース・ファイルの残りをEOFまでスキップする
.included
( – ) gforth-0.5 “.included”
インクルードされたファイルの名前をリストします。
sourcefilename
( – c-addr u ) gforth-0.2 “sourcefilename”
現在入力ソースとなっているソース・ファイルの名前。 結果は、 ファイルがロードされている間のみ有効です。
現在の入力ソースが(ストリーム)ファイルでない場合、 結果は未定義です。 Gforth では、 結果はセッション全体で有効です(ただし、
savesystem
などを跨いで有効ではありません)。
sourceline#
( – u ) gforth-0.2 “sourceline-number”
(ストリーム)ファイルから現在通訳(interpret)されている行の行番号。 最初の行は番号 1 です。 現在の入力ソースが(ストリーム)ファイルでない場合、 結果は未定義です。
required
の標準 Forth の定義は compat/required.fs で提供されます。