hex-quad:
hexadecimal-digit hexadecimal-digit hexadecimal-digit hexadecimal-digit
universal-character-name:
\u
hex-quad
\U
hex-quad hex-quad
preprocessing-token:
header-name
identifier
pp-number
character-literal
string-literal
preprocessing-op-or-punc
each non-white-space character that cannot be one of the above
token:
identifier
keyword
literal
operator
punctuator
header-name:
<
h-char-sequence>
"
q-char-sequence"
h-char-sequence:
h-char
h-char-sequence h-char
h-char:
any member of the source character set except new-line and>
q-char-sequence:
q-char
q-char-sequence q-char
q-char:
any member of the source character set except new-line and"
pp-number:
digit
.
digit
pp-number digit
pp-number nondigit
pp-numbere
sign
pp-numberE
sign
pp-number.
identifier:
nondigit
identifier nondigit
identifier digit
nondigit: one of
universal-character-name
\_ 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: one of
0 1 2 3 4 5 6 7 8 9
preprocessing-op-or-punc: one of
{ } [ ] # ## ( )
<: :> <% %> %: %:%: ; : ...
new delete ? :: . .*
+ - * / % ^ & ~
! = < > += -= *= /= %=
^= &= |= << >> >>= <<= == !=
<= >= && || ++ -- , ->* ->
and and_eq bitand bitor compl not not_eq or or_eq
xor xor_eq
literal:
integer-literal
character-literal
floating-literal
string-literal
boolean-literal
integer-literal:
decimal-literal integer-suffix![]()
octal-literal integer-suffix![]()
hexadecimal-literal integer-suffix![]()
decimal-literal:
nonzero-digit
decimal-literal digit
octal-literal:
0
octal-literal octal-digit
hexadecimal-literal:
0x
hexadecimal-digit
0X
hexadecimal-digit
hexadecimal-literal hexadecimal-digit
nonzero-digit: one of
1 2 3 4 5 6 7 8 9
octal-digit: one of
0 1 2 3 4 5 6 7
hexadecimal-digit: 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:
unsigned-suffix long-suffix![]()
long-suffix unsigned-suffix![]()
unsigned-suffix: one of
u U
long-suffix: one of
l L
character-literal:
'
c-char-sequence'
L'
c-char-sequence'
c-char-sequence:
c-char
c-char-sequence c-char
c-char:
any member of the source character set except
the single-quote'
, backslash\
, or new-line character
escape-sequence
universal-character-name
escape-sequence:
simple-escape-sequence
octal-escape-sequence
hexadecimal-escape-sequence
simple-escape-sequence: one of
\' \" \? \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-digit
hexadecimal-escape-sequence hexadecimal-digit
floating-literal:
fractional-constant exponent-partfloating-suffix
![]()
digit-sequence exponent-part floating-suffix![]()
fractional-constant:
digit-sequence. digit-sequence
digit-sequence .exponent-part:
e
signdigit-sequence
E
signdigit-sequence
sign: one of
+ -
digit-sequence:
digit
digit-sequence digit
floating-suffix: one of
f l F L
string-literal:
"
s-char-sequence"
L"
s-char-sequence"
s-char-sequence:
s-char
s-char-sequence s-char
s-char:
any member of the source character set except
the double-quote"
, backslash\
, or new-line character
escape-sequence
universal-character-name
boolean-literal:
false
true