I wonder if at some point it would be better to adopt an already existing macro language like M4 instead of reinventing everything and adding a ton of features into the CPP.
m4 is filled with quirks of its own. I tried using it once for generating code in a language without macros, only to get bogged down in the opaque quoting rules. It's worse than the \expandafter soup you get in TeX macros.
Also, you'd have a hard time finding a pair of quote characters that don't conflict with C/C++ source code, since string literals can contain just about anything. Any general-purpose preprocessor should at least conform to the lexical rules of the target language.
The new "__VA_TAIL__" proposal for C2Y [1] will make these sorts of tricks much more manageable. I love it and implemented it right away in slimcc.
[1] https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3307.htm
I wonder if at some point it would be better to adopt an already existing macro language like M4 instead of reinventing everything and adding a ton of features into the CPP.
m4 is filled with quirks of its own. I tried using it once for generating code in a language without macros, only to get bogged down in the opaque quoting rules. It's worse than the \expandafter soup you get in TeX macros.
Also, you'd have a hard time finding a pair of quote characters that don't conflict with C/C++ source code, since string literals can contain just about anything. Any general-purpose preprocessor should at least conform to the lexical rules of the target language.
thought this was gonna be a write up from someone involved in burning Santa Monica :)