Generic preprocessor tools

Started by
2 comments, last by wqking 11 years, 6 months ago
Some languages are blessed with preprocessor directives, but there are other languages that don't have them for various reasons.

So then my question is this: Is there a generic preprocessor tools out there where you can inject a few rules, process any text files, and output the result to new text files.

If the file was a Java source code, and DEBUG was set to false, it would preprocess them like this:

//#if DEBUG
int var = 10 + debugValue;
//#else
int var = 10;
//#endif

Output:
//#if DEBUG
// int var = 10 + debugValue;
//#else
int var = 10;
//#endif


If it was Python:

##if DEBUG
var = 10 + debugValue
##else
var = 10;
##endif

Output:
##if DEBUG
# var = 10 + debugValue
##else
var = 10;
##endif


And as you can see, you can extend this to any programming languages or scripts (HTML, CSS, bash, anything) that don't support preprocessor directives natively but support comments. Alas, I can't find any good tools that can do this seemingly-straightforward task properly.
Advertisement
The C preprocessor will do that. It's almost universally available as a separate phase of the compiler or as a separate executable entirely. The C preprocessor has no clue about the C (or C++, or FORTRAN, or Java) language proper.

There have been many systems that leverage the C preprocessor to enhance other languages.

Stephen M. Webb
Professional Free Software Developer

I've used https://github.com/bagder/fcpp in the past and I'd suggest checking it out.
I heard M4 and saw some open source projects use it
http://en.wikipedia.org/wiki/M4_%28computer_language%29
I didn't use it before.

https://www.kbasm.com -- My personal website

https://github.com/wqking/eventpp  eventpp -- C++ library for event dispatcher and callback list

https://github.com/cpgf/cpgf  cpgf library -- free C++ open source library for reflection, serialization, script binding, callbacks, and meta data for OpenGL Box2D, SFML and Irrlicht.

This topic is closed to new replies.

Advertisement