Вы довольно хорошо должны выполнить часть программы parse-and-build-a-symbol-table при компиляции программы.
Что означает запуск препроцессора и лексизм.Это плохие новости.
Хорошая новость заключается в том, что вам не нужно делать большую часть трудных вещей.Нет необходимости создавать AST, каждую часть кода, кроме typedefs;определения структур, объединений и перечислений;объявления и определения переменных или функций;и анализ аргументов вызова функции может быть невозможным.
При дальнейшем размышлении, вызванном комментариями Криса : Вы должны иметь возможность анализировать типы выражений и обрабатывать-arg promotions, также.
Это все же меньший проект, чем написание всего компилятора, но к нему следует подумать.