Frama_c_kernel_base.CabsUntyped AST.
type typeSpecifier = | Tvoid| Tchar| Tbool| Tshort| Tint| Tlong| Tint64| Tint128| Tfloat| Tfloat32| Tfloat64| Tdouble| Tsigned| Tunsigned| Tnamed of string| Tstruct of string * field_group list option * attribute list| Tunion of string * field_group list option * attribute list| Tenum of string * enum_item list option * attribute list| TtypeofE of expression| TtypeofT of specifier * decl_typeand spec_elem = | SpecTypedef| SpecCV of cvspec| SpecAttr of attribute| SpecStorage of storage| SpecInline| SpecType of typeSpecifier| SpecAlignas of expressionand specifier = spec_elem listand decl_type = | JUSTBASE| PARENTYPE of attribute list * decl_type * attribute list| ARRAY of decl_type * attribute list * expression| PTR of attribute list * decl_type| PROTO of decl_type * single_name list * single_name list * booland field_group = | FIELD of specifier * (name * expression option) list| STATIC_ASSERT_FG of expression * string * Fclib.Fileloc.tand name = string * decl_type * attribute list * Fclib.Fileloc.tand init_name = name * init_expressionand enum_item = string * expression * Fclib.Fileloc.tand definition = | FUNDEF of (Logic_ptree.spec * Fclib.Fileloc.t) option
* single_name
* block
* Fclib.Fileloc.t
* Fclib.Fileloc.t| DECDEF of (Logic_ptree.spec * Fclib.Fileloc.t) option
* init_name_group
* Fclib.Fileloc.t| TYPEDEF of name_group * Fclib.Fileloc.t| ONLYTYPEDEF of specifier * Fclib.Fileloc.t| GLOBASM of string * Fclib.Fileloc.t| PRAGMA of expression * Fclib.Fileloc.t| STATIC_ASSERT of expression * string * Fclib.Fileloc.t| LINKAGE of string * Fclib.Fileloc.t * definition list| GLOBANNOT of Logic_ptree.decl listand file = Fclib.Filepath.t * (bool * definition) listthe file name, and then the list of toplevel forms.
and asm_details = {aoutputs : (string option * string * expression) list;ainputs : (string option * string * expression) list;aclobbers : string list;alabels : string list;}and raw_statement = | NOP of attribute option * Fclib.Fileloc.t| COMPUTATION of expression * Fclib.Fileloc.t| BLOCK of block * Fclib.Fileloc.t * Fclib.Fileloc.t| IF of expression * statement * statement * Fclib.Fileloc.t| WHILE of loop_invariant * expression * statement * Fclib.Fileloc.t| DOWHILE of loop_invariant * expression * statement * Fclib.Fileloc.t| FOR of loop_invariant
* for_clause
* expression
* expression
* statement
* Fclib.Fileloc.t| BREAK of Fclib.Fileloc.t| CONTINUE of Fclib.Fileloc.t| RETURN of expression * Fclib.Fileloc.t| SWITCH of expression * statement * Fclib.Fileloc.t| CASE of expression * statement * Fclib.Fileloc.t| CASERANGE of expression * expression * statement * Fclib.Fileloc.t| DEFAULT of statement * Fclib.Fileloc.t| LABEL of string * statement * Fclib.Fileloc.t| GOTO of string * Fclib.Fileloc.t| COMPGOTO of expression * Fclib.Fileloc.t| DEFINITION of definition| ASM of attribute list * string list * asm_details option * Fclib.Fileloc.t| THROW of expression option * Fclib.Fileloc.tthrows the corresponding expression. None corresponds to re-throwing the exception currently being caught (thus is only meaningful in a catch clause). This node is not generated by the C parser, but can be used by external front-ends.
| TRY_CATCH of statement
* (single_name option * statement) list
* Fclib.Fileloc.tTRY_CATCH(s,clauses,loc) catches exceptions thrown by execution of s, according to clauses. An exception e is caught by the first clause (spec,(name, decl, _, _)),body such that the type of e is compatible with (spec,decl). name is then associated to a copy of e, and body is executed. If the single_name is None, all exceptions are caught by the corresponding clause.
The corresponding TryCatch node in Cil_types.stmtkind has a refined notion of catching that allows a clause to match for more than one type using appropriate conversions (see also Cil_types.catch_binder).
This node is not generated by the C parser, but can be used by external front-ends.
*)| CODE_ANNOT of Logic_ptree.code_annot * Fclib.Fileloc.t| CODE_SPEC of Logic_ptree.spec * Fclib.Fileloc.tand loop_invariant = Logic_ptree.code_annot listand cabsexp = | NOTHING| UNARY of unary_operator * expression| LABELADDR of string| BINARY of binary_operator * expression * expression| QUESTION of expression * expression * expression| CAST of specifier * decl_type * init_expression| CALL of expression * expression list * expression list| COMMA of expression list| CONSTANT of constant| PAREN of expression| VARIABLE of string| EXPR_SIZEOF of expression| TYPE_SIZEOF of specifier * decl_type| EXPR_ALIGNOF of expression * [ `Standard | `GCC ]| TYPE_ALIGNOF of specifier * decl_type * [ `Standard | `GCC ]| INDEX of expression * expression| MEMBEROF of expression * string| MEMBEROFPTR of expression * string| GNU_BODY of block| GENERIC of expression * ((specifier * decl_type) option * expression) listand init_expression = | NO_INIT| SINGLE_INIT of expression| COMPOUND_INIT of (initwhat * init_expression) listand initwhat = | NEXT_INIT| INFIELD_INIT of string * initwhat| ATINDEX_INIT of expression * initwhat| ATINDEXRANGE_INIT of expression * expressionand attribute = string * expression listval pp_typeSpecifier :
Ppx_deriving_runtime.Format.formatter ->
typeSpecifier ->
Ppx_deriving_runtime.unitval show_typeSpecifier : typeSpecifier -> Ppx_deriving_runtime.stringval pp_storage :
Ppx_deriving_runtime.Format.formatter ->
storage ->
Ppx_deriving_runtime.unitval show_storage : storage -> Ppx_deriving_runtime.stringval pp_cvspec :
Ppx_deriving_runtime.Format.formatter ->
cvspec ->
Ppx_deriving_runtime.unitval show_cvspec : cvspec -> Ppx_deriving_runtime.stringval pp_spec_elem :
Ppx_deriving_runtime.Format.formatter ->
spec_elem ->
Ppx_deriving_runtime.unitval show_spec_elem : spec_elem -> Ppx_deriving_runtime.stringval pp_specifier :
Ppx_deriving_runtime.Format.formatter ->
specifier ->
Ppx_deriving_runtime.unitval show_specifier : specifier -> Ppx_deriving_runtime.stringval pp_decl_type :
Ppx_deriving_runtime.Format.formatter ->
decl_type ->
Ppx_deriving_runtime.unitval show_decl_type : decl_type -> Ppx_deriving_runtime.stringval pp_name_group :
Ppx_deriving_runtime.Format.formatter ->
name_group ->
Ppx_deriving_runtime.unitval show_name_group : name_group -> Ppx_deriving_runtime.stringval pp_field_group :
Ppx_deriving_runtime.Format.formatter ->
field_group ->
Ppx_deriving_runtime.unitval show_field_group : field_group -> Ppx_deriving_runtime.stringval pp_init_name_group :
Ppx_deriving_runtime.Format.formatter ->
init_name_group ->
Ppx_deriving_runtime.unitval show_init_name_group : init_name_group -> Ppx_deriving_runtime.stringval pp_name :
Ppx_deriving_runtime.Format.formatter ->
name ->
Ppx_deriving_runtime.unitval show_name : name -> Ppx_deriving_runtime.stringval pp_init_name :
Ppx_deriving_runtime.Format.formatter ->
init_name ->
Ppx_deriving_runtime.unitval show_init_name : init_name -> Ppx_deriving_runtime.stringval pp_single_name :
Ppx_deriving_runtime.Format.formatter ->
single_name ->
Ppx_deriving_runtime.unitval show_single_name : single_name -> Ppx_deriving_runtime.stringval pp_enum_item :
Ppx_deriving_runtime.Format.formatter ->
enum_item ->
Ppx_deriving_runtime.unitval show_enum_item : enum_item -> Ppx_deriving_runtime.stringval pp_definition :
Ppx_deriving_runtime.Format.formatter ->
definition ->
Ppx_deriving_runtime.unitval show_definition : definition -> Ppx_deriving_runtime.stringval pp_file :
Ppx_deriving_runtime.Format.formatter ->
file ->
Ppx_deriving_runtime.unitval show_file : file -> Ppx_deriving_runtime.stringval pp_block :
Ppx_deriving_runtime.Format.formatter ->
block ->
Ppx_deriving_runtime.unitval show_block : block -> Ppx_deriving_runtime.stringval pp_asm_details :
Ppx_deriving_runtime.Format.formatter ->
asm_details ->
Ppx_deriving_runtime.unitval show_asm_details : asm_details -> Ppx_deriving_runtime.stringval pp_raw_statement :
Ppx_deriving_runtime.Format.formatter ->
raw_statement ->
Ppx_deriving_runtime.unitval show_raw_statement : raw_statement -> Ppx_deriving_runtime.stringval pp_statement :
Ppx_deriving_runtime.Format.formatter ->
statement ->
Ppx_deriving_runtime.unitval show_statement : statement -> Ppx_deriving_runtime.stringval pp_loop_invariant :
Ppx_deriving_runtime.Format.formatter ->
loop_invariant ->
Ppx_deriving_runtime.unitval show_loop_invariant : loop_invariant -> Ppx_deriving_runtime.stringval pp_for_clause :
Ppx_deriving_runtime.Format.formatter ->
for_clause ->
Ppx_deriving_runtime.unitval show_for_clause : for_clause -> Ppx_deriving_runtime.stringval pp_binary_operator :
Ppx_deriving_runtime.Format.formatter ->
binary_operator ->
Ppx_deriving_runtime.unitval show_binary_operator : binary_operator -> Ppx_deriving_runtime.stringval pp_unary_operator :
Ppx_deriving_runtime.Format.formatter ->
unary_operator ->
Ppx_deriving_runtime.unitval show_unary_operator : unary_operator -> Ppx_deriving_runtime.stringval pp_expression :
Ppx_deriving_runtime.Format.formatter ->
expression ->
Ppx_deriving_runtime.unitval show_expression : expression -> Ppx_deriving_runtime.stringval pp_cabsexp :
Ppx_deriving_runtime.Format.formatter ->
cabsexp ->
Ppx_deriving_runtime.unitval show_cabsexp : cabsexp -> Ppx_deriving_runtime.stringval pp_constant :
Ppx_deriving_runtime.Format.formatter ->
constant ->
Ppx_deriving_runtime.unitval show_constant : constant -> Ppx_deriving_runtime.stringval pp_init_expression :
Ppx_deriving_runtime.Format.formatter ->
init_expression ->
Ppx_deriving_runtime.unitval show_init_expression : init_expression -> Ppx_deriving_runtime.stringval pp_initwhat :
Ppx_deriving_runtime.Format.formatter ->
initwhat ->
Ppx_deriving_runtime.unitval show_initwhat : initwhat -> Ppx_deriving_runtime.stringval pp_attribute :
Ppx_deriving_runtime.Format.formatter ->
attribute ->
Ppx_deriving_runtime.unitval show_attribute : attribute -> Ppx_deriving_runtime.stringtype cabsloc = Fclib.Fileloc.t