Next: , Previous: , Up: Other I/O   [Contents][Index]


6.20.12 Substitute

これは単純なテキスト・マクロ置換機能です。 "text %macro% text" の形式のテキストが処理され、'%' で囲まれたマクロ変数が関連する文字列に置き換えられます。 2 つの連続する % は 1 つの % に置き換えられます。 マクロは特定のワードリストで定義され、実行時に文字列を返します。 標準では、 マクロを宣言する方法が 1 つだけ、 replaces のみ定義されています。 これは文字列を返すだけのマクロを作成します。

macros-wordlist ( – wid  ) gforth-experimental “macros-wordlist”

文字列置換マクロのワードリスト

replaces ( addr1 len1 addr2 len2 –  ) string-ext “replaces”

名前が addr2 len2、 内容が addr1 len1 のマクロを作成します。 マクロが既に存在する場合は、 内容を変更するだけです。

.substitute ( addr1 len1 – n / ior  ) gforth-experimental “dot-substitute”

テキスト addr1 len1 内のすべてのマクロを置き換えて、 結果を出力します。 n は置換した数。 または負数の場合は throw 可能な ior です。

$substitute ( addr1 len1 – addr2 len2 n/ior  ) gforth-experimental “string-substitute”

テキスト addr1 len1 内のすべてのマクロを置き換えます。 addr2 len2 が置換結果で、 n は置換の数で、 負数場合は throw 可能な ior です。

substitute ( addr1 len1 addr2 len2 – addr2 len3 n/ior  ) string-ext “substitute”

テキスト addr1 len1 内のすべてのマクロを置き換え、 結果を addr2 len2 にコピーします。 addr2 len3 は置換結果で、 n は置換した数、または負数場合は throw 可能な ior です。

unescape ( addr1 u1 dest – dest u2  ) string-ext “unescape”

addr1 u1 内のすべての区切り文字を2重にすることで、 置換後の結果が元のテキストのままになります。 結果を格納するバッファー dest には長さ指定の必要が無いことに注意してください。 最悪の場合、 必要な文字数は u1 の 2倍です。 dest u2 は結果の文字列の長さです。

$unescape ( addr1 u1 – addr2 u2  ) gforth-experimental “string-unescape”

unescape と同じですが、 $tmp を使用して一時的な結果文字列を作成します。