500行Lisp


組み込み用途で500行のLispインタプリタ作ってみました。

使用言語はC++でboostライブラリ使ってます、

コンパイルは

Windowsでcygwinをつかっているのならば、

最新のcygwin setup.exeで、devel -> boost-devel、gcc-c++ を選択し

ソースコードをテキスト保存して

> g++ hoge.cpp -o a.exe

でコンパイルできます

(Linuxや、そのほかのコンパイラでのboost C++ Libraries インストールにかんしてはコチラのサイトLet's Boostが詳しいです)

実行は、こんな感じ、

> a.exe "(+ (* 3 4 5) (* 5 6 7))"

とりあえず四則演算と比較関数、if文と文字列の足し算とlambdaとクロージャーしか実装してません。 これからスレッドとか、ソケット周りとかを実装しようとおもってるんですが、 作法がわからない、そもそもLispの一般的なルールとかがわからない、 関数名とか速度とかいろいろな面でダメダメ、

ソースコードはいまのとこ、こんなんです。(かなり読みにくいです)

http://noncopyable.hp.infoseek.co.jp/soft01/lisp03.html

データはS式モドキで、パーサーが一括コンバートしたあと、ソースを全く読まないで動作します。

Lisp自体はよく知りません、なのでこのまま俺言語になりそうです、

だれかひまなひとが軌道修正してくれるとありがたいのですが。

http://noncopyable.hp.infoseek.co.jp/soft01/lisp06.html ちょっとマシに。


最終更新 : 2007/01/18 16:09:37 UTC