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>