5.29.1. Notes

Felix macros have 3 flavours:
keywordkindsubst
identnameexe expr+dcl
funexprexe expr
procstatementexe stmt

Name macros allow renaming of functions, procedures, values, consts, variables, the body must be an identifier or the keyword new. Expression macros replace applications in expressions. Statement macros replace call statement.

Macros are expanded by evaluating the arguments if any, substituting the arguments into the body, and then evaluating the body.

Evaluation is by recursive descent with rescanning.

Note: name macros replace names in executable code, including macro bodies, but they cannot be used to rename macros.