A program that processes input data to produce output that is used as input to another program. Use this tag for questions about an unspecified pre-processor. If there is a specific tag for the pre-processor you should use that. Consider using [tag:c-preprocessor], [tag:boost-preprocessor], [tag:oracle-pro-c], [tag:css-preprocessor], [tag:karma-babel-preprocessor], [tag:m4]
A preprocessor is a program that processes its input data to produce output that is used as input to another program according to a given set of rules. Typically a preprocessor is used to perform a phase of translation of source code before the next step of compilation.
Preprocessors may be categorised as lexical, syntactic or general purpose. The most familiar example of a lexical preprocessor is the c-preprocessor which has its own tag. Although also used as a general purpose preprocessor, the C preprocessor lacks some of the features of more general macro processors such as m4.
When a pre-processor is used to generate further programs it is appropriate to use preprocessor-meta-program.