Next: , Up: Programming in M4sugar


8.3.1 M4マクロの再定義

いくつか例外がありますが,全てのM4ネイティブなマクロは,‘m4_’疑似名 前空間に移動されていて,例えば,M4sugarではdefinem4_defineに名前を変えるなどのようになっています.

M4マクロには再定義されているものもあり,ネイティブな同義語とわずかに互換 性がなくなっています.

— Macro: dnl

このマクロは,もともとの名前を維持しています.m4_dnlは定義されて いません.

— Macro: m4_defn (macro)

M4組み込みのものと比較して,このマクロは,macroが定義されていない 場合は失敗します.m4_undefineを参照してください.

— Macro: m4_exit (exit-status)

このマクロはm4exitに対応します.

— Macro: m4_if (comment)
— Macro: m4_if (string-1, string-2, equal, [not-equal])
— Macro: m4_if (string-1, string-2, equal, ...)

このマクロはifelseに対応します.

— Macro: m4_undefine (macro)

M4組み込みのものとは異なり,このマクロはmacroが定義されていない場 合は失敗します.以下のように使用してください.

          m4_ifdef([macro], [m4_undefine([macro])])

それで,組み込みのものの動作に復旧します.

— Macro: m4_bpatsubst (string, regexp, [replacement])

このマクロはpatsubstに対応します.m4_patsubstの名前は, epatsubstで拡張した正規表現の構文を提供する,GNU M4の最 上位のM4shの将来のバージョンに対して残されています.

— Macro: m4_popdef (macro)

M4組み込みのものとは異なり,このマクロはmacroが定義されていない場 合は失敗します.m4_undefineを参照してください.

— Macro: m4_bregexp (string, regexp, [replacement])

このマクロはregexpに対応しています.m4_regexpの名前は, eregexpで拡張した正規表現の構文を提供する,GNU M4の最上 位のM4shの将来のバージョンに対して残されています.

— Macro: m4_wrap (text)

このマクロはm4wrapに対応しています.

二つの連続して呼び出されるm4_wrapが,そのままトークンとして渡され るという予期しない結果となる危険が無いように,textを‘[]’ で終 えることが推奨されます.

          m4_define([foo], [Foo])
          m4_define([bar], [Bar])
          m4_define([foobar], [FOOBAR])
          m4_wrap([bar])
          m4_wrap([foo])
          FOOBAR