谷歌没有发现任何看似相关的东西.
我有一堆现有的,正在运行的C++代码,我想使用python来浏览它并找出类之间的关系等.
编辑:只是想指出:我认为我不需要或想要解析C++的每一点; 我只需要足够聪明的东西来获取类,函数和成员变量声明,并跳过函数定义.
Pav*_*aev 44
这不是一个答案,而只是为了演示实际上正确解析C++是多么困难.我最喜欢的演示:
template<bool> struct a_t;
template<> struct a_t<true> {
template<int> struct b {};
};
template<> struct a_t<false> {
enum { b };
};
typedef a_t<sizeof(void*)==sizeof(int)> a;
enum { c, d };
int main() {
a::b<c>d; // declaration or expression?
}
Run Code Online (Sandbox Code Playgroud)
这是完全有效的,符合标准的C++,但注释行的确切含义取决于您的实现.如果sizeof(void*)==sizeof(int)(通常在32位平台上),它是d类型的局部变量的声明a::b<c>.如果条件不成立,则表示无操作((a::b < c) > d).添加构造函数a::b实际上会让您通过是否存在副作用来暴露差异.
Ste*_*tef 32
众所周知,C++难以解析.大多数尝试正确执行此操作的人最终会拆分编译器.事实上,这是(部分)LLVM开始的原因:Apple需要一种解析C++的方式,以便在XCode中使用,与编译器解析它的方式相匹配.
这就是为什么像GCC_XML这样的项目可以与python xml库结合使用.
一些似乎在解析C++方面做得非常出色的非编译器项目是:
| 归档时间: |
|
| 查看次数: |
24207 次 |
| 最近记录: |