Visual Studio IntelliSense для VC ++ включает «полный» синтаксический анализатор EDG C ++ (также используемый Intel и другими). Поскольку DOM кода C # доступна для надстроек (поправьте меня, если я ошибаюсь), доступна ли DOM кода C ++? Можно ли это использовать для анализа открытого проекта VC ++ в среде VS?
.net
visual-studio
visual-c++
c++-cli
codedom
Вспышка
источник
источник
Ответы:
Расширение Visual C ++ Refactoring может переименовывать член в рамках всего проекта. Он построен MS, но, очевидно, для этого они использовали внутренний кодовый DOM. Так что это возможно, я пока не знаю как.
Расширение CppLister может читать базы данных intellisense, созданные VS, для перечисления различных членов внутри класса.
Вы всегда можете использовать синтаксический анализатор Clang C ++ с открытым исходным кодом (фактически компилятор) и прочитать AST в объектной модели C #. См. CppSharp и ClangSharp для привязки C # к Clang.
источник
Я не уверен, что такое «C ++ Code DOM», если он вообще существует. Важно то, что MSVS использует интерфейс EDG для анализа и определения значений символов, чтобы поддерживать действия MSVS IDE. EDG IIRC строит собственные внутренние структуры данных, представляющие программу; У меня нет оснований полагать, что эти структуры данных представляют собой «C ++ Code DOM», или что они видны вам, иначе вы сможете узнать о них в MSDN.
Ваша настоящая заявленная проблема заключается в том, что вы хотите проанализировать исходный код C ++. Я согласен, наличие информации о внешнем интерфейсе EDG было бы значительным подспорьем в этом; вы действительно действительно не хотите пытаться написать свой собственный синтаксический анализатор C ++ (и вам нужно много вещей после синтаксического анализа, погуглите мое эссе на тему «жизнь после синтаксического анализа»).
Итак, у вас есть следующие варианты:
источник