Rename "tiger" dir to "compiler"
[tiger.ml.git] / compiler / src / lib / tiger / tiger_symbol.ml
diff --git a/compiler/src/lib/tiger/tiger_symbol.ml b/compiler/src/lib/tiger/tiger_symbol.ml
new file mode 100644 (file)
index 0000000..eb32942
--- /dev/null
@@ -0,0 +1,23 @@
+module H = MoreLabels.Hashtbl
+
+type t =
+  { name   : string
+  ; symbol : int
+  }
+
+let nextsym = ref 0
+
+let symbols = H.create 16
+
+let of_string name =
+  match H.find_opt symbols name with
+  | Some symbol ->
+      {name; symbol}
+  | None ->
+      incr nextsym;
+      let symbol = !nextsym in
+      H.replace symbols ~key:name ~data:symbol;
+      {name; symbol}
+
+let to_string {name; _} =
+  name
This page took 0.029361 seconds and 4 git commands to generate.