Previous Up Next

Module Temp

All this is stub code, especially the one for temporaries. I use integers, to make it printable.
type temp = int

class tempcounter =
     object
     val mutable x = 100 (∗ why does it start at 100 ∗)
     method inc () = x ← x+1
     method get() = x
   end

let tc = new tempcounter

module Intkey : Table.INTKEY with type key = temp =
   struct
     type key = temp
     let get_int x = x
end

module Table : Table.TABLE
     Table.IntmaptableFun(Intkey)

let getnewtemp () = tc#inc(); tc#get()

type label = Symbol.symbol

class labelcounter = 
   object
   val mutable x = 0
   method inc() = x ← x+1
   method get() = x
end

let lc = new labelcounter

let getnewlabel () = lc#inc(); Symbol.symbol_of_string("L"^string_of_int(lc#get()))

let getnamedlabel s = Symbol.symbol_of_string s

for debugging
let string_of_temp t = "t_" ^ string_of_int t 
let label_of_string = Symbol.symbol_of_string
let string_of_label = Symbol.string_of_symbol

 ,
Previous Up Next