github-linguist 7.11.1 → 7.14.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (611) hide show
  1. checksums.yaml +4 -4
  2. data/ext/linguist/lex.linguist_yy.c +1123 -623
  3. data/ext/linguist/lex.linguist_yy.h +433 -66
  4. data/ext/linguist/linguist.c +5 -35
  5. data/ext/linguist/linguist.h +0 -18
  6. data/ext/linguist/tokenizer.l +83 -65
  7. data/grammars/annotation.liquidhaskell.haskell.json +1 -1835
  8. data/grammars/config.xcompose.json +1 -80
  9. data/grammars/documentation.markdown.injection.haxe.json +1 -22
  10. data/grammars/etc.json +1 -987
  11. data/grammars/file.lasso.json +1 -702
  12. data/grammars/hidden.manref.json +1 -29
  13. data/grammars/hidden.regexp.injection-shell.json +1 -28
  14. data/grammars/hint.haskell.json +1 -1762
  15. data/grammars/hint.message.haskell.json +1 -1786
  16. data/grammars/hint.type.haskell.json +1 -1759
  17. data/grammars/injections.etc.json +1 -659
  18. data/grammars/inline.prisma.json +1 -55
  19. data/grammars/markdown.hack.codeblock.json +1 -20
  20. data/grammars/markdown.haxe.codeblock.json +1 -26
  21. data/grammars/markdown.hxml.codeblock.json +1 -26
  22. data/grammars/markdown.lean.codeblock.json +1 -0
  23. data/grammars/markdown.plantuml.codeblock.json +1 -26
  24. data/grammars/objdump.x86asm.json +1 -69
  25. data/grammars/source.4dm.json +1 -1156
  26. data/grammars/source.SASLog.json +1 -18
  27. data/grammars/source.abap.json +1 -335
  28. data/grammars/source.abapcds.json +1 -0
  29. data/grammars/source.abl.json +1 -734
  30. data/grammars/source.abnf.json +1 -294
  31. data/grammars/source.actionscript.3.json +1 -1538
  32. data/grammars/source.acucobol.json +1 -13
  33. data/grammars/source.ada.json +1 -133
  34. data/grammars/source.afm.json +1 -1207
  35. data/grammars/source.agc.json +1 -87
  36. data/grammars/source.agda.json +1 -72
  37. data/grammars/source.ahk.json +1 -195
  38. data/grammars/source.al.json +1 -130
  39. data/grammars/source.alloy.json +1 -40
  40. data/grammars/source.ampl.json +1 -151
  41. data/grammars/source.angelscript.json +1 -186
  42. data/grammars/source.antlr.json +1 -295
  43. data/grammars/source.apache-config.json +1 -346
  44. data/grammars/source.apache-config.mod_perl.json +1 -65
  45. data/grammars/source.apl.json +1 -1427
  46. data/grammars/source.applescript.json +1 -1384
  47. data/grammars/source.asl.json +1 -56
  48. data/grammars/source.asn.json +1 -55
  49. data/grammars/source.asp.json +1 -151
  50. data/grammars/source.aspectj.json +1 -960
  51. data/grammars/source.assembly.json +1 -116
  52. data/grammars/source.ats.json +1 -164
  53. data/grammars/source.autoit.json +1 -167
  54. data/grammars/source.avro.json +1 -381
  55. data/grammars/source.awk.json +1 -384
  56. data/grammars/source.ballerina.json +1 -1785
  57. data/grammars/source.basic.json +1 -0
  58. data/grammars/source.batchfile.json +1 -732
  59. data/grammars/source.bdf.json +1 -425
  60. data/grammars/source.befunge.json +1 -34
  61. data/grammars/source.bf.json +1 -30
  62. data/grammars/source.bicep.json +1 -0
  63. data/grammars/source.blitzmax.json +1 -905
  64. data/grammars/source.bnf.json +1 -191
  65. data/grammars/source.boo.json +1 -448
  66. data/grammars/source.boogie.json +1 -0
  67. data/grammars/source.brightauthorproject.json +1 -24
  68. data/grammars/source.brightscript.json +1 -148
  69. data/grammars/source.bsl.json +1 -451
  70. data/grammars/source.bsv.json +1 -277
  71. data/grammars/source.c++.json +1 -436
  72. data/grammars/source.c++.qt.json +1 -29
  73. data/grammars/source.c.ec.json +1 -33
  74. data/grammars/source.c.json +1 -712
  75. data/grammars/source.c.nwscript.json +1 -0
  76. data/grammars/source.c.platform.json +1 -1115
  77. data/grammars/source.c2hs.json +1 -24
  78. data/grammars/source.cabal.json +1 -63
  79. data/grammars/source.cache.cmake.json +1 -70
  80. data/grammars/source.camlp4.ocaml.json +1 -60
  81. data/grammars/source.capnp.json +1 -88
  82. data/grammars/source.ceylon.json +1 -93
  83. data/grammars/source.cfscript.cfc.json +1 -162
  84. data/grammars/source.cfscript.json +1 -737
  85. data/grammars/source.changelogs.rpm-spec.json +1 -91
  86. data/grammars/source.chapel.json +1 -265
  87. data/grammars/source.cirru.json +1 -61
  88. data/grammars/source.clarion.json +1 -146
  89. data/grammars/source.clean.json +1 -222
  90. data/grammars/source.click.json +1 -107
  91. data/grammars/source.clips.json +1 -67
  92. data/grammars/source.clojure.json +1 -429
  93. data/grammars/source.cm.json +1 -49
  94. data/grammars/source.cmake.json +1 -173
  95. data/grammars/source.cobol.json +1 -485
  96. data/grammars/source.coffee.json +1 -1310
  97. data/grammars/source.cool.json +1 -96
  98. data/grammars/source.coq.json +1 -58
  99. data/grammars/source.crystal.json +1 -2694
  100. data/grammars/source.cs.json +1 -4323
  101. data/grammars/source.csound-document.json +1 -175
  102. data/grammars/source.csound-score.json +1 -191
  103. data/grammars/source.csound.json +1 -824
  104. data/grammars/source.css.json +1 -1859
  105. data/grammars/source.css.less.json +1 -536
  106. data/grammars/source.css.mss.json +1 -249
  107. data/grammars/source.css.postcss.sugarss.json +1 -260
  108. data/grammars/source.css.scss.json +1 -1873
  109. data/grammars/source.cuda-c++.json +1 -103
  110. data/grammars/source.curlrc.json +1 -984
  111. data/grammars/source.cwl.json +1 -103
  112. data/grammars/source.cython.json +1 -1912
  113. data/grammars/source.d.json +1 -741
  114. data/grammars/source.dart.json +1 -433
  115. data/grammars/source.data-weave.json +1 -1580
  116. data/grammars/source.desktop.json +1 -86
  117. data/grammars/source.diff.json +1 -153
  118. data/grammars/source.dircolors.json +1 -137
  119. data/grammars/source.direct-x.json +1 -135
  120. data/grammars/source.disasm.json +1 -30
  121. data/grammars/source.ditroff.desc.json +1 -411
  122. data/grammars/source.ditroff.json +1 -1280
  123. data/grammars/source.dm.json +1 -628
  124. data/grammars/source.dmf.json +1 -96
  125. data/grammars/source.dockerfile.json +1 -88
  126. data/grammars/source.dosbox-conf.json +1 -97
  127. data/grammars/source.dot.json +1 -117
  128. data/grammars/source.dylan.json +1 -212
  129. data/grammars/source.ebnf.json +1 -240
  130. data/grammars/source.editorconfig.json +1 -365
  131. data/grammars/source.eiffel.json +1 -133
  132. data/grammars/source.elixir.json +1 -965
  133. data/grammars/source.elm.json +1 -375
  134. data/grammars/source.emacs.lisp.json +1 -1301
  135. data/grammars/source.erlang.json +1 -1647
  136. data/grammars/source.essl.json +1 -37
  137. data/grammars/source.factor.json +1 -252
  138. data/grammars/source.fan.json +1 -341
  139. data/grammars/source.fancy.json +1 -245
  140. data/grammars/source.faust.json +1 -119
  141. data/grammars/source.figctrl.json +1 -252
  142. data/grammars/source.figfont.json +1 -121
  143. data/grammars/source.firestore.json +1 -289
  144. data/grammars/source.fish.json +1 -190
  145. data/grammars/source.fontdir.json +1 -99
  146. data/grammars/source.fontforge.json +1 -355
  147. data/grammars/source.fontinfo.json +1 -0
  148. data/grammars/source.forth.json +1 -84
  149. data/grammars/source.fortran.json +1 -464
  150. data/grammars/source.fortran.modern.json +1 -200
  151. data/grammars/source.fsharp.fsi.json +1 -9
  152. data/grammars/source.fsharp.fsl.json +1 -9
  153. data/grammars/source.fsharp.fsx.json +1 -13
  154. data/grammars/source.fsharp.json +1 -452
  155. data/grammars/source.fstar.json +1 -439
  156. data/grammars/source.futhark.json +1 -167
  157. data/grammars/source.gap.json +1 -163
  158. data/grammars/source.gcode.json +1 -176
  159. data/grammars/source.gdb.json +1 -160
  160. data/grammars/source.gdb.session.json +1 -70
  161. data/grammars/source.gdbregs.json +1 -14
  162. data/grammars/source.gdscript.json +1 -491
  163. data/grammars/source.gedcom.json +1 -196
  164. data/grammars/source.gemfile-lock.json +1 -0
  165. data/grammars/source.generic-db.json +1 -41
  166. data/grammars/source.gerber.json +1 -321
  167. data/grammars/source.gf.json +1 -51
  168. data/grammars/source.gfm.blade.json +1 -15
  169. data/grammars/source.gfm.json +1 -1913
  170. data/grammars/source.gitattributes.json +1 -111
  171. data/grammars/source.gitconfig.json +1 -450
  172. data/grammars/source.gitignore.json +1 -140
  173. data/grammars/source.glsl.json +1 -139
  174. data/grammars/source.gn.json +1 -345
  175. data/grammars/source.gnuplot.json +1 -260
  176. data/grammars/source.go.json +1 -540
  177. data/grammars/source.golo.json +1 -177
  178. data/grammars/source.gosu.2.json +1 -153
  179. data/grammars/source.grace.json +1 -675
  180. data/grammars/source.graphql.json +1 -978
  181. data/grammars/source.gremlin.json +1 -200
  182. data/grammars/source.groovy.gradle.json +1 -69
  183. data/grammars/source.groovy.json +1 -1374
  184. data/grammars/source.hack.json +1 -2595
  185. data/grammars/source.haproxy-config.json +1 -152
  186. data/grammars/source.harbour.json +1 -388
  187. data/grammars/source.haskell.json +1 -1760
  188. data/grammars/source.hc.json +1 -709
  189. data/grammars/source.hgignore.json +1 -34
  190. data/grammars/source.hlsl.json +1 -211
  191. data/grammars/source.hosts.json +1 -40
  192. data/grammars/source.hql.json +1 -492
  193. data/grammars/source.hsc2hs.json +1 -9
  194. data/grammars/source.hsig.json +1 -1760
  195. data/grammars/source.httpspec.json +1 -283
  196. data/grammars/source.hx.argument.json +1 -80
  197. data/grammars/source.hx.json +1 -2428
  198. data/grammars/source.hx.type.json +1 -8
  199. data/grammars/source.hxml.json +1 -59
  200. data/grammars/source.hy.json +1 -429
  201. data/grammars/source.ideal.json +1 -356
  202. data/grammars/source.idl-dlm.json +1 -105
  203. data/grammars/source.idl.json +1 -246
  204. data/grammars/source.idris.json +1 -523
  205. data/grammars/source.igor.json +1 -369
  206. data/grammars/source.inform7.json +1 -183
  207. data/grammars/source.ini.json +1 -107
  208. data/grammars/source.ini.npmrc.json +1 -311
  209. data/grammars/source.inno.json +1 -133
  210. data/grammars/source.inputrc.json +1 -500
  211. data/grammars/source.io.json +1 -156
  212. data/grammars/source.ioke.json +1 -266
  213. data/grammars/source.isabelle.root.json +1 -64
  214. data/grammars/source.isabelle.theory.json +1 -102
  215. data/grammars/source.j.json +1 -260
  216. data/grammars/source.jasmin.json +1 -294
  217. data/grammars/source.java-properties.json +1 -87
  218. data/grammars/source.java.json +1 -1020
  219. data/grammars/source.jcl.json +1 -46
  220. data/grammars/source.jflex.json +1 -484
  221. data/grammars/source.jison.json +1 -711
  222. data/grammars/source.jisonlex-injection.json +1 -10
  223. data/grammars/source.jisonlex.json +1 -434
  224. data/grammars/source.jolie.json +1 -132
  225. data/grammars/source.jq.json +1 -211
  226. data/grammars/source.js.json +1 -1897
  227. data/grammars/source.js.objj.json +1 -419
  228. data/grammars/source.js.regexp.json +1 -152
  229. data/grammars/source.js.regexp.replacement.json +1 -26
  230. data/grammars/source.jsdoc.json +1 -460
  231. data/grammars/source.json.json +1 -139
  232. data/grammars/source.jsoniq.json +1 -0
  233. data/grammars/source.jsonnet.json +1 -197
  234. data/grammars/source.julia.console.json +1 -51
  235. data/grammars/source.julia.json +1 -991
  236. data/grammars/source.kotlin.json +1 -704
  237. data/grammars/source.kusto.json +1 -0
  238. data/grammars/source.lark.json +1 -0
  239. data/grammars/source.lbnf.json +1 -0
  240. data/grammars/source.lcov.json +1 -398
  241. data/grammars/source.lean.json +1 -226
  242. data/grammars/source.lean.markdown.json +1 -2598
  243. data/grammars/source.lex.json +1 -232
  244. data/grammars/source.lex.regexp.json +1 -269
  245. data/grammars/source.lid.json +1 -19
  246. data/grammars/source.lilypond.json +1 -869
  247. data/grammars/source.lisp.json +1 -101
  248. data/grammars/source.litcoffee.json +1 -654
  249. data/grammars/source.livescript.json +1 -603
  250. data/grammars/source.llvm.json +1 -61
  251. data/grammars/source.logos.json +1 -24
  252. data/grammars/source.logtalk.json +1 -310
  253. data/grammars/source.loomscript.json +1 -208
  254. data/grammars/source.lsl.json +1 -241
  255. data/grammars/source.ltspice.symbol.json +1 -294
  256. data/grammars/source.lua.json +1 -275
  257. data/grammars/source.m2.json +1 -125
  258. data/grammars/source.m4.json +1 -229
  259. data/grammars/source.m68k.json +1 -412
  260. data/grammars/source.mailmap.json +1 -28
  261. data/grammars/source.makefile.json +1 -470
  262. data/grammars/source.makegen.json +1 -9
  263. data/grammars/source.man-conf.json +1 -153
  264. data/grammars/source.mask.json +1 -816
  265. data/grammars/source.mata.json +1 -125
  266. data/grammars/source.mathematica.json +1 -416
  267. data/grammars/source.matlab.json +1 -1096
  268. data/grammars/source.maxscript.json +1 -465
  269. data/grammars/source.mcfunction-snapshot.json +1 -24480
  270. data/grammars/source.mcfunction.json +1 -1354
  271. data/grammars/source.mercury.json +1 -246
  272. data/grammars/source.meson.json +1 -165
  273. data/grammars/source.meta-info.json +1 -146
  274. data/grammars/source.ml.json +1 -285
  275. data/grammars/source.mlir.json +1 -109
  276. data/grammars/source.modelica.json +1 -142
  277. data/grammars/source.modula-3.json +1 -88
  278. data/grammars/source.modula2.json +1 -94
  279. data/grammars/source.monkey.json +1 -694
  280. data/grammars/source.moonscript.json +1 -144
  281. data/grammars/source.mql5.json +1 -187
  282. data/grammars/source.msl.json +1 -755
  283. data/grammars/source.mupad.json +1 -131
  284. data/grammars/source.nanorc.json +1 -333
  285. data/grammars/source.nasl.json +1 -155
  286. data/grammars/source.ncl.json +1 -53
  287. data/grammars/source.ne.json +1 -105
  288. data/grammars/source.nemerle.json +1 -132
  289. data/grammars/source.neon.json +1 -381
  290. data/grammars/source.nesc.json +1 -21
  291. data/grammars/source.netlinx.erb.json +1 -34
  292. data/grammars/source.netlinx.json +1 -704
  293. data/grammars/source.nextflow-groovy.json +1 -1359
  294. data/grammars/source.nextflow.json +1 -94
  295. data/grammars/source.nginx.json +1 -815
  296. data/grammars/source.nim.comment.json +1 -82
  297. data/grammars/source.nim.json +1 -1083
  298. data/grammars/source.nim_filter.json +1 -113
  299. data/grammars/source.nimcfg.json +1 -103
  300. data/grammars/source.ninja.json +1 -248
  301. data/grammars/source.nit.json +1 -234
  302. data/grammars/source.nix.json +1 -1196
  303. data/grammars/source.nsis.json +1 -152
  304. data/grammars/source.nu.json +1 -516
  305. data/grammars/source.nunjucks.json +1 -0
  306. data/grammars/source.nut.json +1 -262
  307. data/grammars/source.objc++.json +1 -12
  308. data/grammars/source.objc.json +1 -910
  309. data/grammars/source.objc.platform.json +1 -842
  310. data/grammars/source.objectscript.json +1 -309
  311. data/grammars/source.objectscript_class.json +1 -674
  312. data/grammars/source.objectscript_csp.json +1 -19
  313. data/grammars/source.objectscript_macros.json +1 -226
  314. data/grammars/source.ocaml.json +1 -1418
  315. data/grammars/source.ocamllex.json +1 -298
  316. data/grammars/source.ocamlyacc.json +1 -339
  317. data/grammars/source.odin-ehr.json +1 -806
  318. data/grammars/source.odin.json +1 -402
  319. data/grammars/source.ooc.json +1 -685
  320. data/grammars/source.opa.json +1 -196
  321. data/grammars/source.opal.json +1 -410
  322. data/grammars/source.opalsysdefs.json +1 -66
  323. data/grammars/source.openbsd-pkg.contents.json +1 -128
  324. data/grammars/source.opencobol.json +1 -62
  325. data/grammars/source.opentype.json +1 -448
  326. data/grammars/source.opts.json +1 -108
  327. data/grammars/source.ox.json +1 -89
  328. data/grammars/source.oz.json +1 -77
  329. data/grammars/source.p4.json +1 -122
  330. data/grammars/source.paket.dependencies.json +1 -0
  331. data/grammars/source.paket.lock.json +1 -0
  332. data/grammars/source.pan.json +1 -706
  333. data/grammars/source.papyrus.skyrim.json +1 -1272
  334. data/grammars/source.parrot.pir.json +1 -145
  335. data/grammars/source.pascal.json +1 -143
  336. data/grammars/source.pawn.json +1 -1194
  337. data/grammars/source.pcb.board.json +1 -285
  338. data/grammars/source.pcb.schematic.json +1 -424
  339. data/grammars/source.pcb.sexp.json +1 -232
  340. data/grammars/source.pep8.json +1 -118
  341. data/grammars/source.perl.6.json +1 -309
  342. data/grammars/source.perl.json +1 -2519
  343. data/grammars/source.php.zephir.json +1 -353
  344. data/grammars/source.pic.json +1 -908
  345. data/grammars/source.pig_latin.json +1 -168
  346. data/grammars/source.pike.json +1 -49
  347. data/grammars/source.plist.json +1 -336
  348. data/grammars/source.po.json +1 -222
  349. data/grammars/source.pogoscript.json +1 -79
  350. data/grammars/source.pony.json +1 -245
  351. data/grammars/source.postcss.json +1 -370
  352. data/grammars/source.postscript.json +1 -477
  353. data/grammars/source.pov-ray sdl.json +1 -82
  354. data/grammars/source.powershell.json +1 -981
  355. data/grammars/source.prisma.json +1 -435
  356. data/grammars/source.processing.json +1 -872
  357. data/grammars/source.prolog.eclipse.json +1 -201
  358. data/grammars/source.prolog.json +1 -286
  359. data/grammars/source.protobuf.json +1 -471
  360. data/grammars/source.puppet.json +1 -433
  361. data/grammars/source.purescript.json +1 -861
  362. data/grammars/source.pyjade.json +1 -996
  363. data/grammars/source.python.django.json +1 -29
  364. data/grammars/source.python.json +1 -5292
  365. data/grammars/source.python.salt.json +1 -9
  366. data/grammars/source.q.json +1 -215
  367. data/grammars/source.q_output.json +1 -348
  368. data/grammars/source.qasm.json +1 -66
  369. data/grammars/source.ql.json +1 -1408
  370. data/grammars/source.qmake.json +1 -210
  371. data/grammars/source.qml.json +1 -174
  372. data/grammars/source.qsharp.json +1 -120
  373. data/grammars/source.quake.json +1 -44
  374. data/grammars/source.quoting.raku.json +1 -0
  375. data/grammars/source.r.json +1 -194
  376. data/grammars/source.racket.json +1 -98
  377. data/grammars/source.raku.json +1 -0
  378. data/grammars/source.rascal.json +1 -283
  379. data/grammars/source.reason.hover.type.json +1 -14
  380. data/grammars/source.reason.json +1 -3382
  381. data/grammars/source.rebol.json +1 -637
  382. data/grammars/source.record-jar.json +1 -0
  383. data/grammars/source.red.json +1 -644
  384. data/grammars/source.redirects.json +1 -0
  385. data/grammars/source.reg.json +1 -159
  386. data/grammars/source.regexp.extended.json +1 -558
  387. data/grammars/source.regexp.json +1 -1434
  388. data/grammars/source.regexp.posix.json +1 -0
  389. data/grammars/source.regexp.python.json +1 -490
  390. data/grammars/source.regexp.raku.json +1 -0
  391. data/grammars/source.regexp.spin.json +1 -179
  392. data/grammars/source.rego.json +1 -124
  393. data/grammars/source.renpy.json +1 -1948
  394. data/grammars/source.rescript.json +1 -0
  395. data/grammars/source.rexx.json +1 -52
  396. data/grammars/source.ring.json +1 -247
  397. data/grammars/source.rpm-spec.json +1 -765
  398. data/grammars/source.ruby.gemfile.json +1 -24
  399. data/grammars/source.ruby.json +1 -2605
  400. data/grammars/source.ruby.rspec.cucumber.steps.json +1 -261
  401. data/grammars/source.rust.json +1 -629
  402. data/grammars/source.sas.json +1 -286
  403. data/grammars/source.sass.json +1 -1089
  404. data/grammars/source.sassdoc.json +1 -346
  405. data/grammars/source.scad.json +1 -145
  406. data/grammars/source.scala.json +1 -1121
  407. data/grammars/source.scaml.json +1 -451
  408. data/grammars/source.scheme.json +1 -353
  409. data/grammars/source.scilab.json +1 -96
  410. data/grammars/source.sdbl.json +1 -90
  411. data/grammars/source.sed.json +1 -1520
  412. data/grammars/source.shaderlab.json +1 -198
  413. data/grammars/source.shell.json +1 -1272
  414. data/grammars/source.shen.json +1 -143
  415. data/grammars/source.sieve.json +1 -383
  416. data/grammars/source.singularity.json +1 -0
  417. data/grammars/source.slice.json +1 -2755
  418. data/grammars/source.smali.json +1 -1610
  419. data/grammars/source.smalltalk.json +1 -187
  420. data/grammars/source.smpl.json +1 -314
  421. data/grammars/source.smt.json +1 -158
  422. data/grammars/source.solidity.json +1 -189
  423. data/grammars/source.solution.json +1 -0
  424. data/grammars/source.sourcepawn.json +1 -651
  425. data/grammars/source.sparql.json +1 -18
  426. data/grammars/source.spin.json +1 -916
  427. data/grammars/source.sqf.json +1 -111
  428. data/grammars/source.sql.json +1 -459
  429. data/grammars/source.ssh-config.json +1 -97
  430. data/grammars/source.stan.json +1 -388
  431. data/grammars/source.stata.json +1 -197
  432. data/grammars/source.stdbez.json +1 -0
  433. data/grammars/source.string-template.json +1 -0
  434. data/grammars/source.strings.json +1 -49
  435. data/grammars/source.stylus.json +1 -1018
  436. data/grammars/source.supercollider.json +1 -93
  437. data/grammars/source.svelte.json +1 -827
  438. data/grammars/source.swift.json +1 -3134
  439. data/grammars/source.sy.json +1 -2954
  440. data/grammars/source.systemverilog.json +1 -1036
  441. data/grammars/source.tags.json +1 -266
  442. data/grammars/source.tcl.json +1 -260
  443. data/grammars/source.tea.json +1 -174
  444. data/grammars/source.terra.json +1 -138
  445. data/grammars/source.terraform.json +1 -694
  446. data/grammars/source.thrift.json +1 -698
  447. data/grammars/source.tl.json +1 -259
  448. data/grammars/source.tla.json +1 -140
  449. data/grammars/source.tnsaudit.json +1 -256
  450. data/grammars/source.toc.json +1 -52
  451. data/grammars/source.toml.json +1 -426
  452. data/grammars/source.ts.json +1 -5581
  453. data/grammars/source.tsql.json +1 -507
  454. data/grammars/source.tsx.json +1 -5834
  455. data/grammars/source.turing.json +1 -1553
  456. data/grammars/source.turtle.json +1 -489
  457. data/grammars/source.txl.json +1 -48
  458. data/grammars/source.ucd.nameslist.json +1 -444
  459. data/grammars/source.ucd.unidata.json +1 -570
  460. data/grammars/source.ucfconstraints.json +1 -67
  461. data/grammars/source.ur.json +1 -31
  462. data/grammars/source.v.json +1 -1010
  463. data/grammars/source.vala.json +1 -800
  464. data/grammars/source.varnish.vcl.json +1 -331
  465. data/grammars/source.vbnet.json +1 -239
  466. data/grammars/source.verilog.json +1 -296
  467. data/grammars/source.vhdl.json +1 -1374
  468. data/grammars/source.vim-snippet.json +1 -645
  469. data/grammars/source.viml.json +1 -1197
  470. data/grammars/source.vtt.json +1 -702
  471. data/grammars/source.vyper.json +1 -213
  472. data/grammars/source.wavefront.mtl.json +1 -1190
  473. data/grammars/source.wavefront.obj.json +1 -1341
  474. data/grammars/source.wdl.json +1 -220
  475. data/grammars/source.webassembly.json +1 -349
  476. data/grammars/source.webidl.json +1 -807
  477. data/grammars/source.wgetrc.json +1 -1640
  478. data/grammars/source.wollok.json +1 -100
  479. data/grammars/source.wsd.json +1 -781
  480. data/grammars/source.x10.json +1 -64
  481. data/grammars/source.x86.json +1 -299
  482. data/grammars/source.x86asm.json +1 -42
  483. data/grammars/source.xc.json +1 -371
  484. data/grammars/source.xlfd.json +1 -462
  485. data/grammars/source.xojo.json +1 -85
  486. data/grammars/source.xq.json +1 -230
  487. data/grammars/source.xtend.json +1 -724
  488. data/grammars/source.yacc.json +1 -626
  489. data/grammars/source.yaml.json +1 -443
  490. data/grammars/source.yaml.salt.json +1 -345
  491. data/grammars/source.yang.json +1 -78
  492. data/grammars/source.yara.json +1 -99
  493. data/grammars/source.yasnippet.json +1 -377
  494. data/grammars/source.zap.json +1 -260
  495. data/grammars/source.zeek.json +1 -412
  496. data/grammars/source.zenscript.json +1 -282
  497. data/grammars/source.zig.json +1 -547
  498. data/grammars/source.zil.json +1 -750
  499. data/grammars/text.bibtex.json +1 -246
  500. data/grammars/text.browserslist.json +1 -0
  501. data/grammars/text.cfml.basic.json +1 -735
  502. data/grammars/text.checksums.json +1 -0
  503. data/grammars/text.codeowners.json +1 -0
  504. data/grammars/text.conllu.json +1 -45
  505. data/grammars/text.dfy.dafny.json +1 -188
  506. data/grammars/text.elixir.json +1 -52
  507. data/grammars/text.eml.basic.json +1 -296
  508. data/grammars/text.error-list.json +1 -53
  509. data/grammars/text.find-refs.json +1 -926
  510. data/grammars/text.gherkin.feature.json +1 -127
  511. data/grammars/text.haml.json +1 -518
  512. data/grammars/text.hamlc.json +1 -219
  513. data/grammars/text.html.asciidoc.json +1 -478
  514. data/grammars/text.html.asdoc.json +1 -529
  515. data/grammars/text.html.asp.json +1 -53
  516. data/grammars/text.html.basic.json +1 -908
  517. data/grammars/text.html.cfm.json +1 -802
  518. data/grammars/text.html.creole.json +1 -317
  519. data/grammars/text.html.cshtml.json +1 -356
  520. data/grammars/text.html.django.json +1 -63
  521. data/grammars/text.html.ecr.json +1 -48
  522. data/grammars/text.html.elixir.json +1 -21
  523. data/grammars/text.html.erb.json +1 -150
  524. data/grammars/text.html.erlang.yaws.json +1 -67
  525. data/grammars/text.html.factor.json +1 -19
  526. data/grammars/text.html.ftl.json +1 -76
  527. data/grammars/text.html.handlebars.json +1 -845
  528. data/grammars/text.html.javadoc.json +1 -426
  529. data/grammars/text.html.js.json +1 -24
  530. data/grammars/text.html.jsp.json +1 -1196
  531. data/grammars/text.html.liquid.json +1 -25
  532. data/grammars/text.html.mako.json +1 -726
  533. data/grammars/text.html.markdown.source.gfm.apib.json +1 -1298
  534. data/grammars/text.html.markdown.source.gfm.mson.json +1 -1156
  535. data/grammars/text.html.mediawiki.elm-build-output.json +1 -97
  536. data/grammars/text.html.mediawiki.elm-documentation.json +1 -17
  537. data/grammars/text.html.mediawiki.json +1 -946
  538. data/grammars/text.html.nunjucks.json +1 -0
  539. data/grammars/text.html.php.blade.json +1 -3833
  540. data/grammars/text.html.php.json +1 -2507
  541. data/grammars/text.html.riot.json +1 -788
  542. data/grammars/text.html.slash.json +1 -307
  543. data/grammars/text.html.smarty.json +1 -232
  544. data/grammars/text.html.soy.json +1 -606
  545. data/grammars/text.html.ssp.json +1 -43
  546. data/grammars/text.html.tcl.json +1 -37
  547. data/grammars/text.html.twig.json +1 -1344
  548. data/grammars/text.html.vue.json +1 -963
  549. data/grammars/text.idl-idldoc.json +1 -10
  550. data/grammars/text.jade.json +1 -963
  551. data/grammars/text.junit-test-report.json +1 -89
  552. data/grammars/text.log.latex.json +1 -84
  553. data/grammars/text.marko.json +1 -1662
  554. data/grammars/text.muse.json +1 -1471
  555. data/grammars/text.openbsd-pkg.desc.json +1 -78
  556. data/grammars/text.plain.json +1 -18
  557. data/grammars/text.python.console.json +1 -21
  558. data/grammars/text.python.traceback.json +1 -43
  559. data/grammars/text.rdoc.json +1 -44
  560. data/grammars/text.restructuredtext.clean.json +1 -24
  561. data/grammars/text.restructuredtext.json +1 -1765
  562. data/grammars/text.robot.json +1 -63
  563. data/grammars/text.robots-txt.json +1 -0
  564. data/grammars/text.roff.json +1 -6927
  565. data/grammars/text.rtf.json +1 -148
  566. data/grammars/text.runoff.json +1 -308
  567. data/grammars/text.sfd.json +1 -292
  568. data/grammars/text.shell-session.json +1 -29
  569. data/grammars/text.slim.json +1 -527
  570. data/grammars/text.srt.json +1 -166
  571. data/grammars/text.tex.json +1 -264
  572. data/grammars/text.tex.latex.beamer.json +1 -57
  573. data/grammars/text.tex.latex.haskell.json +1 -1826
  574. data/grammars/text.tex.latex.json +1 -1003
  575. data/grammars/text.tex.latex.memoir.json +1 -129
  576. data/grammars/text.tex.latex.rd.json +1 -111
  577. data/grammars/text.texinfo.json +1 -1525
  578. data/grammars/text.vim-help.json +1 -383
  579. data/grammars/text.xml.ant.json +1 -195
  580. data/grammars/text.xml.flex-config.json +1 -2628
  581. data/grammars/text.xml.genshi.json +1 -28
  582. data/grammars/text.xml.json +1 -351
  583. data/grammars/text.xml.plist.json +1 -664
  584. data/grammars/text.xml.pom.json +1 -769
  585. data/grammars/text.xml.svg.json +1 -562
  586. data/grammars/text.xml.xsl.json +1 -88
  587. data/grammars/text.zone_file.json +1 -67
  588. data/grammars/version +1 -1
  589. data/lib/linguist/VERSION +1 -1
  590. data/lib/linguist/classifier.rb +9 -5
  591. data/lib/linguist/generated.rb +10 -0
  592. data/lib/linguist/generic.yml +18 -0
  593. data/lib/linguist/heuristics.yml +77 -20
  594. data/lib/linguist/language.rb +7 -17
  595. data/lib/linguist/languages.json +1 -1
  596. data/lib/linguist/languages.yml +271 -49
  597. data/lib/linguist/linguist.bundle +0 -0
  598. data/lib/linguist/samples.json +1 -1
  599. data/lib/linguist/samples.rb +2 -2
  600. data/lib/linguist/strategy/extension.rb +13 -5
  601. data/lib/linguist/strategy/modeline.rb +64 -32
  602. data/lib/linguist/vendor.yml +1 -1
  603. metadata +37 -13
  604. data/ext/linguist/strndup.c +0 -10
  605. data/grammars/source.cake.json +0 -13
  606. data/grammars/source.csx.json +0 -13
  607. data/grammars/source.js.css.json +0 -328
  608. data/grammars/source.js.jsx.json +0 -2488
  609. data/grammars/source.perl6fe.json +0 -2769
  610. data/grammars/source.quoting.perl6fe.json +0 -2369
  611. data/grammars/source.regexp.perl6fe.json +0 -244
@@ -1,14 +1 @@
1
- {
2
- "scopeName": "source.reason.hover.type",
3
- "patterns": [
4
- {
5
- "include": "source.reason#signature-expression"
6
- },
7
- {
8
- "include": "source.reason#module-item-type"
9
- },
10
- {
11
- "include": "source.reason#type-expression"
12
- }
13
- ]
14
- }
1
+ {"scopeName":"source.reason.hover.type","patterns":[{"include":"source.reason#signature-expression"},{"include":"source.reason#module-item-type"},{"include":"source.reason#type-expression"}]}
@@ -1,3382 +1 @@
1
- {
2
- "name": "Reason",
3
- "scopeName": "source.reason",
4
- "patterns": [
5
- {
6
- "include": "#structure-expression-block-item"
7
- },
8
- {
9
- "include": "#value-expression"
10
- }
11
- ],
12
- "repository": {
13
- "attribute": {
14
- "begin": "(?=\\[(@{1,3})[[:space:]]*[[:alpha:]])",
15
- "end": "\\]",
16
- "patterns": [
17
- {
18
- "begin": "\\[(@{1,3})",
19
- "end": "(?=[^_\\.'[:word:]])",
20
- "patterns": [
21
- {
22
- "include": "#attribute-identifier"
23
- }
24
- ],
25
- "beginCaptures": {
26
- "1": {
27
- "name": "keyword.control.less"
28
- }
29
- }
30
- },
31
- {
32
- "include": "#attribute-payload"
33
- }
34
- ]
35
- },
36
- "attribute-identifier": {
37
- "patterns": [
38
- {
39
- "match": "\\b([[:alpha:]][[:word:]]*)\\b[[:space:]]*(?:(\\.))",
40
- "captures": {
41
- "1": {
42
- "name": "support.class entity.name.class"
43
- },
44
- "2": {
45
- "name": "keyword.control.less"
46
- }
47
- }
48
- },
49
- {
50
- "name": "entity.other.attribute-name.css constant.language constant.numeric",
51
- "match": "\\b([[:alpha:]][[:word:]]*)\\b"
52
- }
53
- ]
54
- },
55
- "attribute-payload": {
56
- "patterns": [
57
- {
58
- "begin": "(:)",
59
- "end": "(?=\\])",
60
- "patterns": [
61
- {
62
- "include": "#structure-expression"
63
- },
64
- {
65
- "include": "#module-item-type"
66
- },
67
- {
68
- "include": "#type-expression"
69
- }
70
- ],
71
- "beginCaptures": {
72
- "1": {
73
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
74
- }
75
- }
76
- },
77
- {
78
- "begin": "([\\?])",
79
- "end": "(?=\\])",
80
- "patterns": [
81
- {
82
- "include": "#pattern-guard"
83
- },
84
- {
85
- "include": "#pattern"
86
- }
87
- ],
88
- "beginCaptures": {
89
- "1": {
90
- "name": "keyword.control.less"
91
- }
92
- }
93
- },
94
- {
95
- "include": "#structure-expression-block-item"
96
- },
97
- {
98
- "include": "#value-expression"
99
- }
100
- ]
101
- },
102
- "class-item-inherit": {
103
- "begin": "\\b(inherit)\\b",
104
- "end": "(;)|(?=}|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)",
105
- "patterns": [
106
- {
107
- "include": "#value-expression"
108
- }
109
- ],
110
- "beginCaptures": {
111
- "1": {
112
- "name": "keyword.other"
113
- }
114
- },
115
- "endCaptures": {
116
- "1": {
117
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
118
- }
119
- }
120
- },
121
- "class-item-method": {
122
- "begin": "\\b(method)\\b",
123
- "end": "(;)|(?=}|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|type|val|with)\\b)",
124
- "patterns": [
125
- {
126
- "include": "#module-item-let-value-bind-name-params-type-body"
127
- }
128
- ],
129
- "beginCaptures": {
130
- "1": {
131
- "name": "storage.type"
132
- }
133
- },
134
- "endCaptures": {
135
- "1": {
136
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
137
- }
138
- }
139
- },
140
- "comment": {
141
- "patterns": [
142
- {
143
- "include": "#comment-line"
144
- },
145
- {
146
- "include": "#comment-block-doc"
147
- },
148
- {
149
- "include": "#comment-block"
150
- }
151
- ]
152
- },
153
- "comment-block": {
154
- "name": "comment.block",
155
- "begin": "/\\*",
156
- "end": "\\*/",
157
- "beginCaptures": {
158
- "0": {
159
- "name": "punctuation.definition.comment.begin"
160
- }
161
- },
162
- "endCaptures": {
163
- "0": {
164
- "name": "punctuation.definition.comment.end"
165
- }
166
- }
167
- },
168
- "comment-block-doc": {
169
- "name": "comment.block.documentation",
170
- "begin": "/\\*\\*(?!/)",
171
- "end": "\\*/",
172
- "beginCaptures": {
173
- "0": {
174
- "name": "punctuation.definition.comment.begin"
175
- }
176
- },
177
- "endCaptures": {
178
- "0": {
179
- "name": "punctuation.definition.comment.end"
180
- }
181
- }
182
- },
183
- "comment-line": {
184
- "name": "comment.line.double-slash",
185
- "begin": "(^[ \\t]+)?(//)",
186
- "end": "$",
187
- "beginCaptures": {
188
- "1": {
189
- "name": "punctuation.whitespace.leading"
190
- },
191
- "2": {
192
- "name": "punctuation.definition.comment"
193
- }
194
- }
195
- },
196
- "condition-lhs": {
197
- "begin": "(?\u003c![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\])([\\?])(?![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\])",
198
- "end": "(?=[\\)])",
199
- "patterns": [
200
- {
201
- "name": "keyword.control message.error variable.interpolation",
202
- "match": "(?:\\b|[[:space:]]+)([?])(?:\\b|[[:space:]]+)"
203
- },
204
- {
205
- "include": "#value-expression"
206
- }
207
- ],
208
- "beginCaptures": {
209
- "1": {
210
- "name": "keyword.control message.error variable.interpolation"
211
- }
212
- }
213
- },
214
- "extension-node": {
215
- "begin": "(?=\\[(%{1,3})[[:space:]]*[[:alpha:]])",
216
- "end": "\\]",
217
- "patterns": [
218
- {
219
- "begin": "\\[(%{1,3})",
220
- "end": "(?=[^_\\.'[:word:]])",
221
- "patterns": [
222
- {
223
- "include": "#attribute-identifier"
224
- }
225
- ],
226
- "beginCaptures": {
227
- "1": {
228
- "name": "keyword.control.less"
229
- }
230
- }
231
- },
232
- {
233
- "include": "#attribute-payload"
234
- }
235
- ]
236
- },
237
- "jsx": {
238
- "patterns": [
239
- {
240
- "include": "#jsx-head"
241
- },
242
- {
243
- "include": "#jsx-tail"
244
- }
245
- ]
246
- },
247
- "jsx-attributes": {
248
- "patterns": [
249
- {
250
- "begin": "\\b([[:lower:]][[:word:]]*)\\b[[:space:]]*(=)",
251
- "end": "(?\u003c![=])(?=[/\u003e[:lower:]])",
252
- "patterns": [
253
- {
254
- "include": "#value-expression-atomic-with-paths"
255
- }
256
- ],
257
- "beginCaptures": {
258
- "1": {
259
- "name": "markup.inserted constant.language support.property-value entity.name.filename"
260
- },
261
- "2": {
262
- "name": "keyword.control.less"
263
- }
264
- }
265
- },
266
- {
267
- "match": "(\\b([[:lower:]][[:word:]]*)\\b[[:space:]]*+)",
268
- "captures": {
269
- "1": {},
270
- "2": {
271
- "name": "markup.inserted constant.language support.property-value entity.name.filename"
272
- }
273
- }
274
- }
275
- ]
276
- },
277
- "jsx-body": {
278
- "begin": "((\u003e))",
279
- "end": "(?=\u003c/)",
280
- "patterns": [
281
- {
282
- "match": "[[:lower:]][[:word:]]*"
283
- },
284
- {
285
- "include": "#value-expression"
286
- }
287
- ],
288
- "beginCaptures": {
289
- "1": {},
290
- "2": {
291
- "name": "punctuation.definition.tag.end.js"
292
- }
293
- }
294
- },
295
- "jsx-head": {
296
- "begin": "((\u003c))(?=[_[:alpha:]])",
297
- "end": "((/\u003e))|(?=\u003c/)",
298
- "patterns": [
299
- {
300
- "begin": "\\G",
301
- "end": "(?=[[:space:]/\u003e])[[:space:]]*+",
302
- "patterns": [
303
- {
304
- "include": "#module-path-simple"
305
- },
306
- {
307
- "name": "entity.name.tag.inline.any.html",
308
- "match": "\\b[[:lower:]][[:word:]]*\\b"
309
- }
310
- ]
311
- },
312
- {
313
- "include": "#jsx-attributes"
314
- },
315
- {
316
- "include": "#jsx-body"
317
- },
318
- {
319
- "include": "#comment"
320
- }
321
- ],
322
- "beginCaptures": {
323
- "1": {},
324
- "2": {
325
- "name": "punctuation.definition.tag.begin.js"
326
- }
327
- },
328
- "endCaptures": {
329
- "1": {},
330
- "2": {
331
- "name": "punctuation.definition.tag.end.js"
332
- }
333
- },
334
- "applyEndPatternLast": true
335
- },
336
- "jsx-tail": {
337
- "begin": "\\G(/\u003e)|(\u003c/)",
338
- "end": "(\u003e)",
339
- "patterns": [
340
- {
341
- "include": "#module-path-simple"
342
- },
343
- {
344
- "name": "entity.name.tag.inline.any.html",
345
- "match": "\\b[[:lower:]][[:word:]]*\\b"
346
- }
347
- ],
348
- "beginCaptures": {
349
- "1": {
350
- "name": "punctuation.definition.tag.end.js"
351
- },
352
- "2": {
353
- "name": "punctuation.definition.tag.begin.js"
354
- }
355
- },
356
- "endCaptures": {
357
- "1": {
358
- "name": "punctuation.definition.tag.end.js"
359
- }
360
- },
361
- "applyEndPatternLast": true
362
- },
363
- "module-item-class-type": {
364
- "begin": "\\b(class)\\b",
365
- "end": "(;)|(?=}|\\b(and|class|constraint|exception|external|include|module|nonrec|open|private|rec|type|val|with)\\b)",
366
- "patterns": [
367
- {
368
- "begin": "(?:\\G|^)[[:space:]]*\\b(type)\\b",
369
- "end": "(?==)",
370
- "patterns": [
371
- {
372
- "include": "#module-item-type-bind-name-tyvars"
373
- }
374
- ],
375
- "beginCaptures": {
376
- "1": {
377
- "name": "entity.other.attribute-name.css constant.language constant.numeric"
378
- }
379
- }
380
- },
381
- {
382
- "begin": "(=)",
383
- "end": "(?=;)",
384
- "patterns": [
385
- {
386
- "include": "#attribute"
387
- },
388
- {
389
- "include": "#comment"
390
- },
391
- {
392
- "include": "#class-item-inherit"
393
- },
394
- {
395
- "include": "#class-item-method"
396
- }
397
- ],
398
- "beginCaptures": {
399
- "1": {
400
- "name": "keyword.control.less"
401
- }
402
- }
403
- }
404
- ],
405
- "beginCaptures": {
406
- "1": {
407
- "name": "keyword.other"
408
- }
409
- },
410
- "endCaptures": {
411
- "1": {
412
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
413
- }
414
- }
415
- },
416
- "module-item-exception": {
417
- "begin": "\\b(exception)\\b",
418
- "end": "(;)|(?=}|\\b(class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|type|val|with)\\b)",
419
- "patterns": [
420
- {
421
- "include": "#module-item-type-bind-body-item"
422
- }
423
- ],
424
- "beginCaptures": {
425
- "1": {
426
- "name": "keyword.other"
427
- }
428
- },
429
- "endCaptures": {
430
- "1": {
431
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
432
- }
433
- }
434
- },
435
- "module-item-external": {
436
- "begin": "\\b(external)\\b",
437
- "end": "(;)|(?=}|\\b(class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|type|val|with)\\b)",
438
- "patterns": [
439
- {
440
- "include": "#module-item-let-value-bind-name-or-pattern"
441
- },
442
- {
443
- "include": "#module-item-let-value-bind-type"
444
- },
445
- {
446
- "begin": "(=)",
447
- "end": "(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)",
448
- "patterns": [
449
- {
450
- "include": "#attribute"
451
- },
452
- {
453
- "name": "string.double string.regexp",
454
- "begin": "\"",
455
- "end": "\"",
456
- "patterns": [
457
- {
458
- "include": "#value-literal-string-escape"
459
- },
460
- {
461
- "match": "(?:(%)(.*?)|(caml.*?))(?=\"|(?:[^\\\\\\n]$))",
462
- "captures": {
463
- "1": {
464
- "name": "entity.other.attribute-name.css constant.language constant.numeric"
465
- },
466
- "2": {
467
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
468
- },
469
- "3": {
470
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
471
- }
472
- }
473
- }
474
- ]
475
- }
476
- ],
477
- "beginCaptures": {
478
- "1": {
479
- "name": "keyword.control.less"
480
- }
481
- }
482
- }
483
- ],
484
- "beginCaptures": {
485
- "1": {
486
- "name": "storage.type"
487
- }
488
- },
489
- "endCaptures": {
490
- "1": {
491
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
492
- }
493
- }
494
- },
495
- "module-item-include": {
496
- "begin": "\\b(include)\\b",
497
- "end": "(;)|(?=}|\\b(class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|type|val)\\b)",
498
- "patterns": [
499
- {
500
- "include": "#signature-expression"
501
- }
502
- ],
503
- "beginCaptures": {
504
- "1": {
505
- "name": "keyword.control.include"
506
- }
507
- },
508
- "endCaptures": {
509
- "1": {
510
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
511
- }
512
- }
513
- },
514
- "module-item-let": {
515
- "begin": "\\b(let)\\b",
516
- "end": "(;)|(?=}|\\b(class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|type|val|with)\\b)",
517
- "patterns": [
518
- {
519
- "include": "#module-item-let-module"
520
- },
521
- {
522
- "include": "#module-item-let-value"
523
- }
524
- ],
525
- "beginCaptures": {
526
- "1": {
527
- "name": "storage.type"
528
- }
529
- },
530
- "endCaptures": {
531
- "1": {
532
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
533
- }
534
- }
535
- },
536
- "module-item-let-module": {
537
- "begin": "(?:\\G|^)[[:space:]]*\\b(module)\\b",
538
- "end": "(?=[;}]|\\b(class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|type|val|with)\\b)",
539
- "patterns": [
540
- {
541
- "include": "#comment"
542
- },
543
- {
544
- "include": "#module-item-let-module-and"
545
- },
546
- {
547
- "include": "#module-item-let-module-rec"
548
- },
549
- {
550
- "include": "#module-item-let-module-bind-name-params-type-body"
551
- }
552
- ],
553
- "beginCaptures": {
554
- "1": {
555
- "name": "variable.other.class.js variable.interpolation keyword.control storage.type message.error"
556
- }
557
- }
558
- },
559
- "module-item-let-module-and": {
560
- "begin": "\\b(and)\\b",
561
- "end": "(?=[;}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)",
562
- "patterns": [
563
- {
564
- "include": "#module-item-let-module-bind-name-params-type-body"
565
- }
566
- ],
567
- "beginCaptures": {
568
- "1": {
569
- "name": "storage.type"
570
- }
571
- }
572
- },
573
- "module-item-let-module-bind-body": {
574
- "begin": "(=\u003e?)",
575
- "end": "(?=[;}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)",
576
- "patterns": [
577
- {
578
- "include": "#structure-expression"
579
- }
580
- ],
581
- "beginCaptures": {
582
- "1": {
583
- "name": "keyword.control.less"
584
- }
585
- }
586
- },
587
- "module-item-let-module-bind-name-params": {
588
- "begin": "\\b([[:upper:]][[:word:]]*)\\b",
589
- "end": "(?=[;:}=]|\\b(class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)",
590
- "patterns": [
591
- {
592
- "include": "#comment"
593
- },
594
- {
595
- "include": "#module-item-let-module-param"
596
- }
597
- ],
598
- "beginCaptures": {
599
- "1": {
600
- "name": "support.class entity.name.class"
601
- }
602
- }
603
- },
604
- "module-item-let-module-bind-name-params-type-body": {
605
- "begin": "(?:\\G|^)",
606
- "end": "(?=[;}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)",
607
- "patterns": [
608
- {
609
- "include": "#comment"
610
- },
611
- {
612
- "include": "#module-item-let-module-bind-name-params"
613
- },
614
- {
615
- "include": "#module-item-let-module-bind-type"
616
- },
617
- {
618
- "include": "#module-item-let-module-bind-body"
619
- }
620
- ]
621
- },
622
- "module-item-let-module-bind-type": {
623
- "begin": "(:)",
624
- "end": "(?=[;}=]|\\b(and|class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|rec|type|val)\\b)",
625
- "patterns": [
626
- {
627
- "include": "#signature-expression"
628
- }
629
- ],
630
- "beginCaptures": {
631
- "1": {
632
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
633
- }
634
- }
635
- },
636
- "module-item-let-module-param": {
637
- "begin": "(?=\\()",
638
- "end": "\\)",
639
- "patterns": [
640
- {
641
- "begin": "\\(",
642
- "end": "(?=[:])",
643
- "patterns": [
644
- {
645
- "include": "#comment"
646
- },
647
- {
648
- "include": "#module-name-simple"
649
- }
650
- ]
651
- },
652
- {
653
- "begin": "(:)",
654
- "end": "(?=\\))",
655
- "patterns": [
656
- {
657
- "include": "#signature-expression"
658
- }
659
- ],
660
- "beginCaptures": {
661
- "1": {
662
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
663
- }
664
- }
665
- }
666
- ]
667
- },
668
- "module-item-let-module-rec": {
669
- "begin": "(?:\\G|^)[[:space:]]*\\b(rec)\\b",
670
- "end": "(?=[;}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)",
671
- "patterns": [
672
- {
673
- "include": "#module-item-let-module-bind-name-params-type-body"
674
- }
675
- ],
676
- "beginCaptures": {
677
- "1": {
678
- "name": "keyword.control storage.modifier.rec"
679
- }
680
- }
681
- },
682
- "module-item-let-value": {
683
- "patterns": [
684
- {
685
- "include": "#module-item-let-value-and"
686
- },
687
- {
688
- "include": "#module-item-let-value-rec"
689
- },
690
- {
691
- "include": "#module-item-let-value-bind-name-params-type-body"
692
- }
693
- ]
694
- },
695
- "module-item-let-value-and": {
696
- "begin": "\\b(and)\\b",
697
- "end": "(?=[;}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)",
698
- "patterns": [
699
- {
700
- "include": "#module-item-let-value-bind-name-params-type-body"
701
- }
702
- ],
703
- "beginCaptures": {
704
- "1": {
705
- "name": "storage.type"
706
- }
707
- }
708
- },
709
- "module-item-let-value-bind-body": {
710
- "begin": "(=\u003e?)",
711
- "end": "(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)",
712
- "patterns": [
713
- {
714
- "include": "#value-expression"
715
- }
716
- ],
717
- "beginCaptures": {
718
- "1": {
719
- "name": "keyword.control.less"
720
- }
721
- }
722
- },
723
- "module-item-let-value-bind-name-or-pattern": {
724
- "begin": "(?\u003c=[^[:word:]]and|^and|[^[:word:]]external|^external|[^[:word:]]let|^let|[^[:word:]]method|^method|[^[:word:]]rec|^rec)[[:space:]]*",
725
- "end": "(?\u003c=[^[:space:]])|(?=[[:space:]]|[;:}=]|\\b(and|as|class|constraint|exception|external|for|include|inherit|let|method|module|nonrec|open|private|rec|switch|try|type|val|while|with)\\b)",
726
- "patterns": [
727
- {
728
- "include": "#comment"
729
- },
730
- {
731
- "match": "\\b(?:([_][[:word:]]+)|([[:lower:]][[:word:]]*))\\b",
732
- "captures": {
733
- "1": {
734
- "name": "comment"
735
- },
736
- "2": {
737
- "name": "entity.name.function"
738
- }
739
- }
740
- },
741
- {
742
- "include": "#module-item-let-value-bind-parens-params"
743
- },
744
- {
745
- "include": "#pattern"
746
- }
747
- ]
748
- },
749
- "module-item-let-value-bind-name-params-type-body": {
750
- "begin": "(?\u003c=[^[:word:]]and|^and|[^[:word:]]external|^external|[^[:word:]]let|^let|[^[:word:]]method|^method|[^[:word:]]rec|^rec)",
751
- "end": "(?=[;}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)",
752
- "patterns": [
753
- {
754
- "begin": "(::)",
755
- "end": "(?\u003c=[[:space:]])",
756
- "patterns": [
757
- {
758
- "include": "#pattern"
759
- },
760
- {
761
- "begin": "(=)",
762
- "end": "(\\?)|(?\u003c=[^[:space:]=][[:space:]])(?=[[:space:]]*+[^\\.])",
763
- "patterns": [
764
- {
765
- "include": "#value-expression-atomic-with-paths"
766
- }
767
- ],
768
- "beginCaptures": {
769
- "1": {
770
- "name": "markup.inserted keyword.control.less message.error"
771
- }
772
- },
773
- "endCaptures": {
774
- "1": {
775
- "name": "storage.type"
776
- }
777
- }
778
- }
779
- ],
780
- "beginCaptures": {
781
- "1": {
782
- "name": "keyword.control"
783
- }
784
- }
785
- },
786
- {
787
- "include": "#module-item-let-value-bind-name-or-pattern"
788
- },
789
- {
790
- "include": "#module-item-let-value-bind-params-type"
791
- },
792
- {
793
- "include": "#module-item-let-value-bind-type"
794
- },
795
- {
796
- "include": "#module-item-let-value-bind-body"
797
- }
798
- ]
799
- },
800
- "module-item-let-value-bind-params-type": {
801
- "begin": "(?=[^[:space:]:=])",
802
- "end": "(?=[;}=]|\\b(class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)",
803
- "patterns": [
804
- {
805
- "include": "#comment"
806
- },
807
- {
808
- "include": "#module-item-let-value-param"
809
- },
810
- {
811
- "begin": "(?\u003c![:])(:)[[:space:]]*(?![[:space:]]*[:\\)])",
812
- "end": "(?=[;}=]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|val|with)\\b)",
813
- "patterns": [
814
- {
815
- "include": "#type-expression-atomic"
816
- }
817
- ],
818
- "beginCaptures": {
819
- "1": {
820
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
821
- }
822
- }
823
- }
824
- ]
825
- },
826
- "module-item-let-value-bind-parens-params": {
827
- "begin": "\\((?![\\)])",
828
- "end": "\\)",
829
- "patterns": [
830
- {
831
- "include": "#operator"
832
- },
833
- {
834
- "include": "#pattern-parens-lhs"
835
- },
836
- {
837
- "include": "#type-annotation-rhs"
838
- },
839
- {
840
- "include": "#pattern"
841
- }
842
- ]
843
- },
844
- "module-item-let-value-bind-pattern": {
845
- "begin": "(?\u003c=[^[:word:]]and|^and|[^[:word:]]external|^external|[^[:word:]]let|^let|[^[:word:]]method|^method|[^[:word:]]rec|^rec)",
846
- "end": "(?=[;:}=]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)",
847
- "patterns": [
848
- {
849
- "include": "#comment"
850
- },
851
- {
852
- "include": "#module-item-let-value-bind-parens-params"
853
- },
854
- {
855
- "include": "#pattern"
856
- }
857
- ]
858
- },
859
- "module-item-let-value-bind-type": {
860
- "begin": "(?\u003c![:])(:)(?![[:space:]]*[:\\)])",
861
- "end": "(?==[^\u003e]|[;}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|val|with)\\b)",
862
- "patterns": [
863
- {
864
- "begin": "\\b(type)\\b",
865
- "end": "([\\.])",
866
- "patterns": [
867
- {
868
- "include": "#pattern-variable"
869
- }
870
- ],
871
- "beginCaptures": {
872
- "1": {
873
- "name": "entity.other.attribute-name.css constant.language constant.numeric"
874
- }
875
- },
876
- "endCaptures": {
877
- "1": {
878
- "name": "entity.name.function"
879
- }
880
- }
881
- },
882
- {
883
- "include": "#type-expression"
884
- }
885
- ],
886
- "beginCaptures": {
887
- "1": {
888
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
889
- }
890
- }
891
- },
892
- "module-item-let-value-param": {
893
- "patterns": [
894
- {
895
- "include": "#module-item-let-value-param-label"
896
- },
897
- {
898
- "include": "#module-item-let-value-param-type"
899
- },
900
- {
901
- "include": "#module-item-let-value-param-module"
902
- },
903
- {
904
- "include": "#pattern"
905
- }
906
- ]
907
- },
908
- "module-item-let-value-param-label": {
909
- "patterns": [
910
- {
911
- "begin": "(\\b[[:lower:]][[:word:]]*\\b)?[[:space:]]*(::)",
912
- "end": "(?\u003c=[[:space:]])",
913
- "patterns": [
914
- {
915
- "include": "#pattern"
916
- },
917
- {
918
- "begin": "(=)",
919
- "end": "(\\?)|(?\u003c=[^[:space:]=][[:space:]])(?=[[:space:]]*+[^\\.])",
920
- "patterns": [
921
- {
922
- "include": "#value-expression-atomic-with-paths"
923
- }
924
- ],
925
- "beginCaptures": {
926
- "1": {
927
- "name": "markup.inserted keyword.control.less message.error"
928
- }
929
- },
930
- "endCaptures": {
931
- "1": {
932
- "name": "storage.type"
933
- }
934
- }
935
- }
936
- ],
937
- "beginCaptures": {
938
- "1": {
939
- "name": "markup.inserted constant.language support.property-value entity.name.filename"
940
- },
941
- "2": {
942
- "name": "keyword.control"
943
- }
944
- }
945
- }
946
- ]
947
- },
948
- "module-item-let-value-param-module": {
949
- "begin": "\\([[:space:]]*(?=\\b(module)\\b)",
950
- "end": "\\)",
951
- "patterns": [
952
- {
953
- "begin": "\\b(module)\\b",
954
- "end": "(?=\\))",
955
- "patterns": [
956
- {
957
- "name": "support.class entity.name.class",
958
- "match": "\\b[[:upper:]][[:word:]]*\\b"
959
- }
960
- ],
961
- "beginCaptures": {
962
- "1": {
963
- "name": "keyword.other message.error"
964
- }
965
- }
966
- }
967
- ]
968
- },
969
- "module-item-let-value-param-type": {
970
- "begin": "\\((?=\\b(type)\\b)",
971
- "end": "\\)",
972
- "patterns": [
973
- {
974
- "begin": "\\b(type)\\b",
975
- "end": "(?=\\))",
976
- "patterns": [
977
- {
978
- "include": "#pattern-variable"
979
- }
980
- ],
981
- "beginCaptures": {
982
- "1": {
983
- "name": "entity.other.attribute-name.css constant.language constant.numeric"
984
- }
985
- }
986
- }
987
- ]
988
- },
989
- "module-item-let-value-rec": {
990
- "begin": "(?:\\G|^)[[:space:]]*\\b(rec)\\b",
991
- "end": "(?=[;}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)",
992
- "patterns": [
993
- {
994
- "include": "#module-item-let-value-bind-name-params-type-body"
995
- }
996
- ],
997
- "beginCaptures": {
998
- "1": {
999
- "name": "keyword.control storage.modifier message.error"
1000
- }
1001
- }
1002
- },
1003
- "module-item-module": {
1004
- "begin": "\\b(module)\\b[[:space:]]*(?!\\b(type)\\b|$)",
1005
- "end": "(;)|(?=}|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)",
1006
- "patterns": [
1007
- {
1008
- "include": "#module-item-let-module-and"
1009
- },
1010
- {
1011
- "include": "#module-item-let-module-rec"
1012
- },
1013
- {
1014
- "include": "#module-item-let-module-bind-name-params-type-body"
1015
- }
1016
- ],
1017
- "beginCaptures": {
1018
- "1": {
1019
- "name": "storage.type message.error"
1020
- }
1021
- },
1022
- "endCaptures": {
1023
- "1": {
1024
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
1025
- }
1026
- }
1027
- },
1028
- "module-item-module-type": {
1029
- "begin": "\\b(module)\\b[[:space:]]*(?=\\b(type)\\b|$)",
1030
- "end": "(;)|(?=}|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|val|with)\\b)",
1031
- "patterns": [
1032
- {
1033
- "begin": "(?:\\G|^)[[:space:]]*\\b(type)\\b",
1034
- "end": "(?==)",
1035
- "patterns": [
1036
- {
1037
- "include": "#comment"
1038
- },
1039
- {
1040
- "match": "([[:upper:]][[:word:]]*)",
1041
- "captures": {
1042
- "1": {
1043
- "name": "support.class entity.name.class"
1044
- }
1045
- }
1046
- }
1047
- ],
1048
- "beginCaptures": {
1049
- "1": {
1050
- "name": "entity.other.attribute-name.css constant.language constant.numeric"
1051
- }
1052
- }
1053
- },
1054
- {
1055
- "begin": "(=)",
1056
- "end": "(?=;)",
1057
- "patterns": [
1058
- {
1059
- "include": "#comment"
1060
- },
1061
- {
1062
- "include": "#signature-expression"
1063
- }
1064
- ],
1065
- "beginCaptures": {
1066
- "1": {
1067
- "name": "keyword.control.less"
1068
- }
1069
- }
1070
- }
1071
- ],
1072
- "beginCaptures": {
1073
- "1": {
1074
- "name": "keyword.control message.error"
1075
- }
1076
- },
1077
- "endCaptures": {
1078
- "1": {
1079
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
1080
- }
1081
- }
1082
- },
1083
- "module-item-open": {
1084
- "begin": "\\b(open)\\b",
1085
- "end": "(;)|(?=}|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)",
1086
- "patterns": [
1087
- {
1088
- "include": "#comment"
1089
- },
1090
- {
1091
- "include": "#module-path-simple"
1092
- }
1093
- ],
1094
- "beginCaptures": {
1095
- "1": {
1096
- "name": "keyword.control.open"
1097
- }
1098
- },
1099
- "endCaptures": {
1100
- "1": {
1101
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
1102
- }
1103
- }
1104
- },
1105
- "module-item-type": {
1106
- "begin": "\\b(type)\\b",
1107
- "end": "(;)|(?=[\\)}]|\\b(class|exception|external|include|inherit|let|method|nonrec|open|private|type|val|with)\\b)",
1108
- "patterns": [
1109
- {
1110
- "include": "#module-item-type-and"
1111
- },
1112
- {
1113
- "include": "#module-item-type-constraint"
1114
- },
1115
- {
1116
- "include": "#module-item-type-bind"
1117
- }
1118
- ],
1119
- "beginCaptures": {
1120
- "1": {
1121
- "name": "keyword.other"
1122
- }
1123
- },
1124
- "endCaptures": {
1125
- "1": {
1126
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
1127
- }
1128
- }
1129
- },
1130
- "module-item-type-and": {
1131
- "begin": "\\b(and)\\b([[:space:]]*type)?",
1132
- "end": "(?=[;\\)}]|\\b(class|exception|external|include|inherit|let|method|nonrec|open|private|type|val|with)\\b)",
1133
- "patterns": [
1134
- {
1135
- "include": "#module-item-type-bind-name-tyvars-body"
1136
- }
1137
- ],
1138
- "beginCaptures": {
1139
- "1": {
1140
- "name": "keyword.other"
1141
- },
1142
- "2": {
1143
- "name": "entity.other.attribute-name.css constant.language constant.numeric"
1144
- }
1145
- }
1146
- },
1147
- "module-item-type-bind": {
1148
- "patterns": [
1149
- {
1150
- "include": "#module-item-type-bind-nonrec"
1151
- },
1152
- {
1153
- "include": "#module-item-type-bind-name-tyvars-body"
1154
- }
1155
- ]
1156
- },
1157
- "module-item-type-bind-body": {
1158
- "begin": "(\\+?=)",
1159
- "end": "(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|rec|type|val|with)\\b)",
1160
- "patterns": [
1161
- {
1162
- "include": "#module-item-type-bind-body-item"
1163
- }
1164
- ],
1165
- "beginCaptures": {
1166
- "1": {
1167
- "name": "keyword.control.less"
1168
- }
1169
- }
1170
- },
1171
- "module-item-type-bind-body-item": {
1172
- "patterns": [
1173
- {
1174
- "match": "(=)(?!\u003e)|\\b(private)\\b",
1175
- "captures": {
1176
- "1": {
1177
- "name": "keyword.control.less"
1178
- },
1179
- "2": {
1180
- "name": "variable.other.class.js variable.interpolation storage.modifier message.error"
1181
- }
1182
- }
1183
- },
1184
- {
1185
- "match": "\\b([[:upper:]][[:word:]]*)\\b(?![[:space:]]*[\\.\\(])",
1186
- "captures": {
1187
- "1": {
1188
- "name": "entity.other.attribute-name.css constant.language constant.numeric"
1189
- }
1190
- }
1191
- },
1192
- {
1193
- "begin": "(\\.\\.)",
1194
- "end": "(?=[;}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)",
1195
- "beginCaptures": {
1196
- "1": {
1197
- "name": "keyword.control.less"
1198
- }
1199
- }
1200
- },
1201
- {
1202
- "begin": "(\\|)(?![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\])[[:space:]]*",
1203
- "end": "(?=[;\\)}]|\\|(?![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\])|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)",
1204
- "patterns": [
1205
- {
1206
- "include": "#value-expression-constructor"
1207
- },
1208
- {
1209
- "match": "([:])|\\b(of)\\b",
1210
- "captures": {
1211
- "1": {
1212
- "name": "keyword.control.less"
1213
- },
1214
- "2": {
1215
- "name": "keyword.other"
1216
- }
1217
- }
1218
- },
1219
- {
1220
- "include": "#type-expression"
1221
- }
1222
- ],
1223
- "beginCaptures": {
1224
- "1": {
1225
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
1226
- }
1227
- }
1228
- },
1229
- {
1230
- "match": "(:)|(\\|(?![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\]))|\\b(of)\\b",
1231
- "captures": {
1232
- "1": {
1233
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
1234
- },
1235
- "2": {
1236
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
1237
- },
1238
- "3": {
1239
- "name": "keyword.other"
1240
- }
1241
- }
1242
- },
1243
- {
1244
- "include": "#type-expression"
1245
- }
1246
- ]
1247
- },
1248
- "module-item-type-bind-name-tyvars": {
1249
- "begin": "(?\u003c=\\G|^|\\.)[[:space:]]*\\b([[:lower:]][[:word:]]*)\\b",
1250
- "end": "(?=\\+?=|[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)",
1251
- "patterns": [
1252
- {
1253
- "include": "#comment"
1254
- },
1255
- {
1256
- "include": "#attribute"
1257
- },
1258
- {
1259
- "name": "comment",
1260
- "match": "_"
1261
- },
1262
- {
1263
- "match": "([+\\-])?(?:(_)|(')([[:lower:]][[:word:]]*)\\b)(?!\\.[[:upper:]])",
1264
- "captures": {
1265
- "1": {
1266
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
1267
- },
1268
- "2": {
1269
- "name": "comment"
1270
- },
1271
- "3": {
1272
- "name": "comment"
1273
- },
1274
- "4": {
1275
- "name": "variable.parameter string.other.link variable.language"
1276
- }
1277
- }
1278
- }
1279
- ],
1280
- "beginCaptures": {
1281
- "1": {
1282
- "name": "entity.name.function"
1283
- }
1284
- }
1285
- },
1286
- "module-item-type-bind-name-tyvars-body": {
1287
- "begin": "(?=(\\G|^)[[:space:]]*\\b[[:alpha:]])",
1288
- "end": "(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)",
1289
- "patterns": [
1290
- {
1291
- "include": "#module-path-simple-prefix"
1292
- },
1293
- {
1294
- "include": "#module-item-type-bind-name-tyvars"
1295
- },
1296
- {
1297
- "include": "#module-item-type-bind-body"
1298
- }
1299
- ]
1300
- },
1301
- "module-item-type-bind-nonrec": {
1302
- "begin": "(?:\\G|^)[[:space:]]*\\b(nonrec)\\b",
1303
- "end": "(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)",
1304
- "patterns": [
1305
- {
1306
- "include": "#module-item-type-bind-name-tyvars-body"
1307
- }
1308
- ],
1309
- "beginCaptures": {
1310
- "1": {
1311
- "name": "keyword.control storage.modifier message.error"
1312
- }
1313
- }
1314
- },
1315
- "module-item-type-constraint": {
1316
- "begin": "\\b(constraint)\\b",
1317
- "end": "(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)",
1318
- "patterns": [
1319
- {
1320
- "match": "([+\\-])?(')([_[:lower:]][[:word:]]*)\\b(?!\\.[[:upper:]])",
1321
- "captures": {
1322
- "1": {
1323
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
1324
- },
1325
- "2": {
1326
- "name": "comment"
1327
- },
1328
- "3": {
1329
- "name": "variable.parameter string.other.link variable.language"
1330
- }
1331
- }
1332
- },
1333
- {
1334
- "name": "keyword.control.less",
1335
- "match": "="
1336
- },
1337
- {
1338
- "include": "#type-expression"
1339
- }
1340
- ],
1341
- "beginCaptures": {
1342
- "1": {
1343
- "name": "variable.other.class.js variable.interpolation storage.modifier message.error"
1344
- }
1345
- }
1346
- },
1347
- "module-name-extended": {
1348
- "patterns": [
1349
- {
1350
- "include": "#module-name-simple"
1351
- },
1352
- {
1353
- "begin": "([\\(])",
1354
- "end": "([\\)])",
1355
- "patterns": [
1356
- {
1357
- "include": "#module-path-extended"
1358
- }
1359
- ],
1360
- "captures": {
1361
- "1": {
1362
- "name": "entity.other.attribute-name.css constant.language constant.numeric"
1363
- }
1364
- }
1365
- }
1366
- ]
1367
- },
1368
- "module-name-simple": {
1369
- "name": "support.class entity.name.class",
1370
- "match": "\\b[[:upper:]][[:word:]]*\\b"
1371
- },
1372
- "module-path-extended": {
1373
- "patterns": [
1374
- {
1375
- "include": "#module-name-extended"
1376
- },
1377
- {
1378
- "include": "#comment"
1379
- },
1380
- {
1381
- "begin": "([\\.])",
1382
- "end": "(?\u003c=[[:word:]\\)])|(?=[^\\.[:upper:]/])",
1383
- "patterns": [
1384
- {
1385
- "begin": "(?\u003c=[\\.])",
1386
- "end": "(?\u003c=[[:word:]\\)])|(?=[^\\.[:upper:]/])",
1387
- "patterns": [
1388
- {
1389
- "include": "#comment"
1390
- },
1391
- {
1392
- "include": "#module-name-extended"
1393
- }
1394
- ]
1395
- }
1396
- ],
1397
- "beginCaptures": {
1398
- "1": {
1399
- "name": "keyword.control.less"
1400
- }
1401
- }
1402
- }
1403
- ]
1404
- },
1405
- "module-path-extended-prefix": {
1406
- "begin": "(?=\\b[[:upper:]])",
1407
- "end": "([\\.])|(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)",
1408
- "patterns": [
1409
- {
1410
- "include": "#module-path-extended"
1411
- }
1412
- ],
1413
- "endCaptures": {
1414
- "1": {
1415
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
1416
- }
1417
- }
1418
- },
1419
- "module-path-simple": {
1420
- "patterns": [
1421
- {
1422
- "include": "#module-name-simple"
1423
- },
1424
- {
1425
- "include": "#comment"
1426
- },
1427
- {
1428
- "begin": "([\\.])",
1429
- "end": "(?\u003c=[[:word:]\\)])|(?=[^\\.[:upper:]/])",
1430
- "patterns": [
1431
- {
1432
- "begin": "(?\u003c=[\\.])",
1433
- "end": "(?\u003c=[[:word:]\\)])|(?=[^\\.[:upper:]/])",
1434
- "patterns": [
1435
- {
1436
- "include": "#comment"
1437
- },
1438
- {
1439
- "include": "#module-name-simple"
1440
- }
1441
- ]
1442
- }
1443
- ],
1444
- "beginCaptures": {
1445
- "1": {
1446
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
1447
- }
1448
- }
1449
- }
1450
- ]
1451
- },
1452
- "module-path-simple-prefix": {
1453
- "begin": "(?=\\b[[:upper:]])",
1454
- "end": "([\\.])|(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)",
1455
- "patterns": [
1456
- {
1457
- "include": "#module-path-simple"
1458
- }
1459
- ],
1460
- "endCaptures": {
1461
- "1": {
1462
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
1463
- }
1464
- }
1465
- },
1466
- "object-item": {
1467
- "begin": "\\G|(;)",
1468
- "end": "(?=[;}]|\\b(class|constraint|exception|external|include|let|module|nonrec|open|private|type|val|with)\\b)",
1469
- "patterns": [
1470
- {
1471
- "include": "#class-item-method"
1472
- }
1473
- ],
1474
- "beginCaptures": {
1475
- "1": {
1476
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
1477
- }
1478
- }
1479
- },
1480
- "operator": {
1481
- "patterns": [
1482
- {
1483
- "include": "#operator-infix"
1484
- },
1485
- {
1486
- "include": "#operator-prefix"
1487
- }
1488
- ]
1489
- },
1490
- "operator-infix": {
1491
- "patterns": [
1492
- {
1493
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error",
1494
- "match": ";"
1495
- },
1496
- {
1497
- "include": "#operator-infix-assign"
1498
- },
1499
- {
1500
- "include": "#operator-infix-builtin"
1501
- },
1502
- {
1503
- "include": "#operator-infix-custom"
1504
- },
1505
- {}
1506
- ]
1507
- },
1508
- "operator-infix-assign": {
1509
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control.less message.error",
1510
- "match": "(?\u003c![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\])(=)(?![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\])"
1511
- },
1512
- "operator-infix-builtin": {
1513
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control.less message.error",
1514
- "match": ":="
1515
- },
1516
- "operator-infix-custom": {
1517
- "match": "(?:(?\u003c![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\])((\u003c\u003e))(?![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\]))|([#\\-@*/\u0026%^+\u003c=\u003e$\\\\][#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\]*|[|][#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\]+)",
1518
- "captures": {
1519
- "1": {},
1520
- "2": {
1521
- "name": "punctuation.definition.tag.begin.js"
1522
- },
1523
- "3": {
1524
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
1525
- }
1526
- }
1527
- },
1528
- "operator-infix-custom-hash": {
1529
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error",
1530
- "match": "#[\\-:!?.@*/\u0026%^+\u003c=\u003e|~$]+"
1531
- },
1532
- "operator-prefix": {
1533
- "patterns": [
1534
- {
1535
- "include": "#operator-prefix-bang"
1536
- },
1537
- {
1538
- "include": "#operator-prefix-label-token"
1539
- }
1540
- ]
1541
- },
1542
- "operator-prefix-bang": {
1543
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error",
1544
- "match": "![\\-:!?.@*/\u0026%^+\u003c=\u003e|~$]*"
1545
- },
1546
- "operator-prefix-label-token": {
1547
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error",
1548
- "match": "[?~][\\-:!?.@*/\u0026%^+\u003c=\u003e|~$]+"
1549
- },
1550
- "pattern": {
1551
- "patterns": [
1552
- {
1553
- "include": "#attribute"
1554
- },
1555
- {
1556
- "include": "#comment"
1557
- },
1558
- {
1559
- "include": "#pattern-atomic"
1560
- },
1561
- {
1562
- "match": "[[:space:]]*+(?:(\\|(?![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\]))|\\b(as)\\b|(\\.\\.\\.?))[[:space:]]*+",
1563
- "captures": {
1564
- "1": {
1565
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
1566
- },
1567
- "2": {
1568
- "name": "keyword.other"
1569
- },
1570
- "3": {
1571
- "name": "keyword.control"
1572
- }
1573
- }
1574
- }
1575
- ]
1576
- },
1577
- "pattern-atomic": {
1578
- "patterns": [
1579
- {
1580
- "name": "keyword.other",
1581
- "match": "\\b(exception)\\b"
1582
- },
1583
- {
1584
- "include": "#value-expression-literal"
1585
- },
1586
- {
1587
- "include": "#module-path-simple-prefix"
1588
- },
1589
- {
1590
- "include": "#pattern-list-or-array"
1591
- },
1592
- {
1593
- "include": "#pattern-record"
1594
- },
1595
- {
1596
- "include": "#pattern-variable"
1597
- },
1598
- {
1599
- "include": "#pattern-parens"
1600
- }
1601
- ]
1602
- },
1603
- "pattern-guard": {
1604
- "begin": "\\b(when)\\b",
1605
- "end": "(?==\u003e)",
1606
- "patterns": [
1607
- {
1608
- "include": "#value-expression"
1609
- }
1610
- ],
1611
- "beginCaptures": {
1612
- "1": {
1613
- "name": "keyword.other"
1614
- }
1615
- }
1616
- },
1617
- "pattern-list-or-array": {
1618
- "begin": "(\\[\\|?)(?![@%])",
1619
- "end": "(\\|?\\])",
1620
- "patterns": [
1621
- {
1622
- "include": "#value-expression-literal-list-or-array-separator"
1623
- },
1624
- {
1625
- "include": "#pattern"
1626
- }
1627
- ],
1628
- "beginCaptures": {
1629
- "1": {
1630
- "name": "entity.other.attribute-name.css constant.language constant.numeric"
1631
- }
1632
- },
1633
- "endCaptures": {
1634
- "1": {
1635
- "name": "entity.other.attribute-name.css constant.language constant.numeric"
1636
- }
1637
- }
1638
- },
1639
- "pattern-parens": {
1640
- "begin": "(?=\\()",
1641
- "end": "\\)|(?=[;}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)",
1642
- "patterns": [
1643
- {
1644
- "include": "#pattern-parens-lhs"
1645
- },
1646
- {
1647
- "include": "#type-annotation-rhs"
1648
- }
1649
- ]
1650
- },
1651
- "pattern-parens-lhs": {
1652
- "begin": "\\(|(,)",
1653
- "end": "(?=(?:[,:\\)]))|(?=[;}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)",
1654
- "patterns": [
1655
- {
1656
- "include": "#pattern"
1657
- }
1658
- ],
1659
- "beginCaptures": {
1660
- "1": {
1661
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
1662
- }
1663
- }
1664
- },
1665
- "pattern-record": {
1666
- "begin": "{",
1667
- "end": "}",
1668
- "patterns": [
1669
- {
1670
- "include": "#comment"
1671
- },
1672
- {
1673
- "include": "#pattern-record-item"
1674
- }
1675
- ]
1676
- },
1677
- "pattern-record-field": {
1678
- "begin": "\\b([_][[:word:]]*)\\b|\\b([[:lower:]][[:word:]]*)\\b",
1679
- "end": "(,)|(?=})",
1680
- "patterns": [
1681
- {
1682
- "include": "#comment"
1683
- },
1684
- {
1685
- "begin": "\\G(:)",
1686
- "end": "(?=[,}])",
1687
- "patterns": [
1688
- {
1689
- "include": "#pattern"
1690
- }
1691
- ],
1692
- "beginCaptures": {
1693
- "1": {
1694
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
1695
- }
1696
- }
1697
- }
1698
- ],
1699
- "beginCaptures": {
1700
- "1": {
1701
- "name": "comment"
1702
- },
1703
- "2": {
1704
- "name": "markup.inserted constant.language support.property-value entity.name.filename"
1705
- }
1706
- },
1707
- "endCaptures": {
1708
- "1": {
1709
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
1710
- }
1711
- }
1712
- },
1713
- "pattern-record-item": {
1714
- "patterns": [
1715
- {
1716
- "include": "#module-path-simple-prefix"
1717
- },
1718
- {
1719
- "include": "#pattern-record-field"
1720
- }
1721
- ]
1722
- },
1723
- "pattern-variable": {
1724
- "patterns": [
1725
- {
1726
- "match": "\\b(_(?:[[:lower:]][[:word:]]*)?)\\b(?!\\.[[:upper:]])",
1727
- "captures": {
1728
- "1": {
1729
- "name": "comment"
1730
- }
1731
- }
1732
- },
1733
- {
1734
- "match": "\\b([[:lower:]][[:word:]]*)\\b(?!\\.[[:upper:]])",
1735
- "captures": {
1736
- "1": {
1737
- "name": "variable.language string.other.link"
1738
- }
1739
- }
1740
- }
1741
- ]
1742
- },
1743
- "record-path": {
1744
- "begin": "\\b[[:lower:]][[:word:]]*\\b",
1745
- "end": "(?=[^[:space:]\\.])(?!/\\*)",
1746
- "patterns": [
1747
- {
1748
- "include": "#comment"
1749
- },
1750
- {
1751
- "include": "#record-path-suffix"
1752
- }
1753
- ]
1754
- },
1755
- "record-path-suffix": {
1756
- "begin": "(\\.)",
1757
- "end": "(\\))|\\b([[:upper:]][[:word:]]*)\\b|\\b([[:lower:]][[:word:]]*)\\b|(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|with)\\b)",
1758
- "patterns": [
1759
- {
1760
- "include": "#comment"
1761
- },
1762
- {
1763
- "begin": "([\\(])",
1764
- "end": "(?=[\\)])",
1765
- "patterns": [
1766
- {
1767
- "include": "#comment"
1768
- },
1769
- {
1770
- "match": "\\b([[:lower:]][[:word:]]*)\\b(?=[^\\)]*([\\.]))",
1771
- "captures": {
1772
- "1": {
1773
- "name": "markup.inserted constant.language support.property-value entity.name.filename"
1774
- },
1775
- "2": {
1776
- "name": "keyword.other"
1777
- }
1778
- }
1779
- },
1780
- {
1781
- "name": "keyword.control.less",
1782
- "match": "([\\.])"
1783
- },
1784
- {
1785
- "match": "\\b([[:lower:]][[:word:]]*)\\b[[:space:]]*",
1786
- "captures": {
1787
- "1": {
1788
- "name": "variable.parameter string.other.link variable.language"
1789
- }
1790
- }
1791
- },
1792
- {
1793
- "include": "#value-expression"
1794
- }
1795
- ],
1796
- "beginCaptures": {
1797
- "1": {
1798
- "name": "keyword.control"
1799
- }
1800
- }
1801
- }
1802
- ],
1803
- "beginCaptures": {
1804
- "1": {
1805
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
1806
- }
1807
- },
1808
- "endCaptures": {
1809
- "1": {
1810
- "name": "keyword.control"
1811
- },
1812
- "2": {
1813
- "name": "support.class entity.name.class"
1814
- },
1815
- "3": {
1816
- "name": "markup.inserted constant.language support.property-value entity.name.filename"
1817
- }
1818
- }
1819
- },
1820
- "signature-expression": {
1821
- "patterns": [
1822
- {
1823
- "begin": "(?=\\([[:space:]]*[[:upper:]][[:word:]]*[[:space:]]*:)",
1824
- "end": "(?=[;])",
1825
- "patterns": [
1826
- {
1827
- "begin": "(?=\\()",
1828
- "end": "(?=[;]|=\u003e)",
1829
- "patterns": [
1830
- {
1831
- "include": "#module-item-let-module-param"
1832
- }
1833
- ]
1834
- },
1835
- {
1836
- "begin": "(=\u003e)",
1837
- "end": "(?=[;\\(])",
1838
- "patterns": [
1839
- {
1840
- "include": "#structure-expression"
1841
- }
1842
- ],
1843
- "beginCaptures": {
1844
- "1": {
1845
- "name": "markup.inserted keyword.control.less"
1846
- }
1847
- }
1848
- }
1849
- ]
1850
- },
1851
- {
1852
- "begin": "\\b(module)\\b[[:space:]]*\\b(type)\\b([[:space:]]*\\b(of)\\b)?",
1853
- "end": "(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)",
1854
- "patterns": [
1855
- {
1856
- "include": "#comment"
1857
- },
1858
- {
1859
- "include": "#module-path-simple"
1860
- },
1861
- {
1862
- "name": "support.class entity.name.class",
1863
- "match": "\\b([[:upper:]][[:word:]]*)\\b"
1864
- }
1865
- ],
1866
- "beginCaptures": {
1867
- "1": {
1868
- "name": "markup.inserted keyword.other variable.other.readwrite.instance"
1869
- },
1870
- "2": {
1871
- "name": "entity.other.attribute-name.css constant.language constant.numeric"
1872
- },
1873
- "3": {
1874
- "name": "markup.inserted keyword.other variable.other.readwrite.instance"
1875
- }
1876
- }
1877
- },
1878
- {
1879
- "include": "#signature-expression-constraints"
1880
- },
1881
- {
1882
- "include": "#structure-expression"
1883
- }
1884
- ]
1885
- },
1886
- "signature-expression-constraints": {
1887
- "begin": "(?=\\b(with))",
1888
- "end": "(?=[;\\)}]|\\b(class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|val)\\b)",
1889
- "patterns": [
1890
- {
1891
- "begin": "\\b(and|with)\\b",
1892
- "end": "(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|val|with)\\b)",
1893
- "patterns": [
1894
- {
1895
- "include": "#comment"
1896
- },
1897
- {
1898
- "begin": "\\b(type)\\b",
1899
- "end": "(?=[;\\)}]|\\b(class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|val|with)\\b)",
1900
- "patterns": [
1901
- {
1902
- "include": "#module-item-type-and"
1903
- },
1904
- {
1905
- "include": "#module-item-type-constraint"
1906
- },
1907
- {
1908
- "include": "#module-item-type-bind"
1909
- }
1910
- ],
1911
- "beginCaptures": {
1912
- "1": {
1913
- "name": "entity.other.attribute-name.css constant.language constant.numeric"
1914
- }
1915
- }
1916
- },
1917
- {
1918
- "begin": "(?=\\b(module)\\b)",
1919
- "end": "(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|val|with)\\b)",
1920
- "patterns": [
1921
- {
1922
- "begin": "\\b(module)\\b",
1923
- "end": "(?=:?=|[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|type|val|with)\\b)",
1924
- "patterns": [
1925
- {
1926
- "include": "#comment"
1927
- },
1928
- {
1929
- "include": "#module-path-simple"
1930
- },
1931
- {
1932
- "name": "support.class entity.name.class",
1933
- "match": "[[:upper:]][[:word:]]*"
1934
- }
1935
- ],
1936
- "beginCaptures": {
1937
- "1": {
1938
- "name": "markup.inserted keyword.control storage.type variable.other.readwrite.instance"
1939
- }
1940
- }
1941
- },
1942
- {
1943
- "begin": "(:=)|(=)",
1944
- "end": "(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|type|val|with)\\b)",
1945
- "patterns": [
1946
- {
1947
- "include": "#structure-expression"
1948
- }
1949
- ],
1950
- "beginCaptures": {
1951
- "1": {
1952
- "name": "markup.inserted keyword.control.less message.error"
1953
- },
1954
- "2": {
1955
- "name": "markup.inserted keyword.control.less"
1956
- }
1957
- }
1958
- }
1959
- ]
1960
- }
1961
- ],
1962
- "beginCaptures": {
1963
- "1": {
1964
- "name": "variable.other.class.js variable.interpolation storage.modifier message.error"
1965
- }
1966
- }
1967
- }
1968
- ]
1969
- },
1970
- "structure-expression": {
1971
- "patterns": [
1972
- {
1973
- "include": "#comment"
1974
- },
1975
- {
1976
- "begin": "\\((?=[[:space:]]*(\\b(val)\\b|[^'\\[\u003c[:lower:]]))",
1977
- "end": "\\)|(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|with)\\b)",
1978
- "patterns": [
1979
- {
1980
- "include": "#comment"
1981
- },
1982
- {
1983
- "include": "#structure-expression-block"
1984
- },
1985
- {
1986
- "begin": "\\b(val)\\b",
1987
- "end": "(?=\\))|(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)",
1988
- "patterns": [
1989
- {
1990
- "include": "#comment"
1991
- },
1992
- {
1993
- "name": "support.class entity.name.class",
1994
- "match": "\\b([[:lower:]][[:word:]]*)\\b"
1995
- }
1996
- ],
1997
- "beginCaptures": {
1998
- "1": {
1999
- "name": "keyword.other"
2000
- }
2001
- }
2002
- },
2003
- {
2004
- "include": "#module-path-simple"
2005
- },
2006
- {
2007
- "begin": "(:)",
2008
- "end": "(?=[\\)])|(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val)\\b)",
2009
- "patterns": [
2010
- {
2011
- "include": "#signature-expression"
2012
- }
2013
- ],
2014
- "beginCaptures": {
2015
- "1": {
2016
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
2017
- }
2018
- }
2019
- }
2020
- ]
2021
- },
2022
- {
2023
- "include": "#module-path-simple"
2024
- },
2025
- {
2026
- "include": "#structure-expression-block"
2027
- }
2028
- ]
2029
- },
2030
- "structure-expression-block": {
2031
- "begin": "{",
2032
- "end": "}",
2033
- "patterns": [
2034
- {
2035
- "include": "#structure-expression-block-item"
2036
- }
2037
- ]
2038
- },
2039
- "structure-expression-block-item": {
2040
- "patterns": [
2041
- {
2042
- "include": "#attribute"
2043
- },
2044
- {
2045
- "include": "#comment"
2046
- },
2047
- {
2048
- "include": "#module-item-exception"
2049
- },
2050
- {
2051
- "include": "#module-item-external"
2052
- },
2053
- {
2054
- "include": "#module-item-include"
2055
- },
2056
- {
2057
- "include": "#module-item-let"
2058
- },
2059
- {
2060
- "include": "#module-item-class-type"
2061
- },
2062
- {
2063
- "include": "#module-item-module-type"
2064
- },
2065
- {
2066
- "include": "#module-item-module"
2067
- },
2068
- {
2069
- "include": "#module-item-open"
2070
- },
2071
- {
2072
- "include": "#module-item-type"
2073
- }
2074
- ]
2075
- },
2076
- "type-annotation-rhs": {
2077
- "begin": "(?\u003c![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\])([:])(?![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\])",
2078
- "end": "(?=\\))|(?=[,;}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)",
2079
- "patterns": [
2080
- {
2081
- "include": "#type-expression"
2082
- }
2083
- ],
2084
- "beginCaptures": {
2085
- "1": {
2086
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
2087
- }
2088
- }
2089
- },
2090
- "type-expression": {
2091
- "patterns": [
2092
- {
2093
- "name": "entity.name.function",
2094
- "match": "([\\.])"
2095
- },
2096
- {
2097
- "include": "#type-expression-atomic"
2098
- },
2099
- {
2100
- "include": "#type-expression-arrow"
2101
- }
2102
- ]
2103
- },
2104
- "type-expression-arrow": {
2105
- "name": "markup.inserted keyword.control.less",
2106
- "match": "=\u003e"
2107
- },
2108
- "type-expression-atomic": {
2109
- "patterns": [
2110
- {
2111
- "include": "#attribute"
2112
- },
2113
- {
2114
- "include": "#comment"
2115
- },
2116
- {
2117
- "include": "#module-path-extended-prefix"
2118
- },
2119
- {
2120
- "include": "#type-expression-label"
2121
- },
2122
- {
2123
- "name": "variable.other.class.js variable.interpolation storage.modifier message.error",
2124
- "match": "\\b(as)\\b"
2125
- },
2126
- {
2127
- "include": "#type-expression-constructor"
2128
- },
2129
- {
2130
- "include": "#type-expression-object"
2131
- },
2132
- {
2133
- "include": "#type-expression-parens"
2134
- },
2135
- {
2136
- "include": "#type-expression-polymorphic-variant"
2137
- },
2138
- {
2139
- "include": "#type-expression-record"
2140
- },
2141
- {
2142
- "include": "#type-expression-variable"
2143
- }
2144
- ]
2145
- },
2146
- "type-expression-constructor": {
2147
- "match": "(_)(?![[:alnum:]])|\\b([_[:lower:]][[:word:]]*)\\b(?!\\.[[:upper:]])",
2148
- "captures": {
2149
- "1": {
2150
- "name": "comment"
2151
- },
2152
- "2": {
2153
- "name": "support.type string.regexp"
2154
- }
2155
- }
2156
- },
2157
- "type-expression-label": {
2158
- "begin": "\\b([_[:lower:]][[:word:]]*)\\b(::)",
2159
- "end": "(?\u003c==\u003e)",
2160
- "patterns": [
2161
- {
2162
- "include": "#type-expression"
2163
- },
2164
- {
2165
- "match": "(\\?)",
2166
- "captures": {
2167
- "1": {
2168
- "name": "keyword.control.less"
2169
- }
2170
- }
2171
- }
2172
- ],
2173
- "beginCaptures": {
2174
- "1": {
2175
- "name": "markup.inserted constant.language support.property-value entity.name.filename"
2176
- },
2177
- "2": {
2178
- "name": "keyword.control"
2179
- }
2180
- }
2181
- },
2182
- "type-expression-object": {
2183
- "begin": "(\u003c)",
2184
- "end": "(\u003e)",
2185
- "patterns": [
2186
- {
2187
- "begin": "(\\.\\.)",
2188
- "end": "(?=\u003e)",
2189
- "beginCaptures": {
2190
- "1": {
2191
- "name": "entity.other.attribute-name.css constant.language constant.numeric"
2192
- }
2193
- }
2194
- },
2195
- {
2196
- "begin": "(?=[_[:lower:]])",
2197
- "end": "(,)|(?=\u003e)",
2198
- "patterns": [
2199
- {
2200
- "begin": "(?=[_[:lower:]])",
2201
- "end": "(?=:)",
2202
- "patterns": [
2203
- {
2204
- "match": "\\b([_[:lower:]][[:word:]]*)\\b",
2205
- "captures": {
2206
- "1": {
2207
- "name": "markup.inserted constant.language support.property-value entity.name.filename"
2208
- }
2209
- }
2210
- }
2211
- ]
2212
- },
2213
- {
2214
- "begin": "(:)",
2215
- "end": "(?=[,\u003e])",
2216
- "patterns": [
2217
- {
2218
- "include": "#type-expression"
2219
- }
2220
- ],
2221
- "beginCaptures": {
2222
- "1": {
2223
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
2224
- }
2225
- }
2226
- }
2227
- ],
2228
- "endCaptures": {
2229
- "1": {
2230
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
2231
- }
2232
- }
2233
- }
2234
- ],
2235
- "captures": {
2236
- "1": {
2237
- "name": "entity.name.function"
2238
- }
2239
- }
2240
- },
2241
- "type-expression-parens": {
2242
- "begin": "\\(",
2243
- "end": "\\)",
2244
- "patterns": [
2245
- {
2246
- "begin": "\\b(module)\\b",
2247
- "end": "(?=[\\)])",
2248
- "patterns": [
2249
- {
2250
- "include": "#module-path-extended"
2251
- },
2252
- {
2253
- "include": "#signature-expression-constraints"
2254
- }
2255
- ],
2256
- "beginCaptures": {
2257
- "1": {
2258
- "name": "keyword.other message.error"
2259
- }
2260
- }
2261
- },
2262
- {
2263
- "name": "keyword.control.less",
2264
- "match": ","
2265
- },
2266
- {
2267
- "include": "#type-expression"
2268
- }
2269
- ]
2270
- },
2271
- "type-expression-polymorphic-variant": {
2272
- "begin": "(\\[)([\u003c\u003e])?",
2273
- "end": "(\\])",
2274
- "patterns": [
2275
- {
2276
- "begin": "(\\|)?(?![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\])[[:space:]]*",
2277
- "end": "(?=[;)}\\]]|\\|(?![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\])|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)",
2278
- "patterns": [
2279
- {
2280
- "include": "#value-expression-constructor"
2281
- },
2282
- {
2283
- "match": "([:])|\\b(of)\\b|([\u0026])",
2284
- "captures": {
2285
- "1": {
2286
- "name": "keyword.control.less"
2287
- },
2288
- "2": {
2289
- "name": "keyword.other"
2290
- },
2291
- "3": {
2292
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
2293
- }
2294
- }
2295
- },
2296
- {
2297
- "include": "#value-expression-constructor-polymorphic"
2298
- },
2299
- {
2300
- "include": "#type-expression"
2301
- }
2302
- ],
2303
- "beginCaptures": {
2304
- "1": {
2305
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
2306
- }
2307
- }
2308
- }
2309
- ],
2310
- "captures": {
2311
- "1": {
2312
- "name": "entity.name.function"
2313
- },
2314
- "2": {
2315
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
2316
- }
2317
- }
2318
- },
2319
- "type-expression-record": {
2320
- "begin": "{",
2321
- "end": "}",
2322
- "patterns": [
2323
- {
2324
- "include": "#type-expression-record-item"
2325
- }
2326
- ]
2327
- },
2328
- "type-expression-record-field": {
2329
- "patterns": [
2330
- {
2331
- "begin": "\\b(mutable)\\b",
2332
- "end": "(?\u003c=[,])|(?=})",
2333
- "patterns": [
2334
- {
2335
- "include": "#type-expression-record-field-sans-modifier"
2336
- }
2337
- ],
2338
- "beginCaptures": {
2339
- "1": {
2340
- "name": "variable.other.class.js variable.interpolation storage.modifier message.error"
2341
- }
2342
- }
2343
- },
2344
- {
2345
- "include": "#type-expression-record-field-sans-modifier"
2346
- }
2347
- ]
2348
- },
2349
- "type-expression-record-field-sans-modifier": {
2350
- "begin": "\\b([_[:lower:]][[:word:]]*)\\b",
2351
- "end": "(,)|(?=[,}])",
2352
- "patterns": [
2353
- {
2354
- "include": "#comment"
2355
- },
2356
- {
2357
- "begin": "(:)",
2358
- "end": "(?=[,}])",
2359
- "patterns": [
2360
- {
2361
- "include": "#type-expression"
2362
- }
2363
- ],
2364
- "beginCaptures": {
2365
- "1": {
2366
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
2367
- }
2368
- }
2369
- }
2370
- ],
2371
- "beginCaptures": {
2372
- "1": {
2373
- "name": "markup.inserted constant.language support.property-value entity.name.filename"
2374
- }
2375
- },
2376
- "endCaptures": {
2377
- "1": {
2378
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
2379
- }
2380
- }
2381
- },
2382
- "type-expression-record-item": {
2383
- "patterns": [
2384
- {
2385
- "include": "#comment"
2386
- },
2387
- {
2388
- "include": "#module-path-simple-prefix"
2389
- },
2390
- {
2391
- "include": "#type-expression-record-field"
2392
- }
2393
- ]
2394
- },
2395
- "type-expression-variable": {
2396
- "match": "(')([_[:lower:]][[:word:]]*)\\b(?!\\.[[:upper:]])",
2397
- "captures": {
2398
- "1": {
2399
- "name": "comment"
2400
- },
2401
- "2": {
2402
- "name": "variable.parameter string.other.link variable.language"
2403
- }
2404
- }
2405
- },
2406
- "value-expression": {
2407
- "patterns": [
2408
- {
2409
- "include": "#attribute"
2410
- },
2411
- {
2412
- "include": "#comment"
2413
- },
2414
- {
2415
- "include": "#extension-node"
2416
- },
2417
- {
2418
- "include": "#jsx"
2419
- },
2420
- {
2421
- "include": "#operator"
2422
- },
2423
- {
2424
- "include": "#value-expression-builtin"
2425
- },
2426
- {
2427
- "include": "#value-expression-if-then-else"
2428
- },
2429
- {
2430
- "include": "#value-expression-atomic"
2431
- },
2432
- {
2433
- "include": "#module-path-simple-prefix"
2434
- },
2435
- {
2436
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error",
2437
- "match": "[:?]"
2438
- },
2439
- {
2440
- "include": "#record-path"
2441
- }
2442
- ]
2443
- },
2444
- "value-expression-atomic": {
2445
- "patterns": [
2446
- {
2447
- "include": "#value-expression-literal"
2448
- },
2449
- {
2450
- "include": "#value-expression-literal-list-or-array"
2451
- },
2452
- {
2453
- "include": "#value-expression-for"
2454
- },
2455
- {
2456
- "include": "#value-expression-fun"
2457
- },
2458
- {
2459
- "include": "#value-expression-block-or-record-or-object"
2460
- },
2461
- {
2462
- "include": "#value-expression-label"
2463
- },
2464
- {
2465
- "include": "#value-expression-parens"
2466
- },
2467
- {
2468
- "include": "#value-expression-switch"
2469
- },
2470
- {
2471
- "include": "#value-expression-try"
2472
- },
2473
- {
2474
- "include": "#value-expression-while"
2475
- }
2476
- ]
2477
- },
2478
- "value-expression-atomic-with-paths": {
2479
- "patterns": [
2480
- {
2481
- "include": "#value-expression-atomic"
2482
- },
2483
- {
2484
- "include": "#module-path-simple-prefix"
2485
- },
2486
- {
2487
- "include": "#record-path-suffix"
2488
- }
2489
- ]
2490
- },
2491
- "value-expression-block": {
2492
- "begin": "{",
2493
- "end": "}",
2494
- "patterns": [
2495
- {
2496
- "include": "#value-expression-block-item"
2497
- }
2498
- ]
2499
- },
2500
- "value-expression-block-item": {
2501
- "patterns": [
2502
- {
2503
- "include": "#module-item-let"
2504
- },
2505
- {
2506
- "include": "#module-item-open"
2507
- },
2508
- {
2509
- "include": "#value-expression"
2510
- }
2511
- ]
2512
- },
2513
- "value-expression-block-look": {
2514
- "begin": "(?![[:space:]]*($|\\.\\.\\.|([[:upper:]][[:word:]]*\\.)*([[:lower:]][[:word:]]*)[[:space:]]*(?:,|:(?![=]))))",
2515
- "end": "(?=})",
2516
- "patterns": [
2517
- {
2518
- "include": "#value-expression-block-item"
2519
- }
2520
- ]
2521
- },
2522
- "value-expression-block-or-record-or-object": {
2523
- "begin": "{",
2524
- "end": "}",
2525
- "patterns": [
2526
- {
2527
- "include": "#comment"
2528
- },
2529
- {
2530
- "include": "#module-path-simple-prefix"
2531
- },
2532
- {
2533
- "include": "#value-expression-object-look"
2534
- },
2535
- {
2536
- "include": "#value-expression-record-look"
2537
- },
2538
- {
2539
- "include": "#value-expression-block-look"
2540
- }
2541
- ]
2542
- },
2543
- "value-expression-builtin": {
2544
- "match": "\\b(assert|decr|failwith|fprintf|ignore|incr|land|lazy|lor|lsl|lsr|lxor|mod|new|not|printf|ref)\\b|\\b(raise)\\b",
2545
- "captures": {
2546
- "1": {
2547
- "name": "keyword.control message.error"
2548
- },
2549
- "2": {
2550
- "name": "keyword.control.trycatch"
2551
- }
2552
- }
2553
- },
2554
- "value-expression-constructor": {
2555
- "match": "\\b([[:upper:]][[:word:]]*)\\b(?![[:space:]]*[\\.])",
2556
- "captures": {
2557
- "1": {
2558
- "name": "entity.other.attribute-name.css constant.language constant.numeric"
2559
- }
2560
- }
2561
- },
2562
- "value-expression-constructor-polymorphic": {
2563
- "match": "(`)([[:alpha:]][[:word:]]*)\\b(?!\\.)",
2564
- "captures": {
2565
- "1": {
2566
- "name": "constant.other.symbol keyword.control.less variable.parameter"
2567
- },
2568
- "2": {
2569
- "name": "entity.other.attribute-name.css constant.language constant.numeric"
2570
- }
2571
- }
2572
- },
2573
- "value-expression-for": {
2574
- "begin": "(?=\\b(for)\\b)",
2575
- "end": "(?\u003c=})|(?=[;]|\\b(and|as|class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|rec|type|val|with)\\b)",
2576
- "patterns": [
2577
- {
2578
- "include": "#value-expression-for-head"
2579
- },
2580
- {
2581
- "include": "#value-expression-block"
2582
- }
2583
- ]
2584
- },
2585
- "value-expression-for-head": {
2586
- "begin": "(?=\\b(for)\\b)",
2587
- "end": "(?={)|(?=[;]|\\b(and|as|class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|rec|type|val|with)\\b)",
2588
- "patterns": [
2589
- {
2590
- "begin": "\\b(for)\\b",
2591
- "end": "(?=\\b(in)\\b)|(?=[;]|\\b(and|as|class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|rec|type|val|with)\\b)",
2592
- "patterns": [
2593
- {
2594
- "include": "#comment"
2595
- },
2596
- {
2597
- "include": "#pattern-variable"
2598
- }
2599
- ],
2600
- "beginCaptures": {
2601
- "1": {
2602
- "name": "keyword.control.loop"
2603
- }
2604
- }
2605
- },
2606
- {
2607
- "begin": "\\b(in)\\b",
2608
- "end": "(?=\\b(to)\\b)|(?=[;]|\\b(and|as|class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|rec|type|val|with)\\b)",
2609
- "patterns": [
2610
- {
2611
- "include": "#comment"
2612
- },
2613
- {
2614
- "include": "#value-expression-atomic-with-paths"
2615
- }
2616
- ],
2617
- "beginCaptures": {
2618
- "1": {
2619
- "name": "keyword.control.loop"
2620
- }
2621
- }
2622
- },
2623
- {
2624
- "begin": "\\b(to)\\b",
2625
- "end": "(?={)|(?=[;]|\\b(and|as|class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|rec|type|val|with)\\b)",
2626
- "patterns": [
2627
- {
2628
- "include": "#comment"
2629
- },
2630
- {
2631
- "include": "#value-expression-atomic-with-paths"
2632
- }
2633
- ],
2634
- "beginCaptures": {
2635
- "1": {
2636
- "name": "keyword.control.loop"
2637
- }
2638
- }
2639
- },
2640
- {
2641
- "include": "#value-expression-block"
2642
- }
2643
- ]
2644
- },
2645
- "value-expression-fun": {
2646
- "begin": "\\b(fun)\\b",
2647
- "end": "(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)",
2648
- "patterns": [
2649
- {
2650
- "include": "#value-expression-fun-pattern-match-rule-lhs"
2651
- },
2652
- {
2653
- "include": "#value-expression-fun-pattern-match-rule-rhs"
2654
- }
2655
- ],
2656
- "beginCaptures": {
2657
- "1": {
2658
- "name": "keyword.control"
2659
- }
2660
- }
2661
- },
2662
- "value-expression-fun-pattern-match-rule-lhs": {
2663
- "begin": "(?=\\|(?![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\]))|(?\u003c=fun)",
2664
- "end": "(\\|(?![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\]))|(?==\u003e)|(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)",
2665
- "patterns": [
2666
- {
2667
- "include": "#module-item-let-value-param"
2668
- }
2669
- ],
2670
- "beginCaptures": {
2671
- "1": {
2672
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
2673
- }
2674
- },
2675
- "endCaptures": {
2676
- "1": {
2677
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
2678
- }
2679
- },
2680
- "applyEndPatternLast": true
2681
- },
2682
- "value-expression-fun-pattern-match-rule-rhs": {
2683
- "begin": "(=\u003e)",
2684
- "end": "(?=[;\\)}]|\\|(?![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\])|\\b(and)\\b)",
2685
- "patterns": [
2686
- {
2687
- "include": "#value-expression"
2688
- }
2689
- ],
2690
- "beginCaptures": {
2691
- "1": {
2692
- "name": "keyword.control.less"
2693
- }
2694
- }
2695
- },
2696
- "value-expression-if-then-else": {
2697
- "begin": "\\b(if)\\b",
2698
- "end": "(?=[;\\)\\]}])",
2699
- "patterns": [
2700
- {
2701
- "include": "#comment"
2702
- },
2703
- {
2704
- "begin": "\\b(else)\\b",
2705
- "end": "(?=[;\\)\\]}])",
2706
- "patterns": [
2707
- {
2708
- "include": "#value-expression"
2709
- }
2710
- ],
2711
- "beginCaptures": {
2712
- "1": {
2713
- "name": "keyword.control.conditional"
2714
- }
2715
- }
2716
- },
2717
- {
2718
- "include": "#value-expression-atomic-with-paths"
2719
- }
2720
- ],
2721
- "beginCaptures": {
2722
- "1": {
2723
- "name": "keyword.control.conditional"
2724
- }
2725
- },
2726
- "applyEndPatternLast": true
2727
- },
2728
- "value-expression-label": {
2729
- "begin": "\\b([_[:lower:]][[:word:]]*)\\b[[:space:]]*(::)(\\?)?",
2730
- "end": "(?![[:space:]])",
2731
- "patterns": [
2732
- {
2733
- "include": "#value-expression"
2734
- }
2735
- ],
2736
- "beginCaptures": {
2737
- "1": {
2738
- "name": "markup.inserted constant.language support.property-value entity.name.filename"
2739
- },
2740
- "2": {
2741
- "name": "keyword.control"
2742
- },
2743
- "3": {
2744
- "name": "storage.type"
2745
- }
2746
- }
2747
- },
2748
- "value-expression-lazy": {
2749
- "match": "\\b(lazy)\\b",
2750
- "captures": {
2751
- "1": {
2752
- "name": "keyword.other"
2753
- }
2754
- }
2755
- },
2756
- "value-expression-literal": {
2757
- "patterns": [
2758
- {
2759
- "include": "#value-expression-literal-boolean"
2760
- },
2761
- {
2762
- "include": "#value-expression-literal-character"
2763
- },
2764
- {
2765
- "include": "#value-expression-constructor"
2766
- },
2767
- {
2768
- "include": "#value-expression-constructor-polymorphic"
2769
- },
2770
- {
2771
- "include": "#value-expression-lazy"
2772
- },
2773
- {
2774
- "include": "#value-expression-literal-numeric"
2775
- },
2776
- {
2777
- "include": "#value-expression-literal-string"
2778
- },
2779
- {
2780
- "include": "#value-expression-literal-unit"
2781
- }
2782
- ]
2783
- },
2784
- "value-expression-literal-boolean": {
2785
- "name": "entity.other.attribute-name.css constant.language constant.numeric",
2786
- "match": "\\b(false|true)\\b"
2787
- },
2788
- "value-expression-literal-character": {
2789
- "name": "constant.character",
2790
- "match": "(')([[:space:]]|[[:graph:]]|\\\\[\\\\\"'ntbr]|\\\\[[:digit:]][[:digit:]][[:digit:]]|\\\\x[[:xdigit:]][[:xdigit:]]|\\\\o[0-3][0-7][0-7])(')"
2791
- },
2792
- "value-expression-literal-list-or-array": {
2793
- "begin": "(\\[\\|?)(?![@%])",
2794
- "end": "(\\|?\\])",
2795
- "patterns": [
2796
- {
2797
- "include": "#value-expression-literal-list-or-array-separator"
2798
- },
2799
- {
2800
- "include": "#value-expression"
2801
- },
2802
- {
2803
- "include": "#value-expression-literal-list-or-array"
2804
- }
2805
- ],
2806
- "beginCaptures": {
2807
- "1": {
2808
- "name": "constant.language.list"
2809
- }
2810
- },
2811
- "endCaptures": {
2812
- "1": {
2813
- "name": "constant.language.list"
2814
- }
2815
- }
2816
- },
2817
- "value-expression-literal-list-or-array-separator": {
2818
- "match": "(,)|(\\.\\.\\.)",
2819
- "captures": {
2820
- "1": {
2821
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
2822
- },
2823
- "2": {
2824
- "name": "keyword.control"
2825
- }
2826
- }
2827
- },
2828
- "value-expression-literal-numeric": {
2829
- "patterns": [
2830
- {
2831
- "match": "([-])?([[:digit:]][_[:digit:]]*)(?:(\\.)([_[:digit:]]*))?(?:([eE])([\\-\\+])?([[:digit:]][_[:digit:]]*))?(?![bBoOxX])",
2832
- "captures": {
2833
- "1": {
2834
- "name": "keyword.control.less"
2835
- },
2836
- "2": {
2837
- "name": "constant.numeric"
2838
- },
2839
- "3": {
2840
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
2841
- },
2842
- "4": {
2843
- "name": "constant.numeric"
2844
- },
2845
- "5": {
2846
- "name": "keyword.control.less"
2847
- },
2848
- "6": {
2849
- "name": "keyword.control.less"
2850
- },
2851
- "7": {
2852
- "name": "constant.numeric"
2853
- }
2854
- }
2855
- },
2856
- {
2857
- "match": "([-])?(0[xX])([[:xdigit:]][_[:xdigit:]]*)(?:(\\.)([_[:xdigit:]]*))?(?:([pP])([\\-\\+])?([[:digit:]][_[:digit:]]*))?",
2858
- "captures": {
2859
- "1": {
2860
- "name": "keyword.control.less"
2861
- },
2862
- "2": {
2863
- "name": "keyword.control.less"
2864
- },
2865
- "3": {
2866
- "name": "constant.numeric"
2867
- },
2868
- "4": {
2869
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
2870
- },
2871
- "5": {
2872
- "name": "constant.numeric"
2873
- },
2874
- "6": {
2875
- "name": "keyword.control.less"
2876
- },
2877
- "7": {
2878
- "name": "keyword.control.less"
2879
- },
2880
- "8": {
2881
- "name": "constant.numeric"
2882
- }
2883
- }
2884
- },
2885
- {
2886
- "match": "([-])?(0[oO])([0-7][_0-7]*)",
2887
- "captures": {
2888
- "1": {
2889
- "name": "keyword.control.less"
2890
- },
2891
- "2": {
2892
- "name": "keyword.control.less"
2893
- },
2894
- "3": {
2895
- "name": "constant.numeric"
2896
- }
2897
- }
2898
- },
2899
- {
2900
- "match": "([-])?(0[bB])([0-1][_0-1]*)",
2901
- "captures": {
2902
- "1": {
2903
- "name": "keyword.control.less"
2904
- },
2905
- "2": {
2906
- "name": "keyword.control.less"
2907
- },
2908
- "3": {
2909
- "name": "constant.numeric"
2910
- }
2911
- }
2912
- }
2913
- ]
2914
- },
2915
- "value-expression-literal-string": {
2916
- "patterns": [
2917
- {
2918
- "begin": "(?\u003c![[:alpha:]])js_expr(?!=[[:word:]])",
2919
- "end": "(?\u003c=\")|(\\|)([_[:lower:]]*)?(})|(?=[^[:space:]\"{])",
2920
- "patterns": [
2921
- {
2922
- "begin": "({)([_[:lower:]]*)?(\\|)",
2923
- "end": "(?=\\|\\2})",
2924
- "patterns": [
2925
- {
2926
- "include": "source.js"
2927
- }
2928
- ],
2929
- "beginCaptures": {
2930
- "1": {
2931
- "name": "keyword.control.flow message.error"
2932
- },
2933
- "2": {
2934
- "name": "entity.other.attribute-name.css constant.language constant.numeric"
2935
- },
2936
- "3": {
2937
- "name": "keyword.control.flow message.error"
2938
- }
2939
- }
2940
- },
2941
- {
2942
- "begin": "\"",
2943
- "end": "\"",
2944
- "patterns": [
2945
- {
2946
- "include": "source.js"
2947
- }
2948
- ]
2949
- }
2950
- ],
2951
- "endCaptures": {
2952
- "1": {
2953
- "name": "keyword.control.flow message.error"
2954
- },
2955
- "2": {
2956
- "name": "entity.other.attribute-name.css constant.language constant.numeric"
2957
- },
2958
- "3": {
2959
- "name": "keyword.control.flow message.error"
2960
- }
2961
- }
2962
- },
2963
- {
2964
- "name": "string.double string.regexp",
2965
- "begin": "({)([_[:lower:]]*)?(\\|)",
2966
- "end": "(\\|)(\\2)(})",
2967
- "beginCaptures": {
2968
- "1": {
2969
- "name": "keyword.control.flow message.error"
2970
- },
2971
- "2": {
2972
- "name": "entity.other.attribute-name.css constant.language constant.numeric"
2973
- },
2974
- "3": {
2975
- "name": "keyword.control.flow message.error"
2976
- }
2977
- },
2978
- "endCaptures": {
2979
- "1": {
2980
- "name": "keyword.control.flow message.error"
2981
- },
2982
- "2": {
2983
- "name": "entity.other.attribute-name.css constant.language constant.numeric"
2984
- },
2985
- "3": {
2986
- "name": "keyword.control.flow message.error"
2987
- }
2988
- }
2989
- },
2990
- {
2991
- "name": "string.double string.regexp",
2992
- "begin": "\"",
2993
- "end": "\"",
2994
- "patterns": [
2995
- {
2996
- "include": "#value-expression-literal-string-escape"
2997
- }
2998
- ]
2999
- }
3000
- ]
3001
- },
3002
- "value-expression-literal-string-escape": {
3003
- "patterns": [
3004
- {
3005
- "name": "constant.character",
3006
- "match": "\\\\[\\\\\"'ntbr ]|\\\\[[:digit:]][[:digit:]][[:digit:]]|\\\\x[[:xdigit:]][[:xdigit:]]|\\\\o[0-3][0-7][0-7]"
3007
- },
3008
- {
3009
- "match": "(@)([ \\[\\],.]|\\\\n)",
3010
- "captures": {
3011
- "1": {
3012
- "name": "keyword.control.less"
3013
- },
3014
- "2": {
3015
- "name": "entity.other.attribute-name.css constant.language constant.numeric"
3016
- }
3017
- }
3018
- },
3019
- {
3020
- "match": "(%)([ads])?",
3021
- "captures": {
3022
- "1": {
3023
- "name": "entity.other.attribute-name.css constant.language constant.numeric"
3024
- },
3025
- "2": {
3026
- "name": "variable.other.readwrite.instance string.other.link variable.language"
3027
- }
3028
- }
3029
- }
3030
- ]
3031
- },
3032
- "value-expression-literal-unit": {
3033
- "name": "constant.language.unit",
3034
- "match": "\\(\\)"
3035
- },
3036
- "value-expression-object-look": {
3037
- "begin": "(?:\\G|^)[[:space:]]*(?=method)",
3038
- "end": "(?=})",
3039
- "patterns": [
3040
- {
3041
- "include": "#object-item"
3042
- }
3043
- ]
3044
- },
3045
- "value-expression-parens": {
3046
- "begin": "(?=\\()",
3047
- "end": "(\\))|(?=[;}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)",
3048
- "patterns": [
3049
- {
3050
- "include": "#condition-lhs"
3051
- },
3052
- {
3053
- "include": "#value-expression-parens-lhs"
3054
- },
3055
- {
3056
- "include": "#type-annotation-rhs"
3057
- }
3058
- ]
3059
- },
3060
- "value-expression-parens-lhs": {
3061
- "begin": "(\\()|(,)",
3062
- "end": "(?=[?,:\\)]|\\b(and|as|class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|rec|type|val|with)\\b)",
3063
- "patterns": [
3064
- {
3065
- "begin": "\\b(module)\\b",
3066
- "end": "(?=\\))",
3067
- "patterns": [
3068
- {
3069
- "include": "#module-path-simple"
3070
- }
3071
- ],
3072
- "beginCaptures": {
3073
- "1": {
3074
- "name": "keyword.other message.error"
3075
- }
3076
- }
3077
- },
3078
- {
3079
- "include": "#value-expression"
3080
- }
3081
- ],
3082
- "beginCaptures": {
3083
- "2": {
3084
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
3085
- }
3086
- }
3087
- },
3088
- "value-expression-record-field": {
3089
- "patterns": [
3090
- {
3091
- "begin": "(\\.\\.\\.)",
3092
- "end": "(,)|(?=})",
3093
- "patterns": [
3094
- {
3095
- "include": "#comment"
3096
- },
3097
- {
3098
- "include": "#module-path-simple-prefix"
3099
- },
3100
- {
3101
- "begin": "(?=[\\.])",
3102
- "end": "(?=[:,])",
3103
- "patterns": [
3104
- {
3105
- "name": "markup.inserted constant.language support.property-value entity.name.filename",
3106
- "match": "\\b[[:lower:]][[:word:]]*\\b"
3107
- }
3108
- ]
3109
- },
3110
- {
3111
- "begin": "(:)",
3112
- "end": "(?=[,}])",
3113
- "patterns": [
3114
- {
3115
- "include": "#value-expression"
3116
- }
3117
- ],
3118
- "beginCaptures": {
3119
- "1": {
3120
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
3121
- }
3122
- }
3123
- }
3124
- ],
3125
- "beginCaptures": {
3126
- "1": {
3127
- "name": "keyword.control"
3128
- }
3129
- },
3130
- "endCaptures": {
3131
- "1": {
3132
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
3133
- }
3134
- }
3135
- },
3136
- {
3137
- "begin": "\\b[[:upper:]][[:word:]]*\\b",
3138
- "end": "(,)|(?=})",
3139
- "patterns": [
3140
- {
3141
- "include": "#module-path-simple-prefix"
3142
- },
3143
- {
3144
- "begin": "(:)",
3145
- "end": "(?=[,}])",
3146
- "patterns": [
3147
- {
3148
- "include": "#value-expression"
3149
- }
3150
- ],
3151
- "beginCaptures": {
3152
- "1": {
3153
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
3154
- }
3155
- }
3156
- }
3157
- ],
3158
- "beginCaptures": {
3159
- "1": {
3160
- "name": "support.class entity.name.class"
3161
- }
3162
- },
3163
- "endCaptures": {
3164
- "1": {
3165
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
3166
- }
3167
- }
3168
- },
3169
- {
3170
- "begin": "\\b([[:lower:]][[:word:]]*)\\b",
3171
- "end": "(,)|(?=})",
3172
- "patterns": [
3173
- {
3174
- "begin": "(:)",
3175
- "end": "(?=[,}])",
3176
- "patterns": [
3177
- {
3178
- "include": "#value-expression"
3179
- }
3180
- ],
3181
- "beginCaptures": {
3182
- "1": {
3183
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
3184
- }
3185
- }
3186
- }
3187
- ],
3188
- "beginCaptures": {
3189
- "1": {
3190
- "name": "markup.inserted constant.language support.property-value entity.name.filename"
3191
- }
3192
- },
3193
- "endCaptures": {
3194
- "1": {
3195
- "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"
3196
- }
3197
- }
3198
- }
3199
- ]
3200
- },
3201
- "value-expression-record-item": {
3202
- "patterns": [
3203
- {
3204
- "include": "#comment"
3205
- },
3206
- {
3207
- "include": "#module-path-simple-prefix"
3208
- },
3209
- {
3210
- "include": "#value-expression-record-field"
3211
- }
3212
- ]
3213
- },
3214
- "value-expression-record-look": {
3215
- "begin": "(?=\\.\\.\\.|([[:upper:]][[:word:]]*\\.)*([[:lower:]][[:word:]]*)[[:space:]]*[,:}])",
3216
- "end": "(?=})",
3217
- "patterns": [
3218
- {
3219
- "include": "#value-expression-record-item"
3220
- }
3221
- ]
3222
- },
3223
- "value-expression-switch": {
3224
- "begin": "\\b(switch)\\b",
3225
- "end": "(?\u003c=})",
3226
- "patterns": [
3227
- {
3228
- "include": "#value-expression-switch-head"
3229
- },
3230
- {
3231
- "include": "#value-expression-switch-body"
3232
- }
3233
- ],
3234
- "beginCaptures": {
3235
- "1": {
3236
- "name": "keyword.control.switch"
3237
- }
3238
- }
3239
- },
3240
- "value-expression-switch-body": {
3241
- "begin": "{",
3242
- "end": "}",
3243
- "patterns": [
3244
- {
3245
- "include": "#comment"
3246
- },
3247
- {
3248
- "include": "#value-expression-switch-pattern-match-rule"
3249
- }
3250
- ]
3251
- },
3252
- "value-expression-switch-head": {
3253
- "begin": "(?\u003c=switch)",
3254
- "end": "(?\u003c!switch)(?={)|(?=[;\\)]|\\b(and|as|class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|rec|type|val|with)\\b)",
3255
- "patterns": [
3256
- {
3257
- "include": "#comment"
3258
- },
3259
- {
3260
- "begin": "\\G[[:space:]]*+{",
3261
- "end": "}[[:space:]]*+",
3262
- "patterns": [
3263
- {
3264
- "include": "#value-expression-block-item"
3265
- }
3266
- ]
3267
- },
3268
- {
3269
- "include": "#value-expression-atomic-with-paths"
3270
- }
3271
- ]
3272
- },
3273
- "value-expression-switch-pattern-match-rule": {
3274
- "patterns": [
3275
- {
3276
- "include": "#value-expression-switch-pattern-match-rule-lhs"
3277
- },
3278
- {
3279
- "include": "#value-expression-switch-pattern-match-rule-rhs"
3280
- }
3281
- ]
3282
- },
3283
- "value-expression-switch-pattern-match-rule-lhs": {
3284
- "begin": "(?=\\|(?![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\]))",
3285
- "end": "(?==\u003e|[;\\)}])",
3286
- "patterns": [
3287
- {
3288
- "include": "#pattern-guard"
3289
- },
3290
- {
3291
- "include": "#pattern"
3292
- }
3293
- ]
3294
- },
3295
- "value-expression-switch-pattern-match-rule-rhs": {
3296
- "begin": "(=\u003e)",
3297
- "end": "(?=}|\\|(?![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\]))",
3298
- "patterns": [
3299
- {
3300
- "include": "#value-expression-block-item"
3301
- }
3302
- ],
3303
- "beginCaptures": {
3304
- "1": {
3305
- "name": "keyword.control.less"
3306
- }
3307
- }
3308
- },
3309
- "value-expression-try": {
3310
- "begin": "\\b(try)\\b",
3311
- "end": "(?\u003c=})|(?=[;\\)]|\\b(and|as|class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|rec|type|val|with)\\b)",
3312
- "patterns": [
3313
- {
3314
- "include": "#value-expression-try-head"
3315
- },
3316
- {
3317
- "include": "#value-expression-switch-body"
3318
- }
3319
- ],
3320
- "beginCaptures": {
3321
- "1": {
3322
- "name": "keyword.control.trycatch"
3323
- }
3324
- }
3325
- },
3326
- "value-expression-try-head": {
3327
- "begin": "(?\u003c=try)",
3328
- "end": "(?\u003c!try)(?={)|(?=[;\\)]|\\b(and|as|class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|rec|type|val|with)\\b)",
3329
- "patterns": [
3330
- {
3331
- "include": "#comment"
3332
- },
3333
- {
3334
- "begin": "\\G[[:space:]]*+{",
3335
- "end": "}[[:space:]]*+",
3336
- "patterns": [
3337
- {
3338
- "include": "#value-expression-block-item"
3339
- }
3340
- ]
3341
- },
3342
- {
3343
- "include": "#value-expression-atomic-with-paths"
3344
- }
3345
- ],
3346
- "beginCaptures": {
3347
- "1": {
3348
- "name": "keyword.control"
3349
- }
3350
- }
3351
- },
3352
- "value-expression-while": {
3353
- "begin": "\\b(while)\\b",
3354
- "end": "(?\u003c=})|(?=[;\\)]|\\b(and|as|class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|rec|type|val|with)\\b)",
3355
- "patterns": [
3356
- {
3357
- "include": "#value-expression-while-head"
3358
- },
3359
- {
3360
- "include": "#value-expression-block"
3361
- }
3362
- ],
3363
- "beginCaptures": {
3364
- "1": {
3365
- "name": "keyword.control.loop"
3366
- }
3367
- }
3368
- },
3369
- "value-expression-while-head": {
3370
- "begin": "(?\u003c=while)[[:space:]]*+",
3371
- "end": "(?={)|(?=[;\\)]|\\b(and|as|class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|rec|type|val|with)\\b)",
3372
- "patterns": [
3373
- {
3374
- "include": "#comment"
3375
- },
3376
- {
3377
- "include": "#value-expression-atomic-with-paths"
3378
- }
3379
- ]
3380
- }
3381
- }
3382
- }
1
+ {"name":"Reason","scopeName":"source.reason","patterns":[{"include":"#structure-expression-block-item"},{"include":"#value-expression"}],"repository":{"attribute":{"begin":"(?=\\[(@{1,3})[[:space:]]*[[:alpha:]])","end":"\\]","patterns":[{"begin":"\\[(@{1,3})","end":"(?=[^_\\.'[:word:]])","patterns":[{"include":"#attribute-identifier"}],"beginCaptures":{"1":{"name":"keyword.control.less"}}},{"include":"#attribute-payload"}]},"attribute-identifier":{"patterns":[{"match":"\\b([[:alpha:]][[:word:]]*)\\b[[:space:]]*(?:(\\.))","captures":{"1":{"name":"support.class entity.name.class"},"2":{"name":"keyword.control.less"}}},{"name":"entity.other.attribute-name.css constant.language constant.numeric","match":"\\b([[:alpha:]][[:word:]]*)\\b"}]},"attribute-payload":{"patterns":[{"begin":"(:)","end":"(?=\\])","patterns":[{"include":"#structure-expression"},{"include":"#module-item-type"},{"include":"#type-expression"}],"beginCaptures":{"1":{"name":"variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"}}},{"begin":"([\\?])","end":"(?=\\])","patterns":[{"include":"#pattern-guard"},{"include":"#pattern"}],"beginCaptures":{"1":{"name":"keyword.control.less"}}},{"include":"#structure-expression-block-item"},{"include":"#value-expression"}]},"class-item-inherit":{"begin":"\\b(inherit)\\b","end":"(;)|(?=}|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)","patterns":[{"include":"#value-expression"}],"beginCaptures":{"1":{"name":"keyword.other"}},"endCaptures":{"1":{"name":"variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"}}},"class-item-method":{"begin":"\\b(method)\\b","end":"(;)|(?=}|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|type|val|with)\\b)","patterns":[{"include":"#module-item-let-value-bind-name-params-type-body"}],"beginCaptures":{"1":{"name":"storage.type"}},"endCaptures":{"1":{"name":"variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"}}},"comment":{"patterns":[{"include":"#comment-line"},{"include":"#comment-block-doc"},{"include":"#comment-block"}]},"comment-block":{"name":"comment.block","begin":"/\\*","end":"\\*/","beginCaptures":{"0":{"name":"punctuation.definition.comment.begin"}},"endCaptures":{"0":{"name":"punctuation.definition.comment.end"}}},"comment-block-doc":{"name":"comment.block.documentation","begin":"/\\*\\*(?!/)","end":"\\*/","beginCaptures":{"0":{"name":"punctuation.definition.comment.begin"}},"endCaptures":{"0":{"name":"punctuation.definition.comment.end"}}},"comment-line":{"name":"comment.line.double-slash","begin":"(^[ \\t]+)?(//)","end":"$","beginCaptures":{"1":{"name":"punctuation.whitespace.leading"},"2":{"name":"punctuation.definition.comment"}}},"condition-lhs":{"begin":"(?\u003c![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\])([\\?])(?![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\])","end":"(?=[\\)])","patterns":[{"name":"keyword.control message.error variable.interpolation","match":"(?:\\b|[[:space:]]+)([?])(?:\\b|[[:space:]]+)"},{"include":"#value-expression"}],"beginCaptures":{"1":{"name":"keyword.control message.error variable.interpolation"}}},"extension-node":{"begin":"(?=\\[(%{1,3})[[:space:]]*[[:alpha:]])","end":"\\]","patterns":[{"begin":"\\[(%{1,3})","end":"(?=[^_\\.'[:word:]])","patterns":[{"include":"#attribute-identifier"}],"beginCaptures":{"1":{"name":"keyword.control.less"}}},{"include":"#attribute-payload"}]},"jsx":{"patterns":[{"include":"#jsx-head"},{"include":"#jsx-tail"}]},"jsx-attributes":{"patterns":[{"begin":"\\b([[:lower:]][[:word:]]*)\\b[[:space:]]*(=)","end":"(?\u003c![=])(?=[/\u003e[:lower:]])","patterns":[{"include":"#value-expression-atomic-with-paths"}],"beginCaptures":{"1":{"name":"markup.inserted constant.language support.property-value entity.name.filename"},"2":{"name":"keyword.control.less"}}},{"match":"(\\b([[:lower:]][[:word:]]*)\\b[[:space:]]*+)","captures":{"1":{},"2":{"name":"markup.inserted constant.language support.property-value entity.name.filename"}}}]},"jsx-body":{"begin":"((\u003e))","end":"(?=\u003c/)","patterns":[{"match":"[[:lower:]][[:word:]]*"},{"include":"#value-expression"}],"beginCaptures":{"1":{},"2":{"name":"punctuation.definition.tag.end.js"}}},"jsx-head":{"begin":"((\u003c))(?=[_[:alpha:]])","end":"((/\u003e))|(?=\u003c/)","patterns":[{"begin":"\\G","end":"(?=[[:space:]/\u003e])[[:space:]]*+","patterns":[{"include":"#module-path-simple"},{"name":"entity.name.tag.inline.any.html","match":"\\b[[:lower:]][[:word:]]*\\b"}]},{"include":"#jsx-attributes"},{"include":"#jsx-body"},{"include":"#comment"}],"beginCaptures":{"1":{},"2":{"name":"punctuation.definition.tag.begin.js"}},"endCaptures":{"1":{},"2":{"name":"punctuation.definition.tag.end.js"}},"applyEndPatternLast":true},"jsx-tail":{"begin":"\\G(/\u003e)|(\u003c/)","end":"(\u003e)","patterns":[{"include":"#module-path-simple"},{"name":"entity.name.tag.inline.any.html","match":"\\b[[:lower:]][[:word:]]*\\b"}],"beginCaptures":{"1":{"name":"punctuation.definition.tag.end.js"},"2":{"name":"punctuation.definition.tag.begin.js"}},"endCaptures":{"1":{"name":"punctuation.definition.tag.end.js"}},"applyEndPatternLast":true},"module-item-class-type":{"begin":"\\b(class)\\b","end":"(;)|(?=}|\\b(and|class|constraint|exception|external|include|module|nonrec|open|private|rec|type|val|with)\\b)","patterns":[{"begin":"(?:\\G|^)[[:space:]]*\\b(type)\\b","end":"(?==)","patterns":[{"include":"#module-item-type-bind-name-tyvars"}],"beginCaptures":{"1":{"name":"entity.other.attribute-name.css constant.language constant.numeric"}}},{"begin":"(=)","end":"(?=;)","patterns":[{"include":"#attribute"},{"include":"#comment"},{"include":"#class-item-inherit"},{"include":"#class-item-method"}],"beginCaptures":{"1":{"name":"keyword.control.less"}}}],"beginCaptures":{"1":{"name":"keyword.other"}},"endCaptures":{"1":{"name":"variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"}}},"module-item-exception":{"begin":"\\b(exception)\\b","end":"(;)|(?=}|\\b(class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|type|val|with)\\b)","patterns":[{"include":"#module-item-type-bind-body-item"}],"beginCaptures":{"1":{"name":"keyword.other"}},"endCaptures":{"1":{"name":"variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"}}},"module-item-external":{"begin":"\\b(external)\\b","end":"(;)|(?=}|\\b(class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|type|val|with)\\b)","patterns":[{"include":"#module-item-let-value-bind-name-or-pattern"},{"include":"#module-item-let-value-bind-type"},{"begin":"(=)","end":"(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)","patterns":[{"include":"#attribute"},{"name":"string.double string.regexp","begin":"\"","end":"\"","patterns":[{"include":"#value-literal-string-escape"},{"match":"(?:(%)(.*?)|(caml.*?))(?=\"|(?:[^\\\\\\n]$))","captures":{"1":{"name":"entity.other.attribute-name.css constant.language constant.numeric"},"2":{"name":"variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"},"3":{"name":"variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"}}}]}],"beginCaptures":{"1":{"name":"keyword.control.less"}}}],"beginCaptures":{"1":{"name":"storage.type"}},"endCaptures":{"1":{"name":"variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"}}},"module-item-include":{"begin":"\\b(include)\\b","end":"(;)|(?=}|\\b(class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|type|val)\\b)","patterns":[{"include":"#signature-expression"}],"beginCaptures":{"1":{"name":"keyword.control.include"}},"endCaptures":{"1":{"name":"variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"}}},"module-item-let":{"begin":"\\b(let)\\b","end":"(;)|(?=}|\\b(class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|type|val|with)\\b)","patterns":[{"include":"#module-item-let-module"},{"include":"#module-item-let-value"}],"beginCaptures":{"1":{"name":"storage.type"}},"endCaptures":{"1":{"name":"variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"}}},"module-item-let-module":{"begin":"(?:\\G|^)[[:space:]]*\\b(module)\\b","end":"(?=[;}]|\\b(class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|type|val|with)\\b)","patterns":[{"include":"#comment"},{"include":"#module-item-let-module-and"},{"include":"#module-item-let-module-rec"},{"include":"#module-item-let-module-bind-name-params-type-body"}],"beginCaptures":{"1":{"name":"variable.other.class.js variable.interpolation keyword.control storage.type message.error"}}},"module-item-let-module-and":{"begin":"\\b(and)\\b","end":"(?=[;}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)","patterns":[{"include":"#module-item-let-module-bind-name-params-type-body"}],"beginCaptures":{"1":{"name":"storage.type"}}},"module-item-let-module-bind-body":{"begin":"(=\u003e?)","end":"(?=[;}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)","patterns":[{"include":"#structure-expression"}],"beginCaptures":{"1":{"name":"keyword.control.less"}}},"module-item-let-module-bind-name-params":{"begin":"\\b([[:upper:]][[:word:]]*)\\b","end":"(?=[;:}=]|\\b(class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)","patterns":[{"include":"#comment"},{"include":"#module-item-let-module-param"}],"beginCaptures":{"1":{"name":"support.class entity.name.class"}}},"module-item-let-module-bind-name-params-type-body":{"begin":"(?:\\G|^)","end":"(?=[;}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)","patterns":[{"include":"#comment"},{"include":"#module-item-let-module-bind-name-params"},{"include":"#module-item-let-module-bind-type"},{"include":"#module-item-let-module-bind-body"}]},"module-item-let-module-bind-type":{"begin":"(:)","end":"(?=[;}=]|\\b(and|class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|rec|type|val)\\b)","patterns":[{"include":"#signature-expression"}],"beginCaptures":{"1":{"name":"variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"}}},"module-item-let-module-param":{"begin":"(?=\\()","end":"\\)","patterns":[{"begin":"\\(","end":"(?=[:])","patterns":[{"include":"#comment"},{"include":"#module-name-simple"}]},{"begin":"(:)","end":"(?=\\))","patterns":[{"include":"#signature-expression"}],"beginCaptures":{"1":{"name":"variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"}}}]},"module-item-let-module-rec":{"begin":"(?:\\G|^)[[:space:]]*\\b(rec)\\b","end":"(?=[;}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)","patterns":[{"include":"#module-item-let-module-bind-name-params-type-body"}],"beginCaptures":{"1":{"name":"keyword.control storage.modifier.rec"}}},"module-item-let-value":{"patterns":[{"include":"#module-item-let-value-and"},{"include":"#module-item-let-value-rec"},{"include":"#module-item-let-value-bind-name-params-type-body"}]},"module-item-let-value-and":{"begin":"\\b(and)\\b","end":"(?=[;}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)","patterns":[{"include":"#module-item-let-value-bind-name-params-type-body"}],"beginCaptures":{"1":{"name":"storage.type"}}},"module-item-let-value-bind-body":{"begin":"(=\u003e?)","end":"(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)","patterns":[{"include":"#value-expression"}],"beginCaptures":{"1":{"name":"keyword.control.less"}}},"module-item-let-value-bind-name-or-pattern":{"begin":"(?\u003c=[^[:word:]]and|^and|[^[:word:]]external|^external|[^[:word:]]let|^let|[^[:word:]]method|^method|[^[:word:]]rec|^rec)[[:space:]]*","end":"(?\u003c=[^[:space:]])|(?=[[:space:]]|[;:}=]|\\b(and|as|class|constraint|exception|external|for|include|inherit|let|method|module|nonrec|open|private|rec|switch|try|type|val|while|with)\\b)","patterns":[{"include":"#comment"},{"match":"\\b(?:([_][[:word:]]+)|([[:lower:]][[:word:]]*))\\b","captures":{"1":{"name":"comment"},"2":{"name":"entity.name.function"}}},{"include":"#module-item-let-value-bind-parens-params"},{"include":"#pattern"}]},"module-item-let-value-bind-name-params-type-body":{"begin":"(?\u003c=[^[:word:]]and|^and|[^[:word:]]external|^external|[^[:word:]]let|^let|[^[:word:]]method|^method|[^[:word:]]rec|^rec)","end":"(?=[;}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)","patterns":[{"begin":"(::)","end":"(?\u003c=[[:space:]])","patterns":[{"include":"#pattern"},{"begin":"(=)","end":"(\\?)|(?\u003c=[^[:space:]=][[:space:]])(?=[[:space:]]*+[^\\.])","patterns":[{"include":"#value-expression-atomic-with-paths"}],"beginCaptures":{"1":{"name":"markup.inserted keyword.control.less message.error"}},"endCaptures":{"1":{"name":"storage.type"}}}],"beginCaptures":{"1":{"name":"keyword.control"}}},{"include":"#module-item-let-value-bind-name-or-pattern"},{"include":"#module-item-let-value-bind-params-type"},{"include":"#module-item-let-value-bind-type"},{"include":"#module-item-let-value-bind-body"}]},"module-item-let-value-bind-params-type":{"begin":"(?=[^[:space:]:=])","end":"(?=[;}=]|\\b(class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)","patterns":[{"include":"#comment"},{"include":"#module-item-let-value-param"},{"begin":"(?\u003c![:])(:)[[:space:]]*(?![[:space:]]*[:\\)])","end":"(?=[;}=]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|val|with)\\b)","patterns":[{"include":"#type-expression-atomic"}],"beginCaptures":{"1":{"name":"variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"}}}]},"module-item-let-value-bind-parens-params":{"begin":"\\((?![\\)])","end":"\\)","patterns":[{"include":"#operator"},{"include":"#pattern-parens-lhs"},{"include":"#type-annotation-rhs"},{"include":"#pattern"}]},"module-item-let-value-bind-pattern":{"begin":"(?\u003c=[^[:word:]]and|^and|[^[:word:]]external|^external|[^[:word:]]let|^let|[^[:word:]]method|^method|[^[:word:]]rec|^rec)","end":"(?=[;:}=]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)","patterns":[{"include":"#comment"},{"include":"#module-item-let-value-bind-parens-params"},{"include":"#pattern"}]},"module-item-let-value-bind-type":{"begin":"(?\u003c![:])(:)(?![[:space:]]*[:\\)])","end":"(?==[^\u003e]|[;}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|val|with)\\b)","patterns":[{"begin":"\\b(type)\\b","end":"([\\.])","patterns":[{"include":"#pattern-variable"}],"beginCaptures":{"1":{"name":"entity.other.attribute-name.css constant.language constant.numeric"}},"endCaptures":{"1":{"name":"entity.name.function"}}},{"include":"#type-expression"}],"beginCaptures":{"1":{"name":"variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"}}},"module-item-let-value-param":{"patterns":[{"include":"#module-item-let-value-param-label"},{"include":"#module-item-let-value-param-type"},{"include":"#module-item-let-value-param-module"},{"include":"#pattern"}]},"module-item-let-value-param-label":{"patterns":[{"begin":"(\\b[[:lower:]][[:word:]]*\\b)?[[:space:]]*(::)","end":"(?\u003c=[[:space:]])","patterns":[{"include":"#pattern"},{"begin":"(=)","end":"(\\?)|(?\u003c=[^[:space:]=][[:space:]])(?=[[:space:]]*+[^\\.])","patterns":[{"include":"#value-expression-atomic-with-paths"}],"beginCaptures":{"1":{"name":"markup.inserted keyword.control.less message.error"}},"endCaptures":{"1":{"name":"storage.type"}}}],"beginCaptures":{"1":{"name":"markup.inserted constant.language support.property-value entity.name.filename"},"2":{"name":"keyword.control"}}}]},"module-item-let-value-param-module":{"begin":"\\([[:space:]]*(?=\\b(module)\\b)","end":"\\)","patterns":[{"begin":"\\b(module)\\b","end":"(?=\\))","patterns":[{"name":"support.class entity.name.class","match":"\\b[[:upper:]][[:word:]]*\\b"}],"beginCaptures":{"1":{"name":"keyword.other message.error"}}}]},"module-item-let-value-param-type":{"begin":"\\((?=\\b(type)\\b)","end":"\\)","patterns":[{"begin":"\\b(type)\\b","end":"(?=\\))","patterns":[{"include":"#pattern-variable"}],"beginCaptures":{"1":{"name":"entity.other.attribute-name.css constant.language constant.numeric"}}}]},"module-item-let-value-rec":{"begin":"(?:\\G|^)[[:space:]]*\\b(rec)\\b","end":"(?=[;}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)","patterns":[{"include":"#module-item-let-value-bind-name-params-type-body"}],"beginCaptures":{"1":{"name":"keyword.control storage.modifier message.error"}}},"module-item-module":{"begin":"\\b(module)\\b[[:space:]]*(?!\\b(type)\\b|$)","end":"(;)|(?=}|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)","patterns":[{"include":"#module-item-let-module-and"},{"include":"#module-item-let-module-rec"},{"include":"#module-item-let-module-bind-name-params-type-body"}],"beginCaptures":{"1":{"name":"storage.type message.error"}},"endCaptures":{"1":{"name":"variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"}}},"module-item-module-type":{"begin":"\\b(module)\\b[[:space:]]*(?=\\b(type)\\b|$)","end":"(;)|(?=}|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|val|with)\\b)","patterns":[{"begin":"(?:\\G|^)[[:space:]]*\\b(type)\\b","end":"(?==)","patterns":[{"include":"#comment"},{"match":"([[:upper:]][[:word:]]*)","captures":{"1":{"name":"support.class entity.name.class"}}}],"beginCaptures":{"1":{"name":"entity.other.attribute-name.css constant.language constant.numeric"}}},{"begin":"(=)","end":"(?=;)","patterns":[{"include":"#comment"},{"include":"#signature-expression"}],"beginCaptures":{"1":{"name":"keyword.control.less"}}}],"beginCaptures":{"1":{"name":"keyword.control message.error"}},"endCaptures":{"1":{"name":"variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"}}},"module-item-open":{"begin":"\\b(open)\\b","end":"(;)|(?=}|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)","patterns":[{"include":"#comment"},{"include":"#module-path-simple"}],"beginCaptures":{"1":{"name":"keyword.control.open"}},"endCaptures":{"1":{"name":"variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"}}},"module-item-type":{"begin":"\\b(type)\\b","end":"(;)|(?=[\\)}]|\\b(class|exception|external|include|inherit|let|method|nonrec|open|private|type|val|with)\\b)","patterns":[{"include":"#module-item-type-and"},{"include":"#module-item-type-constraint"},{"include":"#module-item-type-bind"}],"beginCaptures":{"1":{"name":"keyword.other"}},"endCaptures":{"1":{"name":"variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"}}},"module-item-type-and":{"begin":"\\b(and)\\b([[:space:]]*type)?","end":"(?=[;\\)}]|\\b(class|exception|external|include|inherit|let|method|nonrec|open|private|type|val|with)\\b)","patterns":[{"include":"#module-item-type-bind-name-tyvars-body"}],"beginCaptures":{"1":{"name":"keyword.other"},"2":{"name":"entity.other.attribute-name.css constant.language constant.numeric"}}},"module-item-type-bind":{"patterns":[{"include":"#module-item-type-bind-nonrec"},{"include":"#module-item-type-bind-name-tyvars-body"}]},"module-item-type-bind-body":{"begin":"(\\+?=)","end":"(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|rec|type|val|with)\\b)","patterns":[{"include":"#module-item-type-bind-body-item"}],"beginCaptures":{"1":{"name":"keyword.control.less"}}},"module-item-type-bind-body-item":{"patterns":[{"match":"(=)(?!\u003e)|\\b(private)\\b","captures":{"1":{"name":"keyword.control.less"},"2":{"name":"variable.other.class.js variable.interpolation storage.modifier message.error"}}},{"match":"\\b([[:upper:]][[:word:]]*)\\b(?![[:space:]]*[\\.\\(])","captures":{"1":{"name":"entity.other.attribute-name.css constant.language constant.numeric"}}},{"begin":"(\\.\\.)","end":"(?=[;}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)","beginCaptures":{"1":{"name":"keyword.control.less"}}},{"begin":"(\\|)(?![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\])[[:space:]]*","end":"(?=[;\\)}]|\\|(?![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\])|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)","patterns":[{"include":"#value-expression-constructor"},{"match":"([:])|\\b(of)\\b","captures":{"1":{"name":"keyword.control.less"},"2":{"name":"keyword.other"}}},{"include":"#type-expression"}],"beginCaptures":{"1":{"name":"variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"}}},{"match":"(:)|(\\|(?![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\]))|\\b(of)\\b","captures":{"1":{"name":"variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"},"2":{"name":"variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"},"3":{"name":"keyword.other"}}},{"include":"#type-expression"}]},"module-item-type-bind-name-tyvars":{"begin":"(?\u003c=\\G|^|\\.)[[:space:]]*\\b([[:lower:]][[:word:]]*)\\b","end":"(?=\\+?=|[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)","patterns":[{"include":"#comment"},{"include":"#attribute"},{"name":"comment","match":"_"},{"match":"([+\\-])?(?:(_)|(')([[:lower:]][[:word:]]*)\\b)(?!\\.[[:upper:]])","captures":{"1":{"name":"variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"},"2":{"name":"comment"},"3":{"name":"comment"},"4":{"name":"variable.parameter string.other.link variable.language"}}}],"beginCaptures":{"1":{"name":"entity.name.function"}}},"module-item-type-bind-name-tyvars-body":{"begin":"(?=(\\G|^)[[:space:]]*\\b[[:alpha:]])","end":"(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)","patterns":[{"include":"#module-path-simple-prefix"},{"include":"#module-item-type-bind-name-tyvars"},{"include":"#module-item-type-bind-body"}]},"module-item-type-bind-nonrec":{"begin":"(?:\\G|^)[[:space:]]*\\b(nonrec)\\b","end":"(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)","patterns":[{"include":"#module-item-type-bind-name-tyvars-body"}],"beginCaptures":{"1":{"name":"keyword.control storage.modifier message.error"}}},"module-item-type-constraint":{"begin":"\\b(constraint)\\b","end":"(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)","patterns":[{"match":"([+\\-])?(')([_[:lower:]][[:word:]]*)\\b(?!\\.[[:upper:]])","captures":{"1":{"name":"variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"},"2":{"name":"comment"},"3":{"name":"variable.parameter string.other.link variable.language"}}},{"name":"keyword.control.less","match":"="},{"include":"#type-expression"}],"beginCaptures":{"1":{"name":"variable.other.class.js variable.interpolation storage.modifier message.error"}}},"module-name-extended":{"patterns":[{"include":"#module-name-simple"},{"begin":"([\\(])","end":"([\\)])","patterns":[{"include":"#module-path-extended"}],"captures":{"1":{"name":"entity.other.attribute-name.css constant.language constant.numeric"}}}]},"module-name-simple":{"name":"support.class entity.name.class","match":"\\b[[:upper:]][[:word:]]*\\b"},"module-path-extended":{"patterns":[{"include":"#module-name-extended"},{"include":"#comment"},{"begin":"([\\.])","end":"(?\u003c=[[:word:]\\)])|(?=[^\\.[:upper:]/])","patterns":[{"begin":"(?\u003c=[\\.])","end":"(?\u003c=[[:word:]\\)])|(?=[^\\.[:upper:]/])","patterns":[{"include":"#comment"},{"include":"#module-name-extended"}]}],"beginCaptures":{"1":{"name":"keyword.control.less"}}}]},"module-path-extended-prefix":{"begin":"(?=\\b[[:upper:]])","end":"([\\.])|(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)","patterns":[{"include":"#module-path-extended"}],"endCaptures":{"1":{"name":"variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"}}},"module-path-simple":{"patterns":[{"include":"#module-name-simple"},{"include":"#comment"},{"begin":"([\\.])","end":"(?\u003c=[[:word:]\\)])|(?=[^\\.[:upper:]/])","patterns":[{"begin":"(?\u003c=[\\.])","end":"(?\u003c=[[:word:]\\)])|(?=[^\\.[:upper:]/])","patterns":[{"include":"#comment"},{"include":"#module-name-simple"}]}],"beginCaptures":{"1":{"name":"variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"}}}]},"module-path-simple-prefix":{"begin":"(?=\\b[[:upper:]])","end":"([\\.])|(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)","patterns":[{"include":"#module-path-simple"}],"endCaptures":{"1":{"name":"variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"}}},"object-item":{"begin":"\\G|(;)","end":"(?=[;}]|\\b(class|constraint|exception|external|include|let|module|nonrec|open|private|type|val|with)\\b)","patterns":[{"include":"#class-item-method"}],"beginCaptures":{"1":{"name":"variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"}}},"operator":{"patterns":[{"include":"#operator-infix"},{"include":"#operator-prefix"}]},"operator-infix":{"patterns":[{"name":"variable.other.class.js variable.interpolation keyword.operator keyword.control message.error","match":";"},{"include":"#operator-infix-assign"},{"include":"#operator-infix-builtin"},{"include":"#operator-infix-custom"},{}]},"operator-infix-assign":{"name":"variable.other.class.js variable.interpolation keyword.operator keyword.control.less message.error","match":"(?\u003c![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\])(=)(?![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\])"},"operator-infix-builtin":{"name":"variable.other.class.js variable.interpolation keyword.operator keyword.control.less message.error","match":":="},"operator-infix-custom":{"match":"(?:(?\u003c![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\])((\u003c\u003e))(?![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\]))|([#\\-@*/\u0026%^+\u003c=\u003e$\\\\][#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\]*|[|][#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\]+)","captures":{"1":{},"2":{"name":"punctuation.definition.tag.begin.js"},"3":{"name":"variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"}}},"operator-infix-custom-hash":{"name":"variable.other.class.js variable.interpolation keyword.operator keyword.control message.error","match":"#[\\-:!?.@*/\u0026%^+\u003c=\u003e|~$]+"},"operator-prefix":{"patterns":[{"include":"#operator-prefix-bang"},{"include":"#operator-prefix-label-token"}]},"operator-prefix-bang":{"name":"variable.other.class.js variable.interpolation keyword.operator keyword.control message.error","match":"![\\-:!?.@*/\u0026%^+\u003c=\u003e|~$]*"},"operator-prefix-label-token":{"name":"variable.other.class.js variable.interpolation keyword.operator keyword.control message.error","match":"[?~][\\-:!?.@*/\u0026%^+\u003c=\u003e|~$]+"},"pattern":{"patterns":[{"include":"#attribute"},{"include":"#comment"},{"include":"#pattern-atomic"},{"match":"[[:space:]]*+(?:(\\|(?![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\]))|\\b(as)\\b|(\\.\\.\\.?))[[:space:]]*+","captures":{"1":{"name":"variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"},"2":{"name":"keyword.other"},"3":{"name":"keyword.control"}}}]},"pattern-atomic":{"patterns":[{"name":"keyword.other","match":"\\b(exception)\\b"},{"include":"#value-expression-literal"},{"include":"#module-path-simple-prefix"},{"include":"#pattern-list-or-array"},{"include":"#pattern-record"},{"include":"#pattern-variable"},{"include":"#pattern-parens"}]},"pattern-guard":{"begin":"\\b(when)\\b","end":"(?==\u003e)","patterns":[{"include":"#value-expression"}],"beginCaptures":{"1":{"name":"keyword.other"}}},"pattern-list-or-array":{"begin":"(\\[\\|?)(?![@%])","end":"(\\|?\\])","patterns":[{"include":"#value-expression-literal-list-or-array-separator"},{"include":"#pattern"}],"beginCaptures":{"1":{"name":"entity.other.attribute-name.css constant.language constant.numeric"}},"endCaptures":{"1":{"name":"entity.other.attribute-name.css constant.language constant.numeric"}}},"pattern-parens":{"begin":"(?=\\()","end":"\\)|(?=[;}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)","patterns":[{"include":"#pattern-parens-lhs"},{"include":"#type-annotation-rhs"}]},"pattern-parens-lhs":{"begin":"\\(|(,)","end":"(?=(?:[,:\\)]))|(?=[;}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)","patterns":[{"include":"#pattern"}],"beginCaptures":{"1":{"name":"variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"}}},"pattern-record":{"begin":"{","end":"}","patterns":[{"include":"#comment"},{"include":"#pattern-record-item"}]},"pattern-record-field":{"begin":"\\b([_][[:word:]]*)\\b|\\b([[:lower:]][[:word:]]*)\\b","end":"(,)|(?=})","patterns":[{"include":"#comment"},{"begin":"\\G(:)","end":"(?=[,}])","patterns":[{"include":"#pattern"}],"beginCaptures":{"1":{"name":"variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"}}}],"beginCaptures":{"1":{"name":"comment"},"2":{"name":"markup.inserted constant.language support.property-value entity.name.filename"}},"endCaptures":{"1":{"name":"variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"}}},"pattern-record-item":{"patterns":[{"include":"#module-path-simple-prefix"},{"include":"#pattern-record-field"}]},"pattern-variable":{"patterns":[{"match":"\\b(_(?:[[:lower:]][[:word:]]*)?)\\b(?!\\.[[:upper:]])","captures":{"1":{"name":"comment"}}},{"match":"\\b([[:lower:]][[:word:]]*)\\b(?!\\.[[:upper:]])","captures":{"1":{"name":"variable.language string.other.link"}}}]},"record-path":{"begin":"\\b[[:lower:]][[:word:]]*\\b","end":"(?=[^[:space:]\\.])(?!/\\*)","patterns":[{"include":"#comment"},{"include":"#record-path-suffix"}]},"record-path-suffix":{"begin":"(\\.)","end":"(\\))|\\b([[:upper:]][[:word:]]*)\\b|\\b([[:lower:]][[:word:]]*)\\b|(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|with)\\b)","patterns":[{"include":"#comment"},{"begin":"([\\(])","end":"(?=[\\)])","patterns":[{"include":"#comment"},{"match":"\\b([[:lower:]][[:word:]]*)\\b(?=[^\\)]*([\\.]))","captures":{"1":{"name":"markup.inserted constant.language support.property-value entity.name.filename"},"2":{"name":"keyword.other"}}},{"name":"keyword.control.less","match":"([\\.])"},{"match":"\\b([[:lower:]][[:word:]]*)\\b[[:space:]]*","captures":{"1":{"name":"variable.parameter string.other.link variable.language"}}},{"include":"#value-expression"}],"beginCaptures":{"1":{"name":"keyword.control"}}}],"beginCaptures":{"1":{"name":"variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"}},"endCaptures":{"1":{"name":"keyword.control"},"2":{"name":"support.class entity.name.class"},"3":{"name":"markup.inserted constant.language support.property-value entity.name.filename"}}},"signature-expression":{"patterns":[{"begin":"(?=\\([[:space:]]*[[:upper:]][[:word:]]*[[:space:]]*:)","end":"(?=[;])","patterns":[{"begin":"(?=\\()","end":"(?=[;]|=\u003e)","patterns":[{"include":"#module-item-let-module-param"}]},{"begin":"(=\u003e)","end":"(?=[;\\(])","patterns":[{"include":"#structure-expression"}],"beginCaptures":{"1":{"name":"markup.inserted keyword.control.less"}}}]},{"begin":"\\b(module)\\b[[:space:]]*\\b(type)\\b([[:space:]]*\\b(of)\\b)?","end":"(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)","patterns":[{"include":"#comment"},{"include":"#module-path-simple"},{"name":"support.class entity.name.class","match":"\\b([[:upper:]][[:word:]]*)\\b"}],"beginCaptures":{"1":{"name":"markup.inserted keyword.other variable.other.readwrite.instance"},"2":{"name":"entity.other.attribute-name.css constant.language constant.numeric"},"3":{"name":"markup.inserted keyword.other variable.other.readwrite.instance"}}},{"include":"#signature-expression-constraints"},{"include":"#structure-expression"}]},"signature-expression-constraints":{"begin":"(?=\\b(with))","end":"(?=[;\\)}]|\\b(class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|val)\\b)","patterns":[{"begin":"\\b(and|with)\\b","end":"(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|val|with)\\b)","patterns":[{"include":"#comment"},{"begin":"\\b(type)\\b","end":"(?=[;\\)}]|\\b(class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|val|with)\\b)","patterns":[{"include":"#module-item-type-and"},{"include":"#module-item-type-constraint"},{"include":"#module-item-type-bind"}],"beginCaptures":{"1":{"name":"entity.other.attribute-name.css constant.language constant.numeric"}}},{"begin":"(?=\\b(module)\\b)","end":"(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|val|with)\\b)","patterns":[{"begin":"\\b(module)\\b","end":"(?=:?=|[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|type|val|with)\\b)","patterns":[{"include":"#comment"},{"include":"#module-path-simple"},{"name":"support.class entity.name.class","match":"[[:upper:]][[:word:]]*"}],"beginCaptures":{"1":{"name":"markup.inserted keyword.control storage.type variable.other.readwrite.instance"}}},{"begin":"(:=)|(=)","end":"(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|type|val|with)\\b)","patterns":[{"include":"#structure-expression"}],"beginCaptures":{"1":{"name":"markup.inserted keyword.control.less message.error"},"2":{"name":"markup.inserted keyword.control.less"}}}]}],"beginCaptures":{"1":{"name":"variable.other.class.js variable.interpolation storage.modifier message.error"}}}]},"structure-expression":{"patterns":[{"include":"#comment"},{"begin":"\\((?=[[:space:]]*(\\b(val)\\b|[^'\\[\u003c[:lower:]]))","end":"\\)|(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|with)\\b)","patterns":[{"include":"#comment"},{"include":"#structure-expression-block"},{"begin":"\\b(val)\\b","end":"(?=\\))|(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)","patterns":[{"include":"#comment"},{"name":"support.class entity.name.class","match":"\\b([[:lower:]][[:word:]]*)\\b"}],"beginCaptures":{"1":{"name":"keyword.other"}}},{"include":"#module-path-simple"},{"begin":"(:)","end":"(?=[\\)])|(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val)\\b)","patterns":[{"include":"#signature-expression"}],"beginCaptures":{"1":{"name":"variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"}}}]},{"include":"#module-path-simple"},{"include":"#structure-expression-block"}]},"structure-expression-block":{"begin":"{","end":"}","patterns":[{"include":"#structure-expression-block-item"}]},"structure-expression-block-item":{"patterns":[{"include":"#attribute"},{"include":"#comment"},{"include":"#module-item-exception"},{"include":"#module-item-external"},{"include":"#module-item-include"},{"include":"#module-item-let"},{"include":"#module-item-class-type"},{"include":"#module-item-module-type"},{"include":"#module-item-module"},{"include":"#module-item-open"},{"include":"#module-item-type"}]},"type-annotation-rhs":{"begin":"(?\u003c![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\])([:])(?![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\])","end":"(?=\\))|(?=[,;}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)","patterns":[{"include":"#type-expression"}],"beginCaptures":{"1":{"name":"variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"}}},"type-expression":{"patterns":[{"name":"entity.name.function","match":"([\\.])"},{"include":"#type-expression-atomic"},{"include":"#type-expression-arrow"}]},"type-expression-arrow":{"name":"markup.inserted keyword.control.less","match":"=\u003e"},"type-expression-atomic":{"patterns":[{"include":"#attribute"},{"include":"#comment"},{"include":"#module-path-extended-prefix"},{"include":"#type-expression-label"},{"name":"variable.other.class.js variable.interpolation storage.modifier message.error","match":"\\b(as)\\b"},{"include":"#type-expression-constructor"},{"include":"#type-expression-object"},{"include":"#type-expression-parens"},{"include":"#type-expression-polymorphic-variant"},{"include":"#type-expression-record"},{"include":"#type-expression-variable"}]},"type-expression-constructor":{"match":"(_)(?![[:alnum:]])|\\b([_[:lower:]][[:word:]]*)\\b(?!\\.[[:upper:]])","captures":{"1":{"name":"comment"},"2":{"name":"support.type string.regexp"}}},"type-expression-label":{"begin":"\\b([_[:lower:]][[:word:]]*)\\b(::)","end":"(?\u003c==\u003e)","patterns":[{"include":"#type-expression"},{"match":"(\\?)","captures":{"1":{"name":"keyword.control.less"}}}],"beginCaptures":{"1":{"name":"markup.inserted constant.language support.property-value entity.name.filename"},"2":{"name":"keyword.control"}}},"type-expression-object":{"begin":"(\u003c)","end":"(\u003e)","patterns":[{"begin":"(\\.\\.)","end":"(?=\u003e)","beginCaptures":{"1":{"name":"entity.other.attribute-name.css constant.language constant.numeric"}}},{"begin":"(?=[_[:lower:]])","end":"(,)|(?=\u003e)","patterns":[{"begin":"(?=[_[:lower:]])","end":"(?=:)","patterns":[{"match":"\\b([_[:lower:]][[:word:]]*)\\b","captures":{"1":{"name":"markup.inserted constant.language support.property-value entity.name.filename"}}}]},{"begin":"(:)","end":"(?=[,\u003e])","patterns":[{"include":"#type-expression"}],"beginCaptures":{"1":{"name":"variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"}}}],"endCaptures":{"1":{"name":"variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"}}}],"captures":{"1":{"name":"entity.name.function"}}},"type-expression-parens":{"begin":"\\(","end":"\\)","patterns":[{"begin":"\\b(module)\\b","end":"(?=[\\)])","patterns":[{"include":"#module-path-extended"},{"include":"#signature-expression-constraints"}],"beginCaptures":{"1":{"name":"keyword.other message.error"}}},{"name":"keyword.control.less","match":","},{"include":"#type-expression"}]},"type-expression-polymorphic-variant":{"begin":"(\\[)([\u003c\u003e])?","end":"(\\])","patterns":[{"begin":"(\\|)?(?![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\])[[:space:]]*","end":"(?=[;)}\\]]|\\|(?![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\])|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)","patterns":[{"include":"#value-expression-constructor"},{"match":"([:])|\\b(of)\\b|([\u0026])","captures":{"1":{"name":"keyword.control.less"},"2":{"name":"keyword.other"},"3":{"name":"variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"}}},{"include":"#value-expression-constructor-polymorphic"},{"include":"#type-expression"}],"beginCaptures":{"1":{"name":"variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"}}}],"captures":{"1":{"name":"entity.name.function"},"2":{"name":"variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"}}},"type-expression-record":{"begin":"{","end":"}","patterns":[{"include":"#type-expression-record-item"}]},"type-expression-record-field":{"patterns":[{"begin":"\\b(mutable)\\b","end":"(?\u003c=[,])|(?=})","patterns":[{"include":"#type-expression-record-field-sans-modifier"}],"beginCaptures":{"1":{"name":"variable.other.class.js variable.interpolation storage.modifier message.error"}}},{"include":"#type-expression-record-field-sans-modifier"}]},"type-expression-record-field-sans-modifier":{"begin":"\\b([_[:lower:]][[:word:]]*)\\b","end":"(,)|(?=[,}])","patterns":[{"include":"#comment"},{"begin":"(:)","end":"(?=[,}])","patterns":[{"include":"#type-expression"}],"beginCaptures":{"1":{"name":"variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"}}}],"beginCaptures":{"1":{"name":"markup.inserted constant.language support.property-value entity.name.filename"}},"endCaptures":{"1":{"name":"variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"}}},"type-expression-record-item":{"patterns":[{"include":"#comment"},{"include":"#module-path-simple-prefix"},{"include":"#type-expression-record-field"}]},"type-expression-variable":{"match":"(')([_[:lower:]][[:word:]]*)\\b(?!\\.[[:upper:]])","captures":{"1":{"name":"comment"},"2":{"name":"variable.parameter string.other.link variable.language"}}},"value-expression":{"patterns":[{"include":"#attribute"},{"include":"#comment"},{"include":"#extension-node"},{"include":"#jsx"},{"include":"#operator"},{"include":"#value-expression-builtin"},{"include":"#value-expression-if-then-else"},{"include":"#value-expression-atomic"},{"include":"#module-path-simple-prefix"},{"name":"variable.other.class.js variable.interpolation keyword.operator keyword.control message.error","match":"[:?]"},{"include":"#record-path"}]},"value-expression-atomic":{"patterns":[{"include":"#value-expression-literal"},{"include":"#value-expression-literal-list-or-array"},{"include":"#value-expression-for"},{"include":"#value-expression-fun"},{"include":"#value-expression-block-or-record-or-object"},{"include":"#value-expression-label"},{"include":"#value-expression-parens"},{"include":"#value-expression-switch"},{"include":"#value-expression-try"},{"include":"#value-expression-while"}]},"value-expression-atomic-with-paths":{"patterns":[{"include":"#value-expression-atomic"},{"include":"#module-path-simple-prefix"},{"include":"#record-path-suffix"}]},"value-expression-block":{"begin":"{","end":"}","patterns":[{"include":"#value-expression-block-item"}]},"value-expression-block-item":{"patterns":[{"include":"#module-item-let"},{"include":"#module-item-open"},{"include":"#value-expression"}]},"value-expression-block-look":{"begin":"(?![[:space:]]*($|\\.\\.\\.|([[:upper:]][[:word:]]*\\.)*([[:lower:]][[:word:]]*)[[:space:]]*(?:,|:(?![=]))))","end":"(?=})","patterns":[{"include":"#value-expression-block-item"}]},"value-expression-block-or-record-or-object":{"begin":"{","end":"}","patterns":[{"include":"#comment"},{"include":"#module-path-simple-prefix"},{"include":"#value-expression-object-look"},{"include":"#value-expression-record-look"},{"include":"#value-expression-block-look"}]},"value-expression-builtin":{"match":"\\b(assert|decr|failwith|fprintf|ignore|incr|land|lazy|lor|lsl|lsr|lxor|mod|new|not|printf|ref)\\b|\\b(raise)\\b","captures":{"1":{"name":"keyword.control message.error"},"2":{"name":"keyword.control.trycatch"}}},"value-expression-constructor":{"match":"\\b([[:upper:]][[:word:]]*)\\b(?![[:space:]]*[\\.])","captures":{"1":{"name":"entity.other.attribute-name.css constant.language constant.numeric"}}},"value-expression-constructor-polymorphic":{"match":"(`)([[:alpha:]][[:word:]]*)\\b(?!\\.)","captures":{"1":{"name":"constant.other.symbol keyword.control.less variable.parameter"},"2":{"name":"entity.other.attribute-name.css constant.language constant.numeric"}}},"value-expression-for":{"begin":"(?=\\b(for)\\b)","end":"(?\u003c=})|(?=[;]|\\b(and|as|class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|rec|type|val|with)\\b)","patterns":[{"include":"#value-expression-for-head"},{"include":"#value-expression-block"}]},"value-expression-for-head":{"begin":"(?=\\b(for)\\b)","end":"(?={)|(?=[;]|\\b(and|as|class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|rec|type|val|with)\\b)","patterns":[{"begin":"\\b(for)\\b","end":"(?=\\b(in)\\b)|(?=[;]|\\b(and|as|class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|rec|type|val|with)\\b)","patterns":[{"include":"#comment"},{"include":"#pattern-variable"}],"beginCaptures":{"1":{"name":"keyword.control.loop"}}},{"begin":"\\b(in)\\b","end":"(?=\\b(to)\\b)|(?=[;]|\\b(and|as|class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|rec|type|val|with)\\b)","patterns":[{"include":"#comment"},{"include":"#value-expression-atomic-with-paths"}],"beginCaptures":{"1":{"name":"keyword.control.loop"}}},{"begin":"\\b(to)\\b","end":"(?={)|(?=[;]|\\b(and|as|class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|rec|type|val|with)\\b)","patterns":[{"include":"#comment"},{"include":"#value-expression-atomic-with-paths"}],"beginCaptures":{"1":{"name":"keyword.control.loop"}}},{"include":"#value-expression-block"}]},"value-expression-fun":{"begin":"\\b(fun)\\b","end":"(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)","patterns":[{"include":"#value-expression-fun-pattern-match-rule-lhs"},{"include":"#value-expression-fun-pattern-match-rule-rhs"}],"beginCaptures":{"1":{"name":"keyword.control"}}},"value-expression-fun-pattern-match-rule-lhs":{"begin":"(?=\\|(?![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\]))|(?\u003c=fun)","end":"(\\|(?![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\]))|(?==\u003e)|(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)","patterns":[{"include":"#module-item-let-value-param"}],"beginCaptures":{"1":{"name":"variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"}},"endCaptures":{"1":{"name":"variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"}},"applyEndPatternLast":true},"value-expression-fun-pattern-match-rule-rhs":{"begin":"(=\u003e)","end":"(?=[;\\)}]|\\|(?![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\])|\\b(and)\\b)","patterns":[{"include":"#value-expression"}],"beginCaptures":{"1":{"name":"keyword.control.less"}}},"value-expression-if-then-else":{"begin":"\\b(if)\\b","end":"(?=[;\\)\\]}])","patterns":[{"include":"#comment"},{"begin":"\\b(else)\\b","end":"(?=[;\\)\\]}])","patterns":[{"include":"#value-expression"}],"beginCaptures":{"1":{"name":"keyword.control.conditional"}}},{"include":"#value-expression-atomic-with-paths"}],"beginCaptures":{"1":{"name":"keyword.control.conditional"}},"applyEndPatternLast":true},"value-expression-label":{"begin":"\\b([_[:lower:]][[:word:]]*)\\b[[:space:]]*(::)(\\?)?","end":"(?![[:space:]])","patterns":[{"include":"#value-expression"}],"beginCaptures":{"1":{"name":"markup.inserted constant.language support.property-value entity.name.filename"},"2":{"name":"keyword.control"},"3":{"name":"storage.type"}}},"value-expression-lazy":{"match":"\\b(lazy)\\b","captures":{"1":{"name":"keyword.other"}}},"value-expression-literal":{"patterns":[{"include":"#value-expression-literal-boolean"},{"include":"#value-expression-literal-character"},{"include":"#value-expression-constructor"},{"include":"#value-expression-constructor-polymorphic"},{"include":"#value-expression-lazy"},{"include":"#value-expression-literal-numeric"},{"include":"#value-expression-literal-string"},{"include":"#value-expression-literal-unit"}]},"value-expression-literal-boolean":{"name":"entity.other.attribute-name.css constant.language constant.numeric","match":"\\b(false|true)\\b"},"value-expression-literal-character":{"name":"constant.character","match":"(')([[:space:]]|[[:graph:]]|\\\\[\\\\\"'ntbr]|\\\\[[:digit:]][[:digit:]][[:digit:]]|\\\\x[[:xdigit:]][[:xdigit:]]|\\\\o[0-3][0-7][0-7])(')"},"value-expression-literal-list-or-array":{"begin":"(\\[\\|?)(?![@%])","end":"(\\|?\\])","patterns":[{"include":"#value-expression-literal-list-or-array-separator"},{"include":"#value-expression"},{"include":"#value-expression-literal-list-or-array"}],"beginCaptures":{"1":{"name":"constant.language.list"}},"endCaptures":{"1":{"name":"constant.language.list"}}},"value-expression-literal-list-or-array-separator":{"match":"(,)|(\\.\\.\\.)","captures":{"1":{"name":"variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"},"2":{"name":"keyword.control"}}},"value-expression-literal-numeric":{"patterns":[{"match":"([-])?([[:digit:]][_[:digit:]]*)(?:(\\.)([_[:digit:]]*))?(?:([eE])([\\-\\+])?([[:digit:]][_[:digit:]]*))?(?![bBoOxX])","captures":{"1":{"name":"keyword.control.less"},"2":{"name":"constant.numeric"},"3":{"name":"variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"},"4":{"name":"constant.numeric"},"5":{"name":"keyword.control.less"},"6":{"name":"keyword.control.less"},"7":{"name":"constant.numeric"}}},{"match":"([-])?(0[xX])([[:xdigit:]][_[:xdigit:]]*)(?:(\\.)([_[:xdigit:]]*))?(?:([pP])([\\-\\+])?([[:digit:]][_[:digit:]]*))?","captures":{"1":{"name":"keyword.control.less"},"2":{"name":"keyword.control.less"},"3":{"name":"constant.numeric"},"4":{"name":"variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"},"5":{"name":"constant.numeric"},"6":{"name":"keyword.control.less"},"7":{"name":"keyword.control.less"},"8":{"name":"constant.numeric"}}},{"match":"([-])?(0[oO])([0-7][_0-7]*)","captures":{"1":{"name":"keyword.control.less"},"2":{"name":"keyword.control.less"},"3":{"name":"constant.numeric"}}},{"match":"([-])?(0[bB])([0-1][_0-1]*)","captures":{"1":{"name":"keyword.control.less"},"2":{"name":"keyword.control.less"},"3":{"name":"constant.numeric"}}}]},"value-expression-literal-string":{"patterns":[{"begin":"(?\u003c![[:alpha:]])js_expr(?!=[[:word:]])","end":"(?\u003c=\")|(\\|)([_[:lower:]]*)?(})|(?=[^[:space:]\"{])","patterns":[{"begin":"({)([_[:lower:]]*)?(\\|)","end":"(?=\\|\\2})","patterns":[{"include":"source.js"}],"beginCaptures":{"1":{"name":"keyword.control.flow message.error"},"2":{"name":"entity.other.attribute-name.css constant.language constant.numeric"},"3":{"name":"keyword.control.flow message.error"}}},{"begin":"\"","end":"\"","patterns":[{"include":"source.js"}]}],"endCaptures":{"1":{"name":"keyword.control.flow message.error"},"2":{"name":"entity.other.attribute-name.css constant.language constant.numeric"},"3":{"name":"keyword.control.flow message.error"}}},{"name":"string.double string.regexp","begin":"({)([_[:lower:]]*)?(\\|)","end":"(\\|)(\\2)(})","beginCaptures":{"1":{"name":"keyword.control.flow message.error"},"2":{"name":"entity.other.attribute-name.css constant.language constant.numeric"},"3":{"name":"keyword.control.flow message.error"}},"endCaptures":{"1":{"name":"keyword.control.flow message.error"},"2":{"name":"entity.other.attribute-name.css constant.language constant.numeric"},"3":{"name":"keyword.control.flow message.error"}}},{"name":"string.double string.regexp","begin":"\"","end":"\"","patterns":[{"include":"#value-expression-literal-string-escape"}]}]},"value-expression-literal-string-escape":{"patterns":[{"name":"constant.character","match":"\\\\[\\\\\"'ntbr ]|\\\\[[:digit:]][[:digit:]][[:digit:]]|\\\\x[[:xdigit:]][[:xdigit:]]|\\\\o[0-3][0-7][0-7]"},{"match":"(@)([ \\[\\],.]|\\\\n)","captures":{"1":{"name":"keyword.control.less"},"2":{"name":"entity.other.attribute-name.css constant.language constant.numeric"}}},{"match":"(%)([ads])?","captures":{"1":{"name":"entity.other.attribute-name.css constant.language constant.numeric"},"2":{"name":"variable.other.readwrite.instance string.other.link variable.language"}}}]},"value-expression-literal-unit":{"name":"constant.language.unit","match":"\\(\\)"},"value-expression-object-look":{"begin":"(?:\\G|^)[[:space:]]*(?=method)","end":"(?=})","patterns":[{"include":"#object-item"}]},"value-expression-parens":{"begin":"(?=\\()","end":"(\\))|(?=[;}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)","patterns":[{"include":"#condition-lhs"},{"include":"#value-expression-parens-lhs"},{"include":"#type-annotation-rhs"}]},"value-expression-parens-lhs":{"begin":"(\\()|(,)","end":"(?=[?,:\\)]|\\b(and|as|class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|rec|type|val|with)\\b)","patterns":[{"begin":"\\b(module)\\b","end":"(?=\\))","patterns":[{"include":"#module-path-simple"}],"beginCaptures":{"1":{"name":"keyword.other message.error"}}},{"include":"#value-expression"}],"beginCaptures":{"2":{"name":"variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"}}},"value-expression-record-field":{"patterns":[{"begin":"(\\.\\.\\.)","end":"(,)|(?=})","patterns":[{"include":"#comment"},{"include":"#module-path-simple-prefix"},{"begin":"(?=[\\.])","end":"(?=[:,])","patterns":[{"name":"markup.inserted constant.language support.property-value entity.name.filename","match":"\\b[[:lower:]][[:word:]]*\\b"}]},{"begin":"(:)","end":"(?=[,}])","patterns":[{"include":"#value-expression"}],"beginCaptures":{"1":{"name":"variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"}}}],"beginCaptures":{"1":{"name":"keyword.control"}},"endCaptures":{"1":{"name":"variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"}}},{"begin":"\\b[[:upper:]][[:word:]]*\\b","end":"(,)|(?=})","patterns":[{"include":"#module-path-simple-prefix"},{"begin":"(:)","end":"(?=[,}])","patterns":[{"include":"#value-expression"}],"beginCaptures":{"1":{"name":"variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"}}}],"beginCaptures":{"1":{"name":"support.class entity.name.class"}},"endCaptures":{"1":{"name":"variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"}}},{"begin":"\\b([[:lower:]][[:word:]]*)\\b","end":"(,)|(?=})","patterns":[{"begin":"(:)","end":"(?=[,}])","patterns":[{"include":"#value-expression"}],"beginCaptures":{"1":{"name":"variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"}}}],"beginCaptures":{"1":{"name":"markup.inserted constant.language support.property-value entity.name.filename"}},"endCaptures":{"1":{"name":"variable.other.class.js variable.interpolation keyword.operator keyword.control message.error"}}}]},"value-expression-record-item":{"patterns":[{"include":"#comment"},{"include":"#module-path-simple-prefix"},{"include":"#value-expression-record-field"}]},"value-expression-record-look":{"begin":"(?=\\.\\.\\.|([[:upper:]][[:word:]]*\\.)*([[:lower:]][[:word:]]*)[[:space:]]*[,:}])","end":"(?=})","patterns":[{"include":"#value-expression-record-item"}]},"value-expression-switch":{"begin":"\\b(switch)\\b","end":"(?\u003c=})","patterns":[{"include":"#value-expression-switch-head"},{"include":"#value-expression-switch-body"}],"beginCaptures":{"1":{"name":"keyword.control.switch"}}},"value-expression-switch-body":{"begin":"{","end":"}","patterns":[{"include":"#comment"},{"include":"#value-expression-switch-pattern-match-rule"}]},"value-expression-switch-head":{"begin":"(?\u003c=switch)","end":"(?\u003c!switch)(?={)|(?=[;\\)]|\\b(and|as|class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|rec|type|val|with)\\b)","patterns":[{"include":"#comment"},{"begin":"\\G[[:space:]]*+{","end":"}[[:space:]]*+","patterns":[{"include":"#value-expression-block-item"}]},{"include":"#value-expression-atomic-with-paths"}]},"value-expression-switch-pattern-match-rule":{"patterns":[{"include":"#value-expression-switch-pattern-match-rule-lhs"},{"include":"#value-expression-switch-pattern-match-rule-rhs"}]},"value-expression-switch-pattern-match-rule-lhs":{"begin":"(?=\\|(?![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\]))","end":"(?==\u003e|[;\\)}])","patterns":[{"include":"#pattern-guard"},{"include":"#pattern"}]},"value-expression-switch-pattern-match-rule-rhs":{"begin":"(=\u003e)","end":"(?=}|\\|(?![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\]))","patterns":[{"include":"#value-expression-block-item"}],"beginCaptures":{"1":{"name":"keyword.control.less"}}},"value-expression-try":{"begin":"\\b(try)\\b","end":"(?\u003c=})|(?=[;\\)]|\\b(and|as|class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|rec|type|val|with)\\b)","patterns":[{"include":"#value-expression-try-head"},{"include":"#value-expression-switch-body"}],"beginCaptures":{"1":{"name":"keyword.control.trycatch"}}},"value-expression-try-head":{"begin":"(?\u003c=try)","end":"(?\u003c!try)(?={)|(?=[;\\)]|\\b(and|as|class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|rec|type|val|with)\\b)","patterns":[{"include":"#comment"},{"begin":"\\G[[:space:]]*+{","end":"}[[:space:]]*+","patterns":[{"include":"#value-expression-block-item"}]},{"include":"#value-expression-atomic-with-paths"}],"beginCaptures":{"1":{"name":"keyword.control"}}},"value-expression-while":{"begin":"\\b(while)\\b","end":"(?\u003c=})|(?=[;\\)]|\\b(and|as|class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|rec|type|val|with)\\b)","patterns":[{"include":"#value-expression-while-head"},{"include":"#value-expression-block"}],"beginCaptures":{"1":{"name":"keyword.control.loop"}}},"value-expression-while-head":{"begin":"(?\u003c=while)[[:space:]]*+","end":"(?={)|(?=[;\\)]|\\b(and|as|class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|rec|type|val|with)\\b)","patterns":[{"include":"#comment"},{"include":"#value-expression-atomic-with-paths"}]}}}