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=""">
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="[{}()\[\],]|[#(]|\.\.|<>|<<|>>">
63 <token type="Punctuation"/>
64 </rule>
65 <rule pattern=":|->">
66 <token type="Operator"/>
67 </rule>
68 <rule pattern="[+\-*/%!=<>&|.]|<-">
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=""">
86 <token type="LiteralString"/>
87 <pop depth="1"/>
88 </rule>
89 <rule pattern="\\["\\fnrt]|\\u\{[\da-fA-F]{1,6}\}">
90 <token type="LiteralStringEscape"/>
91 </rule>
92 <rule pattern="[^\\"]+">
93 <token type="LiteralString"/>
94 </rule>
95 <rule pattern="\\">
96 <token type="LiteralString"/>
97 </rule>
98 </state>
99 </rules>
100</lexer>