@@ -65,14 +65,9 @@ explicit code point lists. [^inputformat]
65
65
provided to the grammar verifier, restricted to ASCII range, when verifying the
66
66
grammar in this document.
67
67
68
- ## Special Unicode Productions
68
+ ## Identifiers
69
69
70
- The following productions in the Rust grammar are defined in terms of Unicode
71
- properties: ` ident ` , ` non_null ` , ` non_eol ` , ` non_single_quote ` and ` non_double_quote ` .
72
-
73
- ### Identifiers
74
-
75
- The ` ident ` production is any nonempty Unicode[ ^ non_ascii_idents ] string of the following form:
70
+ An identifier is any nonempty Unicode[ ^ non_ascii_idents ] string of the following form:
76
71
77
72
[ ^ non_ascii_idents ] : Non-ASCII characters in identifiers are currently feature
78
73
gated. This is expected to improve soon.
@@ -86,40 +81,34 @@ that does _not_ occur in the set of [keywords](#keywords).
86
81
> character ranges used to form the more familiar C and Java language-family
87
82
> identifiers.
88
83
89
- ### Delimiter-restricted productions
90
-
91
- Some productions are defined by exclusion of particular Unicode characters:
92
-
93
- - ` non_null ` is any single Unicode character aside from ` U+0000 ` (null)
94
- - ` non_eol ` is ` non_null ` restricted to exclude ` U+000A ` (` '\n' ` )
95
- - ` non_single_quote ` is ` non_null ` restricted to exclude ` U+0027 ` (` ' ` )
96
- - ` non_double_quote ` is ` non_null ` restricted to exclude ` U+0022 ` (` " ` )
97
-
98
84
## Comments
99
85
100
- Comments in Rust code follow the general C++ style of line and block-comment
101
- forms. Nested block comments are supported.
86
+ Comments in Rust code follow the general C++ style of line ( ` // ` ) and
87
+ block-comment ( ` /* ... */ ` ) forms. Nested block comments are supported.
102
88
103
89
Line comments beginning with exactly _ three_ slashes (` /// ` ), and block
104
90
comments beginning with exactly one repeated asterisk in the block-open
105
91
sequence (` /** ` ), are interpreted as a special syntax for ` doc `
106
92
[ attributes] ( #attributes ) . That is, they are equivalent to writing
107
- ` #[doc="..."] ` around the body of the comment (this includes the comment
108
- characters themselves, i.e. ` /// Foo ` turns into ` #[doc="/// Foo"] ` ) .
93
+ ` #[doc="..."] ` around the body of the comment, i.e., ` /// Foo ` turns into
94
+ ` #[doc="Foo"] ` .
109
95
110
96
Line comments beginning with ` //! ` and block comments beginning with ` /*! ` are
111
97
doc comments that apply to the parent of the comment, rather than the item
112
98
that follows. That is, they are equivalent to writing ` #![doc="..."] ` around
113
- the body of the comment. ` //! ` comments are usually used to display
114
- information on the crate index page .
99
+ the body of the comment. ` //! ` comments are usually used to document
100
+ modules that occupy a source file .
115
101
116
102
Non-doc comments are interpreted as a form of whitespace.
117
103
118
104
## Whitespace
119
105
120
- The ` whitespace_char ` production is any nonempty Unicode string consisting of
121
- any of the following Unicode characters: ` U+0020 ` (space, ` ' ' ` ), ` U+0009 `
122
- (tab, ` '\t' ` ), ` U+000A ` (LF, ` '\n' ` ), ` U+000D ` (CR, ` '\r' ` ).
106
+ Whitespace is any non-empty string containing any the following characters:
107
+
108
+ - ` U+0020 ` (space, ` ' ' ` )
109
+ - ` U+0009 ` (tab, ` '\t' ` )
110
+ - ` U+000A ` (LF, ` '\n' ` )
111
+ - ` U+000D ` (CR, ` '\r' ` )
123
112
124
113
Rust is a "free-form" language, meaning that all forms of whitespace serve only
125
114
to separate _ tokens_ in the grammar, and have no semantic significance.
0 commit comments