トップページ⇒tech
13コメント4KB

小さなLispインタプリタの実装

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
行数が小さい(せめて500-1000行ぐらい。。。)
Lispインタプリタの実装ありませんか?

いかにもありそうなTinyLispとかで探すと
http://www.cco.caltech.edu/~rona/tlisp.html
などあるにはあるのですがソースコードがありません。

Guileは自分には大きすぎてパンクしてしまってます。
0002デフォルトの名無しさんNGNG
http://www.gihyo.co.jp/javapress/java9/lisp.html
0003デフォルトの名無しさんNGNG
scheme でよければ、
http://www.cs.indiana.edu/scheme-repository/imp.html
で探すとよいでしょう。

minischeme が public domain だし小さいけど、それでも 2451 行。
小ささにこだわらなければ SIOD あたりの方がいいとは思うけど。

どういうことをやるんですか ?
00041NGNG
どうもです。
Lispを勉強してるんですがCが染みついてるせいか
全然頭に入ってこないので、せめて作るのが楽しい
インタプリタをC言語で作ってます。

が、quoteとかGCとかどうなってるのかわからないし、
Lisp言語自体もそれほど出来るわけじゃないので
インタプリタのコードを読んでみようと思ったんです。。。

欲を言うと、quote@`cons@`define@`let@`lambda@`display@`ifぐらいの
超ミニなのが希望だったりします。
0005名前ついてますか?NGNG
quoteは単に parserの問題では..
GCはこりだすといくらでも凝れるから、最初は ConservativeGC
でも使うのがいいのかも。
# Lispを作る本も 2冊ぐらいあったよなあ。
# 「やさしいLISP」(藁) とか...
0006デフォルトの名無しさんNGNG
たしかTynySchemeだかのソースとそれの元になったソフトのソース
はあったぞ。1の挙げてるソフトとは違うようだが。
しかも、どっちかはうれしいことにパブリックドメインだった。
0007デフォルトの名無しさんNGNG
1の要件の
define
display
if
lambda
let
quote
それにgcや継続(call-with-current-continuation)とか一応実装してるみたいだね。
ちゃんと動くか知らないけど。
これで十分なんじゃ?>1
00087NGNG
あ、miniscmのことね。
作者も日本人だから日本語で連絡取れるし。
00091NGNG
>>7
十分なんですけど逆に機能がありすぎるというか、、、、

もしも、他に何か見つけたら教えてください。
00107NGNG
機能縮小したきゃ自分でしろ、クズ!>1
00117NGNG
つーかこの程度自分で作れよ…。
参考になるソース沢山あるだろ。
0012デフォルトの名無しさんNGNG
まぁ1の気持ちわからんでもないんで、ほれ。

ttp://www.smop.com/darius/awklisp.tar.gz
ttp://ganley.org/software/jslisp.html

どっちもとっかかりにはいんじゃないかな。
本気でやるなら「計算機プログラムの構造と解釈」読んどけ。
00131NGNG
ありがとうございます。
実はquoteとかも克服して結構出来てるんですが
つまずいてます。

2つのリンクも見てみます。
本の方も面白そうなのでさっそく購入します。

http://www.mmjp.or.jp/pearsoned/washo/prog/wa_pro20-j.html

がんばります。
■ このスレッドは過去ログ倉庫に格納されています