コンパイラを VM で動かす3 - Scheme VM を書く

ひたすらテストが通るようにがんばるぜよ。

  • 正規表現リテラルの出力がおかしい。#が抜けている => ok
    • 文字列ライブラリが GC 前提なのにマクロを定義していなくて delete[] されてた
  • (string-split "12\n34\n56" #\newline) のコンパイルがおかしい
    • 文字列のネストのときに他の対応を忘れたっ。
  • unquote の外部表現が Gauche と異なる。
    • (write '(unquote a)) => ,a こういうやつ。
    • R5RS 的にはこの外部表現は実装ごとに異なってOKと書いてあるが、とりあえず合わせた。
    • write はひとつのスクリプトで何万回も呼ばれることは稀なのでそこまで速度に神経質にならないようにしようと自戒

というわけで 253個のコンパイルテスト通った!。