X-Git-Url: https://git.xandkar.net/?a=blobdiff_plain;f=tiger%2Fsrc%2Flib%2Ftiger%2Ftiger_symbol.ml;fp=tiger%2Fsrc%2Flib%2Ftiger%2Ftiger_symbol.ml;h=eb32942e227ac09ca926df0eb2a9d78c678645bc;hb=28875fece2374a41510edbef416311c308695774;hp=0000000000000000000000000000000000000000;hpb=4309a757776e6528be720605fe04442ae46c39b8;p=tiger.ml.git diff --git a/tiger/src/lib/tiger/tiger_symbol.ml b/tiger/src/lib/tiger/tiger_symbol.ml new file mode 100644 index 0000000..eb32942 --- /dev/null +++ b/tiger/src/lib/tiger/tiger_symbol.ml @@ -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