You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

317 lines
12 KiB
JSON

{
"aliases": [
"kt"
],
"keywords": {
"keyword": "abstract as val var vararg get set class object open private protected public noinline crossinline dynamic final enum if else do while for when throw try catch finally import package is in fun override companion reified inline lateinit init interface annotation data sealed internal infix operator out by constructor super tailrec where const inner suspend typealias external expect actual trait volatile transient native default",
"built_in": "Byte Short Char Int Long Boolean Float Double Void Unit Nothing",
"literal": "true false null"
},
"contains": [
{
"className": "comment",
"begin": "\/\\*\\*",
"end": "\\*\/",
"contains": [
{
"className": "doctag",
"begin": "@[A-Za-z]+"
},
{
"begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b"
},
{
"className": "doctag",
"begin": "(?:TODO|FIXME|NOTE|BUG|XXX):",
"relevance": 0
}
],
"relevance": 0
},
{
"className": "comment",
"begin": "\/\/",
"end": "$",
"contains": [
{
"$ref": "#contains.0.contains.1"
},
{
"className": "doctag",
"begin": "(?:TODO|FIXME|NOTE|BUG|XXX):",
"relevance": 0
}
]
},
{
"className": "comment",
"begin": "\/\\*",
"end": "\\*\/",
"contains": [
{
"className": "comment",
"begin": "\/\\*",
"end": "\\*\/",
"contains": [
{
"$ref": "#contains.0.contains.1"
},
{
"className": "doctag",
"begin": "(?:TODO|FIXME|NOTE|BUG|XXX):",
"relevance": 0
}
]
},
{
"$ref": "#contains.0.contains.1"
},
{
"className": "doctag",
"begin": "(?:TODO|FIXME|NOTE|BUG|XXX):",
"relevance": 0
}
]
},
{
"className": "keyword",
"begin": "\\b(break|continue|return|this)\\b",
"starts": {
"contains": [
{
"className": "symbol",
"begin": "@\\w+"
}
]
}
},
{
"className": "symbol",
"begin": "[a-zA-Z_]\\w*@"
},
{
"className": "meta",
"begin": "@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\s*:(?:\\s*[a-zA-Z_]\\w*)?"
},
{
"className": "meta",
"begin": "@[a-zA-Z_]\\w*",
"contains": [
{
"begin": "\\(",
"end": "\\)",
"contains": [
{
"className": "meta-string",
"variants": [
{
"begin": "\"\"\"",
"end": "\"\"\"(?=[^\"])",
"contains": [
{
"className": "variable",
"begin": "\\$[a-zA-Z_]\\w*"
},
{
"className": "subst",
"begin": "\\${",
"end": "}",
"contains": [
{
"className": "number",
"begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",
"relevance": 0
},
{
"className": "string",
"variants": {
"$ref": "#contains.6.contains.0.contains.0.variants"
}
}
]
}
]
},
{
"begin": "'",
"end": "'",
"illegal": "\\n",
"contains": [
{
"begin": "\\\\[\\s\\S]",
"relevance": 0
}
]
},
{
"begin": "\"",
"end": "\"",
"illegal": "\\n",
"contains": [
{
"$ref": "#contains.6.contains.0.contains.0.variants.1.contains.0"
},
{
"$ref": "#contains.6.contains.0.contains.0.variants.0.contains.0"
},
{
"$ref": "#contains.6.contains.0.contains.0.variants.0.contains.1"
}
]
}
]
}
]
}
]
},
{
"className": "function",
"beginKeywords": "fun",
"end": "[(]|$",
"returnBegin": true,
"excludeEnd": true,
"keywords": {
"$ref": "#keywords"
},
"illegal": "fun\\s+(<.*>)?[^\\s\\(]+(\\s+[^\\s\\(]+)\\s*=",
"relevance": 5,
"contains": [
{
"begin": "[a-zA-Z_]\\w*\\s*\\(",
"returnBegin": true,
"relevance": 0,
"contains": [
{
"className": "title",
"begin": "[a-zA-Z_]\\w*",
"relevance": 0
}
]
},
{
"className": "type",
"begin": "<",
"end": ">",
"keywords": "reified",
"relevance": 0
},
{
"className": "params",
"begin": "\\(",
"end": "\\)",
"endsParent": true,
"keywords": {
"$ref": "#keywords"
},
"relevance": 0,
"contains": [
{
"begin": ":",
"end": "[=,\\\/]",
"endsWithParent": true,
"contains": [
{
"variants": [
{
"className": "type",
"begin": "[a-zA-Z_]\\w*"
},
{
"begin": "\\(",
"end": "\\)",
"contains": [
{
"$ref": "#contains.7.contains.2.contains.0.contains.0"
}
]
}
]
},
{
"$ref": "#contains.1"
},
{
"$ref": "#contains.2"
}
],
"relevance": 0
},
{
"$ref": "#contains.1"
},
{
"$ref": "#contains.2"
},
{
"$ref": "#contains.5"
},
{
"$ref": "#contains.6"
},
{
"$ref": "#contains.6.contains.0.contains.0.variants.0.contains.1.contains.1"
},
{
"$ref": "#contains.6.contains.0.contains.0.variants.0.contains.1.contains.0"
}
]
},
{
"$ref": "#contains.2"
}
]
},
{
"className": "class",
"beginKeywords": "class interface trait",
"end": "[:\\{(]|$",
"excludeEnd": true,
"illegal": "extends implements",
"contains": [
{
"beginKeywords": "public protected internal private constructor"
},
{
"$ref": "#contains.7.contains.0.contains.0"
},
{
"className": "type",
"begin": "<",
"end": ">",
"excludeBegin": true,
"excludeEnd": true,
"relevance": 0
},
{
"className": "type",
"begin": "[,:]\\s*",
"end": "[<\\(,]|$",
"excludeBegin": true,
"returnEnd": true
},
{
"$ref": "#contains.5"
},
{
"$ref": "#contains.6"
}
]
},
{
"$ref": "#contains.6.contains.0.contains.0.variants.0.contains.1.contains.1"
},
{
"className": "meta",
"begin": "^#!\/usr\/bin\/env",
"end": "$",
"illegal": "\n"
},
{
"className": "number",
"begin": "\\b(0[bB]([01]+[01_]+[01]+|[01]+)|0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)|(([\\d]+[\\d_]+[\\d]+|[\\d]+)(\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))?|\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))([eE][-+]?\\d+)?)[lLfF]?",
"relevance": 0
}
]
}