Рекомендовать интерфейс C, который сохраняет директивы препроцессора

Я хотел бы начать проект, который включает в себя преобразованиеC код, но я бы хотелвключают директивы препроцессора. Я не хочу изобретать велосипед, написав свой собственныйC парсер, так кто-нибудь знает интерфейс, который может разобратьC препроцессор иC код, и производить AST, который может быть использован для повторной генерации (или симпатичной печати) исходного кода?

например.,:

#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
}

Приведенный выше код должен быть разобран в некоторое представление в памяти, которое можно использовать для повторной генерации источника. Другими словами, он не должен обрабатываться как обычноC в два этапа, сначала обрабатывая директивы PP, а затем анализируя чистыйC код. Скорее он должен представлять всю логику времени компиляции, включая переменные препроцессора.

Ответы на вопрос(4)

Ваш ответ на вопрос