Существуют библиотеки и инструменты синтаксического анализатора, даже бесплатные с открытым исходным кодом.У Clang есть, например.Как и GCC.Есть и другие.
Это много кода, потому что C ++ трудно анализировать.Но если кто-то еще написал код, и он работает, это не проблема.Обычная сложность использования этих продуктов - найти хорошую документацию, но вы всегда можете попробовать задать конкретные вопросы здесь
Но просто провести лексический анализ C ++ менее сложно, и его будет достаточно для грубого анализа структуры программы, есливам все равно, что это не удастся в угловых случаях.Если вы начнете с предварительно обработанного кода (или сделаете сомнительное предположение, что предварительная обработка не изменит структуру программы) и не будете беспокоиться об идентификации шаблонных скобок (в частности, о различении правого оператора сдвига и двух последовательных близких угловых скобок), выдолжна быть в состоянии построить лексический анализатор с достаточно короткой спецификацией генератора сканера.
Этого может быть достаточно для грубого анализа структуры программы, если вам все равно, что она не удастся выполнить в угловых случаях.