github-linguist 5.3.3 → 6.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (460) hide show
  1. checksums.yaml +4 -4
  2. data/bin/git-linguist +5 -2
  3. data/ext/linguist/linguist.c +18 -7
  4. data/grammars/annotation.liquidhaskell.haskell.json +969 -862
  5. data/grammars/config.xcompose.json +22 -25
  6. data/grammars/file.lasso.json +296 -309
  7. data/grammars/hint.haskell.json +867 -766
  8. data/grammars/hint.message.haskell.json +867 -766
  9. data/grammars/hint.type.haskell.json +867 -766
  10. data/grammars/objdump.x86asm.json +20 -24
  11. data/grammars/source.Kotlin.json +220 -225
  12. data/grammars/source.LS.json +36 -55
  13. data/grammars/source.MCPOST.json +24 -38
  14. data/grammars/source.MOD.json +26 -41
  15. data/grammars/source.SASLog.json +9 -16
  16. data/grammars/source.abap.json +48 -56
  17. data/grammars/source.abl.json +8 -14
  18. data/grammars/source.abnf.json +88 -98
  19. data/grammars/source.actionscript.3.json +398 -429
  20. data/grammars/source.acucobol.json +5 -8
  21. data/grammars/source.ada.json +46 -53
  22. data/grammars/source.afm.json +548 -554
  23. data/grammars/source.agc.json +34 -37
  24. data/grammars/source.agda.json +79 -91
  25. data/grammars/source.ahk.json +62 -66
  26. data/grammars/source.alloy.json +16 -20
  27. data/grammars/source.ampl.json +41 -47
  28. data/grammars/source.angelscript.json +71 -80
  29. data/grammars/source.antlr.json +131 -136
  30. data/grammars/source.apache-config.json +93 -99
  31. data/grammars/source.apache-config.mod_perl.json +19 -24
  32. data/grammars/source.apl.json +1038 -1029
  33. data/grammars/source.applescript.json +501 -523
  34. data/grammars/source.apt.json +9 -16
  35. data/grammars/source.asn.json +27 -31
  36. data/grammars/source.asp.json +61 -67
  37. data/grammars/source.aspectj.json +385 -391
  38. data/grammars/source.assembly.json +49 -55
  39. data/grammars/source.ats.json +45 -121
  40. data/grammars/source.autoit.json +64 -69
  41. data/grammars/source.awk.json +172 -176
  42. data/grammars/source.ballerina.json +48 -395
  43. data/grammars/source.batchfile.json +269 -269
  44. data/grammars/source.befunge.json +17 -21
  45. data/grammars/source.bf.json +5 -11
  46. data/grammars/source.bison.json +10 -14
  47. data/grammars/source.blitzmax.json +300 -305
  48. data/grammars/source.boo.json +189 -193
  49. data/grammars/source.brightauthorproject.json +8 -13
  50. data/grammars/source.brightscript.json +37 -47
  51. data/grammars/source.bro.json +134 -140
  52. data/grammars/source.bsl.json +152 -193
  53. data/grammars/source.bsv.json +96 -102
  54. data/grammars/source.c++.json +176 -193
  55. data/grammars/source.c++.qt.json +13 -21
  56. data/grammars/source.c.ec.json +15 -21
  57. data/grammars/source.c.json +237 -251
  58. data/grammars/source.c.platform.json +153 -159
  59. data/grammars/source.c2hs.json +3 -6
  60. data/grammars/source.cabal.json +17 -20
  61. data/grammars/source.cache.cmake.json +18 -23
  62. data/grammars/source.cake.json +4 -7
  63. data/grammars/source.camlp4.ocaml.json +24 -27
  64. data/grammars/source.capnp.json +33 -38
  65. data/grammars/source.ceylon.json +44 -50
  66. data/grammars/source.cfscript.cfc.json +78 -86
  67. data/grammars/source.cfscript.json +513 -520
  68. data/grammars/source.changelogs.rpm-spec.json +8 -16
  69. data/grammars/source.chapel.json +109 -87
  70. data/grammars/source.cirru.json +25 -30
  71. data/grammars/source.clarion.json +41 -54
  72. data/grammars/source.clean.json +90 -95
  73. data/grammars/source.click.json +25 -28
  74. data/grammars/source.clips.json +10 -23
  75. data/grammars/source.clojure.json +151 -168
  76. data/grammars/source.cm.json +14 -19
  77. data/grammars/source.cmake.json +53 -61
  78. data/grammars/source.cobol.json +165 -180
  79. data/grammars/source.coffee.json +454 -462
  80. data/grammars/source.cool.json +36 -43
  81. data/grammars/source.coq.json +17 -21
  82. data/grammars/source.crystal.json +889 -983
  83. data/grammars/source.cs.json +739 -740
  84. data/grammars/source.csound-document.json +69 -73
  85. data/grammars/source.csound-score.json +52 -55
  86. data/grammars/source.csound.json +167 -171
  87. data/grammars/source.css.json +683 -688
  88. data/grammars/source.css.less.json +211 -511
  89. data/grammars/source.css.mss.json +94 -101
  90. data/grammars/source.css.postcss.sugarss.json +260 -0
  91. data/grammars/source.csx.json +4 -7
  92. data/grammars/source.cuda-c++.json +47 -81
  93. data/grammars/source.cwl.json +103 -0
  94. data/grammars/source.cython.json +536 -582
  95. data/grammars/source.d.json +243 -252
  96. data/grammars/source.dart.json +161 -166
  97. data/grammars/source.data-weave.json +901 -905
  98. data/grammars/source.desktop.json +29 -33
  99. data/grammars/source.diff.json +43 -52
  100. data/grammars/source.disasm.json +15 -16
  101. data/grammars/source.ditroff.desc.json +73 -84
  102. data/grammars/source.ditroff.json +60 -61
  103. data/grammars/source.dm.json +202 -213
  104. data/grammars/source.dmf.json +44 -47
  105. data/grammars/source.dockerfile.json +29 -34
  106. data/grammars/source.dot.json +46 -55
  107. data/grammars/source.dylan.json +63 -68
  108. data/grammars/source.ebnf.json +55 -62
  109. data/grammars/source.eiffel.json +57 -62
  110. data/grammars/source.elixir.json +321 -366
  111. data/grammars/source.emacs.lisp.json +458 -249
  112. data/grammars/source.erazor.json +49 -57
  113. data/grammars/source.erlang.json +508 -515
  114. data/grammars/source.essl.json +17 -30
  115. data/grammars/source.factor.json +85 -91
  116. data/grammars/source.fan.json +92 -96
  117. data/grammars/source.fancy.json +93 -118
  118. data/grammars/source.fish.json +74 -98
  119. data/grammars/source.fontforge.json +142 -146
  120. data/grammars/source.forth.json +42 -57
  121. data/grammars/source.fortran.json +193 -231
  122. data/grammars/source.fortran.modern.json +77 -103
  123. data/grammars/source.fsharp.fsi.json +1 -6
  124. data/grammars/source.fsharp.fsl.json +1 -6
  125. data/grammars/source.fsharp.fsx.json +1 -6
  126. data/grammars/source.fsharp.json +148 -153
  127. data/grammars/source.gap.json +60 -70
  128. data/grammars/source.gcode.json +9 -16
  129. data/grammars/source.gdb.json +63 -79
  130. data/grammars/source.gdb.session.json +27 -28
  131. data/grammars/source.gdbregs.json +7 -8
  132. data/grammars/source.gdscript.json +92 -96
  133. data/grammars/source.gerber.json +38 -56
  134. data/grammars/source.gfm.json +447 -462
  135. data/grammars/source.glsl.json +58 -83
  136. data/grammars/source.gn.json +188 -193
  137. data/grammars/source.gnuplot.json +104 -120
  138. data/grammars/source.go.json +169 -181
  139. data/grammars/source.golo.json +82 -87
  140. data/grammars/source.gosu.2.json +58 -68
  141. data/grammars/source.grace.json +266 -270
  142. data/grammars/source.graphql.json +586 -596
  143. data/grammars/source.groovy.gradle.json +18 -22
  144. data/grammars/source.groovy.json +422 -433
  145. data/grammars/source.harbour.json +129 -173
  146. data/grammars/source.haskell.json +871 -772
  147. data/grammars/source.haxe.2.json +402 -413
  148. data/grammars/source.hlsl.json +6 -16
  149. data/grammars/source.hsc2hs.json +1 -4
  150. data/grammars/source.hsig.json +871 -770
  151. data/grammars/source.hss.1.json +122 -144
  152. data/grammars/source.httpspec.json +119 -123
  153. data/grammars/source.hxml.json +8 -15
  154. data/grammars/source.ideal.json +125 -125
  155. data/grammars/source.idl-dlm.json +25 -32
  156. data/grammars/source.idl.json +59 -80
  157. data/grammars/source.idris.json +171 -185
  158. data/grammars/source.inform7.json +117 -121
  159. data/grammars/source.ini.json +37 -43
  160. data/grammars/source.io.json +65 -73
  161. data/grammars/source.ioke.json +72 -78
  162. data/grammars/source.isabelle.root.json +26 -30
  163. data/grammars/source.isabelle.theory.json +46 -50
  164. data/grammars/source.j.json +18 -21
  165. data/grammars/source.jasmin.json +45 -50
  166. data/grammars/source.java-properties.json +31 -41
  167. data/grammars/source.java.json +333 -342
  168. data/grammars/source.jcl.json +15 -18
  169. data/grammars/source.jflex.json +166 -172
  170. data/grammars/source.jison.json +331 -334
  171. data/grammars/source.jisonlex-injection.json +1 -2
  172. data/grammars/source.jisonlex.json +148 -151
  173. data/grammars/source.jolie.json +37 -43
  174. data/grammars/source.jq.json +80 -87
  175. data/grammars/source.js.json +798 -818
  176. data/grammars/source.js.jsx.json +2115 -2225
  177. data/grammars/source.js.objj.json +167 -172
  178. data/grammars/source.js.regexp.json +50 -50
  179. data/grammars/source.js.regexp.replacement.json +7 -7
  180. data/grammars/source.jsdoc.json +94 -94
  181. data/grammars/source.json.json +61 -71
  182. data/grammars/source.julia.console.json +5 -6
  183. data/grammars/source.julia.json +237 -234
  184. data/grammars/source.lean.json +55 -67
  185. data/grammars/source.lid.json +6 -10
  186. data/grammars/source.lilypond.json +181 -195
  187. data/grammars/source.lisp.json +40 -50
  188. data/grammars/source.litcoffee.json +169 -183
  189. data/grammars/source.livescript.json +207 -220
  190. data/grammars/source.llvm.json +28 -38
  191. data/grammars/source.logos.json +7 -14
  192. data/grammars/source.logtalk.json +136 -141
  193. data/grammars/source.loomscript.json +77 -83
  194. data/grammars/source.lsl.json +90 -106
  195. data/grammars/source.lua.json +100 -109
  196. data/grammars/source.makefile.json +181 -188
  197. data/grammars/source.makegen.json +3 -7
  198. data/grammars/source.mask.json +260 -265
  199. data/grammars/source.mata.json +38 -46
  200. data/grammars/source.mathematica.json +155 -167
  201. data/grammars/source.matlab.json +407 -684
  202. data/grammars/source.maxscript.json +293 -281
  203. data/grammars/source.mercury.json +179 -184
  204. data/grammars/source.meson.json +52 -58
  205. data/grammars/source.meta-info.json +64 -74
  206. data/grammars/source.ml.json +107 -113
  207. data/grammars/source.modelica.json +51 -59
  208. data/grammars/source.modula2.json +33 -42
  209. data/grammars/source.monkey.json +234 -241
  210. data/grammars/source.moonscript.json +51 -56
  211. data/grammars/source.mql5.json +74 -101
  212. data/grammars/source.mupad.json +30 -72
  213. data/grammars/source.ncl.json +1 -14
  214. data/grammars/source.ne.json +39 -42
  215. data/grammars/source.nemerle.json +58 -63
  216. data/grammars/source.nesc.json +9 -15
  217. data/grammars/source.netlinx.erb.json +13 -25
  218. data/grammars/source.netlinx.json +231 -292
  219. data/grammars/source.nextflow-groovy.json +1360 -0
  220. data/grammars/source.nextflow.json +74 -0
  221. data/grammars/source.nginx.json +274 -287
  222. data/grammars/source.nim.json +442 -483
  223. data/grammars/source.nim_filter.json +6 -26
  224. data/grammars/source.nimcfg.json +38 -51
  225. data/grammars/source.ninja.json +64 -70
  226. data/grammars/source.nit.json +60 -64
  227. data/grammars/source.nix.json +269 -273
  228. data/grammars/source.nmml.json +31 -37
  229. data/grammars/source.nsis.json +66 -72
  230. data/grammars/source.nu.json +129 -139
  231. data/grammars/source.nut.json +129 -133
  232. data/grammars/source.objc++.json +3 -10
  233. data/grammars/source.objc.json +303 -314
  234. data/grammars/source.objc.platform.json +145 -151
  235. data/grammars/source.ocaml.json +506 -514
  236. data/grammars/source.ocamllex.json +108 -115
  237. data/grammars/source.ocamlyacc.json +116 -123
  238. data/grammars/source.ooc.json +148 -155
  239. data/grammars/source.opa.json +39 -49
  240. data/grammars/source.opal.json +84 -89
  241. data/grammars/source.opalsysdefs.json +9 -13
  242. data/grammars/source.opencobol.json +22 -25
  243. data/grammars/source.opentype.json +148 -152
  244. data/grammars/source.ox.json +36 -44
  245. data/grammars/source.oz.json +31 -38
  246. data/grammars/source.p4.json +49 -59
  247. data/grammars/source.pan.json +273 -278
  248. data/grammars/source.papyrus.skyrim.json +705 -781
  249. data/grammars/source.parrot.pir.json +59 -65
  250. data/grammars/source.pascal.json +54 -61
  251. data/grammars/source.pawn.json +835 -849
  252. data/grammars/source.pcb.board.json +153 -158
  253. data/grammars/source.pcb.schematic.json +134 -138
  254. data/grammars/source.pcb.sexp.json +64 -74
  255. data/grammars/source.pep8.json +28 -32
  256. data/grammars/source.perl.6.json +83 -92
  257. data/grammars/source.perl.json +711 -737
  258. data/grammars/source.perl6fe.json +1204 -1218
  259. data/grammars/source.php.zephir.json +80 -89
  260. data/grammars/source.pic.json +137 -142
  261. data/grammars/source.pig_latin.json +76 -80
  262. data/grammars/source.pike.json +23 -36
  263. data/grammars/source.po.json +74 -84
  264. data/grammars/source.pogoscript.json +23 -29
  265. data/grammars/source.pony.json +98 -108
  266. data/grammars/source.postcss.json +370 -0
  267. data/grammars/source.postscript.json +88 -97
  268. data/grammars/source.pov-ray sdl.json +36 -42
  269. data/grammars/source.powershell.json +175 -197
  270. data/grammars/source.processing.json +236 -249
  271. data/grammars/source.prolog.eclipse.json +33 -38
  272. data/grammars/source.prolog.json +66 -72
  273. data/grammars/source.protobuf.json +88 -94
  274. data/grammars/source.puppet.json +144 -151
  275. data/grammars/source.purescript.json +268 -289
  276. data/grammars/source.pyjade.json +256 -281
  277. data/grammars/source.python.django.json +13 -18
  278. data/grammars/source.python.json +3319 -3367
  279. data/grammars/source.python.salt.json +3 -7
  280. data/grammars/source.qmake.json +83 -90
  281. data/grammars/source.qml.json +57 -78
  282. data/grammars/source.quoting.perl6fe.json +666 -669
  283. data/grammars/source.r.json +75 -84
  284. data/grammars/source.racket.json +17 -38
  285. data/grammars/source.rascal.json +77 -80
  286. data/grammars/source.reason.hover.type.json +1 -1
  287. data/grammars/source.reason.json +1025 -1080
  288. data/grammars/source.rebol.json +167 -177
  289. data/grammars/source.red.json +169 -177
  290. data/grammars/source.regexp.babel.json +74 -77
  291. data/grammars/source.regexp.extended.json +4 -5
  292. data/grammars/source.regexp.json +260 -264
  293. data/grammars/source.regexp.perl6fe.json +108 -111
  294. data/grammars/source.regexp.python.json +210 -215
  295. data/grammars/source.regexp.spin.json +63 -72
  296. data/grammars/source.renpy.json +617 -687
  297. data/grammars/source.rexx.json +25 -32
  298. data/grammars/source.ring.json +84 -114
  299. data/grammars/source.rpm-spec.json +392 -401
  300. data/grammars/source.ruby.gemfile.json +9 -12
  301. data/grammars/source.ruby.json +862 -952
  302. data/grammars/source.ruby.rspec.cucumber.steps.json +90 -103
  303. data/grammars/source.rust.json +223 -281
  304. data/grammars/source.sas.json +88 -105
  305. data/grammars/source.sass.json +100 -108
  306. data/grammars/source.sbt.json +16 -23
  307. data/grammars/source.scad.json +60 -67
  308. data/grammars/source.scala.json +215 -228
  309. data/grammars/source.scaml.json +120 -135
  310. data/grammars/source.scheme.json +119 -136
  311. data/grammars/source.scilab.json +40 -47
  312. data/grammars/source.scss.json +369 -403
  313. data/grammars/source.sdbl.json +14 -25
  314. data/grammars/source.shaderlab.json +24 -27
  315. data/grammars/source.shell.json +409 -440
  316. data/grammars/source.shen.json +75 -94
  317. data/grammars/source.smali.json +232 -293
  318. data/grammars/source.smalltalk.json +60 -75
  319. data/grammars/source.smt.json +67 -82
  320. data/grammars/source.solidity.json +35 -54
  321. data/grammars/source.sp.json +40 -45
  322. data/grammars/source.sparql.json +3 -8
  323. data/grammars/source.spin.json +277 -297
  324. data/grammars/source.sqf.json +34 -44
  325. data/grammars/source.sql.json +142 -156
  326. data/grammars/source.stan.json +201 -160
  327. data/grammars/source.stata.json +57 -68
  328. data/grammars/source.strings.json +26 -30
  329. data/grammars/source.stylus.json +558 -565
  330. data/grammars/source.supercollider.json +33 -40
  331. data/grammars/source.swift.json +999 -1077
  332. data/grammars/source.systemverilog.json +351 -365
  333. data/grammars/source.tcl.json +77 -94
  334. data/grammars/source.tea.json +61 -67
  335. data/grammars/source.terra.json +25 -32
  336. data/grammars/source.terraform.json +68 -88
  337. data/grammars/source.thrift.json +300 -306
  338. data/grammars/source.tl.json +112 -117
  339. data/grammars/source.tla.json +65 -69
  340. data/grammars/source.toc.json +21 -25
  341. data/grammars/source.toml.json +117 -122
  342. data/grammars/source.ts.json +2838 -2774
  343. data/grammars/source.tsx.json +180 -184
  344. data/grammars/source.turing.json +970 -974
  345. data/grammars/source.turtle.json +124 -140
  346. data/grammars/source.txl.json +23 -37
  347. data/grammars/source.ucfconstraints.json +16 -21
  348. data/grammars/source.ur.json +15 -27
  349. data/grammars/source.vala.json +221 -235
  350. data/grammars/source.varnish.vcl.json +117 -129
  351. data/grammars/source.vbnet.json +69 -106
  352. data/grammars/source.verilog.json +101 -107
  353. data/grammars/source.vhdl.json +437 -445
  354. data/grammars/source.viml.json +540 -550
  355. data/grammars/source.wavefront.mtl.json +274 -277
  356. data/grammars/source.wavefront.obj.json +781 -784
  357. data/grammars/source.wdl.json +66 -46
  358. data/grammars/source.webassembly.json +97 -102
  359. data/grammars/source.webidl.json +311 -326
  360. data/grammars/source.x10.json +28 -32
  361. data/grammars/source.x86asm.json +21 -26
  362. data/grammars/source.xc.json +164 -172
  363. data/grammars/source.xq.json +81 -92
  364. data/grammars/source.xtend.json +199 -208
  365. data/grammars/source.yaml-ext.json +118 -124
  366. data/grammars/source.yaml.json +155 -174
  367. data/grammars/source.yaml.salt.json +113 -116
  368. data/grammars/source.yang.json +10 -13
  369. data/grammars/source.yara.json +98 -0
  370. data/grammars/text.bibtex.json +95 -100
  371. data/grammars/text.cfml.basic.json +403 -404
  372. data/grammars/text.elixir.json +18 -23
  373. data/grammars/text.error-list.json +15 -16
  374. data/grammars/text.find-refs.json +487 -488
  375. data/grammars/text.gherkin.feature.json +45 -53
  376. data/grammars/text.haml.json +176 -189
  377. data/grammars/text.hamlc.json +82 -88
  378. data/grammars/text.html.abl.json +16 -21
  379. data/grammars/text.html.asciidoc.json +139 -153
  380. data/grammars/text.html.asdoc.json +145 -155
  381. data/grammars/text.html.asp.json +23 -28
  382. data/grammars/text.html.basic.json +323 -338
  383. data/grammars/text.html.cfm.json +316 -325
  384. data/grammars/text.html.creole.json +177 -189
  385. data/grammars/text.html.django.json +27 -33
  386. data/grammars/text.html.ecr.json +21 -25
  387. data/grammars/text.html.elixir.json +3 -9
  388. data/grammars/text.html.erb.json +81 -85
  389. data/grammars/text.html.erlang.yaws.json +24 -29
  390. data/grammars/text.html.factor.json +5 -11
  391. data/grammars/text.html.ftl.json +16 -25
  392. data/grammars/text.html.handlebars.json +579 -598
  393. data/grammars/text.html.javadoc.json +426 -0
  394. data/grammars/text.html.js.json +11 -17
  395. data/grammars/text.html.jsp.json +377 -384
  396. data/grammars/text.html.liquid.json +8 -18
  397. data/grammars/text.html.mako.json +257 -275
  398. data/grammars/text.html.markdown.source.gfm.apib.json +419 -427
  399. data/grammars/text.html.markdown.source.gfm.mson.json +405 -414
  400. data/grammars/text.html.mediawiki.json +318 -344
  401. data/grammars/text.html.php.blade.json +2134 -2140
  402. data/grammars/text.html.php.json +980 -1013
  403. data/grammars/text.html.slash.json +101 -107
  404. data/grammars/text.html.smarty.json +75 -83
  405. data/grammars/text.html.soy.json +250 -253
  406. data/grammars/text.html.ssp.json +18 -24
  407. data/grammars/text.html.tcl.json +17 -24
  408. data/grammars/text.html.twig.json +712 -718
  409. data/grammars/text.idl-idldoc.json +5 -9
  410. data/grammars/text.jade.json +213 -235
  411. data/grammars/text.junit-test-report.json +25 -28
  412. data/grammars/text.log.latex.json +44 -46
  413. data/grammars/text.marko.json +370 -401
  414. data/grammars/text.python.console.json +3 -7
  415. data/grammars/text.python.traceback.json +2 -5
  416. data/grammars/text.rdoc.json +15 -19
  417. data/grammars/text.restructuredtext.clean.json +8 -11
  418. data/grammars/text.restructuredtext.json +886 -873
  419. data/grammars/text.robot.json +26 -36
  420. data/grammars/text.roff.json +2852 -2915
  421. data/grammars/text.runoff.json +56 -69
  422. data/grammars/text.sfd.json +151 -155
  423. data/grammars/text.shell-session.json +5 -8
  424. data/grammars/text.slim.json +184 -210
  425. data/grammars/text.srt.json +54 -57
  426. data/grammars/text.tex.json +98 -105
  427. data/grammars/text.tex.latex.beamer.json +14 -20
  428. data/grammars/text.tex.latex.haskell.json +883 -782
  429. data/grammars/text.tex.latex.json +281 -291
  430. data/grammars/text.tex.latex.memoir.json +39 -46
  431. data/grammars/text.tex.latex.rd.json +32 -38
  432. data/grammars/text.xml.ant.json +62 -69
  433. data/grammars/text.xml.flex-config.json +1009 -1013
  434. data/grammars/text.xml.genshi.json +10 -16
  435. data/grammars/text.xml.json +117 -130
  436. data/grammars/text.xml.pom.json +235 -240
  437. data/grammars/text.xml.xsl.json +31 -37
  438. data/grammars/text.zone_file.json +24 -29
  439. data/lib/linguist/blob.rb +10 -1
  440. data/lib/linguist/blob_helper.rb +4 -1
  441. data/lib/linguist/file_blob.rb +5 -0
  442. data/lib/linguist/generated.rb +16 -0
  443. data/lib/linguist/heuristics.rb +23 -11
  444. data/lib/linguist/language.rb +3 -6
  445. data/lib/linguist/languages.json +1 -1
  446. data/lib/linguist/languages.yml +74 -12
  447. data/lib/linguist/lazy_blob.rb +15 -1
  448. data/lib/linguist/linguist.bundle +0 -0
  449. data/lib/linguist/samples.json +1666 -3381
  450. data/lib/linguist/shebang.rb +2 -0
  451. data/lib/linguist/strategy/modeline.rb +2 -0
  452. data/lib/linguist/vendor.yml +5 -6
  453. data/lib/linguist/version.rb +1 -1
  454. metadata +12 -11
  455. data/grammars/source.elm.json +0 -381
  456. data/grammars/source.nant-build.json +0 -86
  457. data/grammars/source.octave.json +0 -451
  458. data/grammars/text.html.mediawiki.elm-build-output.json +0 -111
  459. data/grammars/text.html.mediawiki.elm-documentation.json +0 -22
  460. data/grammars/text.html.vue.json +0 -936
@@ -1,19 +1,15 @@
1
1
  {
2
- "scopeName": "source.perl6fe",
3
2
  "name": "Perl 6 FE",
4
- "fileTypes": [
5
- "p6",
6
- "pl6",
7
- "pm6",
8
- "t",
9
- "t6",
10
- "pod6",
11
- "nqp"
12
- ],
13
- "firstLineMatch": "(?x) ^ \\s* (?: use \\s v6 | =begin \\s pod | =comment | \\#!(?: perl6|/.*perl6 (?! \\S)) | my\\s*class )",
3
+ "scopeName": "source.perl6fe",
14
4
  "patterns": [
15
5
  {
6
+ "contentName": "comment.block.finish.perl6fe",
16
7
  "begin": "^\\s*(=)(finish)",
8
+ "patterns": [
9
+ {
10
+ "include": "#comment-block-syntax"
11
+ }
12
+ ],
17
13
  "beginCaptures": {
18
14
  "1": {
19
15
  "name": "storage.modifier.block.finish.perl6fe"
@@ -21,19 +17,20 @@
21
17
  "2": {
22
18
  "name": "keyword.operator.block.finish.perl6fe"
23
19
  }
24
- },
25
- "contentName": "comment.block.finish.perl6fe",
26
- "patterns": [
27
- {
28
- "include": "#comment-block-syntax"
29
- }
30
- ]
20
+ }
31
21
  },
32
22
  {
33
23
  "include": "#comment-block-delimited"
34
24
  },
35
25
  {
26
+ "contentName": "comment.block.paragraph.perl6fe",
36
27
  "begin": "^\\s*(=)(?:(para)|(for)\\s+(\\w+))",
28
+ "end": "(?=^\\s*$|^\\s*=\\w+.*$)",
29
+ "patterns": [
30
+ {
31
+ "include": "#comment-block-syntax"
32
+ }
33
+ ],
37
34
  "beginCaptures": {
38
35
  "1": {
39
36
  "name": "storage.modifier.block.paragraph.perl6fe"
@@ -44,19 +41,13 @@
44
41
  "3": {
45
42
  "name": "entity.other.attribute-name.paragraph.perl6fe"
46
43
  }
47
- },
48
- "end": "(?=^\\s*$|^\\s*=\\w+.*$)",
49
- "contentName": "comment.block.paragraph.perl6fe",
50
- "patterns": [
51
- {
52
- "include": "#comment-block-syntax"
53
- }
54
- ]
44
+ }
55
45
  },
56
46
  {
57
47
  "include": "#comment-block-abbreviated"
58
48
  },
59
49
  {
50
+ "name": "meta.documentation.block.declarator.perl6fe",
60
51
  "match": "^\\s*(#)([\\|\\=])(.*)\\n",
61
52
  "captures": {
62
53
  "1": {
@@ -68,267 +59,256 @@
68
59
  "3": {
69
60
  "name": "comment.inline.declarator.perl6fe"
70
61
  }
71
- },
72
- "name": "meta.documentation.block.declarator.perl6fe"
62
+ }
73
63
  },
74
64
  {
65
+ "name": "comment.multiline.hash-tick.triple_paren.perl6fe",
75
66
  "begin": "\\s*#`\\(\\(\\(",
76
67
  "end": "\\)\\)\\)",
77
- "name": "comment.multiline.hash-tick.triple_paren.perl6fe",
78
68
  "patterns": [
79
69
  {
70
+ "name": "comment.internal.triple_paren.perl6fe",
80
71
  "begin": "\\(\\(\\(",
81
- "end": "\\)\\)\\)",
82
- "name": "comment.internal.triple_paren.perl6fe"
72
+ "end": "\\)\\)\\)"
83
73
  }
84
74
  ]
85
75
  },
86
76
  {
77
+ "name": "comment.multiline.hash-tick.triple_bracket.perl6fe",
87
78
  "begin": "\\s*#`\\[\\[\\[",
88
79
  "end": "\\]\\]\\]",
89
- "name": "comment.multiline.hash-tick.triple_bracket.perl6fe",
90
80
  "patterns": [
91
81
  {
82
+ "name": "comment.internal.triple_bracket.perl6fe",
92
83
  "begin": "\\[\\[\\[",
93
- "end": "\\]\\]\\]",
94
- "name": "comment.internal.triple_bracket.perl6fe"
84
+ "end": "\\]\\]\\]"
95
85
  }
96
86
  ]
97
87
  },
98
88
  {
89
+ "name": "comment.multiline.hash-tick.triple_brace.perl6fe",
99
90
  "begin": "\\s*#`\\{\\{\\{",
100
91
  "end": "\\}\\}\\}",
101
- "name": "comment.multiline.hash-tick.triple_brace.perl6fe",
102
92
  "patterns": [
103
93
  {
94
+ "name": "comment.internal.triple_brace.perl6fe",
104
95
  "begin": "\\{\\{\\{",
105
- "end": "\\}\\}\\}",
106
- "name": "comment.internal.triple_brace.perl6fe"
96
+ "end": "\\}\\}\\}"
107
97
  }
108
98
  ]
109
99
  },
110
100
  {
111
- "begin": "\\s*#`<<<",
112
- "end": ">>>",
113
101
  "name": "comment.multiline.hash-tick.triple_angle.perl6fe",
102
+ "begin": "\\s*#`\u003c\u003c\u003c",
103
+ "end": "\u003e\u003e\u003e",
114
104
  "patterns": [
115
105
  {
116
- "begin": "<<<",
117
- "end": ">>>",
118
- "name": "comment.internal.triple_angle.perl6fe"
106
+ "name": "comment.internal.triple_angle.perl6fe",
107
+ "begin": "\u003c\u003c\u003c",
108
+ "end": "\u003e\u003e\u003e"
119
109
  }
120
110
  ]
121
111
  },
122
112
  {
123
- "begin": "\\s*#`<<",
124
- "end": ">>",
125
113
  "name": "comment.multiline.hash-tick.double_angle.perl6fe",
114
+ "begin": "\\s*#`\u003c\u003c",
115
+ "end": "\u003e\u003e",
126
116
  "patterns": [
127
117
  {
128
- "begin": "<<",
129
- "end": ">>",
130
- "name": "comment.internal.double_angle.perl6fe"
118
+ "name": "comment.internal.double_angle.perl6fe",
119
+ "begin": "\u003c\u003c",
120
+ "end": "\u003e\u003e"
131
121
  }
132
122
  ]
133
123
  },
134
124
  {
125
+ "name": "comment.multiline.hash-tick.double_paren.perl6fe",
135
126
  "begin": "\\s*#`\\(\\(",
136
127
  "end": "\\)\\)",
137
- "name": "comment.multiline.hash-tick.double_paren.perl6fe",
138
128
  "patterns": [
139
129
  {
130
+ "name": "comment.internal.double_paren.perl6fe",
140
131
  "begin": "\\(\\(",
141
- "end": "\\)\\)",
142
- "name": "comment.internal.double_paren.perl6fe"
132
+ "end": "\\)\\)"
143
133
  }
144
134
  ]
145
135
  },
146
136
  {
137
+ "name": "comment.multiline.hash-tick.double_bracket.perl6fe",
147
138
  "begin": "\\s*#`\\[\\[",
148
139
  "end": "\\]\\]",
149
- "name": "comment.multiline.hash-tick.double_bracket.perl6fe",
150
140
  "patterns": [
151
141
  {
142
+ "name": "comment.internal.double_bracket.perl6fe",
152
143
  "begin": "\\[\\[",
153
- "end": "\\]\\]",
154
- "name": "comment.internal.double_bracket.perl6fe"
144
+ "end": "\\]\\]"
155
145
  }
156
146
  ]
157
147
  },
158
148
  {
149
+ "name": "comment.multiline.hash-tick.double_brace.perl6fe",
159
150
  "begin": "\\s*#`{{",
160
151
  "end": "}}",
161
- "name": "comment.multiline.hash-tick.double_brace.perl6fe",
162
152
  "patterns": [
163
153
  {
154
+ "name": "comment.internal.double_brace.perl6fe",
164
155
  "begin": "{{",
165
- "end": "}}",
166
- "name": "comment.internal.double_brace.perl6fe"
156
+ "end": "}}"
167
157
  }
168
158
  ]
169
159
  },
170
160
  {
161
+ "name": "comment.multiline.hash-tick.brace.perl6fe",
171
162
  "begin": "\\s*#`{",
172
163
  "end": "}",
173
- "name": "comment.multiline.hash-tick.brace.perl6fe",
174
164
  "patterns": [
175
165
  {
166
+ "name": "comment.internal.brace.perl6fe",
176
167
  "begin": "{",
177
- "end": "}",
178
- "name": "comment.internal.brace.perl6fe"
168
+ "end": "}"
179
169
  }
180
170
  ]
181
171
  },
182
172
  {
183
- "begin": "\\s*#`<",
184
- "end": ">",
185
173
  "name": "comment.multiline.hash-tick.angle.perl6fe",
174
+ "begin": "\\s*#`\u003c",
175
+ "end": "\u003e",
186
176
  "patterns": [
187
177
  {
188
- "begin": "<",
189
- "end": ">",
190
- "name": "comment.internal.angle.perl6fe"
178
+ "name": "comment.internal.angle.perl6fe",
179
+ "begin": "\u003c",
180
+ "end": "\u003e"
191
181
  }
192
182
  ]
193
183
  },
194
184
  {
185
+ "name": "comment.multiline.hash-tick.paren.perl6fe",
195
186
  "begin": "\\s*#`\\(",
196
187
  "end": "\\)",
197
- "name": "comment.multiline.hash-tick.paren.perl6fe",
198
188
  "patterns": [
199
189
  {
190
+ "name": "comment.internal.paren.perl6fe",
200
191
  "begin": "\\(",
201
- "end": "\\)",
202
- "name": "comment.internal.paren.perl6fe"
192
+ "end": "\\)"
203
193
  }
204
194
  ]
205
195
  },
206
196
  {
197
+ "name": "comment.multiline.hash-tick.bracket.perl6fe",
207
198
  "begin": "\\s*#`\\[",
208
199
  "end": "\\]",
209
- "name": "comment.multiline.hash-tick.bracket.perl6fe",
210
200
  "patterns": [
211
201
  {
202
+ "name": "comment.internal.bracket.perl6fe",
212
203
  "begin": "\\[",
213
- "end": "\\]",
214
- "name": "comment.internal.bracket.perl6fe"
204
+ "end": "\\]"
215
205
  }
216
206
  ]
217
207
  },
218
208
  {
209
+ "name": "comment.multiline.hash-tick.left_double_right_double.perl6fe",
219
210
  "begin": "\\s*#`“",
220
211
  "end": "”",
221
- "name": "comment.multiline.hash-tick.left_double_right_double.perl6fe",
222
212
  "patterns": [
223
213
  {
214
+ "name": "comment.internal.left_double_right_double.perl6fe",
224
215
  "begin": "“",
225
- "end": "”",
226
- "name": "comment.internal.left_double_right_double.perl6fe"
216
+ "end": "”"
227
217
  }
228
218
  ]
229
219
  },
230
220
  {
221
+ "name": "comment.multiline.hash-tick.left_double-low-q_right_double.perl6fe",
231
222
  "begin": "\\s*#`„",
232
223
  "end": "”|“",
233
- "name": "comment.multiline.hash-tick.left_double-low-q_right_double.perl6fe",
234
224
  "patterns": [
235
225
  {
226
+ "name": "comment.internal.left_double-low-q_right_double.perl6fe",
236
227
  "begin": "„",
237
- "end": "”|“",
238
- "name": "comment.internal.left_double-low-q_right_double.perl6fe"
228
+ "end": "”|“"
239
229
  }
240
230
  ]
241
231
  },
242
232
  {
233
+ "name": "comment.multiline.hash-tick.left_single_right_single.perl6fe",
243
234
  "begin": "\\s*#`‘",
244
235
  "end": "’",
245
- "name": "comment.multiline.hash-tick.left_single_right_single.perl6fe",
246
236
  "patterns": [
247
237
  {
238
+ "name": "comment.internal.left_single_right_single.perl6fe",
248
239
  "begin": "‘",
249
- "end": "’",
250
- "name": "comment.internal.left_single_right_single.perl6fe"
240
+ "end": "’"
251
241
  }
252
242
  ]
253
243
  },
254
244
  {
245
+ "name": "comment.multiline.hash-tick.low-q_left_single.perl6fe",
255
246
  "begin": "\\s*#`‚",
256
247
  "end": "‘",
257
- "name": "comment.multiline.hash-tick.low-q_left_single.perl6fe",
258
248
  "patterns": [
259
249
  {
250
+ "name": "comment.internal.low-q_left_single.perl6fe",
260
251
  "begin": "‚",
261
- "end": "‘",
262
- "name": "comment.internal.low-q_left_single.perl6fe"
252
+ "end": "‘"
263
253
  }
264
254
  ]
265
255
  },
266
256
  {
257
+ "name": "comment.multiline.hash-tick.fw_cornerbracket.perl6fe",
267
258
  "begin": "\\s*#`「",
268
259
  "end": "」",
269
- "name": "comment.multiline.hash-tick.fw_cornerbracket.perl6fe",
270
260
  "patterns": [
271
261
  {
262
+ "name": "comment.internal.fw_cornerbracket.perl6fe",
272
263
  "begin": "「",
273
- "end": "」",
274
- "name": "comment.internal.fw_cornerbracket.perl6fe"
264
+ "end": "」"
275
265
  }
276
266
  ]
277
267
  },
278
268
  {
269
+ "name": "comment.multiline.hash-tick.hw_cornerbracket.perl6fe",
279
270
  "begin": "\\s*#`「",
280
271
  "end": "」",
281
- "name": "comment.multiline.hash-tick.hw_cornerbracket.perl6fe",
282
272
  "patterns": [
283
273
  {
274
+ "name": "comment.internal.hw_cornerbracket.perl6fe",
284
275
  "begin": "「",
285
- "end": "」",
286
- "name": "comment.internal.hw_cornerbracket.perl6fe"
276
+ "end": "」"
287
277
  }
288
278
  ]
289
279
  },
290
280
  {
281
+ "name": "comment.multiline.hash-tick.chevron.perl6fe",
291
282
  "begin": "\\s*#`«",
292
283
  "end": "»",
293
- "name": "comment.multiline.hash-tick.chevron.perl6fe",
294
284
  "patterns": [
295
285
  {
286
+ "name": "comment.internal.chevron.perl6fe",
296
287
  "begin": "«",
297
- "end": "»",
298
- "name": "comment.internal.chevron.perl6fe"
288
+ "end": "»"
299
289
  }
300
290
  ]
301
291
  },
302
292
  {
293
+ "name": "comment.multiline.hash-tick.s-shaped-bag-delimiter.perl6fe",
303
294
  "begin": "\\s*#`⟅",
304
295
  "end": "⟆",
305
- "name": "comment.multiline.hash-tick.s-shaped-bag-delimiter.perl6fe",
306
296
  "patterns": [
307
297
  {
298
+ "name": "comment.internal.s-shaped-bag-delimiter.perl6fe",
308
299
  "begin": "⟅",
309
- "end": "⟆",
310
- "name": "comment.internal.s-shaped-bag-delimiter.perl6fe"
300
+ "end": "⟆"
311
301
  }
312
302
  ]
313
303
  },
314
304
  {
305
+ "name": "string.quoted.left_double_right_double.perl6fe",
315
306
  "begin": "“",
316
- "beginCaptures": {
317
- "0": {
318
- "name": "punctuation.definition.string.begin.perl6fe"
319
- }
320
- },
321
307
  "end": "”",
322
- "endCaptures": {
323
- "0": {
324
- "name": "punctuation.definition.string.end.perl6fe"
325
- }
326
- },
327
- "name": "string.quoted.left_double_right_double.perl6fe",
328
308
  "patterns": [
329
309
  {
330
- "match": "\\\\[“”abtnfre\\\\\\{\\}]",
331
- "name": "constant.character.escape.perl6fe"
310
+ "name": "constant.character.escape.perl6fe",
311
+ "match": "\\\\[“”abtnfre\\\\\\{\\}]"
332
312
  },
333
313
  {
334
314
  "include": "#interpolation"
@@ -336,26 +316,26 @@
336
316
  {
337
317
  "include": "source.quoting.perl6fe#q_left_double_right_double_string_content"
338
318
  }
339
- ]
340
- },
341
- {
342
- "begin": "„",
319
+ ],
343
320
  "beginCaptures": {
344
321
  "0": {
345
322
  "name": "punctuation.definition.string.begin.perl6fe"
346
323
  }
347
324
  },
348
- "end": "”|“",
349
325
  "endCaptures": {
350
326
  "0": {
351
327
  "name": "punctuation.definition.string.end.perl6fe"
352
328
  }
353
- },
329
+ }
330
+ },
331
+ {
354
332
  "name": "string.quoted.left_double-low-q_right_double.perl6fe",
333
+ "begin": "„",
334
+ "end": "”|“",
355
335
  "patterns": [
356
336
  {
357
- "match": "\\\\[„”|“abtnfre\\\\\\{\\}]",
358
- "name": "constant.character.escape.perl6fe"
337
+ "name": "constant.character.escape.perl6fe",
338
+ "match": "\\\\[„”|“abtnfre\\\\\\{\\}]"
359
339
  },
360
340
  {
361
341
  "include": "#interpolation"
@@ -363,98 +343,98 @@
363
343
  {
364
344
  "include": "source.quoting.perl6fe#q_left_double-low-q_right_double_string_content"
365
345
  }
366
- ]
367
- },
368
- {
369
- "begin": "(?<=\\W|^)‘",
346
+ ],
370
347
  "beginCaptures": {
371
348
  "0": {
372
349
  "name": "punctuation.definition.string.begin.perl6fe"
373
350
  }
374
351
  },
375
- "end": "’",
376
352
  "endCaptures": {
377
353
  "0": {
378
354
  "name": "punctuation.definition.string.end.perl6fe"
379
355
  }
380
- },
356
+ }
357
+ },
358
+ {
381
359
  "name": "string.quoted.single.left_single_right_single.perl6fe",
360
+ "begin": "(?\u003c=\\W|^)‘",
361
+ "end": "’",
382
362
  "patterns": [
383
363
  {
384
- "match": "\\\\[‘’\\\\]",
385
- "name": "constant.character.escape.perl6fe"
364
+ "name": "constant.character.escape.perl6fe",
365
+ "match": "\\\\[‘’\\\\]"
386
366
  },
387
367
  {
388
368
  "include": "source.quoting.perl6fe#q_left_single_right_single_string_content"
389
369
  }
390
- ]
391
- },
392
- {
393
- "begin": "(?<=\\W|^)‚",
370
+ ],
394
371
  "beginCaptures": {
395
372
  "0": {
396
373
  "name": "punctuation.definition.string.begin.perl6fe"
397
374
  }
398
375
  },
399
- "end": "‘",
400
376
  "endCaptures": {
401
377
  "0": {
402
378
  "name": "punctuation.definition.string.end.perl6fe"
403
379
  }
404
- },
380
+ }
381
+ },
382
+ {
405
383
  "name": "string.quoted.single.low-q_left_single.perl6fe",
384
+ "begin": "(?\u003c=\\W|^)‚",
385
+ "end": "‘",
406
386
  "patterns": [
407
387
  {
408
- "match": "\\\\[‚‘\\\\]",
409
- "name": "constant.character.escape.perl6fe"
388
+ "name": "constant.character.escape.perl6fe",
389
+ "match": "\\\\[‚‘\\\\]"
410
390
  },
411
391
  {
412
392
  "include": "source.quoting.perl6fe#q_low-q_left_single_string_content"
413
393
  }
414
- ]
415
- },
416
- {
417
- "begin": "(?<=\\W|^)'",
394
+ ],
418
395
  "beginCaptures": {
419
396
  "0": {
420
397
  "name": "punctuation.definition.string.begin.perl6fe"
421
398
  }
422
399
  },
423
- "end": "'",
424
400
  "endCaptures": {
425
401
  "0": {
426
402
  "name": "punctuation.definition.string.end.perl6fe"
427
403
  }
428
- },
404
+ }
405
+ },
406
+ {
429
407
  "name": "string.quoted.single.single.perl6fe",
408
+ "begin": "(?\u003c=\\W|^)'",
409
+ "end": "'",
430
410
  "patterns": [
431
411
  {
432
- "match": "\\\\['\\\\]",
433
- "name": "constant.character.escape.perl6fe"
412
+ "name": "constant.character.escape.perl6fe",
413
+ "match": "\\\\['\\\\]"
434
414
  },
435
415
  {
436
416
  "include": "source.quoting.perl6fe#q_single_string_content"
437
417
  }
438
- ]
439
- },
440
- {
441
- "begin": "\"",
418
+ ],
442
419
  "beginCaptures": {
443
420
  "0": {
444
421
  "name": "punctuation.definition.string.begin.perl6fe"
445
422
  }
446
423
  },
447
- "end": "\"",
448
424
  "endCaptures": {
449
425
  "0": {
450
426
  "name": "punctuation.definition.string.end.perl6fe"
451
427
  }
452
- },
428
+ }
429
+ },
430
+ {
453
431
  "name": "string.quoted.double.perl6fe",
432
+ "begin": "\"",
433
+ "end": "\"",
454
434
  "patterns": [
455
435
  {
456
- "match": "\\\\[\"abtnfre\\\\\\{\\}]",
457
- "name": "constant.character.escape.perl6fe"
436
+ "name": "constant.character.escape.perl6fe",
437
+ "match": "\\\\[\"abtnfre\\\\\\{\\}]"
458
438
  },
459
439
  {
460
440
  "include": "#interpolation"
@@ -462,26 +442,26 @@
462
442
  {
463
443
  "include": "source.quoting.perl6fe#q_double_string_content"
464
444
  }
465
- ]
466
- },
467
- {
468
- "begin": "”",
445
+ ],
469
446
  "beginCaptures": {
470
447
  "0": {
471
448
  "name": "punctuation.definition.string.begin.perl6fe"
472
449
  }
473
450
  },
474
- "end": "”",
475
451
  "endCaptures": {
476
452
  "0": {
477
453
  "name": "punctuation.definition.string.end.perl6fe"
478
454
  }
479
- },
455
+ }
456
+ },
457
+ {
480
458
  "name": "string.quoted.right_double_right_double.perl6fe",
459
+ "begin": "”",
460
+ "end": "”",
481
461
  "patterns": [
482
462
  {
483
- "match": "\\\\[”abtnfre\\\\\\{\\}]",
484
- "name": "constant.character.escape.perl6fe"
463
+ "name": "constant.character.escape.perl6fe",
464
+ "match": "\\\\[”abtnfre\\\\\\{\\}]"
485
465
  },
486
466
  {
487
467
  "include": "#interpolation"
@@ -489,34 +469,46 @@
489
469
  {
490
470
  "include": "source.quoting.perl6fe#q_right_double_right_double_string_content"
491
471
  }
492
- ]
493
- },
494
- {
495
- "begin": "(^[ \\t]+)?(?=#)",
472
+ ],
496
473
  "beginCaptures": {
497
- "1": {
498
- "name": "punctuation.whitespace.comment.leading.perl6fe"
474
+ "0": {
475
+ "name": "punctuation.definition.string.begin.perl6fe"
499
476
  }
500
477
  },
478
+ "endCaptures": {
479
+ "0": {
480
+ "name": "punctuation.definition.string.end.perl6fe"
481
+ }
482
+ }
483
+ },
484
+ {
485
+ "begin": "(^[ \\t]+)?(?=#)",
501
486
  "end": "(?!\\G)",
502
487
  "patterns": [
503
488
  {
489
+ "name": "comment.line.number-sign.perl6fe",
504
490
  "begin": "#",
491
+ "end": "\\n",
505
492
  "beginCaptures": {
506
493
  "0": {
507
494
  "name": "punctuation.definition.comment.perl6fe"
508
495
  }
509
- },
510
- "end": "\\n",
511
- "name": "comment.line.number-sign.perl6fe"
496
+ }
512
497
  }
513
- ]
498
+ ],
499
+ "beginCaptures": {
500
+ "1": {
501
+ "name": "punctuation.whitespace.comment.leading.perl6fe"
502
+ }
503
+ }
514
504
  },
515
505
  {
516
- "match": "(?x) \\x{2208}|\\(elem\\)|\\x{2209}|\\!\\(elem\\)| \\x{220B}|\\(cont\\)|\\x{220C}|\\!\\(cont\\)| \\x{2286}|\\(<=\\) |\\x{2288}|\\!\\(<=\\) | \\x{2282}|\\(<\\) |\\x{2284}|\\!\\(<\\) | \\x{2287}|\\(>=\\) |\\x{2289}|\\!\\(>=\\) | \\x{2283}|\\(>\\) |\\x{2285}|\\!\\(>\\) | \\x{227C}|\\(<\\+\\)|\\x{227D}|\\(>\\+\\) | \\x{222A}|\\(\\|\\) |\\x{2229}|\\(&\\) | \\x{2216}|\\(\\-\\) |\\x{2296}|\\(\\^\\) | \\x{228D}|\\(\\.\\) |\\x{228E}|\\(\\+\\)",
517
- "name": "keyword.operator.setbagmix.perl6fe"
506
+ "name": "keyword.operator.setbagmix.perl6fe",
507
+ "match": "(?x) \\x{2208}|\\(elem\\)|\\x{2209}|\\!\\(elem\\)| \\x{220B}|\\(cont\\)|\\x{220C}|\\!\\(cont\\)| \\x{2286}|\\(\u003c=\\) |\\x{2288}|\\!\\(\u003c=\\) | \\x{2282}|\\(\u003c\\) |\\x{2284}|\\!\\(\u003c\\) | \\x{2287}|\\(\u003e=\\) |\\x{2289}|\\!\\(\u003e=\\) | \\x{2283}|\\(\u003e\\) |\\x{2285}|\\!\\(\u003e\\) | \\x{227C}|\\(\u003c\\+\\)|\\x{227D}|\\(\u003e\\+\\) | \\x{222A}|\\(\\|\\) |\\x{2229}|\\(\u0026\\) | \\x{2216}|\\(\\-\\) |\\x{2296}|\\(\\^\\) | \\x{228D}|\\(\\.\\) |\\x{228E}|\\(\\+\\)"
518
508
  },
519
509
  {
510
+ "name": "meta.class.perl6fe",
511
+ "match": "(?x) ( class|enum|grammar|knowhow|module| package|role|slang|subset|monitor|actor ) (\\s+) ( ( (?:::|')? (?: ([a-zA-Z_À-ÿ\\$]) ([a-zA-Z0-9_À-ÿ\\$]|[\\-'][a-zA-Z0-9_À-ÿ\\$])* ) )+ )",
520
512
  "captures": {
521
513
  "1": {
522
514
  "name": "storage.type.class.perl6fe"
@@ -524,15 +516,13 @@
524
516
  "3": {
525
517
  "name": "entity.name.type.class.perl6fe"
526
518
  }
527
- },
528
- "match": "(?x) ( class|enum|grammar|knowhow|module| package|role|slang|subset|monitor|actor ) (\\s+) ( ( (?:::|')? (?: ([a-zA-Z_À-ÿ\\$]) ([a-zA-Z0-9_À-ÿ\\$]|[\\-'][a-zA-Z0-9_À-ÿ\\$])* ) )+ )",
529
- "name": "meta.class.perl6fe"
519
+ }
530
520
  },
531
521
  {
532
522
  "include": "#p5_regex"
533
523
  },
534
524
  {
535
- "match": "(?x)\n(?<=\n ^\n | ^\\s\n | [\\s\\(] [^\\p{Nd}\\p{L}]\n | ~~\\s|~~\\s\\s|match\\(\n | match:\\s\n)\n([/]) # Solidus\n(.*?) # Regex contents\n(?: (?<!\\\\)|(?<=\\\\\\\\) ) (/) # Ending",
525
+ "match": "(?x)\n(?\u003c=\n ^\n | ^\\s\n | [\\s\\(] [^\\p{Nd}\\p{L}]\n | ~~\\s|~~\\s\\s|match\\(\n | match:\\s\n)\n([/]) # Solidus\n(.*?) # Regex contents\n(?: (?\u003c!\\\\)|(?\u003c=\\\\\\\\) ) (/) # Ending",
536
526
  "captures": {
537
527
  "1": {
538
528
  "name": "punctuation.definition.regexp.perl6fe"
@@ -554,8 +544,17 @@
554
544
  }
555
545
  },
556
546
  {
557
- "begin": "(?x)\n(?<= [=,(\\[]|when|=>|~~) \\s*\n(?:\n (m|rx|s)?\n (\n (?:\n (?<!:P5) # < This can maybe be removed because we\n \\s*:\\w+\n (?!\\s*:P5) # < include p5_regex above it\n )*\n )\n) # With the m or rx\n\\s*\n([/]) # Solidus",
558
- "end": "(?x) (?: (?<!\\\\)|(?<=\\\\\\\\)|(?<!')|(?<=\\\\ ') ) (/)",
547
+ "contentName": "string.regexp.perl6fe",
548
+ "begin": "(?x)\n(?\u003c= [=,(\\[]|when|=\u003e|~~) \\s*\n(?:\n (m|rx|s)?\n (\n (?:\n (?\u003c!:P5) # \u003c This can maybe be removed because we\n \\s*:\\w+\n (?!\\s*:P5) # \u003c include p5_regex above it\n )*\n )\n) # With the m or rx\n\\s*\n([/]) # Solidus",
549
+ "end": "(?x) (?: (?\u003c!\\\\)|(?\u003c=\\\\\\\\)|(?\u003c!')|(?\u003c=\\\\ ') ) (/)",
550
+ "patterns": [
551
+ {
552
+ "include": "#interpolation"
553
+ },
554
+ {
555
+ "include": "source.regexp.perl6fe"
556
+ }
557
+ ],
559
558
  "beginCaptures": {
560
559
  "1": {
561
560
  "name": "string.regexp.construct.perl6fe"
@@ -571,8 +570,12 @@
571
570
  "1": {
572
571
  "name": "punctuation.definition.regexp.perl6fe"
573
572
  }
574
- },
575
- "contentName": "string.regexp.perl6fe",
573
+ }
574
+ },
575
+ {
576
+ "contentName": "fstring.regexp.perl6fe",
577
+ "begin": "(?x)\n(?\u003c= ^|[=,(\\[~]|when|=\u003e ) \\s*\n(?:\n (m|rx|s)\n (\n (?:\n (?\u003c!:P5) # \u003c This can maybe be removed because we\n \\s*:\\w+\n (?!\\s*:P5) # \u003c include p5_regex above it\n )*\n )\n) # With the m or rx\n\\s*\n([{]) # Left curly brace",
578
+ "end": "(?x) (?: (?\u003c!\\\\)|(?\u003c=\\\\\\\\) ) (\\})",
576
579
  "patterns": [
577
580
  {
578
581
  "include": "#interpolation"
@@ -580,10 +583,7 @@
580
583
  {
581
584
  "include": "source.regexp.perl6fe"
582
585
  }
583
- ]
584
- },
585
- {
586
- "begin": "(?x)\n(?<= ^|[=,(\\[~]|when|=> ) \\s*\n(?:\n (m|rx|s)\n (\n (?:\n (?<!:P5) # < This can maybe be removed because we\n \\s*:\\w+\n (?!\\s*:P5) # < include p5_regex above it\n )*\n )\n) # With the m or rx\n\\s*\n([{]) # Left curly brace",
586
+ ],
587
587
  "beginCaptures": {
588
588
  "1": {
589
589
  "name": "string.regexp.construct.perl6fe"
@@ -595,13 +595,16 @@
595
595
  "name": "punctuation.definition.regexp.perl6fe"
596
596
  }
597
597
  },
598
- "end": "(?x) (?: (?<!\\\\)|(?<=\\\\\\\\) ) (\\})",
599
598
  "endCaptures": {
600
599
  "1": {
601
600
  "name": "punctuation.definition.regexp.perl6fe"
602
601
  }
603
- },
604
- "contentName": "fstring.regexp.perl6fe",
602
+ }
603
+ },
604
+ {
605
+ "contentName": "string.regexp.perl6fe",
606
+ "begin": "(?\u003c![\\w\\/])(m|rx)((?:\\s*:\\w+)*)\\s*(\\{)",
607
+ "end": "(?\u003c!\\\\)(\\})",
605
608
  "patterns": [
606
609
  {
607
610
  "include": "#interpolation"
@@ -609,10 +612,7 @@
609
612
  {
610
613
  "include": "source.regexp.perl6fe"
611
614
  }
612
- ]
613
- },
614
- {
615
- "begin": "(?<![\\w\\/])(m|rx)((?:\\s*:\\w+)*)\\s*(\\{)",
615
+ ],
616
616
  "beginCaptures": {
617
617
  "1": {
618
618
  "name": "string.regexp.construct.perl6fe"
@@ -624,13 +624,16 @@
624
624
  "name": "punctuation.definition.regexp.perl6fe"
625
625
  }
626
626
  },
627
- "end": "(?<!\\\\)(\\})",
628
627
  "endCaptures": {
629
628
  "1": {
630
629
  "name": "punctuation.definition.regexp.perl6fe"
631
630
  }
632
- },
631
+ }
632
+ },
633
+ {
633
634
  "contentName": "string.regexp.perl6fe",
635
+ "begin": "(?\u003c![\\w\\/])(m|rx)((?:\\s*:\\w+)*)\\s*(\\[)",
636
+ "end": "(?\u003c!\\\\)(\\])",
634
637
  "patterns": [
635
638
  {
636
639
  "include": "#interpolation"
@@ -638,10 +641,7 @@
638
641
  {
639
642
  "include": "source.regexp.perl6fe"
640
643
  }
641
- ]
642
- },
643
- {
644
- "begin": "(?<![\\w\\/])(m|rx)((?:\\s*:\\w+)*)\\s*(\\[)",
644
+ ],
645
645
  "beginCaptures": {
646
646
  "1": {
647
647
  "name": "string.regexp.construct.perl6fe"
@@ -653,44 +653,44 @@
653
653
  "name": "punctuation.definition.regexp.perl6fe"
654
654
  }
655
655
  },
656
- "end": "(?<!\\\\)(\\])",
657
656
  "endCaptures": {
658
657
  "1": {
659
658
  "name": "punctuation.definition.regexp.perl6fe"
660
659
  }
661
- },
662
- "contentName": "string.regexp.perl6fe",
660
+ }
661
+ },
662
+ {
663
+ "name": "string.quoted.single.perl6fe",
664
+ "begin": "(?\u003c=\\W|^)「",
665
+ "end": "」",
663
666
  "patterns": [
664
667
  {
665
- "include": "#interpolation"
666
- },
667
- {
668
- "include": "source.regexp.perl6fe"
668
+ "include": "source.quoting.perl6fe#q_hw_cornerbracket_string_content"
669
669
  }
670
- ]
671
- },
672
- {
673
- "begin": "(?<=\\W|^)「",
670
+ ],
674
671
  "beginCaptures": {
675
672
  "0": {
676
673
  "name": "punctuation.definition.string.begin.perl6fe"
677
674
  }
678
675
  },
679
- "end": "」",
680
676
  "endCaptures": {
681
677
  "0": {
682
678
  "name": "punctuation.definition.string.end.perl6fe"
683
679
  }
684
- },
685
- "name": "string.quoted.single.perl6fe",
680
+ }
681
+ },
682
+ {
683
+ "contentName": "string.regexp.slash.perl6fe",
684
+ "begin": "(?x)\n(?\u003c= ^|\\s )\n(?:\n (m|rx|s|S)\n (\n (?:\n (?\u003c!:P5) # \u003c This can maybe be removed because we\n \\s*:\\w+\n (?!\\s*:P5) # \u003c include p5_regex above it\n )*\n )\n)\n\\s*\n(/)",
685
+ "end": "(?x) (?: (?\u003c!\\\\)|(?\u003c=\\\\\\\\) ) (/)",
686
686
  "patterns": [
687
687
  {
688
- "include": "source.quoting.perl6fe#q_hw_cornerbracket_string_content"
688
+ "include": "#interpolation"
689
+ },
690
+ {
691
+ "include": "source.regexp.perl6fe"
689
692
  }
690
- ]
691
- },
692
- {
693
- "begin": "(?x)\n(?<= ^|\\s )\n(?:\n (m|rx|s|S)\n (\n (?:\n (?<!:P5) # < This can maybe be removed because we\n \\s*:\\w+\n (?!\\s*:P5) # < include p5_regex above it\n )*\n )\n)\n\\s*\n(/)",
693
+ ],
694
694
  "beginCaptures": {
695
695
  "1": {
696
696
  "name": "string.regexp.construct.slash.perl6fe"
@@ -702,24 +702,24 @@
702
702
  "name": "punctuation.definition.regexp.slash.perl6fe"
703
703
  }
704
704
  },
705
- "end": "(?x) (?: (?<!\\\\)|(?<=\\\\\\\\) ) (/)",
706
705
  "endCaptures": {
707
706
  "1": {
708
707
  "name": "punctuation.definition.regexp.slash.perl6fe"
709
708
  }
710
- },
711
- "contentName": "string.regexp.slash.perl6fe",
712
- "patterns": [
713
- {
714
- "include": "#interpolation"
709
+ }
710
+ },
711
+ {
712
+ "contentName": "string.regexp.brace.perl6fe",
713
+ "begin": "(?x)\n(?\u003c= ^|\\s )\n(?:\n (m|rx|s|S)\n (\n (?:\n (?\u003c!:P5) # \u003c This can maybe be removed because we\n \\s*:\\w+\n (?!\\s*:P5) # \u003c include p5_regex above it\n )*\n )\n)\n\\s*\n({)",
714
+ "end": "(?x) (?: (?\u003c!\\\\)|(?\u003c=\\\\\\\\) ) (})",
715
+ "patterns": [
716
+ {
717
+ "include": "#interpolation"
715
718
  },
716
719
  {
717
720
  "include": "source.regexp.perl6fe"
718
721
  }
719
- ]
720
- },
721
- {
722
- "begin": "(?x)\n(?<= ^|\\s )\n(?:\n (m|rx|s|S)\n (\n (?:\n (?<!:P5) # < This can maybe be removed because we\n \\s*:\\w+\n (?!\\s*:P5) # < include p5_regex above it\n )*\n )\n)\n\\s*\n({)",
722
+ ],
723
723
  "beginCaptures": {
724
724
  "1": {
725
725
  "name": "string.regexp.construct.brace.perl6fe"
@@ -731,13 +731,16 @@
731
731
  "name": "punctuation.definition.regexp.brace.perl6fe"
732
732
  }
733
733
  },
734
- "end": "(?x) (?: (?<!\\\\)|(?<=\\\\\\\\) ) (})",
735
734
  "endCaptures": {
736
735
  "1": {
737
736
  "name": "punctuation.definition.regexp.brace.perl6fe"
738
737
  }
739
- },
740
- "contentName": "string.regexp.brace.perl6fe",
738
+ }
739
+ },
740
+ {
741
+ "contentName": "string.regexp.angle.perl6fe",
742
+ "begin": "(?x)\n(?\u003c= ^|\\s )\n(?:\n (m|rx|s|S)\n (\n (?:\n (?\u003c!:P5) # \u003c This can maybe be removed because we\n \\s*:\\w+\n (?!\\s*:P5) # \u003c include p5_regex above it\n )*\n )\n)\n\\s*\n(\u003c)",
743
+ "end": "(?x) (?: (?\u003c!\\\\)|(?\u003c=\\\\\\\\) ) (\u003e)",
741
744
  "patterns": [
742
745
  {
743
746
  "include": "#interpolation"
@@ -745,10 +748,7 @@
745
748
  {
746
749
  "include": "source.regexp.perl6fe"
747
750
  }
748
- ]
749
- },
750
- {
751
- "begin": "(?x)\n(?<= ^|\\s )\n(?:\n (m|rx|s|S)\n (\n (?:\n (?<!:P5) # < This can maybe be removed because we\n \\s*:\\w+\n (?!\\s*:P5) # < include p5_regex above it\n )*\n )\n)\n\\s*\n(<)",
751
+ ],
752
752
  "beginCaptures": {
753
753
  "1": {
754
754
  "name": "string.regexp.construct.angle.perl6fe"
@@ -760,13 +760,16 @@
760
760
  "name": "punctuation.definition.regexp.angle.perl6fe"
761
761
  }
762
762
  },
763
- "end": "(?x) (?: (?<!\\\\)|(?<=\\\\\\\\) ) (>)",
764
763
  "endCaptures": {
765
764
  "1": {
766
765
  "name": "punctuation.definition.regexp.angle.perl6fe"
767
766
  }
768
- },
769
- "contentName": "string.regexp.angle.perl6fe",
767
+ }
768
+ },
769
+ {
770
+ "contentName": "string.regexp.paren.perl6fe",
771
+ "begin": "(?x)\n(?\u003c= ^|\\s )\n(?:\n (m|rx|s|S)\n (\n (?:\n (?\u003c!:P5) # \u003c This can maybe be removed because we\n \\s*:\\w+\n (?!\\s*:P5) # \u003c include p5_regex above it\n )*\n )\n)\n\\s*\n(\\()",
772
+ "end": "(?x) (?: (?\u003c!\\\\)|(?\u003c=\\\\\\\\) ) (\\))",
770
773
  "patterns": [
771
774
  {
772
775
  "include": "#interpolation"
@@ -774,10 +777,7 @@
774
777
  {
775
778
  "include": "source.regexp.perl6fe"
776
779
  }
777
- ]
778
- },
779
- {
780
- "begin": "(?x)\n(?<= ^|\\s )\n(?:\n (m|rx|s|S)\n (\n (?:\n (?<!:P5) # < This can maybe be removed because we\n \\s*:\\w+\n (?!\\s*:P5) # < include p5_regex above it\n )*\n )\n)\n\\s*\n(\\()",
780
+ ],
781
781
  "beginCaptures": {
782
782
  "1": {
783
783
  "name": "string.regexp.construct.paren.perl6fe"
@@ -789,13 +789,16 @@
789
789
  "name": "punctuation.definition.regexp.paren.perl6fe"
790
790
  }
791
791
  },
792
- "end": "(?x) (?: (?<!\\\\)|(?<=\\\\\\\\) ) (\\))",
793
792
  "endCaptures": {
794
793
  "1": {
795
794
  "name": "punctuation.definition.regexp.paren.perl6fe"
796
795
  }
797
- },
798
- "contentName": "string.regexp.paren.perl6fe",
796
+ }
797
+ },
798
+ {
799
+ "contentName": "string.regexp.bracket.perl6fe",
800
+ "begin": "(?x)\n(?\u003c= ^|\\s )\n(?:\n (m|rx|s|S)\n (\n (?:\n (?\u003c!:P5) # \u003c This can maybe be removed because we\n \\s*:\\w+\n (?!\\s*:P5) # \u003c include p5_regex above it\n )*\n )\n)\n\\s*\n(\\[)",
801
+ "end": "(?x) (?: (?\u003c!\\\\)|(?\u003c=\\\\\\\\) ) (\\])",
799
802
  "patterns": [
800
803
  {
801
804
  "include": "#interpolation"
@@ -803,10 +806,7 @@
803
806
  {
804
807
  "include": "source.regexp.perl6fe"
805
808
  }
806
- ]
807
- },
808
- {
809
- "begin": "(?x)\n(?<= ^|\\s )\n(?:\n (m|rx|s|S)\n (\n (?:\n (?<!:P5) # < This can maybe be removed because we\n \\s*:\\w+\n (?!\\s*:P5) # < include p5_regex above it\n )*\n )\n)\n\\s*\n(\\[)",
809
+ ],
810
810
  "beginCaptures": {
811
811
  "1": {
812
812
  "name": "string.regexp.construct.bracket.perl6fe"
@@ -818,13 +818,16 @@
818
818
  "name": "punctuation.definition.regexp.bracket.perl6fe"
819
819
  }
820
820
  },
821
- "end": "(?x) (?: (?<!\\\\)|(?<=\\\\\\\\) ) (\\])",
822
821
  "endCaptures": {
823
822
  "1": {
824
823
  "name": "punctuation.definition.regexp.bracket.perl6fe"
825
824
  }
826
- },
827
- "contentName": "string.regexp.bracket.perl6fe",
825
+ }
826
+ },
827
+ {
828
+ "contentName": "string.regexp.left_double_right_double.perl6fe",
829
+ "begin": "(?x)\n(?\u003c= ^|\\s )\n(?:\n (m|rx|s|S)\n (\n (?:\n (?\u003c!:P5) # \u003c This can maybe be removed because we\n \\s*:\\w+\n (?!\\s*:P5) # \u003c include p5_regex above it\n )*\n )\n)\n\\s*\n(“)",
830
+ "end": "(?x) (?: (?\u003c!\\\\)|(?\u003c=\\\\\\\\) ) (”)",
828
831
  "patterns": [
829
832
  {
830
833
  "include": "#interpolation"
@@ -832,10 +835,7 @@
832
835
  {
833
836
  "include": "source.regexp.perl6fe"
834
837
  }
835
- ]
836
- },
837
- {
838
- "begin": "(?x)\n(?<= ^|\\s )\n(?:\n (m|rx|s|S)\n (\n (?:\n (?<!:P5) # < This can maybe be removed because we\n \\s*:\\w+\n (?!\\s*:P5) # < include p5_regex above it\n )*\n )\n)\n\\s*\n(“)",
838
+ ],
839
839
  "beginCaptures": {
840
840
  "1": {
841
841
  "name": "string.regexp.construct.left_double_right_double.perl6fe"
@@ -847,13 +847,16 @@
847
847
  "name": "punctuation.definition.regexp.left_double_right_double.perl6fe"
848
848
  }
849
849
  },
850
- "end": "(?x) (?: (?<!\\\\)|(?<=\\\\\\\\) ) (”)",
851
850
  "endCaptures": {
852
851
  "1": {
853
852
  "name": "punctuation.definition.regexp.left_double_right_double.perl6fe"
854
853
  }
855
- },
856
- "contentName": "string.regexp.left_double_right_double.perl6fe",
854
+ }
855
+ },
856
+ {
857
+ "contentName": "string.regexp.left_double-low-q_right_double.perl6fe",
858
+ "begin": "(?x)\n(?\u003c= ^|\\s )\n(?:\n (m|rx|s|S)\n (\n (?:\n (?\u003c!:P5) # \u003c This can maybe be removed because we\n \\s*:\\w+\n (?!\\s*:P5) # \u003c include p5_regex above it\n )*\n )\n)\n\\s*\n(„)",
859
+ "end": "(?x) (?: (?\u003c!\\\\)|(?\u003c=\\\\\\\\) ) (”|“)",
857
860
  "patterns": [
858
861
  {
859
862
  "include": "#interpolation"
@@ -861,10 +864,7 @@
861
864
  {
862
865
  "include": "source.regexp.perl6fe"
863
866
  }
864
- ]
865
- },
866
- {
867
- "begin": "(?x)\n(?<= ^|\\s )\n(?:\n (m|rx|s|S)\n (\n (?:\n (?<!:P5) # < This can maybe be removed because we\n \\s*:\\w+\n (?!\\s*:P5) # < include p5_regex above it\n )*\n )\n)\n\\s*\n(„)",
867
+ ],
868
868
  "beginCaptures": {
869
869
  "1": {
870
870
  "name": "string.regexp.construct.left_double-low-q_right_double.perl6fe"
@@ -876,13 +876,16 @@
876
876
  "name": "punctuation.definition.regexp.left_double-low-q_right_double.perl6fe"
877
877
  }
878
878
  },
879
- "end": "(?x) (?: (?<!\\\\)|(?<=\\\\\\\\) ) (”|“)",
880
879
  "endCaptures": {
881
880
  "1": {
882
881
  "name": "punctuation.definition.regexp.left_double-low-q_right_double.perl6fe"
883
882
  }
884
- },
885
- "contentName": "string.regexp.left_double-low-q_right_double.perl6fe",
883
+ }
884
+ },
885
+ {
886
+ "contentName": "string.regexp.left_single_right_single.perl6fe",
887
+ "begin": "(?x)\n(?\u003c= ^|\\s )\n(?:\n (m|rx|s|S)\n (\n (?:\n (?\u003c!:P5) # \u003c This can maybe be removed because we\n \\s*:\\w+\n (?!\\s*:P5) # \u003c include p5_regex above it\n )*\n )\n)\n\\s*\n(‘)",
888
+ "end": "(?x) (?: (?\u003c!\\\\)|(?\u003c=\\\\\\\\) ) (’)",
886
889
  "patterns": [
887
890
  {
888
891
  "include": "#interpolation"
@@ -890,10 +893,7 @@
890
893
  {
891
894
  "include": "source.regexp.perl6fe"
892
895
  }
893
- ]
894
- },
895
- {
896
- "begin": "(?x)\n(?<= ^|\\s )\n(?:\n (m|rx|s|S)\n (\n (?:\n (?<!:P5) # < This can maybe be removed because we\n \\s*:\\w+\n (?!\\s*:P5) # < include p5_regex above it\n )*\n )\n)\n\\s*\n(‘)",
896
+ ],
897
897
  "beginCaptures": {
898
898
  "1": {
899
899
  "name": "string.regexp.construct.left_single_right_single.perl6fe"
@@ -905,13 +905,16 @@
905
905
  "name": "punctuation.definition.regexp.left_single_right_single.perl6fe"
906
906
  }
907
907
  },
908
- "end": "(?x) (?: (?<!\\\\)|(?<=\\\\\\\\) ) (’)",
909
908
  "endCaptures": {
910
909
  "1": {
911
910
  "name": "punctuation.definition.regexp.left_single_right_single.perl6fe"
912
911
  }
913
- },
914
- "contentName": "string.regexp.left_single_right_single.perl6fe",
912
+ }
913
+ },
914
+ {
915
+ "contentName": "string.regexp.low-q_left_single.perl6fe",
916
+ "begin": "(?x)\n(?\u003c= ^|\\s )\n(?:\n (m|rx|s|S)\n (\n (?:\n (?\u003c!:P5) # \u003c This can maybe be removed because we\n \\s*:\\w+\n (?!\\s*:P5) # \u003c include p5_regex above it\n )*\n )\n)\n\\s*\n(‚)",
917
+ "end": "(?x) (?: (?\u003c!\\\\)|(?\u003c=\\\\\\\\) ) (‘)",
915
918
  "patterns": [
916
919
  {
917
920
  "include": "#interpolation"
@@ -919,10 +922,7 @@
919
922
  {
920
923
  "include": "source.regexp.perl6fe"
921
924
  }
922
- ]
923
- },
924
- {
925
- "begin": "(?x)\n(?<= ^|\\s )\n(?:\n (m|rx|s|S)\n (\n (?:\n (?<!:P5) # < This can maybe be removed because we\n \\s*:\\w+\n (?!\\s*:P5) # < include p5_regex above it\n )*\n )\n)\n\\s*\n(‚)",
925
+ ],
926
926
  "beginCaptures": {
927
927
  "1": {
928
928
  "name": "string.regexp.construct.low-q_left_single.perl6fe"
@@ -934,13 +934,16 @@
934
934
  "name": "punctuation.definition.regexp.low-q_left_single.perl6fe"
935
935
  }
936
936
  },
937
- "end": "(?x) (?: (?<!\\\\)|(?<=\\\\\\\\) ) (‘)",
938
937
  "endCaptures": {
939
938
  "1": {
940
939
  "name": "punctuation.definition.regexp.low-q_left_single.perl6fe"
941
940
  }
942
- },
943
- "contentName": "string.regexp.low-q_left_single.perl6fe",
941
+ }
942
+ },
943
+ {
944
+ "contentName": "string.regexp.fw_cornerbracket.perl6fe",
945
+ "begin": "(?x)\n(?\u003c= ^|\\s )\n(?:\n (m|rx|s|S)\n (\n (?:\n (?\u003c!:P5) # \u003c This can maybe be removed because we\n \\s*:\\w+\n (?!\\s*:P5) # \u003c include p5_regex above it\n )*\n )\n)\n\\s*\n(「)",
946
+ "end": "(?x) (?: (?\u003c!\\\\)|(?\u003c=\\\\\\\\) ) (」)",
944
947
  "patterns": [
945
948
  {
946
949
  "include": "#interpolation"
@@ -948,10 +951,7 @@
948
951
  {
949
952
  "include": "source.regexp.perl6fe"
950
953
  }
951
- ]
952
- },
953
- {
954
- "begin": "(?x)\n(?<= ^|\\s )\n(?:\n (m|rx|s|S)\n (\n (?:\n (?<!:P5) # < This can maybe be removed because we\n \\s*:\\w+\n (?!\\s*:P5) # < include p5_regex above it\n )*\n )\n)\n\\s*\n(「)",
954
+ ],
955
955
  "beginCaptures": {
956
956
  "1": {
957
957
  "name": "string.regexp.construct.fw_cornerbracket.perl6fe"
@@ -963,13 +963,16 @@
963
963
  "name": "punctuation.definition.regexp.fw_cornerbracket.perl6fe"
964
964
  }
965
965
  },
966
- "end": "(?x) (?: (?<!\\\\)|(?<=\\\\\\\\) ) (」)",
967
966
  "endCaptures": {
968
967
  "1": {
969
968
  "name": "punctuation.definition.regexp.fw_cornerbracket.perl6fe"
970
969
  }
971
- },
972
- "contentName": "string.regexp.fw_cornerbracket.perl6fe",
970
+ }
971
+ },
972
+ {
973
+ "contentName": "string.regexp.hw_cornerbracket.perl6fe",
974
+ "begin": "(?x)\n(?\u003c= ^|\\s )\n(?:\n (m|rx|s|S)\n (\n (?:\n (?\u003c!:P5) # \u003c This can maybe be removed because we\n \\s*:\\w+\n (?!\\s*:P5) # \u003c include p5_regex above it\n )*\n )\n)\n\\s*\n(「)",
975
+ "end": "(?x) (?: (?\u003c!\\\\)|(?\u003c=\\\\\\\\) ) (」)",
973
976
  "patterns": [
974
977
  {
975
978
  "include": "#interpolation"
@@ -977,10 +980,7 @@
977
980
  {
978
981
  "include": "source.regexp.perl6fe"
979
982
  }
980
- ]
981
- },
982
- {
983
- "begin": "(?x)\n(?<= ^|\\s )\n(?:\n (m|rx|s|S)\n (\n (?:\n (?<!:P5) # < This can maybe be removed because we\n \\s*:\\w+\n (?!\\s*:P5) # < include p5_regex above it\n )*\n )\n)\n\\s*\n(「)",
983
+ ],
984
984
  "beginCaptures": {
985
985
  "1": {
986
986
  "name": "string.regexp.construct.hw_cornerbracket.perl6fe"
@@ -992,13 +992,16 @@
992
992
  "name": "punctuation.definition.regexp.hw_cornerbracket.perl6fe"
993
993
  }
994
994
  },
995
- "end": "(?x) (?: (?<!\\\\)|(?<=\\\\\\\\) ) (」)",
996
995
  "endCaptures": {
997
996
  "1": {
998
997
  "name": "punctuation.definition.regexp.hw_cornerbracket.perl6fe"
999
998
  }
1000
- },
1001
- "contentName": "string.regexp.hw_cornerbracket.perl6fe",
999
+ }
1000
+ },
1001
+ {
1002
+ "contentName": "string.regexp.chevron.perl6fe",
1003
+ "begin": "(?x)\n(?\u003c= ^|\\s )\n(?:\n (m|rx|s|S)\n (\n (?:\n (?\u003c!:P5) # \u003c This can maybe be removed because we\n \\s*:\\w+\n (?!\\s*:P5) # \u003c include p5_regex above it\n )*\n )\n)\n\\s*\n(«)",
1004
+ "end": "(?x) (?: (?\u003c!\\\\)|(?\u003c=\\\\\\\\) ) (»)",
1002
1005
  "patterns": [
1003
1006
  {
1004
1007
  "include": "#interpolation"
@@ -1006,10 +1009,7 @@
1006
1009
  {
1007
1010
  "include": "source.regexp.perl6fe"
1008
1011
  }
1009
- ]
1010
- },
1011
- {
1012
- "begin": "(?x)\n(?<= ^|\\s )\n(?:\n (m|rx|s|S)\n (\n (?:\n (?<!:P5) # < This can maybe be removed because we\n \\s*:\\w+\n (?!\\s*:P5) # < include p5_regex above it\n )*\n )\n)\n\\s*\n(«)",
1012
+ ],
1013
1013
  "beginCaptures": {
1014
1014
  "1": {
1015
1015
  "name": "string.regexp.construct.chevron.perl6fe"
@@ -1021,13 +1021,16 @@
1021
1021
  "name": "punctuation.definition.regexp.chevron.perl6fe"
1022
1022
  }
1023
1023
  },
1024
- "end": "(?x) (?: (?<!\\\\)|(?<=\\\\\\\\) ) (»)",
1025
1024
  "endCaptures": {
1026
1025
  "1": {
1027
1026
  "name": "punctuation.definition.regexp.chevron.perl6fe"
1028
1027
  }
1029
- },
1030
- "contentName": "string.regexp.chevron.perl6fe",
1028
+ }
1029
+ },
1030
+ {
1031
+ "contentName": "string.regexp.s-shaped-bag-delimiter.perl6fe",
1032
+ "begin": "(?x)\n(?\u003c= ^|\\s )\n(?:\n (m|rx|s|S)\n (\n (?:\n (?\u003c!:P5) # \u003c This can maybe be removed because we\n \\s*:\\w+\n (?!\\s*:P5) # \u003c include p5_regex above it\n )*\n )\n)\n\\s*\n(⟅)",
1033
+ "end": "(?x) (?: (?\u003c!\\\\)|(?\u003c=\\\\\\\\) ) (⟆)",
1031
1034
  "patterns": [
1032
1035
  {
1033
1036
  "include": "#interpolation"
@@ -1035,10 +1038,7 @@
1035
1038
  {
1036
1039
  "include": "source.regexp.perl6fe"
1037
1040
  }
1038
- ]
1039
- },
1040
- {
1041
- "begin": "(?x)\n(?<= ^|\\s )\n(?:\n (m|rx|s|S)\n (\n (?:\n (?<!:P5) # < This can maybe be removed because we\n \\s*:\\w+\n (?!\\s*:P5) # < include p5_regex above it\n )*\n )\n)\n\\s*\n(⟅)",
1041
+ ],
1042
1042
  "beginCaptures": {
1043
1043
  "1": {
1044
1044
  "name": "string.regexp.construct.s-shaped-bag-delimiter.perl6fe"
@@ -1050,13 +1050,16 @@
1050
1050
  "name": "punctuation.definition.regexp.s-shaped-bag-delimiter.perl6fe"
1051
1051
  }
1052
1052
  },
1053
- "end": "(?x) (?: (?<!\\\\)|(?<=\\\\\\\\) ) (⟆)",
1054
1053
  "endCaptures": {
1055
1054
  "1": {
1056
1055
  "name": "punctuation.definition.regexp.s-shaped-bag-delimiter.perl6fe"
1057
1056
  }
1058
- },
1059
- "contentName": "string.regexp.s-shaped-bag-delimiter.perl6fe",
1057
+ }
1058
+ },
1059
+ {
1060
+ "contentName": "string.regexp.any.perl6fe",
1061
+ "begin": "(?x)\n(?\u003c= ^|\\s )\n(?:\n (m|rx|s|S)\n (\n (?:\n (?\u003c!:P5) # \u003c This can maybe be removed because we\n \\s*:\\w+\n (?!\\s*:P5) # \u003c include p5_regex above it\n )*\n )\n)\n\\s*\n([^#\\p{Ps}\\p{Pe}\\p{Pi}\\p{Pf}\\w'\\-\u003c\u003e\\-\\]\\)\\}\\{])",
1062
+ "end": "(?x) (?: (?\u003c!\\\\)|(?\u003c=\\\\\\\\) ) (\\3)",
1060
1063
  "patterns": [
1061
1064
  {
1062
1065
  "include": "#interpolation"
@@ -1064,10 +1067,7 @@
1064
1067
  {
1065
1068
  "include": "source.regexp.perl6fe"
1066
1069
  }
1067
- ]
1068
- },
1069
- {
1070
- "begin": "(?x)\n(?<= ^|\\s )\n(?:\n (m|rx|s|S)\n (\n (?:\n (?<!:P5) # < This can maybe be removed because we\n \\s*:\\w+\n (?!\\s*:P5) # < include p5_regex above it\n )*\n )\n)\n\\s*\n([^#\\p{Ps}\\p{Pe}\\p{Pi}\\p{Pf}\\w'\\-<>\\-\\]\\)\\}\\{])",
1070
+ ],
1071
1071
  "beginCaptures": {
1072
1072
  "1": {
1073
1073
  "name": "string.regexp.construct.any.perl6fe"
@@ -1079,27 +1079,44 @@
1079
1079
  "name": "punctuation.definition.regexp.any.perl6fe"
1080
1080
  }
1081
1081
  },
1082
- "end": "(?x) (?: (?<!\\\\)|(?<=\\\\\\\\) ) (\\3)",
1083
1082
  "endCaptures": {
1084
1083
  "1": {
1085
1084
  "name": "punctuation.definition.regexp.any.perl6fe"
1086
1085
  }
1087
- },
1088
- "contentName": "string.regexp.any.perl6fe",
1089
- "patterns": [
1090
- {
1091
- "include": "#interpolation"
1092
- },
1093
- {
1094
- "include": "source.regexp.perl6fe"
1095
- }
1096
- ]
1086
+ }
1097
1087
  },
1098
1088
  {
1099
1089
  "include": "#shellquotes"
1100
1090
  },
1101
1091
  {
1092
+ "name": "string.quoted.heredoc.perl6fe",
1102
1093
  "begin": "(?x) (?: ( qq|qqx|qqw ) \\s* ( (?:\\s*:\\w+)*\\s*: (?: to|heredoc ) )\\s* | (qqto) \\s* ( (?:\\s*:\\w+)* )\\s* ) / (\\S+) /",
1094
+ "end": "\\s*\\5",
1095
+ "patterns": [
1096
+ {
1097
+ "name": "meta.heredoc.continuation.perl6fe",
1098
+ "begin": "(?\u003c=/)",
1099
+ "end": "\\n",
1100
+ "patterns": [
1101
+ {
1102
+ "include": "$self"
1103
+ }
1104
+ ]
1105
+ },
1106
+ {
1107
+ "begin": "^",
1108
+ "end": "$",
1109
+ "patterns": [
1110
+ {
1111
+ "include": "#interpolation"
1112
+ }
1113
+ ]
1114
+ },
1115
+ {
1116
+ "name": "string.quoted.qq.heredoc.perl6fe",
1117
+ "match": "(?x) ^ (?: . | \\n )* $"
1118
+ }
1119
+ ],
1103
1120
  "beginCaptures": {
1104
1121
  "1": {
1105
1122
  "name": "string.quoted.construct.perl6fe"
@@ -1117,41 +1134,32 @@
1117
1134
  "name": "entity.other.attribute-name.heredoc.delimiter.perl6fe"
1118
1135
  }
1119
1136
  },
1120
- "end": "\\s*\\5",
1121
1137
  "endCaptures": {
1122
1138
  "0": {
1123
1139
  "name": "entity.other.attribute-name.heredoc.delimiter.perl6fe"
1124
1140
  }
1125
- },
1141
+ }
1142
+ },
1143
+ {
1144
+ "name": "meta.heredoc.perl6fe",
1145
+ "begin": "(?x) (?: ( [qQ](?!/)|qw|qww|qx|qqx ) \\s* ( (?:\\s*:\\w+)*\\s*: (?: to|heredoc ) )\\s* | (qto|Qto) \\s* ( (?:\\s*:\\w+)* )\\s* ) / (\\S+) /",
1146
+ "end": "\\s*\\5",
1126
1147
  "patterns": [
1127
1148
  {
1128
- "begin": "(?<=/)",
1149
+ "name": "meta.heredoc.continuation.perl6fe",
1150
+ "begin": "(?\u003c=/)",
1129
1151
  "end": "\\n",
1130
1152
  "patterns": [
1131
1153
  {
1132
1154
  "include": "$self"
1133
1155
  }
1134
- ],
1135
- "name": "meta.heredoc.continuation.perl6fe"
1136
- },
1137
- {
1138
- "begin": "^",
1139
- "end": "$",
1140
- "patterns": [
1141
- {
1142
- "include": "#interpolation"
1143
- }
1144
1156
  ]
1145
1157
  },
1146
1158
  {
1147
- "match": "(?x) ^ (?: . | \\n )* $",
1148
- "name": "string.quoted.qq.heredoc.perl6fe"
1159
+ "name": "string.quoted.q.heredoc.perl6fe",
1160
+ "match": "(?x) ^ (?: . | \\n )* $"
1149
1161
  }
1150
1162
  ],
1151
- "name": "string.quoted.heredoc.perl6fe"
1152
- },
1153
- {
1154
- "begin": "(?x) (?: ( [qQ](?!/)|qw|qww|qx|qqx ) \\s* ( (?:\\s*:\\w+)*\\s*: (?: to|heredoc ) )\\s* | (qto|Qto) \\s* ( (?:\\s*:\\w+)* )\\s* ) / (\\S+) /",
1155
1163
  "beginCaptures": {
1156
1164
  "1": {
1157
1165
  "name": "string.quoted.construct.perl6fe"
@@ -1169,29 +1177,11 @@
1169
1177
  "name": "entity.other.attribute-name.heredoc.delimiter.perl6fe"
1170
1178
  }
1171
1179
  },
1172
- "end": "\\s*\\5",
1173
1180
  "endCaptures": {
1174
1181
  "0": {
1175
1182
  "name": "entity.other.attribute-name.heredoc.delimiter.perl6fe"
1176
1183
  }
1177
- },
1178
- "patterns": [
1179
- {
1180
- "begin": "(?<=/)",
1181
- "end": "\\n",
1182
- "patterns": [
1183
- {
1184
- "include": "$self"
1185
- }
1186
- ],
1187
- "name": "meta.heredoc.continuation.perl6fe"
1188
- },
1189
- {
1190
- "match": "(?x) ^ (?: . | \\n )* $",
1191
- "name": "string.quoted.q.heredoc.perl6fe"
1192
- }
1193
- ],
1194
- "name": "meta.heredoc.perl6fe"
1184
+ }
1195
1185
  },
1196
1186
  {
1197
1187
  "include": "source.quoting.perl6fe"
@@ -1200,7 +1190,8 @@
1200
1190
  "include": "#variables"
1201
1191
  },
1202
1192
  {
1203
- "begin": "(?x) (?<![%$&@]|\\w) (?: (multi|proto) \\s+ )? (macro|sub|submethod|method|multi|only|category) \\s+ (!)? ( [^\\s(){}]+ )",
1193
+ "begin": "(?x) (?\u003c![%$\u0026@]|\\w) (?: (multi|proto) \\s+ )? (macro|sub|submethod|method|multi|only|category) \\s+ (!)? ( [^\\s(){}]+ )",
1194
+ "end": "(?=[\\(\\{\\s])",
1204
1195
  "beginCaptures": {
1205
1196
  "1": {
1206
1197
  "name": "storage.type.declarator.multi.perl6fe"
@@ -1214,7 +1205,6 @@
1214
1205
  "4": {
1215
1206
  "patterns": [
1216
1207
  {
1217
- "match": "(?x) ( [\\p{Digit}\\p{Alpha}'\\-_]+ ) \\b (:)? (\\w+ \\b )? (\\S+ )?",
1218
1208
  "captures": {
1219
1209
  "1": {
1220
1210
  "name": "entity.name.function.perl6fe"
@@ -1236,33 +1226,22 @@
1236
1226
  }
1237
1227
  ]
1238
1228
  }
1239
- },
1240
- "end": "(?=[\\(\\{\\s])"
1229
+ }
1241
1230
  },
1242
1231
  {
1243
- "begin": "(?<![\\.:])(regex|rule|token)(?!\\s*=>|\\S)",
1244
- "beginCaptures": {
1245
- "1": {
1246
- "name": "storage.type.declare.regexp.named.perl6fe"
1247
- }
1248
- },
1249
- "end": "(?<!\\\\)\\}",
1250
- "endCaptures": {
1251
- "0": {
1252
- "name": "punctuation.definition.regexp.named.perl6fe"
1253
- }
1254
- },
1255
1232
  "name": "meta.regexp.named.perl6fe",
1233
+ "begin": "(?\u003c![\\.:])(regex|rule|token)(?!\\s*=\u003e|\\S)",
1234
+ "end": "(?\u003c!\\\\)\\}",
1256
1235
  "patterns": [
1257
1236
  {
1258
- "match": "TOP",
1259
- "name": "entity.name.function.regexp.named.TOP.perl6fe"
1237
+ "name": "entity.name.function.regexp.named.TOP.perl6fe",
1238
+ "match": "TOP"
1260
1239
  },
1261
1240
  {
1262
- "match": "[\\p{Digit}\\p{Alpha}'\\-_]+",
1263
1241
  "name": "entity.name.function.regexp.named.perl6fe"
1264
1242
  },
1265
1243
  {
1244
+ "name": "meta.regexp.named.adverb.perl6fe",
1266
1245
  "match": "(:)(\\w+)",
1267
1246
  "captures": {
1268
1247
  "1": {
@@ -1271,43 +1250,37 @@
1271
1250
  "2": {
1272
1251
  "name": "support.type.class.adverb.perl6fe"
1273
1252
  }
1274
- },
1275
- "name": "meta.regexp.named.adverb.perl6fe"
1253
+ }
1276
1254
  },
1277
1255
  {
1278
- "begin": "<",
1279
- "end": "(?x) \\\\\\\\|(?<!\\\\) ( > ) (?=[\\s\\{])",
1280
- "contentName": "string.array.words.perl6fe"
1256
+ "contentName": "string.array.words.perl6fe",
1257
+ "begin": "\u003c",
1258
+ "end": "(?x) \\\\\\\\|(?\u003c!\\\\) ( \u003e ) (?=[\\s\\{])"
1281
1259
  },
1282
1260
  {
1261
+ "contentName": "string.array.words.chevron.perl6fe",
1283
1262
  "begin": "«",
1284
- "end": "(?x) \\\\\\\\|(?<!\\\\) ( » ) (?=[\\s\\{])",
1285
- "contentName": "string.array.words.chevron.perl6fe"
1263
+ "end": "(?x) \\\\\\\\|(?\u003c!\\\\) ( » ) (?=[\\s\\{])"
1286
1264
  },
1287
1265
  {
1288
- "begin": "\\(",
1289
- "end": "(?<!\\\\)\\)",
1290
- "captures": {
1291
- "0": {
1292
- "name": "punctuation.definition.regexp.named.signature.perlfe"
1293
- }
1294
- },
1295
1266
  "name": "meta.regexp.named.signature.perl6fe",
1267
+ "begin": "\\(",
1268
+ "end": "(?\u003c!\\\\)\\)",
1296
1269
  "patterns": [
1297
1270
  {
1298
1271
  "include": "$self"
1299
1272
  }
1300
- ]
1301
- },
1302
- {
1303
- "begin": "\\{",
1304
- "end": "(?=\\})",
1273
+ ],
1305
1274
  "captures": {
1306
1275
  "0": {
1307
- "name": "punctuation.definition.regex.named.perl6fe"
1276
+ "name": "punctuation.definition.regexp.named.signature.perlfe"
1308
1277
  }
1309
- },
1278
+ }
1279
+ },
1280
+ {
1310
1281
  "name": "meta.regexp.named.block.perl6fe",
1282
+ "begin": "\\{",
1283
+ "end": "(?=\\})",
1311
1284
  "patterns": [
1312
1285
  {
1313
1286
  "include": "#interpolation"
@@ -1315,107 +1288,122 @@
1315
1288
  {
1316
1289
  "include": "source.regexp.perl6fe"
1317
1290
  }
1318
- ]
1291
+ ],
1292
+ "captures": {
1293
+ "0": {
1294
+ "name": "punctuation.definition.regex.named.perl6fe"
1295
+ }
1296
+ }
1319
1297
  }
1320
- ]
1298
+ ],
1299
+ "beginCaptures": {
1300
+ "1": {
1301
+ "name": "storage.type.declare.regexp.named.perl6fe"
1302
+ }
1303
+ },
1304
+ "endCaptures": {
1305
+ "0": {
1306
+ "name": "punctuation.definition.regexp.named.perl6fe"
1307
+ }
1308
+ }
1321
1309
  },
1322
1310
  {
1323
- "match": "\\b(?<![\\-:])(self)(?!\\-)\\b",
1324
- "name": "variable.language.perl6fe"
1311
+ "name": "variable.language.perl6fe",
1312
+ "match": "\\b(?\u003c![\\-:])(self)(?!\\-)\\b"
1325
1313
  },
1326
1314
  {
1327
- "match": "\\b(?<![\\-:])(use|require|no|need)(?!\\-)\\b",
1328
- "name": "keyword.other.include.perl6fe"
1315
+ "name": "keyword.other.include.perl6fe",
1316
+ "match": "\\b(?\u003c![\\-:])(use|require|no|need)(?!\\-)\\b"
1329
1317
  },
1330
1318
  {
1331
- "match": "(?x)\\b(?<![\\-:])( if|else|elsif|unless|with|orwith|without )(?!\\-)\\b",
1332
- "name": "keyword.control.conditional.perl6fe"
1319
+ "name": "keyword.control.conditional.perl6fe",
1320
+ "match": "(?x)\\b(?\u003c![\\-:])( if|else|elsif|unless|with|orwith|without )(?!\\-)\\b"
1333
1321
  },
1334
1322
  {
1335
- "match": "\\b(?<![\\-:])(let|my|our|state|temp|has|constant)(?!\\-)\\b",
1336
- "name": "storage.modifier.declarator.perl6fe"
1323
+ "name": "storage.modifier.declarator.perl6fe",
1324
+ "match": "\\b(?\u003c![\\-:])(let|my|our|state|temp|has|constant)(?!\\-)\\b"
1337
1325
  },
1338
1326
  {
1339
- "begin": "(?x) (?<= = | for ) \\s* ( < )",
1327
+ "contentName": "string.array.words.perl6fe",
1328
+ "begin": "(?x) (?\u003c= = | for ) \\s* ( \u003c )",
1329
+ "end": "(?x) \\\\\\\\|(?\u003c!\\\\) ( \u003e )",
1330
+ "patterns": [
1331
+ {
1332
+ "include": "source.quoting.perl6fe#q_bracket_string_content"
1333
+ }
1334
+ ],
1340
1335
  "beginCaptures": {
1341
1336
  "1": {
1342
1337
  "name": "span.keyword.operator.array.words.perl6fe"
1343
1338
  }
1344
1339
  },
1345
- "end": "(?x) \\\\\\\\|(?<!\\\\) ( > )",
1346
1340
  "endCaptures": {
1347
1341
  "1": {
1348
1342
  "name": "span.keyword.operator.array.words.perl6fe"
1349
1343
  }
1350
- },
1351
- "contentName": "string.array.words.perl6fe",
1352
- "patterns": [
1353
- {
1354
- "include": "source.quoting.perl6fe#q_bracket_string_content"
1355
- }
1356
- ]
1344
+ }
1357
1345
  },
1358
1346
  {
1359
- "match": "(?x) (?: [+:\\-.*/] | \\|\\| )? (?<! = ) = (?! [>=~] )",
1360
- "name": "storage.modifier.assignment.perl6fe"
1347
+ "name": "storage.modifier.assignment.perl6fe",
1348
+ "match": "(?x) (?: [+:\\-.*/] | \\|\\| )? (?\u003c! = ) = (?! [\u003e=~] )"
1361
1349
  },
1362
1350
  {
1363
- "begin": "(?x) (?<! \\+< | \\+\\s|\\+ ) \\s* (<) (?<! > ) (?= [^<]* (?: [^<] ) > )",
1351
+ "contentName": "string.array.words.perl6fe",
1352
+ "begin": "(?x) (?\u003c! \\+\u003c | \\+\\s|\\+ ) \\s* (\u003c) (?\u003c! \u003e ) (?= [^\u003c]* (?: [^\u003c] ) \u003e )",
1353
+ "end": "(?x) \\\\\\\\|(?\u003c!\\\\) ( \u003e )",
1364
1354
  "beginCaptures": {
1365
1355
  "1": {
1366
1356
  "name": "span.keyword.operator.array.words.perl6fe"
1367
1357
  }
1368
1358
  },
1369
- "end": "(?x) \\\\\\\\|(?<!\\\\) ( > )",
1370
1359
  "endCaptures": {
1371
1360
  "1": {
1372
1361
  "name": "span.keyword.operator.array.words.perl6fe"
1373
1362
  }
1374
- },
1375
- "contentName": "string.array.words.perl6fe"
1363
+ }
1376
1364
  },
1377
1365
  {
1378
- "match": "\\b(for|loop|repeat|while|until|gather|given)(?!\\-)\\b",
1379
- "name": "keyword.control.repeat.perl6fe"
1366
+ "name": "keyword.control.repeat.perl6fe",
1367
+ "match": "\\b(for|loop|repeat|while|until|gather|given)(?!\\-)\\b"
1380
1368
  },
1381
1369
  {
1382
- "match": "(?x)\n\\b (?<! [\\-:.] )\n(\n take|do|when|next|last|redo|return|return-rw\n |contend|maybe|defer|default|exit|quietly\n |continue|break|goto|leave|supply\n |async|lift|await|start|react|whenever|parse\n)\n(?! - ) \\b",
1383
- "name": "keyword.control.flowcontrol.perl6fe"
1370
+ "name": "keyword.control.flowcontrol.perl6fe",
1371
+ "match": "(?x)\n\\b (?\u003c! [\\-:.] )\n(\n take|do|when|next|last|redo|return|return-rw\n |contend|maybe|defer|default|exit|quietly\n |continue|break|goto|leave|supply\n |async|lift|await|start|react|whenever|parse\n)\n(?! - ) \\b"
1384
1372
  },
1385
1373
  {
1386
- "match": "(?x)\n\\b (?<! [\\-:] )\n(\n make|made\n)\n(?! - ) \\b",
1387
- "name": "keyword.control.flowcontrol.regex.perl6fe"
1374
+ "name": "keyword.control.flowcontrol.regex.perl6fe",
1375
+ "match": "(?x)\n\\b (?\u003c! [\\-:] )\n(\n make|made\n)\n(?! - ) \\b"
1388
1376
  },
1389
1377
  {
1390
- "match": "(?x)\\b(?<![\\-:]) (is|does|as|but|trusts|of|returns|handles|where|augment|supersede) (?!\\-)\\b (?!\\s*=>)",
1391
- "name": "storage.modifier.type.constraints.perl6fe"
1378
+ "name": "storage.modifier.type.constraints.perl6fe",
1379
+ "match": "(?x)\\b(?\u003c![\\-:]) (is|does|as|but|trusts|of|returns|handles|where|augment|supersede) (?!\\-)\\b (?!\\s*=\u003e)"
1392
1380
  },
1393
1381
  {
1394
- "match": "(?x)\\b(?<![\\-:])( BEGIN|CHECK|INIT |START|FIRST|ENTER |LEAVE|KEEP|UNDO |NEXT|LAST|PRE |POST|END|CATCH |CONTROL|TEMP|QUIT )(?!\\-)\\b",
1395
- "name": "keyword.control.closure.trait.perl6fe"
1382
+ "name": "keyword.control.closure.trait.perl6fe",
1383
+ "match": "(?x)\\b(?\u003c![\\-:])( BEGIN|CHECK|INIT |START|FIRST|ENTER |LEAVE|KEEP|UNDO |NEXT|LAST|PRE |POST|END|CATCH |CONTROL|TEMP|QUIT )(?!\\-)\\b"
1396
1384
  },
1397
1385
  {
1398
- "match": "\\b(?<![\\-:])(die|fail|try|warn)(?!\\-)\\b(?!\\s*=>)",
1399
- "name": "keyword.control.control-handlers.perl6fe"
1386
+ "name": "keyword.control.control-handlers.perl6fe",
1387
+ "match": "\\b(?\u003c![\\-:])(die|fail|try|warn)(?!\\-)\\b(?!\\s*=\u003e)"
1400
1388
  },
1401
1389
  {
1402
- "match": "(?x)\\b(?<![\\-:])( prec|irs|ofs|ors|export|raw|deep |binary|unary|reparsed|rw|parsed |cached|readonly|defequiv|will |ref|copy|inline|tighter|looser |equiv|assoc|required|pure )(?!\\-)\\b (?!\\s*=>)",
1403
- "name": "entity.name.type.trait.perl6fe"
1390
+ "name": "entity.name.type.trait.perl6fe",
1391
+ "match": "(?x)\\b(?\u003c![\\-:])( prec|irs|ofs|ors|export|raw|deep |binary|unary|reparsed|rw|parsed |cached|readonly|defequiv|will |ref|copy|inline|tighter|looser |equiv|assoc|required|pure )(?!\\-)\\b (?!\\s*=\u003e)"
1404
1392
  },
1405
1393
  {
1406
- "match": "\\b(NaN|Inf)(?!\\-)\\b",
1407
- "name": "constant.numeric.perl6fe"
1394
+ "name": "constant.numeric.perl6fe",
1395
+ "match": "\\b(NaN|Inf)(?!\\-)\\b"
1408
1396
  },
1409
1397
  {
1410
- "match": "\\b(True|False)\\b",
1411
- "name": "constant.language.boolean.perl6fe"
1398
+ "name": "constant.language.boolean.perl6fe",
1399
+ "match": "\\b(True|False)\\b"
1412
1400
  },
1413
1401
  {
1414
- "match": "(?x)\\b(?<![\\-:])( fatal|internals| MONKEY\\-(?:TYPING|SEE\\-NO\\-EVAL|BRAINS|GUTS|BUSINESS|TRAP|SHINE|WRENCH|BARS)| nqp|QAST|strict|trace|worries|invocant|parameters|experimental| cur|soft|variables|attributes|v6(?:\\.\\w)*|lib|Test|NativeCall )(?!\\-) \\b (?!\\s*=>)",
1415
- "name": "constant.language.pragma.perl6fe"
1402
+ "name": "constant.language.pragma.perl6fe",
1403
+ "match": "(?x)\\b(?\u003c![\\-:])( fatal|internals| MONKEY\\-(?:TYPING|SEE\\-NO\\-EVAL|BRAINS|GUTS|BUSINESS|TRAP|SHINE|WRENCH|BARS)| nqp|QAST|strict|trace|worries|invocant|parameters|experimental| cur|soft|variables|attributes|v6(?:\\.\\w)*|lib|Test|NativeCall )(?!\\-) \\b (?!\\s*=\u003e)"
1416
1404
  },
1417
1405
  {
1418
- "match": "(?x)(?<![:\\-\\w]) (Backtrace|Exception|Failure|X) (?: \\:\\:[a-zA-Z]+ )* \\b",
1406
+ "match": "(?x)(?\u003c![:\\-\\w]) (Backtrace|Exception|Failure|X) (?: \\:\\:[a-zA-Z]+ )* \\b",
1419
1407
  "captures": {
1420
1408
  "0": {
1421
1409
  "name": "support.type.exception.perl6fe"
@@ -1423,7 +1411,7 @@
1423
1411
  }
1424
1412
  },
1425
1413
  {
1426
- "match": "(?x)\\b(?<!:)(\n AST|Any|Array|Associative|Attribute|Bag|BagHash|Baggy|\n Blob|Block|Bool|Callable|Capture|Channel|Code|Complex|Cool|\n CurrentThreadScheduler|Cursor|Date|DateTime|Dateish|Duration|\n Enum|FatRat|Grammar|Hash|IO|Instant|Iterable|\n Iterator|Junction|Label|List|Lock|Macro|Map|Match|Metamodel|\n Method|Mix|MixHash|Mixy|Mu|Nil|Numeric|ObjAt|Pair|\n Parameter|Pod|Positional|PositionalBindFailover|Proc|Promise|\n Proxy|QuantHash|Range|Rat|Rational|Real|Regex|Routine|Scheduler|\n Seq|Set|SetHash|Setty|Signature|Slip|Stash|Str|str|Stringy|Sub|\n Submethod|Supply|Tap|Temporal|Thread|ThreadPoolScheduler|\n Variable|Version|Whatever|WhateverCode|bool|size_t|\n Int|int|int1|int2|int4|int8|int16|int32|int64|\n Rat|rat|rat1|rat2|rat4|rat8|rat16|rat32|rat64|\n Buf|buf|buf1|buf2|buf4|buf8|buf16|buf32|buf64|\n UInt|uint|uint1|uint2|uint4|uint8|uint16|uint32|uint64|\n utf8|utf16|utf32|Num|num|num32|num64|IntStr|NumStr|\n RatStr|ComplexStr|CArray|Pointer|long|longlong|\n # These are for types which have sub types\n Order|More|Less|Same\n)\\b (?!\\s*=>)",
1414
+ "match": "(?x)\\b(?\u003c!:)(\n AST|Any|Array|Associative|Attribute|Bag|BagHash|Baggy|\n Blob|Block|Bool|Callable|Capture|Channel|Code|Complex|Cool|\n CurrentThreadScheduler|Cursor|Date|DateTime|Dateish|Duration|\n Enum|FatRat|Grammar|Hash|IO|Instant|Iterable|\n Iterator|Junction|Label|List|Lock|Macro|Map|Match|Metamodel|\n Method|Mix|MixHash|Mixy|Mu|Nil|Numeric|ObjAt|Pair|\n Parameter|Pod|Positional|PositionalBindFailover|Proc|Promise|\n Proxy|QuantHash|Range|Rat|Rational|Real|Regex|Routine|Scheduler|\n Seq|Set|SetHash|Setty|Signature|Slip|Stash|Str|str|Stringy|Sub|\n Submethod|Supply|Tap|Temporal|Thread|ThreadPoolScheduler|\n Variable|Version|Whatever|WhateverCode|bool|size_t|\n Int|int|int1|int2|int4|int8|int16|int32|int64|\n Rat|rat|rat1|rat2|rat4|rat8|rat16|rat32|rat64|\n Buf|buf|buf1|buf2|buf4|buf8|buf16|buf32|buf64|\n UInt|uint|uint1|uint2|uint4|uint8|uint16|uint32|uint64|\n utf8|utf16|utf32|Num|num|num32|num64|IntStr|NumStr|\n RatStr|ComplexStr|CArray|Pointer|long|longlong|\n # These are for types which have sub types\n Order|More|Less|Same\n)\\b (?!\\s*=\u003e)",
1427
1415
  "captures": {
1428
1416
  "1": {
1429
1417
  "name": "support.type.perl6fe"
@@ -1434,12 +1422,12 @@
1434
1422
  }
1435
1423
  },
1436
1424
  {
1437
- "match": "(?x) ( \\[ / \\] )",
1438
- "name": "keyword.operator.reduction.perl6fe"
1425
+ "name": "keyword.operator.reduction.perl6fe",
1426
+ "match": "(?x) ( \\[ / \\] )"
1439
1427
  },
1440
1428
  {
1441
- "match": "(?<=\\w)(\\:)([DU_])\\b",
1442
1429
  "name": "meta.adverb.definedness.perl6fe",
1430
+ "match": "(?\u003c=\\w)(\\:)([DU_])\\b",
1443
1431
  "captures": {
1444
1432
  "1": {
1445
1433
  "name": "keyword.operator.adverb.perl6fe"
@@ -1450,28 +1438,28 @@
1450
1438
  }
1451
1439
  },
1452
1440
  {
1453
- "match": "(?x)\\b( div|mod|gcd|lcm|x|xx|temp|let|but|cmp|leg| eq|ne|gt|ge|lt|le|before|after|eqv|min|max|ff|fff|not|so|Z| and|andthen|or|orelse )\\b(?!\\-)| \\b(X)(?!:)\\b",
1454
- "name": "keyword.operator.word.perl6fe"
1441
+ "name": "keyword.operator.word.perl6fe",
1442
+ "match": "(?x)\\b( div|mod|gcd|lcm|x|xx|temp|let|but|cmp|leg| eq|ne|gt|ge|lt|le|before|after|eqv|min|max|ff|fff|not|so|Z| and|andthen|or|orelse )\\b(?!\\-)| \\b(X)(?!:)\\b"
1455
1443
  },
1456
1444
  {
1445
+ "name": "meta.operator.non.ligature.perl6fe",
1457
1446
  "match": "(=~=|≅)",
1458
1447
  "captures": {
1459
1448
  "1": {
1460
1449
  "name": "keyword.operator.approx-equal.perl6fe"
1461
1450
  }
1462
- },
1463
- "name": "meta.operator.non.ligature.perl6fe"
1451
+ }
1464
1452
  },
1465
1453
  {
1466
- "match": "(?x) <== | ==> | <=> | => | --> | -> | \\+\\| | \\+\\+ | -- | \\*\\* | \\?\\?\\? | \\?\\? | \\!\\!\\! | \\!\\! | && | \\+\\^ | \\?\\^ | %% | \\+& | \\+< | \\+> | \\+\\^ | \\.\\.(?!\\.) | \\.\\.\\^ | \\^\\.\\. | \\^\\.\\.\\^ | \\?\\| | !=(?!\\=) | !==(?!\\=) | <=(?!>) | >= | === | == | =:= | ~~ | \\x{2245} | \\|\\| | \\^\\^ | \\/\\/ | := | ::= | \\.\\.\\.",
1467
- "name": "keyword.operator.multi-symbol.perl6fe"
1454
+ "name": "keyword.operator.multi-symbol.perl6fe",
1455
+ "match": "(?x) \u003c== | ==\u003e | \u003c=\u003e | =\u003e | --\u003e | -\u003e | \\+\\| | \\+\\+ | -- | \\*\\* | \\?\\?\\? | \\?\\? | \\!\\!\\! | \\!\\! | \u0026\u0026 | \\+\\^ | \\?\\^ | %% | \\+\u0026 | \\+\u003c | \\+\u003e | \\+\\^ | \\.\\.(?!\\.) | \\.\\.\\^ | \\^\\.\\. | \\^\\.\\.\\^ | \\?\\| | !=(?!\\=) | !==(?!\\=) | \u003c=(?!\u003e) | \u003e= | === | == | =:= | ~~ | \\x{2245} | \\|\\| | \\^\\^ | \\/\\/ | := | ::= | \\.\\.\\."
1468
1456
  },
1469
1457
  {
1470
1458
  "include": "#special_variables"
1471
1459
  },
1472
1460
  {
1473
- "match": "(?x)(?<=\\[) \\s* (\\*) \\s* ([\\-\\*%\\^\\+\\/]|div|mod|gcd|lcm) \\s* (\\d+) \\s* (?=\\])",
1474
1461
  "name": "meta.subscript.whatever.perl6fe",
1462
+ "match": "(?x)(?\u003c=\\[) \\s* (\\*) \\s* ([\\-\\*%\\^\\+\\/]|div|mod|gcd|lcm) \\s* (\\d+) \\s* (?=\\])",
1475
1463
  "captures": {
1476
1464
  "1": {
1477
1465
  "name": "constant.language.whatever.perl6fe"
@@ -1485,48 +1473,50 @@
1485
1473
  }
1486
1474
  },
1487
1475
  {
1488
- "match": "\\*\\s*(?=\\])",
1489
- "name": "constant.language.whatever.hack.perl6fe"
1476
+ "name": "constant.language.whatever.hack.perl6fe",
1477
+ "match": "\\*\\s*(?=\\])"
1490
1478
  },
1491
1479
  {
1492
- "match": "(?x)\\b(?<![\\-\\\\])( :: )?(exists)(?!\\-)\\b(?!\\s*=>)",
1480
+ "name": "support.function.perl6fe",
1481
+ "match": "(?x)\\b(?\u003c![\\-\\\\])( :: )?(exists)(?!\\-)\\b(?!\\s*=\u003e)",
1493
1482
  "captures": {
1494
1483
  "1": {
1495
1484
  "name": "keyword.operator.colon.perl6fe"
1496
1485
  }
1497
- },
1498
- "name": "support.function.perl6fe"
1486
+ }
1499
1487
  },
1500
1488
  {
1501
- "match": "(?x)\\b(?<![\\-:\\\\])( :: )?( eager|hyper|substr|index|rindex|grep|map|sort|join|lines|hints |chmod|split|reduce|min|max|reverse|truncate|zip|cat|roundrobin |classify|first|sum|keys|values|pairs|defined|delete|exists |elems|end|kv|any|all|one|wrap|shape|key|value|name|pop|push |shift|splice|unshift|floor|ceiling|abs|exp|log|log10|rand|sign |sqrt|sin|cos|tan|round|strand|roots|cis|unpolar|polar|atan2 |pick|chop|chomp|lc|lcfirst|uc|ucfirst|capitalize|mkdir |normalize|pack|unpack|quotemeta|comb|samecase|sameaccent|chars |nfd|nfc|nfkd|nfkc|printf|sprintf|caller|evalfile|run|runinstead |nothing|want|bless|chr|ord|ords|gmtime|time|eof|localtime|gethost |getpw|chroot|getlogin|getpeername|kill|fork|wait|perl|graphs |codes|bytes|clone|print|open|read|write|readline|say|seek|close |opendir|readdir|slurp|spurt|shell|run|pos|fmt|vec|link|unlink |symlink|unique|pair|asin|atan|sec|cosec|cotan|asec|acosec|acotan |sinh|cosh|tanh|asinh|done|acos|acosh|atanh|sech|cosech|cotanh |sech|acosech|acotanh|asech|ok|nok|plan-ok|dies-ok|lives-ok|skip |todo|pass|flunk|force-todo|use-ok|isa-ok|diag|is-deeply|isnt |like|skip-rest|unlike|cmp-ok|eval-dies-ok|nok-error|cmp-ok |eval-lives-ok|approx|is-approx|throws-ok|version-lt|plan|EVAL |succ|pred|times|nonce|once|signature|new|connect|operator|undef |undefine|sleep|from|to|infix|postfix|prefix|circumfix|can-ok |postcircumfix|minmax|lazy|count|unwrap|getc|pi|tau|context|void |quasi|body|each|contains|rewinddir|subst|can|isa|flush|arity |assuming|rewind|callwith|callsame|nextwith|nextsame|attr|does-ok |eval-elsewhere|none|not|srand|so|trim|trim-start|trim-end|lastcall |WHAT|WHY|WHERE|HOW|WHICH|VAR|WHO|WHENCE|ACCEPTS|REJECTS|not |iterator|by|re|im|invert|flip|gist|flat|tree|is-prime |throws-like|trans|race|hyper|tap|emit|done-testing|quit|dd|note |prepend|categorize|antipairs|categorize-list|parse-base|base |starts-with|ends-with|put|append|tail|\\x{03C0}|\\x{03C4}|\\x{212F} |get|words|new-from-pairs|uniname|uninames|uniprop|uniprops |slurp-rest|throw|break|keep|match|trim-leading|trim-trailing |is-lazy|pull-one|push-exactly|push-at-least|push-all|push-until-lazy |sink-all|skip-at-least|skip-at-least-pull-one )(?!\\-)\\b(?!\\s*=>)",
1489
+ "name": "support.function.perl6fe",
1490
+ "match": "(?x)\\b(?\u003c![\\-:\\\\])( :: )?( eager|hyper|substr|index|rindex|grep|map|sort|join|lines|hints |chmod|split|reduce|min|max|reverse|truncate|zip|cat|roundrobin |classify|first|sum|keys|values|pairs|defined|delete|exists |elems|end|kv|any|all|one|wrap|shape|key|value|name|pop|push |shift|splice|unshift|floor|ceiling|abs|exp|log|log10|rand|sign |sqrt|sin|cos|tan|round|strand|roots|cis|unpolar|polar|atan2 |pick|chop|chomp|lc|lcfirst|uc|ucfirst|capitalize|mkdir |normalize|pack|unpack|quotemeta|comb|samecase|sameaccent|chars |nfd|nfc|nfkd|nfkc|printf|sprintf|caller|evalfile|run|runinstead |nothing|want|bless|chr|ord|ords|gmtime|time|eof|localtime|gethost |getpw|chroot|getlogin|getpeername|kill|fork|wait|perl|graphs |codes|bytes|clone|print|open|read|write|readline|say|seek|close |opendir|readdir|slurp|spurt|shell|run|pos|fmt|vec|link|unlink |symlink|unique|pair|asin|atan|sec|cosec|cotan|asec|acosec|acotan |sinh|cosh|tanh|asinh|done|acos|acosh|atanh|sech|cosech|cotanh |sech|acosech|acotanh|asech|ok|nok|plan-ok|dies-ok|lives-ok|skip |todo|pass|flunk|force-todo|use-ok|isa-ok|diag|is-deeply|isnt |like|skip-rest|unlike|cmp-ok|eval-dies-ok|nok-error|cmp-ok |eval-lives-ok|approx|is-approx|throws-ok|version-lt|plan|EVAL |succ|pred|times|nonce|once|signature|new|connect|operator|undef |undefine|sleep|from|to|infix|postfix|prefix|circumfix|can-ok |postcircumfix|minmax|lazy|count|unwrap|getc|pi|tau|context|void |quasi|body|each|contains|rewinddir|subst|can|isa|flush|arity |assuming|rewind|callwith|callsame|nextwith|nextsame|attr|does-ok |eval-elsewhere|none|not|srand|so|trim|trim-start|trim-end|lastcall |WHAT|WHY|WHERE|HOW|WHICH|VAR|WHO|WHENCE|ACCEPTS|REJECTS|not |iterator|by|re|im|invert|flip|gist|flat|tree|is-prime |throws-like|trans|race|hyper|tap|emit|done-testing|quit|dd|note |prepend|categorize|antipairs|categorize-list|parse-base|base |starts-with|ends-with|put|append|tail|\\x{03C0}|\\x{03C4}|\\x{212F} |get|words|new-from-pairs|uniname|uninames|uniprop|uniprops |slurp-rest|throw|break|keep|match|trim-leading|trim-trailing |is-lazy|pull-one|push-exactly|push-at-least|push-all|push-until-lazy |sink-all|skip-at-least|skip-at-least-pull-one )(?!\\-)\\b(?!\\s*=\u003e)",
1502
1491
  "captures": {
1503
1492
  "1": {
1504
1493
  "name": "keyword.operator.colon.perl6fe"
1505
1494
  }
1506
- },
1507
- "name": "support.function.perl6fe"
1495
+ }
1508
1496
  },
1509
1497
  {
1510
- "match": "(?x)\\b(?<![\\-:]|\\\\)(?<=\\.) (e|d|f|s|l|r|w|rw|x|rwx|z|abspath|basename|extension|dirname |watch|is-absolute|parts|volume|path|is-relative|parent|child |resolve|dir) (?!\\-)\\b(?!\\s*=>)",
1511
- "name": "support.function.perl6fe"
1498
+ "name": "support.function.perl6fe",
1499
+ "match": "(?x)\\b(?\u003c![\\-:]|\\\\)(?\u003c=\\.) (e|d|f|s|l|r|w|rw|x|rwx|z|abspath|basename|extension|dirname |watch|is-absolute|parts|volume|path|is-relative|parent|child |resolve|dir) (?!\\-)\\b(?!\\s*=\u003e)"
1512
1500
  },
1513
1501
  {
1514
1502
  "include": "#numbers"
1515
1503
  },
1516
1504
  {
1517
- "match": "(?x) (?<!\\(|\\*)\\%| [\\^\\+><\\*\\!\\?~\\/\\|]| (?<!\\$)\\.| (?<!:):(?!:)| (?<=\\s)\\-(?=[\\s\\(\\{\\[])| (?<!\\w)[o\\x{2218}](?!\\w)",
1518
- "name": "keyword.operator.generic.perl6fe"
1505
+ "name": "keyword.operator.generic.perl6fe",
1506
+ "match": "(?x) (?\u003c!\\(|\\*)\\%| [\\^\\+\u003e\u003c\\*\\!\\?~\\/\\|]| (?\u003c!\\$)\\.| (?\u003c!:):(?!:)| (?\u003c=\\s)\\-(?=[\\s\\(\\{\\[])| (?\u003c!\\w)[o\\x{2218}](?!\\w)"
1519
1507
  },
1520
1508
  {
1521
- "match": "(?x) (?<=^|\\W|\\s) ([\\w'\\-]+) \\s* (?= =>)",
1522
- "name": "string.pair.key.perl6fe"
1509
+ "name": "string.pair.key.perl6fe",
1510
+ "match": "(?x) (?\u003c=^|\\W|\\s) ([\\w'\\-]+) \\s* (?= =\u003e)"
1523
1511
  },
1524
1512
  {
1525
- "match": "(?x) \\b (?<!\\d) ([a-zA-Z_\\x{c0}-\\x{ff}\\$]) ( [a-zA-Z0-9_\\x{c0}-\\x{ff}\\$]| [\\-'][a-zA-Z_\\x{c0}-\\x{ff}\\$][a-zA-Z0-9_\\x{c0}-\\x{ff}\\$] )*",
1526
- "name": "routine.name.perl6fe"
1513
+ "name": "routine.name.perl6fe",
1514
+ "match": "(?x) \\b (?\u003c!\\d) ([a-zA-Z_\\x{c0}-\\x{ff}\\$]) ( [a-zA-Z0-9_\\x{c0}-\\x{ff}\\$]| [\\-'][a-zA-Z_\\x{c0}-\\x{ff}\\$][a-zA-Z0-9_\\x{c0}-\\x{ff}\\$] )*"
1527
1515
  },
1528
1516
  {
1529
- "begin": "(?<=\\:)(\\d+)(<)",
1517
+ "contentName": "constant.numeric.perl6fe",
1518
+ "begin": "(?\u003c=\\:)(\\d+)(\u003c)",
1519
+ "end": "\u003e",
1530
1520
  "beginCaptures": {
1531
1521
  "1": {
1532
1522
  "name": "support.type.radix.perl6fe"
@@ -1535,82 +1525,45 @@
1535
1525
  "name": "punctuation.definition.radix.perl6fe"
1536
1526
  }
1537
1527
  },
1538
- "end": ">",
1539
1528
  "endCaptures": {
1540
1529
  "0": {
1541
1530
  "name": "punctuation.definition.radix.perl6fe"
1542
1531
  }
1543
- },
1544
- "contentName": "constant.numeric.perl6fe"
1532
+ }
1545
1533
  },
1546
1534
  {
1535
+ "name": "meta.block.perl6fe",
1547
1536
  "begin": "\\{",
1537
+ "end": "\\}",
1538
+ "patterns": [
1539
+ {
1540
+ "include": "$self"
1541
+ }
1542
+ ],
1548
1543
  "beginCaptures": {
1549
1544
  "0": {
1550
1545
  "name": "punctuation.definition.block.perl6fe"
1551
1546
  }
1552
1547
  },
1553
- "end": "\\}",
1554
1548
  "endCaptures": {
1555
1549
  "0": {
1556
1550
  "name": "punctuation.definition.block.perl6fe"
1557
1551
  }
1558
- },
1559
- "name": "meta.block.perl6fe",
1560
- "patterns": [
1561
- {
1562
- "include": "$self"
1563
- }
1564
- ]
1552
+ }
1565
1553
  }
1566
1554
  ],
1567
1555
  "repository": {
1568
- "numbers": {
1569
- "patterns": [
1570
- {
1571
- "match": "(?x)\n(?<= ^ | [=,;^\\s{\\[(/] | \\.\\. )\n[-−+]?\n0[bodx]\\w+",
1572
- "name": "constant.numeric.radix.perl6fe"
1573
- },
1574
- {
1575
- "match": "(?x)\n (?<= ^ | [×÷*=,:;^\\s{\\[(/] | \\.\\. | … )\n (?: \\^? [+\\-−] )?\n(?:\n (?: \\d+ (?: [\\_\\d]+ \\d )? )\n (?: \\. \\d+ (?: [\\_\\d]+ \\d )? )?\n)\n(?: e (?:-|−)? \\d+ (?: [\\_\\d]+ \\d )? )?",
1576
- "name": "constant.numeric.perl6fe"
1577
- },
1578
- {
1579
- "match": "(?x)\n (?<= ^ | [×÷*=,:;^\\s{\\[(/] | \\.\\. )\n (?: [+-−] )?\n(?:\n (?: \\. \\d+ (?: [\\_\\d]+ \\d )? )\n)\n(?: e (?:-|−)? \\d+ (?: [\\_\\d]+ \\d )? )?",
1580
- "name": "constant.numeric.perl6fe"
1581
- }
1582
- ]
1583
- },
1584
- "comment-block-delimited": {
1556
+ "comment-block-abbreviated": {
1585
1557
  "patterns": [
1586
1558
  {
1587
- "begin": "^\\s*(=)(begin)\\s+(\\w+)",
1588
- "end": "^\\s*(=)(end)\\s+(\\w+)",
1589
- "captures": {
1590
- "1": {
1591
- "name": "storage.modifier.block.delimited.perl6fe"
1592
- },
1593
- "2": {
1594
- "name": "keyword.operator.block.delimited.perl6fe"
1595
- },
1596
- "3": {
1597
- "name": "entity.other.attribute-name.block.delimited.perl6fe"
1598
- }
1599
- },
1600
- "contentName": "comment.block.delimited.perl6fe",
1559
+ "contentName": "entity.name.section.head.abbreviated.perl6fe",
1560
+ "begin": "^\\s*(=)(head\\w*)\\s+(.+?)\\s*$",
1561
+ "end": "(?=^\\s*$|^\\s*=\\w+.*$)",
1601
1562
  "patterns": [
1602
1563
  {
1603
1564
  "include": "#comment-block-syntax"
1604
1565
  }
1605
- ]
1606
- }
1607
- ]
1608
- },
1609
- "comment-block-abbreviated": {
1610
- "patterns": [
1611
- {
1612
- "begin": "^\\s*(=)(head\\w*)\\s+(.+?)\\s*$",
1613
- "end": "(?=^\\s*$|^\\s*=\\w+.*$)",
1566
+ ],
1614
1567
  "captures": {
1615
1568
  "1": {
1616
1569
  "name": "storage.modifier.block.abbreviated.perl6fe"
@@ -1626,17 +1579,17 @@
1626
1579
  }
1627
1580
  ]
1628
1581
  }
1629
- },
1630
- "contentName": "entity.name.section.head.abbreviated.perl6fe",
1631
- "patterns": [
1632
- {
1633
- "include": "#comment-block-syntax"
1634
- }
1635
- ]
1582
+ }
1636
1583
  },
1637
1584
  {
1585
+ "contentName": "comment.block.abbreviated.perl6fe",
1638
1586
  "begin": "^\\s*(=)(\\w+)\\s+(.+?)\\s*$",
1639
1587
  "end": "(?=^\\s*$|^\\s*=\\w+.*$)",
1588
+ "patterns": [
1589
+ {
1590
+ "include": "#comment-block-syntax"
1591
+ }
1592
+ ],
1640
1593
  "captures": {
1641
1594
  "1": {
1642
1595
  "name": "storage.modifier.block.abbreviated.perl6fe"
@@ -1652,350 +1605,326 @@
1652
1605
  }
1653
1606
  ]
1654
1607
  }
1655
- },
1656
- "contentName": "comment.block.abbreviated.perl6fe",
1608
+ }
1609
+ }
1610
+ ]
1611
+ },
1612
+ "comment-block-delimited": {
1613
+ "patterns": [
1614
+ {
1615
+ "contentName": "comment.block.delimited.perl6fe",
1616
+ "begin": "^\\s*(=)(begin)\\s+(\\w+)",
1617
+ "end": "^\\s*(=)(end)\\s+(\\w+)",
1657
1618
  "patterns": [
1658
1619
  {
1659
1620
  "include": "#comment-block-syntax"
1660
1621
  }
1661
- ]
1622
+ ],
1623
+ "captures": {
1624
+ "1": {
1625
+ "name": "storage.modifier.block.delimited.perl6fe"
1626
+ },
1627
+ "2": {
1628
+ "name": "keyword.operator.block.delimited.perl6fe"
1629
+ },
1630
+ "3": {
1631
+ "name": "entity.other.attribute-name.block.delimited.perl6fe"
1632
+ }
1633
+ }
1662
1634
  }
1663
1635
  ]
1664
1636
  },
1665
- "shellquotes": {
1637
+ "comment-block-syntax": {
1666
1638
  "patterns": [
1667
1639
  {
1668
- "begin": "([qQ]x)\\s*({{)",
1640
+ "include": "#comment-block-delimited"
1641
+ },
1642
+ {
1643
+ "include": "#comment-block-abbreviated"
1644
+ },
1645
+ {
1646
+ "name": "meta.pod.c.perl6fe",
1647
+ "contentName": "markup.underline.perl6fe",
1648
+ "begin": "(?x) (U) (\u003c\u003c\u003c)",
1649
+ "end": "(?x) (\u003e\u003e\u003e)",
1650
+ "patterns": [
1651
+ {
1652
+ "include": "#comment-block-syntax"
1653
+ },
1654
+ {
1655
+ "include": "source.quoting.perl6fe#q_triple_angle_string_content"
1656
+ }
1657
+ ],
1669
1658
  "beginCaptures": {
1670
1659
  "1": {
1671
- "name": "string.quoted.q.shell.operator.perl6fe"
1660
+ "name": "support.function.pod.code.perl6fe"
1672
1661
  },
1673
1662
  "2": {
1674
- "name": "punctuation.section.embedded.shell.begin.perl6fe"
1663
+ "name": "punctuation.section.embedded.pod.code.perl6fe"
1675
1664
  }
1676
1665
  },
1677
- "end": "}}",
1678
1666
  "endCaptures": {
1679
- "0": {
1680
- "name": "punctuation.section.embedded.shell.begin.perl6fe"
1667
+ "1": {
1668
+ "name": "punctuation.section.embedded.pod.code.perl6fe"
1681
1669
  }
1682
- },
1683
- "name": "meta.shell.quote.single.perl6fe",
1670
+ }
1671
+ },
1672
+ {
1673
+ "name": "meta.pod.c.perl6fe",
1674
+ "contentName": "markup.italic.perl6fe",
1675
+ "begin": "(?x) (I) (\u003c\u003c\u003c)",
1676
+ "end": "(?x) (\u003e\u003e\u003e)",
1684
1677
  "patterns": [
1685
1678
  {
1686
- "include": "source.quoting.perl6fe#q_single_string_content"
1679
+ "include": "#comment-block-syntax"
1680
+ },
1681
+ {
1682
+ "include": "source.quoting.perl6fe#q_triple_angle_string_content"
1687
1683
  }
1688
- ]
1689
- },
1690
- {
1691
- "begin": "([qQ]x)\\s*({)",
1684
+ ],
1692
1685
  "beginCaptures": {
1693
1686
  "1": {
1694
- "name": "string.quoted.q.shell.operator.perl6fe"
1687
+ "name": "support.function.pod.code.perl6fe"
1695
1688
  },
1696
1689
  "2": {
1697
- "name": "punctuation.section.embedded.shell.begin.perl6fe"
1690
+ "name": "punctuation.section.embedded.pod.code.perl6fe"
1698
1691
  }
1699
1692
  },
1700
- "end": "}",
1701
1693
  "endCaptures": {
1702
- "0": {
1703
- "name": "punctuation.section.embedded.shell.begin.perl6fe"
1694
+ "1": {
1695
+ "name": "punctuation.section.embedded.pod.code.perl6fe"
1704
1696
  }
1705
- },
1706
- "name": "meta.shell.quote.single.perl6fe",
1697
+ }
1698
+ },
1699
+ {
1700
+ "name": "meta.pod.c.perl6fe",
1701
+ "contentName": "markup.bold.perl6fe",
1702
+ "begin": "(?x) (B) (\u003c\u003c\u003c)",
1703
+ "end": "(?x) (\u003e\u003e\u003e)",
1707
1704
  "patterns": [
1708
1705
  {
1709
- "include": "source.quoting.perl6fe#q_single_string_content"
1706
+ "include": "#comment-block-syntax"
1707
+ },
1708
+ {
1709
+ "include": "source.quoting.perl6fe#q_triple_angle_string_content"
1710
1710
  }
1711
- ]
1712
- },
1713
- {
1714
- "begin": "([qQ]x)\\s*(\\[\\[)",
1711
+ ],
1715
1712
  "beginCaptures": {
1716
1713
  "1": {
1717
- "name": "string.quoted.q.shell.operator.perl6fe"
1714
+ "name": "support.function.pod.code.perl6fe"
1718
1715
  },
1719
1716
  "2": {
1720
- "name": "punctuation.section.embedded.shell.begin.perl6fe"
1717
+ "name": "punctuation.section.embedded.pod.code.perl6fe"
1721
1718
  }
1722
1719
  },
1723
- "end": "\\]\\]",
1724
1720
  "endCaptures": {
1725
- "0": {
1726
- "name": "punctuation.section.embedded.shell.begin.perl6fe"
1721
+ "1": {
1722
+ "name": "punctuation.section.embedded.pod.code.perl6fe"
1727
1723
  }
1728
- },
1729
- "name": "meta.shell.quote.single.perl6fe",
1724
+ }
1725
+ },
1726
+ {
1727
+ "name": "meta.pod.c.perl6fe",
1728
+ "contentName": "markup.raw.code.perl6fe",
1729
+ "begin": "(?x) ([A-Z]) (\u003c\u003c\u003c)",
1730
+ "end": "(?x) (\u003e\u003e\u003e)",
1730
1731
  "patterns": [
1731
1732
  {
1732
- "include": "source.quoting.perl6fe#q_single_string_content"
1733
+ "include": "#comment-block-syntax"
1734
+ },
1735
+ {
1736
+ "include": "source.quoting.perl6fe#q_triple_angle_string_content"
1733
1737
  }
1734
- ]
1735
- },
1736
- {
1737
- "begin": "([Qq]x)\\s*(\\[)",
1738
+ ],
1738
1739
  "beginCaptures": {
1739
1740
  "1": {
1740
- "name": "string.quoted.q.shell.operator.perl6fe"
1741
+ "name": "support.function.pod.code.perl6fe"
1741
1742
  },
1742
1743
  "2": {
1743
- "name": "punctuation.section.embedded.shell.begin.perl6fe"
1744
+ "name": "punctuation.section.embedded.pod.code.perl6fe"
1744
1745
  }
1745
1746
  },
1746
- "end": "\\]",
1747
1747
  "endCaptures": {
1748
- "0": {
1749
- "name": "punctuation.section.embedded.shell.begin.perl6fe"
1748
+ "1": {
1749
+ "name": "punctuation.section.embedded.pod.code.perl6fe"
1750
1750
  }
1751
- },
1752
- "name": "meta.shell.quote.single.perl6fe",
1751
+ }
1752
+ },
1753
+ {
1754
+ "name": "meta.pod.c.perl6fe",
1755
+ "contentName": "markup.underline.perl6fe",
1756
+ "begin": "(?x) (U) (\u003c\u003c)",
1757
+ "end": "(?x) (\u003e\u003e)",
1753
1758
  "patterns": [
1754
1759
  {
1755
- "include": "source.quoting.perl6fe#q_single_string_content"
1760
+ "include": "#comment-block-syntax"
1761
+ },
1762
+ {
1763
+ "include": "source.quoting.perl6fe#q_double_angle_string_content"
1756
1764
  }
1757
- ]
1758
- },
1759
- {
1760
- "begin": "([Qq]x)\\s*(\\|)",
1765
+ ],
1761
1766
  "beginCaptures": {
1762
1767
  "1": {
1763
- "name": "string.quoted.q.shell.operator.perl6fe"
1768
+ "name": "support.function.pod.code.perl6fe"
1764
1769
  },
1765
1770
  "2": {
1766
- "name": "punctuation.section.embedded.shell.begin.perl6fe"
1771
+ "name": "punctuation.section.embedded.pod.code.perl6fe"
1767
1772
  }
1768
1773
  },
1769
- "end": "\\|",
1770
1774
  "endCaptures": {
1771
- "0": {
1772
- "name": "punctuation.section.embedded.shell.begin.perl6fe"
1775
+ "1": {
1776
+ "name": "punctuation.section.embedded.pod.code.perl6fe"
1773
1777
  }
1774
- },
1775
- "name": "meta.shell.quote.single.perl6fe",
1778
+ }
1779
+ },
1780
+ {
1781
+ "name": "meta.pod.c.perl6fe",
1782
+ "contentName": "markup.italic.perl6fe",
1783
+ "begin": "(?x) (I) (\u003c\u003c)",
1784
+ "end": "(?x) (\u003e\u003e)",
1776
1785
  "patterns": [
1777
1786
  {
1778
- "include": "source.quoting.perl6fe#q_single_string_content"
1787
+ "include": "#comment-block-syntax"
1788
+ },
1789
+ {
1790
+ "include": "source.quoting.perl6fe#q_double_angle_string_content"
1779
1791
  }
1780
- ]
1781
- },
1782
- {
1783
- "begin": "([Qq]x)\\s*(\\/)",
1792
+ ],
1784
1793
  "beginCaptures": {
1785
1794
  "1": {
1786
- "name": "string.quoted.q.shell.operator.perl6fe"
1795
+ "name": "support.function.pod.code.perl6fe"
1787
1796
  },
1788
1797
  "2": {
1789
- "name": "punctuation.section.embedded.shell.begin.perl6fe"
1798
+ "name": "punctuation.section.embedded.pod.code.perl6fe"
1790
1799
  }
1791
1800
  },
1792
- "end": "(?<!\\\\)\\/",
1793
1801
  "endCaptures": {
1794
- "0": {
1795
- "name": "punctuation.section.embedded.shell.begin.perl6fe"
1796
- }
1797
- },
1798
- "name": "meta.shell.quote.single.perl6fe",
1799
- "patterns": [
1800
- {
1801
- "match": "\\\\\\/",
1802
- "name": "constant.character.escape.perl6fe"
1803
- },
1804
- {
1805
- "include": "source.quoting.perl6fe#q_single_string_content"
1802
+ "1": {
1803
+ "name": "punctuation.section.embedded.pod.code.perl6fe"
1806
1804
  }
1807
- ]
1805
+ }
1808
1806
  },
1809
1807
  {
1810
- "begin": "(qqx)\\s*({{)",
1811
- "beginCaptures": {
1812
- "1": {
1813
- "name": "string.quoted.q.shell.operator.perl6fe"
1814
- },
1815
- "2": {
1816
- "name": "punctuation.section.embedded.shell.begin.perl6fe"
1817
- }
1818
- },
1819
- "end": "}}",
1820
- "endCaptures": {
1821
- "0": {
1822
- "name": "punctuation.section.embedded.shell.begin.perl6fe"
1823
- }
1824
- },
1825
- "name": "meta.shell.quote.double.perl6fe",
1808
+ "name": "meta.pod.c.perl6fe",
1809
+ "contentName": "markup.bold.perl6fe",
1810
+ "begin": "(?x) (B) (\u003c\u003c)",
1811
+ "end": "(?x) (\u003e\u003e)",
1826
1812
  "patterns": [
1827
1813
  {
1828
- "include": "#interpolation"
1829
- },
1830
- {
1831
- "include": "#variables"
1814
+ "include": "#comment-block-syntax"
1832
1815
  },
1833
1816
  {
1834
- "include": "source.shell"
1817
+ "include": "source.quoting.perl6fe#q_double_angle_string_content"
1835
1818
  }
1836
- ]
1837
- },
1838
- {
1839
- "begin": "(qqx)\\s*({)",
1819
+ ],
1840
1820
  "beginCaptures": {
1841
1821
  "1": {
1842
- "name": "string.quoted.q.shell.operator.perl6fe"
1822
+ "name": "support.function.pod.code.perl6fe"
1843
1823
  },
1844
1824
  "2": {
1845
- "name": "punctuation.section.embedded.shell.begin.perl6fe"
1825
+ "name": "punctuation.section.embedded.pod.code.perl6fe"
1846
1826
  }
1847
1827
  },
1848
- "end": "}",
1849
1828
  "endCaptures": {
1850
- "0": {
1851
- "name": "punctuation.section.embedded.shell.begin.perl6fe"
1852
- }
1853
- },
1854
- "name": "meta.shell.quote.double.perl6fe",
1855
- "patterns": [
1856
- {
1857
- "include": "#interpolation"
1858
- },
1859
- {
1860
- "include": "#variables"
1861
- },
1862
- {
1863
- "include": "source.shell"
1829
+ "1": {
1830
+ "name": "punctuation.section.embedded.pod.code.perl6fe"
1864
1831
  }
1865
- ]
1832
+ }
1866
1833
  },
1867
1834
  {
1868
- "begin": "(qqx)\\s*(\\[\\[)",
1869
- "beginCaptures": {
1870
- "1": {
1871
- "name": "string.quoted.q.shell.operator.perl6fe"
1872
- },
1873
- "2": {
1874
- "name": "punctuation.section.embedded.shell.begin.perl6fe"
1875
- }
1876
- },
1877
- "end": "\\]\\]",
1878
- "endCaptures": {
1879
- "0": {
1880
- "name": "punctuation.section.embedded.shell.begin.perl6fe"
1881
- }
1882
- },
1883
- "name": "meta.shell.quote.double.perl6fe",
1835
+ "name": "meta.pod.c.perl6fe",
1836
+ "contentName": "markup.raw.code.perl6fe",
1837
+ "begin": "(?x) ([A-Z]) (\u003c\u003c)",
1838
+ "end": "(?x) (\u003e\u003e)",
1884
1839
  "patterns": [
1885
1840
  {
1886
- "include": "#interpolation"
1887
- },
1888
- {
1889
- "include": "#variables"
1841
+ "include": "#comment-block-syntax"
1890
1842
  },
1891
1843
  {
1892
- "include": "source.shell"
1844
+ "include": "source.quoting.perl6fe#q_double_angle_string_content"
1893
1845
  }
1894
- ]
1895
- },
1896
- {
1897
- "begin": "(qqx)\\s*(\\[)",
1846
+ ],
1898
1847
  "beginCaptures": {
1899
1848
  "1": {
1900
- "name": "string.quoted.q.shell.operator.perl6fe"
1849
+ "name": "support.function.pod.code.perl6fe"
1901
1850
  },
1902
1851
  "2": {
1903
- "name": "punctuation.section.embedded.shell.begin.perl6fe"
1852
+ "name": "punctuation.section.embedded.pod.code.perl6fe"
1904
1853
  }
1905
1854
  },
1906
- "end": "\\]",
1907
1855
  "endCaptures": {
1908
- "0": {
1909
- "name": "punctuation.section.embedded.shell.begin.perl6fe"
1856
+ "1": {
1857
+ "name": "punctuation.section.embedded.pod.code.perl6fe"
1910
1858
  }
1911
- },
1912
- "name": "meta.shell.quote.double.perl6fe",
1859
+ }
1860
+ },
1861
+ {
1862
+ "name": "meta.pod.c.perl6fe",
1863
+ "contentName": "markup.underline.perl6fe",
1864
+ "begin": "(?x) (U) (\u003c)",
1865
+ "end": "(?x) (\u003e)",
1913
1866
  "patterns": [
1914
1867
  {
1915
- "include": "#interpolation"
1916
- },
1917
- {
1918
- "include": "#variables"
1868
+ "include": "#comment-block-syntax"
1919
1869
  },
1920
1870
  {
1921
- "include": "source.shell"
1871
+ "include": "source.quoting.perl6fe#q_angle_string_content"
1922
1872
  }
1923
- ]
1924
- },
1925
- {
1926
- "begin": "(qqx)\\s*(\\|)",
1873
+ ],
1927
1874
  "beginCaptures": {
1928
1875
  "1": {
1929
- "name": "string.quoted.q.shell.operator.perl6fe"
1876
+ "name": "support.function.pod.code.perl6fe"
1930
1877
  },
1931
1878
  "2": {
1932
- "name": "punctuation.section.embedded.shell.begin.perl6fe"
1879
+ "name": "punctuation.section.embedded.pod.code.perl6fe"
1933
1880
  }
1934
1881
  },
1935
- "end": "\\|",
1936
1882
  "endCaptures": {
1937
- "0": {
1938
- "name": "punctuation.section.embedded.shell.begin.perl6fe"
1883
+ "1": {
1884
+ "name": "punctuation.section.embedded.pod.code.perl6fe"
1939
1885
  }
1940
- },
1941
- "name": "meta.shell.quote.double.perl6fe",
1886
+ }
1887
+ },
1888
+ {
1889
+ "name": "meta.pod.c.perl6fe",
1890
+ "contentName": "markup.italic.perl6fe",
1891
+ "begin": "(?x) (I) (\u003c)",
1892
+ "end": "(?x) (\u003e)",
1942
1893
  "patterns": [
1943
1894
  {
1944
- "include": "#interpolation"
1945
- },
1946
- {
1947
- "include": "#variables"
1895
+ "include": "#comment-block-syntax"
1948
1896
  },
1949
1897
  {
1950
- "include": "source.shell"
1898
+ "include": "source.quoting.perl6fe#q_angle_string_content"
1951
1899
  }
1952
- ]
1953
- },
1954
- {
1955
- "begin": "(qqx)\\s*(\\/)",
1900
+ ],
1956
1901
  "beginCaptures": {
1957
1902
  "1": {
1958
- "name": "string.quoted.q.shell.operator.perl6fe"
1903
+ "name": "support.function.pod.code.perl6fe"
1959
1904
  },
1960
1905
  "2": {
1961
- "name": "punctuation.section.embedded.shell.begin.perl6fe"
1906
+ "name": "punctuation.section.embedded.pod.code.perl6fe"
1962
1907
  }
1963
1908
  },
1964
- "end": "(?<!\\\\)\\/",
1965
1909
  "endCaptures": {
1966
- "0": {
1967
- "name": "punctuation.section.embedded.shell.begin.perl6fe"
1910
+ "1": {
1911
+ "name": "punctuation.section.embedded.pod.code.perl6fe"
1968
1912
  }
1969
- },
1970
- "name": "meta.shell.quote.double.perl6fe",
1913
+ }
1914
+ },
1915
+ {
1916
+ "name": "meta.pod.c.perl6fe",
1917
+ "contentName": "markup.bold.perl6fe",
1918
+ "begin": "(?x) (B) (\u003c)",
1919
+ "end": "(?x) (\u003e)",
1971
1920
  "patterns": [
1972
1921
  {
1973
- "match": "\\\\\\/",
1974
- "name": "constant.character.escape.perl6fe"
1975
- },
1976
- {
1977
- "include": "#interpolation"
1978
- },
1979
- {
1980
- "include": "#variables"
1922
+ "include": "#comment-block-syntax"
1981
1923
  },
1982
1924
  {
1983
- "include": "source.shell"
1925
+ "include": "source.quoting.perl6fe#q_angle_string_content"
1984
1926
  }
1985
- ]
1986
- }
1987
- ]
1988
- },
1989
- "comment-block-syntax": {
1990
- "patterns": [
1991
- {
1992
- "include": "#comment-block-delimited"
1993
- },
1994
- {
1995
- "include": "#comment-block-abbreviated"
1996
- },
1997
- {
1998
- "begin": "(?x) (U) (<<<)",
1927
+ ],
1999
1928
  "beginCaptures": {
2000
1929
  "1": {
2001
1930
  "name": "support.function.pod.code.perl6fe"
@@ -2004,25 +1933,25 @@
2004
1933
  "name": "punctuation.section.embedded.pod.code.perl6fe"
2005
1934
  }
2006
1935
  },
2007
- "end": "(?x) (>>>)",
2008
1936
  "endCaptures": {
2009
1937
  "1": {
2010
1938
  "name": "punctuation.section.embedded.pod.code.perl6fe"
2011
1939
  }
2012
- },
2013
- "contentName": "markup.underline.perl6fe",
1940
+ }
1941
+ },
1942
+ {
2014
1943
  "name": "meta.pod.c.perl6fe",
1944
+ "contentName": "markup.raw.code.perl6fe",
1945
+ "begin": "(?x) ([A-Z]) (\u003c)",
1946
+ "end": "(?x) (\u003e)",
2015
1947
  "patterns": [
2016
1948
  {
2017
1949
  "include": "#comment-block-syntax"
2018
1950
  },
2019
1951
  {
2020
- "include": "source.quoting.perl6fe#q_triple_angle_string_content"
1952
+ "include": "source.quoting.perl6fe#q_angle_string_content"
2021
1953
  }
2022
- ]
2023
- },
2024
- {
2025
- "begin": "(?x) (I) (<<<)",
1954
+ ],
2026
1955
  "beginCaptures": {
2027
1956
  "1": {
2028
1957
  "name": "support.function.pod.code.perl6fe"
@@ -2031,25 +1960,25 @@
2031
1960
  "name": "punctuation.section.embedded.pod.code.perl6fe"
2032
1961
  }
2033
1962
  },
2034
- "end": "(?x) (>>>)",
2035
1963
  "endCaptures": {
2036
1964
  "1": {
2037
1965
  "name": "punctuation.section.embedded.pod.code.perl6fe"
2038
1966
  }
2039
- },
2040
- "contentName": "markup.italic.perl6fe",
1967
+ }
1968
+ },
1969
+ {
2041
1970
  "name": "meta.pod.c.perl6fe",
1971
+ "contentName": "markup.underline.perl6fe",
1972
+ "begin": "(?x) (U) («)",
1973
+ "end": "(?x) (»)",
2042
1974
  "patterns": [
2043
1975
  {
2044
1976
  "include": "#comment-block-syntax"
2045
1977
  },
2046
1978
  {
2047
- "include": "source.quoting.perl6fe#q_triple_angle_string_content"
1979
+ "include": "source.quoting.perl6fe#q_chevron_string_content"
2048
1980
  }
2049
- ]
2050
- },
2051
- {
2052
- "begin": "(?x) (B) (<<<)",
1981
+ ],
2053
1982
  "beginCaptures": {
2054
1983
  "1": {
2055
1984
  "name": "support.function.pod.code.perl6fe"
@@ -2058,25 +1987,25 @@
2058
1987
  "name": "punctuation.section.embedded.pod.code.perl6fe"
2059
1988
  }
2060
1989
  },
2061
- "end": "(?x) (>>>)",
2062
1990
  "endCaptures": {
2063
1991
  "1": {
2064
1992
  "name": "punctuation.section.embedded.pod.code.perl6fe"
2065
1993
  }
2066
- },
2067
- "contentName": "markup.bold.perl6fe",
1994
+ }
1995
+ },
1996
+ {
2068
1997
  "name": "meta.pod.c.perl6fe",
1998
+ "contentName": "markup.italic.perl6fe",
1999
+ "begin": "(?x) (I) («)",
2000
+ "end": "(?x) (»)",
2069
2001
  "patterns": [
2070
2002
  {
2071
2003
  "include": "#comment-block-syntax"
2072
2004
  },
2073
2005
  {
2074
- "include": "source.quoting.perl6fe#q_triple_angle_string_content"
2006
+ "include": "source.quoting.perl6fe#q_chevron_string_content"
2075
2007
  }
2076
- ]
2077
- },
2078
- {
2079
- "begin": "(?x) ([A-Z]) (<<<)",
2008
+ ],
2080
2009
  "beginCaptures": {
2081
2010
  "1": {
2082
2011
  "name": "support.function.pod.code.perl6fe"
@@ -2085,25 +2014,25 @@
2085
2014
  "name": "punctuation.section.embedded.pod.code.perl6fe"
2086
2015
  }
2087
2016
  },
2088
- "end": "(?x) (>>>)",
2089
2017
  "endCaptures": {
2090
2018
  "1": {
2091
2019
  "name": "punctuation.section.embedded.pod.code.perl6fe"
2092
2020
  }
2093
- },
2094
- "contentName": "markup.raw.code.perl6fe",
2021
+ }
2022
+ },
2023
+ {
2095
2024
  "name": "meta.pod.c.perl6fe",
2025
+ "contentName": "markup.bold.perl6fe",
2026
+ "begin": "(?x) (B) («)",
2027
+ "end": "(?x) (»)",
2096
2028
  "patterns": [
2097
2029
  {
2098
2030
  "include": "#comment-block-syntax"
2099
2031
  },
2100
2032
  {
2101
- "include": "source.quoting.perl6fe#q_triple_angle_string_content"
2033
+ "include": "source.quoting.perl6fe#q_chevron_string_content"
2102
2034
  }
2103
- ]
2104
- },
2105
- {
2106
- "begin": "(?x) (U) (<<)",
2035
+ ],
2107
2036
  "beginCaptures": {
2108
2037
  "1": {
2109
2038
  "name": "support.function.pod.code.perl6fe"
@@ -2112,25 +2041,25 @@
2112
2041
  "name": "punctuation.section.embedded.pod.code.perl6fe"
2113
2042
  }
2114
2043
  },
2115
- "end": "(?x) (>>)",
2116
2044
  "endCaptures": {
2117
2045
  "1": {
2118
2046
  "name": "punctuation.section.embedded.pod.code.perl6fe"
2119
2047
  }
2120
- },
2121
- "contentName": "markup.underline.perl6fe",
2048
+ }
2049
+ },
2050
+ {
2122
2051
  "name": "meta.pod.c.perl6fe",
2052
+ "contentName": "markup.raw.code.perl6fe",
2053
+ "begin": "(?x) ([A-Z]) («)",
2054
+ "end": "(?x) (»)",
2123
2055
  "patterns": [
2124
2056
  {
2125
2057
  "include": "#comment-block-syntax"
2126
2058
  },
2127
2059
  {
2128
- "include": "source.quoting.perl6fe#q_double_angle_string_content"
2060
+ "include": "source.quoting.perl6fe#q_chevron_string_content"
2129
2061
  }
2130
- ]
2131
- },
2132
- {
2133
- "begin": "(?x) (I) (<<)",
2062
+ ],
2134
2063
  "beginCaptures": {
2135
2064
  "1": {
2136
2065
  "name": "support.function.pod.code.perl6fe"
@@ -2139,645 +2068,702 @@
2139
2068
  "name": "punctuation.section.embedded.pod.code.perl6fe"
2140
2069
  }
2141
2070
  },
2142
- "end": "(?x) (>>)",
2143
2071
  "endCaptures": {
2144
2072
  "1": {
2145
2073
  "name": "punctuation.section.embedded.pod.code.perl6fe"
2146
2074
  }
2147
- },
2148
- "contentName": "markup.italic.perl6fe",
2149
- "name": "meta.pod.c.perl6fe",
2150
- "patterns": [
2151
- {
2152
- "include": "#comment-block-syntax"
2153
- },
2154
- {
2155
- "include": "source.quoting.perl6fe#q_double_angle_string_content"
2156
- }
2157
- ]
2158
- },
2075
+ }
2076
+ }
2077
+ ]
2078
+ },
2079
+ "hex_escapes": {
2080
+ "patterns": [
2159
2081
  {
2160
- "begin": "(?x) (B) (<<)",
2161
- "beginCaptures": {
2082
+ "name": "punctuation.hex.perl6fe",
2083
+ "match": "(?x) (\\\\x) ( \\[ ) ( [\\dA-Fa-f]+ ) ( \\] )",
2084
+ "captures": {
2162
2085
  "1": {
2163
- "name": "support.function.pod.code.perl6fe"
2086
+ "name": "keyword.punctuation.hex.perl6fe"
2164
2087
  },
2165
2088
  "2": {
2166
- "name": "punctuation.section.embedded.pod.code.perl6fe"
2089
+ "name": "keyword.operator.bracket.open.perl6fe"
2090
+ },
2091
+ "3": {
2092
+ "name": "routine.name.hex.perl6fe"
2093
+ },
2094
+ "4": {
2095
+ "name": "keyword.operator.bracket.close.perl6fe"
2167
2096
  }
2168
- },
2169
- "end": "(?x) (>>)",
2170
- "endCaptures": {
2097
+ }
2098
+ }
2099
+ ]
2100
+ },
2101
+ "interpolation": {
2102
+ "patterns": [
2103
+ {
2104
+ "name": "variable.other.identifier.interpolated.perl6fe",
2105
+ "captures": {
2171
2106
  "1": {
2172
- "name": "punctuation.section.embedded.pod.code.perl6fe"
2173
- }
2174
- },
2175
- "contentName": "markup.bold.perl6fe",
2176
- "name": "meta.pod.c.perl6fe",
2177
- "patterns": [
2178
- {
2179
- "include": "#comment-block-syntax"
2107
+ "name": "variable.other.identifier.sigil.perl6fe"
2180
2108
  },
2181
- {
2182
- "include": "source.quoting.perl6fe#q_double_angle_string_content"
2109
+ "2": {
2110
+ "name": "support.class.twigil.interpolated.perl6fe"
2111
+ },
2112
+ "5": {
2113
+ "patterns": [
2114
+ {
2115
+ "begin": "\u003c",
2116
+ "end": "\u003e",
2117
+ "beginCaptures": {
2118
+ "0": {
2119
+ "name": "keyword.operator.chevron.open.perl6fe"
2120
+ }
2121
+ },
2122
+ "endCaptures": {
2123
+ "0": {
2124
+ "name": "keyword.operator.chevron.close.perl6fe"
2125
+ }
2126
+ }
2127
+ },
2128
+ {
2129
+ "begin": "\\[",
2130
+ "end": "\\]",
2131
+ "patterns": [
2132
+ {
2133
+ "include": "$self"
2134
+ }
2135
+ ],
2136
+ "beginCaptures": {
2137
+ "0": {
2138
+ "name": "keyword.operator.bracket.open.perl6fe"
2139
+ }
2140
+ },
2141
+ "endCaptures": {
2142
+ "0": {
2143
+ "name": "keyword.operator.bracket.close.perl6fe"
2144
+ }
2145
+ }
2146
+ }
2147
+ ]
2148
+ },
2149
+ "6": {
2150
+ "name": "keyword.operator.dot.perl6fe"
2151
+ },
2152
+ "7": {
2153
+ "name": "support.function.perl6fe"
2154
+ },
2155
+ "8": {
2156
+ "patterns": [
2157
+ {
2158
+ "include": "$self"
2159
+ }
2160
+ ],
2161
+ "beginCaptures": {
2162
+ "0": {
2163
+ "name": "keyword.operator.paren.open.perl6fe"
2164
+ }
2165
+ },
2166
+ "endCaptures": {
2167
+ "0": {
2168
+ "name": "keyword.operator.paren.close.perl6fe"
2169
+ }
2170
+ }
2183
2171
  }
2184
- ]
2172
+ }
2173
+ },
2174
+ {
2175
+ "include": "#hex_escapes"
2176
+ },
2177
+ {
2178
+ "include": "#regexp-variables"
2185
2179
  },
2186
2180
  {
2187
- "begin": "(?x) ([A-Z]) (<<)",
2181
+ "name": "meta.interpolation.perl6fe",
2182
+ "begin": "(?x) (?\u003c! m|rx|m:i|rx:i) (\\{)",
2183
+ "end": "(\\})",
2184
+ "patterns": [
2185
+ {
2186
+ "include": "$self"
2187
+ }
2188
+ ],
2188
2189
  "beginCaptures": {
2189
2190
  "1": {
2190
- "name": "support.function.pod.code.perl6fe"
2191
- },
2192
- "2": {
2193
- "name": "punctuation.section.embedded.pod.code.perl6fe"
2191
+ "name": "punctuation.section.embedded.begin.perl6fe"
2194
2192
  }
2195
2193
  },
2196
- "end": "(?x) (>>)",
2197
2194
  "endCaptures": {
2198
2195
  "1": {
2199
- "name": "punctuation.section.embedded.pod.code.perl6fe"
2196
+ "name": "punctuation.section.embedded.end.perl6fe"
2200
2197
  }
2201
- },
2202
- "contentName": "markup.raw.code.perl6fe",
2203
- "name": "meta.pod.c.perl6fe",
2198
+ }
2199
+ }
2200
+ ]
2201
+ },
2202
+ "numbers": {
2203
+ "patterns": [
2204
+ {
2205
+ "name": "constant.numeric.radix.perl6fe",
2206
+ "match": "(?x)\n(?\u003c= ^ | [=,;^\\s{\\[(/] | \\.\\. )\n[-−+]?\n0[bodx]\\w+"
2207
+ },
2208
+ {
2209
+ "name": "constant.numeric.perl6fe",
2210
+ "match": "(?x)\n (?\u003c= ^ | [×÷*=,:;^\\s{\\[(/] | \\.\\. | … )\n (?: \\^? [+\\-−] )?\n(?:\n (?: \\d+ (?: [\\_\\d]+ \\d )? )\n (?: \\. \\d+ (?: [\\_\\d]+ \\d )? )?\n)\n(?: e (?:-|−)? \\d+ (?: [\\_\\d]+ \\d )? )?"
2211
+ },
2212
+ {
2213
+ "name": "constant.numeric.perl6fe",
2214
+ "match": "(?x)\n (?\u003c= ^ | [×÷*=,:;^\\s{\\[(/] | \\.\\. )\n (?: [+-−] )?\n(?:\n (?: \\. \\d+ (?: [\\_\\d]+ \\d )? )\n)\n(?: e (?:-|−)? \\d+ (?: [\\_\\d]+ \\d )? )?"
2215
+ }
2216
+ ]
2217
+ },
2218
+ "p5_escaped_char": {
2219
+ "patterns": [
2220
+ {
2221
+ "name": "constant.character.escape.perl",
2222
+ "match": "\\\\\\d+"
2223
+ },
2224
+ {
2225
+ "name": "constant.character.escape.perl",
2226
+ "match": "\\\\c[^\\s\\\\]"
2227
+ },
2228
+ {
2229
+ "name": "constant.character.escape.perl",
2230
+ "match": "\\\\g(?:\\{(?:\\w*|-\\d+)\\}|\\d+)"
2231
+ },
2232
+ {
2233
+ "name": "constant.character.escape.perl",
2234
+ "match": "\\\\k(?:\\{\\w*\\}|\u003c\\w*\u003e|'\\w*')"
2235
+ },
2236
+ {
2237
+ "name": "constant.character.escape.perl",
2238
+ "match": "\\\\N\\{[^\\}]*\\}"
2239
+ },
2240
+ {
2241
+ "name": "constant.character.escape.perl",
2242
+ "match": "\\\\o\\{\\d*\\}"
2243
+ },
2244
+ {
2245
+ "name": "constant.character.escape.perl",
2246
+ "match": "\\\\(?:p|P)(?:\\{\\w*\\}|P)"
2247
+ },
2248
+ {
2249
+ "name": "constant.character.escape.perl",
2250
+ "match": "\\\\x(?:[0-9a-zA-Z]{2}|\\{\\w*\\})?"
2251
+ },
2252
+ {
2253
+ "name": "constant.character.escape.perl",
2254
+ "match": "\\\\."
2255
+ }
2256
+ ]
2257
+ },
2258
+ "p5_regex": {
2259
+ "patterns": [
2260
+ {
2261
+ "contentName": "string.regexp.p5.perl6fe",
2262
+ "begin": "(?x)(?\u003c![\\w\\/])(m|rx) \\s*((?:\\s*:\\w+)*)?(:P5)((?:\\s*:\\w+)*)?\\s* (\\{)",
2263
+ "end": "(?\u003c!\\\\)(\\})([gmixXsuUAJ]+)?",
2204
2264
  "patterns": [
2205
2265
  {
2206
- "include": "#comment-block-syntax"
2266
+ "include": "#p5_escaped_char"
2207
2267
  },
2208
2268
  {
2209
- "include": "source.quoting.perl6fe#q_double_angle_string_content"
2269
+ "include": "source.quoting.perl6fe#q_brace_string_content"
2210
2270
  }
2211
- ]
2212
- },
2213
- {
2214
- "begin": "(?x) (U) (<)",
2271
+ ],
2215
2272
  "beginCaptures": {
2216
2273
  "1": {
2217
- "name": "support.function.pod.code.perl6fe"
2274
+ "name": "string.regexp.construct.perl6fe"
2218
2275
  },
2219
2276
  "2": {
2220
- "name": "punctuation.section.embedded.pod.code.perl6fe"
2277
+ "name": "entity.name.section.adverb.regexp.perl6fe"
2278
+ },
2279
+ "3": {
2280
+ "name": "entity.name.section.p5.adverb.regexp.perl6fe"
2281
+ },
2282
+ "4": {
2283
+ "name": "entity.name.section.adverb.regexp.perl6fe"
2284
+ },
2285
+ "5": {
2286
+ "name": "punctuation.definition.regexp.perl6fe"
2221
2287
  }
2222
2288
  },
2223
- "end": "(?x) (>)",
2224
2289
  "endCaptures": {
2225
2290
  "1": {
2226
- "name": "punctuation.section.embedded.pod.code.perl6fe"
2291
+ "name": "punctuation.definition.regexp.perl6fe"
2292
+ },
2293
+ "2": {
2294
+ "name": "invalid.illegal.p5.regexp.modifier.perl6fe"
2227
2295
  }
2228
- },
2229
- "contentName": "markup.underline.perl6fe",
2230
- "name": "meta.pod.c.perl6fe",
2296
+ }
2297
+ },
2298
+ {
2299
+ "contentName": "string.regexp.p5.perl6fe",
2300
+ "begin": "(?x)(?\u003c![\\w\\/])(m|rx) \\s*((?:\\s*:\\w+)*)?(:P5)((?:\\s*:\\w+)*)?\\s* (\\[)",
2301
+ "end": "(?\u003c!\\\\)(\\])([gmixXsuUAJ]+)?",
2231
2302
  "patterns": [
2232
2303
  {
2233
- "include": "#comment-block-syntax"
2304
+ "include": "#p5_escaped_char"
2234
2305
  },
2235
2306
  {
2236
- "include": "source.quoting.perl6fe#q_angle_string_content"
2307
+ "include": "source.quoting.perl6fe#q_bracket_string_content"
2237
2308
  }
2238
- ]
2239
- },
2240
- {
2241
- "begin": "(?x) (I) (<)",
2309
+ ],
2242
2310
  "beginCaptures": {
2243
2311
  "1": {
2244
- "name": "support.function.pod.code.perl6fe"
2312
+ "name": "string.regexp.construct.perl6fe"
2245
2313
  },
2246
2314
  "2": {
2247
- "name": "punctuation.section.embedded.pod.code.perl6fe"
2315
+ "name": "entity.name.section.adverb.regexp.perl6fe"
2316
+ },
2317
+ "3": {
2318
+ "name": "entity.name.section.p5.adverb.regexp.perl6fe"
2319
+ },
2320
+ "4": {
2321
+ "name": "entity.name.section.adverb.regexp.perl6fe"
2322
+ },
2323
+ "5": {
2324
+ "name": "punctuation.definition.regexp.perl6fe"
2248
2325
  }
2249
2326
  },
2250
- "end": "(?x) (>)",
2251
2327
  "endCaptures": {
2252
2328
  "1": {
2253
- "name": "punctuation.section.embedded.pod.code.perl6fe"
2329
+ "name": "punctuation.definition.regexp.perl6fe"
2330
+ },
2331
+ "2": {
2332
+ "name": "invalid.illegal.p5.regexp.modifier.perl6fe"
2254
2333
  }
2255
- },
2256
- "contentName": "markup.italic.perl6fe",
2257
- "name": "meta.pod.c.perl6fe",
2334
+ }
2335
+ },
2336
+ {
2337
+ "contentName": "string.regexp.p5.perl6fe",
2338
+ "begin": "(?x)(?\u003c![\\w\\/])(m|rx) \\s*((?:\\s*:\\w+)*)?(:P5)((?:\\s*:\\w+)*)?\\s* (\\/)",
2339
+ "end": "(?\u003c!\\\\)(\\/)([gmixXsuUAJ]+)?",
2258
2340
  "patterns": [
2259
2341
  {
2260
- "include": "#comment-block-syntax"
2342
+ "include": "#p5_escaped_char"
2261
2343
  },
2262
2344
  {
2263
- "include": "source.quoting.perl6fe#q_angle_string_content"
2345
+ "include": "source.quoting.perl6fe#q_slash_string_content"
2264
2346
  }
2265
- ]
2266
- },
2267
- {
2268
- "begin": "(?x) (B) (<)",
2347
+ ],
2269
2348
  "beginCaptures": {
2270
2349
  "1": {
2271
- "name": "support.function.pod.code.perl6fe"
2350
+ "name": "string.regexp.construct.perl6fe"
2272
2351
  },
2273
2352
  "2": {
2274
- "name": "punctuation.section.embedded.pod.code.perl6fe"
2353
+ "name": "entity.name.section.adverb.regexp.perl6fe"
2354
+ },
2355
+ "3": {
2356
+ "name": "entity.name.section.p5.adverb.regexp.perl6fe"
2357
+ },
2358
+ "4": {
2359
+ "name": "entity.name.section.adverb.regexp.perl6fe"
2360
+ },
2361
+ "5": {
2362
+ "name": "punctuation.definition.regexp.perl6fe"
2275
2363
  }
2276
2364
  },
2277
- "end": "(?x) (>)",
2278
2365
  "endCaptures": {
2279
2366
  "1": {
2280
- "name": "punctuation.section.embedded.pod.code.perl6fe"
2367
+ "name": "punctuation.definition.regexp.perl6fe"
2368
+ },
2369
+ "2": {
2370
+ "name": "invalid.illegal.p5.regexp.modifier.perl6fe"
2281
2371
  }
2282
- },
2283
- "contentName": "markup.bold.perl6fe",
2284
- "name": "meta.pod.c.perl6fe",
2372
+ }
2373
+ }
2374
+ ]
2375
+ },
2376
+ "q_right_double_right_double_string_content": {
2377
+ "begin": "”",
2378
+ "end": "”",
2379
+ "patterns": [
2380
+ {
2381
+ "include": "#q_right_double_right_double_string_content"
2382
+ }
2383
+ ]
2384
+ },
2385
+ "regexp-variables": {
2386
+ "patterns": [
2387
+ {
2388
+ "name": "meta.match.variable.perl6fe",
2389
+ "begin": "\\$(?=\\\u003c)",
2390
+ "end": "(?![\\w\\\u003c\\\u003e])",
2285
2391
  "patterns": [
2286
2392
  {
2287
- "include": "#comment-block-syntax"
2288
- },
2289
- {
2290
- "include": "source.quoting.perl6fe#q_angle_string_content"
2393
+ "match": "(\\\u003c)([\\w\\-]+)(\\\u003e)",
2394
+ "captures": {
2395
+ "1": {
2396
+ "name": "support.class.match.name.delimiter.regexp.perl6fe"
2397
+ },
2398
+ "2": {
2399
+ "name": "variable.other.identifier.regexp.perl6"
2400
+ },
2401
+ "3": {
2402
+ "name": "support.class.match.name.delimiter.regexp.perl6fe"
2403
+ }
2404
+ }
2291
2405
  }
2292
- ]
2293
- },
2406
+ ],
2407
+ "beginCaptures": {
2408
+ "0": {
2409
+ "name": "variable.other.identifier.sigil.regexp.perl6"
2410
+ }
2411
+ }
2412
+ }
2413
+ ]
2414
+ },
2415
+ "shellquotes": {
2416
+ "patterns": [
2294
2417
  {
2295
- "begin": "(?x) ([A-Z]) (<)",
2418
+ "name": "meta.shell.quote.single.perl6fe",
2419
+ "begin": "([qQ]x)\\s*({{)",
2420
+ "end": "}}",
2421
+ "patterns": [
2422
+ {
2423
+ "include": "source.quoting.perl6fe#q_single_string_content"
2424
+ }
2425
+ ],
2296
2426
  "beginCaptures": {
2297
2427
  "1": {
2298
- "name": "support.function.pod.code.perl6fe"
2428
+ "name": "string.quoted.q.shell.operator.perl6fe"
2299
2429
  },
2300
2430
  "2": {
2301
- "name": "punctuation.section.embedded.pod.code.perl6fe"
2431
+ "name": "punctuation.section.embedded.shell.begin.perl6fe"
2302
2432
  }
2303
2433
  },
2304
- "end": "(?x) (>)",
2305
2434
  "endCaptures": {
2306
- "1": {
2307
- "name": "punctuation.section.embedded.pod.code.perl6fe"
2435
+ "0": {
2436
+ "name": "punctuation.section.embedded.shell.begin.perl6fe"
2308
2437
  }
2309
- },
2310
- "contentName": "markup.raw.code.perl6fe",
2311
- "name": "meta.pod.c.perl6fe",
2438
+ }
2439
+ },
2440
+ {
2441
+ "name": "meta.shell.quote.single.perl6fe",
2442
+ "begin": "([qQ]x)\\s*({)",
2443
+ "end": "}",
2312
2444
  "patterns": [
2313
2445
  {
2314
- "include": "#comment-block-syntax"
2315
- },
2316
- {
2317
- "include": "source.quoting.perl6fe#q_angle_string_content"
2446
+ "include": "source.quoting.perl6fe#q_single_string_content"
2318
2447
  }
2319
- ]
2320
- },
2321
- {
2322
- "begin": "(?x) (U) («)",
2448
+ ],
2323
2449
  "beginCaptures": {
2324
2450
  "1": {
2325
- "name": "support.function.pod.code.perl6fe"
2451
+ "name": "string.quoted.q.shell.operator.perl6fe"
2326
2452
  },
2327
2453
  "2": {
2328
- "name": "punctuation.section.embedded.pod.code.perl6fe"
2454
+ "name": "punctuation.section.embedded.shell.begin.perl6fe"
2329
2455
  }
2330
2456
  },
2331
- "end": "(?x) (»)",
2332
2457
  "endCaptures": {
2333
- "1": {
2334
- "name": "punctuation.section.embedded.pod.code.perl6fe"
2458
+ "0": {
2459
+ "name": "punctuation.section.embedded.shell.begin.perl6fe"
2335
2460
  }
2336
- },
2337
- "contentName": "markup.underline.perl6fe",
2338
- "name": "meta.pod.c.perl6fe",
2461
+ }
2462
+ },
2463
+ {
2464
+ "name": "meta.shell.quote.single.perl6fe",
2465
+ "begin": "([qQ]x)\\s*(\\[\\[)",
2466
+ "end": "\\]\\]",
2339
2467
  "patterns": [
2340
2468
  {
2341
- "include": "#comment-block-syntax"
2342
- },
2343
- {
2344
- "include": "source.quoting.perl6fe#q_chevron_string_content"
2469
+ "include": "source.quoting.perl6fe#q_single_string_content"
2345
2470
  }
2346
- ]
2347
- },
2348
- {
2349
- "begin": "(?x) (I) («)",
2471
+ ],
2350
2472
  "beginCaptures": {
2351
2473
  "1": {
2352
- "name": "support.function.pod.code.perl6fe"
2474
+ "name": "string.quoted.q.shell.operator.perl6fe"
2353
2475
  },
2354
2476
  "2": {
2355
- "name": "punctuation.section.embedded.pod.code.perl6fe"
2477
+ "name": "punctuation.section.embedded.shell.begin.perl6fe"
2356
2478
  }
2357
2479
  },
2358
- "end": "(?x) (»)",
2359
2480
  "endCaptures": {
2360
- "1": {
2361
- "name": "punctuation.section.embedded.pod.code.perl6fe"
2481
+ "0": {
2482
+ "name": "punctuation.section.embedded.shell.begin.perl6fe"
2362
2483
  }
2363
- },
2364
- "contentName": "markup.italic.perl6fe",
2365
- "name": "meta.pod.c.perl6fe",
2484
+ }
2485
+ },
2486
+ {
2487
+ "name": "meta.shell.quote.single.perl6fe",
2488
+ "begin": "([Qq]x)\\s*(\\[)",
2489
+ "end": "\\]",
2366
2490
  "patterns": [
2367
2491
  {
2368
- "include": "#comment-block-syntax"
2369
- },
2370
- {
2371
- "include": "source.quoting.perl6fe#q_chevron_string_content"
2492
+ "include": "source.quoting.perl6fe#q_single_string_content"
2372
2493
  }
2373
- ]
2374
- },
2375
- {
2376
- "begin": "(?x) (B) («)",
2494
+ ],
2377
2495
  "beginCaptures": {
2378
2496
  "1": {
2379
- "name": "support.function.pod.code.perl6fe"
2497
+ "name": "string.quoted.q.shell.operator.perl6fe"
2380
2498
  },
2381
2499
  "2": {
2382
- "name": "punctuation.section.embedded.pod.code.perl6fe"
2500
+ "name": "punctuation.section.embedded.shell.begin.perl6fe"
2383
2501
  }
2384
2502
  },
2385
- "end": "(?x) (»)",
2386
2503
  "endCaptures": {
2387
- "1": {
2388
- "name": "punctuation.section.embedded.pod.code.perl6fe"
2504
+ "0": {
2505
+ "name": "punctuation.section.embedded.shell.begin.perl6fe"
2389
2506
  }
2390
- },
2391
- "contentName": "markup.bold.perl6fe",
2392
- "name": "meta.pod.c.perl6fe",
2507
+ }
2508
+ },
2509
+ {
2510
+ "name": "meta.shell.quote.single.perl6fe",
2511
+ "begin": "([Qq]x)\\s*(\\|)",
2512
+ "end": "\\|",
2393
2513
  "patterns": [
2394
2514
  {
2395
- "include": "#comment-block-syntax"
2396
- },
2397
- {
2398
- "include": "source.quoting.perl6fe#q_chevron_string_content"
2515
+ "include": "source.quoting.perl6fe#q_single_string_content"
2399
2516
  }
2400
- ]
2401
- },
2402
- {
2403
- "begin": "(?x) ([A-Z]) («)",
2517
+ ],
2404
2518
  "beginCaptures": {
2405
2519
  "1": {
2406
- "name": "support.function.pod.code.perl6fe"
2520
+ "name": "string.quoted.q.shell.operator.perl6fe"
2407
2521
  },
2408
2522
  "2": {
2409
- "name": "punctuation.section.embedded.pod.code.perl6fe"
2523
+ "name": "punctuation.section.embedded.shell.begin.perl6fe"
2410
2524
  }
2411
2525
  },
2412
- "end": "(?x) (»)",
2413
2526
  "endCaptures": {
2414
- "1": {
2415
- "name": "punctuation.section.embedded.pod.code.perl6fe"
2527
+ "0": {
2528
+ "name": "punctuation.section.embedded.shell.begin.perl6fe"
2416
2529
  }
2417
- },
2418
- "contentName": "markup.raw.code.perl6fe",
2419
- "name": "meta.pod.c.perl6fe",
2530
+ }
2531
+ },
2532
+ {
2533
+ "name": "meta.shell.quote.single.perl6fe",
2534
+ "begin": "([Qq]x)\\s*(\\/)",
2535
+ "end": "(?\u003c!\\\\)\\/",
2420
2536
  "patterns": [
2421
2537
  {
2422
- "include": "#comment-block-syntax"
2538
+ "name": "constant.character.escape.perl6fe",
2539
+ "match": "\\\\\\/"
2423
2540
  },
2424
2541
  {
2425
- "include": "source.quoting.perl6fe#q_chevron_string_content"
2542
+ "include": "source.quoting.perl6fe#q_single_string_content"
2426
2543
  }
2427
- ]
2428
- }
2429
- ]
2430
- },
2431
- "p5_regex": {
2432
- "patterns": [
2433
- {
2434
- "begin": "(?x)(?<![\\w\\/])(m|rx) \\s*((?:\\s*:\\w+)*)?(:P5)((?:\\s*:\\w+)*)?\\s* (\\{)",
2544
+ ],
2435
2545
  "beginCaptures": {
2436
2546
  "1": {
2437
- "name": "string.regexp.construct.perl6fe"
2547
+ "name": "string.quoted.q.shell.operator.perl6fe"
2438
2548
  },
2439
2549
  "2": {
2440
- "name": "entity.name.section.adverb.regexp.perl6fe"
2441
- },
2442
- "3": {
2443
- "name": "entity.name.section.p5.adverb.regexp.perl6fe"
2444
- },
2445
- "4": {
2446
- "name": "entity.name.section.adverb.regexp.perl6fe"
2447
- },
2448
- "5": {
2449
- "name": "punctuation.definition.regexp.perl6fe"
2550
+ "name": "punctuation.section.embedded.shell.begin.perl6fe"
2450
2551
  }
2451
2552
  },
2452
- "end": "(?<!\\\\)(\\})([gmixXsuUAJ]+)?",
2453
2553
  "endCaptures": {
2454
- "1": {
2455
- "name": "punctuation.definition.regexp.perl6fe"
2456
- },
2457
- "2": {
2458
- "name": "invalid.illegal.p5.regexp.modifier.perl6fe"
2554
+ "0": {
2555
+ "name": "punctuation.section.embedded.shell.begin.perl6fe"
2459
2556
  }
2460
- },
2461
- "contentName": "string.regexp.p5.perl6fe",
2557
+ }
2558
+ },
2559
+ {
2560
+ "name": "meta.shell.quote.double.perl6fe",
2561
+ "begin": "(qqx)\\s*({{)",
2562
+ "end": "}}",
2462
2563
  "patterns": [
2463
2564
  {
2464
- "include": "#p5_escaped_char"
2565
+ "include": "#interpolation"
2465
2566
  },
2466
2567
  {
2467
- "include": "source.quoting.perl6fe#q_brace_string_content"
2568
+ "include": "#variables"
2569
+ },
2570
+ {
2571
+ "include": "source.shell"
2468
2572
  }
2469
- ]
2470
- },
2471
- {
2472
- "begin": "(?x)(?<![\\w\\/])(m|rx) \\s*((?:\\s*:\\w+)*)?(:P5)((?:\\s*:\\w+)*)?\\s* (\\[)",
2573
+ ],
2473
2574
  "beginCaptures": {
2474
2575
  "1": {
2475
- "name": "string.regexp.construct.perl6fe"
2576
+ "name": "string.quoted.q.shell.operator.perl6fe"
2476
2577
  },
2477
2578
  "2": {
2478
- "name": "entity.name.section.adverb.regexp.perl6fe"
2479
- },
2480
- "3": {
2481
- "name": "entity.name.section.p5.adverb.regexp.perl6fe"
2482
- },
2483
- "4": {
2484
- "name": "entity.name.section.adverb.regexp.perl6fe"
2485
- },
2486
- "5": {
2487
- "name": "punctuation.definition.regexp.perl6fe"
2579
+ "name": "punctuation.section.embedded.shell.begin.perl6fe"
2488
2580
  }
2489
2581
  },
2490
- "end": "(?<!\\\\)(\\])([gmixXsuUAJ]+)?",
2491
2582
  "endCaptures": {
2492
- "1": {
2493
- "name": "punctuation.definition.regexp.perl6fe"
2494
- },
2495
- "2": {
2496
- "name": "invalid.illegal.p5.regexp.modifier.perl6fe"
2583
+ "0": {
2584
+ "name": "punctuation.section.embedded.shell.begin.perl6fe"
2497
2585
  }
2498
- },
2499
- "contentName": "string.regexp.p5.perl6fe",
2586
+ }
2587
+ },
2588
+ {
2589
+ "name": "meta.shell.quote.double.perl6fe",
2590
+ "begin": "(qqx)\\s*({)",
2591
+ "end": "}",
2500
2592
  "patterns": [
2501
2593
  {
2502
- "include": "#p5_escaped_char"
2594
+ "include": "#interpolation"
2503
2595
  },
2504
2596
  {
2505
- "include": "source.quoting.perl6fe#q_bracket_string_content"
2506
- }
2507
- ]
2508
- },
2509
- {
2510
- "begin": "(?x)(?<![\\w\\/])(m|rx) \\s*((?:\\s*:\\w+)*)?(:P5)((?:\\s*:\\w+)*)?\\s* (\\/)",
2597
+ "include": "#variables"
2598
+ },
2599
+ {
2600
+ "include": "source.shell"
2601
+ }
2602
+ ],
2511
2603
  "beginCaptures": {
2512
2604
  "1": {
2513
- "name": "string.regexp.construct.perl6fe"
2605
+ "name": "string.quoted.q.shell.operator.perl6fe"
2514
2606
  },
2515
2607
  "2": {
2516
- "name": "entity.name.section.adverb.regexp.perl6fe"
2608
+ "name": "punctuation.section.embedded.shell.begin.perl6fe"
2609
+ }
2610
+ },
2611
+ "endCaptures": {
2612
+ "0": {
2613
+ "name": "punctuation.section.embedded.shell.begin.perl6fe"
2614
+ }
2615
+ }
2616
+ },
2617
+ {
2618
+ "name": "meta.shell.quote.double.perl6fe",
2619
+ "begin": "(qqx)\\s*(\\[\\[)",
2620
+ "end": "\\]\\]",
2621
+ "patterns": [
2622
+ {
2623
+ "include": "#interpolation"
2517
2624
  },
2518
- "3": {
2519
- "name": "entity.name.section.p5.adverb.regexp.perl6fe"
2625
+ {
2626
+ "include": "#variables"
2520
2627
  },
2521
- "4": {
2522
- "name": "entity.name.section.adverb.regexp.perl6fe"
2628
+ {
2629
+ "include": "source.shell"
2630
+ }
2631
+ ],
2632
+ "beginCaptures": {
2633
+ "1": {
2634
+ "name": "string.quoted.q.shell.operator.perl6fe"
2523
2635
  },
2524
- "5": {
2525
- "name": "punctuation.definition.regexp.perl6fe"
2636
+ "2": {
2637
+ "name": "punctuation.section.embedded.shell.begin.perl6fe"
2526
2638
  }
2527
2639
  },
2528
- "end": "(?<!\\\\)(\\/)([gmixXsuUAJ]+)?",
2529
2640
  "endCaptures": {
2641
+ "0": {
2642
+ "name": "punctuation.section.embedded.shell.begin.perl6fe"
2643
+ }
2644
+ }
2645
+ },
2646
+ {
2647
+ "name": "meta.shell.quote.double.perl6fe",
2648
+ "begin": "(qqx)\\s*(\\[)",
2649
+ "end": "\\]",
2650
+ "patterns": [
2651
+ {
2652
+ "include": "#interpolation"
2653
+ },
2654
+ {
2655
+ "include": "#variables"
2656
+ },
2657
+ {
2658
+ "include": "source.shell"
2659
+ }
2660
+ ],
2661
+ "beginCaptures": {
2530
2662
  "1": {
2531
- "name": "punctuation.definition.regexp.perl6fe"
2663
+ "name": "string.quoted.q.shell.operator.perl6fe"
2532
2664
  },
2533
2665
  "2": {
2534
- "name": "invalid.illegal.p5.regexp.modifier.perl6fe"
2666
+ "name": "punctuation.section.embedded.shell.begin.perl6fe"
2535
2667
  }
2536
2668
  },
2537
- "contentName": "string.regexp.p5.perl6fe",
2669
+ "endCaptures": {
2670
+ "0": {
2671
+ "name": "punctuation.section.embedded.shell.begin.perl6fe"
2672
+ }
2673
+ }
2674
+ },
2675
+ {
2676
+ "name": "meta.shell.quote.double.perl6fe",
2677
+ "begin": "(qqx)\\s*(\\|)",
2678
+ "end": "\\|",
2538
2679
  "patterns": [
2539
2680
  {
2540
- "include": "#p5_escaped_char"
2681
+ "include": "#interpolation"
2541
2682
  },
2542
2683
  {
2543
- "include": "source.quoting.perl6fe#q_slash_string_content"
2684
+ "include": "#variables"
2685
+ },
2686
+ {
2687
+ "include": "source.shell"
2544
2688
  }
2545
- ]
2546
- }
2547
- ]
2548
- },
2549
- "p5_escaped_char": {
2550
- "patterns": [
2551
- {
2552
- "match": "\\\\\\d+",
2553
- "name": "constant.character.escape.perl"
2554
- },
2555
- {
2556
- "match": "\\\\c[^\\s\\\\]",
2557
- "name": "constant.character.escape.perl"
2558
- },
2559
- {
2560
- "match": "\\\\g(?:\\{(?:\\w*|-\\d+)\\}|\\d+)",
2561
- "name": "constant.character.escape.perl"
2562
- },
2563
- {
2564
- "match": "\\\\k(?:\\{\\w*\\}|<\\w*>|'\\w*')",
2565
- "name": "constant.character.escape.perl"
2566
- },
2567
- {
2568
- "match": "\\\\N\\{[^\\}]*\\}",
2569
- "name": "constant.character.escape.perl"
2570
- },
2571
- {
2572
- "match": "\\\\o\\{\\d*\\}",
2573
- "name": "constant.character.escape.perl"
2574
- },
2575
- {
2576
- "match": "\\\\(?:p|P)(?:\\{\\w*\\}|P)",
2577
- "name": "constant.character.escape.perl"
2578
- },
2579
- {
2580
- "match": "\\\\x(?:[0-9a-zA-Z]{2}|\\{\\w*\\})?",
2581
- "name": "constant.character.escape.perl"
2582
- },
2583
- {
2584
- "match": "\\\\.",
2585
- "name": "constant.character.escape.perl"
2586
- }
2587
- ]
2588
- },
2589
- "special_variables": {
2590
- "patterns": [
2591
- {
2592
- "match": "(?x) [\\$\\@](?=[\\s,;\\{\\[\\(])| (?<=[\\(\\,])\\s*%(?![\\w\\*\\!\\?\\.\\^:=~])| \\$_| \\$\\/| \\$\\!(?!\\w)| \\$\\d(?!\\w)",
2593
- "name": "keyword.other.special-method.perl6fe"
2594
- }
2595
- ]
2596
- },
2597
- "regexp-variables": {
2598
- "patterns": [
2599
- {
2600
- "begin": "\\$(?=\\<)",
2689
+ ],
2601
2690
  "beginCaptures": {
2602
- "0": {
2603
- "name": "variable.other.identifier.sigil.regexp.perl6"
2691
+ "1": {
2692
+ "name": "string.quoted.q.shell.operator.perl6fe"
2693
+ },
2694
+ "2": {
2695
+ "name": "punctuation.section.embedded.shell.begin.perl6fe"
2604
2696
  }
2605
2697
  },
2606
- "end": "(?![\\w\\<\\>])",
2607
- "name": "meta.match.variable.perl6fe",
2608
- "patterns": [
2609
- {
2610
- "match": "(\\<)([\\w\\-]+)(\\>)",
2611
- "captures": {
2612
- "1": {
2613
- "name": "support.class.match.name.delimiter.regexp.perl6fe"
2614
- },
2615
- "2": {
2616
- "name": "variable.other.identifier.regexp.perl6"
2617
- },
2618
- "3": {
2619
- "name": "support.class.match.name.delimiter.regexp.perl6fe"
2620
- }
2621
- }
2698
+ "endCaptures": {
2699
+ "0": {
2700
+ "name": "punctuation.section.embedded.shell.begin.perl6fe"
2622
2701
  }
2623
- ]
2624
- }
2625
- ]
2626
- },
2627
- "variables": {
2628
- "patterns": [
2629
- {
2630
- "include": "#regexp-variables"
2702
+ }
2631
2703
  },
2632
2704
  {
2633
- "match": "(?x)\n(\\$|@|%|&)\n(\\.|\\*|:|!|\\^|~|=|\\?)?\n(\n (?:[\\p{Alpha}_]) # Must start with Alpha or underscore\n (?:\n [\\p{Digit}\\p{Alpha}_] # have alphanum/underscore or a ' or -\n | # followed by an alphanum or underscore\n [\\-'] [\\p{Digit}\\p{Alpha}_]\n )*\n)",
2634
- "captures": {
2705
+ "name": "meta.shell.quote.double.perl6fe",
2706
+ "begin": "(qqx)\\s*(\\/)",
2707
+ "end": "(?\u003c!\\\\)\\/",
2708
+ "patterns": [
2709
+ {
2710
+ "name": "constant.character.escape.perl6fe",
2711
+ "match": "\\\\\\/"
2712
+ },
2713
+ {
2714
+ "include": "#interpolation"
2715
+ },
2716
+ {
2717
+ "include": "#variables"
2718
+ },
2719
+ {
2720
+ "include": "source.shell"
2721
+ }
2722
+ ],
2723
+ "beginCaptures": {
2635
2724
  "1": {
2636
- "name": "variable.other.identifier.sigil.perl6fe"
2725
+ "name": "string.quoted.q.shell.operator.perl6fe"
2637
2726
  },
2638
2727
  "2": {
2639
- "name": "support.class.twigil.perl6fe"
2640
- },
2641
- "3": {
2642
- "name": "variable.other.identifier.perl6fe"
2728
+ "name": "punctuation.section.embedded.shell.begin.perl6fe"
2643
2729
  }
2644
2730
  },
2645
- "name": "meta.variable.container.perl6fe"
2731
+ "endCaptures": {
2732
+ "0": {
2733
+ "name": "punctuation.section.embedded.shell.begin.perl6fe"
2734
+ }
2735
+ }
2646
2736
  }
2647
2737
  ]
2648
2738
  },
2649
- "hex_escapes": {
2739
+ "special_variables": {
2650
2740
  "patterns": [
2651
2741
  {
2652
- "match": "(?x) (\\\\x) ( \\[ ) ( [\\dA-Fa-f]+ ) ( \\] )",
2653
- "captures": {
2654
- "1": {
2655
- "name": "keyword.punctuation.hex.perl6fe"
2656
- },
2657
- "2": {
2658
- "name": "keyword.operator.bracket.open.perl6fe"
2659
- },
2660
- "3": {
2661
- "name": "routine.name.hex.perl6fe"
2662
- },
2663
- "4": {
2664
- "name": "keyword.operator.bracket.close.perl6fe"
2665
- }
2666
- },
2667
- "name": "punctuation.hex.perl6fe"
2742
+ "name": "keyword.other.special-method.perl6fe",
2743
+ "match": "(?x) [\\$\\@](?=[\\s,;\\{\\[\\(])| (?\u003c=[\\(\\,])\\s*%(?![\\w\\*\\!\\?\\.\\^:=~])| \\$_| \\$\\/| \\$\\!(?!\\w)| \\$\\d(?!\\w)"
2668
2744
  }
2669
2745
  ]
2670
2746
  },
2671
- "interpolation": {
2747
+ "variables": {
2672
2748
  "patterns": [
2673
2749
  {
2674
- "match": "(?x)\n(?<!\\\\)\n(\\$|@|%|&)\n(?!\\$)\n(\\.|\\*|:|!|\\^|~|=|\\?)? # Twigils\n([\\p{Alpha}_]) # Must start with Alpha or underscore\n(\n [\\p{Digit}\\p{Alpha}_] # have alphanum/underscore or a ' or -\n| # followed by an alphanum or underscore\n [\\-'] [\\p{Digit}\\p{Alpha}_]\n)*\n( \\[ .* \\] )? # postcircumfix [ ]\n## methods\n(?:\n (?:\n ( \\. )\n (\n [\\p{Alpha}]\n (?:\n [\\p{Digit}\\p{Alpha}_] # have alphanum/underscore or a ' or -\n | # followed by an alphanum or underscore\n [\\-'] [\\p{Digit}\\p{Alpha}_]\n )*\n\n )\n )?\n ( \\( .*? \\) )\n)?",
2750
+ "include": "#regexp-variables"
2751
+ },
2752
+ {
2753
+ "name": "meta.variable.container.perl6fe",
2675
2754
  "captures": {
2676
2755
  "1": {
2677
2756
  "name": "variable.other.identifier.sigil.perl6fe"
2678
2757
  },
2679
2758
  "2": {
2680
- "name": "support.class.twigil.interpolated.perl6fe"
2681
- },
2682
- "5": {
2683
- "patterns": [
2684
- {
2685
- "begin": "<",
2686
- "beginCaptures": {
2687
- "0": {
2688
- "name": "keyword.operator.chevron.open.perl6fe"
2689
- }
2690
- },
2691
- "end": ">",
2692
- "endCaptures": {
2693
- "0": {
2694
- "name": "keyword.operator.chevron.close.perl6fe"
2695
- }
2696
- }
2697
- },
2698
- {
2699
- "begin": "\\[",
2700
- "beginCaptures": {
2701
- "0": {
2702
- "name": "keyword.operator.bracket.open.perl6fe"
2703
- }
2704
- },
2705
- "end": "\\]",
2706
- "endCaptures": {
2707
- "0": {
2708
- "name": "keyword.operator.bracket.close.perl6fe"
2709
- }
2710
- },
2711
- "patterns": [
2712
- {
2713
- "include": "$self"
2714
- }
2715
- ]
2716
- }
2717
- ]
2718
- },
2719
- "6": {
2720
- "name": "keyword.operator.dot.perl6fe"
2721
- },
2722
- "7": {
2723
- "name": "support.function.perl6fe"
2759
+ "name": "support.class.twigil.perl6fe"
2724
2760
  },
2725
- "8": {
2726
- "begin": "(",
2727
- "beginCaptures": {
2728
- "0": "keyword.operator.paren.open.perl6fe"
2729
- },
2730
- "end": ")",
2731
- "endCaptures": {
2732
- "0": {
2733
- "name": "keyword.operator.paren.close.perl6fe"
2734
- }
2735
- },
2736
- "patterns": [
2737
- {
2738
- "include": "$self"
2739
- }
2740
- ]
2741
- }
2742
- },
2743
- "name": "variable.other.identifier.interpolated.perl6fe"
2744
- },
2745
- {
2746
- "include": "#hex_escapes"
2747
- },
2748
- {
2749
- "include": "#regexp-variables"
2750
- },
2751
- {
2752
- "begin": "(?x) (?<! m|rx|m:i|rx:i) (\\{)",
2753
- "beginCaptures": {
2754
- "1": {
2755
- "name": "punctuation.section.embedded.begin.perl6fe"
2756
- }
2757
- },
2758
- "end": "(\\})",
2759
- "endCaptures": {
2760
- "1": {
2761
- "name": "punctuation.section.embedded.end.perl6fe"
2762
- }
2763
- },
2764
- "patterns": [
2765
- {
2766
- "include": "$self"
2761
+ "3": {
2762
+ "name": "variable.other.identifier.perl6fe"
2767
2763
  }
2768
- ],
2769
- "name": "meta.interpolation.perl6fe"
2770
- }
2771
- ]
2772
- },
2773
- "q_right_double_right_double_string_content": {
2774
- "begin": "”",
2775
- "end": "”",
2776
- "patterns": [
2777
- {
2778
- "include": "#q_right_double_right_double_string_content"
2764
+ }
2779
2765
  }
2780
2766
  ]
2781
2767
  }
2782
2768
  }
2783
- }
2769
+ }