Macro instruction extensions of compiler languages
M. D. McIlroy · Communications of the ACM · 1960
Macroinstruction compilers constructed from a small set of functions can be made extremely powerful. In particular, conditional assembly, nested definitions, and parenthetical notation serve to make a compiler capable of accepting very general extensions to its ground language.