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/clanghttps://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