Lably
Skip to content

Preprocessor

Program that processes input for another program

  • 4 min read
  • 3 chapters

Learn it on Lably

A common example from computer programming is the processing performed on source code before the next step of compilation. In some computer languages (e.g., C and PL/I) there is a phase of translation known as preprocessing. It can also include macro processing, file inclusion and language extensions.

Lexical preprocessors

Lexical preprocessors are the lowest-level of preprocessors as they only require lexical analysis, that is, they operate on the source text, prior to any parsing, by performing simple substitution of tokenized character sequences for other tokenized character sequences, according to user-defined rules. They typically perform macro substitution, textual inclusion of other files, and conditional compilation or inclusion.

C preprocessor

The most common example of this is the C preprocessor, which takes lines beginning with '#' as directives. The C preprocessor does not expect its input to use the syntax of the C language. Some languages take a different approach and use built-in language features to achieve similar things. For example:

  • Instead of macros, some languages use aggressive inlining and templates.
  • Instead of includes, some languages use compile-time imports that rely on type information in the object code.
  • Some languages use if-then-else and dead code elimination to achieve conditional compilation.

Other lexical preprocessors

Other lexical preprocessors include the general-purpose m4, most commonly used in cross-platform build systems such as autoconf, and GEMA, an open source macro processor which operates on patterns of context.

Sign in to keep reading

2 more chapters are free with a Lably account.

More in Computing and communication