C言語の対話環境ccons
cfe-dev MLに流れていた「[ANN] ccons : an interactive console for C based on clang and LLVM」
- http://lists.cs.uiuc.edu/pipermail/cfe-dev/2009-April/004960.html
- http://code.google.com/p/ccons/
- http://fizzysoft.net/personal/ccons.pdf
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対応もそのうち実装されたりして。