 Macros can be considered functions that accept and return S-expressions – similar to abstract syntax trees, but not limited to those.These functions are invoked before the evaluator or compiler to produce the final source code.Macros are written in normal Common Lisp, and may use any Common Lisp (or third-party) operator available.