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="[^\\&#34;#]+">
    
  26.         <token type="LiteralStringSymbol"/>
    
  27.       </rule>
    
  28.       <rule pattern="[\\#]">
    
  29.         <token type="LiteralStringSymbol"/>
    
  30.       </rule>
    
  31.       <rule pattern="&#34;">
    
  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}(===|\[\]=|&lt;=&gt;|\*\*|==|&gt;=|\+@|&lt;&gt;|&gt;&gt;|&lt;&lt;|-@|\[\]|~|`|\^|\||&amp;|&lt;|%|/|&gt;|\+|-|\*)">
    
  52.         <token type="LiteralStringSymbol"/>
    
  53.       </rule>
    
  54.       <rule pattern=":&#39;(\\\\|\\&#39;|[^&#39;])*&#39;">
    
  55.         <token type="LiteralStringSymbol"/>
    
  56.       </rule>
    
  57.       <rule pattern="&#39;(\\\\|\\&#39;|[^&#39;])*&#39;">
    
  58.         <token type="LiteralStringSingle"/>
    
  59.       </rule>
    
  60.       <rule pattern=":&#34;">
    
  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="&#34;">
    
  71.         <token type="LiteralStringDouble"/>
    
  72.         <push state="simple-string"/>
    
  73.       </rule>
    
  74.       <rule pattern="(?&lt;!\.)`">
    
  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]?&lt;">
    
  115.         <token type="LiteralStringOther"/>
    
  116.         <push state="ab-intp-string"/>
    
  117.       </rule>
    
  118.       <rule pattern="%[qsw]&lt;">
    
  119.         <token type="LiteralStringOther"/>
    
  120.         <push state="ab-string"/>
    
  121.       </rule>
    
  122.       <rule pattern="%r&lt;">
    
  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="(?&lt;=[-+/*%=&lt;&gt;&amp;!^|~,(])(\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="\\[\\&lt;&gt;]">
    
  170.         <token type="LiteralStringRegex"/>
    
  171.       </rule>
    
  172.       <rule pattern="&lt;">
    
  173.         <token type="LiteralStringRegex"/>
    
  174.         <push/>
    
  175.       </rule>
    
  176.       <rule pattern="&gt;[mixounse]*">
    
  177.         <token type="LiteralStringRegex"/>
    
  178.         <pop depth="1"/>
    
  179.       </rule>
    
  180.       <rule>
    
  181.         <include state="string-intp"/>
    
  182.       </rule>
    
  183.       <rule pattern="[\\#&lt;&gt;]">
    
  184.         <token type="LiteralStringRegex"/>
    
  185.       </rule>
    
  186.       <rule pattern="[^\\#&lt;&gt;]+">
    
  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="&lt;&lt;">
    
  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(?=[*%&amp;^`~+-/\[&lt;&gt;=])">
    
  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="(?&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">
    
  331.         <token type="NameBuiltin"/>
    
  332.       </rule>
    
  333.       <rule pattern="__(FILE|LINE)__\b">
    
  334.         <token type="NameBuiltinPseudo"/>
    
  335.       </rule>
    
  336.       <rule pattern="(?&lt;!\w)(&lt;&lt;-?)([&#34;`\&#39;]?)([a-zA-Z_]\w*)(\2)(.*?\n)">
    
  337.         <token type="LiteralString"/>
    
  338.       </rule>
    
  339.       <rule pattern="(&lt;&lt;-?)(&#34;|\&#39;)()(\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="(?:^|(?&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*)(/)">
    
  347.         <bygroups>
    
  348.           <token type="Text"/>
    
  349.           <token type="LiteralStringRegex"/>
    
  350.         </bygroups>
    
  351.         <push state="multiline-regex"/>
    
  352.       </rule>
    
  353.       <rule pattern="(?&lt;=\(|,|\[)/">
    
  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="\$[!@&amp;`\&#39;+~=/\\,;.&lt;&gt;_*$?:&#34;^-]">
    
  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#&#34;\&#39;]|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="(\.|::)(===|\[\]=|&lt;=&gt;|\*\*|==|&gt;=|\+@|&lt;&gt;|&gt;&gt;|&lt;&lt;|-@|\[\]|~|`|\^|\||&amp;|&lt;|%|/|&gt;|\+|-|\*)">
    
  420.         <bygroups>
    
  421.           <token type="Operator"/>
    
  422.           <token type="NameOperator"/>
    
  423.         </bygroups>
    
  424.       </rule>
    
  425.       <rule pattern="(\.|::)([a-zA-Z_]\w*[!?]?|[*%&amp;^`~+\-/\[&lt;&gt;=])">
    
  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="(\[|\]|\*\*|&lt;&lt;?|&gt;&gt;?|&gt;=|&lt;=|&lt;=&gt;|=~|={3}|!~|&amp;&amp;?|\|\||\.{1,3})">
    
  435.         <token type="Operator"/>
    
  436.       </rule>
    
  437.       <rule pattern="[-+/*%=&lt;&gt;&amp;!^|~]=?">
    
  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*[!?]?|\*\*?|[-+]@?|[/%&amp;|^`~]|\[\]=?|&lt;&lt;|&gt;&gt;|&lt;=?&gt;|&gt;=?|===?)">
    
  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#&#34;\&#39;]|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="[^\\&#34;#]+">
    
  587.         <token type="LiteralStringDouble"/>
    
  588.       </rule>
    
  589.       <rule pattern="[\\#]">
    
  590.         <token type="LiteralStringDouble"/>
    
  591.       </rule>
    
  592.       <rule pattern="&#34;">
    
  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="\\[\\&lt;&gt;]">
    
  621.         <token type="LiteralStringOther"/>
    
  622.       </rule>
    
  623.       <rule pattern="&lt;">
    
  624.         <token type="LiteralStringOther"/>
    
  625.         <push/>
    
  626.       </rule>
    
  627.       <rule pattern="&gt;">
    
  628.         <token type="LiteralStringOther"/>
    
  629.         <pop depth="1"/>
    
  630.       </rule>
    
  631.       <rule pattern="[\\#&lt;&gt;]">
    
  632.         <token type="LiteralStringOther"/>
    
  633.       </rule>
    
  634.       <rule pattern="[^\\#&lt;&gt;]+">
    
  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="\\[\\&lt;&gt;]">
    
  703.         <token type="LiteralStringOther"/>
    
  704.       </rule>
    
  705.       <rule pattern="&lt;">
    
  706.         <token type="LiteralStringOther"/>
    
  707.         <push/>
    
  708.       </rule>
    
  709.       <rule pattern="&gt;">
    
  710.         <token type="LiteralStringOther"/>
    
  711.         <pop depth="1"/>
    
  712.       </rule>
    
  713.       <rule>
    
  714.         <include state="string-intp-escaped"/>
    
  715.       </rule>
    
  716.       <rule pattern="[\\#&lt;&gt;]">
    
  717.         <token type="LiteralStringOther"/>
    
  718.       </rule>
    
  719.       <rule pattern="[^\\#&lt;&gt;]+">
    
  720.         <token type="LiteralStringOther"/>
    
  721.       </rule>
    
  722.     </state>
    
  723.   </rules>
    
  724. </lexer>