Skip to content
Snippets Groups Projects
data.mli 1.02 KiB
Newer Older
(* Time-stamp: <modified the 04/04/2019 (at 21:27) by Erwan Jahier> *)

type ident = string
type v = I of int | F of float | B of bool 
         | E of ident * int
         | A of v array | S of (ident * v) list | U

type t = 
  | Bool | Int | Real
  | Extern of ident
  | Enum   of (ident * ident list)
  | Struct of ident * (ident * t) list
  | Array  of (t * int)
  | Alpha of int 
  | Alias of (string * t)


val val_to_string : (float -> string) -> v -> string
val val_to_rif_string : (float -> string) -> v -> string
val val_to_string_type : v -> string
val type_of_string : string -> t
val type_to_string : t -> string

(** use the alias for aliased types *)
val type_to_string_alias : t -> string


type vntl = (string * t) list
type subst = (string * v) 

type access = Idx of int | Fld of ident | Sle of int * int * int * int

(* Replace access(pre_v) by v in pre_v *)
val update_val : v -> v -> access list -> v

(* The same as update_val in the case where no previous value exists *)
val create_val : t -> v -> access list -> v