Recommend C front-end that preserves preprocessor directives
abstract-syntax-tree, c, c-preprocessor, compiler-construction
Solution
Take a look at Clang. (See http://clang.llvm.org/features.html#applications .)
Problem
I'd like to start a project that involves transforming C code, but I'd like to include the preprocessor directives. I don't want to reinvent the wheel by writing my own C parser, so does anyone know of a front-end that can parse C preprocessor and C code, and produce an AST that can be used to re-generate (or pretty-print) the original source? e.g.,: ``` #define FILENAME "filename" #include <stdio.h> FILE *f=0; ... if (file_is_open) { #ifdef CAN_OPEN_IT f = fopen(FILENAME, "r"); #else printf("Unable to open file.\n"); #endif } ``` The above code should be parsed into some in-memory representation that can be used to re-generate the source. In other words, it should not be processed as normal C in two phases, first processing the PP directives and then parsing pure C code. Rather it should represent the whole compile-time logic including the preprocessor variables.