mirror of
https://github.com/nvim-treesitter/nvim-treesitter.git
synced 2026-07-06 21:40:03 -04:00
New kotlin parser
This commit is contained in:
parent
53797ad88f
commit
16a4da493c
3 changed files with 178 additions and 179 deletions
|
|
@ -117,7 +117,7 @@
|
|||
"revision": "12ea597262125fc22fd2e91aa953ac69b19c26ca"
|
||||
},
|
||||
"kotlin": {
|
||||
"revision": "48bfb38abd93f8d617877d7bb7f92a6bb1166285"
|
||||
"revision": "0369bdc8a7ed42830ff718af1173129d2028769a"
|
||||
},
|
||||
"latex": {
|
||||
"revision": "2c0d03a36ee979bc697f6a9dd119174cf0ef15e0"
|
||||
|
|
|
|||
|
|
@ -205,10 +205,10 @@ list.java = {
|
|||
|
||||
list.kotlin = {
|
||||
install_info = {
|
||||
url = "https://github.com/tormodatt/tree-sitter-kotlin",
|
||||
url = "https://github.com/Joakker/tree-sitter-kotlin",
|
||||
files = { "src/parser.c" },
|
||||
},
|
||||
maintainers = { "@tormodatt" },
|
||||
maintainers = { "@Joakker" },
|
||||
}
|
||||
|
||||
list.html = {
|
||||
|
|
|
|||
|
|
@ -1,191 +1,190 @@
|
|||
;;; Kotlin
|
||||
|
||||
(simple_identifier) @variable
|
||||
; Reset some
|
||||
(navigation_suffix (simple_identifier) @none)
|
||||
(import_header (identifier (simple_identifier) @none))
|
||||
(package_header (identifier (simple_identifier) @none))
|
||||
|
||||
|
||||
;; Strings
|
||||
(line_string_literal) @string
|
||||
(multi_line_string_literal) @string
|
||||
; Interpolated
|
||||
(interpolated_identifier) @variable
|
||||
(interpolated_expression) @none
|
||||
|
||||
|
||||
;; Suffixes
|
||||
(navigation_expression (navigation_suffix (simple_identifier) @property ))
|
||||
; Reset some
|
||||
(assignment (navigation_expression (navigation_suffix (simple_identifier) @none )))
|
||||
(call_expression (navigation_expression (navigation_suffix (simple_identifier) @none )))
|
||||
(navigation_expression (navigation_expression (navigation_suffix (simple_identifier) @none )))
|
||||
|
||||
|
||||
|
||||
;; Variables/fields
|
||||
; attribute in data classes etc.
|
||||
(class_parameter (simple_identifier) @field)
|
||||
; variable in normal classes
|
||||
(property_declaration (variable_declaration (simple_identifier) @variable))
|
||||
; accessed field in blocks. `logger` in `logger.info("")`
|
||||
(statements (call_expression (navigation_expression (simple_identifier) @variable)))
|
||||
(indexing_expression (call_expression (navigation_expression (simple_identifier) @variable)))
|
||||
; `classProp` in `classProp.lastIndex`
|
||||
(statements (navigation_expression (simple_identifier) @variable))
|
||||
; `variable` in `variable = car.doors`
|
||||
(directly_assignable_expression (simple_identifier) @variable)
|
||||
|
||||
|
||||
;; Constants
|
||||
; Assume all-caps names are constants
|
||||
((simple_identifier) @constant
|
||||
(#match? @constant "^[A-Z][A-Z_0-9]+$"))
|
||||
((interpolated_identifier) @constant
|
||||
(#vim-match? @constant "^[A-Z][A-Z_0-9]+$"))
|
||||
|
||||
|
||||
(lambda_parameters) @parameter
|
||||
|
||||
|
||||
;; Builtin functions
|
||||
((simple_identifier) @function.macro
|
||||
(#vim-match? @function.macro "^(commonPrefixWith|commonSuffixWith|endsWith|findAnyOf|findLastAnyOf|hasSurrogatePairAt|ifBlank|ifEmpty|indexOf|indexOfAny|isEmpty|isNotBlank|isNotEmpty|isNullOrBlank|isNullOrEmpty|lastIndexOf|lastIndexOfAny|lineSequence|lines|orEmpty|padEnd|padStart|removePrefix|removeRange|removeSuffix|removeSurrounding|replace|replaceAfter|replaceAfterLast|replaceBefore|replaceBeforeLast|replaceFirst|replaceRange|split|splitToSequence|startsWith|subSequence|substring|substringAfter|substringAfterLast|substringBefore|substringBeforeLast|trim|trimEnd|trimStart|containsKey|containsValue|filter|filterKeys|filterNot|filterNotTo|filterTo|filterValues|getOrElse|getOrPut|getValue|ifEmpty|isNotEmpty|isNullOrEmpty|mapKeys|mapKeysTo|mapValues|mapValuesTo|orEmpty|putAll|remove|toMap|toMutableMap|toPair|also|apply|let|run|takeIf|takeUnless|prependIndent|replaceIndent|replaceIndentByMargin|trimIndent|trimMargin|all|any|asIterable|asSequence|associate|associateBy|associateByTo|associateTo|associateWith|associateWithTo|chunked|chunkedSequence|count|drop|dropLast|dropLastWhile|dropWhile|elementAtOrElse|elementAtOrNull|filter|filterIndexed|filterIndexedTo|filterNot|filterNotTo|filterTo|find|findLast|first|firstOrNull|flatMap|flatMapIndexed|flatMapIndexedTo|flatMapTo|fold|foldIndexed|foldRight|foldRightIndexed|forEach|forEachIndexed|getOrElse|getOrNull|groupBy|groupByTo|groupingBy|indexOfFirst|indexOfLast|last|lastOrNull|map|mapIndexed|mapIndexedNotNull|mapIndexedNotNullTo|mapIndexedTo|mapNotNull|mapNotNullTo|mapTo|max|maxBy|maxByOrNull|maxOf|maxOfOrNull|maxOfWith|maxOfWithOrNull|maxOrNull|maxWith|maxWithOrNull|min|minBy|minByOrNull|minOf|minOfOrNull|minOfWith|minOfWithOrNull|minOrNull|minWith|minWithOrNull|none|onEach|onEachIndexed|partition|random|randomOrNull|reduce|reduceIndexed|reduceIndexedOrNull|reduceOrNull|reduceRight|reduceRightIndexed|reduceRightIndexedOrNull|reduceRightOrNull|reversed|runningFold|runningFoldIndexed|runningReduce|runningReduceIndexed|scan|scanIndexed|scanReduce|scanReduceIndexed|single|singleOrNull|slice|sumBy|sumByDouble|sumOf|take|takeLast|takeLastWhile|takeWhile|toCollection|toHashSet|toList|toMutableList|toSet|windowed|windowedSequence|withIndex|zip|zipWithNext)$"))
|
||||
|
||||
(call_expression
|
||||
(simple_identifier) @function)
|
||||
|
||||
((simple_identifier) @function.builtin
|
||||
(#vim-match? @function.builtin "^(print|println|buildMap|emptyMap|hashMapOf|linkedMapOf|mapOf|mutableMapOf|buildSet|emptySet|hashSetOf|linkedSetOf|mutableSetOf|setOf|setOfNotNull|TODO|repeat|run|with)$"))
|
||||
|
||||
|
||||
;; Numbers
|
||||
(integer_literal) @number
|
||||
|
||||
;; Booleans
|
||||
(boolean_literal) @boolean
|
||||
|
||||
;; Types
|
||||
(type_identifier) @type
|
||||
|
||||
;; Annotations
|
||||
(annotation (single_annotation) @attribute)
|
||||
(single_annotation (user_type (type_identifier) @attribute))
|
||||
(single_annotation (constructor_invocation (user_type (type_identifier) @attribute)))
|
||||
|
||||
|
||||
;; it
|
||||
(indexing_expression (simple_identifier) @variable.builtin
|
||||
(#vim-match? @variable.builtin "^it$"))
|
||||
|
||||
|
||||
;; Operators
|
||||
[
|
||||
"="
|
||||
"-"
|
||||
"->"
|
||||
"+"
|
||||
"++"
|
||||
"--"
|
||||
"*"
|
||||
] @operator
|
||||
|
||||
;; Keyword operators
|
||||
[
|
||||
"in"
|
||||
] @keyword.operator
|
||||
|
||||
((simple_identifier) @keyword.operator
|
||||
(#vim-match? @keyword.operator "^to$"))
|
||||
|
||||
|
||||
;; Keywords
|
||||
[
|
||||
"this"
|
||||
"override"
|
||||
"enum"
|
||||
"as"
|
||||
"class"
|
||||
"object"
|
||||
"data"
|
||||
"val"
|
||||
"init"
|
||||
"private"
|
||||
"var"
|
||||
"break"
|
||||
"by"
|
||||
"companion"
|
||||
"constructor"
|
||||
"throw"
|
||||
] @keyword
|
||||
|
||||
"fun" @keyword.function
|
||||
"return" @keyword.return
|
||||
|
||||
(null_literal) @keyword
|
||||
|
||||
; const etc.
|
||||
(property_modifier) @keyword
|
||||
|
||||
|
||||
;; Conditionals
|
||||
[
|
||||
"if"
|
||||
"is"
|
||||
"else"
|
||||
"when"
|
||||
] @conditional
|
||||
|
||||
|
||||
;; Loops
|
||||
[
|
||||
"for"
|
||||
"while"
|
||||
] @repeat
|
||||
|
||||
|
||||
;; Includes
|
||||
|
||||
"import" @include
|
||||
"package" @include
|
||||
|
||||
|
||||
;; Punctuation
|
||||
(comment)
|
||||
(shebang)
|
||||
] @comment
|
||||
|
||||
[
|
||||
"::"
|
||||
";"
|
||||
"."
|
||||
","
|
||||
":"
|
||||
","
|
||||
"."
|
||||
] @punctuation.delimiter
|
||||
|
||||
[
|
||||
"$"
|
||||
"${"
|
||||
"}"
|
||||
] @none
|
||||
|
||||
[
|
||||
"["
|
||||
"]"
|
||||
"{"
|
||||
"}"
|
||||
"("
|
||||
")"
|
||||
"("
|
||||
")"
|
||||
"{"
|
||||
"}"
|
||||
] @punctuation.bracket
|
||||
|
||||
[
|
||||
"$"
|
||||
] @punctuation.special
|
||||
"class"
|
||||
"object"
|
||||
"fun"
|
||||
"var"
|
||||
"val"
|
||||
"try"
|
||||
"catch"
|
||||
"finally"
|
||||
] @keyword
|
||||
|
||||
;; Comments
|
||||
(comment) @comment
|
||||
"import" @include
|
||||
|
||||
; Functions
|
||||
(function_declaration (simple_identifier) @function)
|
||||
"return" @keyword.return
|
||||
|
||||
(return_expr
|
||||
"return@" @keyword.return
|
||||
label: (identifier) @label)
|
||||
(break_expr
|
||||
"break@" @keyword
|
||||
label: (identifier) @label)
|
||||
|
||||
(label
|
||||
name: (identifier) @label) @constant
|
||||
|
||||
[
|
||||
"for"
|
||||
"do"
|
||||
"while"
|
||||
] @repeat
|
||||
|
||||
[
|
||||
"||"
|
||||
"&&"
|
||||
"!="
|
||||
"!=="
|
||||
"=="
|
||||
"==="
|
||||
"<"
|
||||
">"
|
||||
"<="
|
||||
">="
|
||||
".."
|
||||
"+"
|
||||
"-"
|
||||
"%"
|
||||
"*"
|
||||
"/"
|
||||
] @operator
|
||||
|
||||
[
|
||||
"as"
|
||||
"as?"
|
||||
"in"
|
||||
] @keyword.operator
|
||||
|
||||
(class_decl
|
||||
name: (identifier) @type)
|
||||
(class_decl
|
||||
super: (_) @type)
|
||||
(object_decl
|
||||
name: (identifier) @type)
|
||||
|
||||
(class_param
|
||||
name: (identifier) @parameter
|
||||
type: (_) @type)
|
||||
|
||||
(type_constraints
|
||||
"where" @keyword
|
||||
(type_constraint
|
||||
type: (identifier) @type
|
||||
super: (_) @type))
|
||||
|
||||
(property
|
||||
name: (identifier) @property)
|
||||
(property
|
||||
type: (_) @type)
|
||||
|
||||
(enum_entry
|
||||
name: (identifier) @constant)
|
||||
|
||||
(func_decl
|
||||
name: (identifier) @function)
|
||||
(func_decl
|
||||
return: (_) @type)
|
||||
|
||||
(param_decl
|
||||
name: (identifier) @parameter
|
||||
type: (_) @type)
|
||||
|
||||
(type_param
|
||||
name: (identifier) @type)
|
||||
|
||||
(call
|
||||
function: (identifier) @function)
|
||||
(call
|
||||
function: (selector
|
||||
field: (identifier) @function))
|
||||
|
||||
(getter
|
||||
"get" @function.builtin)
|
||||
(setter
|
||||
"set" @function.builtin)
|
||||
|
||||
((identifier) @function.builtin
|
||||
(#any-of? @function.builtin
|
||||
"arrayOf"
|
||||
"arrayOfNulls"
|
||||
"assert"
|
||||
"booleanArrayOf"
|
||||
"byteArrayOf"
|
||||
"Char"
|
||||
"charArrayOf"
|
||||
"check"
|
||||
"checkNotNull"
|
||||
"doubleArrayOf"
|
||||
"emptyArray"
|
||||
"enumValueOf"
|
||||
"enumValues"
|
||||
"error"
|
||||
"floatArrayOf"
|
||||
"intArrayOf"
|
||||
"lazy"
|
||||
"lazyOf"
|
||||
"longArrayOf"
|
||||
"repeat"
|
||||
"require"
|
||||
"requireNotNull"
|
||||
"run"
|
||||
"runCatching"
|
||||
"shortArrayOf"
|
||||
"suspend"
|
||||
"synchronized"
|
||||
"TODO"
|
||||
"ubyteArrayOf"
|
||||
"UintArray"
|
||||
"uintArrayOf"
|
||||
"ULongArray"
|
||||
"ulongArrayOf"
|
||||
"UShortArray"
|
||||
"ushortArrayOf"
|
||||
"with"
|
||||
"print"
|
||||
"println"
|
||||
"readLine"))
|
||||
((identifier) @constant.builtin
|
||||
(#eq? @constant.builtin "it"))
|
||||
|
||||
(lambda
|
||||
args: (var_decl
|
||||
name: (identifier) @parameter))
|
||||
(lambda
|
||||
args: (var_decl
|
||||
type: (_) @type ))
|
||||
|
||||
(binary_expr
|
||||
operator: (identifier) @keyword.operator)
|
||||
|
||||
(ERROR) @error
|
||||
|
||||
; TODO parameter
|
||||
(integer) @number
|
||||
(float) @float
|
||||
|
||||
(string) @string
|
||||
|
||||
"null" @constant
|
||||
|
||||
[
|
||||
"true"
|
||||
"false"
|
||||
] @boolean
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue