Go to the first, previous, next, last section, table of contents.


字句・構文解析の規則

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.