rule pattern="(\+|-|\*|/|div|mod)">
        <token type="Operator"/>
      </rule>
      <rule pattern="\b(intersect|superset|symdiff|subset|union|diff|in)\b">
        <token type="Operator"/>
      </rule>
      <rule pattern="(\\|\.\.|\+\+)">
        <token type="Operator"/>
      </rule>
      <rule pattern="[|()\[\]{},:;]">
        <token type="Punctuation"/>
      </rule>
      <rule pattern="(true|false)\b">
        <token type="KeywordConstant"/>
      </rule>
      <rule pattern="([+-]?)\d+(\.(?!\.)\d*)?([eE][-+]?\d+)?">
        <token type="LiteralNumber"/>
      </rule>
      <rule pattern="::\s*([^\W\d]\w*)(\s*\([^\)]*\))?">
        <token type="NameDecorator"/>
      </rule>
      <rule pattern="\b([^\W\d]\w*)\b(\()">
        <bygroups>
          <token type="NameFunction"/>
          <token type="Punctuation"/>
        </bygroups>
      </rule>
      <rule pattern="[^\W\d]\w*">
        <token type="NameOther"/>
      </rule>
    </state>
  </rules>
</lexer>