sig
type cabsloc = { lineno : int; filename : string; byteno : int; }
type lang_t = [ `C | `Cxx ]
type typeSpecifier =
Tvoid
| Tbool
| Tchar
| Tshort
| Tint
| Tlong
| Tint64
| Tfloat
| Tdouble
| Tsigned
| Tunsigned
| Tcomplex
| Timaginary
| Tnamed of string
| Tstruct of string * Flx_cil_cabs.field_group list option *
Flx_cil_cabs.attribute list
| Tunion of string * Flx_cil_cabs.field_group list option *
Flx_cil_cabs.attribute list
| Tenum of string * Flx_cil_cabs.enum_item list option *
Flx_cil_cabs.attribute list
| TtypeofE of Flx_cil_cabs.expression
| TtypeofT of Flx_cil_cabs.specifier * Flx_cil_cabs.decl_type
and storage = NO_STORAGE | AUTO | STATIC | EXTERN | REGISTER
and funspec = INLINE | VIRTUAL | EXPLICIT
and cvspec = CV_CONST | CV_VOLATILE | CV_RESTRICT
and spec_elem =
SpecTypedef
| SpecCV of Flx_cil_cabs.cvspec
| SpecAttr of Flx_cil_cabs.attribute
| SpecStorage of Flx_cil_cabs.storage
| SpecInline
| SpecType of Flx_cil_cabs.typeSpecifier
| SpecPattern of string
and specifier = Flx_cil_cabs.spec_elem list
and decl_type =
JUSTBASE
| PARENTYPE of Flx_cil_cabs.attribute list * Flx_cil_cabs.decl_type *
Flx_cil_cabs.attribute list
| ARRAY of Flx_cil_cabs.decl_type * Flx_cil_cabs.attribute list *
Flx_cil_cabs.expression
| PTR of Flx_cil_cabs.attribute list * Flx_cil_cabs.decl_type
| PROTO of Flx_cil_cabs.decl_type * Flx_cil_cabs.single_name list * bool
and name_group = Flx_cil_cabs.specifier * Flx_cil_cabs.name list
and field_group =
Flx_cil_cabs.specifier *
(Flx_cil_cabs.name * Flx_cil_cabs.expression option) list
and init_name_group = Flx_cil_cabs.specifier * Flx_cil_cabs.init_name list
and name =
string * Flx_cil_cabs.decl_type * Flx_cil_cabs.attribute list *
Flx_cil_cabs.cabsloc
and init_name = Flx_cil_cabs.name * Flx_cil_cabs.init_expression
and single_name = Flx_cil_cabs.specifier * Flx_cil_cabs.name
and enum_item = string * Flx_cil_cabs.expression * Flx_cil_cabs.cabsloc
and base_spec =
[ `Private of string
| `Private_virtual of string
| `Protected of string
| `Protected_virtual of string
| `Public of string
| `Public_virtual of string ]
and definition =
FUNDEF of Flx_cil_cabs.single_name * Flx_cil_cabs.block *
Flx_cil_cabs.cabsloc * Flx_cil_cabs.cabsloc
| DECDEF of Flx_cil_cabs.init_name_group * Flx_cil_cabs.cabsloc
| TYPEDEF of Flx_cil_cabs.name_group * Flx_cil_cabs.cabsloc
| ONLYTYPEDEF of Flx_cil_cabs.specifier * Flx_cil_cabs.cabsloc
| GLOBASM of string * Flx_cil_cabs.cabsloc
| PRAGMA of Flx_cil_cabs.expression * Flx_cil_cabs.cabsloc
| LINKAGE of string * Flx_cil_cabs.cabsloc * Flx_cil_cabs.definition list
| NAMESPACE of string * Flx_cil_cabs.cabsloc *
Flx_cil_cabs.definition list
| TRANSFORMER of Flx_cil_cabs.definition * Flx_cil_cabs.definition list *
Flx_cil_cabs.cabsloc
| EXPRTRANSFORMER of Flx_cil_cabs.expression * Flx_cil_cabs.expression *
Flx_cil_cabs.cabsloc
and file = string * Flx_cil_cabs.definition list
and block = {
blabels : string list;
battrs : Flx_cil_cabs.attribute list;
bstmts : Flx_cil_cabs.statement list;
}
and statement =
NOP of Flx_cil_cabs.cabsloc
| COMPUTATION of Flx_cil_cabs.expression * Flx_cil_cabs.cabsloc
| BLOCK of Flx_cil_cabs.block * Flx_cil_cabs.cabsloc
| SEQUENCE of Flx_cil_cabs.statement * Flx_cil_cabs.statement *
Flx_cil_cabs.cabsloc
| IF of Flx_cil_cabs.expression * Flx_cil_cabs.statement *
Flx_cil_cabs.statement * Flx_cil_cabs.cabsloc
| WHILE of Flx_cil_cabs.expression * Flx_cil_cabs.statement *
Flx_cil_cabs.cabsloc
| DOWHILE of Flx_cil_cabs.expression * Flx_cil_cabs.statement *
Flx_cil_cabs.cabsloc
| FOR of Flx_cil_cabs.for_clause * Flx_cil_cabs.expression *
Flx_cil_cabs.expression * Flx_cil_cabs.statement *
Flx_cil_cabs.cabsloc
| BREAK of Flx_cil_cabs.cabsloc
| CONTINUE of Flx_cil_cabs.cabsloc
| RETURN of Flx_cil_cabs.expression * Flx_cil_cabs.cabsloc
| SWITCH of Flx_cil_cabs.expression * Flx_cil_cabs.statement *
Flx_cil_cabs.cabsloc
| CASE of Flx_cil_cabs.expression * Flx_cil_cabs.statement *
Flx_cil_cabs.cabsloc
| CASERANGE of Flx_cil_cabs.expression * Flx_cil_cabs.expression *
Flx_cil_cabs.statement * Flx_cil_cabs.cabsloc
| DEFAULT of Flx_cil_cabs.statement * Flx_cil_cabs.cabsloc
| LABEL of string * Flx_cil_cabs.statement * Flx_cil_cabs.cabsloc
| GOTO of string * Flx_cil_cabs.cabsloc
| COMPGOTO of Flx_cil_cabs.expression * Flx_cil_cabs.cabsloc
| DEFINITION of Flx_cil_cabs.definition
| ASM of Flx_cil_cabs.attribute list * string list *
(string * Flx_cil_cabs.expression) list *
(string * Flx_cil_cabs.expression) list * string list *
Flx_cil_cabs.cabsloc
| TRY_EXCEPT of Flx_cil_cabs.block * Flx_cil_cabs.expression *
Flx_cil_cabs.block * Flx_cil_cabs.cabsloc
| TRY_FINALLY of Flx_cil_cabs.block * Flx_cil_cabs.block *
Flx_cil_cabs.cabsloc
and for_clause =
FC_EXP of Flx_cil_cabs.expression
| FC_DECL of Flx_cil_cabs.definition
and binary_operator =
ADD
| SUB
| MUL
| DIV
| MOD
| AND
| OR
| BAND
| BOR
| XOR
| SHL
| SHR
| EQ
| NE
| LT
| GT
| LE
| GE
| ASSIGN
| ADD_ASSIGN
| SUB_ASSIGN
| MUL_ASSIGN
| DIV_ASSIGN
| MOD_ASSIGN
| BAND_ASSIGN
| BOR_ASSIGN
| XOR_ASSIGN
| SHL_ASSIGN
| SHR_ASSIGN
and unary_operator =
MINUS
| PLUS
| NOT
| BNOT
| MEMOF
| ADDROF
| PREINCR
| PREDECR
| POSINCR
| POSDECR
and expression =
NOTHING
| UNARY of Flx_cil_cabs.unary_operator * Flx_cil_cabs.expression
| LABELADDR of string
| BINARY of Flx_cil_cabs.binary_operator * Flx_cil_cabs.expression *
Flx_cil_cabs.expression
| QUESTION of Flx_cil_cabs.expression * Flx_cil_cabs.expression *
Flx_cil_cabs.expression
| CAST of (Flx_cil_cabs.specifier * Flx_cil_cabs.decl_type) *
Flx_cil_cabs.init_expression
| CALL of Flx_cil_cabs.expression * Flx_cil_cabs.expression list
| COMMA of Flx_cil_cabs.expression list
| CONSTANT of Flx_cil_cabs.constant
| VARIABLE of string
| EXPR_SIZEOF of Flx_cil_cabs.expression
| TYPE_SIZEOF of Flx_cil_cabs.specifier * Flx_cil_cabs.decl_type
| EXPR_ALIGNOF of Flx_cil_cabs.expression
| TYPE_ALIGNOF of Flx_cil_cabs.specifier * Flx_cil_cabs.decl_type
| INDEX of Flx_cil_cabs.expression * Flx_cil_cabs.expression
| MEMBEROF of Flx_cil_cabs.expression * string
| MEMBEROFPTR of Flx_cil_cabs.expression * string
| GNU_BODY of Flx_cil_cabs.block
| EXPR_PATTERN of string
and constant =
CONST_INT of string
| CONST_FLOAT of string
| CONST_CHAR of int64 list
| CONST_WCHAR of int64 list
| CONST_STRING of string
| CONST_WSTRING of int64 list
and init_expression =
NO_INIT
| SINGLE_INIT of Flx_cil_cabs.expression
| COMPOUND_INIT of
(Flx_cil_cabs.initwhat * Flx_cil_cabs.init_expression) list
and initwhat =
NEXT_INIT
| INFIELD_INIT of string * Flx_cil_cabs.initwhat
| ATINDEX_INIT of Flx_cil_cabs.expression * Flx_cil_cabs.initwhat
| ATINDEXRANGE_INIT of Flx_cil_cabs.expression * Flx_cil_cabs.expression
and attribute = string * Flx_cil_cabs.expression list
end