- token
keywordidentifierconstantstring-literalpunctuator- preprocessing-token
-
header-nameonly as part of an#includedirective identifierpp-numbercharacter-constantstring-literalpunctuator-
any other character that does not match the other productions
- keyword
_Alignas_Alignof_Atomic_Bool_Complex_Generic_Imaginary_Noreturn_Pragma_Static_assert _Thread_local autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifinlineintlongregisterrestrictreturnshortsignedsizeofstaticstructswitchtypedefunionunsignedvoidvolatilewhile- identifier
identifier-nondigitidentifier identifier-nondigitidentifier digit- identifier-nondigit
nondigituniversal-character-name-
other implementation-defined characters
- nondigit
-
any 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
-
any of
0 1 2 3 4 5 6 7 8 9 - universal-character-name
\u hex-quad\U hex-quad hex-quad- hex-quad
hexadecimal-digit hexadecimal-digit hexadecimal-digit hexadecimal-digit- constant
integer-constantfloating-constantenumeration-constantcharacter-constant- integer-constant
untyped-integer-constant integer-suffixopt- decimal-constant
nonzero-digitdecimal-constant digit- octal-constant
0octal-constant octal-digit- hexadecimal-constant
hexadecimal-prefix hexadecimal-digithexadecimal-constant hexadecimal-digit- hexadecimal-prefix
0x0X- nonzero-digit
-
any of
1 2 3 4 5 6 7 8 9 - octal-digit
-
any of
0 1 2 3 4 5 6 7 - hexadecimal-digit
-
any 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
unsigned-suffix long-suffixoptunsigned-suffix long-long-suffixlong-suffix unsigned-suffixoptlong-long-suffix unsigned-suffixopt- unsigned-suffix
uU- long-suffix
lL- long-long-suffix
llLL- floating-constant
decimal-floating-constant-
hexadecimal-floating-constantfrom C99 - decimal-floating-constant
fractional-constant exponent-partopt floating-suffixoptdigit-sequence exponent-part floating-suffixopt- hexadecimal-floating-constant
hexadecimal-prefix hexadecimal-fractional-constant binary-exponent-part floating-suffixopthexadecimal-prefix hexadecimal-digit-sequence binary-exponent-part floating-suffixopt- fractional-constant
digit-sequenceopt . digit-sequencedigit-sequence .- exponent-part
e signopt digit-sequenceE signopt digit-sequence- sign
+-- digit-sequence
digitdigit-sequence digit- hexadecimal-fractional-constant
hexadecimal-digit-sequenceopt . hexadecimal-digit-sequencehexadecimal-digit-sequence .- binary-exponent-part
p signopt digit-sequenceP signopt digit-sequence- hexadecimal-digit-sequence
hexadecimal-digithexadecimal-digit-sequence hexadecimal-digit- floating-suffix
flFL- enumeration-constant
identifier- character-constant
' c-char-sequence 'L' c-char-sequence 'u' c-char-sequence 'U' c-char-sequence '- c-char-sequence
c-charc-char-sequence c-char- c-char
escape-sequence- escape-sequence
simple-escape-sequenceoctal-escape-sequencehexadecimal-escape-sequenceuniversal-character-name- simple-escape-sequence
\'\"\?\\\a\b\f\n\r\t\v- octal-escape-sequence
\ octal-digit\ octal-digit octal-digit\ octal-digit octal-digit octal-digit- hexadecimal-escape-sequence
\x hexadecimal-digithexadecimal-escape-sequence hexadecimal-digit- string-literal
encoding-prefix " s-char-sequenceopt "- encoding-prefix
u8uUL- s-char-sequence
s-chars-char-sequence s-char- s-char
escape-sequence- punctuator
- header-name
< h-char-sequence >" q-char-sequence "- h-char-sequence
h-charh-char-sequence h-char- h-char
-
any member of the source character set except
>and the new-line character - q-char-sequence
q-charq-char-sequence q-char- q-char
-
any member of the source character set except
"and the new-line character - pp-number
digit. digitpp-number digitpp-number identifier-nondigitpp-number e signpp-number E signpp-number p signpp-number P signpp-number .