1. <lexer>
    
  2.   <config>
    
  3.     <name>Elixir</name>
    
  4.     <alias>elixir</alias>
    
  5.     <alias>ex</alias>
    
  6.     <alias>exs</alias>
    
  7.     <filename>*.ex</filename>
    
  8.     <filename>*.eex</filename>
    
  9.     <filename>*.exs</filename>
    
  10.     <mime_type>text/x-elixir</mime_type>
    
  11.   </config>
    
  12.   <rules>
    
  13.     <state name="cb-intp">
    
  14.       <rule pattern="[^#\}\\]+">
    
  15.         <token type="LiteralStringOther"/>
    
  16.       </rule>
    
  17.       <rule>
    
  18.         <include state="escapes"/>
    
  19.       </rule>
    
  20.       <rule pattern="\\.">
    
  21.         <token type="LiteralStringOther"/>
    
  22.       </rule>
    
  23.       <rule pattern="\}[a-zA-Z]*">
    
  24.         <token type="LiteralStringOther"/>
    
  25.         <pop depth="1"/>
    
  26.       </rule>
    
  27.       <rule>
    
  28.         <include state="interpol"/>
    
  29.       </rule>
    
  30.     </state>
    
  31.     <state name="triquot-end">
    
  32.       <rule pattern="[a-zA-Z]+">
    
  33.         <token type="LiteralStringOther"/>
    
  34.         <pop depth="1"/>
    
  35.       </rule>
    
  36.       <rule>
    
  37.         <pop depth="1"/>
    
  38.       </rule>
    
  39.     </state>
    
  40.     <state name="apos-no-intp">
    
  41.       <rule pattern="[^&#39;\\]+">
    
  42.         <token type="LiteralStringOther"/>
    
  43.       </rule>
    
  44.       <rule pattern="\\.">
    
  45.         <token type="LiteralStringOther"/>
    
  46.       </rule>
    
  47.       <rule pattern="&#39;[a-zA-Z]*">
    
  48.         <token type="LiteralStringOther"/>
    
  49.         <pop depth="1"/>
    
  50.       </rule>
    
  51.     </state>
    
  52.     <state name="slas-no-intp">
    
  53.       <rule pattern="[^/\\]+">
    
  54.         <token type="LiteralStringOther"/>
    
  55.       </rule>
    
  56.       <rule pattern="\\.">
    
  57.         <token type="LiteralStringOther"/>
    
  58.       </rule>
    
  59.       <rule pattern="/[a-zA-Z]*">
    
  60.         <token type="LiteralStringOther"/>
    
  61.         <pop depth="1"/>
    
  62.       </rule>
    
  63.     </state>
    
  64.     <state name="pipe-no-intp">
    
  65.       <rule pattern="[^\|\\]+">
    
  66.         <token type="LiteralStringOther"/>
    
  67.       </rule>
    
  68.       <rule pattern="\\.">
    
  69.         <token type="LiteralStringOther"/>
    
  70.       </rule>
    
  71.       <rule pattern="\|[a-zA-Z]*">
    
  72.         <token type="LiteralStringOther"/>
    
  73.         <pop depth="1"/>
    
  74.       </rule>
    
  75.     </state>
    
  76.     <state name="apos-intp">
    
  77.       <rule pattern="[^#&#39;\\]+">
    
  78.         <token type="LiteralStringOther"/>
    
  79.       </rule>
    
  80.       <rule>
    
  81.         <include state="escapes"/>
    
  82.       </rule>
    
  83.       <rule pattern="\\.">
    
  84.         <token type="LiteralStringOther"/>
    
  85.       </rule>
    
  86.       <rule pattern="&#39;[a-zA-Z]*">
    
  87.         <token type="LiteralStringOther"/>
    
  88.         <pop depth="1"/>
    
  89.       </rule>
    
  90.       <rule>
    
  91.         <include state="interpol"/>
    
  92.       </rule>
    
  93.     </state>
    
  94.     <state name="cb-no-intp">
    
  95.       <rule pattern="[^\}\\]+">
    
  96.         <token type="LiteralStringOther"/>
    
  97.       </rule>
    
  98.       <rule pattern="\\.">
    
  99.         <token type="LiteralStringOther"/>
    
  100.       </rule>
    
  101.       <rule pattern="\}[a-zA-Z]*">
    
  102.         <token type="LiteralStringOther"/>
    
  103.         <pop depth="1"/>
    
  104.       </rule>
    
  105.     </state>
    
  106.     <state name="heredoc_double">
    
  107.       <rule pattern="^\s*&#34;&#34;&#34;">
    
  108.         <token type="LiteralStringHeredoc"/>
    
  109.         <pop depth="1"/>
    
  110.       </rule>
    
  111.       <rule>
    
  112.         <include state="heredoc_interpol"/>
    
  113.       </rule>
    
  114.     </state>
    
  115.     <state name="triapos-end">
    
  116.       <rule pattern="[a-zA-Z]+">
    
  117.         <token type="LiteralStringOther"/>
    
  118.         <pop depth="1"/>
    
  119.       </rule>
    
  120.       <rule>
    
  121.         <pop depth="1"/>
    
  122.       </rule>
    
  123.     </state>
    
  124.     <state name="interpol_string">
    
  125.       <rule pattern="\}">
    
  126.         <token type="LiteralStringInterpol"/>
    
  127.         <pop depth="1"/>
    
  128.       </rule>
    
  129.       <rule>
    
  130.         <include state="root"/>
    
  131.       </rule>
    
  132.     </state>
    
  133.     <state name="triquot-intp">
    
  134.       <rule pattern="^\s*&#34;&#34;&#34;">
    
  135.         <token type="LiteralStringHeredoc"/>
    
  136.         <pop depth="1"/>
    
  137.       </rule>
    
  138.       <rule>
    
  139.         <include state="heredoc_interpol"/>
    
  140.       </rule>
    
  141.     </state>
    
  142.     <state name="interpol">
    
  143.       <rule pattern="#\{">
    
  144.         <token type="LiteralStringInterpol"/>
    
  145.         <push state="interpol_string"/>
    
  146.       </rule>
    
  147.     </state>
    
  148.     <state name="pa-no-intp">
    
  149.       <rule pattern="[^\)\\]+">
    
  150.         <token type="LiteralStringOther"/>
    
  151.       </rule>
    
  152.       <rule pattern="\\.">
    
  153.         <token type="LiteralStringOther"/>
    
  154.       </rule>
    
  155.       <rule pattern="\)[a-zA-Z]*">
    
  156.         <token type="LiteralStringOther"/>
    
  157.         <pop depth="1"/>
    
  158.       </rule>
    
  159.     </state>
    
  160.     <state name="map_key">
    
  161.       <rule>
    
  162.         <include state="root"/>
    
  163.       </rule>
    
  164.       <rule pattern=":">
    
  165.         <token type="Punctuation"/>
    
  166.         <push state="map_val"/>
    
  167.       </rule>
    
  168.       <rule pattern="=&gt;">
    
  169.         <token type="Punctuation"/>
    
  170.         <push state="map_val"/>
    
  171.       </rule>
    
  172.       <rule pattern="\}">
    
  173.         <token type="Punctuation"/>
    
  174.         <pop depth="1"/>
    
  175.       </rule>
    
  176.     </state>
    
  177.     <state name="pa-intp">
    
  178.       <rule pattern="[^#\)\\]+">
    
  179.         <token type="LiteralStringOther"/>
    
  180.       </rule>
    
  181.       <rule>
    
  182.         <include state="escapes"/>
    
  183.       </rule>
    
  184.       <rule pattern="\\.">
    
  185.         <token type="LiteralStringOther"/>
    
  186.       </rule>
    
  187.       <rule pattern="\)[a-zA-Z]*">
    
  188.         <token type="LiteralStringOther"/>
    
  189.         <pop depth="1"/>
    
  190.       </rule>
    
  191.       <rule>
    
  192.         <include state="interpol"/>
    
  193.       </rule>
    
  194.     </state>
    
  195.     <state name="tuple">
    
  196.       <rule>
    
  197.         <include state="root"/>
    
  198.       </rule>
    
  199.       <rule pattern="\}">
    
  200.         <token type="Punctuation"/>
    
  201.         <pop depth="1"/>
    
  202.       </rule>
    
  203.     </state>
    
  204.     <state name="root">
    
  205.       <rule pattern="\s+">
    
  206.         <token type="Text"/>
    
  207.       </rule>
    
  208.       <rule pattern="#.*$">
    
  209.         <token type="CommentSingle"/>
    
  210.       </rule>
    
  211.       <rule pattern="(\?)(\\x\{)([\da-fA-F]+)(\})">
    
  212.         <bygroups>
    
  213.           <token type="LiteralStringChar"/>
    
  214.           <token type="LiteralStringEscape"/>
    
  215.           <token type="LiteralNumberHex"/>
    
  216.           <token type="LiteralStringEscape"/>
    
  217.         </bygroups>
    
  218.       </rule>
    
  219.       <rule pattern="(\?)(\\x[\da-fA-F]{1,2})">
    
  220.         <bygroups>
    
  221.           <token type="LiteralStringChar"/>
    
  222.           <token type="LiteralStringEscape"/>
    
  223.         </bygroups>
    
  224.       </rule>
    
  225.       <rule pattern="(\?)(\\[abdefnrstv])">
    
  226.         <bygroups>
    
  227.           <token type="LiteralStringChar"/>
    
  228.           <token type="LiteralStringEscape"/>
    
  229.         </bygroups>
    
  230.       </rule>
    
  231.       <rule pattern="\?\\?.">
    
  232.         <token type="LiteralStringChar"/>
    
  233.       </rule>
    
  234.       <rule pattern=":::">
    
  235.         <token type="LiteralStringSymbol"/>
    
  236.       </rule>
    
  237.       <rule pattern="::">
    
  238.         <token type="Operator"/>
    
  239.       </rule>
    
  240.       <rule pattern=":(?:\.\.\.|&lt;&lt;&gt;&gt;|%\{\}|%|\{\})">
    
  241.         <token type="LiteralStringSymbol"/>
    
  242.       </rule>
    
  243.       <rule pattern=":(?:(?:\.\.\.|[a-z_]\w*[!?]?)|[A-Z]\w*(?:\.[A-Z]\w*)*|(?:\&lt;\&lt;\&lt;|\&gt;\&gt;\&gt;|\|\|\||\&amp;\&amp;\&amp;|\^\^\^|\~\~\~|\=\=\=|\!\=\=|\~\&gt;\&gt;|\&lt;\~\&gt;|\|\~\&gt;|\&lt;\|\&gt;|\=\=|\!\=|\&lt;\=|\&gt;\=|\&amp;\&amp;|\|\||\&lt;\&gt;|\+\+|\-\-|\|\&gt;|\=\~|\-\&gt;|\&lt;\-|\||\.|\=|\~\&gt;|\&lt;\~|\&lt;|\&gt;|\+|\-|\*|\/|\!|\^|\&amp;))">
    
  244.         <token type="LiteralStringSymbol"/>
    
  245.       </rule>
    
  246.       <rule pattern=":&#34;">
    
  247.         <token type="LiteralStringSymbol"/>
    
  248.         <push state="string_double_atom"/>
    
  249.       </rule>
    
  250.       <rule pattern=":&#39;">
    
  251.         <token type="LiteralStringSymbol"/>
    
  252.         <push state="string_single_atom"/>
    
  253.       </rule>
    
  254.       <rule pattern="((?:\.\.\.|&lt;&lt;&gt;&gt;|%\{\}|%|\{\})|(?:(?:\.\.\.|[a-z_]\w*[!?]?)|[A-Z]\w*(?:\.[A-Z]\w*)*|(?:\&lt;\&lt;\&lt;|\&gt;\&gt;\&gt;|\|\|\||\&amp;\&amp;\&amp;|\^\^\^|\~\~\~|\=\=\=|\!\=\=|\~\&gt;\&gt;|\&lt;\~\&gt;|\|\~\&gt;|\&lt;\|\&gt;|\=\=|\!\=|\&lt;\=|\&gt;\=|\&amp;\&amp;|\|\||\&lt;\&gt;|\+\+|\-\-|\|\&gt;|\=\~|\-\&gt;|\&lt;\-|\||\.|\=|\~\&gt;|\&lt;\~|\&lt;|\&gt;|\+|\-|\*|\/|\!|\^|\&amp;)))(:)(?=\s|\n)">
    
  255.         <bygroups>
    
  256.           <token type="LiteralStringSymbol"/>
    
  257.           <token type="Punctuation"/>
    
  258.         </bygroups>
    
  259.       </rule>
    
  260.       <rule pattern="(fn|do|end|after|else|rescue|catch)\b">
    
  261.         <token type="Keyword"/>
    
  262.       </rule>
    
  263.       <rule pattern="(not|and|or|when|in)\b">
    
  264.         <token type="OperatorWord"/>
    
  265.       </rule>
    
  266.       <rule pattern="(case|cond|for|if|unless|try|receive|raise|quote|unquote|unquote_splicing|throw|super|while)\b">
    
  267.         <token type="Keyword"/>
    
  268.       </rule>
    
  269.       <rule pattern="(def|defp|defmodule|defprotocol|defmacro|defmacrop|defdelegate|defexception|defstruct|defimpl|defcallback)\b">
    
  270.         <token type="KeywordDeclaration"/>
    
  271.       </rule>
    
  272.       <rule pattern="(import|require|use|alias)\b">
    
  273.         <token type="KeywordNamespace"/>
    
  274.       </rule>
    
  275.       <rule pattern="(nil|true|false)\b">
    
  276.         <token type="NameConstant"/>
    
  277.       </rule>
    
  278.       <rule pattern="(_|__MODULE__|__DIR__|__ENV__|__CALLER__)\b">
    
  279.         <token type="NamePseudo"/>
    
  280.       </rule>
    
  281.       <rule pattern="@(?:\.\.\.|[a-z_]\w*[!?]?)">
    
  282.         <token type="NameAttribute"/>
    
  283.       </rule>
    
  284.       <rule pattern="(?:\.\.\.|[a-z_]\w*[!?]?)">
    
  285.         <token type="Name"/>
    
  286.       </rule>
    
  287.       <rule pattern="(%?)([A-Z]\w*(?:\.[A-Z]\w*)*)">
    
  288.         <bygroups>
    
  289.           <token type="Punctuation"/>
    
  290.           <token type="NameClass"/>
    
  291.         </bygroups>
    
  292.       </rule>
    
  293.       <rule pattern="\&lt;\&lt;\&lt;|\&gt;\&gt;\&gt;|\|\|\||\&amp;\&amp;\&amp;|\^\^\^|\~\~\~|\=\=\=|\!\=\=|\~\&gt;\&gt;|\&lt;\~\&gt;|\|\~\&gt;|\&lt;\|\&gt;">
    
  294.         <token type="Operator"/>
    
  295.       </rule>
    
  296.       <rule pattern="\=\=|\!\=|\&lt;\=|\&gt;\=|\&amp;\&amp;|\|\||\&lt;\&gt;|\+\+|\-\-|\|\&gt;|\=\~|\-\&gt;|\&lt;\-|\||\.|\=|\~\&gt;|\&lt;\~">
    
  297.         <token type="Operator"/>
    
  298.       </rule>
    
  299.       <rule pattern="\\\\|\&lt;\&lt;|\&gt;\&gt;|\=\&gt;|\(|\)|\:|\;|\,|\[|\]">
    
  300.         <token type="Punctuation"/>
    
  301.       </rule>
    
  302.       <rule pattern="&amp;\d">
    
  303.         <token type="NameEntity"/>
    
  304.       </rule>
    
  305.       <rule pattern="\&lt;|\&gt;|\+|\-|\*|\/|\!|\^|\&amp;">
    
  306.         <token type="Operator"/>
    
  307.       </rule>
    
  308.       <rule pattern="0b[01](_?[01])*">
    
  309.         <token type="LiteralNumberBin"/>
    
  310.       </rule>
    
  311.       <rule pattern="0o[0-7](_?[0-7])*">
    
  312.         <token type="LiteralNumberOct"/>
    
  313.       </rule>
    
  314.       <rule pattern="0x[\da-fA-F](_?[\dA-Fa-f])*">
    
  315.         <token type="LiteralNumberHex"/>
    
  316.       </rule>
    
  317.       <rule pattern="\d(_?\d)*\.\d(_?\d)*([eE][-+]?\d(_?\d)*)?">
    
  318.         <token type="LiteralNumberFloat"/>
    
  319.       </rule>
    
  320.       <rule pattern="\d(_?\d)*">
    
  321.         <token type="LiteralNumberInteger"/>
    
  322.       </rule>
    
  323.       <rule pattern="&#34;&#34;&#34;\s*">
    
  324.         <token type="LiteralStringHeredoc"/>
    
  325.         <push state="heredoc_double"/>
    
  326.       </rule>
    
  327.       <rule pattern="&#39;&#39;&#39;\s*$">
    
  328.         <token type="LiteralStringHeredoc"/>
    
  329.         <push state="heredoc_single"/>
    
  330.       </rule>
    
  331.       <rule pattern="&#34;">
    
  332.         <token type="LiteralStringDouble"/>
    
  333.         <push state="string_double"/>
    
  334.       </rule>
    
  335.       <rule pattern="&#39;">
    
  336.         <token type="LiteralStringSingle"/>
    
  337.         <push state="string_single"/>
    
  338.       </rule>
    
  339.       <rule>
    
  340.         <include state="sigils"/>
    
  341.       </rule>
    
  342.       <rule pattern="%\{">
    
  343.         <token type="Punctuation"/>
    
  344.         <push state="map_key"/>
    
  345.       </rule>
    
  346.       <rule pattern="\{">
    
  347.         <token type="Punctuation"/>
    
  348.         <push state="tuple"/>
    
  349.       </rule>
    
  350.     </state>
    
  351.     <state name="sigils">
    
  352.       <rule pattern="(~[a-z])(&#34;&#34;&#34;)">
    
  353.         <bygroups>
    
  354.           <token type="LiteralStringOther"/>
    
  355.           <token type="LiteralStringHeredoc"/>
    
  356.         </bygroups>
    
  357.         <push state="triquot-end" state="triquot-intp"/>
    
  358.       </rule>
    
  359.       <rule pattern="(~[A-Z])(&#34;&#34;&#34;)">
    
  360.         <bygroups>
    
  361.           <token type="LiteralStringOther"/>
    
  362.           <token type="LiteralStringHeredoc"/>
    
  363.         </bygroups>
    
  364.         <push state="triquot-end" state="triquot-no-intp"/>
    
  365.       </rule>
    
  366.       <rule pattern="(~[a-z])(&#39;&#39;&#39;)">
    
  367.         <bygroups>
    
  368.           <token type="LiteralStringOther"/>
    
  369.           <token type="LiteralStringHeredoc"/>
    
  370.         </bygroups>
    
  371.         <push state="triapos-end" state="triapos-intp"/>
    
  372.       </rule>
    
  373.       <rule pattern="(~[A-Z])(&#39;&#39;&#39;)">
    
  374.         <bygroups>
    
  375.           <token type="LiteralStringOther"/>
    
  376.           <token type="LiteralStringHeredoc"/>
    
  377.         </bygroups>
    
  378.         <push state="triapos-end" state="triapos-no-intp"/>
    
  379.       </rule>
    
  380.       <rule pattern="~[a-z]\{">
    
  381.         <token type="LiteralStringOther"/>
    
  382.         <push state="cb-intp"/>
    
  383.       </rule>
    
  384.       <rule pattern="~[A-Z]\{">
    
  385.         <token type="LiteralStringOther"/>
    
  386.         <push state="cb-no-intp"/>
    
  387.       </rule>
    
  388.       <rule pattern="~[a-z]\[">
    
  389.         <token type="LiteralStringOther"/>
    
  390.         <push state="sb-intp"/>
    
  391.       </rule>
    
  392.       <rule pattern="~[A-Z]\[">
    
  393.         <token type="LiteralStringOther"/>
    
  394.         <push state="sb-no-intp"/>
    
  395.       </rule>
    
  396.       <rule pattern="~[a-z]\(">
    
  397.         <token type="LiteralStringOther"/>
    
  398.         <push state="pa-intp"/>
    
  399.       </rule>
    
  400.       <rule pattern="~[A-Z]\(">
    
  401.         <token type="LiteralStringOther"/>
    
  402.         <push state="pa-no-intp"/>
    
  403.       </rule>
    
  404.       <rule pattern="~[a-z]&lt;">
    
  405.         <token type="LiteralStringOther"/>
    
  406.         <push state="ab-intp"/>
    
  407.       </rule>
    
  408.       <rule pattern="~[A-Z]&lt;">
    
  409.         <token type="LiteralStringOther"/>
    
  410.         <push state="ab-no-intp"/>
    
  411.       </rule>
    
  412.       <rule pattern="~[a-z]/">
    
  413.         <token type="LiteralStringOther"/>
    
  414.         <push state="slas-intp"/>
    
  415.       </rule>
    
  416.       <rule pattern="~[A-Z]/">
    
  417.         <token type="LiteralStringOther"/>
    
  418.         <push state="slas-no-intp"/>
    
  419.       </rule>
    
  420.       <rule pattern="~[a-z]\|">
    
  421.         <token type="LiteralStringOther"/>
    
  422.         <push state="pipe-intp"/>
    
  423.       </rule>
    
  424.       <rule pattern="~[A-Z]\|">
    
  425.         <token type="LiteralStringOther"/>
    
  426.         <push state="pipe-no-intp"/>
    
  427.       </rule>
    
  428.       <rule pattern="~[a-z]&#34;">
    
  429.         <token type="LiteralStringOther"/>
    
  430.         <push state="quot-intp"/>
    
  431.       </rule>
    
  432.       <rule pattern="~[A-Z]&#34;">
    
  433.         <token type="LiteralStringOther"/>
    
  434.         <push state="quot-no-intp"/>
    
  435.       </rule>
    
  436.       <rule pattern="~[a-z]&#39;">
    
  437.         <token type="LiteralStringOther"/>
    
  438.         <push state="apos-intp"/>
    
  439.       </rule>
    
  440.       <rule pattern="~[A-Z]&#39;">
    
  441.         <token type="LiteralStringOther"/>
    
  442.         <push state="apos-no-intp"/>
    
  443.       </rule>
    
  444.     </state>
    
  445.     <state name="triapos-intp">
    
  446.       <rule pattern="^\s*&#39;&#39;&#39;">
    
  447.         <token type="LiteralStringHeredoc"/>
    
  448.         <pop depth="1"/>
    
  449.       </rule>
    
  450.       <rule>
    
  451.         <include state="heredoc_interpol"/>
    
  452.       </rule>
    
  453.     </state>
    
  454.     <state name="string_single_atom">
    
  455.       <rule pattern="[^#&#39;\\]+">
    
  456.         <token type="LiteralStringSymbol"/>
    
  457.       </rule>
    
  458.       <rule>
    
  459.         <include state="escapes"/>
    
  460.       </rule>
    
  461.       <rule pattern="\\.">
    
  462.         <token type="LiteralStringSymbol"/>
    
  463.       </rule>
    
  464.       <rule pattern="(&#39;)">
    
  465.         <bygroups>
    
  466.           <token type="LiteralStringSymbol"/>
    
  467.         </bygroups>
    
  468.         <pop depth="1"/>
    
  469.       </rule>
    
  470.       <rule>
    
  471.         <include state="interpol"/>
    
  472.       </rule>
    
  473.     </state>
    
  474.     <state name="quot-intp">
    
  475.       <rule pattern="[^#&#34;\\]+">
    
  476.         <token type="LiteralStringOther"/>
    
  477.       </rule>
    
  478.       <rule>
    
  479.         <include state="escapes"/>
    
  480.       </rule>
    
  481.       <rule pattern="\\.">
    
  482.         <token type="LiteralStringOther"/>
    
  483.       </rule>
    
  484.       <rule pattern="&#34;[a-zA-Z]*">
    
  485.         <token type="LiteralStringOther"/>
    
  486.         <pop depth="1"/>
    
  487.       </rule>
    
  488.       <rule>
    
  489.         <include state="interpol"/>
    
  490.       </rule>
    
  491.     </state>
    
  492.     <state name="sb-no-intp">
    
  493.       <rule pattern="[^\]\\]+">
    
  494.         <token type="LiteralStringOther"/>
    
  495.       </rule>
    
  496.       <rule pattern="\\.">
    
  497.         <token type="LiteralStringOther"/>
    
  498.       </rule>
    
  499.       <rule pattern="\][a-zA-Z]*">
    
  500.         <token type="LiteralStringOther"/>
    
  501.         <pop depth="1"/>
    
  502.       </rule>
    
  503.     </state>
    
  504.     <state name="slas-intp">
    
  505.       <rule pattern="[^#/\\]+">
    
  506.         <token type="LiteralStringOther"/>
    
  507.       </rule>
    
  508.       <rule>
    
  509.         <include state="escapes"/>
    
  510.       </rule>
    
  511.       <rule pattern="\\.">
    
  512.         <token type="LiteralStringOther"/>
    
  513.       </rule>
    
  514.       <rule pattern="/[a-zA-Z]*">
    
  515.         <token type="LiteralStringOther"/>
    
  516.         <pop depth="1"/>
    
  517.       </rule>
    
  518.       <rule>
    
  519.         <include state="interpol"/>
    
  520.       </rule>
    
  521.     </state>
    
  522.     <state name="sb-intp">
    
  523.       <rule pattern="[^#\]\\]+">
    
  524.         <token type="LiteralStringOther"/>
    
  525.       </rule>
    
  526.       <rule>
    
  527.         <include state="escapes"/>
    
  528.       </rule>
    
  529.       <rule pattern="\\.">
    
  530.         <token type="LiteralStringOther"/>
    
  531.       </rule>
    
  532.       <rule pattern="\][a-zA-Z]*">
    
  533.         <token type="LiteralStringOther"/>
    
  534.         <pop depth="1"/>
    
  535.       </rule>
    
  536.       <rule>
    
  537.         <include state="interpol"/>
    
  538.       </rule>
    
  539.     </state>
    
  540.     <state name="heredoc_no_interpol">
    
  541.       <rule pattern="[^\\\n]+">
    
  542.         <token type="LiteralStringHeredoc"/>
    
  543.       </rule>
    
  544.       <rule pattern="\\.">
    
  545.         <token type="LiteralStringHeredoc"/>
    
  546.       </rule>
    
  547.       <rule pattern="\n+">
    
  548.         <token type="LiteralStringHeredoc"/>
    
  549.       </rule>
    
  550.     </state>
    
  551.     <state name="pipe-intp">
    
  552.       <rule pattern="[^#\|\\]+">
    
  553.         <token type="LiteralStringOther"/>
    
  554.       </rule>
    
  555.       <rule>
    
  556.         <include state="escapes"/>
    
  557.       </rule>
    
  558.       <rule pattern="\\.">
    
  559.         <token type="LiteralStringOther"/>
    
  560.       </rule>
    
  561.       <rule pattern="\|[a-zA-Z]*">
    
  562.         <token type="LiteralStringOther"/>
    
  563.         <pop depth="1"/>
    
  564.       </rule>
    
  565.       <rule>
    
  566.         <include state="interpol"/>
    
  567.       </rule>
    
  568.     </state>
    
  569.     <state name="map_val">
    
  570.       <rule>
    
  571.         <include state="root"/>
    
  572.       </rule>
    
  573.       <rule pattern=",">
    
  574.         <token type="Punctuation"/>
    
  575.         <pop depth="1"/>
    
  576.       </rule>
    
  577.       <rule pattern="(?=\})">
    
  578.         <token type="Punctuation"/>
    
  579.         <pop depth="1"/>
    
  580.       </rule>
    
  581.     </state>
    
  582.     <state name="heredoc_single">
    
  583.       <rule pattern="^\s*&#39;&#39;&#39;">
    
  584.         <token type="LiteralStringHeredoc"/>
    
  585.         <pop depth="1"/>
    
  586.       </rule>
    
  587.       <rule>
    
  588.         <include state="heredoc_interpol"/>
    
  589.       </rule>
    
  590.     </state>
    
  591.     <state name="heredoc_interpol">
    
  592.       <rule pattern="[^#\\\n]+">
    
  593.         <token type="LiteralStringHeredoc"/>
    
  594.       </rule>
    
  595.       <rule>
    
  596.         <include state="escapes"/>
    
  597.       </rule>
    
  598.       <rule pattern="\\.">
    
  599.         <token type="LiteralStringHeredoc"/>
    
  600.       </rule>
    
  601.       <rule pattern="\n+">
    
  602.         <token type="LiteralStringHeredoc"/>
    
  603.       </rule>
    
  604.       <rule>
    
  605.         <include state="interpol"/>
    
  606.       </rule>
    
  607.     </state>
    
  608.     <state name="string_single">
    
  609.       <rule pattern="[^#&#39;\\]+">
    
  610.         <token type="LiteralStringSingle"/>
    
  611.       </rule>
    
  612.       <rule>
    
  613.         <include state="escapes"/>
    
  614.       </rule>
    
  615.       <rule pattern="\\.">
    
  616.         <token type="LiteralStringSingle"/>
    
  617.       </rule>
    
  618.       <rule pattern="(&#39;)">
    
  619.         <bygroups>
    
  620.           <token type="LiteralStringSingle"/>
    
  621.         </bygroups>
    
  622.         <pop depth="1"/>
    
  623.       </rule>
    
  624.       <rule>
    
  625.         <include state="interpol"/>
    
  626.       </rule>
    
  627.     </state>
    
  628.     <state name="string_double_atom">
    
  629.       <rule pattern="[^#&#34;\\]+">
    
  630.         <token type="LiteralStringSymbol"/>
    
  631.       </rule>
    
  632.       <rule>
    
  633.         <include state="escapes"/>
    
  634.       </rule>
    
  635.       <rule pattern="\\.">
    
  636.         <token type="LiteralStringSymbol"/>
    
  637.       </rule>
    
  638.       <rule pattern="(&#34;)">
    
  639.         <bygroups>
    
  640.           <token type="LiteralStringSymbol"/>
    
  641.         </bygroups>
    
  642.         <pop depth="1"/>
    
  643.       </rule>
    
  644.       <rule>
    
  645.         <include state="interpol"/>
    
  646.       </rule>
    
  647.     </state>
    
  648.     <state name="ab-no-intp">
    
  649.       <rule pattern="[^&gt;\\]+">
    
  650.         <token type="LiteralStringOther"/>
    
  651.       </rule>
    
  652.       <rule pattern="\\.">
    
  653.         <token type="LiteralStringOther"/>
    
  654.       </rule>
    
  655.       <rule pattern="&gt;[a-zA-Z]*">
    
  656.         <token type="LiteralStringOther"/>
    
  657.         <pop depth="1"/>
    
  658.       </rule>
    
  659.     </state>
    
  660.     <state name="ab-intp">
    
  661.       <rule pattern="[^#&gt;\\]+">
    
  662.         <token type="LiteralStringOther"/>
    
  663.       </rule>
    
  664.       <rule>
    
  665.         <include state="escapes"/>
    
  666.       </rule>
    
  667.       <rule pattern="\\.">
    
  668.         <token type="LiteralStringOther"/>
    
  669.       </rule>
    
  670.       <rule pattern="&gt;[a-zA-Z]*">
    
  671.         <token type="LiteralStringOther"/>
    
  672.         <pop depth="1"/>
    
  673.       </rule>
    
  674.       <rule>
    
  675.         <include state="interpol"/>
    
  676.       </rule>
    
  677.     </state>
    
  678.     <state name="quot-no-intp">
    
  679.       <rule pattern="[^&#34;\\]+">
    
  680.         <token type="LiteralStringOther"/>
    
  681.       </rule>
    
  682.       <rule pattern="\\.">
    
  683.         <token type="LiteralStringOther"/>
    
  684.       </rule>
    
  685.       <rule pattern="&#34;[a-zA-Z]*">
    
  686.         <token type="LiteralStringOther"/>
    
  687.         <pop depth="1"/>
    
  688.       </rule>
    
  689.     </state>
    
  690.     <state name="triapos-no-intp">
    
  691.       <rule pattern="^\s*&#39;&#39;&#39;">
    
  692.         <token type="LiteralStringHeredoc"/>
    
  693.         <pop depth="1"/>
    
  694.       </rule>
    
  695.       <rule>
    
  696.         <include state="heredoc_no_interpol"/>
    
  697.       </rule>
    
  698.     </state>
    
  699.     <state name="string_double">
    
  700.       <rule pattern="[^#&#34;\\]+">
    
  701.         <token type="LiteralStringDouble"/>
    
  702.       </rule>
    
  703.       <rule>
    
  704.         <include state="escapes"/>
    
  705.       </rule>
    
  706.       <rule pattern="\\.">
    
  707.         <token type="LiteralStringDouble"/>
    
  708.       </rule>
    
  709.       <rule pattern="(&#34;)">
    
  710.         <bygroups>
    
  711.           <token type="LiteralStringDouble"/>
    
  712.         </bygroups>
    
  713.         <pop depth="1"/>
    
  714.       </rule>
    
  715.       <rule>
    
  716.         <include state="interpol"/>
    
  717.       </rule>
    
  718.     </state>
    
  719.     <state name="escapes">
    
  720.       <rule pattern="(\\x\{)([\da-fA-F]+)(\})">
    
  721.         <bygroups>
    
  722.           <token type="LiteralStringEscape"/>
    
  723.           <token type="LiteralNumberHex"/>
    
  724.           <token type="LiteralStringEscape"/>
    
  725.         </bygroups>
    
  726.       </rule>
    
  727.       <rule pattern="(\\x[\da-fA-F]{1,2})">
    
  728.         <token type="LiteralStringEscape"/>
    
  729.       </rule>
    
  730.       <rule pattern="(\\[abdefnrstv])">
    
  731.         <token type="LiteralStringEscape"/>
    
  732.       </rule>
    
  733.     </state>
    
  734.     <state name="triquot-no-intp">
    
  735.       <rule pattern="^\s*&#34;&#34;&#34;">
    
  736.         <token type="LiteralStringHeredoc"/>
    
  737.         <pop depth="1"/>
    
  738.       </rule>
    
  739.       <rule>
    
  740.         <include state="heredoc_no_interpol"/>
    
  741.       </rule>
    
  742.     </state>
    
  743.   </rules>
    
  744. </lexer>