1<lexer>
  2  <config>
  3    <name>Gleam</name>
  4    <alias>gleam</alias>
  5    <filename>*.gleam</filename>
  6    <mime_type>text/x-gleam</mime_type>
  7  </config>
  8  <rules>
  9    <state name="root">
 10      <rule pattern="\s+">
 11        <token type="TextWhitespace"/>
 12      </rule>
 13      <rule pattern="///(.*?)\n">
 14        <token type="LiteralStringDoc"/>
 15      </rule>
 16      <rule pattern="//(.*?)\n">
 17        <token type="CommentSingle"/>
 18      </rule>
 19      <rule pattern="(as|assert|case|opaque|panic|pub|todo)\b">
 20        <token type="Keyword"/>
 21      </rule>
 22      <rule pattern="(import|use)\b">
 23        <token type="KeywordNamespace"/>
 24      </rule>
 25      <rule pattern="(auto|const|delegate|derive|echo|else|if|implement|macro|test)\b">
 26        <token type="KeywordReserved"/>
 27      </rule>
 28      <rule pattern="(let)\b">
 29        <token type="KeywordDeclaration"/>
 30      </rule>
 31      <rule pattern="(fn)\b">
 32        <token type="Keyword"/>
 33      </rule>
 34      <rule pattern="(type)\b">
 35        <token type="Keyword"/>
 36      </rule>
 37      <rule pattern="(True|False)\b">
 38        <token type="KeywordConstant"/>
 39      </rule>
 40      <rule pattern="0[bB][01](_?[01])*">
 41        <token type="LiteralNumberBin"/>
 42      </rule>
 43      <rule pattern="0[oO][0-7](_?[0-7])*">
 44        <token type="LiteralNumberOct"/>
 45      </rule>
 46      <rule pattern="0[xX][\da-fA-F](_?[\dA-Fa-f])*">
 47        <token type="LiteralNumberHex"/>
 48      </rule>
 49      <rule pattern="\d(_?\d)*\.\d(_?\d)*([eE][-+]?\d(_?\d)*)?">
 50        <token type="LiteralNumberFloat"/>
 51      </rule>
 52      <rule pattern="\d(_?\d)*">
 53        <token type="LiteralNumberInteger"/>
 54      </rule>
 55      <rule pattern="&#34;">
 56        <token type="LiteralString"/>
 57        <push state="string"/>
 58      </rule>
 59      <rule pattern="@([a-z_]\w*[!?]?)">
 60        <token type="NameAttribute"/>
 61      </rule>
 62      <rule pattern="[{}()\[\],]|[#(]|\.\.|&lt;&gt;|&lt;&lt;|&gt;&gt;">
 63        <token type="Punctuation"/>
 64      </rule>
 65      <rule pattern=":|-&gt;">
 66        <token type="Operator"/>
 67      </rule>
 68      <rule pattern="[+\-*/%!=&lt;&gt;&amp;|.]|&lt;-">
 69        <token type="Operator"/>
 70      </rule>
 71      <rule pattern="([a-z_][A-Za-z0-9_]*)(\()">
 72        <bygroups>
 73          <token type="NameFunction"/>
 74          <token type="Punctuation"/>
 75        </bygroups>
 76      </rule>
 77      <rule pattern="[A-Z][A-Za-z0-9_]*">
 78        <token type="NameClass"/>
 79      </rule>
 80      <rule pattern="([a-z_]\w*[!?]?)">
 81        <token type="Name"/>
 82      </rule>
 83    </state>
 84    <state name="string">
 85      <rule pattern="&#34;">
 86        <token type="LiteralString"/>
 87        <pop depth="1"/>
 88      </rule>
 89      <rule pattern="\\[&#34;\\fnrt]|\\u\{[\da-fA-F]{1,6}\}">
 90        <token type="LiteralStringEscape"/>
 91      </rule>
 92      <rule pattern="[^\\&#34;]+">
 93        <token type="LiteralString"/>
 94      </rule>
 95      <rule pattern="\\">
 96        <token type="LiteralString"/>
 97      </rule>
 98    </state>
 99  </rules>
100</lexer>