package mopsa
MOPSA: A Modular and Open Platform for Static Analysis using Abstract Interpretation
Install
Dune Dependency
Authors
Maintainers
Sources
mopsa-analyzer-v1.1.tar.gz
md5=fdee20e988343751de440b4f6b67c0f4
sha512=f5cbf1328785d3f5ce40155dada2d95e5de5cce4f084ea30cfb04d1ab10cc9403a26cfb3fa55d0f9da72244482130fdb89c286a9aed0d640bba46b7c00e09500
doc/parsing/Parsing/Cst/index.html
Module Parsing.Cst
Source
Concrete syntax tree for C stubs
Stub sections
*****************
Source
and leaf =
| S_local of local Mopsa_utils.Location.with_range
| S_assumes of assumes Mopsa_utils.Location.with_range
| S_requires of requires Mopsa_utils.Location.with_range
| S_assigns of assigns Mopsa_utils.Location.with_range
| S_ensures of ensures Mopsa_utils.Location.with_range
| S_free of free Mopsa_utils.Location.with_range
| S_message of message Mopsa_utils.Location.with_range
Stub leaf sections
**********************
Source
and local_value =
| L_new of resource
| L_call of var Mopsa_utils.Location.with_range * expr Mopsa_utils.Location.with_range list
Source
and assigns = {
assign_target : expr Mopsa_utils.Location.with_range;
assign_offset : interval list;
}
Formulas
************
Source
and formula =
| F_expr of expr Mopsa_utils.Location.with_range
| F_bool of bool
| F_binop of log_binop * formula Mopsa_utils.Location.with_range * formula Mopsa_utils.Location.with_range
| F_not of formula Mopsa_utils.Location.with_range
| F_forall of var * c_qual_typ * set * formula Mopsa_utils.Location.with_range
| F_exists of var * c_qual_typ * set * formula Mopsa_utils.Location.with_range
| F_in of expr Mopsa_utils.Location.with_range * set
| F_otherwise of formula Mopsa_utils.Location.with_range * expr Mopsa_utils.Location.with_range
| F_if of formula Mopsa_utils.Location.with_range * formula Mopsa_utils.Location.with_range * formula Mopsa_utils.Location.with_range
Expressions
***************
Source
and expr =
| E_top of c_qual_typ
| E_int of Z.t * int_suffix
| E_float of float
| E_string of string
| E_char of int
| E_invalid
| E_var of var
| E_unop of unop * expr Mopsa_utils.Location.with_range
| E_binop of binop * expr Mopsa_utils.Location.with_range * expr Mopsa_utils.Location.with_range
| E_addr_of of expr Mopsa_utils.Location.with_range
| E_deref of expr Mopsa_utils.Location.with_range
| E_cast of c_qual_typ * expr Mopsa_utils.Location.with_range
| E_subscript of expr Mopsa_utils.Location.with_range * expr Mopsa_utils.Location.with_range
| E_member of expr Mopsa_utils.Location.with_range * string
| E_arrow of expr Mopsa_utils.Location.with_range * string
| E_conditional of expr Mopsa_utils.Location.with_range * expr Mopsa_utils.Location.with_range * expr Mopsa_utils.Location.with_range
| E_builtin_call of builtin * expr Mopsa_utils.Location.with_range list
| E_raise of string
| E_sizeof_type of c_qual_typ Mopsa_utils.Location.with_range
| E_sizeof_expr of expr Mopsa_utils.Location.with_range
| E_return
Source
and interval = {
itv_lb : expr Mopsa_utils.Location.with_range;
(*lower bound
*)itv_open_lb : bool;
(*open lower bound
*)itv_ub : expr Mopsa_utils.Location.with_range;
(*upper bound
*)itv_open_ub : bool;
(*open upper bound
*)
}
Source
and var = {
vname : string;
(*variable name
*)vlocal : bool;
(*is it a local variable ?
*)vuid : int;
(*unique identifier
*)vtyp : c_qual_typ;
(*variable type
*)vrange : Mopsa_utils.Location.range;
(*declaration location
*)
}
Types
Source
and c_typ =
| T_void
| T_char
| T_signed_char
| T_unsigned_char
| T_signed_short
| T_unsigned_short
| T_signed_int
| T_unsigned_int
| T_signed_long
| T_unsigned_long
| T_signed_long_long
| T_unsigned_long_long
| T_signed_int128
| T_unsigned_int128
| T_float
| T_double
| T_long_double
| T_float128
| T_array of c_qual_typ * array_length
| T_struct of var
| T_union of var
| T_typedef of var
| T_pointer of c_qual_typ
| T_enum of var
| T_unknown
Utility functions
*********************
Pretty printers
*******************
Source
val pp_list :
(Stdlib.Format.formatter -> 'a -> unit) ->
(unit, Stdlib.Format.formatter, unit) Stdlib.format ->
Stdlib.Format.formatter ->
'a list ->
unit
Source
val pp_requires :
Stdlib.Format.formatter ->
formula Mopsa_utils.Location.with_range Mopsa_utils.Location.with_range ->
unit
Source
val pp_ensures :
Stdlib.Format.formatter ->
formula Mopsa_utils.Location.with_range Mopsa_utils.Location.with_range ->
unit
Source
val pp_free :
Stdlib.Format.formatter ->
expr Mopsa_utils.Location.with_range Mopsa_utils.Location.with_range ->
unit
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
On This Page