boolean operatorに対応

http://github.com/mzp/scheme-abc/tree/master
bool値を返す演算子がいくつか使えるようになった。が、リテラルの#tや#fには対応していない中途半端っぷり。#tのパース、面倒そうだなぁ。

$ cat bool.scm
(print (> 1 10))
$ ocamlbuild main.byte -- bool.scm
Finished, 45 targets (44 cached) in 00:00:01.
$ avmplus a.abc
false

あと、今回から手でABCの命令を追加するのではなくコードジェネレータに生成させるようにした。

# Arith
Add_i: op=0xc5; stack= ~-1
Subtract_i: op=0xc6; stack= ~-1
Multiply_i: op=0xc7; stack= ~-1
Divide: op=0xa3; stack= ~-1
...

のようなテキストファイルから

let get_config = function
| Add_i  -> {default with op=0xc5; stack= ~-1}
| Subtract_i  -> {default with op=0xc6; stack= ~-1}
| Multiply_i  -> {default with op=0xc7; stack= ~-1}
| Divide  -> {default with op=0xa3; stack= ~-1}
...

のような関数や

 type instruction =
| Add_i
| Subtract_i
| Multiply_i
| Divide

のような型宣言を生成するようにした。
これで、id:mzp:20080515:expressionの問題が解決したはず。