Some complex things like initialization of fields in OOP code, recurrenct actions can be solved using syntax abstractions, instead of semantic one. For examples:
- tag common instructions
- include tag
- eventually customize also at hand the code usingfeature/manual-customization-of-code
In CL macro are expanded in a syntatic way. The semantic is checked only at the end of the expansion, when all macro are expanded in an iterative way.
In CL macro are stratified: a macro can generate code with other macros.