## 3 Lexical and syntactic conventions ¶

As `m4` reads its input, it separates it into tokens. A token is either a name, a quoted string, or any single character, that is not a part of either a name or a string. Input to `m4` can also contain comments. GNU `m4` does not yet understand multibyte locales; all operations are byte-oriented rather than character-oriented (although if your locale uses a single byte encoding, such as ISO-8859-1, you will not notice a difference). However, `m4` is eight-bit clean, so you can use non-ASCII characters in quoted strings (see Changing the quote characters), comments (see Changing the comment delimiters), and macro names (see Indirect call of macros), with the exception of the NUL character (the zero byte ‘`'\0'`’).