1<lexer>
2 <config>
3 <name>CUE</name>
4 <alias>cue</alias>
5 <filename>*.cue</filename>
6 <mime_type>text/x-cue</mime_type>
7 <dot_all>true</dot_all>
8 <ensure_nl>true</ensure_nl>
9 </config>
10 <rules>
11 <state name="root">
12 <rule pattern="[^\S\n]+">
13 <token type="Text"/>
14 </rule>
15 <rule pattern="\\\n">
16 <token type="Text"/>
17 </rule>
18 <rule pattern="//[^\n\r]+">
19 <token type="CommentSingle"/>
20 </rule>
21 <rule pattern="\n">
22 <token type="Text"/>
23 </rule>
24 <rule pattern="(\+|&&|==|<|=|-|\|\||!=|>|:|\*|&|=~|<=|\?|\[|\]|,|/|\||!~|>=|!|_\|_|\.\.\.)">
25 <token type="Operator"/>
26 </rule>
27 <rule pattern="#*"+">
28 <token type="LiteralString"/>
29 <push state="string"/>
30 </rule>
31 <rule pattern="'(\\\\|\\'|[^'\n])*['\n]">
32 <token type="LiteralString"/>
33 </rule>
34 <rule pattern="0[boxX][0-9a-fA-F][_0-9a-fA-F]*|(\.\d+|\d[_\d]*(\.\d*)?)([eE][+-]?\d+)?[KMGTP]?i?">
35 <token type="LiteralNumber"/>
36 </rule>
37 <rule pattern="[~!%^&*()+=|\[\]:;,.<>/?-]">
38 <token type="Punctuation"/>
39 </rule>
40 <rule pattern="[{}]">
41 <token type="Punctuation"/>
42 </rule>
43 <rule pattern="(import|for|if|in|let|package)\b">
44 <token type="Keyword"/>
45 </rule>
46 <rule pattern="(bool|float|int|string|uint|ulong|ushort)\b\??">
47 <token type="KeywordType"/>
48 </rule>
49 <rule pattern="(true|false|null|_)\b">
50 <token type="KeywordConstant"/>
51 </rule>
52 <rule pattern="[@#]?[_a-zA-Z$]\w*">
53 <token type="Name"/>
54 </rule>
55 </state>
56 <state name="string">
57 <rule pattern="\\#*\(">
58 <token type="LiteralStringInterpol"/>
59 <push state="string-intp"/>
60 </rule>
61 <rule pattern=""+#*">
62 <token type="LiteralString"/>
63 <pop depth="1"/>
64 </rule>
65 <rule pattern="\\['"\\nrt]|\\x[0-9a-fA-F]{2}|\\[0-7]{1,3}|\\u[0-9a-fA-F]{4}|\\U[0-9a-fA-F]{8}">
66 <token type="LiteralStringEscape"/>
67 </rule>
68 <rule pattern="[^\\"]+">
69 <token type="LiteralString"/>
70 </rule>
71 <rule pattern="\\">
72 <token type="LiteralString"/>
73 </rule>
74 </state>
75 <state name="string-intp">
76 <rule pattern="\)">
77 <token type="LiteralStringInterpol"/>
78 <pop depth="1"/>
79 </rule>
80 <rule>
81 <include state="root"/>
82 </rule>
83 </state>
84 </rules>
85</lexer>