gleam.xml

  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        <push state="typename"/>
 37      </rule>
 38      <rule pattern="(True|False)\b">
 39        <token type="KeywordConstant"/>
 40      </rule>
 41      <rule pattern="0[bB][01](_?[01])*">
 42        <token type="LiteralNumberBin"/>
 43      </rule>
 44      <rule pattern="0[oO][0-7](_?[0-7])*">
 45        <token type="LiteralNumberOct"/>
 46      </rule>
 47      <rule pattern="0[xX][\da-fA-F](_?[\dA-Fa-f])*">
 48        <token type="LiteralNumberHex"/>
 49      </rule>
 50      <rule pattern="\d(_?\d)*\.\d(_?\d)*([eE][-+]?\d(_?\d)*)?">
 51        <token type="LiteralNumberFloat"/>
 52      </rule>
 53      <rule pattern="\d(_?\d)*">
 54        <token type="LiteralNumberInteger"/>
 55      </rule>
 56      <rule pattern="&#34;">
 57        <token type="LiteralString"/>
 58        <push state="string"/>
 59      </rule>
 60      <rule pattern="@([a-z_]\w*[!?]?)">
 61        <token type="NameAttribute"/>
 62      </rule>
 63      <rule pattern="[{}()\[\],]|[#(]|\.\.|&lt;&gt;|&lt;&lt;|&gt;&gt;">
 64        <token type="Punctuation"/>
 65      </rule>
 66      <rule pattern="[+\-*/%!=&lt;&gt;&amp;|.]|&lt;-">
 67        <token type="Operator"/>
 68      </rule>
 69      <rule pattern=":|-&gt;">
 70        <token type="Operator"/>
 71        <push state="typename"/>
 72      </rule>
 73      <rule pattern="([a-z_][A-Za-z0-9_]*)(\()">
 74        <bygroups>
 75          <token type="NameFunction"/>
 76          <token type="Punctuation"/>
 77        </bygroups>
 78      </rule>
 79      <rule pattern="([A-Z][A-Za-z0-9_]*)(\()">
 80        <bygroups>
 81          <token type="NameClass"/>
 82          <token type="Punctuation"/>
 83        </bygroups>
 84      </rule>
 85      <rule pattern="([a-z_]\w*[!?]?)">
 86        <token type="Name"/>
 87      </rule>
 88    </state>
 89    <state name="typename">
 90      <rule pattern="\s+">
 91        <token type="TextWhitespace"/>
 92      </rule>
 93      <rule pattern="[A-Z][A-Za-z0-9_]*">
 94        <token type="NameClass"/>
 95        <pop depth="1"/>
 96      </rule>
 97      <rule>
 98        <pop depth="1"/>
 99      </rule>
100    </state>
101    <state name="string">
102      <rule pattern="&#34;">
103        <token type="LiteralString"/>
104        <pop depth="1"/>
105      </rule>
106      <rule pattern="\\[&#34;\\fnrt]|\\u\{[\da-fA-F]{1,6}\}">
107        <token type="LiteralStringEscape"/>
108      </rule>
109      <rule pattern="[^\\&#34;]+">
110        <token type="LiteralString"/>
111      </rule>
112      <rule pattern="\\">
113        <token type="LiteralString"/>
114      </rule>
115    </state>
116  </rules>
117</lexer>