  | 
»  | 
 | 
  
 | 
 | 
Tokens  |    |  
 token ::= keyword         identifier         constant         string-literal         operator         punctuator   preprocessing-token ::=         header-name         identifier         pp-number         character-constant         string-literal         operator         punctuator         each non-white-space character cannot be one of the above  |  
 Keywords  |    |  
 keyword ::= any word from the set:         auto       extern    sizeof         break      float     static         case       for       struct         char       goto      switch         const      if        __thread (HP-UX 10.30 and later)         continue   int       typedef         default    long      union         do         register  unsigned         double     return    void         else       short     volatile         enum       signed    while  |  
 Identifiers  |    |  
 identifier ::= nondigit              identifier nondigit              identifier digit              identifier dollar-sign   nondigit ::= any character from the set:            _ 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 ::= any character from the set:         0 1 2 3 4 5 6 7 8 9   dollar-sign ::= the $ character  |  
 String Literals  |    |  
 string-literal ::=     "[s-char-sequence]"     L"[s-char-sequence]"   s-char-sequence ::=     s-char     s-char-sequence s-char   s-char ::=     any character in the source character set except            the double-quote (") , backslash (\), or new-line     character escape-sequence  |  
 Operators  |    |  
 operator ::= One selected from:     [    ]    (    )    .    ->     ++   --   &    *    +    -    ~   !   sizeof     /    %    <<   >>   <    >    <=    >=   ==   !=   ^    |    &&    ||   ?    :     =    *=   /=   %=   +=   -=  <<=   >>=   &=  ^=   |=     ,    #    ##  |  
 Punctuators  |    |  
 punctuator ::=  One selected from:     [   ]   (   )   {   }   *   ,   :   =   ;   ...   #  |  
 Header Names  |    |  
 header-name ::=          <h-char-sequence>          "q-char-sequence"   h-char-sequence ::=          h-char          h-char-sequence h-char   h-char ::=          any character in the source character set except              the newline character and >   q-char-sequence ::=          q-char          q-char-sequence
q-char   q-char ::=          any character in the source character set except              the newline character and "  |  
 Preprocessing Numbers  |    |  
 pp-number ::=          digit          . digit          pp-number digit          pp-number nondigit          pp-number e sign          pp-number E sign          pp-number .  |  
  
 |