X-Git-Url: https://git.xandkar.net/?a=blobdiff_plain;f=compiler%2Fsrc%2Flib%2Ftiger%2Ftiger_env_type.mli;h=c8810a76345f4df61a7475bd496bc4ba3eb2f8d7;hb=HEAD;hp=825750c218fff6d765d9a37689a42e90dfe120db;hpb=c0bdf964d389a2b9465fad44aa1f1f849c72140f;p=tiger.ml.git diff --git a/compiler/src/lib/tiger/tiger_env_type.mli b/compiler/src/lib/tiger/tiger_env_type.mli index 825750c..c8810a7 100644 --- a/compiler/src/lib/tiger/tiger_env_type.mli +++ b/compiler/src/lib/tiger/tiger_env_type.mli @@ -1,3 +1,5 @@ +module Sym = Tiger_symbol + type unique type t = @@ -7,25 +9,33 @@ type t = | String | Record of { unique : unique - ; fields : (Tiger_symbol.t * t) list + ; fields : record_fields } | Array of { unique : unique ; ty : t } - | Name of Tiger_symbol.t * t option ref + | Name of Sym.t * t option ref +and record_fields = + (Sym.t * t) list type env = - (Tiger_symbol.t, t ) Tiger_map.t + (Sym.t, t ) Tiger_map.t val built_in : env val is_equal : t -> t -> bool -val is_record : t -> bool + val is_int : t -> bool +val is_string : t -> bool +val is_array : t -> bool +val is_record : t -> bool val is_name : t -> bool -val new_record : (Tiger_symbol.t * t) list -> t -val new_array : t -> t +val if_record : t -> f:(record_fields -> 'a) -> otherwise:(unit -> 'a) -> 'a +val if_array : t -> f:(t -> 'a) -> otherwise:(unit -> 'a) -> 'a + +val new_record : name:Sym.t -> fields:record_fields -> t +val new_array : name:Sym.t -> ty:t -> t val to_string : t -> string