After having performed single-line macro expansion
the preprocessor will handle concatenation attempts
and -- if anything was concatenated -- re-process
the token list once more. However, as mentioned in
e.g. SF #821975 and/or SF #839189, this recursion
should be optional and explicitly requested by the
user, as it can have undesired effects.
Therefore I have added support for "%^" to my local
forked version of NASM. It's placement within a list
of tokens doesn't matter; the first "%^" triggers a
recursion; hence multiple "%^"s will trigger mul-
tiple recursions. More than 99 levels of recursion
will trigger a suppressible warning; eventually the
preprocessor will run out of stack space... though
not out of data memory. Using "%{^}" yields "%^",
but without the new "%^" functionality.
I will attach a description of the needed changes
as well as a set of testcases.