kotlin.json 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316
  1. {
  2. "aliases": [
  3. "kt"
  4. ],
  5. "keywords": {
  6. "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",
  7. "built_in": "Byte Short Char Int Long Boolean Float Double Void Unit Nothing",
  8. "literal": "true false null"
  9. },
  10. "contains": [
  11. {
  12. "className": "comment",
  13. "begin": "\/\\*\\*",
  14. "end": "\\*\/",
  15. "contains": [
  16. {
  17. "className": "doctag",
  18. "begin": "@[A-Za-z]+"
  19. },
  20. {
  21. "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"
  22. },
  23. {
  24. "className": "doctag",
  25. "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):",
  26. "relevance": 0
  27. }
  28. ],
  29. "relevance": 0
  30. },
  31. {
  32. "className": "comment",
  33. "begin": "\/\/",
  34. "end": "$",
  35. "contains": [
  36. {
  37. "$ref": "#contains.0.contains.1"
  38. },
  39. {
  40. "className": "doctag",
  41. "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):",
  42. "relevance": 0
  43. }
  44. ]
  45. },
  46. {
  47. "className": "comment",
  48. "begin": "\/\\*",
  49. "end": "\\*\/",
  50. "contains": [
  51. {
  52. "className": "comment",
  53. "begin": "\/\\*",
  54. "end": "\\*\/",
  55. "contains": [
  56. {
  57. "$ref": "#contains.0.contains.1"
  58. },
  59. {
  60. "className": "doctag",
  61. "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):",
  62. "relevance": 0
  63. }
  64. ]
  65. },
  66. {
  67. "$ref": "#contains.0.contains.1"
  68. },
  69. {
  70. "className": "doctag",
  71. "begin": "(?:TODO|FIXME|NOTE|BUG|XXX):",
  72. "relevance": 0
  73. }
  74. ]
  75. },
  76. {
  77. "className": "keyword",
  78. "begin": "\\b(break|continue|return|this)\\b",
  79. "starts": {
  80. "contains": [
  81. {
  82. "className": "symbol",
  83. "begin": "@\\w+"
  84. }
  85. ]
  86. }
  87. },
  88. {
  89. "className": "symbol",
  90. "begin": "[a-zA-Z_]\\w*@"
  91. },
  92. {
  93. "className": "meta",
  94. "begin": "@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\s*:(?:\\s*[a-zA-Z_]\\w*)?"
  95. },
  96. {
  97. "className": "meta",
  98. "begin": "@[a-zA-Z_]\\w*",
  99. "contains": [
  100. {
  101. "begin": "\\(",
  102. "end": "\\)",
  103. "contains": [
  104. {
  105. "className": "meta-string",
  106. "variants": [
  107. {
  108. "begin": "\"\"\"",
  109. "end": "\"\"\"(?=[^\"])",
  110. "contains": [
  111. {
  112. "className": "variable",
  113. "begin": "\\$[a-zA-Z_]\\w*"
  114. },
  115. {
  116. "className": "subst",
  117. "begin": "\\${",
  118. "end": "}",
  119. "contains": [
  120. {
  121. "className": "number",
  122. "begin": "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",
  123. "relevance": 0
  124. },
  125. {
  126. "className": "string",
  127. "variants": {
  128. "$ref": "#contains.6.contains.0.contains.0.variants"
  129. }
  130. }
  131. ]
  132. }
  133. ]
  134. },
  135. {
  136. "begin": "'",
  137. "end": "'",
  138. "illegal": "\\n",
  139. "contains": [
  140. {
  141. "begin": "\\\\[\\s\\S]",
  142. "relevance": 0
  143. }
  144. ]
  145. },
  146. {
  147. "begin": "\"",
  148. "end": "\"",
  149. "illegal": "\\n",
  150. "contains": [
  151. {
  152. "$ref": "#contains.6.contains.0.contains.0.variants.1.contains.0"
  153. },
  154. {
  155. "$ref": "#contains.6.contains.0.contains.0.variants.0.contains.0"
  156. },
  157. {
  158. "$ref": "#contains.6.contains.0.contains.0.variants.0.contains.1"
  159. }
  160. ]
  161. }
  162. ]
  163. }
  164. ]
  165. }
  166. ]
  167. },
  168. {
  169. "className": "function",
  170. "beginKeywords": "fun",
  171. "end": "[(]|$",
  172. "returnBegin": true,
  173. "excludeEnd": true,
  174. "keywords": {
  175. "$ref": "#keywords"
  176. },
  177. "illegal": "fun\\s+(<.*>)?[^\\s\\(]+(\\s+[^\\s\\(]+)\\s*=",
  178. "relevance": 5,
  179. "contains": [
  180. {
  181. "begin": "[a-zA-Z_]\\w*\\s*\\(",
  182. "returnBegin": true,
  183. "relevance": 0,
  184. "contains": [
  185. {
  186. "className": "title",
  187. "begin": "[a-zA-Z_]\\w*",
  188. "relevance": 0
  189. }
  190. ]
  191. },
  192. {
  193. "className": "type",
  194. "begin": "<",
  195. "end": ">",
  196. "keywords": "reified",
  197. "relevance": 0
  198. },
  199. {
  200. "className": "params",
  201. "begin": "\\(",
  202. "end": "\\)",
  203. "endsParent": true,
  204. "keywords": {
  205. "$ref": "#keywords"
  206. },
  207. "relevance": 0,
  208. "contains": [
  209. {
  210. "begin": ":",
  211. "end": "[=,\\\/]",
  212. "endsWithParent": true,
  213. "contains": [
  214. {
  215. "variants": [
  216. {
  217. "className": "type",
  218. "begin": "[a-zA-Z_]\\w*"
  219. },
  220. {
  221. "begin": "\\(",
  222. "end": "\\)",
  223. "contains": [
  224. {
  225. "$ref": "#contains.7.contains.2.contains.0.contains.0"
  226. }
  227. ]
  228. }
  229. ]
  230. },
  231. {
  232. "$ref": "#contains.1"
  233. },
  234. {
  235. "$ref": "#contains.2"
  236. }
  237. ],
  238. "relevance": 0
  239. },
  240. {
  241. "$ref": "#contains.1"
  242. },
  243. {
  244. "$ref": "#contains.2"
  245. },
  246. {
  247. "$ref": "#contains.5"
  248. },
  249. {
  250. "$ref": "#contains.6"
  251. },
  252. {
  253. "$ref": "#contains.6.contains.0.contains.0.variants.0.contains.1.contains.1"
  254. },
  255. {
  256. "$ref": "#contains.6.contains.0.contains.0.variants.0.contains.1.contains.0"
  257. }
  258. ]
  259. },
  260. {
  261. "$ref": "#contains.2"
  262. }
  263. ]
  264. },
  265. {
  266. "className": "class",
  267. "beginKeywords": "class interface trait",
  268. "end": "[:\\{(]|$",
  269. "excludeEnd": true,
  270. "illegal": "extends implements",
  271. "contains": [
  272. {
  273. "beginKeywords": "public protected internal private constructor"
  274. },
  275. {
  276. "$ref": "#contains.7.contains.0.contains.0"
  277. },
  278. {
  279. "className": "type",
  280. "begin": "<",
  281. "end": ">",
  282. "excludeBegin": true,
  283. "excludeEnd": true,
  284. "relevance": 0
  285. },
  286. {
  287. "className": "type",
  288. "begin": "[,:]\\s*",
  289. "end": "[<\\(,]|$",
  290. "excludeBegin": true,
  291. "returnEnd": true
  292. },
  293. {
  294. "$ref": "#contains.5"
  295. },
  296. {
  297. "$ref": "#contains.6"
  298. }
  299. ]
  300. },
  301. {
  302. "$ref": "#contains.6.contains.0.contains.0.variants.0.contains.1.contains.1"
  303. },
  304. {
  305. "className": "meta",
  306. "begin": "^#!\/usr\/bin\/env",
  307. "end": "$",
  308. "illegal": "\n"
  309. },
  310. {
  311. "className": "number",
  312. "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]?",
  313. "relevance": 0
  314. }
  315. ]
  316. }