C Now

C Declaration Syntax

Site Logo
declaration  ::=  declaration-specifiers ( init-declarator-list | ε ) ;
declaration-specifiers  ::=  ( storage-class-specifier ( declaration-specifiers | ε ) )
| ( type-specifier ( declaration-specifier | ε ) )
| ( type-qualifier ( declaration-specifier | ε ) )
storage-class-specifier  ::=  auto | register | static | extern | typedef
type-specifier  ::=  void | char | short | int | long | float | double
| signed | unsigned | struct-or-union-specifier | enum-specifier | typedef-name
struct-or-union-specifier  ::=  ( struct-or-union ( identifier | ε ) { struct-declaration-list } )
| ( struct-or-union identifier )
struct-or-union  ::=  struct | union
struct-declaration-list  ::=  struct-declaration struct-declaration
enum-specifier  ::=  ( enum ( identifier | ε ) { enumerator-list } )
| ( enum identifier )
enumerator-list  ::=  enumerator ( , enumerator )
enumerator  ::=  enumeration-constant
| ( enumeration-constant = constant-expression )
enumeration-constant  ::=  identifier
init-declarator-list  ::=  init-declarator ( , init-declarator )
init-declarator  ::=  declarator | ( declarator = initializer )
type-qualifier  ::=  const | volatile
declarator  ::=  ( pointer | ε ) direct-declarator
direct-declarator  ::=  identifier
| ( ( declarator ) )
| ( direct-declarator [ ( constant-expression | ε ) ] )
| ( direct-declarator ( parameter-type-list ) )
| ( direct-declarator ( ( identifier-list | ε ) ) )
pointer  ::=  ( * ( type-qualifier-list | ε ) )
| ( * ( type-qualifier-list | ε ) pointer )
parameter-type-list  ::=  parameter-list | ( parameter-list , ... )
parameter-list  ::=  parameter-declaration ( , parameter-declaration )
type-qualifier-list  ::=  type-qualifier type-qualifier
struct-declaration  ::=  specifier-qualifier-list struct-declarator-list ;
specifier-qualifier-list  ::=  type-specifier ( specifier-qualifier-list | ε )
| ( type-qualifier ( specifier-qualifier-list | ε ) )
struct-declarator-list  ::=  struct-declarator ( , struct-declarator )
struct-declarator  ::=  declarator
| type-specifier ( declarator | ε ) : constant-expression )
parameter-declaration  ::=  ( declaration-specifiers declarator )
| ( declaration-specifiers ( abstract-declarator | ε ) )
identifier-list  ::=  identifier ( , identifier )
abstract-declarator  ::=  pointer
| ( ( pointer | ε ) direct-abstract-declarator )
direct-abstract-declarator  ::=  ( ( abstract-declarator ) )
| ( direct-abstract-declarator | ε ) [ ( constant-expression | ε ) ]
| ( direct-abstract-declarator | ε ) ( ( parameter-type-list | ε ) )
initializer  ::=  assignment-expression
| ( { initializer-list } )
| ( { initializer-list , } )
initializer-list  ::=  initializer ( , initializer )
type-name  ::=  specifier-qualifier-list ( abstract-declarator | ε )
typedef-name  ::=  identifier
C Translation Unit Syntax  C Translation Unit Syntax
C Statement Syntax  C Statement Syntax
C Expression Syntax  C Expression Syntax
Summary of Declarations  Summary of Declarations  Microsoft
C Now Home  C Now Home
Syntax Index  Syntax Index
E-Mail
Valid HTML 4.01 Transitional Valid CSS! Site Logo

copyright 1999-2006, j.h.young, revised 2/13/06

C Translation Unit Syntax / C Statement Syntax / C Expression Syntax / Summary of Declarations /