HP OpenVMS SystemsC Programming Language | 
	
HP C
 | 
	
| Previous | Contents | Index | 
This section summarizes the syntax of the C language, using the syntax of the ANSI C Standard. Syntactic categories are indicated with bold type, and literal words or characters are indicated with monospaced, nonitalicized type. A colon following a syntactic category introduces its definition. Alternative definitions are listed on separate lines, or are prefaced by the words "one of." An optional element is indicated by the subscript opt. For example, the following line indicates an optional expression enclosed in braces:
| 
       { expressionopt }  | 
  
The section numbers shown in parentheses refer to the section of the American National Standard for Information Systems-Programming Language C (document number: X3.159-1989) that discusses that part of the language.
| 
       token: (§3.1) keyword  | 
  
| 
       preprocessing-token: (§3.1) header-name  | 
  
| 
       keyword: (§3.1.1) one of  | 
  
      
    auto        double      int         struct 
    break       else        long        switch 
    case        enum        register    typedef 
    char        extern      return      union 
    const       float       short       unsigned 
    continue    for         signed      void 
    default     goto        sizeof      volatile 
    do          if          static      while   
    _Bool      _Complex (ALPHA, I64)
 | 
| 
       identifier: (§3.1.2) identifier-nondigit  | 
  
| 
       identifier-nondigit: nondigit  | 
  
| 
       nondigit: §3.1.2 one of  | 
  
      
    a  b  c  d  e  f  g  h  i  j  k  l  m 
    n  o  p  q  r  s  t  u  v  w  x  y  z 
    A  B  C  D  E  F  G  H  I  J  K  L  M 
    N  O  P  Q  R  S  T  U  V  W  X  Y  Z  _ 
 | 
| 
       digit: (§3.1.2) one of  | 
  
      
    0  1  2  3  4  5  6  7  8  9 
 | 
| 
       constant: (§3.1.3) floating-constant  | 
  
| 
       floating-constant: (§3.1.3.1) decimal-floating-constant  | 
  
| 
       decimal-floating-constant fractional-constant exponent-partopt floating-suffixopt  | 
  
| 
       hexadecimal-floating-constant hexadecimal-prefix hexadecimal-fractional-constant binary-exponent-part floating-suffixopt  | 
  
| 
       fractional-constant: (§3.1.3.1) digit-sequenceopt . digit-sequence  | 
  
| 
       exponent-part: (§3.1.3.1) e signopt digit-sequence  | 
  
| 
       sign: (§3.1.3.1) one of + -  | 
  
| 
       digit-sequence: (§3.1.3.1) digit  | 
  
| 
       hexadecimal-fractional-constant: hexadecimal-digit-sequenceopt . hexadecimal-digit-sequence  | 
  
| 
       binary-exponent-part: p signopt digit-sequence  | 
  
| 
       hexadecimal-digit-sequence: hexadecimal-digit  | 
  
| 
       floating-suffix: (§3.1.3.1) one of  | 
  
f l F L
| 
       integer-constant: (§3.1.3.2) decimal-constant integer-suffixopt  | 
  
| 
       decimal-constant: (§3.1.3.2) nonzero-digit  | 
  
| 
       octal-constant: (§3.1.3.2) 0  | 
  
| 
       hexadecimal-constant: (§3.1.3.2) 0x hexadecimal-digit  | 
  
| 
       nonzero-digit: (§3.1.3.2) one of  | 
  
      
    1  2  3  4  5  6  7  8  9 
 | 
| 
       octal-digit: (§3.1.3.2) one of  | 
  
      
    0  1  2  3  4  5  6  7 
 | 
| 
       hexadecimal-digit: (§3.1.3.2) one of  | 
  
      
    0  1  2  3  4  5  6  7  8  9 
    a  b  c  d  e  f 
    A  B  C  D  E  F 
 | 
| 
       integer-suffix: (§3.1.3.2) unsigned-suffix long-suffixopt  | 
  
| 
       unsigned-suffix: (§3.1.3.2) one of  | 
  
u U
| 
       long-suffix: (§3.1.3.2) one of  | 
  
l L
| 
       enumeration-constant: (§3.1.3.3) identifier  | 
  
| 
       character-constant: (§3.1.3.4) ' c-char-sequence'  | 
  
| 
       c-char-sequence: (§3.1.3.4) c-char  | 
  
| 
       c-char: (§3.1.3.4) any member of the source character set except  | 
  
| 
       escape-sequence: (§3.1.3.4) simple-escape-sequence  | 
  
| 
       simple-escape-sequence: (§3.1.3.4) one of  | 
  
      
    \'  \"  \?  \\
    \a  \b  \f  \n  \r  \t  \v 
 | 
| 
       octal-escape-sequence: (§3.1.3.4) \ octal-digit  | 
  
| 
       hexadecimal-escape-sequence:(§3.1.3.4) \x hexadecimal-digit  | 
  
| 
       string-literal: (§3.1.4) "s-char-sequenceopt"  | 
  
| 
       s-char-sequence: (§3.1.4) s-char  | 
  
| 
       s-char: (§3.1.4) any member of the source character set except  | 
  
| 
       operator: (§3.1.5) one of  | 
  
      
    [  ]  (  )  .  -> 
    ++  --  &  *  +  -  ~  !  sizeof 
    /  %  <<  >>  <  >  <=  >=  ==  !=  ^  |  &&  || 
    ?  : 
    =  *=  /=  %=  +=  -=  <<=  >>=  &=  ^=  |= 
    ,  #  ## 
 | 
| 
       punctuator: (§3.1.6) one of  | 
  
      
    [  ]  (  )  {  }  *  ,  :  =  ;  ...  # 
 | 
| 
       header-name: (§3.1.7) <h-char-sequence>  | 
  
| 
       h-char-sequence: (§3.1.7) h-char  | 
  
| 
       h-char: (§3.1.7) any member of the source character set except  | 
  
| 
       q-char-sequence: (§3.1.7) q-char  | 
  
| 
       q-char: (§3.1.7) any member of the source character set except  | 
  
| 
       pp-number: (§3.1.8) digit  | 
  
| 
       primary-expression: (§3.3.1) identifier  | 
  
| 
       postfix-expression: (§3.3.2) primary-expression  | 
  
| 
       argument-expression-list: (§3.3.2) assignment-expression  | 
  
| 
       unary-expression: (§3.3.3) postfix-expression  | 
  
| 
       unary-operator: (§3.3.3) one of  | 
  
      
    &  *  +  -  ~  ! 
 | 
| 
       cast-expression: (§3.3.4) unary-expression  | 
  
| 
       multiplicative-expression: (§3.3.5) cast-expression  | 
  
| 
       additive-expression: (§3.3.6) multiplicative-expression  | 
  
| 
       shift-expression: (§3.3.7) additive-expression  | 
  
| 
       relational-expression: (§3.3.8) shift-expression  | 
  
| 
       equality-expression: (§3.3.9) relational-expression  | 
  
| 
       AND-expression: (§3.3.10) equality-expression  | 
  
| 
       exclusive-OR-expression: (§3.3.11) AND-expression  | 
  
| 
       inclusive-OR-expression: (§3.3.12) exclusive-OR-expression  | 
  
| 
       logical-AND-expression: (§3.3.13) inclusive-OR-expression  | 
  
| 
       logical-OR-expression: (§3.3.14) logical-AND-expression  | 
  
| 
       conditional-expression: (§3.3.15) logical-OR-expression  | 
  
| 
       assignment-expression: (§3.3.16) conditional-expression  | 
  
| 
       assignment-operator: (§3.3.16) one of  | 
  
      
    =  *=  /=  %=  +=  -=  <<=  >>=  &=  ^=  |= 
 | 
| 
       expression: (§3.3.17) assignment-expression  | 
  
| 
       constant-expression: (§3.4) conditional-expression  | 
  
| 
       declaration: (§3.5) declaration-specifiers init-declarator-listopt ;  | 
  
| 
       declaration-specifiers: (§3.5) storage-class-specifier declaration-specifiersopt  | 
  
| 
       init-declarator-list: (§3.5) init-declarator  | 
  
| 
       init-declarator: (§3.5) declarator  | 
  
| 
       storage-class-specifier: (§3.5.1) typedef  | 
  
| 
       type-specifier: (§3.5.2) void  | 
  
      struct-or-union-specifier  | 
  
| 
       struct-or-union-specifier: (§3.5.2.1) struct-or-union identifieropt { struct-declaration-list }  | 
  
| 
       struct-or-union: (§3.5.2.1) struct  | 
  
| 
       struct-declaration-list: (§3.5.2.1) struct-declaration  | 
  
| 
       struct-declaration: (§3.5.2.1) specifier-qualifier-list struct-declarator-list ;  | 
  
| 
       specifier-qualifier-list: (§3.5.2.1) type-specifier specifier-qualifier-listopt  | 
  
| 
       struct-declarator-list: (§3.5.2.1) struct-declarator  | 
  
| 
       struct-declarator: (§3.5.2.1) declarator  | 
  
| 
       enum-specifier: (§3.5.2.2) enum identifieropt {enumerator-list }  | 
  
| 
       enumerator-list: (§3.5.2.2) enumerator  | 
  
| 
       enumerator: (§3.5.2.2) enumeration-constant  | 
  
| 
       type-qualifier: (§3.5.3) const  | 
  
| 
       declarator: (§3.5.4) pointeropt direct-declarator  | 
  
| 
       direct-declarator: (§3.5.4) identifier  | 
  
| 
       pointer: (§3.5.4) * type-qualifier-listopt  | 
  
| 
       type-qualifier-list: (§3.5.4) type-qualifier  | 
  
| 
       parameter-type-list: (§3.5.4) parameter-list  | 
  
| 
       parameter-list: (§3.5.4) parameter-declaration  | 
  
| 
       parameter-declaration: (§3.5.4) declaration-specifiers declarator  | 
  
| 
       identifier-list: (§3.5.4) identifier  | 
  
| 
       type-name: (§3.5.5) specifier-qualifier-list abstract-declaratoropt  | 
  
| 
       abstract-declarator: (§3.5.5) pointer  | 
  
| 
       direct-abstract-declarator: (§3.5.5) ( abstract-declarator )  | 
  
| 
       typedef-name: (§3.5.6) identifier  | 
  
| 
       initializer: (§3.5.7) assignment-expression  | 
  
| 
       initializer-list: (§3.5.7) initializer  | 
  
| Previous | Next | Contents | Index |