Open1
手抜きの限りを尽くしてScheme処理系を作りたい
とりあえずギリギリまで機能を絞れば既存のパーツにちょっと手を加えるだけでScheme処理系にはなるんじゃないかという気がしている。
前回:
仕様
-
define-macro
はトップレベルに書ければ十分。let
とかlambda
の内部に書ける必要はない。(現在の)BiwaSchemeと同じ仕様。 - コンパイルエラーとかの行番号はちゃんと出せて欲しい。これはソースコードをreadした時のそれぞれのpairにメタデータを付与できるようにすることで実現する。処理系側にweak hashtableがあれば & macro expanderにその辺の配慮があれば良いね。
後者の特徴は無いと死ぬ程ではないから、一旦省略して試作する。つまり製作すべきは define-macro
が含まれるSchemeプログラムと既知のマクロ集合を受けとり、define-macro
の無いプログラムに変換する物 だな。それ以降の処理系はまぁ何度も作ってるし簡単だろう。