m4(1) FreeBSD 一般コマンドマニュアル

m4

前のページ 上に戻る 次のページ

m4




解説

     m4 ユーティリティは、さまざまな言語 (たとえば C, ratfor, fortran, lex,
     yacc など) のフロントエンドとして利用できるマクロプロセッサです。引数で指
     定されたファイルが指定された順に処理されます。ファイルが指定されていない
     か、ファイル名が `-' なら標準入力が読まれます。処理されたテキストは標準出
     力へ送られます。

     マクロの呼出しは name(argument1[, argument2, ...,] argumentN) の形式を
     取っています。

     マクロ名とそれに続く開き括弧 `(' との間にはスペースがあってはいけません。
     もしマクロ名の直後に開き括弧が続いていなければ引数なしのマクロ呼出しとし
     て処理されます。

     マクロ名として先頭はアルファベットまたはアンダースコアが、2 文字目以降は
     英数字またはアンダースコアが使えます。よって正しいマクロ名にマッチする正
     規表現は [a-zA-Z_][a-zA-Z0-9_]* となります。

     マクロの引数のうちで、先頭のクォートされていない空白、タブ、改行文字は無
     視されます。文字列をクォートするためには、左、および右シングルクォートを
     使用してください (例: ` this is a string with a leading space')。組み込み
     マクロ changequote を使ってクォート文字を変更することができます。

     オプションは以下の通りです:

     -Dname[=value]     シンボル name の値を value (無指定時は NULL) と定義し
                        ます。

     -Uname             シンボル name を未定義にします。


文法

     m4 には以下に示す組み込みマクロが実装されています。これらのマクロは再定義
     可能であり、その場合には元の定義は失われます。特に記述のない限り戻り値は
     NULL です。

     changecom       コメントの開始文字列と終了文字列を変更します。デフォルト
                     では、ポンド記号 `#' と改行文字です。引数を指定しなかった
                     場合はコメント機能がオフになります。設定できる文字列の長
                     さは最大で 5 文字です。

     changequote     第 1、第 2 引数をクォートシンボルとして定義します。引数の
                     最初の文字のみ使用されることに注意してください。引数が与
                     えられなかった場合にはデフォルトの左右シングルクォートに
                     設定されます。

     decr            引数の値を 1 だけ減少させます。引数は正しく数値を表現する
                     文字列でなければなりません。

     define          第 1 引数で指定した名前の新しいマクロを定義します。定義内
                     容は第 2 引数で与えます。定義中での $n (n は 0 から 9 ま
                     で) は それぞれそのマクロに与えられる第 n 引数に置換され
                     マクロを使って新しい出力キューを選ぶことが出来ます
                     (divert に不正な引数を与えると出力が破棄されてしまいま
                     す)。

     divnum          現在の出力キューの番号を返します。

     dnl             改行文字を含めた行末までの入力文字を破棄します。

     dumpdef         引数で指定した項目に関して、その名前と定義を出力します。
                     引数が与えられなかった場合は全てのマクロについて出力しま
                     す。

     errprint        第 1 引数を標準エラー出力ストリームへ出力します。

     eval            第 1 引数を計算式とみなして 32-bit 幅の算術演算を用いて計
                     算します。演算子としては標準の C で用いられるもの、すなわ
                     ち 3 項、算術、論理、シフト、関係、ビットの各演算子、およ
                     び括弧が利用可能です。また数値も C と同様に 8 進、10
                     進、16 進で記述できます。第 2 引数で (もしあれば) 演算結
                     果の基数を指定でき、第 3 引数で (もしあれば) 演算結果の最
                     小桁数を指定できます。

     expr            eval の別名です。

     ifdef           第 1 引数で指定した名前のマクロが定義されていれば第 2 引
                     数を返し、定義されていなければ第 3 引数を返します。第 3
                     引数が省略されていた場合は、その値は NULL になります。ち
                     なみに `unix' という単語があらかじめ定義されています。

     ifelse          第 1 引数が第 2 引数とマッチしたら第 3 引数を返します。
                     マッチしなかった場合、その 3 個の引数は捨てられて次の 3
                     引数を用いて同様の検査を繰り返します。この処理は引数がな
                     くなるか あるいは 1 つだけ残るまで繰り返され、どれにも
                     マッチしなかった場合には その最後に残った引数または NULL
                     (引数がなくなった場合) が返されます。

     include         第 1 引数で指定されたファイルの内容を返します。ファイルが
                     読み込めなかった場合にはエラーメッセージを出力して処理を
                     中断します。

     incr            引数を 1 だけ増加させます。引数は正しく数値を表現する文字
                     列でなければいけません。

     index           第 2 引数が、第 1 引数の中で、何文字目に出現するかを返し
                     ます (たとえば index(the quick brown fox jumped, fox) で
                     は 16 が返ります)。第 2 引数が第 1 引数の中に含まれていな
                     かった場合には -1 を返します。

     len             第 1 引数の文字数を返します。余分な引数は無視されます。

     m4exit          第 1 引数 (指定されなかった場合は 0) を終了コードとして即
                     座に終了します。

     popdef          各引数へ pushdef されている定義を戻します。

     pushdef         define と同様の引数をとってマクロを定義しますが元の定義を
                     スタックへ保存しておきます。保存された定義は後で popdef
                     で戻すことができます。

     shift           第 1 引数を除いた全ての引数を返します。残りの引数はクォー
                     トされてコンマで区切られます。クォートすることによって以
                     降の処理で置換が行われないようにしています。

     sinclude        エラーが起きても無視される点を除いて include と同じです。

     spaste          エラーが起きても無視される点を除いて paste と同じです。

     substr          第 1 引数の文字列のうちの、第 2 引数で指定されるオフセッ
                     トから始まり第 3 引数で指定される文字数の範囲の部分文字列
                     を返します。第 3 引数が省略された場合は残りの文字列全てを
                     返します。

     syscmd          第 1 引数をシェルに渡します。戻り値はありません。

     sysval          最後に実行した syscmd の戻り値を返します。

     translit        第 1 引数の中の文字を、第 2 引数で指定された文字集合から
                     第 3 引数で指定された文字集合へ書き直します。ただし tr(1)
                     式の省略指定を用いることはできません。

     undefine        第 1 引数で指定されたマクロを未定義にします。

     undivert        指定された出力キュー (引数がない場合は全てのキュー) の内
                     容を掃き出します。

     unix            OS プラットフォームを調べるために予め定義されているマクロ
                     です。


作者

     Ozan Yigit <oz@sis.yorku.ca> および
     Richard A. O'Keefe <ok@goanna.cs.rmit.OZ.AU>

FreeBSD 4.4                    January 26, 1993                    FreeBSD 4.4

ABELNET VPSサービス