kotlin.xml

  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&#39;&#34;\\\$]">
 12        <token type="LiteralStringEscape"/>
 13      </rule>
 14      <rule pattern="\\u[0-9a-fA-F]{4}">
 15        <token type="LiteralStringEscape"/>
 16      </rule>
 17      <rule pattern="&#34;">
 18        <token type="LiteralStringDouble"/>
 19        <pop depth="1"/>
 20      </rule>
 21      <rule>
 22        <include state="string-interpol"/>
 23      </rule>
 24      <rule pattern="[^\n\\&#34;$]+">
 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="&lt;">
 67        <token type="Punctuation"/>
 68        <push state="generics-specification"/>
 69      </rule>
 70      <rule pattern="&gt;">
 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="%=|&amp;&amp;|\*=|\+\+|\+=|--|-=|-&gt;|\.\.|\/=|::|&lt;=|==|&gt;=|!!|!=|\|\||\?[:.]">
113        <token type="Operator"/>
114      </rule>
115      <rule pattern="[~!%^&amp;*()+=|\[\]:;,.&lt;&gt;\/?-]">
116        <token type="Punctuation"/>
117      </rule>
118      <rule pattern="[{}]">
119        <token type="Punctuation"/>
120      </rule>
121      <rule pattern="&#34;&#34;&#34;">
122        <token type="LiteralString"/>
123        <push state="rawstring"/>
124      </rule>
125      <rule pattern="&#34;">
126        <token type="LiteralStringDouble"/>
127        <push state="string"/>
128      </rule>
129      <rule pattern="(&#39;)(\\u[0-9a-fA-F]{4})(&#39;)">
130        <bygroups>
131          <token type="LiteralStringChar"/>
132          <token type="LiteralStringEscape"/>
133          <token type="LiteralStringChar"/>
134        </bygroups>
135      </rule>
136      <rule pattern="&#39;\\.&#39;|&#39;[^\\]&#39;">
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="&lt;">
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="&#34;&#34;&#34;">
209        <token type="LiteralString"/>
210        <pop depth="1"/>
211      </rule>
212      <rule pattern="(?:[^$&#34;]+|\&#34;{1,2}[^&#34;])+">
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>