M5: A simple macro processor. Text containing macro definitions and substitutions is compiled to produce an awk program, which must then be executed to produce the final output. (See W. Ward, ACM TOMS 26 (2000) pp. 310-319).