354 lines
30 KiB
Markdown
354 lines
30 KiB
Markdown
[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.2 Universal 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.2 Universal character names [lex.universal.char]")
|
||
[*n-char*](lex.universal.char#nt:n-char "5.3.2 Universal character names [lex.universal.char]") [*n-char-sequence*](lex.universal.char#nt:n-char-sequence "5.3.2 Universal character names [lex.universal.char]")opt
|
||
|
||
[named-universal-character:](lex.universal.char#nt:named-universal-character "5.3.2 Universal character names [lex.universal.char]")
|
||
\N{ [*n-char-sequence*](lex.universal.char#nt:n-char-sequence "5.3.2 Universal character names [lex.universal.char]") }
|
||
|
||
[hex-quad:](lex.universal.char#nt:hex-quad "5.3.2 Universal character names [lex.universal.char]")
|
||
[*hexadecimal-digit*](lex.icon#nt:hexadecimal-digit "5.13.2 Integer literals [lex.icon]") [*hexadecimal-digit*](lex.icon#nt:hexadecimal-digit "5.13.2 Integer literals [lex.icon]") [*hexadecimal-digit*](lex.icon#nt:hexadecimal-digit "5.13.2 Integer literals [lex.icon]") [*hexadecimal-digit*](lex.icon#nt:hexadecimal-digit "5.13.2 Integer literals [lex.icon]")
|
||
|
||
[simple-hexadecimal-digit-sequence:](lex.universal.char#nt:simple-hexadecimal-digit-sequence "5.3.2 Universal character names [lex.universal.char]")
|
||
[*hexadecimal-digit*](lex.icon#nt:hexadecimal-digit "5.13.2 Integer literals [lex.icon]") [*simple-hexadecimal-digit-sequence*](lex.universal.char#nt:simple-hexadecimal-digit-sequence "5.3.2 Universal character names [lex.universal.char]")opt
|
||
|
||
[universal-character-name:](lex.universal.char#nt:universal-character-name "5.3.2 Universal character names [lex.universal.char]")
|
||
\u [*hex-quad*](lex.universal.char#nt:hex-quad "5.3.2 Universal character names [lex.universal.char]")
|
||
\U [*hex-quad*](lex.universal.char#nt:hex-quad "5.3.2 Universal character names [lex.universal.char]") [*hex-quad*](lex.universal.char#nt:hex-quad "5.3.2 Universal character names [lex.universal.char]")
|
||
\u{ [*simple-hexadecimal-digit-sequence*](lex.universal.char#nt:simple-hexadecimal-digit-sequence "5.3.2 Universal character names [lex.universal.char]") }
|
||
[*named-universal-character*](lex.universal.char#nt:named-universal-character "5.3.2 Universal character names [lex.universal.char]")
|
||
|
||
[preprocessing-token:](lex.pptoken#nt:preprocessing-token "5.5 Preprocessing tokens [lex.pptoken]")
|
||
[*header-name*](lex.header#nt:header-name "5.6 Header names [lex.header]")
|
||
import-keyword
|
||
module-keyword
|
||
export-keyword
|
||
[*identifier*](lex.name#nt:identifier "5.11 Identifiers [lex.name]")
|
||
[*pp-number*](lex.ppnumber#nt:pp-number "5.7 Preprocessing numbers [lex.ppnumber]")
|
||
[*character-literal*](lex.ccon#nt:character-literal "5.13.3 Character literals [lex.ccon]")
|
||
[*user-defined-character-literal*](lex.ext#nt:user-defined-character-literal "5.13.9 User-defined literals [lex.ext]")
|
||
[*string-literal*](lex.string#nt:string-literal "5.13.5 String literals [lex.string]")
|
||
[*user-defined-string-literal*](lex.ext#nt:user-defined-string-literal "5.13.9 User-defined literals [lex.ext]")
|
||
[*preprocessing-op-or-punc*](lex.operators#nt:preprocessing-op-or-punc "5.8 Operators and punctuators [lex.operators]")
|
||
each non-whitespace character that cannot be one of the above
|
||
|
||
[header-name:](lex.header#nt:header-name "5.6 Header names [lex.header]")
|
||
< [*h-char-sequence*](lex.header#nt:h-char-sequence "5.6 Header names [lex.header]") >
|
||
" [*q-char-sequence*](lex.header#nt:q-char-sequence "5.6 Header names [lex.header]") "
|
||
|
||
[h-char-sequence:](lex.header#nt:h-char-sequence "5.6 Header names [lex.header]")
|
||
[*h-char*](lex.header#nt:h-char "5.6 Header names [lex.header]") [*h-char-sequence*](lex.header#nt:h-char-sequence "5.6 Header names [lex.header]")opt
|
||
|
||
[h-char:](lex.header#nt:h-char "5.6 Header 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.6 Header names [lex.header]")
|
||
[*q-char*](lex.header#nt:q-char "5.6 Header names [lex.header]") [*q-char-sequence*](lex.header#nt:q-char-sequence "5.6 Header names [lex.header]")opt
|
||
|
||
[q-char:](lex.header#nt:q-char "5.6 Header 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.7 Preprocessing numbers [lex.ppnumber]")
|
||
[*digit*](lex.name#nt:digit "5.11 Identifiers [lex.name]")
|
||
. [*digit*](lex.name#nt:digit "5.11 Identifiers [lex.name]")
|
||
[*pp-number*](lex.ppnumber#nt:pp-number "5.7 Preprocessing numbers [lex.ppnumber]") [*identifier-continue*](lex.name#nt:identifier-continue "5.11 Identifiers [lex.name]")
|
||
[*pp-number*](lex.ppnumber#nt:pp-number "5.7 Preprocessing numbers [lex.ppnumber]") ' [*digit*](lex.name#nt:digit "5.11 Identifiers [lex.name]")
|
||
[*pp-number*](lex.ppnumber#nt:pp-number "5.7 Preprocessing numbers [lex.ppnumber]") ' [*nondigit*](lex.name#nt:nondigit "5.11 Identifiers [lex.name]")
|
||
[*pp-number*](lex.ppnumber#nt:pp-number "5.7 Preprocessing numbers [lex.ppnumber]") e [*sign*](lex.fcon#nt:sign "5.13.4 Floating-point literals [lex.fcon]")
|
||
[*pp-number*](lex.ppnumber#nt:pp-number "5.7 Preprocessing numbers [lex.ppnumber]") E [*sign*](lex.fcon#nt:sign "5.13.4 Floating-point literals [lex.fcon]")
|
||
[*pp-number*](lex.ppnumber#nt:pp-number "5.7 Preprocessing numbers [lex.ppnumber]") p [*sign*](lex.fcon#nt:sign "5.13.4 Floating-point literals [lex.fcon]")
|
||
[*pp-number*](lex.ppnumber#nt:pp-number "5.7 Preprocessing numbers [lex.ppnumber]") P [*sign*](lex.fcon#nt:sign "5.13.4 Floating-point literals [lex.fcon]")
|
||
[*pp-number*](lex.ppnumber#nt:pp-number "5.7 Preprocessing numbers [lex.ppnumber]") .
|
||
|
||
[preprocessing-op-or-punc:](lex.operators#nt:preprocessing-op-or-punc "5.8 Operators and punctuators [lex.operators]")
|
||
[*preprocessing-operator*](lex.operators#nt:preprocessing-operator "5.8 Operators and punctuators [lex.operators]")
|
||
[*operator-or-punctuator*](lex.operators#nt:operator-or-punctuator "5.8 Operators and punctuators [lex.operators]")
|
||
|
||
[preprocessing-operator:](lex.operators#nt:preprocessing-operator "5.8 Operators and punctuators [lex.operators]") one of
|
||
# ## %: %:%:
|
||
|
||
[operator-or-punctuator:](lex.operators#nt:operator-or-punctuator "5.8 Operators 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.10 Tokens [lex.token]")
|
||
[*identifier*](lex.name#nt:identifier "5.11 Identifiers [lex.name]")
|
||
[*keyword*](lex.key#nt:keyword "5.12 Keywords [lex.key]")
|
||
[*literal*](lex.literal.kinds#nt:literal "5.13.1 Kinds of literals [lex.literal.kinds]")
|
||
[*operator-or-punctuator*](lex.operators#nt:operator-or-punctuator "5.8 Operators and punctuators [lex.operators]")
|
||
|
||
[identifier:](lex.name#nt:identifier "5.11 Identifiers [lex.name]")
|
||
[*identifier-start*](lex.name#nt:identifier-start "5.11 Identifiers [lex.name]")
|
||
[*identifier*](lex.name#nt:identifier "5.11 Identifiers [lex.name]") [*identifier-continue*](lex.name#nt:identifier-continue "5.11 Identifiers [lex.name]")
|
||
|
||
[identifier-start:](lex.name#nt:identifier-start "5.11 Identifiers [lex.name]")
|
||
[*nondigit*](lex.name#nt:nondigit "5.11 Identifiers [lex.name]")
|
||
an element of the translation character set with the Unicode property XID_Start
|
||
|
||
[identifier-continue:](lex.name#nt:identifier-continue "5.11 Identifiers [lex.name]")
|
||
[*digit*](lex.name#nt:digit "5.11 Identifiers [lex.name]")
|
||
[*nondigit*](lex.name#nt:nondigit "5.11 Identifiers [lex.name]")
|
||
an element of the translation character set with the Unicode property XID_Continue
|
||
|
||
[nondigit:](lex.name#nt:nondigit "5.11 Identifiers [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.11 Identifiers [lex.name]") one of
|
||
0 1 2 3 4 5 6 7 8 9
|
||
|
||
[keyword:](lex.key#nt:keyword "5.12 Keywords [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.1 Kinds of literals [lex.literal.kinds]")
|
||
[*integer-literal*](lex.icon#nt:integer-literal "5.13.2 Integer literals [lex.icon]")
|
||
[*character-literal*](lex.ccon#nt:character-literal "5.13.3 Character literals [lex.ccon]")
|
||
[*floating-point-literal*](lex.fcon#nt:floating-point-literal "5.13.4 Floating-point literals [lex.fcon]")
|
||
[*string-literal*](lex.string#nt:string-literal "5.13.5 String literals [lex.string]")
|
||
[*boolean-literal*](lex.bool#nt:boolean-literal "5.13.7 Boolean literals [lex.bool]")
|
||
[*pointer-literal*](lex.nullptr#nt:pointer-literal "5.13.8 Pointer literals [lex.nullptr]")
|
||
[*user-defined-literal*](lex.ext#nt:user-defined-literal "5.13.9 User-defined literals [lex.ext]")
|
||
|
||
[integer-literal:](lex.icon#nt:integer-literal "5.13.2 Integer literals [lex.icon]")
|
||
[*binary-literal*](lex.icon#nt:binary-literal "5.13.2 Integer literals [lex.icon]") [*integer-suffix*](lex.icon#nt:integer-suffix "5.13.2 Integer literals [lex.icon]")opt
|
||
[*octal-literal*](lex.icon#nt:octal-literal "5.13.2 Integer literals [lex.icon]") [*integer-suffix*](lex.icon#nt:integer-suffix "5.13.2 Integer literals [lex.icon]")opt
|
||
[*decimal-literal*](lex.icon#nt:decimal-literal "5.13.2 Integer literals [lex.icon]") [*integer-suffix*](lex.icon#nt:integer-suffix "5.13.2 Integer literals [lex.icon]")opt
|
||
[*hexadecimal-literal*](lex.icon#nt:hexadecimal-literal "5.13.2 Integer literals [lex.icon]") [*integer-suffix*](lex.icon#nt:integer-suffix "5.13.2 Integer literals [lex.icon]")opt
|
||
|
||
[binary-literal:](lex.icon#nt:binary-literal "5.13.2 Integer literals [lex.icon]")
|
||
0b [*binary-digit*](lex.icon#nt:binary-digit "5.13.2 Integer literals [lex.icon]")
|
||
0B [*binary-digit*](lex.icon#nt:binary-digit "5.13.2 Integer literals [lex.icon]")
|
||
[*binary-literal*](lex.icon#nt:binary-literal "5.13.2 Integer literals [lex.icon]") 'opt [*binary-digit*](lex.icon#nt:binary-digit "5.13.2 Integer literals [lex.icon]")
|
||
|
||
[octal-literal:](lex.icon#nt:octal-literal "5.13.2 Integer literals [lex.icon]")
|
||
0
|
||
[*octal-literal*](lex.icon#nt:octal-literal "5.13.2 Integer literals [lex.icon]") 'opt [*octal-digit*](lex.icon#nt:octal-digit "5.13.2 Integer literals [lex.icon]")
|
||
|
||
[decimal-literal:](lex.icon#nt:decimal-literal "5.13.2 Integer literals [lex.icon]")
|
||
[*nonzero-digit*](lex.icon#nt:nonzero-digit "5.13.2 Integer literals [lex.icon]")
|
||
[*decimal-literal*](lex.icon#nt:decimal-literal "5.13.2 Integer literals [lex.icon]") 'opt [*digit*](lex.name#nt:digit "5.11 Identifiers [lex.name]")
|
||
|
||
[hexadecimal-literal:](lex.icon#nt:hexadecimal-literal "5.13.2 Integer literals [lex.icon]")
|
||
[*hexadecimal-prefix*](lex.icon#nt:hexadecimal-prefix "5.13.2 Integer literals [lex.icon]") [*hexadecimal-digit-sequence*](lex.icon#nt:hexadecimal-digit-sequence "5.13.2 Integer literals [lex.icon]")
|
||
|
||
[binary-digit:](lex.icon#nt:binary-digit "5.13.2 Integer literals [lex.icon]") one of
|
||
0 1
|
||
|
||
[octal-digit:](lex.icon#nt:octal-digit "5.13.2 Integer literals [lex.icon]") one of
|
||
0 1 2 3 4 5 6 7
|
||
|
||
[nonzero-digit:](lex.icon#nt:nonzero-digit "5.13.2 Integer literals [lex.icon]") one of
|
||
1 2 3 4 5 6 7 8 9
|
||
|
||
[hexadecimal-prefix:](lex.icon#nt:hexadecimal-prefix "5.13.2 Integer literals [lex.icon]") one of
|
||
0x 0X
|
||
|
||
[hexadecimal-digit-sequence:](lex.icon#nt:hexadecimal-digit-sequence "5.13.2 Integer literals [lex.icon]")
|
||
[*hexadecimal-digit*](lex.icon#nt:hexadecimal-digit "5.13.2 Integer literals [lex.icon]")
|
||
[*hexadecimal-digit-sequence*](lex.icon#nt:hexadecimal-digit-sequence "5.13.2 Integer literals [lex.icon]") 'opt [*hexadecimal-digit*](lex.icon#nt:hexadecimal-digit "5.13.2 Integer literals [lex.icon]")
|
||
|
||
[hexadecimal-digit:](lex.icon#nt:hexadecimal-digit "5.13.2 Integer 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.2 Integer literals [lex.icon]")
|
||
[*unsigned-suffix*](lex.icon#nt:unsigned-suffix "5.13.2 Integer literals [lex.icon]") [*long-suffix*](lex.icon#nt:long-suffix "5.13.2 Integer literals [lex.icon]")opt
|
||
[*unsigned-suffix*](lex.icon#nt:unsigned-suffix "5.13.2 Integer literals [lex.icon]") [*long-long-suffix*](lex.icon#nt:long-long-suffix "5.13.2 Integer literals [lex.icon]")opt
|
||
[*unsigned-suffix*](lex.icon#nt:unsigned-suffix "5.13.2 Integer literals [lex.icon]") [*size-suffix*](lex.icon#nt:size-suffix "5.13.2 Integer literals [lex.icon]")opt
|
||
[*long-suffix*](lex.icon#nt:long-suffix "5.13.2 Integer literals [lex.icon]") [*unsigned-suffix*](lex.icon#nt:unsigned-suffix "5.13.2 Integer literals [lex.icon]")opt
|
||
[*long-long-suffix*](lex.icon#nt:long-long-suffix "5.13.2 Integer literals [lex.icon]") [*unsigned-suffix*](lex.icon#nt:unsigned-suffix "5.13.2 Integer literals [lex.icon]")opt
|
||
[*size-suffix*](lex.icon#nt:size-suffix "5.13.2 Integer literals [lex.icon]") [*unsigned-suffix*](lex.icon#nt:unsigned-suffix "5.13.2 Integer literals [lex.icon]")opt
|
||
|
||
[unsigned-suffix:](lex.icon#nt:unsigned-suffix "5.13.2 Integer literals [lex.icon]") one of
|
||
u U
|
||
|
||
[long-suffix:](lex.icon#nt:long-suffix "5.13.2 Integer literals [lex.icon]") one of
|
||
l L
|
||
|
||
[long-long-suffix:](lex.icon#nt:long-long-suffix "5.13.2 Integer literals [lex.icon]") one of
|
||
ll LL
|
||
|
||
[size-suffix:](lex.icon#nt:size-suffix "5.13.2 Integer literals [lex.icon]") one of
|
||
z Z
|
||
|
||
[character-literal:](lex.ccon#nt:character-literal "5.13.3 Character literals [lex.ccon]")
|
||
[*encoding-prefix*](lex.ccon#nt:encoding-prefix "5.13.3 Character literals [lex.ccon]")opt ' [*c-char-sequence*](lex.ccon#nt:c-char-sequence "5.13.3 Character literals [lex.ccon]") '
|
||
|
||
[encoding-prefix:](lex.ccon#nt:encoding-prefix "5.13.3 Character literals [lex.ccon]") one of
|
||
u8 u U L
|
||
|
||
[c-char-sequence:](lex.ccon#nt:c-char-sequence "5.13.3 Character literals [lex.ccon]")
|
||
[*c-char*](lex.ccon#nt:c-char "5.13.3 Character literals [lex.ccon]") [*c-char-sequence*](lex.ccon#nt:c-char-sequence "5.13.3 Character literals [lex.ccon]")opt
|
||
|
||
[c-char:](lex.ccon#nt:c-char "5.13.3 Character literals [lex.ccon]")
|
||
[*basic-c-char*](lex.ccon#nt:basic-c-char "5.13.3 Character literals [lex.ccon]")
|
||
[*escape-sequence*](lex.ccon#nt:escape-sequence "5.13.3 Character literals [lex.ccon]")
|
||
[*universal-character-name*](lex.universal.char#nt:universal-character-name "5.3.2 Universal character names [lex.universal.char]")
|
||
|
||
[basic-c-char:](lex.ccon#nt:basic-c-char "5.13.3 Character 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.3 Character literals [lex.ccon]")
|
||
[*simple-escape-sequence*](lex.ccon#nt:simple-escape-sequence "5.13.3 Character literals [lex.ccon]")
|
||
[*numeric-escape-sequence*](lex.ccon#nt:numeric-escape-sequence "5.13.3 Character literals [lex.ccon]")
|
||
[*conditional-escape-sequence*](lex.ccon#nt:conditional-escape-sequence "5.13.3 Character literals [lex.ccon]")
|
||
|
||
[simple-escape-sequence:](lex.ccon#nt:simple-escape-sequence "5.13.3 Character literals [lex.ccon]")
|
||
\ [*simple-escape-sequence-char*](lex.ccon#nt:simple-escape-sequence-char "5.13.3 Character literals [lex.ccon]")
|
||
|
||
[simple-escape-sequence-char:](lex.ccon#nt:simple-escape-sequence-char "5.13.3 Character literals [lex.ccon]") one of
|
||
' " ? \ a b f n r t v
|
||
|
||
[numeric-escape-sequence:](lex.ccon#nt:numeric-escape-sequence "5.13.3 Character literals [lex.ccon]")
|
||
[*octal-escape-sequence*](lex.ccon#nt:octal-escape-sequence "5.13.3 Character literals [lex.ccon]")
|
||
[*hexadecimal-escape-sequence*](lex.ccon#nt:hexadecimal-escape-sequence "5.13.3 Character literals [lex.ccon]")
|
||
|
||
[simple-octal-digit-sequence:](lex.ccon#nt:simple-octal-digit-sequence "5.13.3 Character literals [lex.ccon]")
|
||
[*octal-digit*](lex.icon#nt:octal-digit "5.13.2 Integer literals [lex.icon]") [*simple-octal-digit-sequence*](lex.ccon#nt:simple-octal-digit-sequence "5.13.3 Character literals [lex.ccon]")opt
|
||
|
||
[octal-escape-sequence:](lex.ccon#nt:octal-escape-sequence "5.13.3 Character literals [lex.ccon]")
|
||
\ [*octal-digit*](lex.icon#nt:octal-digit "5.13.2 Integer literals [lex.icon]")
|
||
\ [*octal-digit*](lex.icon#nt:octal-digit "5.13.2 Integer literals [lex.icon]") [*octal-digit*](lex.icon#nt:octal-digit "5.13.2 Integer literals [lex.icon]")
|
||
\ [*octal-digit*](lex.icon#nt:octal-digit "5.13.2 Integer literals [lex.icon]") [*octal-digit*](lex.icon#nt:octal-digit "5.13.2 Integer literals [lex.icon]") [*octal-digit*](lex.icon#nt:octal-digit "5.13.2 Integer literals [lex.icon]")
|
||
\o{ [*simple-octal-digit-sequence*](lex.ccon#nt:simple-octal-digit-sequence "5.13.3 Character literals [lex.ccon]") }
|
||
|
||
[hexadecimal-escape-sequence:](lex.ccon#nt:hexadecimal-escape-sequence "5.13.3 Character literals [lex.ccon]")
|
||
\x [*simple-hexadecimal-digit-sequence*](lex.universal.char#nt:simple-hexadecimal-digit-sequence "5.3.2 Universal character names [lex.universal.char]")
|
||
\x{ [*simple-hexadecimal-digit-sequence*](lex.universal.char#nt:simple-hexadecimal-digit-sequence "5.3.2 Universal character names [lex.universal.char]") }
|
||
|
||
[conditional-escape-sequence:](lex.ccon#nt:conditional-escape-sequence "5.13.3 Character literals [lex.ccon]")
|
||
\ [*conditional-escape-sequence-char*](lex.ccon#nt:conditional-escape-sequence-char "5.13.3 Character literals [lex.ccon]")
|
||
|
||
[conditional-escape-sequence-char:](lex.ccon#nt:conditional-escape-sequence-char "5.13.3 Character literals [lex.ccon]")
|
||
any member of the basic character set that is not an [*octal-digit*](lex.icon#nt:octal-digit "5.13.2 Integer literals [lex.icon]"), a [*simple-escape-sequence-char*](lex.ccon#nt:simple-escape-sequence-char "5.13.3 Character literals [lex.ccon]"), or the characters N, o, u, U, or x
|
||
|
||
[floating-point-literal:](lex.fcon#nt:floating-point-literal "5.13.4 Floating-point literals [lex.fcon]")
|
||
[*decimal-floating-point-literal*](lex.fcon#nt:decimal-floating-point-literal "5.13.4 Floating-point literals [lex.fcon]")
|
||
[*hexadecimal-floating-point-literal*](lex.fcon#nt:hexadecimal-floating-point-literal "5.13.4 Floating-point literals [lex.fcon]")
|
||
|
||
[decimal-floating-point-literal:](lex.fcon#nt:decimal-floating-point-literal "5.13.4 Floating-point literals [lex.fcon]")
|
||
[*fractional-constant*](lex.fcon#nt:fractional-constant "5.13.4 Floating-point literals [lex.fcon]") [*exponent-part*](lex.fcon#nt:exponent-part "5.13.4 Floating-point literals [lex.fcon]")opt [*floating-point-suffix*](lex.fcon#nt:floating-point-suffix "5.13.4 Floating-point literals [lex.fcon]")opt
|
||
[*digit-sequence*](lex.fcon#nt:digit-sequence "5.13.4 Floating-point literals [lex.fcon]") [*exponent-part*](lex.fcon#nt:exponent-part "5.13.4 Floating-point literals [lex.fcon]") [*floating-point-suffix*](lex.fcon#nt:floating-point-suffix "5.13.4 Floating-point literals [lex.fcon]")opt
|
||
|
||
[hexadecimal-floating-point-literal:](lex.fcon#nt:hexadecimal-floating-point-literal "5.13.4 Floating-point literals [lex.fcon]")
|
||
[*hexadecimal-prefix*](lex.icon#nt:hexadecimal-prefix "5.13.2 Integer literals [lex.icon]") [*hexadecimal-fractional-constant*](lex.fcon#nt:hexadecimal-fractional-constant "5.13.4 Floating-point literals [lex.fcon]") [*binary-exponent-part*](lex.fcon#nt:binary-exponent-part "5.13.4 Floating-point literals [lex.fcon]") [*floating-point-suffix*](lex.fcon#nt:floating-point-suffix "5.13.4 Floating-point literals [lex.fcon]")opt
|
||
[*hexadecimal-prefix*](lex.icon#nt:hexadecimal-prefix "5.13.2 Integer literals [lex.icon]") [*hexadecimal-digit-sequence*](lex.icon#nt:hexadecimal-digit-sequence "5.13.2 Integer literals [lex.icon]") [*binary-exponent-part*](lex.fcon#nt:binary-exponent-part "5.13.4 Floating-point literals [lex.fcon]") [*floating-point-suffix*](lex.fcon#nt:floating-point-suffix "5.13.4 Floating-point literals [lex.fcon]")opt
|
||
|
||
[fractional-constant:](lex.fcon#nt:fractional-constant "5.13.4 Floating-point literals [lex.fcon]")
|
||
[*digit-sequence*](lex.fcon#nt:digit-sequence "5.13.4 Floating-point literals [lex.fcon]")opt . [*digit-sequence*](lex.fcon#nt:digit-sequence "5.13.4 Floating-point literals [lex.fcon]")
|
||
[*digit-sequence*](lex.fcon#nt:digit-sequence "5.13.4 Floating-point literals [lex.fcon]") .
|
||
|
||
[hexadecimal-fractional-constant:](lex.fcon#nt:hexadecimal-fractional-constant "5.13.4 Floating-point literals [lex.fcon]")
|
||
[*hexadecimal-digit-sequence*](lex.icon#nt:hexadecimal-digit-sequence "5.13.2 Integer literals [lex.icon]")opt . [*hexadecimal-digit-sequence*](lex.icon#nt:hexadecimal-digit-sequence "5.13.2 Integer literals [lex.icon]")
|
||
[*hexadecimal-digit-sequence*](lex.icon#nt:hexadecimal-digit-sequence "5.13.2 Integer literals [lex.icon]") .
|
||
|
||
[exponent-part:](lex.fcon#nt:exponent-part "5.13.4 Floating-point literals [lex.fcon]")
|
||
e [*sign*](lex.fcon#nt:sign "5.13.4 Floating-point literals [lex.fcon]")opt [*digit-sequence*](lex.fcon#nt:digit-sequence "5.13.4 Floating-point literals [lex.fcon]")
|
||
E [*sign*](lex.fcon#nt:sign "5.13.4 Floating-point literals [lex.fcon]")opt [*digit-sequence*](lex.fcon#nt:digit-sequence "5.13.4 Floating-point literals [lex.fcon]")
|
||
|
||
[binary-exponent-part:](lex.fcon#nt:binary-exponent-part "5.13.4 Floating-point literals [lex.fcon]")
|
||
p [*sign*](lex.fcon#nt:sign "5.13.4 Floating-point literals [lex.fcon]")opt [*digit-sequence*](lex.fcon#nt:digit-sequence "5.13.4 Floating-point literals [lex.fcon]")
|
||
P [*sign*](lex.fcon#nt:sign "5.13.4 Floating-point literals [lex.fcon]")opt [*digit-sequence*](lex.fcon#nt:digit-sequence "5.13.4 Floating-point literals [lex.fcon]")
|
||
|
||
[sign:](lex.fcon#nt:sign "5.13.4 Floating-point literals [lex.fcon]") one of
|
||
+ -
|
||
|
||
[digit-sequence:](lex.fcon#nt:digit-sequence "5.13.4 Floating-point literals [lex.fcon]")
|
||
[*digit*](lex.name#nt:digit "5.11 Identifiers [lex.name]")
|
||
[*digit-sequence*](lex.fcon#nt:digit-sequence "5.13.4 Floating-point literals [lex.fcon]") 'opt [*digit*](lex.name#nt:digit "5.11 Identifiers [lex.name]")
|
||
|
||
[floating-point-suffix:](lex.fcon#nt:floating-point-suffix "5.13.4 Floating-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.5 String literals [lex.string]")
|
||
[*encoding-prefix*](lex.ccon#nt:encoding-prefix "5.13.3 Character literals [lex.ccon]")opt " [*s-char-sequence*](lex.string#nt:s-char-sequence "5.13.5 String literals [lex.string]")opt "
|
||
[*encoding-prefix*](lex.ccon#nt:encoding-prefix "5.13.3 Character literals [lex.ccon]")opt R [*raw-string*](lex.string#nt:raw-string "5.13.5 String literals [lex.string]")
|
||
|
||
[s-char-sequence:](lex.string#nt:s-char-sequence "5.13.5 String literals [lex.string]")
|
||
[*s-char*](lex.string#nt:s-char "5.13.5 String literals [lex.string]") [*s-char-sequence*](lex.string#nt:s-char-sequence "5.13.5 String literals [lex.string]")opt
|
||
|
||
[s-char:](lex.string#nt:s-char "5.13.5 String literals [lex.string]")
|
||
[*basic-s-char*](lex.string#nt:basic-s-char "5.13.5 String literals [lex.string]")
|
||
[*escape-sequence*](lex.ccon#nt:escape-sequence "5.13.3 Character literals [lex.ccon]")
|
||
[*universal-character-name*](lex.universal.char#nt:universal-character-name "5.3.2 Universal character names [lex.universal.char]")
|
||
|
||
[basic-s-char:](lex.string#nt:basic-s-char "5.13.5 String 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.5 String literals [lex.string]")
|
||
" [*d-char-sequence*](lex.string#nt:d-char-sequence "5.13.5 String literals [lex.string]")opt ( [*r-char-sequence*](lex.string#nt:r-char-sequence "5.13.5 String literals [lex.string]")opt ) [*d-char-sequence*](lex.string#nt:d-char-sequence "5.13.5 String literals [lex.string]")opt "
|
||
|
||
[r-char-sequence:](lex.string#nt:r-char-sequence "5.13.5 String literals [lex.string]")
|
||
[*r-char*](lex.string#nt:r-char "5.13.5 String literals [lex.string]") [*r-char-sequence*](lex.string#nt:r-char-sequence "5.13.5 String literals [lex.string]")opt
|
||
|
||
[r-char:](lex.string#nt:r-char "5.13.5 String 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.5 String 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.5 String literals [lex.string]")
|
||
[*d-char*](lex.string#nt:d-char "5.13.5 String literals [lex.string]") [*d-char-sequence*](lex.string#nt:d-char-sequence "5.13.5 String literals [lex.string]")opt
|
||
|
||
[d-char:](lex.string#nt:d-char "5.13.5 String 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.6 Unevaluated strings [lex.string.uneval]")
|
||
[*string-literal*](lex.string#nt:string-literal "5.13.5 String literals [lex.string]")
|
||
|
||
[boolean-literal:](lex.bool#nt:boolean-literal "5.13.7 Boolean literals [lex.bool]")
|
||
false
|
||
true
|
||
|
||
[pointer-literal:](lex.nullptr#nt:pointer-literal "5.13.8 Pointer literals [lex.nullptr]")
|
||
nullptr
|
||
|
||
[user-defined-literal:](lex.ext#nt:user-defined-literal "5.13.9 User-defined literals [lex.ext]")
|
||
[*user-defined-integer-literal*](lex.ext#nt:user-defined-integer-literal "5.13.9 User-defined literals [lex.ext]")
|
||
[*user-defined-floating-point-literal*](lex.ext#nt:user-defined-floating-point-literal "5.13.9 User-defined literals [lex.ext]")
|
||
[*user-defined-string-literal*](lex.ext#nt:user-defined-string-literal "5.13.9 User-defined literals [lex.ext]")
|
||
[*user-defined-character-literal*](lex.ext#nt:user-defined-character-literal "5.13.9 User-defined literals [lex.ext]")
|
||
|
||
[user-defined-integer-literal:](lex.ext#nt:user-defined-integer-literal "5.13.9 User-defined literals [lex.ext]")
|
||
[*decimal-literal*](lex.icon#nt:decimal-literal "5.13.2 Integer literals [lex.icon]") [*ud-suffix*](lex.ext#nt:ud-suffix "5.13.9 User-defined literals [lex.ext]")
|
||
[*octal-literal*](lex.icon#nt:octal-literal "5.13.2 Integer literals [lex.icon]") [*ud-suffix*](lex.ext#nt:ud-suffix "5.13.9 User-defined literals [lex.ext]")
|
||
[*hexadecimal-literal*](lex.icon#nt:hexadecimal-literal "5.13.2 Integer literals [lex.icon]") [*ud-suffix*](lex.ext#nt:ud-suffix "5.13.9 User-defined literals [lex.ext]")
|
||
[*binary-literal*](lex.icon#nt:binary-literal "5.13.2 Integer literals [lex.icon]") [*ud-suffix*](lex.ext#nt:ud-suffix "5.13.9 User-defined literals [lex.ext]")
|
||
|
||
[user-defined-floating-point-literal:](lex.ext#nt:user-defined-floating-point-literal "5.13.9 User-defined literals [lex.ext]")
|
||
[*fractional-constant*](lex.fcon#nt:fractional-constant "5.13.4 Floating-point literals [lex.fcon]") [*exponent-part*](lex.fcon#nt:exponent-part "5.13.4 Floating-point literals [lex.fcon]")opt [*ud-suffix*](lex.ext#nt:ud-suffix "5.13.9 User-defined literals [lex.ext]")
|
||
[*digit-sequence*](lex.fcon#nt:digit-sequence "5.13.4 Floating-point literals [lex.fcon]") [*exponent-part*](lex.fcon#nt:exponent-part "5.13.4 Floating-point literals [lex.fcon]") [*ud-suffix*](lex.ext#nt:ud-suffix "5.13.9 User-defined literals [lex.ext]")
|
||
[*hexadecimal-prefix*](lex.icon#nt:hexadecimal-prefix "5.13.2 Integer literals [lex.icon]") [*hexadecimal-fractional-constant*](lex.fcon#nt:hexadecimal-fractional-constant "5.13.4 Floating-point literals [lex.fcon]") [*binary-exponent-part*](lex.fcon#nt:binary-exponent-part "5.13.4 Floating-point literals [lex.fcon]") [*ud-suffix*](lex.ext#nt:ud-suffix "5.13.9 User-defined literals [lex.ext]")
|
||
[*hexadecimal-prefix*](lex.icon#nt:hexadecimal-prefix "5.13.2 Integer literals [lex.icon]") [*hexadecimal-digit-sequence*](lex.icon#nt:hexadecimal-digit-sequence "5.13.2 Integer literals [lex.icon]") [*binary-exponent-part*](lex.fcon#nt:binary-exponent-part "5.13.4 Floating-point literals [lex.fcon]") [*ud-suffix*](lex.ext#nt:ud-suffix "5.13.9 User-defined literals [lex.ext]")
|
||
|
||
[user-defined-string-literal:](lex.ext#nt:user-defined-string-literal "5.13.9 User-defined literals [lex.ext]")
|
||
[*string-literal*](lex.string#nt:string-literal "5.13.5 String literals [lex.string]") [*ud-suffix*](lex.ext#nt:ud-suffix "5.13.9 User-defined literals [lex.ext]")
|
||
|
||
[user-defined-character-literal:](lex.ext#nt:user-defined-character-literal "5.13.9 User-defined literals [lex.ext]")
|
||
[*character-literal*](lex.ccon#nt:character-literal "5.13.3 Character literals [lex.ccon]") [*ud-suffix*](lex.ext#nt:ud-suffix "5.13.9 User-defined literals [lex.ext]")
|
||
|
||
[ud-suffix:](lex.ext#nt:ud-suffix "5.13.9 User-defined literals [lex.ext]")
|
||
[*identifier*](lex.name#nt:identifier "5.11 Identifiers [lex.name]")
|