    <token type="Text"/>
        <push state="afterobject"/>
      </rule>
      <rule pattern="(\d+r)?-?\d+(\.\d+)?(e-?\d+)?">
        <token type="LiteralNumber"/>
        <push state="afterobject"/>
      </rule>
    </state>
    <state name="root">
      <rule pattern="(&lt;)(\w+:)(.*?)(&gt;)">
        <bygroups>
          <token type="Text"/>
          <token type="Keyword"/>
          <token type="Text"/>
          <token type="Text"/>
        </bygroups>
      </rule>
      <rule>
        <include state="squeak fileout"/>
      </rule>
      <rule>
        <include state="whitespaces"/>
      </rule>
      <rule>
        <include state="method definition"/>
      </rule>
      <rule pattern="(\|)([\w\s]*)(\|)">
        <bygroups>
          <token type="Operator"/>
          <token type="NameVariable"/>
          <token type="Operator"/>
        </bygroups>
      </rule>
      <rule>
        <include state="objects"/>
      </rule>
      <rule pattern="\^|:=|_">
        <token type="Operator"/>
      </rule>
      <rule pattern="[\]({}.;!]">
        <token type="Text"/>
      </rule>
    </state>
    <state name="_parenth_helper">
      <rule>
        <include state="whitespaces"/>
      </rule>
      <rule pattern="(\d+r)?-?\d+(\.\d+)?(e-?\d+)?">
        <token type="LiteralNumber"/>
      </rule>
      <rule pattern="[-+*/\\~&lt;&gt;=|&amp;#!?,@%\w:]+">
        <token type="LiteralStringSymbol"/>
      </rule>
      <rule pattern="&#39;(&#39;&#39;|[^&#39;])*&#39;">
        <token type="LiteralString"/>
      </rule>
      <rule pattern="\$.">
        <token type="LiteralStringChar"/>
      </rule>
      <rule pattern="#*\(">
        <token type="LiteralStringSymbol"/>
        <push state="inner_parenth"/>
      </rule>
    </state>
    <state name="parenth">
      <rule pattern="\)">
        <token type="LiteralStringSymbol"/>
        <push state="root" state="afterobject"/>
      </rule>
      <rule>
        <include state="_parenth_helper"/>
      </rule>
    </state>
    <state name="whitespaces">
      <rule pattern="\s+">
        <token type="Text"/>
      </rule>
      <rule pattern="&#34;(&#34;&#34;|[^&#34;])*&#34;">
        <token type="Comment"/>
      </rule>
    </state>
    <state name="squeak fileout">
      <rule pattern="^&#34;(&#34;&#34;|[^&#34;])*&#34;!">
        <token type="Keyword"/>
      </rule>
      <rule pattern="^&#39;(&#39;&#39;|[^&#39;])*&#39;!">
        <token type="Keyword"/>
      </rule>
      <rule pattern="^(!)(\w+)( commentStamp: )(.*?)( prior: .*?!\n)(.*?)(!)">
        <bygroups>
          <token type="Keyword"/>
          <token type="NameClass"/>
          <token type="Keyword"/>
          <token type="LiteralString"/>
          <token type="Keyword"/>
          <token type="Text"/>
          <token type="Keyword"/>
        </bygroups>
      </rule>
      <rule pattern="^(!)(\w+(?: class)?)( methodsFor: )(&#39;(?:&#39;&#39;|[^&#39;])*&#39;)(.*?!)">
        <bygroups>
          <token type="Keyword"/>
          <token type="NameClass"/>
          <token type="Keyword"/>
          <token type="LiteralString"/>
          <token type="Keyword"/>
        </bygroups>
      </rule>
      <rule pattern="^(\w+)( subclass: )(#\w+)(\s+instanceVariableNames: )(.*?)(\s+classVariableNames: )(.*?)(\s+poolDictionaries: )(.*?)(\s+category: )(.*?)(!)">
        <bygroups>
          <token type="NameClass"/>
          <token type="Keyword"/>
          <token type="LiteralStringSymbol"/>
          <token type="Keyword"/>
          <token type="LiteralString"/>
          <token type="Keyword"/>
          <token type="LiteralString"/>
          <token type="Keyword"/>
          <token type="LiteralString"/>
          <token type="Keyword"/>
          <token type="LiteralString"/>
          <token type="Keyword"/>
        </bygroups>
      </rule>
      <rule pattern="^(\w+(?: class)?)(\s+instanceVariableNames: )(.*?)(!)">
        <bygroups>
          <token type="NameClass"/>
          <token type="Keyword"/>
          <token type="LiteralString"/>
          <token type="Keyword"/>
        </bygroups>
      </rule>
      <rule pattern="(!\n)(\].*)(! !)$">
        <bygroups>
          <token type="Keyword"/>
          <token type="Text"/>
          <token type="Keyword"/>
        </bygroups>
      </rule>
      <rule pattern="! !$">
        <token type="Keyword"/>
      </rule>
    </state>
    <state name="method definition">
      <rule pattern="([a-zA-Z]+\w*:)(\s*)(\w+)">
        <bygroups>
          <token type="NameFunction"/>
          <token type="Text"/>
          <token type="NameVariable"/>
        </bygroups>
      </rule>
      <rule pattern="^(\b[a-zA-Z]+\w*\b)(\s*)$">
        <bygroups>
          <token type="NameFunction"/>
          <token type="Text"/>
        </bygroups>
      </rule>
      <rule pattern="^([-+*/\\~&lt;&gt;=|&amp;!?,@%]+)(\s*)(\w+)(\s*)$">
        <bygroups>
          <token type="NameFunction"/>
          <token type="Text"/>
          <token type="NameVariable"/>
          <token type="Text"/>
        </bygroups>
      </rule>
    </state>
    <state name="blockvariables">
      <rule>
        <include state="whitespaces"/>
      </rule>
      <rule pattern="(:)(\s*)(\w+)">
        <bygroups>
          <token type="Operator"/>
          <token type="Text"/>
          <token type="NameVariable"/>
        </bygroups>
      </rule>
      <rule pattern="\|">
        <token type="Operator"/>
        <pop depth="1"/>
      </rule>
      <rule>
        <pop depth="1"/>
      </rule>
    </state>
  </rules>
</lexer>