Clang AST中匹配节点的功能工具
glud的Python项目详细描述
示例
在代码段上
// input.cpp namespaceX{classY{};}classY{};
您可以将命名空间y中名为x的类与匹配器匹配:
fromgludimport*m=cxxRecordDecl(hasName('Y'),hasAncestor(namespaceDecl(hasName('X'))))tu=parse('input.cpp')matches=walk(m,tu.cursor)
先决条件
安装最新版本的clang和python libclang绑定。关于Ubuntu 值得信赖的是,您可以从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
要运行glud,需要确保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团队或 伊利诺伊州香槟城。
贡献
如果你遇到胶合的问题,log them on GitHub。如果你 想要贡献代码,请fork the code和submit a pull request。