memo.xight.org

日々のメモ

clang の python binding (libclang-py3) + Python3

Summary

python binding を Python3で動かす。

install

$ pyvenv env
$ source env/bin/activate
$ pip install libclang-py3


dump_tree_py3.py

(http://blog.fenrir-inc.com/jp/2011/07/clang_syntax_analysis_interface_with_python.html)
Macの場合, Xcode.app 内の libclang.dylib を指定すること。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# python dump_tree_py3.py test.m

import sys
import clang.cindex
from clang.cindex import Config

Config.set_compatibility_check(False)
Config.set_library_file("/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/libclang.dylib")

def visit_node(node, indent=0):
	print('%s%s : %s' % (' ' * indent, node.kind.name, node.spelling))
	for c in node.get_children():
		visit_node(c, indent=indent+1)

index = clang.cindex.Index.create()
tree = index.parse(sys.argv[1])
visit_node(tree.cursor)


実行

$ python dump_tree_py3.py src.c


Reference

llvm-mirror/clang
https://github.com/llvm-mirror/clang/tree/master/bindings/python

BitBucket - Anteru/python3-libclang
https://bitbucket.org/Anteru/python3-libclang

Fenrir Developer's Blog - 2011-07-11 - Clang の構文解析インターフェースを Python から叩いてみようという話
http://blog.fenrir-inc.com/jp/2011/07/clang_syntax_analysis_interface_with_python.html

脱初心者を目指す - 2015-01-08 - Clangのpython bindingsを使う
http://asdm.hatenablog.com/entry/2015/01/08/170707

StackOverflow - clang_complete: where is the libclang.{so,dylib} in OS X?
http://stackoverflow.com/questions/6000554/clang-complete-where-is-the-libclang-so-dylib-in-os-x

C++でゲームプログラミング - 2014-01-18 - libclang の Python binding を使用する
http://d.hatena.ne.jp/osyo-manga/20140118/1390045795