...
1<lexer>
2 <config>
3 <name>Crystal</name>
4 <alias>cr</alias>
5 <alias>crystal</alias>
6 <filename>*.cr</filename>
7 <mime_type>text/x-crystal</mime_type>
8 <dot_all>true</dot_all>
9 </config>
10 <rules>
11 <state name="pa-intp-string">
12 <rule pattern="\\[\(]">
13 <token type="LiteralStringOther"/>
14 </rule>
15 <rule pattern="\(">
16 <token type="LiteralStringOther"/>
17 <push/>
18 </rule>
19 <rule pattern="\)">
20 <token type="LiteralStringOther"/>
21 <pop depth="1"/>
22 </rule>
23 <rule>
24 <include state="string-intp-escaped"/>
25 </rule>
26 <rule pattern="[\\#()]">
27 <token type="LiteralStringOther"/>
28 </rule>
29 <rule pattern="[^\\#()]+">
30 <token type="LiteralStringOther"/>
31 </rule>
32 </state>
33 <state name="ab-regex">
34 <rule pattern="\\[\\<>]">
35 <token type="LiteralStringRegex"/>
36 </rule>
37 <rule pattern="<">
38 <token type="LiteralStringRegex"/>
39 <push/>
40 </rule>
41 <rule pattern=">[imsx]*">
42 <token type="LiteralStringRegex"/>
43 <pop depth="1"/>
44 </rule>
45 <rule>
46 <include state="string-intp"/>
47 </rule>
48 <rule pattern="[\\#<>]">
49 <token type="LiteralStringRegex"/>
50 </rule>
51 <rule pattern="[^\\#<>]+">
52 <token type="LiteralStringRegex"/>
53 </rule>
54 </state>
55 <state name="cb-regex">
56 <rule pattern="\\[\\{}]">
57 <token type="LiteralStringRegex"/>
58 </rule>
59 <rule pattern="\{">
60 <token type="LiteralStringRegex"/>
61 <push/>
62 </rule>
63 <rule pattern="\}[imsx]*">
64 <token type="LiteralStringRegex"/>
65 <pop depth="1"/>
66 </rule>
67 <rule>
68 <include state="string-intp"/>
69 </rule>
70 <rule pattern="[\\#{}]">
71 <token type="LiteralStringRegex"/>
72 </rule>
73 <rule pattern="[^\\#{}]+">
74 <token type="LiteralStringRegex"/>
75 </rule>
76 </state>
77 <state name="simple-backtick">
78 <rule>
79 <include state="string-intp-escaped"/>
80 </rule>
81 <rule pattern="[^\\`#]+">
82 <token type="LiteralStringBacktick"/>
83 </rule>
84 <rule pattern="[\\#]">
85 <token type="LiteralStringBacktick"/>
86 </rule>
87 <rule pattern="`">
88 <token type="LiteralStringBacktick"/>
89 <pop depth="1"/>
90 </rule>
91 </state>
92 <state name="string-intp">
93 <rule pattern="#\{">
94 <token type="LiteralStringInterpol"/>
95 <push state="in-intp"/>
96 </rule>
97 </state>
98 <state name="interpolated-regex">
99 <rule>
100 <include state="string-intp"/>
101 </rule>
102 <rule pattern="[\\#]">
103 <token type="LiteralStringRegex"/>
104 </rule>
105 <rule pattern="[^\\#]+">
106 <token type="LiteralStringRegex"/>
107 </rule>
108 </state>
109 <state name="cb-string">
110 <rule pattern="\\[\\{}]">
111 <token type="LiteralStringOther"/>
112 </rule>
113 <rule pattern="\{">
114 <token type="LiteralStringOther"/>
115 <push/>
116 </rule>
117 <rule pattern="\}">
118 <token type="LiteralStringOther"/>
119 <pop depth="1"/>
120 </rule>
121 <rule pattern="[\\#{}]">
122 <token type="LiteralStringOther"/>
123 </rule>
124 <rule pattern="[^\\#{}]+">
125 <token type="LiteralStringOther"/>
126 </rule>
127 </state>
128 <state name="in-macro-control">
129 <rule pattern="\{%">
130 <token type="LiteralStringInterpol"/>
131 <push/>
132 </rule>
133 <rule pattern="%\}">
134 <token type="LiteralStringInterpol"/>
135 <pop depth="1"/>
136 </rule>
137 <rule pattern="for\b|in\b">
138 <token type="Keyword"/>
139 </rule>
140 <rule>
141 <include state="root"/>
142 </rule>
143 </state>
144 <state name="interpolated-string">
145 <rule>
146 <include state="string-intp"/>
147 </rule>
148 <rule pattern="[\\#]">
149 <token type="LiteralStringOther"/>
150 </rule>
151 <rule pattern="[^\\#]+">
152 <token type="LiteralStringOther"/>
153 </rule>
154 </state>
155 <state name="in-macro-expr">
156 <rule pattern="\{\{">
157 <token type="LiteralStringInterpol"/>
158 <push/>
159 </rule>
160 <rule pattern="\}\}">
161 <token type="LiteralStringInterpol"/>
162 <pop depth="1"/>
163 </rule>
164 <rule>
165 <include state="root"/>
166 </rule>
167 </state>
168 <state name="simple-string">
169 <rule>
170 <include state="string-intp-escaped"/>
171 </rule>
172 <rule pattern="[^\\"#]+">
173 <token type="LiteralStringDouble"/>
174 </rule>
175 <rule pattern="[\\#]">
176 <token type="LiteralStringDouble"/>
177 </rule>
178 <rule pattern=""">
179 <token type="LiteralStringDouble"/>
180 <pop depth="1"/>
181 </rule>
182 </state>
183 <state name="cb-intp-string">
184 <rule pattern="\\[\{]">
185 <token type="LiteralStringOther"/>
186 </rule>
187 <rule pattern="\{">
188 <token type="LiteralStringOther"/>
189 <push/>
190 </rule>
191 <rule pattern="\}">
192 <token type="LiteralStringOther"/>
193 <pop depth="1"/>
194 </rule>
195 <rule>
196 <include state="string-intp-escaped"/>
197 </rule>
198 <rule pattern="[\\#{}]">
199 <token type="LiteralStringOther"/>
200 </rule>
201 <rule pattern="[^\\#{}]+">
202 <token type="LiteralStringOther"/>
203 </rule>
204 </state>
205 <state name="string-intp-escaped">
206 <rule>
207 <include state="string-intp"/>
208 </rule>
209 <rule>
210 <include state="string-escaped"/>
211 </rule>
212 </state>
213 <state name="sb-regex">
214 <rule pattern="\\[\\\[\]]">
215 <token type="LiteralStringRegex"/>
216 </rule>
217 <rule pattern="\[">
218 <token type="LiteralStringRegex"/>
219 <push/>
220 </rule>
221 <rule pattern="\][imsx]*">
222 <token type="LiteralStringRegex"/>
223 <pop depth="1"/>
224 </rule>
225 <rule>
226 <include state="string-intp"/>
227 </rule>
228 <rule pattern="[\\#\[\]]">
229 <token type="LiteralStringRegex"/>
230 </rule>
231 <rule pattern="[^\\#\[\]]+">
232 <token type="LiteralStringRegex"/>
233 </rule>
234 </state>
235 <state name="classname">
236 <rule pattern="[A-Z_]\w*">
237 <token type="NameClass"/>
238 </rule>
239 <rule pattern="(\()(\s*)([A-Z_]\w*)(\s*)(\))">
240 <bygroups>
241 <token type="Punctuation"/>
242 <token type="Text"/>
243 <token type="NameClass"/>
244 <token type="Text"/>
245 <token type="Punctuation"/>
246 </bygroups>
247 </rule>
248 <rule>
249 <pop depth="1"/>
250 </rule>
251 </state>
252 <state name="string-escaped">
253 <rule pattern="\\([\\befnstv#"\']|x[a-fA-F0-9]{1,2}|[0-7]{1,3})">
254 <token type="LiteralStringEscape"/>
255 </rule>
256 </state>
257 <state name="sb-intp-string">
258 <rule pattern="\\[\[]">
259 <token type="LiteralStringOther"/>
260 </rule>
261 <rule pattern="\[">
262 <token type="LiteralStringOther"/>
263 <push/>
264 </rule>
265 <rule pattern="\]">
266 <token type="LiteralStringOther"/>
267 <pop depth="1"/>
268 </rule>
269 <rule>
270 <include state="string-intp-escaped"/>
271 </rule>
272 <rule pattern="[\\#\[\]]">
273 <token type="LiteralStringOther"/>
274 </rule>
275 <rule pattern="[^\\#\[\]]+">
276 <token type="LiteralStringOther"/>
277 </rule>
278 </state>
279 <state name="pa-regex">
280 <rule pattern="\\[\\()]">
281 <token type="LiteralStringRegex"/>
282 </rule>
283 <rule pattern="\(">
284 <token type="LiteralStringRegex"/>
285 <push/>
286 </rule>
287 <rule pattern="\)[imsx]*">
288 <token type="LiteralStringRegex"/>
289 <pop depth="1"/>
290 </rule>
291 <rule>
292 <include state="string-intp"/>
293 </rule>
294 <rule pattern="[\\#()]">
295 <token type="LiteralStringRegex"/>
296 </rule>
297 <rule pattern="[^\\#()]+">
298 <token type="LiteralStringRegex"/>
299 </rule>
300 </state>
301 <state name="in-attr">
302 <rule pattern="\[">
303 <token type="Operator"/>
304 <push/>
305 </rule>
306 <rule pattern="\]">
307 <token type="Operator"/>
308 <pop depth="1"/>
309 </rule>
310 <rule>
311 <include state="root"/>
312 </rule>
313 </state>
314 <state name="ab-intp-string">
315 <rule pattern="\\[<]">
316 <token type="LiteralStringOther"/>
317 </rule>
318 <rule pattern="<">
319 <token type="LiteralStringOther"/>
320 <push/>
321 </rule>
322 <rule pattern=">">
323 <token type="LiteralStringOther"/>
324 <pop depth="1"/>
325 </rule>
326 <rule>
327 <include state="string-intp-escaped"/>
328 </rule>
329 <rule pattern="[\\#<>]">
330 <token type="LiteralStringOther"/>
331 </rule>
332 <rule pattern="[^\\#<>]+">
333 <token type="LiteralStringOther"/>
334 </rule>
335 </state>
336 <state name="in-intp">
337 <rule pattern="\{">
338 <token type="LiteralStringInterpol"/>
339 <push/>
340 </rule>
341 <rule pattern="\}">
342 <token type="LiteralStringInterpol"/>
343 <pop depth="1"/>
344 </rule>
345 <rule>
346 <include state="root"/>
347 </rule>
348 </state>
349 <state name="end-part">
350 <rule pattern=".+">
351 <token type="CommentPreproc"/>
352 <pop depth="1"/>
353 </rule>
354 </state>
355 <state name="root">
356 <rule pattern="#.*?$">
357 <token type="CommentSingle"/>
358 </rule>
359 <rule pattern="(instance_sizeof|pointerof|protected|abstract|require|private|include|unless|typeof|sizeof|return|extend|ensure|rescue|ifdef|super|break|begin|until|while|elsif|yield|next|when|else|then|case|with|end|asm|if|do|as|of)\b">
360 <token type="Keyword"/>
361 </rule>
362 <rule pattern="(false|true|nil)\b">
363 <token type="KeywordConstant"/>
364 </rule>
365 <rule pattern="(module|lib)(\s+)([a-zA-Z_]\w*(?:::[a-zA-Z_]\w*)*)">
366 <bygroups>
367 <token type="Keyword"/>
368 <token type="Text"/>
369 <token type="NameNamespace"/>
370 </bygroups>
371 </rule>
372 <rule pattern="(def|fun|macro)(\s+)((?:[a-zA-Z_]\w*::)*)">
373 <bygroups>
374 <token type="Keyword"/>
375 <token type="Text"/>
376 <token type="NameNamespace"/>
377 </bygroups>
378 <push state="funcname"/>
379 </rule>
380 <rule pattern="def(?=[*%&^`~+-/\[<>=])">
381 <token type="Keyword"/>
382 <push state="funcname"/>
383 </rule>
384 <rule pattern="(class|struct|union|type|alias|enum)(\s+)((?:[a-zA-Z_]\w*::)*)">
385 <bygroups>
386 <token type="Keyword"/>
387 <token type="Text"/>
388 <token type="NameNamespace"/>
389 </bygroups>
390 <push state="classname"/>
391 </rule>
392 <rule pattern="(self|out|uninitialized)\b|(is_a|responds_to)\?">
393 <token type="KeywordPseudo"/>
394 </rule>
395 <rule pattern="(def_equals_and_hash|assert_responds_to|forward_missing_to|def_equals|property|def_hash|parallel|delegate|debugger|getter|record|setter|spawn|pp)\b">
396 <token type="NameBuiltinPseudo"/>
397 </rule>
398 <rule pattern="getter[!?]|property[!?]|__(DIR|FILE|LINE)__\b">
399 <token type="NameBuiltinPseudo"/>
400 </rule>
401 <rule pattern="(?<!\.)(get_stack_top|StaticArray|Concurrent|with_color|Reference|Scheduler|read_line|Exception|at_exit|Pointer|Channel|Float64|sprintf|Float32|Process|Object|Struct|caller|UInt16|UInt32|UInt64|system|future|Number|printf|String|Symbol|Int32|Range|Slice|Regex|Mutex|sleep|Array|Class|raise|Tuple|Deque|delay|Float|Int16|print|abort|Value|UInt8|Int64|puts|Proc|File|Void|exit|fork|Bool|Char|gets|lazy|loop|main|rand|Enum|Int8|Time|Hash|Set|Box|Nil|Dir|Int|p)\b">
402 <token type="NameBuiltin"/>
403 </rule>
404 <rule pattern="(?<!\w)(<<-?)(["`\']?)([a-zA-Z_]\w*)(\2)(.*?\n)">
405 <token type="LiteralStringHeredoc"/>
406 </rule>
407 <rule pattern="(<<-?)("|\')()(\2)(.*?\n)">
408 <token type="LiteralStringHeredoc"/>
409 </rule>
410 <rule pattern="__END__">
411 <token type="CommentPreproc"/>
412 <push state="end-part"/>
413 </rule>
414 <rule pattern="(?:^|(?<=[=<>~!:])|(?<=(?:\s|;)when\s)|(?<=(?:\s|;)or\s)|(?<=(?:\s|;)and\s)|(?<=\.index\s)|(?<=\.scan\s)|(?<=\.sub\s)|(?<=\.sub!\s)|(?<=\.gsub\s)|(?<=\.gsub!\s)|(?<=\.match\s)|(?<=(?:\s|;)if\s)|(?<=(?:\s|;)elsif\s)|(?<=^when\s)|(?<=^index\s)|(?<=^scan\s)|(?<=^sub\s)|(?<=^gsub\s)|(?<=^sub!\s)|(?<=^gsub!\s)|(?<=^match\s)|(?<=^if\s)|(?<=^elsif\s))(\s*)(/)">
415 <bygroups>
416 <token type="Text"/>
417 <token type="LiteralStringRegex"/>
418 </bygroups>
419 <push state="multiline-regex"/>
420 </rule>
421 <rule pattern="(?<=\(|,|\[)/">
422 <token type="LiteralStringRegex"/>
423 <push state="multiline-regex"/>
424 </rule>
425 <rule pattern="(\s+)(/)(?![\s=])">
426 <bygroups>
427 <token type="Text"/>
428 <token type="LiteralStringRegex"/>
429 </bygroups>
430 <push state="multiline-regex"/>
431 </rule>
432 <rule pattern="(0o[0-7]+(?:_[0-7]+)*(?:_?[iu][0-9]+)?)\b(\s*)([/?])?">
433 <bygroups>
434 <token type="LiteralNumberOct"/>
435 <token type="Text"/>
436 <token type="Operator"/>
437 </bygroups>
438 </rule>
439 <rule pattern="(0x[0-9A-Fa-f]+(?:_[0-9A-Fa-f]+)*(?:_?[iu][0-9]+)?)\b(\s*)([/?])?">
440 <bygroups>
441 <token type="LiteralNumberHex"/>
442 <token type="Text"/>
443 <token type="Operator"/>
444 </bygroups>
445 </rule>
446 <rule pattern="(0b[01]+(?:_[01]+)*(?:_?[iu][0-9]+)?)\b(\s*)([/?])?">
447 <bygroups>
448 <token type="LiteralNumberBin"/>
449 <token type="Text"/>
450 <token type="Operator"/>
451 </bygroups>
452 </rule>
453 <rule pattern="((?:0(?![0-9])|[1-9][\d_]*)(?:\.\d[\d_]*)(?:e[+-]?[0-9]+)?(?:_?f[0-9]+)?)(\s*)([/?])?">
454 <bygroups>
455 <token type="LiteralNumberFloat"/>
456 <token type="Text"/>
457 <token type="Operator"/>
458 </bygroups>
459 </rule>
460 <rule pattern="((?:0(?![0-9])|[1-9][\d_]*)(?:\.\d[\d_]*)?(?:e[+-]?[0-9]+)(?:_?f[0-9]+)?)(\s*)([/?])?">
461 <bygroups>
462 <token type="LiteralNumberFloat"/>
463 <token type="Text"/>
464 <token type="Operator"/>
465 </bygroups>
466 </rule>
467 <rule pattern="((?:0(?![0-9])|[1-9][\d_]*)(?:\.\d[\d_]*)?(?:e[+-]?[0-9]+)?(?:_?f[0-9]+))(\s*)([/?])?">
468 <bygroups>
469 <token type="LiteralNumberFloat"/>
470 <token type="Text"/>
471 <token type="Operator"/>
472 </bygroups>
473 </rule>
474 <rule pattern="(0\b|[1-9][\d]*(?:_\d+)*(?:_?[iu][0-9]+)?)\b(\s*)([/?])?">
475 <bygroups>
476 <token type="LiteralNumberInteger"/>
477 <token type="Text"/>
478 <token type="Operator"/>
479 </bygroups>
480 </rule>
481 <rule pattern="@@[a-zA-Z_]\w*">
482 <token type="NameVariableClass"/>
483 </rule>
484 <rule pattern="@[a-zA-Z_]\w*">
485 <token type="NameVariableInstance"/>
486 </rule>
487 <rule pattern="\$\w+">
488 <token type="NameVariableGlobal"/>
489 </rule>
490 <rule pattern="\$[!@&`\'+~=/\\,;.<>_*$?:"^-]">
491 <token type="NameVariableGlobal"/>
492 </rule>
493 <rule pattern="\$-[0adFiIlpvw]">
494 <token type="NameVariableGlobal"/>
495 </rule>
496 <rule pattern="::">
497 <token type="Operator"/>
498 </rule>
499 <rule>
500 <include state="strings"/>
501 </rule>
502 <rule pattern="\?(\\[MC]-)*(\\([\\befnrtv#"\']|x[a-fA-F0-9]{1,2}|[0-7]{1,3})|\S)(?!\w)">
503 <token type="LiteralStringChar"/>
504 </rule>
505 <rule pattern="[A-Z][A-Z_]+\b">
506 <token type="NameConstant"/>
507 </rule>
508 <rule pattern="\{%">
509 <token type="LiteralStringInterpol"/>
510 <push state="in-macro-control"/>
511 </rule>
512 <rule pattern="\{\{">
513 <token type="LiteralStringInterpol"/>
514 <push state="in-macro-expr"/>
515 </rule>
516 <rule pattern="(@\[)(\s*)([A-Z]\w*)">
517 <bygroups>
518 <token type="Operator"/>
519 <token type="Text"/>
520 <token type="NameDecorator"/>
521 </bygroups>
522 <push state="in-attr"/>
523 </rule>
524 <rule pattern="(\.|::)(\[\]\?|<=>|===|\[\]=|>>|&&|\*\*|\[\]|\|\||>=|=~|!~|<<|<=|!=|==|<|/|=|-|\+|>|\*|&|%|\^|!|\||~)">
525 <bygroups>
526 <token type="Operator"/>
527 <token type="NameOperator"/>
528 </bygroups>
529 </rule>
530 <rule pattern="(\.|::)([a-zA-Z_]\w*[!?]?|[*%&^`~+\-/\[<>=])">
531 <bygroups>
532 <token type="Operator"/>
533 <token type="Name"/>
534 </bygroups>
535 </rule>
536 <rule pattern="[a-zA-Z_]\w*(?:[!?](?!=))?">
537 <token type="Name"/>
538 </rule>
539 <rule pattern="(\[|\]\??|\*\*|<=>?|>=|<<?|>>?|=~|===|!~|&&?|\|\||\.{1,3})">
540 <token type="Operator"/>
541 </rule>
542 <rule pattern="[-+/*%=<>&!^|~]=?">
543 <token type="Operator"/>
544 </rule>
545 <rule pattern="[(){};,/?:\\]">
546 <token type="Punctuation"/>
547 </rule>
548 <rule pattern="\s+">
549 <token type="Text"/>
550 </rule>
551 </state>
552 <state name="multiline-regex">
553 <rule>
554 <include state="string-intp"/>
555 </rule>
556 <rule pattern="\\\\">
557 <token type="LiteralStringRegex"/>
558 </rule>
559 <rule pattern="\\/">
560 <token type="LiteralStringRegex"/>
561 </rule>
562 <rule pattern="[\\#]">
563 <token type="LiteralStringRegex"/>
564 </rule>
565 <rule pattern="[^\\/#]+">
566 <token type="LiteralStringRegex"/>
567 </rule>
568 <rule pattern="/[imsx]*">
569 <token type="LiteralStringRegex"/>
570 <pop depth="1"/>
571 </rule>
572 </state>
573 <state name="ab-string">
574 <rule pattern="\\[\\<>]">
575 <token type="LiteralStringOther"/>
576 </rule>
577 <rule pattern="<">
578 <token type="LiteralStringOther"/>
579 <push/>
580 </rule>
581 <rule pattern=">">
582 <token type="LiteralStringOther"/>
583 <pop depth="1"/>
584 </rule>
585 <rule pattern="[\\#<>]">
586 <token type="LiteralStringOther"/>
587 </rule>
588 <rule pattern="[^\\#<>]+">
589 <token type="LiteralStringOther"/>
590 </rule>
591 </state>
592 <state name="pa-string">
593 <rule pattern="\\[\\()]">
594 <token type="LiteralStringOther"/>
595 </rule>
596 <rule pattern="\(">
597 <token type="LiteralStringOther"/>
598 <push/>
599 </rule>
600 <rule pattern="\)">
601 <token type="LiteralStringOther"/>
602 <pop depth="1"/>
603 </rule>
604 <rule pattern="[\\#()]">
605 <token type="LiteralStringOther"/>
606 </rule>
607 <rule pattern="[^\\#()]+">
608 <token type="LiteralStringOther"/>
609 </rule>
610 </state>
611 <state name="strings">
612 <rule pattern="\:@{0,2}[a-zA-Z_]\w*[!?]?">
613 <token type="LiteralStringSymbol"/>
614 </rule>
615 <rule pattern="\:@{0,2}(\[\]\?|<=>|===|\[\]=|>>|&&|\*\*|\[\]|\|\||>=|=~|!~|<<|<=|!=|==|<|/|=|-|\+|>|\*|&|%|\^|!|\||~)">
616 <token type="LiteralStringSymbol"/>
617 </rule>
618 <rule pattern=":'(\\\\|\\'|[^'])*'">
619 <token type="LiteralStringSymbol"/>
620 </rule>
621 <rule pattern="'(\\\\|\\'|[^']|\\[^'\\]+)'">
622 <token type="LiteralStringChar"/>
623 </rule>
624 <rule pattern=":"">
625 <token type="LiteralStringSymbol"/>
626 <push state="simple-sym"/>
627 </rule>
628 <rule pattern="([a-zA-Z_]\w*)(:)(?!:)">
629 <bygroups>
630 <token type="LiteralStringSymbol"/>
631 <token type="Punctuation"/>
632 </bygroups>
633 </rule>
634 <rule pattern=""">
635 <token type="LiteralStringDouble"/>
636 <push state="simple-string"/>
637 </rule>
638 <rule pattern="(?<!\.)`">
639 <token type="LiteralStringBacktick"/>
640 <push state="simple-backtick"/>
641 </rule>
642 <rule pattern="%\{">
643 <token type="LiteralStringOther"/>
644 <push state="cb-intp-string"/>
645 </rule>
646 <rule pattern="%[wi]\{">
647 <token type="LiteralStringOther"/>
648 <push state="cb-string"/>
649 </rule>
650 <rule pattern="%r\{">
651 <token type="LiteralStringRegex"/>
652 <push state="cb-regex"/>
653 </rule>
654 <rule pattern="%\[">
655 <token type="LiteralStringOther"/>
656 <push state="sb-intp-string"/>
657 </rule>
658 <rule pattern="%[wi]\[">
659 <token type="LiteralStringOther"/>
660 <push state="sb-string"/>
661 </rule>
662 <rule pattern="%r\[">
663 <token type="LiteralStringRegex"/>
664 <push state="sb-regex"/>
665 </rule>
666 <rule pattern="%\(">
667 <token type="LiteralStringOther"/>
668 <push state="pa-intp-string"/>
669 </rule>
670 <rule pattern="%[wi]\(">
671 <token type="LiteralStringOther"/>
672 <push state="pa-string"/>
673 </rule>
674 <rule pattern="%r\(">
675 <token type="LiteralStringRegex"/>
676 <push state="pa-regex"/>
677 </rule>
678 <rule pattern="%<">
679 <token type="LiteralStringOther"/>
680 <push state="ab-intp-string"/>
681 </rule>
682 <rule pattern="%[wi]<">
683 <token type="LiteralStringOther"/>
684 <push state="ab-string"/>
685 </rule>
686 <rule pattern="%r<">
687 <token type="LiteralStringRegex"/>
688 <push state="ab-regex"/>
689 </rule>
690 <rule pattern="(%r([\W_]))((?:\\\2|(?!\2).)*)(\2[imsx]*)">
691 <token type="LiteralString"/>
692 </rule>
693 <rule pattern="(%[wi]([\W_]))((?:\\\2|(?!\2).)*)(\2)">
694 <token type="LiteralString"/>
695 </rule>
696 <rule pattern="(?<=[-+/*%=<>&!^|~,(])(\s*)(%([\t ])(?:(?:\\\3|(?!\3).)*)\3)">
697 <bygroups>
698 <token type="Text"/>
699 <token type="LiteralStringOther"/>
700 <token type="None"/>
701 </bygroups>
702 </rule>
703 <rule pattern="^(\s*)(%([\t ])(?:(?:\\\3|(?!\3).)*)\3)">
704 <bygroups>
705 <token type="Text"/>
706 <token type="LiteralStringOther"/>
707 <token type="None"/>
708 </bygroups>
709 </rule>
710 <rule pattern="(%([\[{(<]))((?:\\\2|(?!\2).)*)(\2)">
711 <token type="LiteralString"/>
712 </rule>
713 </state>
714 <state name="sb-string">
715 <rule pattern="\\[\\\[\]]">
716 <token type="LiteralStringOther"/>
717 </rule>
718 <rule pattern="\[">
719 <token type="LiteralStringOther"/>
720 <push/>
721 </rule>
722 <rule pattern="\]">
723 <token type="LiteralStringOther"/>
724 <pop depth="1"/>
725 </rule>
726 <rule pattern="[\\#\[\]]">
727 <token type="LiteralStringOther"/>
728 </rule>
729 <rule pattern="[^\\#\[\]]+">
730 <token type="LiteralStringOther"/>
731 </rule>
732 </state>
733 <state name="funcname">
734 <rule pattern="(?:([a-zA-Z_]\w*)(\.))?([a-zA-Z_]\w*[!?]?|\*\*?|[-+]@?|[/%&|^`~]|\[\]=?|<<|>>|<=?>|>=?|===?)">
735 <bygroups>
736 <token type="NameClass"/>
737 <token type="Operator"/>
738 <token type="NameFunction"/>
739 </bygroups>
740 <pop depth="1"/>
741 </rule>
742 <rule>
743 <pop depth="1"/>
744 </rule>
745 </state>
746 <state name="simple-sym">
747 <rule>
748 <include state="string-escaped"/>
749 </rule>
750 <rule pattern="[^\\"#]+">
751 <token type="LiteralStringSymbol"/>
752 </rule>
753 <rule pattern="[\\#]">
754 <token type="LiteralStringSymbol"/>
755 </rule>
756 <rule pattern=""">
757 <token type="LiteralStringSymbol"/>
758 <pop depth="1"/>
759 </rule>
760 </state>
761 </rules>
762</lexer>
View as plain text