M4 – popularny na Uniksach makroprocesor (program który przetwarza strumień danych – np. kod źródłowy programu – w celu dostosowania do konkretnych potrzeb). Jest używany m.in. przez sendmail i autoconf.
M4 czyta standardowe wejście, wykonuje zapisane w nim komendy i drukuje wynik na standardowe wyjście. Wszystko co nie jest komendą jest kopiowane bez zmian.
Ważniejsze wbudowane komendy to:
dnl
– wszystko do końca linii jest komentarzem, którego nie należy kopiować na wyjście. Ważne: dnl
działa jedynie jako pojedynczy wyraz; oznacza to, że ednl
zostanie zinterpretowane jako zwykły tekst.eval(wyrażenie)
– oblicza wyrażenie arytmetycznedefine(nazwa,definicja)
– definiowanie własnych komenddefn(nazwa)
– drukuje treść makra nazwa
na standardowe wyjścieinclude(nazwa pliku)
– kopiuje zawartość wskazanego pliku na standardowe wyjścieOtoczenie wyrażenia za pomocą znaków ` oraz ' skutkuje oznaczeniem go jako tekst niezmienny, np.
define(foo, $1 $2 $3) foo(1, 2, 3) `foo(4, 5, 6)'
wynikiem będzie:
1 2 3 foo(4, 5, 6)