Up Next

12.1  Introduction

ECLiPSe provides a general mechanism to perform macro expansion of Prolog terms. Macro expansion can be performed in 3 situations:
read macros
they are expanded just after a Prolog term has been read by the ECLiPSe parser. Note that the parser is not only used during comilation but by all term-reading predicates.

compiler macros
they are expanded only during compilation and only when a term occurs in a certain context (clause or goal).

write macros
they are expanded just before a Prolog term is printed by one of the output predicates
In addition to transforming a term, macros can also be source annotation aware, and provide source annotation information for the transformed term if supplied with source annotation information for the orginal term. Source annotation information provide source and position information for a term, and is provided by predicate such as read_annotated/3.

Macros are attached to classes of terms specified by their functors or by their type. Macros obey the module system's visibility rules. They may be either local or exported. The macro expansion is performed by a user-defined Prolog predicate.

Up Next