きりかノート 3冊め

おあそびプログラミング

C言語の対話環境ccons

cfe-dev MLに流れていた「[ANN] ccons : an interactive console for C based on clang and LLVM

clang/LLVMを利用した、irbのようなC言語の対話環境"ccons"というプロジェクトの告知。名前は似てるけどsconsとはぜんぜん関係ない。

Cのインタプリタというのはこれまでにもあったけれど、clangのライブラリを使ってるのはたぶん初じゃないかな。さっきチェックアウトしたr165でtestディレクトリを除いたファイルの総行数が3,000程度なのがライブラリのパワーだよね。#includeとかも処理できるのがなんかふしぎ。

README.txtにビルド手順が書いてあるので、そのとおりにやれば構築できる。cmakeはMacPortsのパッケージがあるので、それが使える。libeditはMacにあるのでインストール不要。

CoreFoundationもいけそうなのでCFStringを試してみた。ヘッダの検索パスは環境変数のCPATHやC_INCLUDE_PATHで追加できる(clangのlib/Frontend/InitHeaderSearch.cpp参照)。ライブラリはdyldの環境変数DYLD_INSERT_LIBRARIESでつっこむ。

% DYLD_INSERT_LIBRARIES=/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation \
CPATH=/opt/local/include/clang-1.0 ./ccons
    
>>> CFStringRef str; >>> str = CFSTR("ccons"); => (CFStringRef) 0x2880038 >>> CFShow(str); ccons >>> CFShow(CFStringCreateWithSubstring(NULL, str, CFRangeMake(0,3))); cco
ということで動いた。 Objective-C対応もそのうち実装されたりして。