m4
は入力を読み込むと、それをトークン(token)に分割します。
トークン(token)は名前(name)、クォートされた文字列(quoted string)、
それらの構成要素とならない個々の文字のどれか1つの種類に属します。
また、m4
への入力にはコメントを含めることができます。
名前(name)はアルファベット、数字、_(アンダースコア) を自由に並べたもののうち、先頭の文字が数字でないものです。 名前にマクロの定義が存在するときは、マクロの呼び出しとして認識され、 展開の対象となります(see section マクロを呼び出す方法)。
正しい名前(name)の例を挙げると`foo', `_tmp', `name01'などがあります。
クォートされた文字列(quoted string)は、 引用符`と'に囲まれた文字列のうち、 文字列の内部で開始引用符`と終了引用符'の数が釣り合っているものです。 クォートされた文字列(quoted string)のトークンとしての値は、 いちばん外側にある引用符を一対だけ取った文字列です。 したがって、
`'
の値は空文字列です。そして、
``quoted''
の値は次の文字列になります。
`quoted'
引用符を表す文字は、組み込みマクロchangequote
を使って、
いつでも替えることができます。
詳細はSee section 引用符(quote characters)を変更するを参照してください。
名前(name)とクォートされた文字列(quoted string)の構成要素にならない 文字はすべて、それ自身で一つのトークンとなります。
m4
では通常`#'と改行文字で区切られた部分がコメントとなります。
これらコメントデリミタ(comment delimiters)の間にあるすべての文字は
処理の対象とならず無視されます。
しかし、コメントデリミタ(comment delimiters)を含むコメント全体は、
出力へそのまま流されて行きます。
つまりm4
においてコメントは破棄されません。
コメントを入れ子にすることはできません。したがって、`#'の後の 最初の改行文字でコメントは終りとなります。 コメント開始文字をクォートすることによって、 コメント開始文字としての働きを抑制できます。
コメントデリミタ(comment delimiters)は組み込みマクロchangecom
を
使って、いつでも好きな文字列に変更できます。
詳細はSee section コメントデリミタ(comment delimiters)を変更するを参照してください。
Go to the first, previous, next, last section, table of contents.