用于匹配 clang AST 中节点的功能工具
项目描述
概述
Glud 是 libclang 库的抽象,它使 Clang AST 的匹配片段变得简单和 Pythonic,就像libclangastmatchers 为 C++ Clang API 所做的那样。
例子
在代码片段上
// input.cpp
namespace X {
class Y {};
}
class Y {};
您可以将命名空间 Y 中名为 X 的类与匹配器匹配:
from glud import *
m = cxxRecordDecl(
hasName('Y'),
hasAncestor(namespaceDecl(hasName('X'))))
tu = parse('input.cpp')
matches = walk(m, tu.cursor)
先决条件
安装最新版本的 Clang 和 python libclang 绑定。在 Ubuntu Trusty 上,您可以从 LLVM apt 存储库安装预构建的二进制文件:
wget -O - http://llvm.org/apt/llvm-snapshot.gpg.key | sudo apt-key add -
echo "deb http://llvm.org/apt/trusty/ llvm-toolchain-trusty-3.8 main" | sudo tee -a /etc/apt/sources.list
sudo apt-get update -qq
sudo apt-get install -y python-clang-3.8 libclang1-3.8
要运行 glu,您需要确保 libclang.so 在您的加载程序路径上。
export LD_LIBRARY_PATH=/usr/lib/llvm-3.8/lib
安装
您可以从 PyPI 安装最新的稳定版本
$ pip install glud
或者,您可以从 GitHub 安装最新的开发版本
$ pip install git+git://github.com/AndrewWalker/glud.git
致谢
该项目与 LLVM 团队或伊利诺伊大学厄巴纳-香槟分校无关。
贡献
如果您在使用 gud 时遇到问题,请将其记录在 GitHub 上。如果您想贡献代码,请分叉代码并提交拉取请求。