...

Text file src/github.com/alecthomas/chroma/v2/lexers/embedded/kotlin.xml

Documentation: github.com/alecthomas/chroma/v2/lexers/embedded

     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>

View as plain text