X-Git-Url: https://git.xandkar.net/?p=tiger.ml.git;a=blobdiff_plain;f=compiler%2Fsrc%2Flib%2Ftiger%2Ftiger_symbol.ml;fp=compiler%2Fsrc%2Flib%2Ftiger%2Ftiger_symbol.ml;h=747cb03f0e717c77a3878a975b0ba59f5b8e024c;hp=b5d895b084b428fb7cb03d0337aae6995d6db0f0;hb=fd2204fa98928a900f303209818dce7f2bae3c8a;hpb=35dccbd3999a8c3bb1dc9e96e21b69a39f44fc6f diff --git a/compiler/src/lib/tiger/tiger_symbol.ml b/compiler/src/lib/tiger/tiger_symbol.ml index b5d895b..747cb03 100644 --- a/compiler/src/lib/tiger/tiger_symbol.ml +++ b/compiler/src/lib/tiger/tiger_symbol.ml @@ -9,20 +9,19 @@ let counter = ref 0 let symbols = H.create 16 -let next name = +let unique_of_string name = incr counter; let symbol = !counter in {name; symbol} -let new_of_string name = - let t = next name in - H.replace symbols ~key:t.name ~data:t.symbol; - t - let of_string name = match H.find_opt symbols name with - | Some s -> {name; symbol=s} - | None -> new_of_string name + | Some symbol -> + {name; symbol} + | None -> + let t = unique_of_string name in + H.replace symbols ~key:t.name ~data:t.symbol; + t let to_string {name; _} = name