And*_*Geo 4 preprocessor llvm lexer llvm-clang
我正在做论文,我必须将源代码解析并标记为单个函数.对于每个函数,我想提取类型的名称,称为函数名称和类型转换.铿锵声是这种工作的正确工具吗?如果是,我该怎么做?
下面是一个简单的C函数.粗体是我想要的提取项目:
static char func1(unsigned int a, struct foo *b)
{
int c = 0;
struct bar *d;
if (a == 0) {
d = func2((int) a);
} else {
c = func3((struct bar *) b);
}
return c;
}
是的,Clang是完成这项工作的合适工具.
你应该看一看libclang.
你可以在互联网上找到足够的信息,但我个人可以推荐两篇很棒的文章:
用Eli Bendersky的Clang解析Python中的C++
Mike Ash 介绍libclang
如果您更喜欢观看视频,那么我建议您查看libclang此处的演示文稿:2010 LLVM开发者大会,寻找libclang: Thinking Beyond the Compiler