<lexer> <config> <name>Kotlin</name> <alias>kotlin</alias> <filename>*.kt</filename> <mime_type>text/x-kotlin</mime_type> <dot_all>true</dot_all> </config> <rules> <state name="string"> <rule pattern="\\[tbnr'"\\\$]"> <token type="LiteralStringEscape"/> </rule> <rule pattern="\\u[0-9a-fA-F]{4}"> <token type="LiteralStringEscape"/> </rule> <rule pattern="""> <token type="LiteralStringDouble"/> <pop depth="1"/> </rule> <rule> <include state="string-interpol"/> </rule> <rule pattern="[^\n\\"$]+"> <token type="LiteralStringDouble"/> </rule> <rule pattern="\$"> <token type="LiteralStringDouble"/> </rule> </state> <state name="package"> <rule pattern="\S+"> <token type="NameNamespace"/> <pop depth="1"/> </rule> </state> <state name="class"> <rule pattern="\x60[^\x60]+?\x60"> <token type="NameClass"/> <pop depth="1"/> </rule> <rule pattern="(?:[_\p{L}][\p{L}\p{N}]*|`@?[_\p{L}][\p{L}\p{N}]+`)"> <token type="NameClass"/> <pop depth="1"/> </rule> </state> <state name="property"> <rule pattern="\x60[^\x60]+?\x60"> <token type="NameProperty"/> <pop depth="1"/> </rule> <rule pattern="(?:[_\p{L}][\p{L}\p{N}]*|`@?[_\p{L}][\p{L}\p{N}]+`)"> <token type="NameProperty"/> <pop depth="1"/> </rule> </state> <state name="string-interpol"> <rule pattern="\$(?:[_\p{L}][\p{L}\p{N}]*|`@?[_\p{L}][\p{L}\p{N}]+`)"> <token type="LiteralStringInterpol"/> </rule> <rule pattern="\${[^}\n]*}"> <token type="LiteralStringInterpol"/> </rule> </state> <state name="generics-specification"> <rule pattern="<"> <token type="Punctuation"/> <push state="generics-specification"/> </rule> <rule pattern=">"> <token type="Punctuation"/> <pop depth="1"/> </rule> <rule pattern="[,:*?]"> <token type="Punctuation"/> </rule> <rule pattern="(in|out|reified)"> <token type="Keyword"/> </rule> <rule pattern="\x60[^\x60]+?\x60"> <token type="NameClass"/> </rule> <rule pattern="(?:[_\p{L}][\p{L}\p{N}]*|`@?[_\p{L}][\p{L}\p{N}]+`)"> <token type="NameClass"/> </rule> <rule pattern="\s+"> <token type="Text"/> </rule> </state> <state name="root"> <rule pattern="^\s*\[.*?\]"> <token type="NameAttribute"/> </rule> <rule pattern="[^\S\n]+"> <token type="Text"/> </rule> <rule pattern="\\\n"> <token type="Text"/> </rule> <rule pattern="//[^\n]*\n?"> <token type="CommentSingle"/> </rule> <rule pattern="/[*].*?[*]/"> <token type="CommentMultiline"/> </rule> <rule pattern="\n"> <token type="Text"/> </rule> <rule pattern="!==|!in|!is|==="> <token type="Operator"/> </rule> <rule pattern="%=|&&|\*=|\+\+|\+=|--|-=|->|\.\.|\/=|::|<=|==|>=|!!|!=|\|\||\?[:.]"> <token type="Operator"/> </rule> <rule pattern="[~!%^&*()+=|\[\]:;,.<>\/?-]"> <token type="Punctuation"/> </rule> <rule pattern="[{}]"> <token type="Punctuation"/> </rule> <rule pattern="""""> <token type="LiteralString"/> <push state="rawstring"/> </rule> <rule pattern="""> <token type="LiteralStringDouble"/> <push state="string"/> </rule> <rule pattern="(')(\\u[0-9a-fA-F]{4})(')"> <bygroups> <token type="LiteralStringChar"/> <token type="LiteralStringEscape"/> <token type="LiteralStringChar"/> </bygroups> </rule> <rule pattern="'\\.'|'[^\\]'"> <token type="LiteralStringChar"/> </rule> <rule pattern="0[xX][0-9a-fA-F]+[Uu]?[Ll]?|[0-9]+(\.[0-9]*)?([eE][+-][0-9]+)?[fF]?[Uu]?[Ll]?"> <token type="LiteralNumber"/> </rule> <rule pattern="(companion)(\s+)(object)"> <bygroups> <token type="Keyword"/> <token type="Text"/> <token type="Keyword"/> </bygroups> </rule> <rule pattern="(class|interface|object)(\s+)"> <bygroups> <token type="Keyword"/> <token type="Text"/> </bygroups> <push state="class"/> </rule> <rule pattern="(package|import)(\s+)"> <bygroups> <token type="Keyword"/> <token type="Text"/> </bygroups> <push state="package"/> </rule> <rule pattern="(val|var)(\s+)"> <bygroups> <token type="Keyword"/> <token type="Text"/> </bygroups> <push state="property"/> </rule> <rule pattern="(fun)(\s+)"> <bygroups> <token type="Keyword"/> <token type="Text"/> </bygroups> <push state="function"/> </rule> <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"> <token type="Keyword"/> </rule> <rule pattern="@(?:[_\p{L}][\p{L}\p{N}]*|`@?[_\p{L}][\p{L}\p{N}]+`)"> <token type="NameDecorator"/> </rule> <rule pattern="(?:\p{Lu}[_\p{L}]*)(?=\.)"> <token type="NameClass"/> </rule> <rule pattern="(?:[_\p{L}][\p{L}\p{N}]*|`@?[_\p{L}][\p{L}\p{N}]+`)"> <token type="Name"/> </rule> </state> <state name="function"> <rule pattern="<"> <token type="Punctuation"/> <push state="generics-specification"/> </rule> <rule pattern="\x60[^\x60]+?\x60"> <token type="NameFunction"/> <pop depth="1"/> </rule> <rule pattern="(?:[_\p{L}][\p{L}\p{N}]*|`@?[_\p{L}][\p{L}\p{N}]+`)"> <token type="NameFunction"/> <pop depth="1"/> </rule> <rule pattern="\s+"> <token type="Text"/> </rule> </state> <state name="rawstring"> <rule pattern="""""> <token type="LiteralString"/> <pop depth="1"/> </rule> <rule pattern="(?:[^$"]+|\"{1,2}[^"])+"> <token type="LiteralString"/> </rule> <rule> <include state="string-interpol"/> </rule> <rule pattern="\$"> <token type="LiteralString"/> </rule> </state> </rules> </lexer>