利用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版)
阿里大于是阿里通信旗下产品,融合了三大运营商的通信能力,提供包括短信.语音.流量直充.私密专线.店铺手机号等个性化服务.每条四分五,价钱还算公道,经老农测试,响应速度非常快,基本上是秒到.官方文档提供 ...
随机推荐
- WPF自定义用户控件不显示
1,Themes\Generic.xaml最好不要更名 "Generic.xaml"这个名称并非偶然通过上面的叙述,你可能会有冲动将Generic.xaml中的Style代码剪切出 ...
- Linux命令rz
rz :上传文件:sz: 下载文件: 在linux 系统中,使用rz(或 sz) 命令是,提示 -bash: rz(或者是sz): command not found .这个时候,说明没有安装 lrz ...
- 关于SpringMVC的配置流程以及一些细节
首先说道SpringMvc是什么,SpringMVC是Spring框架里面的一个子框架,它对网站前后端的代码分层做了一套实现,这套实现给我们带来了几个好处,首先第一,SpringMVC实现了一个请求对 ...
- golang 实现文件传输小demo
获取文件信息需要用到os. Stat接口,发送文件前开启接收者(服务端),启动客户端先发送文件名给接收者,接收者收到文件名返回确认信息"ok",才读取本地文件 发送给接收者. 发送 ...
- 【POI】java对excel的读写操作
在工作中需要将mongo中的数据导出到excel中,所以根据需要学习了poi.以下为学习内容的总结: 1.POI是什么? poi是Apache团队开发的专门面对用java处理Excel文档的工具. 官 ...
- PHP编译安装报错:configure: error: mcrypt.h not found. Please reinstall libmcrypt
我是在CentOS6.5安装php5.5.28这个版本,PHP编译代码如下: ./configure --prefix=/usr/local/php --with-config-file-path=/ ...
- call,apply,bind 方法的学习
这是三个常用的操作函数的方法,在js中函数就是一等公民,所以说掌握这三个方法还是有必要的 call 和 apply,都会绑定函数的上下文(context)并立即执行调用该方法函数,两者区别在于,接受的 ...
- gulp在项目中的基本使用
在项目中用gulp做项目的代码的管理,用起来很方便.主要用到了下面一些功能 关于js的处理,包括合并.压缩.加hash. 关于css的处理,编辑scss,合并css,加hash,自动加入前缀 本地开发 ...
- react-redux性能优化之reselect
在React-redux深入理解中,我们知道了 react-redux 是如何将 React 和 Redux 进行连接的,今天来说一下其中存在的性能问题以及改进的方式. 一.存在的性能问题 以 Red ...
- JDBCTM中Statement接口提供的execute、executeQuery和executeUpdate之间的区别
Statement 接口提供了三种执行 SQL 语句的方法:executeQuery.executeUpdate 和 execute.使用哪一个方法由 SQL 语句所产生的内容决定. 方法execut ...