Программно синтаксический анализ и редактирование Исходные файлы C++

Smalltalk, 1 лайнер

(1 to: 24) inject: 1 into: [ :a :b | a * b ] 
5
задан gunr2171 21 July 2015 в 15:07
поделиться

7 ответов

Это похоже на AST из кода C

Если вы привыкли к Java, antlr может легко преобразовать ваш код в абстрактное синтаксическое дерево, а затем применить преобразование к этому дереву. Преобразование AST по умолчанию - это просто распечатать исходный источник.

4
ответ дан 18 December 2019 в 14:47
поделиться

Вы можете использовать любой инструмент генератора синтаксического анализатора для создания синтаксического анализатора C ++ для вас, но сначала вы должны получить CFG (контекстно-свободную грамматику) для C ++, проверьте Antlr

Редактировать:

Также Antlr поддерживает множество целевых языков

2
ответ дан 18 December 2019 в 14:47
поделиться

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

2
ответ дан 18 December 2019 в 14:47
поделиться

В подходе на C # или общем .net, вы могли бы получить некоторую пользу от поставщика C ++ / CLI CodeDOM - если не использовали версия этого типа на C ++, я не знаю, насколько хорошо она будет обрабатывать код, содержащий много шаблонов.

1
ответ дан 18 December 2019 в 14:47
поделиться

В проекте Mozilla есть инструмент, который делает это .


Статический анализатор Clang теперь известен тем, что хорошо анализирует и переписывание C ++. Страуструп написал статью об исследовательском проекте в Texas A&M, но я не думаю, что он был опубликован.

1
ответ дан 18 December 2019 в 14:47
поделиться

ознакомьтесь с проектом doxygen , это проект с открытым исходным кодом, для анализа и документирования нескольких языков программирования, включая C ++. Я считаю, что использование лексера этого проекта поможет вам более чем на полпути

1
ответ дан 18 December 2019 в 14:47
поделиться

Надежный анализатор C ++ доступен в нашем DMS Software Reengineering Toolkit . Он анализирует множество диалектов C ++, включая ANSI, GNU 3/4, MSVS6 и MSVisual Studio 2005, а также управляемый C ++.

Он создает AST и таблицы символов (последнее намного сложнее, чем вы думаете). Вы можете перемещаться по AST, преобразовывать в различные допустимые программы C ++ и повторно создавать код, включая комментарии.

2
ответ дан 18 December 2019 в 14:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: