Ordinarily I would recommend getting a ready-made parser, but they usually generate an abstract syntax tree and often throw away things like formatting and comments that you want in your generated code. I also recommend using Python or your favorite scripting language. Doing it in C hurts the flexibility that you want in your experimentation.
If you want to mess around with language features such as control structures and such then you probably will have to write a pre-processor of your own that parses your language accurately and outputs the corresponding 'C' code.
The macro system will quickly run out of steam when you start doing things like that.
Another lesson from C++ (there are probably many) is to be careful with C compatibility, it's not always as easy as it seems.