Module Generator__.Register_table

type reg_tbl = {
matched_atoms : (Generator__.Instruction.functor_ * Generator__.Instruction.reg_i) list;

all the indices of registers which store the address of the matched atoms on lhs

local2reg_i : (int * Generator__.Instruction.reg_i) list;

局所リンクがマッチしたアドレスを格納しているレジスタ番号の連想リスト

free2reg_i : (string * Generator__.Instruction.reg_i) list;

自由リンクがマッチしたアドレスを格納しているレジスタ番号の連想リスト

free_reg_i : int;

まだ使っていないレジスタ番号の最小値(= レジスタの数)

}

An environment for the matching and pushout

val empty_reg_tbl : reg_tbl
val get_free_reg_i : reg_tbl -> int * reg_tbl