Files
2025-10-25 03:02:53 +03:00

354 lines
30 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[gram.lex]
# Annex A (informative) Grammar summary [[gram]](./#gram)
## A.3 Lexical conventions [gram.lex]
[n-char:](lex.universal.char#nt:n-char "5.3.2Universal character names[lex.universal.char]")
any member of the translation character set except the U+007d right curly bracket or new-line character
[n-char-sequence:](lex.universal.char#nt:n-char-sequence "5.3.2Universal character names[lex.universal.char]")
[*n-char*](lex.universal.char#nt:n-char "5.3.2Universal character names[lex.universal.char]") [*n-char-sequence*](lex.universal.char#nt:n-char-sequence "5.3.2Universal character names[lex.universal.char]")opt
[named-universal-character:](lex.universal.char#nt:named-universal-character "5.3.2Universal character names[lex.universal.char]")
\N{ [*n-char-sequence*](lex.universal.char#nt:n-char-sequence "5.3.2Universal character names[lex.universal.char]") }
[hex-quad:](lex.universal.char#nt:hex-quad "5.3.2Universal character names[lex.universal.char]")
[*hexadecimal-digit*](lex.icon#nt:hexadecimal-digit "5.13.2Integer literals[lex.icon]") [*hexadecimal-digit*](lex.icon#nt:hexadecimal-digit "5.13.2Integer literals[lex.icon]") [*hexadecimal-digit*](lex.icon#nt:hexadecimal-digit "5.13.2Integer literals[lex.icon]") [*hexadecimal-digit*](lex.icon#nt:hexadecimal-digit "5.13.2Integer literals[lex.icon]")
[simple-hexadecimal-digit-sequence:](lex.universal.char#nt:simple-hexadecimal-digit-sequence "5.3.2Universal character names[lex.universal.char]")
[*hexadecimal-digit*](lex.icon#nt:hexadecimal-digit "5.13.2Integer literals[lex.icon]") [*simple-hexadecimal-digit-sequence*](lex.universal.char#nt:simple-hexadecimal-digit-sequence "5.3.2Universal character names[lex.universal.char]")opt
[universal-character-name:](lex.universal.char#nt:universal-character-name "5.3.2Universal character names[lex.universal.char]")
\u [*hex-quad*](lex.universal.char#nt:hex-quad "5.3.2Universal character names[lex.universal.char]")
\U [*hex-quad*](lex.universal.char#nt:hex-quad "5.3.2Universal character names[lex.universal.char]") [*hex-quad*](lex.universal.char#nt:hex-quad "5.3.2Universal character names[lex.universal.char]")
\u{ [*simple-hexadecimal-digit-sequence*](lex.universal.char#nt:simple-hexadecimal-digit-sequence "5.3.2Universal character names[lex.universal.char]") }
[*named-universal-character*](lex.universal.char#nt:named-universal-character "5.3.2Universal character names[lex.universal.char]")
[preprocessing-token:](lex.pptoken#nt:preprocessing-token "5.5Preprocessing tokens[lex.pptoken]")
[*header-name*](lex.header#nt:header-name "5.6Header names[lex.header]")
import-keyword
module-keyword
export-keyword
[*identifier*](lex.name#nt:identifier "5.11Identifiers[lex.name]")
[*pp-number*](lex.ppnumber#nt:pp-number "5.7Preprocessing numbers[lex.ppnumber]")
[*character-literal*](lex.ccon#nt:character-literal "5.13.3Character literals[lex.ccon]")
[*user-defined-character-literal*](lex.ext#nt:user-defined-character-literal "5.13.9User-defined literals[lex.ext]")
[*string-literal*](lex.string#nt:string-literal "5.13.5String literals[lex.string]")
[*user-defined-string-literal*](lex.ext#nt:user-defined-string-literal "5.13.9User-defined literals[lex.ext]")
[*preprocessing-op-or-punc*](lex.operators#nt:preprocessing-op-or-punc "5.8Operators and punctuators[lex.operators]")
each non-whitespace character that cannot be one of the above
[header-name:](lex.header#nt:header-name "5.6Header names[lex.header]")
< [*h-char-sequence*](lex.header#nt:h-char-sequence "5.6Header names[lex.header]") >
" [*q-char-sequence*](lex.header#nt:q-char-sequence "5.6Header names[lex.header]") "
[h-char-sequence:](lex.header#nt:h-char-sequence "5.6Header names[lex.header]")
[*h-char*](lex.header#nt:h-char "5.6Header names[lex.header]") [*h-char-sequence*](lex.header#nt:h-char-sequence "5.6Header names[lex.header]")opt
[h-char:](lex.header#nt:h-char "5.6Header names[lex.header]")
any member of the translation character set except new-line and U+003e greater-than sign
[q-char-sequence:](lex.header#nt:q-char-sequence "5.6Header names[lex.header]")
[*q-char*](lex.header#nt:q-char "5.6Header names[lex.header]") [*q-char-sequence*](lex.header#nt:q-char-sequence "5.6Header names[lex.header]")opt
[q-char:](lex.header#nt:q-char "5.6Header names[lex.header]")
any member of the translation character set except new-line and U+0022 quotation mark
[pp-number:](lex.ppnumber#nt:pp-number "5.7Preprocessing numbers[lex.ppnumber]")
[*digit*](lex.name#nt:digit "5.11Identifiers[lex.name]")
. [*digit*](lex.name#nt:digit "5.11Identifiers[lex.name]")
[*pp-number*](lex.ppnumber#nt:pp-number "5.7Preprocessing numbers[lex.ppnumber]") [*identifier-continue*](lex.name#nt:identifier-continue "5.11Identifiers[lex.name]")
[*pp-number*](lex.ppnumber#nt:pp-number "5.7Preprocessing numbers[lex.ppnumber]") ' [*digit*](lex.name#nt:digit "5.11Identifiers[lex.name]")
[*pp-number*](lex.ppnumber#nt:pp-number "5.7Preprocessing numbers[lex.ppnumber]") ' [*nondigit*](lex.name#nt:nondigit "5.11Identifiers[lex.name]")
[*pp-number*](lex.ppnumber#nt:pp-number "5.7Preprocessing numbers[lex.ppnumber]") e [*sign*](lex.fcon#nt:sign "5.13.4Floating-point literals[lex.fcon]")
[*pp-number*](lex.ppnumber#nt:pp-number "5.7Preprocessing numbers[lex.ppnumber]") E [*sign*](lex.fcon#nt:sign "5.13.4Floating-point literals[lex.fcon]")
[*pp-number*](lex.ppnumber#nt:pp-number "5.7Preprocessing numbers[lex.ppnumber]") p [*sign*](lex.fcon#nt:sign "5.13.4Floating-point literals[lex.fcon]")
[*pp-number*](lex.ppnumber#nt:pp-number "5.7Preprocessing numbers[lex.ppnumber]") P [*sign*](lex.fcon#nt:sign "5.13.4Floating-point literals[lex.fcon]")
[*pp-number*](lex.ppnumber#nt:pp-number "5.7Preprocessing numbers[lex.ppnumber]") .
[preprocessing-op-or-punc:](lex.operators#nt:preprocessing-op-or-punc "5.8Operators and punctuators[lex.operators]")
[*preprocessing-operator*](lex.operators#nt:preprocessing-operator "5.8Operators and punctuators[lex.operators]")
[*operator-or-punctuator*](lex.operators#nt:operator-or-punctuator "5.8Operators and punctuators[lex.operators]")
[preprocessing-operator:](lex.operators#nt:preprocessing-operator "5.8Operators and punctuators[lex.operators]") one of
# ## %: %:%:
[operator-or-punctuator:](lex.operators#nt:operator-or-punctuator "5.8Operators and punctuators[lex.operators]") one of
{ } [ ] ( ) [: :]
<% %> <: :> ; : ...
? :: . .* -> ->* ^^ ~
! + - * / % ^ & |
= += -= *= /= %= ^= &= |=
== != < > <= >= <=> && ||
<< >> <<= >>= ++ -- ,
and or xor not bitand bitor compl
and_eq or_eq xor_eq not_eq
[token:](lex.token#nt:token "5.10Tokens[lex.token]")
[*identifier*](lex.name#nt:identifier "5.11Identifiers[lex.name]")
[*keyword*](lex.key#nt:keyword "5.12Keywords[lex.key]")
[*literal*](lex.literal.kinds#nt:literal "5.13.1Kinds of literals[lex.literal.kinds]")
[*operator-or-punctuator*](lex.operators#nt:operator-or-punctuator "5.8Operators and punctuators[lex.operators]")
[identifier:](lex.name#nt:identifier "5.11Identifiers[lex.name]")
[*identifier-start*](lex.name#nt:identifier-start "5.11Identifiers[lex.name]")
[*identifier*](lex.name#nt:identifier "5.11Identifiers[lex.name]") [*identifier-continue*](lex.name#nt:identifier-continue "5.11Identifiers[lex.name]")
[identifier-start:](lex.name#nt:identifier-start "5.11Identifiers[lex.name]")
[*nondigit*](lex.name#nt:nondigit "5.11Identifiers[lex.name]")
an element of the translation character set with the Unicode property XID_Start
[identifier-continue:](lex.name#nt:identifier-continue "5.11Identifiers[lex.name]")
[*digit*](lex.name#nt:digit "5.11Identifiers[lex.name]")
[*nondigit*](lex.name#nt:nondigit "5.11Identifiers[lex.name]")
an element of the translation character set with the Unicode property XID_Continue
[nondigit:](lex.name#nt:nondigit "5.11Identifiers[lex.name]") 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:](lex.name#nt:digit "5.11Identifiers[lex.name]") one of
0 1 2 3 4 5 6 7 8 9
[keyword:](lex.key#nt:keyword "5.12Keywords[lex.key]")
any identifier listed in Table [5](lex.key#tab:lex.key "Table 5: Keywords")
*import-keyword*
*module-keyword*
*export-keyword*
[literal:](lex.literal.kinds#nt:literal "5.13.1Kinds of literals[lex.literal.kinds]")
[*integer-literal*](lex.icon#nt:integer-literal "5.13.2Integer literals[lex.icon]")
[*character-literal*](lex.ccon#nt:character-literal "5.13.3Character literals[lex.ccon]")
[*floating-point-literal*](lex.fcon#nt:floating-point-literal "5.13.4Floating-point literals[lex.fcon]")
[*string-literal*](lex.string#nt:string-literal "5.13.5String literals[lex.string]")
[*boolean-literal*](lex.bool#nt:boolean-literal "5.13.7Boolean literals[lex.bool]")
[*pointer-literal*](lex.nullptr#nt:pointer-literal "5.13.8Pointer literals[lex.nullptr]")
[*user-defined-literal*](lex.ext#nt:user-defined-literal "5.13.9User-defined literals[lex.ext]")
[integer-literal:](lex.icon#nt:integer-literal "5.13.2Integer literals[lex.icon]")
[*binary-literal*](lex.icon#nt:binary-literal "5.13.2Integer literals[lex.icon]") [*integer-suffix*](lex.icon#nt:integer-suffix "5.13.2Integer literals[lex.icon]")opt
[*octal-literal*](lex.icon#nt:octal-literal "5.13.2Integer literals[lex.icon]") [*integer-suffix*](lex.icon#nt:integer-suffix "5.13.2Integer literals[lex.icon]")opt
[*decimal-literal*](lex.icon#nt:decimal-literal "5.13.2Integer literals[lex.icon]") [*integer-suffix*](lex.icon#nt:integer-suffix "5.13.2Integer literals[lex.icon]")opt
[*hexadecimal-literal*](lex.icon#nt:hexadecimal-literal "5.13.2Integer literals[lex.icon]") [*integer-suffix*](lex.icon#nt:integer-suffix "5.13.2Integer literals[lex.icon]")opt
[binary-literal:](lex.icon#nt:binary-literal "5.13.2Integer literals[lex.icon]")
0b [*binary-digit*](lex.icon#nt:binary-digit "5.13.2Integer literals[lex.icon]")
0B [*binary-digit*](lex.icon#nt:binary-digit "5.13.2Integer literals[lex.icon]")
[*binary-literal*](lex.icon#nt:binary-literal "5.13.2Integer literals[lex.icon]") 'opt [*binary-digit*](lex.icon#nt:binary-digit "5.13.2Integer literals[lex.icon]")
[octal-literal:](lex.icon#nt:octal-literal "5.13.2Integer literals[lex.icon]")
0
[*octal-literal*](lex.icon#nt:octal-literal "5.13.2Integer literals[lex.icon]") 'opt [*octal-digit*](lex.icon#nt:octal-digit "5.13.2Integer literals[lex.icon]")
[decimal-literal:](lex.icon#nt:decimal-literal "5.13.2Integer literals[lex.icon]")
[*nonzero-digit*](lex.icon#nt:nonzero-digit "5.13.2Integer literals[lex.icon]")
[*decimal-literal*](lex.icon#nt:decimal-literal "5.13.2Integer literals[lex.icon]") 'opt [*digit*](lex.name#nt:digit "5.11Identifiers[lex.name]")
[hexadecimal-literal:](lex.icon#nt:hexadecimal-literal "5.13.2Integer literals[lex.icon]")
[*hexadecimal-prefix*](lex.icon#nt:hexadecimal-prefix "5.13.2Integer literals[lex.icon]") [*hexadecimal-digit-sequence*](lex.icon#nt:hexadecimal-digit-sequence "5.13.2Integer literals[lex.icon]")
[binary-digit:](lex.icon#nt:binary-digit "5.13.2Integer literals[lex.icon]") one of
0 1
[octal-digit:](lex.icon#nt:octal-digit "5.13.2Integer literals[lex.icon]") one of
0 1 2 3 4 5 6 7
[nonzero-digit:](lex.icon#nt:nonzero-digit "5.13.2Integer literals[lex.icon]") one of
1 2 3 4 5 6 7 8 9
[hexadecimal-prefix:](lex.icon#nt:hexadecimal-prefix "5.13.2Integer literals[lex.icon]") one of
0x 0X
[hexadecimal-digit-sequence:](lex.icon#nt:hexadecimal-digit-sequence "5.13.2Integer literals[lex.icon]")
[*hexadecimal-digit*](lex.icon#nt:hexadecimal-digit "5.13.2Integer literals[lex.icon]")
[*hexadecimal-digit-sequence*](lex.icon#nt:hexadecimal-digit-sequence "5.13.2Integer literals[lex.icon]") 'opt [*hexadecimal-digit*](lex.icon#nt:hexadecimal-digit "5.13.2Integer literals[lex.icon]")
[hexadecimal-digit:](lex.icon#nt:hexadecimal-digit "5.13.2Integer literals[lex.icon]") 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:](lex.icon#nt:integer-suffix "5.13.2Integer literals[lex.icon]")
[*unsigned-suffix*](lex.icon#nt:unsigned-suffix "5.13.2Integer literals[lex.icon]") [*long-suffix*](lex.icon#nt:long-suffix "5.13.2Integer literals[lex.icon]")opt
[*unsigned-suffix*](lex.icon#nt:unsigned-suffix "5.13.2Integer literals[lex.icon]") [*long-long-suffix*](lex.icon#nt:long-long-suffix "5.13.2Integer literals[lex.icon]")opt
[*unsigned-suffix*](lex.icon#nt:unsigned-suffix "5.13.2Integer literals[lex.icon]") [*size-suffix*](lex.icon#nt:size-suffix "5.13.2Integer literals[lex.icon]")opt
[*long-suffix*](lex.icon#nt:long-suffix "5.13.2Integer literals[lex.icon]") [*unsigned-suffix*](lex.icon#nt:unsigned-suffix "5.13.2Integer literals[lex.icon]")opt
[*long-long-suffix*](lex.icon#nt:long-long-suffix "5.13.2Integer literals[lex.icon]") [*unsigned-suffix*](lex.icon#nt:unsigned-suffix "5.13.2Integer literals[lex.icon]")opt
[*size-suffix*](lex.icon#nt:size-suffix "5.13.2Integer literals[lex.icon]") [*unsigned-suffix*](lex.icon#nt:unsigned-suffix "5.13.2Integer literals[lex.icon]")opt
[unsigned-suffix:](lex.icon#nt:unsigned-suffix "5.13.2Integer literals[lex.icon]") one of
u U
[long-suffix:](lex.icon#nt:long-suffix "5.13.2Integer literals[lex.icon]") one of
l L
[long-long-suffix:](lex.icon#nt:long-long-suffix "5.13.2Integer literals[lex.icon]") one of
ll LL
[size-suffix:](lex.icon#nt:size-suffix "5.13.2Integer literals[lex.icon]") one of
z Z
[character-literal:](lex.ccon#nt:character-literal "5.13.3Character literals[lex.ccon]")
[*encoding-prefix*](lex.ccon#nt:encoding-prefix "5.13.3Character literals[lex.ccon]")opt ' [*c-char-sequence*](lex.ccon#nt:c-char-sequence "5.13.3Character literals[lex.ccon]") '
[encoding-prefix:](lex.ccon#nt:encoding-prefix "5.13.3Character literals[lex.ccon]") one of
u8 u U L
[c-char-sequence:](lex.ccon#nt:c-char-sequence "5.13.3Character literals[lex.ccon]")
[*c-char*](lex.ccon#nt:c-char "5.13.3Character literals[lex.ccon]") [*c-char-sequence*](lex.ccon#nt:c-char-sequence "5.13.3Character literals[lex.ccon]")opt
[c-char:](lex.ccon#nt:c-char "5.13.3Character literals[lex.ccon]")
[*basic-c-char*](lex.ccon#nt:basic-c-char "5.13.3Character literals[lex.ccon]")
[*escape-sequence*](lex.ccon#nt:escape-sequence "5.13.3Character literals[lex.ccon]")
[*universal-character-name*](lex.universal.char#nt:universal-character-name "5.3.2Universal character names[lex.universal.char]")
[basic-c-char:](lex.ccon#nt:basic-c-char "5.13.3Character literals[lex.ccon]")
any member of the translation character set except the U+0027 apostrophe,
U+005c reverse solidus, or new-line character
[escape-sequence:](lex.ccon#nt:escape-sequence "5.13.3Character literals[lex.ccon]")
[*simple-escape-sequence*](lex.ccon#nt:simple-escape-sequence "5.13.3Character literals[lex.ccon]")
[*numeric-escape-sequence*](lex.ccon#nt:numeric-escape-sequence "5.13.3Character literals[lex.ccon]")
[*conditional-escape-sequence*](lex.ccon#nt:conditional-escape-sequence "5.13.3Character literals[lex.ccon]")
[simple-escape-sequence:](lex.ccon#nt:simple-escape-sequence "5.13.3Character literals[lex.ccon]")
\ [*simple-escape-sequence-char*](lex.ccon#nt:simple-escape-sequence-char "5.13.3Character literals[lex.ccon]")
[simple-escape-sequence-char:](lex.ccon#nt:simple-escape-sequence-char "5.13.3Character literals[lex.ccon]") one of
' " ? \ a b f n r t v
[numeric-escape-sequence:](lex.ccon#nt:numeric-escape-sequence "5.13.3Character literals[lex.ccon]")
[*octal-escape-sequence*](lex.ccon#nt:octal-escape-sequence "5.13.3Character literals[lex.ccon]")
[*hexadecimal-escape-sequence*](lex.ccon#nt:hexadecimal-escape-sequence "5.13.3Character literals[lex.ccon]")
[simple-octal-digit-sequence:](lex.ccon#nt:simple-octal-digit-sequence "5.13.3Character literals[lex.ccon]")
[*octal-digit*](lex.icon#nt:octal-digit "5.13.2Integer literals[lex.icon]") [*simple-octal-digit-sequence*](lex.ccon#nt:simple-octal-digit-sequence "5.13.3Character literals[lex.ccon]")opt
[octal-escape-sequence:](lex.ccon#nt:octal-escape-sequence "5.13.3Character literals[lex.ccon]")
\ [*octal-digit*](lex.icon#nt:octal-digit "5.13.2Integer literals[lex.icon]")
\ [*octal-digit*](lex.icon#nt:octal-digit "5.13.2Integer literals[lex.icon]") [*octal-digit*](lex.icon#nt:octal-digit "5.13.2Integer literals[lex.icon]")
\ [*octal-digit*](lex.icon#nt:octal-digit "5.13.2Integer literals[lex.icon]") [*octal-digit*](lex.icon#nt:octal-digit "5.13.2Integer literals[lex.icon]") [*octal-digit*](lex.icon#nt:octal-digit "5.13.2Integer literals[lex.icon]")
\o{ [*simple-octal-digit-sequence*](lex.ccon#nt:simple-octal-digit-sequence "5.13.3Character literals[lex.ccon]") }
[hexadecimal-escape-sequence:](lex.ccon#nt:hexadecimal-escape-sequence "5.13.3Character literals[lex.ccon]")
\x [*simple-hexadecimal-digit-sequence*](lex.universal.char#nt:simple-hexadecimal-digit-sequence "5.3.2Universal character names[lex.universal.char]")
\x{ [*simple-hexadecimal-digit-sequence*](lex.universal.char#nt:simple-hexadecimal-digit-sequence "5.3.2Universal character names[lex.universal.char]") }
[conditional-escape-sequence:](lex.ccon#nt:conditional-escape-sequence "5.13.3Character literals[lex.ccon]")
\ [*conditional-escape-sequence-char*](lex.ccon#nt:conditional-escape-sequence-char "5.13.3Character literals[lex.ccon]")
[conditional-escape-sequence-char:](lex.ccon#nt:conditional-escape-sequence-char "5.13.3Character literals[lex.ccon]")
any member of the basic character set that is not an [*octal-digit*](lex.icon#nt:octal-digit "5.13.2Integer literals[lex.icon]"), a [*simple-escape-sequence-char*](lex.ccon#nt:simple-escape-sequence-char "5.13.3Character literals[lex.ccon]"), or the characters N, o, u, U, or x
[floating-point-literal:](lex.fcon#nt:floating-point-literal "5.13.4Floating-point literals[lex.fcon]")
[*decimal-floating-point-literal*](lex.fcon#nt:decimal-floating-point-literal "5.13.4Floating-point literals[lex.fcon]")
[*hexadecimal-floating-point-literal*](lex.fcon#nt:hexadecimal-floating-point-literal "5.13.4Floating-point literals[lex.fcon]")
[decimal-floating-point-literal:](lex.fcon#nt:decimal-floating-point-literal "5.13.4Floating-point literals[lex.fcon]")
[*fractional-constant*](lex.fcon#nt:fractional-constant "5.13.4Floating-point literals[lex.fcon]") [*exponent-part*](lex.fcon#nt:exponent-part "5.13.4Floating-point literals[lex.fcon]")opt [*floating-point-suffix*](lex.fcon#nt:floating-point-suffix "5.13.4Floating-point literals[lex.fcon]")opt
[*digit-sequence*](lex.fcon#nt:digit-sequence "5.13.4Floating-point literals[lex.fcon]") [*exponent-part*](lex.fcon#nt:exponent-part "5.13.4Floating-point literals[lex.fcon]") [*floating-point-suffix*](lex.fcon#nt:floating-point-suffix "5.13.4Floating-point literals[lex.fcon]")opt
[hexadecimal-floating-point-literal:](lex.fcon#nt:hexadecimal-floating-point-literal "5.13.4Floating-point literals[lex.fcon]")
[*hexadecimal-prefix*](lex.icon#nt:hexadecimal-prefix "5.13.2Integer literals[lex.icon]") [*hexadecimal-fractional-constant*](lex.fcon#nt:hexadecimal-fractional-constant "5.13.4Floating-point literals[lex.fcon]") [*binary-exponent-part*](lex.fcon#nt:binary-exponent-part "5.13.4Floating-point literals[lex.fcon]") [*floating-point-suffix*](lex.fcon#nt:floating-point-suffix "5.13.4Floating-point literals[lex.fcon]")opt
[*hexadecimal-prefix*](lex.icon#nt:hexadecimal-prefix "5.13.2Integer literals[lex.icon]") [*hexadecimal-digit-sequence*](lex.icon#nt:hexadecimal-digit-sequence "5.13.2Integer literals[lex.icon]") [*binary-exponent-part*](lex.fcon#nt:binary-exponent-part "5.13.4Floating-point literals[lex.fcon]") [*floating-point-suffix*](lex.fcon#nt:floating-point-suffix "5.13.4Floating-point literals[lex.fcon]")opt
[fractional-constant:](lex.fcon#nt:fractional-constant "5.13.4Floating-point literals[lex.fcon]")
[*digit-sequence*](lex.fcon#nt:digit-sequence "5.13.4Floating-point literals[lex.fcon]")opt . [*digit-sequence*](lex.fcon#nt:digit-sequence "5.13.4Floating-point literals[lex.fcon]")
[*digit-sequence*](lex.fcon#nt:digit-sequence "5.13.4Floating-point literals[lex.fcon]") .
[hexadecimal-fractional-constant:](lex.fcon#nt:hexadecimal-fractional-constant "5.13.4Floating-point literals[lex.fcon]")
[*hexadecimal-digit-sequence*](lex.icon#nt:hexadecimal-digit-sequence "5.13.2Integer literals[lex.icon]")opt . [*hexadecimal-digit-sequence*](lex.icon#nt:hexadecimal-digit-sequence "5.13.2Integer literals[lex.icon]")
[*hexadecimal-digit-sequence*](lex.icon#nt:hexadecimal-digit-sequence "5.13.2Integer literals[lex.icon]") .
[exponent-part:](lex.fcon#nt:exponent-part "5.13.4Floating-point literals[lex.fcon]")
e [*sign*](lex.fcon#nt:sign "5.13.4Floating-point literals[lex.fcon]")opt [*digit-sequence*](lex.fcon#nt:digit-sequence "5.13.4Floating-point literals[lex.fcon]")
E [*sign*](lex.fcon#nt:sign "5.13.4Floating-point literals[lex.fcon]")opt [*digit-sequence*](lex.fcon#nt:digit-sequence "5.13.4Floating-point literals[lex.fcon]")
[binary-exponent-part:](lex.fcon#nt:binary-exponent-part "5.13.4Floating-point literals[lex.fcon]")
p [*sign*](lex.fcon#nt:sign "5.13.4Floating-point literals[lex.fcon]")opt [*digit-sequence*](lex.fcon#nt:digit-sequence "5.13.4Floating-point literals[lex.fcon]")
P [*sign*](lex.fcon#nt:sign "5.13.4Floating-point literals[lex.fcon]")opt [*digit-sequence*](lex.fcon#nt:digit-sequence "5.13.4Floating-point literals[lex.fcon]")
[sign:](lex.fcon#nt:sign "5.13.4Floating-point literals[lex.fcon]") one of
+ -
[digit-sequence:](lex.fcon#nt:digit-sequence "5.13.4Floating-point literals[lex.fcon]")
[*digit*](lex.name#nt:digit "5.11Identifiers[lex.name]")
[*digit-sequence*](lex.fcon#nt:digit-sequence "5.13.4Floating-point literals[lex.fcon]") 'opt [*digit*](lex.name#nt:digit "5.11Identifiers[lex.name]")
[floating-point-suffix:](lex.fcon#nt:floating-point-suffix "5.13.4Floating-point literals[lex.fcon]") one of
f l f16 f32 f64 f128 bf16 F L F16 F32 F64 F128 BF16
[string-literal:](lex.string#nt:string-literal "5.13.5String literals[lex.string]")
[*encoding-prefix*](lex.ccon#nt:encoding-prefix "5.13.3Character literals[lex.ccon]")opt " [*s-char-sequence*](lex.string#nt:s-char-sequence "5.13.5String literals[lex.string]")opt "
[*encoding-prefix*](lex.ccon#nt:encoding-prefix "5.13.3Character literals[lex.ccon]")opt R [*raw-string*](lex.string#nt:raw-string "5.13.5String literals[lex.string]")
[s-char-sequence:](lex.string#nt:s-char-sequence "5.13.5String literals[lex.string]")
[*s-char*](lex.string#nt:s-char "5.13.5String literals[lex.string]") [*s-char-sequence*](lex.string#nt:s-char-sequence "5.13.5String literals[lex.string]")opt
[s-char:](lex.string#nt:s-char "5.13.5String literals[lex.string]")
[*basic-s-char*](lex.string#nt:basic-s-char "5.13.5String literals[lex.string]")
[*escape-sequence*](lex.ccon#nt:escape-sequence "5.13.3Character literals[lex.ccon]")
[*universal-character-name*](lex.universal.char#nt:universal-character-name "5.3.2Universal character names[lex.universal.char]")
[basic-s-char:](lex.string#nt:basic-s-char "5.13.5String literals[lex.string]")
any member of the translation character set except the U+0022 quotation mark,
U+005c reverse solidus, or new-line character
[raw-string:](lex.string#nt:raw-string "5.13.5String literals[lex.string]")
" [*d-char-sequence*](lex.string#nt:d-char-sequence "5.13.5String literals[lex.string]")opt ( [*r-char-sequence*](lex.string#nt:r-char-sequence "5.13.5String literals[lex.string]")opt ) [*d-char-sequence*](lex.string#nt:d-char-sequence "5.13.5String literals[lex.string]")opt "
[r-char-sequence:](lex.string#nt:r-char-sequence "5.13.5String literals[lex.string]")
[*r-char*](lex.string#nt:r-char "5.13.5String literals[lex.string]") [*r-char-sequence*](lex.string#nt:r-char-sequence "5.13.5String literals[lex.string]")opt
[r-char:](lex.string#nt:r-char "5.13.5String literals[lex.string]")
any member of the translation character set, except a U+0029 right parenthesis followed by
the initial [*d-char-sequence*](lex.string#nt:d-char-sequence "5.13.5String literals[lex.string]") (which may be empty) followed by a U+0022 quotation mark
[d-char-sequence:](lex.string#nt:d-char-sequence "5.13.5String literals[lex.string]")
[*d-char*](lex.string#nt:d-char "5.13.5String literals[lex.string]") [*d-char-sequence*](lex.string#nt:d-char-sequence "5.13.5String literals[lex.string]")opt
[d-char:](lex.string#nt:d-char "5.13.5String literals[lex.string]")
any member of the basic character set except:
U+0020 space, U+0028 left parenthesis, U+0029 right parenthesis, U+005c reverse solidus,
U+0009 character tabulation, U+000b line tabulation, U+000c form feed, and new-line
[unevaluated-string:](lex.string.uneval#nt:unevaluated-string "5.13.6Unevaluated strings[lex.string.uneval]")
[*string-literal*](lex.string#nt:string-literal "5.13.5String literals[lex.string]")
[boolean-literal:](lex.bool#nt:boolean-literal "5.13.7Boolean literals[lex.bool]")
false
true
[pointer-literal:](lex.nullptr#nt:pointer-literal "5.13.8Pointer literals[lex.nullptr]")
nullptr
[user-defined-literal:](lex.ext#nt:user-defined-literal "5.13.9User-defined literals[lex.ext]")
[*user-defined-integer-literal*](lex.ext#nt:user-defined-integer-literal "5.13.9User-defined literals[lex.ext]")
[*user-defined-floating-point-literal*](lex.ext#nt:user-defined-floating-point-literal "5.13.9User-defined literals[lex.ext]")
[*user-defined-string-literal*](lex.ext#nt:user-defined-string-literal "5.13.9User-defined literals[lex.ext]")
[*user-defined-character-literal*](lex.ext#nt:user-defined-character-literal "5.13.9User-defined literals[lex.ext]")
[user-defined-integer-literal:](lex.ext#nt:user-defined-integer-literal "5.13.9User-defined literals[lex.ext]")
[*decimal-literal*](lex.icon#nt:decimal-literal "5.13.2Integer literals[lex.icon]") [*ud-suffix*](lex.ext#nt:ud-suffix "5.13.9User-defined literals[lex.ext]")
[*octal-literal*](lex.icon#nt:octal-literal "5.13.2Integer literals[lex.icon]") [*ud-suffix*](lex.ext#nt:ud-suffix "5.13.9User-defined literals[lex.ext]")
[*hexadecimal-literal*](lex.icon#nt:hexadecimal-literal "5.13.2Integer literals[lex.icon]") [*ud-suffix*](lex.ext#nt:ud-suffix "5.13.9User-defined literals[lex.ext]")
[*binary-literal*](lex.icon#nt:binary-literal "5.13.2Integer literals[lex.icon]") [*ud-suffix*](lex.ext#nt:ud-suffix "5.13.9User-defined literals[lex.ext]")
[user-defined-floating-point-literal:](lex.ext#nt:user-defined-floating-point-literal "5.13.9User-defined literals[lex.ext]")
[*fractional-constant*](lex.fcon#nt:fractional-constant "5.13.4Floating-point literals[lex.fcon]") [*exponent-part*](lex.fcon#nt:exponent-part "5.13.4Floating-point literals[lex.fcon]")opt [*ud-suffix*](lex.ext#nt:ud-suffix "5.13.9User-defined literals[lex.ext]")
[*digit-sequence*](lex.fcon#nt:digit-sequence "5.13.4Floating-point literals[lex.fcon]") [*exponent-part*](lex.fcon#nt:exponent-part "5.13.4Floating-point literals[lex.fcon]") [*ud-suffix*](lex.ext#nt:ud-suffix "5.13.9User-defined literals[lex.ext]")
[*hexadecimal-prefix*](lex.icon#nt:hexadecimal-prefix "5.13.2Integer literals[lex.icon]") [*hexadecimal-fractional-constant*](lex.fcon#nt:hexadecimal-fractional-constant "5.13.4Floating-point literals[lex.fcon]") [*binary-exponent-part*](lex.fcon#nt:binary-exponent-part "5.13.4Floating-point literals[lex.fcon]") [*ud-suffix*](lex.ext#nt:ud-suffix "5.13.9User-defined literals[lex.ext]")
[*hexadecimal-prefix*](lex.icon#nt:hexadecimal-prefix "5.13.2Integer literals[lex.icon]") [*hexadecimal-digit-sequence*](lex.icon#nt:hexadecimal-digit-sequence "5.13.2Integer literals[lex.icon]") [*binary-exponent-part*](lex.fcon#nt:binary-exponent-part "5.13.4Floating-point literals[lex.fcon]") [*ud-suffix*](lex.ext#nt:ud-suffix "5.13.9User-defined literals[lex.ext]")
[user-defined-string-literal:](lex.ext#nt:user-defined-string-literal "5.13.9User-defined literals[lex.ext]")
[*string-literal*](lex.string#nt:string-literal "5.13.5String literals[lex.string]") [*ud-suffix*](lex.ext#nt:ud-suffix "5.13.9User-defined literals[lex.ext]")
[user-defined-character-literal:](lex.ext#nt:user-defined-character-literal "5.13.9User-defined literals[lex.ext]")
[*character-literal*](lex.ccon#nt:character-literal "5.13.3Character literals[lex.ccon]") [*ud-suffix*](lex.ext#nt:ud-suffix "5.13.9User-defined literals[lex.ext]")
[ud-suffix:](lex.ext#nt:ud-suffix "5.13.9User-defined literals[lex.ext]")
[*identifier*](lex.name#nt:identifier "5.11Identifiers[lex.name]")