Autoconfマクロを書いているとき,標準的なAutoconfの引用符の規則で表現する ことが難しい,特殊な文字を生成する必要が生じるかもしれません.例えば, `['以外の全ての文字に一致する正規表現`[^[]'を出力する必要があ るかもしれません.この表現は,対称ではないカッコを含んでいるので,M4 マ クロの中に簡単に書き込むことはできません.
以下の四文字表記(quadrigraph)の一つを使用することで,この問題を解 決することが可能です.
四文字表記は,m4が実行された後,変換処理の終りの段階で置換され るので,M4の引用符の邪魔になりません.例えば,文字列`[^@<:@]' は, その引用符で囲まれている状態に依存せず,出力では`[^[]'として現れま す.
空の四文字表記を使用することも可能です.
後置される空白はautom4teで壊されます.これは仕様です.
例えば,`@<@&t@:@'は`@<:@'を生成します.
例えば,AC_FOO
をコメントとして書きたいかもしれませんが,
autom4teは展開されていない`AC_*'を確実に受けとります.そ
のときは,`AC@&t@_FOO'と書いてください.
`@&t@'の名前はPaul Eggertの提案です.
私は,`@&t@'の語呂合わせに称賛を与えるべきでしょう.`&'は私 自身の発明ですが,`t'はSteve Bourne(Bourneシェルで有名です)によって 書かれたalgol68cコンパイラのソースコードが由来となっていて,そこで は空の文字列を示すために`mt'を使用しています.Cでは,それは以下のよ うなものになるでしょう.char const mt[] = "";しかし,ソースコードは当然Algol 68で書かれています.
彼が`mt'を得た場所を,私は知りません.それは独自の発明かもしれませ んし,当時のケンブリッジ大学のコンピュータ研究所で,一般的な語呂合わせだっ たのかもしれません.