在Python中解析.c/.cpp/.py源文件以获取函数列表

2 投票
4 回答
3764 浏览
提问于 2025-04-16 01:17

我正在学习解析器,主要是针对Python、C和C++的源代码(这是我自己在学,不是学校的项目)。下面是我想做的事情的总结:

  1. 用Python读取.c、.cpp和.py的源文件
  2. 获取源文件中所有函数的列表,以及它们定义的行号范围。

为了更好地说明我的问题,假设有一个名为“helloWorld.cpp”的文件,里面有以下代码(我想用Python读取这个文件):

//start 
#include <iostream>
#include <string>
using namespace std; 

int main(int argc, char** argv)
{
  string str = "Hello World";
  cout << str << endl; 

  return 0;
}
//end 

我想得到的结果大概是这样的:

函数列表:

  • int main(int argc, char** argv)
  • 开始:第7行
  • 结束:第12行

有没有什么好的方法可以实现这个呢?如果能给一些代码示例就太好了!

4 个回答

0

你可以用Python来实现和Clang的连接,或者你也可以直接用Python来解析和分析Clang生成的XML格式的抽象语法树(AST)数据。

1

Pygments可能是个不错的起点。它是用Python写的一个通用代码高亮工具,支持很多编程语言,还有更多你想要解析的内容。你可以在这里找到它:http://dev.pocoo.org/projects/pygments/wiki

3

如果你真的想学习如何解析C语言,建议你看看pycparser。这个工具是基于PLY开发的,所以你从中学到的知识可以用来解析很多其他东西。

不过,解析C++要比解析C或Python复杂得多,所以在深入研究C++之前,建议你先了解一下Python和C。

撰写回答