package frama-c
Install
Dune Dependency
Authors
-
MMichele Alberti
-
TThibaud Antignac
-
GGergö Barany
-
PPatrick Baudin
-
NNicolas Bellec
-
TThibaut Benjamin
-
AAllan Blanchard
-
LLionel Blatter
-
FFrançois Bobot
-
RRichard Bonichon
-
VVincent Botbol
-
QQuentin Bouillaguet
-
DDavid Bühler
-
ZZakaria Chihani
-
SSylvain Chiron
-
LLoïc Correnson
-
JJulien Crétin
-
PPascal Cuoq
-
ZZaynah Dargaye
-
BBasile Desloges
-
JJean-Christophe Filliâtre
-
PPhilippe Herrmann
-
MMaxime Jacquemin
-
BBenjamin Jorge
-
FFlorent Kirchner
-
AAlexander Kogtenkov
-
RRemi Lazarini
-
TTristan Le Gall
-
KKilyan Le Gallic
-
JJean-Christophe Léchenet
-
MMatthieu Lemerre
-
DDara Ly
-
DDavid Maison
-
CClaude Marché
-
AAndré Maroneze
-
TThibault Martin
-
FFonenantsoa Maurica
-
MMelody Méaulle
-
BBenjamin Monate
-
YYannick Moy
-
PPierre Nigron
-
AAnne Pacalet
-
VValentin Perrelle
-
GGuillaume Petiot
-
DDario Pinto
-
VVirgile Prevosto
-
AArmand Puccetti
-
FFélix Ridoux
-
VVirgile Robles
-
JJan Rochel
-
MMuriel Roger
-
CCécile Ruet-Cros
-
JJulien Signoles
-
NNicolas Stouls
-
KKostyantyn Vorobyov
-
BBoris Yakobowski
Maintainers
Sources
sha256=a94384f00d53791cbb4b4d83ab41607bc71962d42461f02d71116c4ff6dca567
doc/frama-c.kernel/Frama_c_kernel/Cabs/index.html
Module Frama_c_kernel.Cabs
Untyped AST.
type cabsloc = Filepath.position * Filepath.position
type typeSpecifier =
| Tvoid
| Tchar
| Tbool
| Tshort
| Tint
| Tlong
| Tint64
| Tfloat
| 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_type
and spec_elem =
| SpecTypedef
| SpecCV of cvspec
| SpecAttr of attribute
| SpecStorage of storage
| SpecInline
| SpecType of typeSpecifier
and specifier = spec_elem list
and 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 * bool
and field_group =
| FIELD of specifier * (name * expression option) list
| STATIC_ASSERT_FG of expression * string * cabsloc
and init_name = name * init_expression
and enum_item = string * expression * cabsloc
and definition =
| FUNDEF of (Logic_ptree.spec * cabsloc) option * single_name * block * cabsloc * cabsloc
| DECDEF of (Logic_ptree.spec * cabsloc) option * init_name_group * cabsloc
| TYPEDEF of name_group * cabsloc
| ONLYTYPEDEF of specifier * cabsloc
| GLOBASM of string * cabsloc
| PRAGMA of expression * cabsloc
| STATIC_ASSERT of expression * string * cabsloc
| LINKAGE of string * cabsloc * definition list
| GLOBANNOT of Logic_ptree.decl list
and file = Filepath.t * (bool * definition) list
the 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 * cabsloc
| COMPUTATION of expression * cabsloc
| BLOCK of block * cabsloc * cabsloc
| IF of expression * statement * statement * cabsloc
| WHILE of loop_invariant * expression * statement * cabsloc
| DOWHILE of loop_invariant * expression * statement * cabsloc
| FOR of loop_invariant * for_clause * expression * expression * statement * cabsloc
| BREAK of cabsloc
| CONTINUE of cabsloc
| RETURN of expression * cabsloc
| SWITCH of expression * statement * cabsloc
| CASE of expression * statement * cabsloc
| CASERANGE of expression * expression * statement * cabsloc
| DEFAULT of statement * cabsloc
| LABEL of string * statement * cabsloc
| GOTO of string * cabsloc
| COMPGOTO of expression * cabsloc
| DEFINITION of definition
| ASM of attribute list * string list * asm_details option * cabsloc
| THROW of expression option * cabsloc
(*throws 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 * cabsloc
(*TRY_CATCH(s,clauses,loc)
catches exceptions thrown by execution ofs
, according toclauses
. An exceptione
is caught by the first clause(spec,(name, decl, _, _)),body
such that the type ofe
is compatible with(spec,decl)
.name
is then associated to a copy ofe
, andbody
is executed. If thesingle_name
isNone
, all exceptions are caught by the corresponding clause.The corresponding
TryCatch
node inCil_types.stmtkind
has a refined notion of catching that allows a clause to match for more than one type using appropriate conversions (see alsoCil_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 * cabsloc
| CODE_SPEC of Logic_ptree.spec * cabsloc
and loop_invariant = Logic_ptree.code_annot list
and 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
| TYPE_ALIGNOF of specifier * decl_type
| INDEX of expression * expression
| MEMBEROF of expression * string
| MEMBEROFPTR of expression * string
| GNU_BODY of block
| GENERIC of expression * ((specifier * decl_type) option * expression) list
and init_expression =
| NO_INIT
| SINGLE_INIT of expression
| COMPOUND_INIT of (initwhat * init_expression) list
and initwhat =
| NEXT_INIT
| INFIELD_INIT of string * initwhat
| ATINDEX_INIT of expression * initwhat
| ATINDEXRANGE_INIT of expression * expression
and attribute = string * expression list