You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardexpand all lines: src/tokens.md
+37-2
Original file line number
Diff line number
Diff line change
@@ -88,8 +88,7 @@ evaluated (primarily) at compile time.
88
88
89
89
#### Suffixes
90
90
91
-
A suffix is a non-raw identifier immediately (without whitespace)
92
-
following the primary part of a literal.
91
+
A suffix is a sequence of characters following the primary part of a literal (without intervening whitespace), of the same form as a non-raw identifier or keyword.
93
92
94
93
Any kind of literal (string, integer, etc) with any suffix is valid as a token,
95
94
and can be passed to a macro without producing an error.
@@ -659,3 +658,39 @@ them are referred to as "token trees" in [macros]. The three types of brackets
Some lexical forms known as _reserved prefixes_ are reserved for future use.
670
+
671
+
Source input which would otherwise be lexically interpreted as a non-raw identifier (or a keyword or `_`) which is immediately followed by a `#`, `'`, or `"` character (without intervening whitespace) is identified as a reserved prefix.
672
+
673
+
Note that raw identifiers, raw string literals, and raw byte string literals may contain a `#` character but are not interpreted as containing a reserved prefix.
674
+
675
+
Similarly the `r`, `b`, and `br` prefixes used in raw string literals, byte literals, byte string literals, and raw byte string literals are not interpreted as reserved prefixes.
676
+
677
+
> **Edition Differences**: Starting with the 2021 edition, reserved prefixes are reported as an error by the lexer (in particular, they cannot be passed to macros).
678
+
>
679
+
> Before the 2021 edition, a reserved prefixes are accepted by the lexer and interpreted as multiple tokens (for example, one token for the identifier or keyword, followed by a `#` token).
0 commit comments