Рекомендовать интерфейс C, который сохраняет директивы препроцессора
Я хотел бы начать проект, который включает в себя преобразование C код, но яхотел бывключают директивы препроцессора. Я нене хочу изобретать велосипед, написав свой собственный C синтаксический анализатор, так кто-нибудь знает интерфейс, который может анализировать C препроцессор и С код, и производить AST, который может быть использован для повторной генерации (или симпатичной печати) исходного кода?
например.,:
#define FILENAME "filename"
#include
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 код. Скорее он должен представлять всю логику времени компиляции, включая переменные препроцессора.