2 module Sym = Tiger_symbol
3 module Type = Tiger_env_type
4 module Value = Tiger_env_value
13 { typs = Type.built_in
14 ; vals = Value.built_in
18 let get_typ {typs; _} k =
21 let get_val {vals; _} k =
25 {t with typs = Map.set t.typs ~k ~v}
28 {t with vals = Map.set t.vals ~k ~v}
31 let loop = Sym.unique_of_string "loop" in
32 let t = {t with loop = Some loop} in
35 let loop_end t given =
39 | Some current when (not (Sym.is_equal current given)) ->
44 let loop_current {loop; _} =