Надеюсь, это поможет, С наилучшими пожеланиями, Том.

есть хорошие инструменты для быстрого начала анализа и анализа кода C / C ++?

В частности, я ищу инструменты с открытым исходным кодом, которые обрабатывают препроцессор C / C ++ и язык. Предпочтительно, чтобы эти инструменты использовали грамматику lex / yacc (или flex / bison) и не были бы слишком сложными. Они должны обрабатывать последние определения ANSI C / C ++.

Вот что я нашел до сих пор, но не рассмотрел их подробно (мысли?):

Cscope - Анализатор старой школы С. Похоже, не выполняет полный анализ. Описан как прославленный «grep» для поиска функций C.НКУ - Всеми любимый компилятор с открытым исходным кодом. Очень сложно, но, похоже, все это делает. Существует связанный проект для создания расширений GCC, который называетсяGEM, но не обновлялся с GCC 4.1 (2006).PUMA - Манипулятор PUre. (со страницы: «Цель этого проекта - предоставить библиотеку классов для анализа и манипулирования источниками C / C ++. Для этой цели PUMA предоставляет классы для сканирования, анализа и, конечно, манипулирования источниками C / C ++.») , Это выглядит многообещающе, но не обновлялось с 2001 года. Очевидно, PUMA была включена вAspectC ++, но даже этот проект не обновлялся с 2006 года.Различные C / C ++ необработанные грамматики. Ты можешь получитьс-C ++ - грамматик-1.2.tar.gz, но это не поддерживается с 1997 года. Небольшой поиск в Google выявляет другие базовые грамматики lex / yacc, которые могут послужить отправной точкой.Любые другие?

Я надеюсь использовать это в качестве отправной точки для перевода исходного кода C / C ++ на новый игрушечный язык.

Спасибо! Матф

(Добавлено 2/9): Просто пояснение: я хочу извлечь семантическую информацию из препроцессора в дополнение к самому коду C / C ++. Я не хочу, чтобы "#define foo 42" исчезал в целом числе "42", но оставался привязанным к имени "foo". Это, к сожалению, исключает несколько решений, которые сначала запускают препроцессор и предоставляют только дерево разбора C / C ++)

Ответы на вопрос(14)

Ваш ответ на вопрос