Add recursion to macropreprocessor