e="Keyword"/>
          <token type="TextWhitespace"/>
        </bygroups>
        <push state="procname"/>
      </rule>
      <rule pattern="(operator)(\s+)">
        <bygroups>
          <token type="Keyword"/>
          <token type="TextWhitespace"/>
        </bygroups>
        <push state="procname"/>
      </rule>
      <rule pattern="(class|interface|module|record|union)(\s+)">
        <bygroups>
          <token type="Keyword"/>
          <token type="TextWhitespace"/>
        </bygroups>
        <push state="classname"/>
      </rule>
      <rule pattern="\d+i">
        <token type="LiteralNumber"/>
      </rule>
      <rule pattern="\d+\.\d*([Ee][-+]\d+)?i">
        <token type="LiteralNumber"/>
      </rule>
      <rule pattern="\.\d+([Ee][-+]\d+)?i">
        <token type="LiteralNumber"/>
      </rule>
      <rule pattern="\d+[Ee][-+]\d+i">
        <token type="LiteralNumber"/>
      </rule>
      <rule pattern="(\d*\.\d+)([eE][+-]?[0-9]+)?i?">
        <token type="LiteralNumberFloat"/>
      </rule>
      <rule pattern="\d+[eE][+-]?[0-9]+i?">
        <token type="LiteralNumberFloat"/>
      </rule>
      <rule pattern="0[bB][01]+">
        <token type="LiteralNumberBin"/>
      </rule>
      <rule pattern="0[xX][0-9a-fA-F]+">
        <token type="LiteralNumberHex"/>
      </rule>
      <rule pattern="0[oO][0-7]+">
        <token type="LiteralNumberOct"/>
      </rule>
      <rule pattern="[0-9]+">
        <token type="LiteralNumberInteger"/>
      </rule>
      <rule pattern="&#34;(\\\\|\\&#34;|[^&#34;])*&#34;">
        <token type="LiteralString"/>
      </rule>
      <rule pattern="&#39;(\\\\|\\&#39;|[^&#39;])*&#39;">
        <token type="LiteralString"/>
      </rule>
      <rule pattern="(=|\+=|-=|\*=|/=|\*\*=|%=|&amp;=|\|=|\^=|&amp;&amp;=|\|\|=|&lt;&lt;=|&gt;&gt;=|&lt;=&gt;|&lt;~&gt;|\.\.|by|#|\.\.\.|&amp;&amp;|\|\||!|&amp;|\||\^|~|&lt;&lt;|&gt;&gt;|==|!=|&lt;=|&gt;=|&lt;|&gt;|[+\-*/%]|\*\*)">
        <token type="Operator"/>
      </rule>
      <rule pattern="[:;,.?()\[\]{}]">
        <token type="Punctuation"/>
      </rule>
      <rule pattern="[a-zA-Z_][\w$]*">
        <token type="NameOther"/>
      </rule>
    </state>
    <state name="classname">
      <rule pattern="[a-zA-Z_][\w$]*">
        <token type="NameClass"/>
        <pop depth="1"/>
      </rule>
    </state>
  </rules>
</lexer>