A survey of macro processors

Macro processors have recently received a considerable amount of attention. It is the purpose of this discussion to try to evaluate the uses and the limitations of macro processors and to consider the essential features of the design and, to some extent, the implementation of a macro processor with special reference to those macro processors that have already been implemented or proposed. The first problem that arises in a discussion such as this is the problem of notation and terminology. Terminology for macros is even more variable than most terminology in computing. For example “replacement text” in one terminology is equivalent in various other terminologies to “macro definition”, “macro skeleton”, “defining string”, “macro body”, and “code body”. In order to avoid confusion, a fixed terminology and notation will be used throughout this discussion. This terminology, which should be self-explanatory, is the terminology used in the literature describing ML/I [4, 51. (It is not claimed that this terminology is “better” than any other; it is simply that if one is forced to adopt one terminology it is most natural to adopt the same terminology as one has used in previous papers.)

[1]  Mark Halpern Foundations of the case for natural-language programming , 1967 .

[2]  Maurice V. Wilkes,et al.  An Experiment with a Self-compiling Compiler for a Simple List-processing Language , 1964 .

[3]  Peter J. Brown,et al.  The ML/I macro processor , 1967, Commun. ACM.

[4]  Henri Leroy A macro: generator for ALGOL , 1967, AFIPS '67 (Spring).

[5]  Christopher Strachey,et al.  A general purpose macrogenerator , 1965, Comput. J..

[6]  Mark I. Halpern Programming Languages: Toward a general processor for programming languages , 1968, CACM.

[7]  J. G. Fletcher,et al.  A program to solve the Pentomino problem by the recursive use of macros , 1965, CACM.

[8]  Bruce W Arden Michigan algorithm decoder , 1964 .

[9]  Calvin N. Mooers,et al.  TRAC, a procedure-describing language for the reactive typewriter , 1966, CACM.

[10]  Thomas E. Cheatham,et al.  The introduction of definitional facilities into higher level programming languages , 1966, AFIPS '66 (Fall).

[11]  Marvin Lowell Graham,et al.  An assembly language for reprogramming , 1965, CACM.

[12]  D. Morris,et al.  A General Translation Program for Phrase Structure Languages , 1962, JACM.

[13]  William M. Waite,et al.  A language independent macro processor , 1967, Commun. ACM.

[14]  Melvin E. Conway,et al.  Design of a separable transition-diagram compiler , 1963, CACM.

[15]  David N. Freeman Macro Language Design for System/360 , 1966, IBM Syst. J..

[16]  Bernard A. Galler,et al.  A proposal for definitions in ALGOL , 1967, CACM.

[17]  Alexander S. Douglas,et al.  Book Review: IFIP-ICC Vocabulary of Information Processing, 1966 , 1966, Computer/law journal.

[18]  Burt M. Leavenworth,et al.  Syntax macros and extended translation , 1966, CACM.

[19]  Mark I. Halpern XPOP: a meta-language without metaphysics , 1964, AFIPS '64 (Fall, part I).

[20]  M. Douglas McIlroy Macro instruction extensions of compiler languages , 1960, CACM.

[21]  George T. Dellert A use of macros in translation of symbolic assembly language of one computer to another , 1965, CACM.

[22]  David E. Ferguson Evolution of the meta-assembly program , 1966, CACM.

[23]  Richard K. Bennett,et al.  Extension of existing compilers by sophisticated use of macros , 1964, CACM.