Hier wird das Modell in einer Makrosprache formuliert, die dann durch die Substitution in eine Zielsprache umgeformt wird.
Ein Makro kann auch als Template gesehen werden.
Der Witz an M4 ist, dass der Makroprozessor so lange über eine Zeile generiert, bis kein Makro mehr zu ersetzen ist. Damit können Makros auch rekursiv sein.
Die Makrokonfiguration mit M4 ermöglicht, die Sprache sehr ausgefallen ist,
relativ einfach zu nutzen.
Dadurch entsteht eine Konfigurationssprache, die die Spezifikation der Konfiguration beschreiben (WAS). Die Makro-Definitionen bilden dann die abstrakte Konfiguration in die Implementierungssprache ab.
Aus einer Textspezifikation können ganze Rahmen für Anwendungen aufeiner DDS-Middleware erzeugt werden.
Aus einer Grammatikbeschreibung können Parser und Scanner erzeugt werden.
Die Grammatikbeschreibung ist ein formales Modell. Allerdings geht die Analyse der Grammatiken und das Berechnen von Lookahead-Mengen weit über eine einfache Transformation hinaus.