Module Generator__.Match

val check_arg : Generator__.Instruction.reg_i -> Generator__.Register_table.reg_tbl -> int -> Analyzer.b_arg -> Generator__.Register_table.reg_tbl * Generator__.Instruction.lhs_inst list

アトムの引数のリンクのマッチングを行う命令を生成する

val check_ref_neq_of : Generator__.Instruction.reg_i -> Generator__.Instruction.reg_i -> Generator__.Instruction.lhs_inst

リンクの非単射的マッチングを行うための命令

val check_atom : (string * Analyzer.b_arg list) -> Generator__.Register_table.reg_tbl -> Generator__.Instruction.reg_i -> Generator__.Register_table.reg_tbl * Generator__.Instruction.lhs_inst list

アトムのマッチングを行う命令を生成する

val check_ind : (int * int) list -> Generator__.Register_table.reg_tbl -> Generator__.Instruction.reg_i -> Analyzer.b_ind -> Generator__.Register_table.reg_tbl * Generator__.Instruction.lhs_inst list

インダイレクションのマッチングを行う命令を生成する

val functor_of : Analyzer.b_ind -> string * int

ルール左辺のインダイレクションからファンクタを取得する

val find_atom : (int * int) list -> Generator__.Register_table.reg_tbl -> Analyzer.b_ind -> Generator__.Register_table.reg_tbl * Generator__.Instruction.lhs_inst list

reg_tbl を受け取って,更新した reg_tbl と 生成した中間命令列を返す

val find_atoms : (int * int) list -> Generator__.Register_table.reg_tbl -> Analyzer.b_ind list -> Generator__.Register_table.reg_tbl * Generator__.Instruction.lhs_inst list

引数に local_indegs reg_tbl inds をとる

val match_ : ((int * int) list * Analyzer.b_ind list) -> ((string * string) list * (string * int) list) -> Generator__.Register_table.reg_tbl * Generator__.Instruction.lhs_inst list

ルール左辺を中間命令列に変換する