如何在Python中解析C++源代码?

Dar*_*enW 12 c++ python parsing code-analysis

我们想要解析我们庞大的C++源代码树,以获取足够的信息来提供给另一个工具来制作类和对象关系图,识别事物的整体组织等.

到目前为止,我最好的尝试是扫描所有.cpp和.h文件的Python脚本,运行正则表达式搜索以尝试检测类声明,方法等.我们不需要一个完整的分析器来捕获每个细节,或者一些重型UML图生成器 - 我们想要忽略很多细节,我们正在发明新类型的图.该脚本八九不离十工作,但由天哪它是真实的:C++ 难以解析!

所以我想知道从我们的资源中提取我们想要的信息的工具是什么?我不是语言专家,也不想要有陡峭学习曲线的东西.我们低眉蓝领程序员咕噜声可以使用的东西:P

Python是首选的标准语言之一,但它并不重要.

Mat*_* M. 11

我只想推荐Clang.

它是一个基于C++库的编译器,设计易于重用.它特别意味着您可以仅将其用于解析和生成抽象语法树.它负责所有繁琐的运算符重载分辨率,模板实例化等.

Clang导出一个基于C的接口,该接口使用Python Bindings进行扩展.界面通常很丰富,但我没有使用它.无论如何,如果您希望帮助扩展,我们欢迎您的贡献.


Ton*_*roy 6

你可以查看GccXML和OpenC++,以及doxygen.