66
|
1 <lexer>
|
|
2 <config>
|
|
3 <name>Rust</name>
|
|
4 <alias>rust</alias>
|
|
5 <alias>rs</alias>
|
|
6 <filename>*.rs</filename>
|
|
7 <filename>*.rs.in</filename>
|
|
8 <mime_type>text/rust</mime_type>
|
|
9 <mime_type>text/x-rust</mime_type>
|
|
10 <ensure_nl>true</ensure_nl>
|
|
11 </config>
|
|
12 <rules>
|
|
13 <state name="modname">
|
|
14 <rule pattern="\s+">
|
|
15 <token type="Text"/>
|
|
16 </rule>
|
|
17 <rule pattern="[a-zA-Z_]\w*">
|
|
18 <token type="NameNamespace"/>
|
|
19 <pop depth="1"/>
|
|
20 </rule>
|
|
21 <rule>
|
|
22 <pop depth="1"/>
|
|
23 </rule>
|
|
24 </state>
|
|
25 <state name="lifetime">
|
|
26 <rule pattern="(static|_)">
|
|
27 <token type="NameBuiltin"/>
|
|
28 </rule>
|
|
29 <rule pattern="[a-zA-Z_]+\w*">
|
|
30 <token type="NameAttribute"/>
|
|
31 </rule>
|
|
32 <rule>
|
|
33 <pop depth="1"/>
|
|
34 </rule>
|
|
35 </state>
|
|
36 <state name="number_lit">
|
|
37 <rule pattern="[ui](8|16|32|64|size)">
|
|
38 <token type="Keyword"/>
|
|
39 <pop depth="1"/>
|
|
40 </rule>
|
|
41 <rule pattern="f(32|64)">
|
|
42 <token type="Keyword"/>
|
|
43 <pop depth="1"/>
|
|
44 </rule>
|
|
45 <rule>
|
|
46 <pop depth="1"/>
|
|
47 </rule>
|
|
48 </state>
|
|
49 <state name="attribute_common">
|
|
50 <rule pattern=""">
|
|
51 <token type="LiteralString"/>
|
|
52 <push state="string"/>
|
|
53 </rule>
|
|
54 <rule pattern="\[">
|
|
55 <token type="CommentPreproc"/>
|
|
56 <push state="attribute["/>
|
|
57 </rule>
|
|
58 </state>
|
|
59 <state name="bytestring">
|
|
60 <rule pattern="\\x[89a-fA-F][0-9a-fA-F]">
|
|
61 <token type="LiteralStringEscape"/>
|
|
62 </rule>
|
|
63 <rule>
|
|
64 <include state="string"/>
|
|
65 </rule>
|
|
66 </state>
|
|
67 <state name="comment">
|
|
68 <rule pattern="[^*/]+">
|
|
69 <token type="CommentMultiline"/>
|
|
70 </rule>
|
|
71 <rule pattern="/\*">
|
|
72 <token type="CommentMultiline"/>
|
|
73 <push/>
|
|
74 </rule>
|
|
75 <rule pattern="\*/">
|
|
76 <token type="CommentMultiline"/>
|
|
77 <pop depth="1"/>
|
|
78 </rule>
|
|
79 <rule pattern="[*/]">
|
|
80 <token type="CommentMultiline"/>
|
|
81 </rule>
|
|
82 </state>
|
|
83 <state name="doccomment">
|
|
84 <rule pattern="[^*/]+">
|
|
85 <token type="LiteralStringDoc"/>
|
|
86 </rule>
|
|
87 <rule pattern="/\*">
|
|
88 <token type="LiteralStringDoc"/>
|
|
89 <push/>
|
|
90 </rule>
|
|
91 <rule pattern="\*/">
|
|
92 <token type="LiteralStringDoc"/>
|
|
93 <pop depth="1"/>
|
|
94 </rule>
|
|
95 <rule pattern="[*/]">
|
|
96 <token type="LiteralStringDoc"/>
|
|
97 </rule>
|
|
98 </state>
|
|
99 <state name="funcname">
|
|
100 <rule pattern="\s+">
|
|
101 <token type="Text"/>
|
|
102 </rule>
|
|
103 <rule pattern="[a-zA-Z_]\w*">
|
|
104 <token type="NameFunction"/>
|
|
105 <pop depth="1"/>
|
|
106 </rule>
|
|
107 <rule>
|
|
108 <pop depth="1"/>
|
|
109 </rule>
|
|
110 </state>
|
|
111 <state name="string">
|
|
112 <rule pattern=""">
|
|
113 <token type="LiteralString"/>
|
|
114 <pop depth="1"/>
|
|
115 </rule>
|
|
116 <rule pattern="\\['"\\nrt]|\\x[0-7][0-9a-fA-F]|\\0|\\u\{[0-9a-fA-F]{1,6}\}">
|
|
117 <token type="LiteralStringEscape"/>
|
|
118 </rule>
|
|
119 <rule pattern="[^\\"]+">
|
|
120 <token type="LiteralString"/>
|
|
121 </rule>
|
|
122 <rule pattern="\\">
|
|
123 <token type="LiteralString"/>
|
|
124 </rule>
|
|
125 </state>
|
|
126 <state name="root">
|
|
127 <rule pattern="#![^[\r\n].*$">
|
|
128 <token type="CommentPreproc"/>
|
|
129 </rule>
|
|
130 <rule>
|
|
131 <push state="base"/>
|
|
132 </rule>
|
|
133 </state>
|
|
134 <state name="attribute[">
|
|
135 <rule>
|
|
136 <include state="attribute_common"/>
|
|
137 </rule>
|
|
138 <rule pattern="\]">
|
|
139 <token type="CommentPreproc"/>
|
|
140 <pop depth="1"/>
|
|
141 </rule>
|
|
142 <rule pattern="[^"\]\[]+">
|
|
143 <token type="CommentPreproc"/>
|
|
144 </rule>
|
|
145 </state>
|
|
146 <state name="base">
|
|
147 <rule pattern="\n">
|
|
148 <token type="TextWhitespace"/>
|
|
149 </rule>
|
|
150 <rule pattern="\s+">
|
|
151 <token type="TextWhitespace"/>
|
|
152 </rule>
|
|
153 <rule pattern="//!.*?\n">
|
|
154 <token type="LiteralStringDoc"/>
|
|
155 </rule>
|
|
156 <rule pattern="///(\n|[^/].*?\n)">
|
|
157 <token type="LiteralStringDoc"/>
|
|
158 </rule>
|
|
159 <rule pattern="//(.*?)\n">
|
|
160 <token type="CommentSingle"/>
|
|
161 </rule>
|
|
162 <rule pattern="/\*\*(\n|[^/*])">
|
|
163 <token type="LiteralStringDoc"/>
|
|
164 <push state="doccomment"/>
|
|
165 </rule>
|
|
166 <rule pattern="/\*!">
|
|
167 <token type="LiteralStringDoc"/>
|
|
168 <push state="doccomment"/>
|
|
169 </rule>
|
|
170 <rule pattern="/\*">
|
|
171 <token type="CommentMultiline"/>
|
|
172 <push state="comment"/>
|
|
173 </rule>
|
|
174 <rule pattern="r#*"(?:\\.|[^\\;])*"#*">
|
|
175 <token type="LiteralString"/>
|
|
176 </rule>
|
|
177 <rule pattern=""(?:\\.|[^\\"])*"">
|
|
178 <token type="LiteralString"/>
|
|
179 </rule>
|
|
180 <rule pattern="\$([a-zA-Z_]\w*|\(,?|\),?|,?)">
|
|
181 <token type="CommentPreproc"/>
|
|
182 </rule>
|
|
183 <rule pattern="(unsafe|static|extern|return|const|crate|where|while|await|trait|super|async|match|impl|else|move|loop|pub|ref|mut|for|dyn|use|box|in|if|as)\b">
|
|
184 <token type="Keyword"/>
|
|
185 </rule>
|
|
186 <rule pattern="(abstract|override|unsized|virtual|become|typeof|final|macro|yield|priv|try|do)\b">
|
|
187 <token type="KeywordReserved"/>
|
|
188 </rule>
|
|
189 <rule pattern="(true|false)\b">
|
|
190 <token type="KeywordConstant"/>
|
|
191 </rule>
|
|
192 <rule pattern="self\b">
|
|
193 <token type="NameBuiltinPseudo"/>
|
|
194 </rule>
|
|
195 <rule pattern="mod\b">
|
|
196 <token type="Keyword"/>
|
|
197 <push state="modname"/>
|
|
198 </rule>
|
|
199 <rule pattern="let\b">
|
|
200 <token type="KeywordDeclaration"/>
|
|
201 </rule>
|
|
202 <rule pattern="fn\b">
|
|
203 <token type="Keyword"/>
|
|
204 <push state="funcname"/>
|
|
205 </rule>
|
|
206 <rule pattern="(struct|enum|type|union)\b">
|
|
207 <token type="Keyword"/>
|
|
208 <push state="typename"/>
|
|
209 </rule>
|
|
210 <rule pattern="(default)(\s+)(type|fn)\b">
|
|
211 <bygroups>
|
|
212 <token type="Keyword"/>
|
|
213 <token type="Text"/>
|
|
214 <token type="Keyword"/>
|
|
215 </bygroups>
|
|
216 </rule>
|
|
217 <rule pattern="(isize|usize|bool|char|u128|i128|i64|i32|i16|str|u64|u32|f32|f64|u16|i8|u8)\b">
|
|
218 <token type="KeywordType"/>
|
|
219 </rule>
|
|
220 <rule pattern="[sS]elf\b">
|
|
221 <token type="NameBuiltinPseudo"/>
|
|
222 </rule>
|
|
223 <rule pattern="(DoubleEndedIterator|ExactSizeIterator|IntoIterator|PartialOrd|PartialEq|ToString|Iterator|ToOwned|Default|Result|String|FnOnce|Extend|Option|FnMut|Unpin|Sized|AsRef|AsMut|Clone|None|From|Into|Sync|drop|Send|Drop|Copy|Some|Ord|Err|Box|Vec|Eq|Ok|Fn)\b">
|
|
224 <token type="NameBuiltin"/>
|
|
225 </rule>
|
|
226 <rule pattern="(is_powerpc64_feature_detected|is_aarch64_feature_detected|is_powerpc_feature_detected|is_mips64_feature_detected|is_mips_feature_detected|is_x86_feature_detected|is_arm_feature_detected|debug_assert_ne|debug_assert_eq|format_args_nl|concat_idents|unimplemented|include_bytes|compile_error|debug_assert|thread_local|trace_macros|macro_rules|format_args|module_path|unreachable|include_str|option_env|global_asm|log_syntax|stringify|assert_ne|assert_eq|llvm_asm|eprintln|include|matches|println|writeln|format|column|assert|concat|eprint|write|panic|print|file|todo|line|env|dbg|vec|cfg|asm)!">
|
|
227 <token type="NameFunctionMagic"/>
|
|
228 </rule>
|
|
229 <rule pattern="::\b">
|
|
230 <token type="Text"/>
|
|
231 </rule>
|
|
232 <rule pattern="(?::|->)">
|
|
233 <token type="Text"/>
|
|
234 <push state="typename"/>
|
|
235 </rule>
|
|
236 <rule pattern="(break|continue)(\b\s*)(\'[A-Za-z_]\w*)?">
|
|
237 <bygroups>
|
|
238 <token type="Keyword"/>
|
|
239 <token type="TextWhitespace"/>
|
|
240 <token type="NameLabel"/>
|
|
241 </bygroups>
|
|
242 </rule>
|
|
243 <rule pattern="'(\\['"\\nrt]|\\x[0-7][0-9a-fA-F]|\\0|\\u\{[0-9a-fA-F]{1,6}\}|.)'">
|
|
244 <token type="LiteralStringChar"/>
|
|
245 </rule>
|
|
246 <rule pattern="b'(\\['"\\nrt]|\\x[0-9a-fA-F]{2}|\\0|\\u\{[0-9a-fA-F]{1,6}\}|.)'">
|
|
247 <token type="LiteralStringChar"/>
|
|
248 </rule>
|
|
249 <rule pattern="0b[01_]+">
|
|
250 <token type="LiteralNumberBin"/>
|
|
251 <push state="number_lit"/>
|
|
252 </rule>
|
|
253 <rule pattern="0o[0-7_]+">
|
|
254 <token type="LiteralNumberOct"/>
|
|
255 <push state="number_lit"/>
|
|
256 </rule>
|
|
257 <rule pattern="0[xX][0-9a-fA-F_]+">
|
|
258 <token type="LiteralNumberHex"/>
|
|
259 <push state="number_lit"/>
|
|
260 </rule>
|
|
261 <rule pattern="[0-9][0-9_]*(\.[0-9_]+[eE][+\-]?[0-9_]+|\.[0-9_]*(?!\.)|[eE][+\-]?[0-9_]+)">
|
|
262 <token type="LiteralNumberFloat"/>
|
|
263 <push state="number_lit"/>
|
|
264 </rule>
|
|
265 <rule pattern="[0-9][0-9_]*">
|
|
266 <token type="LiteralNumberInteger"/>
|
|
267 <push state="number_lit"/>
|
|
268 </rule>
|
|
269 <rule pattern="b"">
|
|
270 <token type="LiteralString"/>
|
|
271 <push state="bytestring"/>
|
|
272 </rule>
|
|
273 <rule pattern="(?s)b?r(#*)".*?"\1">
|
|
274 <token type="LiteralString"/>
|
|
275 </rule>
|
|
276 <rule pattern="'">
|
|
277 <token type="Operator"/>
|
|
278 <push state="lifetime"/>
|
|
279 </rule>
|
|
280 <rule pattern="\.\.=?">
|
|
281 <token type="Operator"/>
|
|
282 </rule>
|
|
283 <rule pattern="[{}()\[\],.;]">
|
|
284 <token type="Punctuation"/>
|
|
285 </rule>
|
|
286 <rule pattern="[+\-*/%&|<>^!~@=:?]">
|
|
287 <token type="Operator"/>
|
|
288 </rule>
|
|
289 <rule pattern="(r#)?[a-zA-Z_]\w*">
|
|
290 <token type="Name"/>
|
|
291 </rule>
|
|
292 <rule pattern="r#[a-zA-Z_]\w*">
|
|
293 <token type="Name"/>
|
|
294 </rule>
|
|
295 <rule pattern="#!?\[">
|
|
296 <token type="CommentPreproc"/>
|
|
297 <push state="attribute["/>
|
|
298 </rule>
|
|
299 <rule pattern="#">
|
|
300 <token type="Text"/>
|
|
301 </rule>
|
|
302 </state>
|
|
303 <state name="typename">
|
|
304 <rule pattern="\s+">
|
|
305 <token type="Text"/>
|
|
306 </rule>
|
|
307 <rule pattern="&">
|
|
308 <token type="KeywordPseudo"/>
|
|
309 </rule>
|
|
310 <rule pattern="'">
|
|
311 <token type="Operator"/>
|
|
312 <push state="lifetime"/>
|
|
313 </rule>
|
|
314 <rule pattern="(DoubleEndedIterator|ExactSizeIterator|IntoIterator|PartialOrd|PartialEq|ToString|Iterator|ToOwned|Default|Result|String|FnOnce|Extend|Option|FnMut|Unpin|Sized|AsRef|AsMut|Clone|None|From|Into|Sync|drop|Send|Drop|Copy|Some|Ord|Err|Box|Vec|Eq|Ok|Fn)\b">
|
|
315 <token type="NameBuiltin"/>
|
|
316 </rule>
|
|
317 <rule pattern="(isize|usize|bool|char|u128|i128|i64|i32|i16|str|u64|u32|f32|f64|u16|i8|u8)\b">
|
|
318 <token type="KeywordType"/>
|
|
319 </rule>
|
|
320 <rule pattern="[a-zA-Z_]\w*">
|
|
321 <token type="NameClass"/>
|
|
322 <pop depth="1"/>
|
|
323 </rule>
|
|
324 <rule>
|
|
325 <pop depth="1"/>
|
|
326 </rule>
|
|
327 </state>
|
|
328 </rules>
|
|
329 </lexer> |