预处理器

词法预处理器

词法预处理器是最低级的预处理器，因为它们只需要词法分析，也就是说，它们在语法分析处理之前，根据用户定义的规则，进行简单的词法单元替换。典型的词法预处理器产生宏替换，包含其他文件的文本，并且条件性地编译或者包含文件。

C预处理器

最常见的例子是C预处理器，采用以'#'为行首的指示。因为它不知道底层语言，它的使用被批评并且它的许多功能被其它语言直接内建。例如，宏替换被显式内联和模板替代，包含变为编译期导入（compile-time import，这需要在目标代码中预先保存类型信息，使这个功能无法改进一个语言）；条件编译被if-then-else和死代码消除替代。

其他预处理器

其他词法预处理器包括一般用途的m4，最常用的跨平台构建系统，比如autoconf，和开源的宏处理器GEMA，操作上下文模式。

句法预处理器

句法预处理器是由Lisp家族语言引进的。它们的作用是根据若干用户定义的规则转换语法树。对于某些程序语言，这些规则是使用同一种语言来写的（compile-time reflection）。这就是Lisp和OCaml的情况。某些编程语言依靠一个完全的外部语言来定义转换，例如XSLT处理器处理XML的方式，或与静态类型的对应语言CDuse。
静态处理器常被用来自定编程语言的语法，并透过增加新的primitives或嵌入特定领域语言（Domain-Specific Programming Language）到一般用途的语言里来扩展。

自定义语法

关于自定义语法的一个好例子是在OCaml编程语言里两个不同语法的存在。程序可能平常地由“正常语法”或“校正过的语法”写成，并且按需求由两者之一进行程序优化
类似地，一些OCaml语言写成的程序借由新运算符的增加来自定化语言的语法。

扩展语言

对于从宏扩展语言最好的示例可在LISP语言家族里找到。这种语言本身就是简单的动态类型核心模块，Scheme或Common Lisp的标准分配允许了命令或面向对象的程序编辑，静态类型亦如此。几乎所有这些特性都由语法预处理运行，虽然它的“宏扩展”编译阶段由LISP的编译器处理这点很值得一提就是。这仍然可以视为预处理的一种形式，因为它在编译阶段前就进行了。
类似地，静态检查、类型安全正规表式或代码生成可能透过宏被加入到OCaml的语法和语义里，如同微线程（亦称为协程或fibers）、单子或透明的XML操作。

作为模板引擎的预处理器

任何“一般目的预处理器”，例如M4，都可以当成模版引擎（template engine）使用。