用于VC ++的Visual Studio IntelliSense包括“完整”EDG C++ parser(也被英特尔和其他人使用)。由于插件可以访问C#Code DOM(如果我错了,请纠正我),C ++ Code DOM是否也可以访问?这可以用于分析VS环境中的开放VC ++项目吗?
答案 0 :(得分:22)
Visual C++ Refactoring扩展程序可以重命名项目范围内的成员。它由MS构建,但显然他们使用内部Code DOM来实现这一目标。所以有可能,我只是不知道如何。
CppLister扩展程序能够读取VS创建的智能感知数据库,以列出类中的各种成员。
您始终可以使用开源Clang C ++解析器(实际上是编译器)并将AST读入C#对象模型。有关Cng绑定到Clang,请参阅CppSharp和ClangSharp。
答案 1 :(得分:8)
我不确定“C ++ Code DOM”是什么,如果它存在的话。重要的是MSVS正在使用EDG前端来解析和确定符号的含义,以支持MSVS IDE操作。 EDG IIRC建立了代表该计划的内部数据结构;我没有理由相信这些数据结构是“C ++代码DOM”,或者它们对您是可见的,或者您可以在MSDN上找到它们。
您真正陈述的问题是您想要分析C ++源代码。我同意,拥有EDG前端信息将是一个重要的帮助;你真的 真的不想尝试编写自己的C ++解析器(并且你需要经过解析后的很多东西,谷歌我的论文“解析后的生活”)。
所以你有以下选择: