[通勤電車でScheme処理系日記] 8駅目 REPLが動いた
コツコツScheme処理系を書いています。多忙なので移動電車の中だけでの作業です。1.5h/day くらいの作業時間です。
インタプリタらしきものが動いたー。
ずっと作ってたバイトコード仮想マシンと、以前に作ってあったlexer・parserを接続して、REPL( read-eval-print loop )が動くようになりました。S式を評価して加減算ができます。
これからの作業としては…
とかが必要ですねー。
$ ./yourzone >>> (+ 1 2 3) LOADSYM pc = 0, sp = 0 LOADVAL pc = 2, sp = 1 LOADI pc = 3, sp = 2 LOADI pc = 5, sp = 3 LOADI pc = 7, sp = 4 CALL pc = 9, sp = 5 SWAP pc = 11, sp = 2 POP pc = 12, sp = 2 EOP pc = 13, sp = 1 => 6 >>> (+ (+ 1 2 3) (+ 4 5 6)) LOADSYM pc = 0, sp = 0 LOADVAL pc = 2, sp = 1 LOADSYM pc = 3, sp = 2 LOADVAL pc = 5, sp = 3 LOADI pc = 6, sp = 4 LOADI pc = 8, sp = 5 LOADI pc = 10, sp = 6 CALL pc = 12, sp = 7 SWAP pc = 14, sp = 4 POP pc = 15, sp = 4 LOADSYM pc = 16, sp = 3 LOADVAL pc = 18, sp = 4 LOADI pc = 19, sp = 5 LOADI pc = 21, sp = 6 LOADI pc = 23, sp = 7 CALL pc = 25, sp = 8 SWAP pc = 27, sp = 5 POP pc = 28, sp = 5 CALL pc = 29, sp = 4 SWAP pc = 31, sp = 2 POP pc = 32, sp = 2 EOP pc = 33, sp = 1 => 21