[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2. 字句・構文解析の規則

m4は入力を読み込むと、それをトークン(token)に分割します。 トークン(token)は名前(name)、クォートされた文字列(quoted string)、 それらの構成要素にはならない単独の文字のどれか1つの種類に属します。 また、m4への入力にはコメントを含めることができます。

2.1 入力トークン: マクロ名  
2.2 入力トークン: クォートされた文字列  
2.3 入力トークン: その他  
2.4 コメント  m4への入力中のコメント


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.1 入力トークン: マクロ名

名前(name)はアルファベット、数字、_(アンダースコア) を自由に並べたもののうち、先頭の文字が数字でないものです。 名前にマクロの定義が存在するときは、マクロの呼び出しとして認識され、 展開の対象となります(see section 3. マクロを呼び出す方法)。

正しい名前(name)の例を挙げると`foo', `_tmp', `name01'などがあります。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.2 入力トークン: クォートされた文字列

クォートされた文字列(quoted string)は、 引用符`'に囲まれた文字列のうち、 文字列の内部で開始引用符`と終了引用符'の数が釣り合っているものです。 クォートされた文字列(quoted string)のトークンとしての値は、 いちばん外側にある引用符を一対だけ取った文字列です。 したがって、

 
`'

の値は空文字列です。そして、

 
``quoted''

の値は次の文字列になります。

 
`quoted'

引用符を表す文字は、組み込みマクロchangequoteを使って、 いつでも替えることができます。 詳細はSee section 7.2 引用符(quote characters)を変更するを参照してください。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.3 入力トークン: その他

名前(name)とクォートされた文字列(quoted string)の構成要素にならない 文字はすべて、それ自身で一つのトークンとなります。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.4 コメント

m4では通常`#'と改行文字で区切られた部分がコメントとなります。 これらコメントデリミタ(comment delimiters)の間にあるすべての文字は 処理の対象とならず無視されます。 しかし、コメントデリミタ(comment delimiters)を含むコメント全体は、 出力へそのまま流されて行きます。 つまりm4においてコメントは破棄されません

コメントを入れ子にすることはできません。したがって、`#'の後の 最初の改行文字でコメントは終りとなります。 コメント開始文字をクォートすることによって、 コメント開始文字としての働きを抑制できます。

コメントデリミタ(comment delimiters)は組み込みマクロchangecomを 使って、いつでも好きな文字列に変更できます。 詳細はSee section 7.3 コメントデリミタ(comment delimiters)を変更するを参照してください。


[ << ] [ >> ]           [Top] [Contents] [Index] [ ? ]

This document was generated by Yuji Minejima on January, 20 2004 using texi2html