Какие хорошие инструменты для быстрого запуска анализа и анализа кода C/С++?
В частности, я ищу инструменты с открытым исходным кодом, которые обрабатывают препроцессор и язык C/С++. Предпочтительно, эти инструменты будут использовать lex/yacc (или flex/bison) для грамматики, а не быть слишком сложными. Они должны обрабатывать последние определения ANSI C/С++.
Вот что я нашел до сих пор, но не смотрел на них подробно (мысли?):
- CScope - анализатор старой школы C. Тем не менее, похоже, что он не выполняет полный анализ. Описан как прославленный "grep" для нахождения функций C.
- GCC - Все любимые компиляторы с открытым исходным кодом. Очень сложно, но, похоже, все это. Там есть связанный проект для создания расширений GCC, называемый GEM, но не обновлялся с момента появления GCC 4.1 (2006).
- PUMA - PUre MAnipulator. (со страницы: "Целью этого проекта является предоставить библиотеку классов для анализа и манипулирования источниками C/С++. Для этого Назначение PUMA предоставляет классы для сканирования, разбора и, конечно, манипулирования C/С++ Источники. "). Это выглядит многообещающим, но не обновлялось с 2001 года. Очевидно, PUMA была включена в AspectС++, но даже этот проект hasn Обновлено с 2006 года.
- Различные исходные грамматики C/С++. Вы можете получить c-С++ - grammars-1.2.tar.gz, но это было без изменений с 1997 года. Небольшой поиск в Google подтягивает другие основные lex/yacc, которые могут служить отправной точкой.
- Любые другие?
Я надеюсь использовать это как отправную точку для перевода источника C/С++ на новый язык игрушек.
Спасибо! Матф
(Добавлено 2/9): Просто пояснение: я хочу извлечь семантическую информацию из препроцессора в дополнение к самому C/С++-коду. Я не хочу, чтобы "#define foo 42" исчезал в целое число "42", но оставался прикрепленным к имени "foo". Это, к сожалению, исключает несколько решений, которые сначала запускают препроцессор, и только доставляют дерево синтаксического анализа C/С++.