Python
「iTunes Music Library.xml をパースしたい」みたいな話が出ていたので簡単にやってみた。 [ソース] # -*- coding: utf-8 -*- import plistlib file = "iTunes Music Library.xml" xml = plistlib.readPlist(file) # プレイリストの一覧を出力 print "=== …
前回はカーソル位置の型名を取得する方法について書きました。 今回は詳細な型名を取得する方法について書きます。 さて、前回使用した方法では例えば以下のように typedef されている場合、typedef した型名を取得します。 typedef int hoge; hoge h; // h …
前回は Type について簡単に書きました。 今回はその Type の名前を取得する方法について書きます。 [注意] 今回使用している clang_getTypeSpelling なのですが、Clang 3.3 以前の python binding を使用している場合はユーザ側で動的ライブラリから呼び出…
前回からすっかり時間があいてしまいましたがまだ続けますよ。 決して忘れていたわけではない 前回までは Cursor について書いていましたが、今回は型情報について簡単に書きます。 Cursor からその位置の型情報を取得する事ができます。 [ソース] # -*- cod…
前回から少し時間があきました。 前回は definition に関する記事を書きました。 今回は referenced について書きます。 referenced は前回紹介した definition と似ており定義位置を返します。 definition との違いは definition が宣言のみの場合は None …
去年は Ruby、年末辺りから Python を少し使っていたのでそれぞれの個人的な感想をまとめてみるなど。 両方共ガッツリと学習したわけではないのでボケてるかもしれませんが。 [Ruby] Lingr の bot をつくるときに使用 Sinatra + heroku で Web サーバの運用 …
前回は Cursor に関する記事を書きました。 次は型情報について書く予定だったのですが、先に definition 周りについて書きます。 さて、定義位置は Cursor の get_definition() メソッドを使用して取得する事ができます。 [ソース] # -*- coding: utf-8 -* …
前回は SourceLocation に関する記事を書きました。 今回は Cursor について簡単に書きます。 Cursor は指定したファイル位置の情報を取得する事ができます。 [ソース] # -*- coding: utf-8 -* import clang.cindex from clang.cindex import Cursor # sourc…
前回は unsave_files に関する記事を書きました。 今回は diagnostics について簡単に書きます。 diagnostics はパースした結果のエラーや警告などを取得する事ができます。 [ソース] import clang.cindex # source code source = """\ struct X{ const int …
前回は Index に関する記事を書きました。 今回は存在しないファイルをパースする方法について書きます。 Vim などを使用しているとわかりやすいんですが、ファイルは存在していないけど編集中のソースファイルをパースしたい、という事はあると思います。 …
前回は Config に関する記事を書きました。 今回は Index 周りについて簡単に書きます。 libclang では Index を使用してソースコードをパースし、TranslationUnit の生成を行います。 [test.cpp] struct X{ int value1 = 0; float value2 = 0.0f; }; int ma…
前回は Python binding を導入する記事を書きました。 今回は Config 周りについて書きます。 libclang の Python binding(以下、cindex.py)では Config クラスで読み込む動的ライブラリ(以下 libclang)の管理を行います。 Config では以下のような設定…
最近 libclang の Python binding を使用をしようた Vim プラグインを作成しているのでその覚書としてポツポツ書いていこうかと思います。 ibclang とは Clang が提供している構文解析ツールになります。 この構文解析器は Clang から提供されている Python …
Python で実行時間を計測する場合 timeit を使用するのがよいのかな。 [ソース] # -*- coding: utf-8 -* import timeit def test(): "-".join(str(n) for n in range(100)) # number で呼び出し回数を指定 print timeit.timeit('"-".join(str(n) for n in ra…
Visual Studio 上で Python を動作する事が出来る『Python Tools for Visual Studio』を試してみました。 Visual Studio Express Edition だと動かないらしいので、今回は、VS Shell を使用しました。 VS Shell Python Tools for Visual Studio わたしの環境…