Absint.HilExptype t = | AccessExpression of access_expressionaccess path (e.g., x.f.g or xi)
| UnaryOperator of IR.Unop.t * t * IR.Typ.t optionUnary operator with type of the result if known
*)| BinaryOperator of IR.Binop.t * t * tBinary operator
*)| Exception of tException
*)| Closure of IR.Procname.t * (AccessPath.base * t) listName of function + environment
*)| Constant of IR.Const.tConstants
*)| Cast of IR.Typ.t * tType cast
*)| Sizeof of IR.Typ.t * t optionC-style sizeof(), and also used to treate a type as an expression. Refer to Exp module for canonical documentation
and access_expression = private | Base of AccessPath.base| FieldOffset of access_expression * IR.Fieldname.tfield access
*)| ArrayOffset of access_expression * IR.Typ.t * t optionarray access
*)| AddressOf of access_expression"address of" operator &
| Dereference of access_expression"dereference" operator *
val compare_access_expression : access_expression -> access_expression -> intval equal_access_expression : access_expression -> access_expression -> boolmodule AccessExpression : sig ... endval pp : F.formatter -> t -> unitGet the type of the expression. Warning: not fully implemented
val of_sil :
include_array_indexes:bool ->
f_resolve_id:(IR.Var.t -> AccessExpression.t option) ->
add_deref:bool ->
IR.Exp.t ->
IR.Typ.t ->
tConvert SIL expression to HIL expression
val get_access_exprs : t -> AccessExpression.t listGet all the access paths used in the given HIL expression, including duplicates if a path is used more than once.
val is_null_literal : t -> boolval is_int_zero : t -> boolval eval : t -> IR.Const.t optionval eval_boolean_exp : AccessExpression.t -> t -> bool optioneval_boolean_exp var exp returns Some bool_value if the given boolean expression exp evaluates to bool_value when var is set to true. Return None if it has free variables that stop us from evaluating it, or is not a boolean expression.
val access_expr_of_exp :
include_array_indexes:bool ->
f_resolve_id:(IR.Var.t -> AccessExpression.t option) ->
IR.Exp.t ->
IR.Typ.t ->
access_expression optionbest effort translating a SIL expression to an access path, not semantics preserving in particular in the presence of pointer arithmetic