c言語のプリプロセッサ(cpp、)のように特定のプログラミング言語の具象構文を基本的に前提としたものもあれば、m4のように汎用のものもあれば、lispのマクロのように言語組込みで構文木を対象にしたものもある。