package GuaCaml

  1. Overview
  2. Docs
Legend:
Library
Module
Module type
Parameter
Class
Class type
type storage_class_specifier =
  1. | SCS_auto
  2. | SCS_register
  3. | SCS_static
  4. | SCS_extern
  5. | SCS_typedef
type op_logic_infix =
  1. | OLI_LazyAnd
  2. | OLI_BinAnd
  3. | OLI_LazyOr
  4. | OLI_BinOr
  5. | OLI_Xor
type op_arith_infix =
  1. | OAI_Plus
  2. | OAI_Minus
  3. | OAI_Mult
  4. | OAI_Div
  5. | OAI_Rem
  6. | OAI_LeftShift
  7. | OAI_RightShift
type op_compare =
  1. | OC_Eq
  2. | OC_Neq
  3. | OC_Le
  4. | OC_Leq
  5. | OC_Ge
  6. | OC_Geq
type op_infix =
  1. | OI_logic of op_logic_infix
  2. | OI_arith of op_arith_infix
  3. | OI_compare of op_compare
type op_prefix =
  1. | OPre_LNot
  2. | OPre_BinNot
  3. | OPre_DeRef
  4. | OPre_Addr
  5. | OPre_Incr
  6. | OPre_Decr
  7. | OPre_Plus
  8. | OPre_Minus
  9. | OPre_SizeOf
type op_postfix =
  1. | OPost_Incr
  2. | OPost_Decr
type identifier = string
type string_constant = string
type char_constant = char
type integer_constant = int
type floating_constant = float
type enumeration_constant = identifier
type constant =
  1. | C_Str of string_constant
  2. | C_Char of char_constant
  3. | C_Int of integer_constant
  4. | C_Float of floating_constant
  5. | C_Enum of enumeration_constant
type assignment_operator =
  1. | AO_Set
  2. | AO_Mult
  3. | AO_Div
  4. | AO_Rem
  5. | AO_Plus
  6. | AO_Minus
  7. | AO_LeftShift
  8. | AO_RightShift
  9. | AO_And
  10. | AO_Or
  11. | AO_Xor
type struct_or_union =
  1. | SOU_Struct
  2. | SOU_Union
type type_qualifier =
  1. | TQ_const
  2. | TQ_volatile
type type_leaf =
  1. | TL_Bool
  2. | TL_Bool2
  3. | TL_void
  4. | TL_char
  5. | TL_short
  6. | TL_int
  7. | TL_long
  8. | TL_float
  9. | TL_double
  10. | TL_signed
  11. | TL_unsigned
type pragma = string
type typedef_name = identifier
type declaration_specifier =
  1. | DS_StoreClassSpec of storage_class_specifier
  2. | DS_TypeSpec of type_specifier
  3. | DS_TypeQual of type_qualifier
and struct_declaration = specifier_qualifier list * struct_declarator list
and struct_or_union_specifier = {
  1. sous_struct_or_union : struct_or_union;
  2. sous_identifier : identifier option;
  3. sous_declaration : struct_declaration list option;
}
and type_specifier =
  1. | TS_leaf of type_leaf
  2. | TS_struct_or_union_specifier of struct_or_union_specifier
  3. | TS_enum_specifier of enum_specifier
  4. | TS_typedef_name of typedef_name
and specifier_qualifier =
  1. | SQ_type_specifier of type_specifier
  2. | SQ_type_qualifier of type_qualifier
and enum_specifier = identifier option * enumerator list
and enumerator = identifier * constant_expression option
and struct_declarator = {
  1. sd_declarator : declarator option;
  2. sd_value : constant_expression option;
}
and pointer_option = type_qualifier list list
and direct_declarator_left =
  1. | DDL_identifier of identifier
  2. | DDL_declarator of declarator
and direct_declarator_right =
  1. | DDR_array of constant_expression option
  2. | DDR_params of parameter_type_list
  3. | DDR_decls of identifier list
and direct_declarator = direct_declarator_left * direct_declarator_right list
and primary_expression =
  1. | PE_Identifier of identifier
  2. | PE_Constant of constant
  3. | PE_subexpr of expression
and expression_postfix =
  1. | PostE_Crochet of expression
  2. | PostE_Bracket of assignment_expression list
  3. | PostE_Field of identifier
  4. | PostE_PtrField of identifier
  5. | PostE_Operator of op_postfix
and atomic_expression = {
  1. ae_casts : type_name list;
  2. ae_prefixes : op_prefix list;
  3. ae_primary : primary_expression;
  4. ae_postfixes : expression_postfix list;
}
and constant_expression =
  1. | E_Atomic of atomic_expression
  2. | E_SizeOf of type_name
  3. | E_Infix of constant_expression * op_infix * constant_expression
  4. | E_Cond of constant_expression * constant_expression * constant_expression
and assignment_expression = (atomic_expression * assignment_operator) list * constant_expression
and expression = assignment_expression list
and type_name = specifier_qualifier list * abstract_declarator option
and parameter_type_list = parameter_list * bool
and parameter_list = parameter_declaration list
and parameter_declaration_right =
  1. | PDR_declarator of declarator
  2. | PDR_abstract_declarator of abstract_declarator
and parameter_declaration = declaration_specifier list * parameter_declaration_right option
and abstract_declarator =
  1. | AD of pointer_option * direct_abstract_declarator option
and direct_abstract_declarator_right =
  1. | DADR_crochet of constant_expression option
  2. | DADR_function of parameter_type_list option
and direct_abstract_declarator = abstract_declarator option * direct_abstract_declarator_right list
and init_declarator = declarator * t_initializer option
and declaration = declaration_specifier list * init_declarator list
and t_initializer = assignment_expression Tree.tree
type expression_statement = expression option
type jump_statement =
  1. | JS_goto of identifier
  2. | JS_continue
  3. | JS_break
  4. | JS_return of expression option
type statement =
  1. | S_declaration of declaration
  2. | S_labeled of labeled_statement
  3. | S_expression of expression_statement
  4. | S_compound of compound_statement
  5. | S_selection of selection_statement
  6. | S_iteration of iteration_statement
  7. | S_jump of jump_statement
and labeled_statement =
  1. | LS_identified_statement of identifier * statement
  2. | LS_case of constant_expression * statement
  3. | LS_default of statement
and compound_statement = statement list
and selection_statement =
  1. | SS_ITE of expression * statement * statement option
  2. | SS_Switch of expression * statement
and for_statement = {
  1. fs_init : expression option;
  2. fs_cond : expression option;
  3. fs_post : expression option;
  4. fs_statement : statement;
}
and iteration_statement =
  1. | IS_while of expression * statement
  2. | IS_dowhile of statement * expression
  3. | IS_for of for_statement
type ext_define = {
  1. td_name : identifier;
  2. td_params : identifier list option;
  3. td_expr : expression;
}
type function_definition = {
  1. fd_dec_spec : declaration_specifier list;
  2. fd_pragma : pragma option;
  3. fd_declarator : declarator;
  4. fd_declaration : declaration list;
  5. fd_compound_statement : compound_statement option;
}
type external_declaration =
  1. | ED_define of ext_define
  2. | ED_FunDec of function_definition
  3. | ED_Dec of declaration
type translation_unit = external_declaration list