libclang的扩展Python绑定集
项目描述
Sealang是libclang的改进版Python绑定集。
libclang的上游维护者对解决诸如Python 3兼容性等问题以及API中的重大遗漏(如提取字面量和运算符)的补丁反应并不积极。
此软件包是libclang官方Python绑定的分支,修补以纠正这些问题。
安装
要编译Sealang,您需要
安装LLVM(带有clang)
设置一些环境变量
安装Sealang
所需的命令在不同平台上会有所不同。
OS X
尽管OS X提供了Clang,但它没有提供所有开发头文件,因此您需要安装。使用Homebrew 是最简单的方法。按照Homebrew主页上的安装说明进行操作;一旦安装了Homebrew,您就可以运行
$ brew install llvm --with-clang --with-asan
以获取带有clang的工作安装的llvm。
然后,您需要设置以下环境变量
$ export LLVM_HOME=/usr/local/opt/llvm $ export DYLD_LIBRARY_PATH=$LLVM_HOME/lib
最后,您可以安装Sealang
$ pip install sealang
Ubuntu 14.04 (Trusty)
要在Ubuntu 14.04(Trusty)下编译,您需要获取LLVM的更新版本。
$ sudo apt-get install libclang-3.6 clang-3.6 -y
然后,您需要设置以下环境变量
$ export LLVM_HOME=/usr/lib/llvm-3.6 $ export LD_LIBRARY_PATH=$LLVM_HOME/lib
最后,您可以安装Sealang
$ pip install sealang
其他平台
在其他平台上的安装说明应该类似。如果您为某个平台开发了构建说明,请提交一个pull请求。
使用方法
Sealang提供了libclang提供功能的一个超集。这些功能包括:
Cursor对象有4个额外的属性
literal - 文字表达式的值。在IntegerLiteral、FloatingLiteral、StringLiteral、CharacterLiteral和CXXBooleanLiteral节点上可用。
operator - 运算符的可打印版本。仅在BinaryOperator、UnaryOperator和CompoundAssignOperator游标节点上可用。
binary_operator - 描述BinaryOperator或CompoundAssignOperator节点的一个枚举值。
unary_operator - 描述UnaryOperator节点的一个枚举值。
BinaryOperator - 二元运算符类型的枚举
BinaryOperator.INVALID
BinaryOperator.PTRMEMD
BinaryOperator.PTRMEMI
BinaryOperator.MUL
BinaryOperator.DIV
BinaryOperator.REM
BinaryOperator.ADD
BinaryOperator.SUB
BinaryOperator.SHL
BinaryOperator.SHR
BinaryOperator.LT
BinaryOperator.GT
BinaryOperator.LE
BinaryOperator.GE
BinaryOperator.EQ
BinaryOperator.NE
BinaryOperator.AND
BinaryOperator.XOR
BinaryOperator.OR
BinaryOperator.LAND
BinaryOperator.LOR
BinaryOperator.ASSIGN
BinaryOperator.MULASSIGN
BinaryOperator.DIVASSIGN
BinaryOperator.REMASSIGN
BinaryOperator.ADDASSIGN
BinaryOperator.SUBASSIGN
BinaryOperator.SHLASSIGN
BinaryOperator.SHRASSIGN
BinaryOperator.ANDASSIGN
BinaryOperator.XORASSIGN
BinaryOperator.ORASSIGN
BinaryOperator.COMMA
BinaryOperator.UNKNOWN
UnaryOperator - 描述一元运算符类型的枚举
UnaryOperator.INVALID
UnaryOperator.POSTINC
UnaryOperator.POSTDEC
UnaryOperator.PREINC
UnaryOperator.PREDEC
UnaryOperator.ADDROF
UnaryOperator.DEREF
UnaryOperator.PLUS
UnaryOperator.MINUS
UnaryOperator.NOT
UnaryOperator.LNOT
UnaryOperator.REAL
UnaryOperator.IMAG
UnaryOperator.EXTENSION
UnaryOperator.UNKNOWN
工作原理
Sealang有点儿“邪恶”。libclang是一组C语言绑定到C++ API的C语言库;然后使用Python的ctypes来包装C API。然而,尽管C++ API非常丰富,但libclang相对较少。
Sealang通过提供围绕提供有用功能的C++调用周围的C包装器来弥合这个差距。这个C函数库被包装成一个Python C模块进行分发 - 这个C模块不包含暴露的Python对象或方法,但由于它是一个模块,因此底层的编译好的sealang.so文件很容易找到。ctypes被用来暴露sealang包装器函数;
内部,Sealang重现了libclang API的一些小部分;这些是(如字符串创建和操作方法)未作为符号暴露给第三方使用的功能。
所有这些功能都可能是传递给libclang的上游候选。
与Clang的关系
该项目旨在反映目前Python绑定到libclang中可用的内容。此项目的版本号来自官方clang存储库的版本和SVN修订版本。
对libclang所做的任何更改都将在此处反映;在此处所做的任何更改,如果可能,将推送到libclang。
社区
Sealang 是 BeeWare 套件的一部分。[BeeWare 套件] 您可以通过以下方式与社区交流:
通过BeeWare 用户邮件列表,了解如何使用 BeeWare 套件。
通过BeeWare 开发者邮件列表,讨论 BeeWare 套件新功能的开发以及套件中新工具的想法。
贡献
如果您在使用 Sealang 时遇到问题,请在 GitHub 上记录它们。如果您想贡献代码,请Fork 代码并提交拉取请求。
项目详情
下载文件
下载适用于您平台的应用程序。如果您不确定选择哪个,请了解更多关于安装软件包的信息。
源分布
构建分发
sealang-3.9.dev259750.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 396bf5c23ad5615b2e6a3866435fe4d7e17920bb00cfa80fc24ac737cd444960 |
|
MD5 | ab08839da6edad10b5f5b3cb1899fd25 |
|
BLAKE2b-256 | 50f6dbae5a114494f2d7dc4a3a410f8bed187ef9a30856d3e10fb60ef7a2ce79 |
sealang-3.9.dev259750-cp34-cp34m-macosx_10_9_x86_64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b23ec8ca60ac5a50044c93a9225fcb0c45523db5ebd558e687aeb8959acd818f |
|
MD5 | df866575947479a487a0bc55e5cd99ca |
|
BLAKE2b-256 | 9947ba1491ecc86ede4b8c46e6044ca1a00705d383a5c695390e0c077ec3fca5 |
sealang-3.9.dev259750-cp27-none-macosx_10_9_x86_64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0a6ac1365578c90022bb5af56520b476442e96264cc5696996a3aa94e804d2d7 |
|
MD5 | bb833c1571ff77a1280585a8a0f3f8aa |
|
BLAKE2b-256 | 02a8f4e643d0af6a40c5a57fc5be0a3db6a88aab0a1dacf2af0dd3c802fd0ac1 |