Вы не можете заставить один парсер выполнять и C, и C ++.Это разные языки с разным синтаксисом и семантикой.Вы можете получить индивидуальные парсеры для каждого.
См. Наш C интерфейс и C ++ интерфейс .Оба из них обрабатывают различные диалекты (как GCC, так и MS), создают AST, создают полные таблицы символов.Существует модуль препроцессора, который будет выполнять либо полное раскрытие, либо под вашим контролем развертывать только определенные условные обозначения и макросы.
Внешний интерфейс C также имеет поток управления, потоки данных, построение точек и граф вызовов.В отличие от Understand, который на самом деле не имеет глубокого анализа потока, клиентский интерфейс C получит правильные цели косвенных вызовов функций (в рамках консервативных предположений).
Внешний интерфейс C ++ обрабатывает полный язык C ++ 0X,Мы находимся в процессе завершения построения управляющего графа для него.
Базовый механизм DMS Software Reengineering Toolkit предоставляет настраиваемый доступ ко всей этой информации.Это не дает красивые картинки, такие как «Пойми»;он предназначен для того, чтобы вы могли создавать собственные инструменты анализа и преобразования программ.