[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]")