Textual.Exptype t = | Var of Ident.tpure variable: it is not an lvalue
*)| Load of {}| Lvar of VarName.tthe address of a program variable
*)| Field of {exp : t;field : qualified_fieldname;}field offset
*)| Index of t * tan array index offset: exp1[exp2]
| Const of Const.t| Call of {proc : QualifiedProcName.t;args : t list;kind : call_kind;}| Closure of {proc : QualifiedProcName.t;captured : t list;params : VarName.t list;}| Apply of {}| Typ of Typ.tval call_non_virtual : QualifiedProcName.t -> t list -> tval call_virtual : QualifiedProcName.t -> t -> t list -> tval call_sig : QualifiedProcName.t -> int -> Lang.t option -> ProcSig.tval allocate_object : TypeName.t -> tval vars : t -> Ident.Set.tval pp : F.formatter -> t -> unit