Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source
Page
Library
Module
Module type
Parameter
Class
Class type
Source
CabsSource* Thrown when an unconsistent C abstract syntax is found.
Size of int
Signess of int and bitfields
Storage of names
and base_type = | NO_TYPEOld K&R declaration without type
*)| VOID"void" type
*)| CHAR of sign"char" type with sign modifier
*)| INT of size * sign"int" type with size and sign modifiers
*)| BITFIELD of sign * expressionBitfield with sign modifier and size expression
*)| FLOAT of bool"float" type with long (true) modifier
*)| DOUBLE of bool"doubl" type with long (true) modifier
*)| PTR of base_typePointer "*" to the given type
*)| RESTRICT_PTR of base_typeREstricted pointer "*" to the given type.
*)| ARRAY of base_type * expressionArray of the given type with the given expression size (may be NOTHING)
*)| STRUCT of string * name_group list"struct" of the given name (may be empty) with given fields (may also be empty)
*)| UNION of string * name_group list"union" of the given name (may be empty) with given fields (may also be empty)
*)| PROTO of protoPrototype of a function
*)| OLD_PROTO of old_protoOld-style K&R prototype
*)| NAMED_TYPE of stringNamed type coming from typedef
*)| ENUM of string * enum_item list"union" of the given name (may be empty) with given values (may also be empty)
*)| CONST of base_type"const" modifier
*)| VOLATILE of base_type"volatile" modifier
*)| GNU_TYPE of gnu_attrs * base_typeNot a type, just to record the file/line of an identifier.
*)| TYPE_LINE of string * int * base_typeBase type
A name in a declaration with identifier, full type, GNU attributes and * initialization expression.
A name group, that is, a simple type following by many name * declaration as int v, *p, t[256];.
A single name, as above, but with only one declaration.
Definition of an enumerated value.
Prototype of a function with return type, function declaration and * variable argument "..." boolean.
Old-C K&R function prototype with root type, list of arguments and * variable argument "..." boolean.
and definition = | FUNDEF of single_name * bodyDefinition of a function.
*)| OLDFUNDEF of single_name * name_group list * bodyDefinition of an old-C K&R style function.
*)| DECDEF of name_groupDeclaration of function or definition of a variable.
*)| TYPEDEF of name_group * gnu_attrsDefinition of a typedef.
*)| ONLYTYPEDEF of name_groupDefinition of lonely "struct", "union" or "enum".
*)Definitions found in a C file.
A C files is composed of C definitions
The body of a function is composed as a list of variable declaration * and of a statement.
and statement = | NOPNo operation. Useful for empty else-part in condition.
*)| COMPUTATION of expressionA simple expression, usually an assignment.
*)| BLOCK of bodyA block between braces
*)| SEQUENCE of statement * statementTwo statement separated by ";"
*)| IF of expression * statement * statement"if" statement with or without else-part.
*)| WHILE of expression * statement"while" statement.
*)| DOWHILE of expression * statement"do ... while" statement
*)| FOR of expression * expression * expression * statement"for" statement.
*)| BREAK"break" statement.
*)| CONTINUE"continue" statement.
*)| RETURN of expression"return" statement with an expression or with NOTHING.
*)| SWITCH of expression * statement"switch" statement. Cases are put in the sub-statement as labels.
*)| CASE of expression * statement"case" statement as a label.
*)| DEFAULT of statement"default" statement as a label.
*)| LABEL of string * statement"label" statement whose sub-statement follows colon ":".
*)| GOTO of string"goto" statement.
*)| ASM of stringClassical "asm" support.
*)| GNU_ASM of string * gnu_asm_arg list * gnu_asm_arg list * string listGNU "asm" support.
*)| STAT_LINE of statement * string * intInformation the filename and the line number of the contained statement.
*)Statement changes the flow of control.
and binary_operator = | ADD"+" operator.
*)| SUB"-" operator.
*)| MUL"*" operator.
*)| DIV"/" operator.
*)| MOD"%" operator.
*)| AND"&&" operator.
*)| OR"||" operator.
*)| BAND"&" operator.
*)| BOR"|" operator.
*)| XOR"^" operator.
*)| SHL"<<" operator.
*)| SHR">>" operator.
*)| EQ"==" operator.
*)| NE"!=" operator.
*)| LT"<" operator.
*)| GT">" operator.
*)| LE"<=" operator.
*)| GE">=" operator.
*)| ASSIGN"=" operator.
*)| ADD_ASSIGN"+=" operator.
*)| SUB_ASSIGN"-=" operator.
*)| MUL_ASSIGN"*=" operator.
*)| DIV_ASSIGN"/=" operator.
*)| MOD_ASSIGN"%=" operator.
*)| BAND_ASSIGN"&=" operator.
*)| BOR_ASSIGN"|=" operator.
*)| XOR_ASSIGN"^=" operator.
*)| SHL_ASSIGN"<<=" operator.
*)| SHR_ASSIGN">>=" operator.
*)Unary operators identifiers.
and expression = | NOTHINGNull-expression. Useful for return with no value or table declaration without size.
*)| UNARY of unary_operator * expressionUnary operator use.
*)| BINARY of binary_operator * expression * expressionBinary operator use.
*)| QUESTION of expression * expression * expression"condition ? then-expression : else-expression" operator.
*)| CAST of base_type * expression"(type)expresson" type casting.
*)| CALL of expression * expression listFunction call.
*)| COMMA of expression listSequence of expression separated with ",".
*)| CONSTANT of constantConstant value.
*)| VARIABLE of stringAccess to an identifier.
*)| EXPR_SIZEOF of expression"sizeof" with expression.
*)| TYPE_SIZEOF of base_type"sizeof" with type.
*)| INDEX of expression * expressionAccess to an array item;
*)| MEMBEROF of expression * stringIndirection through ".".
*)| MEMBEROFPTR of expression * stringPointer indirection through "->".
*)| GNU_BODY of bodyGNU braces inside an expression.
*)| EXPR_LINE of expression * string * intRecord the file and line of the expression.
*)Expressions.
and constant = | CONST_INT of stringInteger constant.
*)| CONST_FLOAT of stringFloat constant.
*)| CONST_CHAR of stringCharacter constant with escapes resolved.
*)| CONST_STRING of stringString constant with escapes resolved.
*)| CONST_COMPOUND of expression listCompound values between braces. Only valid for variable initialization.
*)Constant values.
GNU special attribute.