Fix Symbol.new_of_string - it should not save
[tiger.ml.git] / compiler / src / lib / tiger / tiger_symbol.ml
CommitLineData
28875fec
SK
1module H = MoreLabels.Hashtbl
2
3type t =
4 { name : string
5 ; symbol : int
6 }
7
35dccbd3 8let counter = ref 0
28875fec
SK
9
10let symbols = H.create 16
11
fd2204fa 12let unique_of_string name =
35dccbd3
SK
13 incr counter;
14 let symbol = !counter in
15 {name; symbol}
16
28875fec
SK
17let of_string name =
18 match H.find_opt symbols name with
fd2204fa
SK
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
28875fec
SK
25
26let to_string {name; _} =
27 name
cbb4ffb6
SK
28
29let is_equal {symbol=s1; _} {symbol=s2; _} =
30 s1 = s2
35dccbd3
SK
31
32let show {name; symbol} =
33 Printf.sprintf "Symbol[%S, %d]" name symbol
This page took 0.019649 seconds and 4 git commands to generate.