...
1<lexer>
2 <config>
3 <name>Kotlin</name>
4 <alias>kotlin</alias>
5 <filename>*.kt</filename>
6 <mime_type>text/x-kotlin</mime_type>
7 <dot_all>true</dot_all>
8 </config>
9 <rules>
10 <state name="string">
11 <rule pattern="\\[tbnr'"\\\$]">
12 <token type="LiteralStringEscape"/>
13 </rule>
14 <rule pattern="\\u[0-9a-fA-F]{4}">
15 <token type="LiteralStringEscape"/>
16 </rule>
17 <rule pattern=""">
18 <token type="LiteralStringDouble"/>
19 <pop depth="1"/>
20 </rule>
21 <rule>
22 <include state="string-interpol"/>
23 </rule>
24 <rule pattern="[^\n\\"$]+">
25 <token type="LiteralStringDouble"/>
26 </rule>
27 <rule pattern="\$">
28 <token type="LiteralStringDouble"/>
29 </rule>
30 </state>
31 <state name="package">
32 <rule pattern="\S+">
33 <token type="NameNamespace"/>
34 <pop depth="1"/>
35 </rule>
36 </state>
37 <state name="class">
38 <rule pattern="\x60[^\x60]+?\x60">
39 <token type="NameClass"/>
40 <pop depth="1"/>
41 </rule>
42 <rule pattern="(?:[_\p{L}][\p{L}\p{N}]*|`@?[_\p{L}][\p{L}\p{N}]+`)">
43 <token type="NameClass"/>
44 <pop depth="1"/>
45 </rule>
46 </state>
47 <state name="property">
48 <rule pattern="\x60[^\x60]+?\x60">
49 <token type="NameProperty"/>
50 <pop depth="1"/>
51 </rule>
52 <rule pattern="(?:[_\p{L}][\p{L}\p{N}]*|`@?[_\p{L}][\p{L}\p{N}]+`)">
53 <token type="NameProperty"/>
54 <pop depth="1"/>
55 </rule>
56 </state>
57 <state name="string-interpol">
58 <rule pattern="\$(?:[_\p{L}][\p{L}\p{N}]*|`@?[_\p{L}][\p{L}\p{N}]+`)">
59 <token type="LiteralStringInterpol"/>
60 </rule>
61 <rule pattern="\${[^}\n]*}">
62 <token type="LiteralStringInterpol"/>
63 </rule>
64 </state>
65 <state name="generics-specification">
66 <rule pattern="<">
67 <token type="Punctuation"/>
68 <push state="generics-specification"/>
69 </rule>
70 <rule pattern=">">
71 <token type="Punctuation"/>
72 <pop depth="1"/>
73 </rule>
74 <rule pattern="[,:*?]">
75 <token type="Punctuation"/>
76 </rule>
77 <rule pattern="(in|out|reified)">
78 <token type="Keyword"/>
79 </rule>
80 <rule pattern="\x60[^\x60]+?\x60">
81 <token type="NameClass"/>
82 </rule>
83 <rule pattern="(?:[_\p{L}][\p{L}\p{N}]*|`@?[_\p{L}][\p{L}\p{N}]+`)">
84 <token type="NameClass"/>
85 </rule>
86 <rule pattern="\s+">
87 <token type="Text"/>
88 </rule>
89 </state>
90 <state name="root">
91 <rule pattern="^\s*\[.*?\]">
92 <token type="NameAttribute"/>
93 </rule>
94 <rule pattern="[^\S\n]+">
95 <token type="Text"/>
96 </rule>
97 <rule pattern="\\\n">
98 <token type="Text"/>
99 </rule>
100 <rule pattern="//[^\n]*\n?">
101 <token type="CommentSingle"/>
102 </rule>
103 <rule pattern="/[*].*?[*]/">
104 <token type="CommentMultiline"/>
105 </rule>
106 <rule pattern="\n">
107 <token type="Text"/>
108 </rule>
109 <rule pattern="!==|!in|!is|===">
110 <token type="Operator"/>
111 </rule>
112 <rule pattern="%=|&&|\*=|\+\+|\+=|--|-=|->|\.\.|\/=|::|<=|==|>=|!!|!=|\|\||\?[:.]">
113 <token type="Operator"/>
114 </rule>
115 <rule pattern="[~!%^&*()+=|\[\]:;,.<>\/?-]">
116 <token type="Punctuation"/>
117 </rule>
118 <rule pattern="[{}]">
119 <token type="Punctuation"/>
120 </rule>
121 <rule pattern=""""">
122 <token type="LiteralString"/>
123 <push state="rawstring"/>
124 </rule>
125 <rule pattern=""">
126 <token type="LiteralStringDouble"/>
127 <push state="string"/>
128 </rule>
129 <rule pattern="(')(\\u[0-9a-fA-F]{4})(')">
130 <bygroups>
131 <token type="LiteralStringChar"/>
132 <token type="LiteralStringEscape"/>
133 <token type="LiteralStringChar"/>
134 </bygroups>
135 </rule>
136 <rule pattern="'\\.'|'[^\\]'">
137 <token type="LiteralStringChar"/>
138 </rule>
139 <rule pattern="0[xX][0-9a-fA-F]+[Uu]?[Ll]?|[0-9]+(\.[0-9]*)?([eE][+-][0-9]+)?[fF]?[Uu]?[Ll]?">
140 <token type="LiteralNumber"/>
141 </rule>
142 <rule pattern="(companion)(\s+)(object)">
143 <bygroups>
144 <token type="Keyword"/>
145 <token type="Text"/>
146 <token type="Keyword"/>
147 </bygroups>
148 </rule>
149 <rule pattern="(class|interface|object)(\s+)">
150 <bygroups>
151 <token type="Keyword"/>
152 <token type="Text"/>
153 </bygroups>
154 <push state="class"/>
155 </rule>
156 <rule pattern="(package|import)(\s+)">
157 <bygroups>
158 <token type="Keyword"/>
159 <token type="Text"/>
160 </bygroups>
161 <push state="package"/>
162 </rule>
163 <rule pattern="(val|var)(\s+)">
164 <bygroups>
165 <token type="Keyword"/>
166 <token type="Text"/>
167 </bygroups>
168 <push state="property"/>
169 </rule>
170 <rule pattern="(fun)(\s+)">
171 <bygroups>
172 <token type="Keyword"/>
173 <token type="Text"/>
174 </bygroups>
175 <push state="function"/>
176 </rule>
177 <rule pattern="(abstract|actual|annotation|as|as\?|break|by|catch|class|companion|const|constructor|continue|crossinline|data|delegate|do|dynamic|else|enum|expect|external|false|field|file|final|finally|for|fun|get|if|import|in|infix|init|inline|inner|interface|internal|is|it|lateinit|noinline|null|object|open|operator|out|override|package|param|private|property|protected|public|receiver|reified|return|sealed|set|setparam|super|suspend|tailrec|this|throw|true|try|typealias|typeof|val|value|var|vararg|when|where|while)\b">
178 <token type="Keyword"/>
179 </rule>
180 <rule pattern="@(?:[_\p{L}][\p{L}\p{N}]*|`@?[_\p{L}][\p{L}\p{N}]+`)">
181 <token type="NameDecorator"/>
182 </rule>
183 <rule pattern="(?:\p{Lu}[_\p{L}]*)(?=\.)">
184 <token type="NameClass"/>
185 </rule>
186 <rule pattern="(?:[_\p{L}][\p{L}\p{N}]*|`@?[_\p{L}][\p{L}\p{N}]+`)">
187 <token type="Name"/>
188 </rule>
189 </state>
190 <state name="function">
191 <rule pattern="<">
192 <token type="Punctuation"/>
193 <push state="generics-specification"/>
194 </rule>
195 <rule pattern="\x60[^\x60]+?\x60">
196 <token type="NameFunction"/>
197 <pop depth="1"/>
198 </rule>
199 <rule pattern="(?:[_\p{L}][\p{L}\p{N}]*|`@?[_\p{L}][\p{L}\p{N}]+`)">
200 <token type="NameFunction"/>
201 <pop depth="1"/>
202 </rule>
203 <rule pattern="\s+">
204 <token type="Text"/>
205 </rule>
206 </state>
207 <state name="rawstring">
208 <rule pattern=""""">
209 <token type="LiteralString"/>
210 <pop depth="1"/>
211 </rule>
212 <rule pattern="(?:[^$"]+|\"{1,2}[^"])+">
213 <token type="LiteralString"/>
214 </rule>
215 <rule>
216 <include state="string-interpol"/>
217 </rule>
218 <rule pattern="\$">
219 <token type="LiteralString"/>
220 </rule>
221 </state>
222 </rules>
223</lexer>
View as plain text