Я бы посоветовал вам взглянуть на существующие компиляторы и использовать их возможности разбора.Например, есть clang / LLVM , который уже реализует статический анализ кода некоторой формы.Или вы можете использовать встроенный парсер GNU Compilers / g ++.IIRC, новый SDK для Visual Studio 2010 также позволяет напрямую подключаться к онлайн-компилятору (который также используется для нового intellisense).