Rough frame allocations
[tiger.ml.git] / compiler / src / lib / tiger / tiger_temp.ml
CommitLineData
cc540a7e
SK
1open Printf
2
3module Sym = Tiger_symbol
4
5module Counter : sig
6 type t
7
8 val create : unit -> t
9
10 val next : t -> int
11end = struct
12 type t = int ref
13
14 let create () =
15 ref 0
16
17 let next t =
18 incr t;
19 !t
20end
21
22module Temp = struct
23 type t = int
24
25 let t = Counter.create ()
26
27 let gen () =
28 Counter.next t
29
30 let to_string t =
31 sprintf "t%d" t
32end
33
34module Label = struct
35 type t = Sym.t
36
37 let counter = Counter.create ()
38
39 let of_string =
40 Sym.of_string
41
42 let gen () =
43 of_string (sprintf "L%d" (Counter.next counter))
44
45 let to_string =
46 Sym.to_string
47end
This page took 0.019341 seconds and 4 git commands to generate.