3 字句と構文の規則
m4は入力を読みながら、それをトークンに分割します。トークンは、名前、引用文字列、または名前にも文字列にも含まれない任意の1文字です。m4への入力には、コメントも含められます。GNU m4はまだマルチバイトロケールを理解せず、すべての処理は文字単位ではなくバイト単位で行います(ただし、ロケールがISO-8859-1のような1バイトの符号化を使う場合、違いには気付かないでしょう)。一方、m4は8ビットのデータを損なわずに扱うので、引用文字列(引用文字の変更を参照)、コメント(コメント区切りの変更を参照)、マクロ名(マクロの間接呼び出しを参照)で、ASCII以外の文字も使えます。ただし、NUL文字(ゼロバイト「'\0'」)は例外です。