Clang AST中匹配节点的功能工具

glud的Python项目详细描述


概述

glud是libclang库上的一个抽象,它使 叮当作响的ast简单和Python,以同样的方式libclangastmatchers 对C++ CLANAPI进行操作。

MIT LicenseContinuous IntegrationCoverage Testing Results

示例

在代码段上

// 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 codesubmit a pull request

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java找不到适合makeText的方法   如何将java数组转换为prolog列表并使用它进行jpl查询?   安卓中显示ArrayList的java子类ArrayAdapter   Java8GroupingBy到包含列表的映射中   java Json字符串,带有要映射的嵌套对象<string,string>   java Hibernate中的包和列表有什么区别?   java Spring REST模板指定Jackson视图   java如何在继承的类中返回字符串?   调试Java ArrayQue删除和轮询方法错误   带有NetBeans 7.4的java JSP自定义标记Struts2   java无法从加载jar文件。蝙蝠锉   无法解析java image_项“未显示在下拉列表中且无法键入”   jdoDetachedState设置为null的java查询实体   scala使用Cypher CREATE命令和属性映射,来自Java   minecraft中的java/me并没有被我编写的插件禁用   java Cucumber框架设置   java以奇怪的方式遍历LinkedList?   java JPA将布尔字段配置为保留为整数   月球着陆器中的java Android垃圾收集