マルチバイト対応完了 - Scheme VM を書く
マルチバイト対応が完了した。
後から見直したときのために簡単にまとめる。
やったことは
- VM が内部扱う文字列を UCS-4 の文字列にした
- VM が入力として受け付ける文字列は UTF-8 とした
- 入力直後に UCS-4 に変換される
- VM が出力する文字列は UTF-8 とした
- 出力直前に UTF-8 に変換される
の3つ。
また同時に VM 内部用の format 関数を書いた。
format をラップすることでエラー処理も以下のように統一的に書ける。
RAISE_ERROR("car: pair required, but got ~s", accum);
accum は文字列ではなく Scheme オブジェクト。