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