Знаете ли вы какой-либо из синтаксических анализаторов C / C ++, которые способны разрешать имена и перегрузки? - PullRequest
2 голосов
/ 25 июля 2011

Мне нужен синтаксический анализатор языка C / C ++ (не GCC, а Microsoft Visual C ++), способный выполнять разрешение имен и перегрузок, а также расширение макросов. В настоящее время я использую Understand, но он слишком глючный и не предоставляет всех необходимых мне функций.

1 Ответ

1 голос
/ 25 июля 2011

Вы не можете заставить один парсер выполнять и C, и C ++.Это разные языки с разным синтаксисом и семантикой.Вы можете получить индивидуальные парсеры для каждого.

См. Наш C интерфейс и C ++ интерфейс .Оба из них обрабатывают различные диалекты (как GCC, так и MS), создают AST, создают полные таблицы символов.Существует модуль препроцессора, который будет выполнять либо полное раскрытие, либо под вашим контролем развертывать только определенные условные обозначения и макросы.

Внешний интерфейс C также имеет поток управления, потоки данных, построение точек и граф вызовов.В отличие от Understand, который на самом деле не имеет глубокого анализа потока, клиентский интерфейс C получит правильные цели косвенных вызовов функций (в рамках консервативных предположений).

Внешний интерфейс C ++ обрабатывает полный язык C ++ 0X,Мы находимся в процессе завершения построения управляющего графа для него.

Базовый механизм DMS Software Reengineering Toolkit предоставляет настраиваемый доступ ко всей этой информации.Это не дает красивые картинки, такие как «Пойми»;он предназначен для того, чтобы вы могли создавать собственные инструменты анализа и преобразования программ.

...