Fix Symbol.new_of_string - it should not save
[tiger.ml.git] / compiler / src / lib / tiger / tiger_symbol.ml
1 module H = MoreLabels.Hashtbl
2
3 type t =
4 { name : string
5 ; symbol : int
6 }
7
8 let counter = ref 0
9
10 let symbols = H.create 16
11
12 let unique_of_string name =
13 incr counter;
14 let symbol = !counter in
15 {name; symbol}
16
17 let of_string name =
18 match H.find_opt symbols name with
19 | Some symbol ->
20 {name; symbol}
21 | None ->
22 let t = unique_of_string name in
23 H.replace symbols ~key:t.name ~data:t.symbol;
24 t
25
26 let to_string {name; _} =
27 name
28
29 let is_equal {symbol=s1; _} {symbol=s2; _} =
30 s1 = s2
31
32 let show {name; symbol} =
33 Printf.sprintf "Symbol[%S, %d]" name symbol
This page took 0.052803 seconds and 4 git commands to generate.