diff options
Diffstat (limited to '')
-rw-r--r-- | src/Values.ml | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/Values.ml b/src/Values.ml new file mode 100644 index 00000000..006cc8da --- /dev/null +++ b/src/Values.ml @@ -0,0 +1,40 @@ +open Identifiers +open Types + +module VarId = IdGen () + +module FunDefId = IdGen () + +type var = { + index : VarId.id; (** Unique variable identifier *) + name : string option; + ty : ety; + (** The variable type - erased type, because variables are not used + ** in function signatures *) +} +(** A variable *) + +(** A scalar value + + Note that we use unbounded integers everywhere. + We then harcode the boundaries for the different types. + *) +type scalar_value = + | Isize of Big_int.big_int + | I8 of Big_int.big_int + | I16 of Big_int.big_int + | I32 of Big_int.big_int + | I64 of Big_int.big_int + | I128 of Big_int.big_int + | Usize of Big_int.big_int + | U8 of Big_int.big_int + | U16 of Big_int.big_int + | U32 of Big_int.big_int + | U64 of Big_int.big_int + | U128 of Big_int.big_int + +type constant_value = + | Scalar of scalar_value + | Bool of bool + | Char of char + | String of string |