Previous Up Next

5  Types

ctypes   ::=  COMMA_LIST(ctype)
ctype   ::=  [const_vol] generic_ctype * *
|[const_vol] void * +
|(ctype (| ctype) *)
const_vol   ::=  const
|volatile
generic_ctype   ::=  ctype_qualif
|[ctype_qualif] char
|[ctype_qualif] short
|[ctype_qualif] int
|[ctype_qualif] long
|[ctype_qualif] long long
|double
|float
|[struct| union] id [{ struct_decl_list * }]
ctype_qualif   ::=  unsigned
|signed
struct_decl_list   ::=  struct_decl_list_start
struct_decl_list_start   ::=  struct_decl
|struct_decl struct_decl_list_start
|... [when != struct_decl] [continue_struct_decl_list]
continue_struct_decl_list   ::=  struct_decl struct_decl_list_start
|struct_decl
struct_decl   ::=  ctype d_ident;
|fn_ctype (* d_ident) (PARAMSEQ(name_opt_decl, ε));)
|[const_vol] id d_ident;
d_ident   ::=  id [[expr]] *
fn_ctype   ::=  generic_ctype * *
|void * *
name_opt_decl   ::=  decl
|ctype
|fn_ctype

The optional when construct ends at the end of the line.


Previous Up Next