|
85 | 85 | <keyword>u64</keyword>
|
86 | 86 | <keyword>f32</keyword>
|
87 | 87 | <keyword>f64</keyword>
|
88 |
| - <keyword>float</keyword> |
89 | 88 | <keyword>char</keyword>
|
90 | 89 | <keyword>str</keyword>
|
91 | 90 | <keyword>Either</keyword>
|
|
205 | 204 | </include>
|
206 | 205 | </context>
|
207 | 206 |
|
| 207 | + <define-regex id="int_suffix" extended="true"> |
| 208 | + (i8|i16|i32|i64|i|u8|u16|u32|u64|u) |
| 209 | + </define-regex> |
| 210 | + |
| 211 | + <define-regex id="exponent" extended="true"> |
| 212 | + ([eE][+-]?[0-9_]+) |
| 213 | + </define-regex> |
| 214 | + |
| 215 | + <define-regex id="float_suffix" extended="true"> |
| 216 | + (\%{exponent}?(f32|f64)?)|(\.[0-9][0-9_]*\%{exponent}?)?(f32|f64)?|\. |
| 217 | + </define-regex> |
| 218 | + |
| 219 | + <define-regex id="num_suffix" extended="true"> |
| 220 | + \%{int_suffix}|\%{float_suffix} |
| 221 | + </define-regex> |
| 222 | + |
| 223 | + <define-regex id="hex_digit" extended="true"> |
| 224 | + [0-9a-fA-F] |
| 225 | + </define-regex> |
| 226 | + |
208 | 227 | <context id="number" style-ref="number">
|
209 | 228 | <match extended="true">
|
210 |
| - (?<![\w\.]) |
| 229 | + ((?<=\.\.)|(?<![\w\.])) |
211 | 230 | (
|
212 |
| - 0x[0-9a-fA-F_]+(u8|u16|u32|u64|i8|i16|i32|i64|u|i)?| |
213 |
| - 0b[0-1_]+(u8|u16|u32|u64|i8|i16|i32|i64|u|i)?| |
214 |
| - [0-9][0-9_]*\.[0-9_]*([eE][+-]?[0-9_]+)?(f32|f64|f)?| |
215 |
| - [0-9][0-9_]*(u8|u16|u32|u64|i8|i16|i32|i64|u|i)? |
| 231 | + [1-9][0-9_]*\%{num_suffix}?| |
| 232 | + 0[0-9_]*\%{num_suffix}?| |
| 233 | + 0b[01_]+\%{int_suffix}?| |
| 234 | + 0x(\%{hex_digit}|_)+\%{int_suffix}? |
216 | 235 | )
|
217 |
| - (?![\w\.]) |
| 236 | + ((?![\w\.].)|(?=\.\.)) |
218 | 237 | </match>
|
219 | 238 | </context>
|
220 | 239 |
|
|
234 | 253 | </match>
|
235 | 254 | </context>
|
236 | 255 |
|
| 256 | + <define-regex id="common_escape" extended="true"> |
| 257 | + '|"| |
| 258 | + \\|n|r|t| |
| 259 | + x\%{hex_digit}{2}| |
| 260 | + u\%{hex_digit}{4}| |
| 261 | + U\%{hex_digit}{8} |
| 262 | + </define-regex> |
| 263 | + |
| 264 | + <context id="string_escape" style-ref="def:special-char"> |
| 265 | + <match>\\\%{common_escape}</match> |
| 266 | + </context> |
| 267 | + |
237 | 268 | <context id="string" style-ref="string" class="string" class-disabled="no-spell-check">
|
238 | 269 | <start>"</start>
|
239 | 270 | <end>"</end>
|
240 | 271 | <include>
|
241 |
| - <context ref="def:escape"/> |
| 272 | + <context ref="string_escape"/> |
242 | 273 | <context ref="def:line-continue"/>
|
243 | 274 | </include>
|
244 | 275 | </context>
|
245 | 276 |
|
246 |
| - <define-regex id="hex_digit" extended="true"> |
247 |
| - [0-9a-fA-F] |
248 |
| - </define-regex> |
249 |
| - |
250 |
| - <define-regex id="common_escape" extended="true"> |
251 |
| - (n|r|t)| |
252 |
| - x\%{hex_digit}{2}| |
253 |
| - u\%{hex_digit}{4}| |
254 |
| - U\%{hex_digit}{8} |
255 |
| - </define-regex> |
256 |
| - |
257 |
| - <context id="char" style-ref="char" class="char"> |
258 |
| - <match extended="true">'([^\\]|\\\%{common_escape})'</match> |
| 277 | + <context id="char" style-ref="char"> |
| 278 | + <match extended="true">'([^\\']|\\\%{common_escape})'</match> |
259 | 279 | </context>
|
260 | 280 |
|
261 | 281 | <context id="attribute" style-ref="attribute" class="attribute">
|
262 |
| - <match extended="true">\#\[[^\]]+\]</match> |
| 282 | + <start extended="true">\#\[</start> |
| 283 | + <end>\]</end> |
| 284 | + <include> |
| 285 | + <context ref="def:in-comment"/> |
| 286 | + </include> |
263 | 287 | </context>
|
264 | 288 |
|
265 | 289 | <context id="rust" class="no-spell-check">
|
|
0 commit comments