![Amazon.co.jp: 2週間でできる! スクリプト言語の作り方 (Software Design plus): 千葉滋: 本](https://cdn-ak-scissors.b.st-hatena.com/image/square/123361660ecf9a702814bae1de977ade3ded9e20/height=288;version=1;width=512/https%3A%2F%2Fm.media-amazon.com%2Fimages%2FI%2F510YcnlCQ7L._SL500_.jpg)
node.js のドキュメントを見ていたら C/C++ で簡単に拡張が書けそうだったので試してみた。 addons - Node.js Manual & Documentation ドキュメントに載っている hello.cc をみてみると: #include <v8.h> using namespace v8; extern "C" void init (Handle<Object> target) { HandleScope scope; target->Set(String::New("hello"), String::New("world")); } この extern "C" void init (Handle<Object> target) というやつが、jsで require("hello") したときに呼ばれる感じらしい。この関数だけは必ず実装する必要がある。 この中の Ha
Xcode3 から Xcode4 に乗り換えていろいろプロジェクト設定を調整していた時に、選択できるコンパイラーがいくつかあるのが気になりました。 "GCC" といえば Linux でお馴染みのコンパイラですけど、それとあわせて Xcode では "LLVM GCC" と "Apple LLVM compiler" というものも選択できるようになっています。 これらについて少し調べてみたところ、なにやら GCC と比べて Apple LLVM compiler の方が、同じコードでもビルドしたバイナリの実行速度が速くなったり、コンパイルの速度が速くなったり、コンパイル時のエラー情報も判りやすく出力してくれるとのことでした。 ちなみに "LLVM GCC" というのは、構文解析を GCC で行うことで、互換性を高めようとしているもののようです。 なかなか良さそうな感じだったので、試しにこれま
yacc/lexとは Cでプログラミング言語の処理系を実装するのであれば、 多くの場合、yaccとlexというツールを使います。 実のところ、Cとyacc/lexで簡単なプログラミング言語を作る、というのは、 以前、「C言語ヨタ話 」で書いた「 電卓を作ってみよう」 の焼き直しになります。yaccとlexの説明もそちらに簡単に書いたので、 そちらを見てください――と言いたいところですが、 まあここでも軽く説明します。 内容的には重複、というかコピペしている部分もありますが。 プログラミング言語の処理系は、通常、以下のような手順を取ります。 字句解析 ソースプログラムを、「字句(トークン)」の並びに分割する処理です。 構文解析 トークンの並びから、解析木を構築する処理です。 この後、Cなどの機械語を吐くコンパイラや Javaのようなバイトコードを吐くコンパイラなら、 「コード生成」という処理
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く