1<lexer>
2 <config>
3 <name>Ruby</name>
4 <alias>rb</alias>
5 <alias>ruby</alias>
6 <alias>duby</alias>
7 <filename>*.rb</filename>
8 <filename>*.rbw</filename>
9 <filename>Rakefile</filename>
10 <filename>*.rake</filename>
11 <filename>*.gemspec</filename>
12 <filename>*.rbx</filename>
13 <filename>*.duby</filename>
14 <filename>Gemfile</filename>
15 <filename>Vagrantfile</filename>
16 <mime_type>text/x-ruby</mime_type>
17 <mime_type>application/x-ruby</mime_type>
18 <dot_all>true</dot_all>
19 </config>
20 <rules>
21 <state name="simple-sym">
22 <rule>
23 <include state="string-intp-escaped"/>
24 </rule>
25 <rule pattern="[^\\"#]+">
26 <token type="LiteralStringSymbol"/>
27 </rule>
28 <rule pattern="[\\#]">
29 <token type="LiteralStringSymbol"/>
30 </rule>
31 <rule pattern=""">
32 <token type="LiteralStringSymbol"/>
33 <pop depth="1"/>
34 </rule>
35 </state>
36 <state name="interpolated-regex">
37 <rule>
38 <include state="string-intp"/>
39 </rule>
40 <rule pattern="[\\#]">
41 <token type="LiteralStringRegex"/>
42 </rule>
43 <rule pattern="[^\\#]+">
44 <token type="LiteralStringRegex"/>
45 </rule>
46 </state>
47 <state name="strings">
48 <rule pattern="\:@{0,2}[a-zA-Z_]\w*[!?]?">
49 <token type="LiteralStringSymbol"/>
50 </rule>
51 <rule pattern="\:@{0,2}(===|\[\]=|<=>|\*\*|==|>=|\+@|<>|>>|<<|-@|\[\]|~|`|\^|\||&|<|%|/|>|\+|-|\*)">
52 <token type="LiteralStringSymbol"/>
53 </rule>
54 <rule pattern=":'(\\\\|\\'|[^'])*'">
55 <token type="LiteralStringSymbol"/>
56 </rule>
57 <rule pattern="'(\\\\|\\'|[^'])*'">
58 <token type="LiteralStringSingle"/>
59 </rule>
60 <rule pattern=":"">
61 <token type="LiteralStringSymbol"/>
62 <push state="simple-sym"/>
63 </rule>
64 <rule pattern="([a-zA-Z_]\w*)(:)(?!:)">
65 <bygroups>
66 <token type="LiteralStringSymbol"/>
67 <token type="Punctuation"/>
68 </bygroups>
69 </rule>
70 <rule pattern=""">
71 <token type="LiteralStringDouble"/>
72 <push state="simple-string"/>
73 </rule>
74 <rule pattern="(?<!\.)`">
75 <token type="LiteralStringBacktick"/>
76 <push state="simple-backtick"/>
77 </rule>
78 <rule pattern="%[QWx]?\{">
79 <token type="LiteralStringOther"/>
80 <push state="cb-intp-string"/>
81 </rule>
82 <rule pattern="%[qsw]\{">
83 <token type="LiteralStringOther"/>
84 <push state="cb-string"/>
85 </rule>
86 <rule pattern="%r\{">
87 <token type="LiteralStringRegex"/>
88 <push state="cb-regex"/>
89 </rule>
90 <rule pattern="%[QWx]?\[">
91 <token type="LiteralStringOther"/>
92 <push state="sb-intp-string"/>
93 </rule>
94 <rule pattern="%[qsw]\[">
95 <token type="LiteralStringOther"/>
96 <push state="sb-string"/>
97 </rule>
98 <rule pattern="%r\[">
99 <token type="LiteralStringRegex"/>
100 <push state="sb-regex"/>
101 </rule>
102 <rule pattern="%[QWx]?\(">
103 <token type="LiteralStringOther"/>
104 <push state="pa-intp-string"/>
105 </rule>
106 <rule pattern="%[qsw]\(">
107 <token type="LiteralStringOther"/>
108 <push state="pa-string"/>
109 </rule>
110 <rule pattern="%r\(">
111 <token type="LiteralStringRegex"/>
112 <push state="pa-regex"/>
113 </rule>
114 <rule pattern="%[QWx]?<">
115 <token type="LiteralStringOther"/>
116 <push state="ab-intp-string"/>
117 </rule>
118 <rule pattern="%[qsw]<">
119 <token type="LiteralStringOther"/>
120 <push state="ab-string"/>
121 </rule>
122 <rule pattern="%r<">
123 <token type="LiteralStringRegex"/>
124 <push state="ab-regex"/>
125 </rule>
126 <rule pattern="(%r([\W_]))((?:\\\2|(?!\2).)*)(\2[mixounse]*)">
127 <token type="LiteralString"/>
128 </rule>
129 <rule pattern="%[qsw]([\W_])((?:\\\1|(?!\1).)*)\1">
130 <token type="LiteralStringOther"/>
131 </rule>
132 <rule pattern="(%[QWx]([\W_]))((?:\\\2|(?!\2).)*)(\2)">
133 <token type="LiteralString"/>
134 </rule>
135 <rule pattern="(?<=[-+/*%=<>&!^|~,(])(\s*)(%([\t ])(?:(?:\\\3|(?!\3).)*)\3)">
136 <bygroups>
137 <token type="Text"/>
138 <token type="LiteralStringOther"/>
139 <token type="None"/>
140 </bygroups>
141 </rule>
142 <rule pattern="^(\s*)(%([\t ])(?:(?:\\\3|(?!\3).)*)\3)">
143 <bygroups>
144 <token type="Text"/>
145 <token type="LiteralStringOther"/>
146 <token type="None"/>
147 </bygroups>
148 </rule>
149 <rule pattern="(%([^a-zA-Z0-9\s]))((?:\\\2|(?!\2).)*)(\2)">
150 <token type="LiteralString"/>
151 </rule>
152 </state>
153 <state name="simple-backtick">
154 <rule>
155 <include state="string-intp-escaped"/>
156 </rule>
157 <rule pattern="[^\\`#]+">
158 <token type="LiteralStringBacktick"/>
159 </rule>
160 <rule pattern="[\\#]">
161 <token type="LiteralStringBacktick"/>
162 </rule>
163 <rule pattern="`">
164 <token type="LiteralStringBacktick"/>
165 <pop depth="1"/>
166 </rule>
167 </state>
168 <state name="ab-regex">
169 <rule pattern="\\[\\<>]">
170 <token type="LiteralStringRegex"/>
171 </rule>
172 <rule pattern="<">
173 <token type="LiteralStringRegex"/>
174 <push/>
175 </rule>
176 <rule pattern=">[mixounse]*">
177 <token type="LiteralStringRegex"/>
178 <pop depth="1"/>
179 </rule>
180 <rule>
181 <include state="string-intp"/>
182 </rule>
183 <rule pattern="[\\#<>]">
184 <token type="LiteralStringRegex"/>
185 </rule>
186 <rule pattern="[^\\#<>]+">
187 <token type="LiteralStringRegex"/>
188 </rule>
189 </state>
190 <state name="cb-regex">
191 <rule pattern="\\[\\{}]">
192 <token type="LiteralStringRegex"/>
193 </rule>
194 <rule pattern="\{">
195 <token type="LiteralStringRegex"/>
196 <push/>
197 </rule>
198 <rule pattern="\}[mixounse]*">
199 <token type="LiteralStringRegex"/>
200 <pop depth="1"/>
201 </rule>
202 <rule>
203 <include state="string-intp"/>
204 </rule>
205 <rule pattern="[\\#{}]">
206 <token type="LiteralStringRegex"/>
207 </rule>
208 <rule pattern="[^\\#{}]+">
209 <token type="LiteralStringRegex"/>
210 </rule>
211 </state>
212 <state name="end-part">
213 <rule pattern=".+">
214 <token type="CommentPreproc"/>
215 <pop depth="1"/>
216 </rule>
217 </state>
218 <state name="string-intp">
219 <rule pattern="#\{">
220 <token type="LiteralStringInterpol"/>
221 <push state="in-intp"/>
222 </rule>
223 <rule pattern="#@@?[a-zA-Z_]\w*">
224 <token type="LiteralStringInterpol"/>
225 </rule>
226 <rule pattern="#\$[a-zA-Z_]\w*">
227 <token type="LiteralStringInterpol"/>
228 </rule>
229 </state>
230 <state name="interpolated-string">
231 <rule>
232 <include state="string-intp"/>
233 </rule>
234 <rule pattern="[\\#]">
235 <token type="LiteralStringOther"/>
236 </rule>
237 <rule pattern="[^\\#]+">
238 <token type="LiteralStringOther"/>
239 </rule>
240 </state>
241 <state name="classname">
242 <rule pattern="\(">
243 <token type="Punctuation"/>
244 <push state="defexpr"/>
245 </rule>
246 <rule pattern="<<">
247 <token type="Operator"/>
248 <pop depth="1"/>
249 </rule>
250 <rule pattern="[A-Z_]\w*">
251 <token type="NameClass"/>
252 <pop depth="1"/>
253 </rule>
254 <rule>
255 <pop depth="1"/>
256 </rule>
257 </state>
258 <state name="cb-intp-string">
259 <rule pattern="\\[\\{}]">
260 <token type="LiteralStringOther"/>
261 </rule>
262 <rule pattern="\{">
263 <token type="LiteralStringOther"/>
264 <push/>
265 </rule>
266 <rule pattern="\}">
267 <token type="LiteralStringOther"/>
268 <pop depth="1"/>
269 </rule>
270 <rule>
271 <include state="string-intp-escaped"/>
272 </rule>
273 <rule pattern="[\\#{}]">
274 <token type="LiteralStringOther"/>
275 </rule>
276 <rule pattern="[^\\#{}]+">
277 <token type="LiteralStringOther"/>
278 </rule>
279 </state>
280 <state name="root">
281 <rule pattern="\A#!.+?$">
282 <token type="CommentHashbang"/>
283 </rule>
284 <rule pattern="#.*?$">
285 <token type="CommentSingle"/>
286 </rule>
287 <rule pattern="=begin\s.*?\n=end.*?$">
288 <token type="CommentMultiline"/>
289 </rule>
290 <rule pattern="(defined\?|return|ensure|rescue|unless|undef|until|break|begin|elsif|super|alias|while|retry|BEGIN|raise|yield|redo|next|case|when|then|else|end|for|END|do|if|in)\b">
291 <token type="Keyword"/>
292 </rule>
293 <rule pattern="(module)(\s+)([a-zA-Z_]\w*(?:::[a-zA-Z_]\w*)*)">
294 <bygroups>
295 <token type="Keyword"/>
296 <token type="Text"/>
297 <token type="NameNamespace"/>
298 </bygroups>
299 </rule>
300 <rule pattern="(def)(\s+)">
301 <bygroups>
302 <token type="Keyword"/>
303 <token type="Text"/>
304 </bygroups>
305 <push state="funcname"/>
306 </rule>
307 <rule pattern="def(?=[*%&^`~+-/\[<>=])">
308 <token type="Keyword"/>
309 <push state="funcname"/>
310 </rule>
311 <rule pattern="(class)(\s+)">
312 <bygroups>
313 <token type="Keyword"/>
314 <token type="Text"/>
315 </bygroups>
316 <push state="classname"/>
317 </rule>
318 <rule pattern="(module_function|attr_accessor|attr_reader|attr_writer|initialize|protected|include|private|extend|public|raise|false|catch|throw|attr|loop|true|new|nil)\b">
319 <token type="KeywordPseudo"/>
320 </rule>
321 <rule pattern="(not|and|or)\b">
322 <token type="OperatorWord"/>
323 </rule>
324 <rule pattern="(protected_method_defined|private_method_defined|public_method_defined|method_defined|const_defined|block_given|instance_of|respond_to|iterator|autoload|kind_of|tainted|include|frozen|equal|is_a|nil|eql)\?">
325 <token type="NameBuiltin"/>
326 </rule>
327 <rule pattern="(chomp|chop|exit|gsub|sub)!">
328 <token type="NameBuiltin"/>
329 </rule>
330 <rule pattern="(?<!\.)(protected_instance_methods|private_instance_methods|public_instance_methods|instance_variable_set|instance_variable_get|private_class_method|public_class_method|instance_variables|protected_methods|singleton_methods|included_modules|instance_methods|global_variables|private_methods|local_variables|instance_method|class_variables|public_methods|const_defined\?|set_trace_func|method_missing|const_missing|instance_eval|module_eval|untrace_var|class_eval|trace_var|const_get|readlines|ancestors|constants|const_set|object_id|readline|autoload|__send__|untaint|methods|display|Integer|sprintf|inspect|require|syscall|at_exit|binding|extend|printf|lambda|__id__|String|callcc|method|select|format|system|freeze|caller|raise|Float|print|throw|taint|clone|srand|Array|abort|split|catch|chomp|sleep|open|puts|putc|fork|fail|trap|exit|scan|getc|self|send|eval|gets|exec|gsub|proc|load|loop|chop|warn|hash|test|name|to_a|rand|to_s|sub|dup|id|p)\b">
331 <token type="NameBuiltin"/>
332 </rule>
333 <rule pattern="__(FILE|LINE)__\b">
334 <token type="NameBuiltinPseudo"/>
335 </rule>
336 <rule pattern="(?<!\w)(<<-?)(["`\']?)([a-zA-Z_]\w*)(\2)(.*?\n)">
337 <token type="LiteralString"/>
338 </rule>
339 <rule pattern="(<<-?)("|\')()(\2)(.*?\n)">
340 <token type="LiteralString"/>
341 </rule>
342 <rule pattern="__END__">
343 <token type="CommentPreproc"/>
344 <push state="end-part"/>
345 </rule>
346 <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*)(/)">
347 <bygroups>
348 <token type="Text"/>
349 <token type="LiteralStringRegex"/>
350 </bygroups>
351 <push state="multiline-regex"/>
352 </rule>
353 <rule pattern="(?<=\(|,|\[)/">
354 <token type="LiteralStringRegex"/>
355 <push state="multiline-regex"/>
356 </rule>
357 <rule pattern="(\s+)(/)(?![\s=])">
358 <bygroups>
359 <token type="Text"/>
360 <token type="LiteralStringRegex"/>
361 </bygroups>
362 <push state="multiline-regex"/>
363 </rule>
364 <rule pattern="(0_?[0-7]+(?:_[0-7]+)*)(\s*)([/?])?">
365 <bygroups>
366 <token type="LiteralNumberOct"/>
367 <token type="Text"/>
368 <token type="Operator"/>
369 </bygroups>
370 </rule>
371 <rule pattern="(0x[0-9A-Fa-f]+(?:_[0-9A-Fa-f]+)*)(\s*)([/?])?">
372 <bygroups>
373 <token type="LiteralNumberHex"/>
374 <token type="Text"/>
375 <token type="Operator"/>
376 </bygroups>
377 </rule>
378 <rule pattern="(0b[01]+(?:_[01]+)*)(\s*)([/?])?">
379 <bygroups>
380 <token type="LiteralNumberBin"/>
381 <token type="Text"/>
382 <token type="Operator"/>
383 </bygroups>
384 </rule>
385 <rule pattern="([\d]+(?:[_e]\d+)*)(\s*)([/?])?">
386 <bygroups>
387 <token type="LiteralNumberInteger"/>
388 <token type="Text"/>
389 <token type="Operator"/>
390 </bygroups>
391 </rule>
392 <rule pattern="@@[a-zA-Z_]\w*">
393 <token type="NameVariableClass"/>
394 </rule>
395 <rule pattern="@[a-zA-Z_]\w*">
396 <token type="NameVariableInstance"/>
397 </rule>
398 <rule pattern="\$\w+">
399 <token type="NameVariableGlobal"/>
400 </rule>
401 <rule pattern="\$[!@&`\'+~=/\\,;.<>_*$?:"^-]">
402 <token type="NameVariableGlobal"/>
403 </rule>
404 <rule pattern="\$-[0adFiIlpvw]">
405 <token type="NameVariableGlobal"/>
406 </rule>
407 <rule pattern="::">
408 <token type="Operator"/>
409 </rule>
410 <rule>
411 <include state="strings"/>
412 </rule>
413 <rule pattern="\?(\\[MC]-)*(\\([\\abefnrstv#"\']|x[a-fA-F0-9]{1,2}|[0-7]{1,3})|\S)(?!\w)">
414 <token type="LiteralStringChar"/>
415 </rule>
416 <rule pattern="[A-Z]\w+">
417 <token type="NameConstant"/>
418 </rule>
419 <rule pattern="(\.|::)(===|\[\]=|<=>|\*\*|==|>=|\+@|<>|>>|<<|-@|\[\]|~|`|\^|\||&|<|%|/|>|\+|-|\*)">
420 <bygroups>
421 <token type="Operator"/>
422 <token type="NameOperator"/>
423 </bygroups>
424 </rule>
425 <rule pattern="(\.|::)([a-zA-Z_]\w*[!?]?|[*%&^`~+\-/\[<>=])">
426 <bygroups>
427 <token type="Operator"/>
428 <token type="Name"/>
429 </bygroups>
430 </rule>
431 <rule pattern="[a-zA-Z_]\w*[!?]?">
432 <token type="Name"/>
433 </rule>
434 <rule pattern="(\[|\]|\*\*|<<?|>>?|>=|<=|<=>|=~|={3}|!~|&&?|\|\||\.{1,3})">
435 <token type="Operator"/>
436 </rule>
437 <rule pattern="[-+/*%=<>&!^|~]=?">
438 <token type="Operator"/>
439 </rule>
440 <rule pattern="[(){};,/?:\\]">
441 <token type="Punctuation"/>
442 </rule>
443 <rule pattern="\s+">
444 <token type="Text"/>
445 </rule>
446 </state>
447 <state name="defexpr">
448 <rule pattern="(\))(\.|::)?">
449 <bygroups>
450 <token type="Punctuation"/>
451 <token type="Operator"/>
452 </bygroups>
453 <pop depth="1"/>
454 </rule>
455 <rule pattern="\(">
456 <token type="Operator"/>
457 <push/>
458 </rule>
459 <rule>
460 <include state="root"/>
461 </rule>
462 </state>
463 <state name="in-intp">
464 <rule pattern="\{">
465 <token type="LiteralStringInterpol"/>
466 <push/>
467 </rule>
468 <rule pattern="\}">
469 <token type="LiteralStringInterpol"/>
470 <pop depth="1"/>
471 </rule>
472 <rule>
473 <include state="root"/>
474 </rule>
475 </state>
476 <state name="multiline-regex">
477 <rule>
478 <include state="string-intp"/>
479 </rule>
480 <rule pattern="\\\\">
481 <token type="LiteralStringRegex"/>
482 </rule>
483 <rule pattern="\\/">
484 <token type="LiteralStringRegex"/>
485 </rule>
486 <rule pattern="[\\#]">
487 <token type="LiteralStringRegex"/>
488 </rule>
489 <rule pattern="[^\\/#]+">
490 <token type="LiteralStringRegex"/>
491 </rule>
492 <rule pattern="/[mixounse]*">
493 <token type="LiteralStringRegex"/>
494 <pop depth="1"/>
495 </rule>
496 </state>
497 <state name="cb-string">
498 <rule pattern="\\[\\{}]">
499 <token type="LiteralStringOther"/>
500 </rule>
501 <rule pattern="\{">
502 <token type="LiteralStringOther"/>
503 <push/>
504 </rule>
505 <rule pattern="\}">
506 <token type="LiteralStringOther"/>
507 <pop depth="1"/>
508 </rule>
509 <rule pattern="[\\#{}]">
510 <token type="LiteralStringOther"/>
511 </rule>
512 <rule pattern="[^\\#{}]+">
513 <token type="LiteralStringOther"/>
514 </rule>
515 </state>
516 <state name="funcname">
517 <rule pattern="\(">
518 <token type="Punctuation"/>
519 <push state="defexpr"/>
520 </rule>
521 <rule pattern="(?:([a-zA-Z_]\w*)(\.))?([a-zA-Z_]\w*[!?]?|\*\*?|[-+]@?|[/%&|^`~]|\[\]=?|<<|>>|<=?>|>=?|===?)">
522 <bygroups>
523 <token type="NameClass"/>
524 <token type="Operator"/>
525 <token type="NameFunction"/>
526 </bygroups>
527 <pop depth="1"/>
528 </rule>
529 <rule>
530 <pop depth="1"/>
531 </rule>
532 </state>
533 <state name="sb-intp-string">
534 <rule pattern="\\[\\\[\]]">
535 <token type="LiteralStringOther"/>
536 </rule>
537 <rule pattern="\[">
538 <token type="LiteralStringOther"/>
539 <push/>
540 </rule>
541 <rule pattern="\]">
542 <token type="LiteralStringOther"/>
543 <pop depth="1"/>
544 </rule>
545 <rule>
546 <include state="string-intp-escaped"/>
547 </rule>
548 <rule pattern="[\\#\[\]]">
549 <token type="LiteralStringOther"/>
550 </rule>
551 <rule pattern="[^\\#\[\]]+">
552 <token type="LiteralStringOther"/>
553 </rule>
554 </state>
555 <state name="pa-string">
556 <rule pattern="\\[\\()]">
557 <token type="LiteralStringOther"/>
558 </rule>
559 <rule pattern="\(">
560 <token type="LiteralStringOther"/>
561 <push/>
562 </rule>
563 <rule pattern="\)">
564 <token type="LiteralStringOther"/>
565 <pop depth="1"/>
566 </rule>
567 <rule pattern="[\\#()]">
568 <token type="LiteralStringOther"/>
569 </rule>
570 <rule pattern="[^\\#()]+">
571 <token type="LiteralStringOther"/>
572 </rule>
573 </state>
574 <state name="string-intp-escaped">
575 <rule>
576 <include state="string-intp"/>
577 </rule>
578 <rule pattern="\\([\\abefnrstv#"\']|x[a-fA-F0-9]{1,2}|[0-7]{1,3})">
579 <token type="LiteralStringEscape"/>
580 </rule>
581 </state>
582 <state name="simple-string">
583 <rule>
584 <include state="string-intp-escaped"/>
585 </rule>
586 <rule pattern="[^\\"#]+">
587 <token type="LiteralStringDouble"/>
588 </rule>
589 <rule pattern="[\\#]">
590 <token type="LiteralStringDouble"/>
591 </rule>
592 <rule pattern=""">
593 <token type="LiteralStringDouble"/>
594 <pop depth="1"/>
595 </rule>
596 </state>
597 <state name="pa-intp-string">
598 <rule pattern="\\[\\()]">
599 <token type="LiteralStringOther"/>
600 </rule>
601 <rule pattern="\(">
602 <token type="LiteralStringOther"/>
603 <push/>
604 </rule>
605 <rule pattern="\)">
606 <token type="LiteralStringOther"/>
607 <pop depth="1"/>
608 </rule>
609 <rule>
610 <include state="string-intp-escaped"/>
611 </rule>
612 <rule pattern="[\\#()]">
613 <token type="LiteralStringOther"/>
614 </rule>
615 <rule pattern="[^\\#()]+">
616 <token type="LiteralStringOther"/>
617 </rule>
618 </state>
619 <state name="ab-string">
620 <rule pattern="\\[\\<>]">
621 <token type="LiteralStringOther"/>
622 </rule>
623 <rule pattern="<">
624 <token type="LiteralStringOther"/>
625 <push/>
626 </rule>
627 <rule pattern=">">
628 <token type="LiteralStringOther"/>
629 <pop depth="1"/>
630 </rule>
631 <rule pattern="[\\#<>]">
632 <token type="LiteralStringOther"/>
633 </rule>
634 <rule pattern="[^\\#<>]+">
635 <token type="LiteralStringOther"/>
636 </rule>
637 </state>
638 <state name="sb-regex">
639 <rule pattern="\\[\\\[\]]">
640 <token type="LiteralStringRegex"/>
641 </rule>
642 <rule pattern="\[">
643 <token type="LiteralStringRegex"/>
644 <push/>
645 </rule>
646 <rule pattern="\][mixounse]*">
647 <token type="LiteralStringRegex"/>
648 <pop depth="1"/>
649 </rule>
650 <rule>
651 <include state="string-intp"/>
652 </rule>
653 <rule pattern="[\\#\[\]]">
654 <token type="LiteralStringRegex"/>
655 </rule>
656 <rule pattern="[^\\#\[\]]+">
657 <token type="LiteralStringRegex"/>
658 </rule>
659 </state>
660 <state name="pa-regex">
661 <rule pattern="\\[\\()]">
662 <token type="LiteralStringRegex"/>
663 </rule>
664 <rule pattern="\(">
665 <token type="LiteralStringRegex"/>
666 <push/>
667 </rule>
668 <rule pattern="\)[mixounse]*">
669 <token type="LiteralStringRegex"/>
670 <pop depth="1"/>
671 </rule>
672 <rule>
673 <include state="string-intp"/>
674 </rule>
675 <rule pattern="[\\#()]">
676 <token type="LiteralStringRegex"/>
677 </rule>
678 <rule pattern="[^\\#()]+">
679 <token type="LiteralStringRegex"/>
680 </rule>
681 </state>
682 <state name="sb-string">
683 <rule pattern="\\[\\\[\]]">
684 <token type="LiteralStringOther"/>
685 </rule>
686 <rule pattern="\[">
687 <token type="LiteralStringOther"/>
688 <push/>
689 </rule>
690 <rule pattern="\]">
691 <token type="LiteralStringOther"/>
692 <pop depth="1"/>
693 </rule>
694 <rule pattern="[\\#\[\]]">
695 <token type="LiteralStringOther"/>
696 </rule>
697 <rule pattern="[^\\#\[\]]+">
698 <token type="LiteralStringOther"/>
699 </rule>
700 </state>
701 <state name="ab-intp-string">
702 <rule pattern="\\[\\<>]">
703 <token type="LiteralStringOther"/>
704 </rule>
705 <rule pattern="<">
706 <token type="LiteralStringOther"/>
707 <push/>
708 </rule>
709 <rule pattern=">">
710 <token type="LiteralStringOther"/>
711 <pop depth="1"/>
712 </rule>
713 <rule>
714 <include state="string-intp-escaped"/>
715 </rule>
716 <rule pattern="[\\#<>]">
717 <token type="LiteralStringOther"/>
718 </rule>
719 <rule pattern="[^\\#<>]+">
720 <token type="LiteralStringOther"/>
721 </rule>
722 </state>
723 </rules>
724</lexer>