Legend:
Library
Module
Module type
Parameter
Class
Class type
Library
Module
Module type
Parameter
Class
Class type
and base_type =
| NO_TYPE
| VOID
| CHAR of sign
| INT of size * sign
| BITFIELD of sign * expression
| FLOAT of bool
| DOUBLE of bool
| PTR of base_type
| RESTRICT_PTR of base_type
| ARRAY of base_type * expression
| STRUCT of string * name_group list
| UNION of string * name_group list
| PROTO of proto
| OLD_PROTO of old_proto
| NAMED_TYPE of string
| ENUM of string * enum_item list
| CONST of base_type
| VOLATILE of base_type
| GNU_TYPE of gnu_attrs * base_type
| TYPE_LINE of string * int * base_type
and name = string * base_type * gnu_attrs * expression
and enum_item = string * expression
and proto = base_type * single_name list * bool
and old_proto = base_type * string list * bool
and definition =
| FUNDEF of single_name * body
| OLDFUNDEF of single_name * name_group list * body
| DECDEF of name_group
| TYPEDEF of name_group * gnu_attrs
| ONLYTYPEDEF of name_group
and file = definition list
and body = definition list * statement
and statement =
| NOP
| COMPUTATION of expression
| BLOCK of body
| SEQUENCE of statement * statement
| IF of expression * statement * statement
| WHILE of expression * statement
| DOWHILE of expression * statement
| FOR of expression * expression * expression * statement
| BREAK
| CONTINUE
| RETURN of expression
| SWITCH of expression * statement
| CASE of expression * statement
| DEFAULT of statement
| LABEL of string * statement
| GOTO of string
| ASM of string
| GNU_ASM of string * gnu_asm_arg list * gnu_asm_arg list * string list
| STAT_LINE of statement * string * int
and gnu_asm_arg = string * string * expression
and expression =
| NOTHING
| UNARY of unary_operator * expression
| BINARY of binary_operator * expression * expression
| QUESTION of expression * expression * expression
| CAST of base_type * expression
| CALL of expression * expression list
| COMMA of expression list
| CONSTANT of constant
| VARIABLE of string
| EXPR_SIZEOF of expression
| TYPE_SIZEOF of base_type
| INDEX of expression * expression
| MEMBEROF of expression * string
| MEMBEROFPTR of expression * string
| GNU_BODY of body
| EXPR_LINE of expression * string * int
and constant =
| CONST_INT of string
| CONST_FLOAT of string
| CONST_CHAR of string
| CONST_STRING of string
| CONST_COMPOUND of expression list
and gnu_attrs = gnu_attr list