利用Clang(Python接口)来解析C++
1 背景说明
最近希望利用开源库来解析C++头文件,并做一些自动翻译、自动注释之类的工作。经过两天的调研,发现clang最有希望满足需求。clang提供了三套接口来共外部使用,liblang最适合作为独立工具开发使用。不过提供的原生接口是C++的,成本略高,本文记录下libclang的Python接口使用方法。
相关文档及下载链接如下:
clang(llvm) 接口官方文档:http://clang.llvm.org/docs/Tooling.html
clang(llvm) 下载页面(源码/二进制):http://releases.llvm.org/download.html#8.0.0
llvm非官方Python接口工程(不需要单独下载):https://github.com/llvm-mirror
2 clang(llvm) Python接口安装
MacOSX平台的方法可以参考这篇文章《Parsing C++ in Python with Clang》
Windows平台安装方法如下:
(1)安装 clang(llvm) 可执行二进制包,请看前文的clang(llvm)下载页面;
(2)安装clang 的Python三方库:
pip install clang==版本号 # 我这里没有输入版本号也没问题 或者 python setup.py install # 自行下载clang(llvm)的Python工程
(3)在Python工程中需要指定 libclang.dll (Linux平台对应是libclang-8.0.so.1)所在路径,可以自行搜索一下(例如现在是 C:\Program Files\LLVM\bin\libclang.dll )
from clang.cindex import Config
from clang.cindex import Index
libclangPath = r'C:\Program Files\LLVM\bin'
if Config.loaded:
pass
else:
print 'Load'
Config.set_library_path(libclangPath)
(4)参考文章:http://eli.thegreenplace.net/2011/07/03/parsing-c-in-python-with-clang/
核心来讲,libclang是个共享库,其接口能力集中在 clang/include/clang-c/Index.h,libclang附带了Python绑定,它位于clang/bindings/python中,位于模块clang.cindex中。该模块依赖于ctypes来加载动态libclang库,并尝试使用Pythonic API尽可能多地包装libclang
利用Clang(Python接口)来解析C++的更多相关文章
- Caffe学习系列(13):数据可视化环境(python接口)配置
caffe程序是由c++语言写的,本身是不带数据可视化功能的.只能借助其它的库或接口,如opencv, python或matlab.大部分人使用python接口来进行可视化,因为python出了个比较 ...
- Python之XML解析详解
什么是XML? XML 指可扩展标记语言(eXtensible Markup Language). XML 被设计用来传输和存储数据. XML是一套定义语义标记的规则,这些标记将文档分成许多部件并对这 ...
- caffe(13) 数据可视化(python接口)配置
caffe程序是由c++语言写的,本身是不带数据可视化功能的.只能借助其它的库或接口,如opencv, python或matlab.大部分人使用python接口来进行可视化,因为python出了个比较 ...
- Caffe学习系列(11):数据可视化环境(python接口)配置
参考:http://www.cnblogs.com/denny402/p/5088399.html 这节配置python接口遇到了不少坑. 1.我是利用anaconda来配置python环境,在将ca ...
- python中html解析-Beautiful Soup
1. Beautiful Soup的简介 简单来说,Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据.官方解释如下: Beautiful Soup提供一些简单的.pyt ...
- python接口自动化(十)--post请求四种传送正文方式(详解)
简介 post请求我在python接口自动化(八)--发送post请求的接口(详解)已经讲过一部分了,主要是发送一些较长的数据,还有就是数据比较安全等.我们要知道post请求四种传送正文方式首先需要先 ...
- Windows7 64下搭建Caffe+python接口环境
参考链接: http://www.cnblogs.com/yixuan-xu/p/5858595.html http://www.cnblogs.com/zf-blog/p/6139044.html ...
- python接口自动化28-requests-html爬虫框架
前言 requests库的好,只有用过的人才知道,最近这个库的作者又出了一个好用的爬虫框架requests-html.之前解析html页面用过了lxml和bs4, requests-html集成了一些 ...
- 利用阿里大于接口发短信(Delphi版)
阿里大于是阿里通信旗下产品,融合了三大运营商的通信能力,提供包括短信.语音.流量直充.私密专线.店铺手机号等个性化服务.每条四分五,价钱还算公道,经老农测试,响应速度非常快,基本上是秒到.官方文档提供 ...
随机推荐
- shell编程规范
1 脚本名以.sh结尾,名称尽量见名之意,比如ClearLog.sh Clear_Log.sh clearlog.sh SerRestart.sh Ser_Restart.sh;2 尽量使用UTF-8 ...
- Vue-cli里面引用stylus遇到的问题总结
1.stylus的调用 在vue-cli中用到stylus样式处理器的时候一定要引用两个对应的报stylus stylus-loader 命令:cnpm install stylus stylus- ...
- shell 删除颜色代码
sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"
- SpringJPA主键生成采用自定义ID,自定义ID采用年月日时间格式
自定义主键生成策略 在entity类上添加注解 @Id @GeneratedValue(strategy = GenerationType.AUTO, generator = "custom ...
- Jdbc来操作事物 完成模拟银行的转账业务
创建JDBC工具类 package cn.aa4_2.JDBCUtils; import java.io.FileReader; import java.io.IOException; import ...
- 兄弟连学python---网络简介
网络简介 1.什么是网络 网络是辅助双方能够连接在一起的工具 使用网络的目的 为了联通多方然后进行通讯,能够让软件在不同的电脑上运行,相互传输数据 网络的发展 网络协议 什么是协议 约定俗成的,没有理 ...
- SQL学习 存储过程&DUAL表
CREATE OR REPLACE PROCEDURE 存储过程 转自 https://www.cnblogs.com/lideng/p/3427822.html oracle中dual表的用途介绍 ...
- ubuntu16.04如何安装floodlight并且连接eclipse
按顺序走,亲测没出错.用的是Luna R版本的eclipse https://floodlight.atlassian.net/wiki/spaces/floodlightcontroller/pag ...
- 在树莓派2或3的kali上 RCA(a/v connector)接口的正确使用方法(多图)(原创)
AV接口又称(RCA),AV接口算是出现比较早的一种接口,它由黄.白.红三种颜色的线组成,其中黄线为视频,红色为左声道,白色为右声道. ...
- (转)volatile 的理解
对于(volatile unsigned char *)0x20我们再分析一下,它是由两部分组成: 1) (unsigned char *)0x20,0x20只是个值,前面加(unsigned cha ...