Стандартный синтаксический анализатор C ++, широко используемый в компиляторах, в EDG-интерфейсе C ++ .У меня нет опыта с этим;но я понимаю, что он обрабатывает огромное разнообразие диалектов C ++.Я понимаю, что вы можете получить его бесплатно для исследовательских целей.
Стандарт с открытым исходным кодом - GCC компилятор .Я слышал, это трудно понять и изменить.
Там есть CLANG , как упоминалось в других ответах.У меня нет опыта здесь.Насколько я понимаю, он довольно сложный, особенно с точки зрения поддержки анализа.
Наш проприетарный DMS Software Reengineering Toolkit имеет полный синтаксический анализатор C ++ с полным именем и разрешением типа ,расширение препроцессора (или сохранение, которое другие инструменты не будут делать).Внешний интерфейс C ++ обрабатывает несколько диалектов C ++: ANSI, GCC, MS Visual Studio.Как вы можете догадаться, у меня есть много опыта с этим.
DMS / CppFrontEnd использовался для выполнения программного анализа, а также массивных преобразований исходного кода в коде C ++, включаемых анализатором шаблонов DMS, который будет анализировать любой фрагмент кода C ++.Я полагаю, что другие внешние интерфейсы C ++ не предоставляют преобразования источник-источник.С теми, которые вы, вероятно, можете взломать AST процедурно, но это довольно неудобно, потому что вы должны знать точную структуру AST, а для C ++ это довольно сложно.
DMS также имеет полные интерфейсы C, Java и COBOLс разрешением имени и типа, а также с контролем и анализом потока данных.Он имеет синтаксические анализаторы (но не анализ имени и типа) для многих других языков, включая C #.AFAIK, другие «синтаксические анализаторы C ++» не могут сделать это, по определению.Можно применить преобразования источник-источник к любому из них или к любой их смеси.