A preprocessor [ICSM-1996-Favre] is a curious thing: it is essentially, for all intents and purposes, a compiler that processes the input text, expands macros, connects additional textual sources, performs variant compilation and other similar activities. On the other hand, it is so common to use it before the “actual” compiler, that some studybooks regard it as a separate phase of compilation. Some language manuals contain production rules belonging to the preprocessor, and, since the preprocessor is a separate compiler with its own grammar, those should not be mixed with the rest of the main grammar.