tm-grammars 0.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 (181) hide show
  1. package/LICENSE +22 -0
  2. package/NOTICE +6565 -0
  3. package/README.md +211 -0
  4. package/grammars/abap.json +380 -0
  5. package/grammars/actionscript-3.json +951 -0
  6. package/grammars/ada.json +3874 -0
  7. package/grammars/apache.json +562 -0
  8. package/grammars/apex.json +3203 -0
  9. package/grammars/apl.json +1479 -0
  10. package/grammars/applescript.json +1406 -0
  11. package/grammars/ara.json +428 -0
  12. package/grammars/asm.json +1741 -0
  13. package/grammars/astro.json +776 -0
  14. package/grammars/awk.json +388 -0
  15. package/grammars/ballerina.json +3768 -0
  16. package/grammars/bat.json +783 -0
  17. package/grammars/beancount.json +831 -0
  18. package/grammars/berry.json +172 -0
  19. package/grammars/bibtex.json +315 -0
  20. package/grammars/bicep.json +239 -0
  21. package/grammars/blade.json +3870 -0
  22. package/grammars/c.json +3552 -0
  23. package/grammars/cadence.json +738 -0
  24. package/grammars/clarity.json +877 -0
  25. package/grammars/clojure.json +426 -0
  26. package/grammars/cmake.json +143 -0
  27. package/grammars/cobol.json +1124 -0
  28. package/grammars/codeql.json +1540 -0
  29. package/grammars/coffee.json +1311 -0
  30. package/grammars/cpp-macro.json +9498 -0
  31. package/grammars/cpp.json +16635 -0
  32. package/grammars/crystal.json +1866 -0
  33. package/grammars/csharp.json +5722 -0
  34. package/grammars/css.json +1860 -0
  35. package/grammars/csv.json +46 -0
  36. package/grammars/cue.json +1128 -0
  37. package/grammars/cypher.json +353 -0
  38. package/grammars/d.json +3185 -0
  39. package/grammars/dart.json +522 -0
  40. package/grammars/dax.json +185 -0
  41. package/grammars/diff.json +155 -0
  42. package/grammars/docker.json +97 -0
  43. package/grammars/dream-maker.json +640 -0
  44. package/grammars/elixir.json +1014 -0
  45. package/grammars/elm.json +751 -0
  46. package/grammars/erb.json +156 -0
  47. package/grammars/erlang.json +1757 -0
  48. package/grammars/fish.json +189 -0
  49. package/grammars/fsharp.json +1831 -0
  50. package/grammars/gdresource.json +290 -0
  51. package/grammars/gdscript.json +969 -0
  52. package/grammars/gdshader.json +405 -0
  53. package/grammars/gherkin.json +133 -0
  54. package/grammars/git-commit.json +85 -0
  55. package/grammars/git-rebase.json +56 -0
  56. package/grammars/glimmer-js.json +98 -0
  57. package/grammars/glimmer-ts.json +98 -0
  58. package/grammars/glsl.json +57 -0
  59. package/grammars/gnuplot.json +892 -0
  60. package/grammars/go.json +1012 -0
  61. package/grammars/graphql.json +1295 -0
  62. package/grammars/groovy.json +1378 -0
  63. package/grammars/hack.json +2650 -0
  64. package/grammars/haml.json +598 -0
  65. package/grammars/handlebars.json +848 -0
  66. package/grammars/haskell.json +2431 -0
  67. package/grammars/hcl.json +787 -0
  68. package/grammars/hjson.json +821 -0
  69. package/grammars/hlsl.json +212 -0
  70. package/grammars/html.json +93 -0
  71. package/grammars/imba.json +2696 -0
  72. package/grammars/ini.json +108 -0
  73. package/grammars/java.json +1885 -0
  74. package/grammars/javascript.json +5984 -0
  75. package/grammars/jinja-html.json +16 -0
  76. package/grammars/jinja.json +345 -0
  77. package/grammars/jison.json +715 -0
  78. package/grammars/jsdoc.json +21 -0
  79. package/grammars/json.json +208 -0
  80. package/grammars/json5.json +244 -0
  81. package/grammars/jsonc.json +208 -0
  82. package/grammars/jsonl.json +208 -0
  83. package/grammars/jsonnet.json +211 -0
  84. package/grammars/jssm.json +159 -0
  85. package/grammars/jsx.json +5984 -0
  86. package/grammars/julia.json +1061 -0
  87. package/grammars/kotlin.json +580 -0
  88. package/grammars/kusto.json +687 -0
  89. package/grammars/latex.json +2395 -0
  90. package/grammars/less.json +5012 -0
  91. package/grammars/liquid.json +990 -0
  92. package/grammars/lisp.json +121 -0
  93. package/grammars/logo.json +55 -0
  94. package/grammars/lua.json +956 -0
  95. package/grammars/make.json +629 -0
  96. package/grammars/markdown.json +3066 -0
  97. package/grammars/marko.json +1344 -0
  98. package/grammars/matlab.json +1131 -0
  99. package/grammars/mdc.json +571 -0
  100. package/grammars/mdx.json +5629 -0
  101. package/grammars/mermaid.json +1382 -0
  102. package/grammars/mojo.json +4153 -0
  103. package/grammars/narrat.json +227 -0
  104. package/grammars/nextflow.json +298 -0
  105. package/grammars/nginx.json +2121 -0
  106. package/grammars/nim.json +1522 -0
  107. package/grammars/nix.json +1200 -0
  108. package/grammars/nushell.json +1047 -0
  109. package/grammars/objective-c.json +3750 -0
  110. package/grammars/objective-cpp.json +7242 -0
  111. package/grammars/ocaml.json +2967 -0
  112. package/grammars/pascal.json +154 -0
  113. package/grammars/perl.json +2971 -0
  114. package/grammars/php.json +4024 -0
  115. package/grammars/plsql.json +241 -0
  116. package/grammars/postcss.json +377 -0
  117. package/grammars/powerquery.json +349 -0
  118. package/grammars/powershell.json +1024 -0
  119. package/grammars/prisma.json +443 -0
  120. package/grammars/prolog.json +298 -0
  121. package/grammars/proto.json +507 -0
  122. package/grammars/pug.json +1033 -0
  123. package/grammars/puppet.json +777 -0
  124. package/grammars/purescript.json +871 -0
  125. package/grammars/python.json +4208 -0
  126. package/grammars/r.json +637 -0
  127. package/grammars/raku.json +310 -0
  128. package/grammars/razor.json +1813 -0
  129. package/grammars/reg.json +136 -0
  130. package/grammars/rel.json +200 -0
  131. package/grammars/riscv.json +298 -0
  132. package/grammars/rst.json +734 -0
  133. package/grammars/ruby.json +2769 -0
  134. package/grammars/rust.json +1171 -0
  135. package/grammars/sas.json +302 -0
  136. package/grammars/sass.json +618 -0
  137. package/grammars/scala.json +1313 -0
  138. package/grammars/scheme.json +384 -0
  139. package/grammars/scss.json +1874 -0
  140. package/grammars/shaderlab.json +199 -0
  141. package/grammars/shellscript.json +2025 -0
  142. package/grammars/shellsession.json +33 -0
  143. package/grammars/smalltalk.json +235 -0
  144. package/grammars/solidity.json +1210 -0
  145. package/grammars/sparql.json +45 -0
  146. package/grammars/splunk.json +91 -0
  147. package/grammars/sql.json +631 -0
  148. package/grammars/ssh-config.json +88 -0
  149. package/grammars/stata.json +3050 -0
  150. package/grammars/stylus.json +1208 -0
  151. package/grammars/svelte.json +1171 -0
  152. package/grammars/swift.json +4203 -0
  153. package/grammars/system-verilog.json +1063 -0
  154. package/grammars/tasl.json +292 -0
  155. package/grammars/tcl.json +291 -0
  156. package/grammars/tex.json +281 -0
  157. package/grammars/toml.json +431 -0
  158. package/grammars/tsx.json +5984 -0
  159. package/grammars/turtle.json +261 -0
  160. package/grammars/twig.json +1394 -0
  161. package/grammars/typescript.json +5735 -0
  162. package/grammars/v.json +1001 -0
  163. package/grammars/vb.json +232 -0
  164. package/grammars/verilog.json +305 -0
  165. package/grammars/vhdl.json +1484 -0
  166. package/grammars/viml.json +445 -0
  167. package/grammars/vue-html.json +559 -0
  168. package/grammars/vue.json +1237 -0
  169. package/grammars/vyper.json +5415 -0
  170. package/grammars/wasm.json +831 -0
  171. package/grammars/wenyan.json +129 -0
  172. package/grammars/wgsl.json +391 -0
  173. package/grammars/wolfram.json +2370 -0
  174. package/grammars/xml.json +382 -0
  175. package/grammars/xsl.json +89 -0
  176. package/grammars/yaml.json +616 -0
  177. package/grammars/zenscript.json +257 -0
  178. package/grammars/zig.json +312 -0
  179. package/index.d.ts +18 -0
  180. package/index.js +2165 -0
  181. package/package.json +46 -0
@@ -0,0 +1,2971 @@
1
+ {
2
+ "displayName": "Perl",
3
+ "name": "perl",
4
+ "patterns": [
5
+ {
6
+ "include": "#line_comment"
7
+ },
8
+ {
9
+ "begin": "^(?==[a-zA-Z]+)",
10
+ "end": "^(=cut\\b.*$)",
11
+ "endCaptures": {
12
+ "1": {
13
+ "patterns": [
14
+ {
15
+ "include": "#pod"
16
+ }
17
+ ]
18
+ }
19
+ },
20
+ "name": "comment.block.documentation.perl",
21
+ "patterns": [
22
+ {
23
+ "include": "#pod"
24
+ }
25
+ ]
26
+ },
27
+ {
28
+ "include": "#variable"
29
+ },
30
+ {
31
+ "applyEndPatternLast": 1,
32
+ "begin": "\\b(?=qr\\s*[^\\s\\w])",
33
+ "comment": "string.regexp.compile.perl",
34
+ "end": "((([egimosxradlupcn]*)))(?=(\\s+\\S|\\s*[;\\,\\#\\{\\}\\)]|\\s*$))",
35
+ "endCaptures": {
36
+ "1": {
37
+ "name": "string.regexp.compile.perl"
38
+ },
39
+ "2": {
40
+ "name": "punctuation.definition.string.perl"
41
+ },
42
+ "3": {
43
+ "name": "keyword.control.regexp-option.perl"
44
+ }
45
+ },
46
+ "patterns": [
47
+ {
48
+ "begin": "(qr)\\s*\\{",
49
+ "captures": {
50
+ "0": {
51
+ "name": "punctuation.definition.string.perl"
52
+ },
53
+ "1": {
54
+ "name": "support.function.perl"
55
+ }
56
+ },
57
+ "end": "\\}",
58
+ "name": "string.regexp.compile.nested_braces.perl",
59
+ "patterns": [
60
+ {
61
+ "include": "#escaped_char"
62
+ },
63
+ {
64
+ "include": "#variable"
65
+ },
66
+ {
67
+ "include": "#nested_braces_interpolated"
68
+ }
69
+ ]
70
+ },
71
+ {
72
+ "begin": "(qr)\\s*\\[",
73
+ "captures": {
74
+ "0": {
75
+ "name": "punctuation.definition.string.perl"
76
+ },
77
+ "1": {
78
+ "name": "support.function.perl"
79
+ }
80
+ },
81
+ "end": "\\]",
82
+ "name": "string.regexp.compile.nested_brackets.perl",
83
+ "patterns": [
84
+ {
85
+ "include": "#escaped_char"
86
+ },
87
+ {
88
+ "include": "#variable"
89
+ },
90
+ {
91
+ "include": "#nested_brackets_interpolated"
92
+ }
93
+ ]
94
+ },
95
+ {
96
+ "begin": "(qr)\\s*<",
97
+ "captures": {
98
+ "0": {
99
+ "name": "punctuation.definition.string.perl"
100
+ },
101
+ "1": {
102
+ "name": "support.function.perl"
103
+ }
104
+ },
105
+ "end": ">",
106
+ "name": "string.regexp.compile.nested_ltgt.perl",
107
+ "patterns": [
108
+ {
109
+ "include": "#escaped_char"
110
+ },
111
+ {
112
+ "include": "#variable"
113
+ },
114
+ {
115
+ "include": "#nested_ltgt_interpolated"
116
+ }
117
+ ]
118
+ },
119
+ {
120
+ "begin": "(qr)\\s*\\(",
121
+ "captures": {
122
+ "0": {
123
+ "name": "punctuation.definition.string.perl"
124
+ },
125
+ "1": {
126
+ "name": "support.function.perl"
127
+ }
128
+ },
129
+ "end": "\\)",
130
+ "name": "string.regexp.compile.nested_parens.perl",
131
+ "patterns": [
132
+ {
133
+ "comment": "This is to prevent thinks like qr/foo$/ to treat $/ as a variable",
134
+ "match": "\\$(?=[^\\s\\w\\\\'\\{\\[\\(\\<])"
135
+ },
136
+ {
137
+ "include": "#escaped_char"
138
+ },
139
+ {
140
+ "include": "#variable"
141
+ },
142
+ {
143
+ "include": "#nested_parens_interpolated"
144
+ }
145
+ ]
146
+ },
147
+ {
148
+ "begin": "(qr)\\s*'",
149
+ "captures": {
150
+ "0": {
151
+ "name": "punctuation.definition.string.perl"
152
+ },
153
+ "1": {
154
+ "name": "support.function.perl"
155
+ }
156
+ },
157
+ "end": "'",
158
+ "name": "string.regexp.compile.single-quote.perl",
159
+ "patterns": [
160
+ {
161
+ "include": "#escaped_char"
162
+ }
163
+ ]
164
+ },
165
+ {
166
+ "begin": "(qr)\\s*([^\\s\\w'\\{\\[\\(\\<])",
167
+ "captures": {
168
+ "0": {
169
+ "name": "punctuation.definition.string.perl"
170
+ },
171
+ "1": {
172
+ "name": "support.function.perl"
173
+ }
174
+ },
175
+ "end": "\\2",
176
+ "name": "string.regexp.compile.simple-delimiter.perl",
177
+ "patterns": [
178
+ {
179
+ "comment": "This is to prevent thinks like qr/foo$/ to treat $/ as a variable",
180
+ "match": "\\$(?=[^\\s\\w'\\{\\[\\(\\<])",
181
+ "name": "keyword.control.anchor.perl"
182
+ },
183
+ {
184
+ "include": "#escaped_char"
185
+ },
186
+ {
187
+ "include": "#variable"
188
+ },
189
+ {
190
+ "include": "#nested_parens_interpolated"
191
+ }
192
+ ]
193
+ }
194
+ ]
195
+ },
196
+ {
197
+ "applyEndPatternLast": 1,
198
+ "begin": "(?<!\\{|\\+|\\-)\\b(?=m\\s*[^\\sa-zA-Z0-9])",
199
+ "comment": "string.regexp.find-m.perl",
200
+ "end": "((([egimosxradlupcn]*)))(?=(\\s+\\S|\\s*[;\\,\\#\\{\\}\\)]|\\s*$))",
201
+ "endCaptures": {
202
+ "1": {
203
+ "name": "string.regexp.find-m.perl"
204
+ },
205
+ "2": {
206
+ "name": "punctuation.definition.string.perl"
207
+ },
208
+ "3": {
209
+ "name": "keyword.control.regexp-option.perl"
210
+ }
211
+ },
212
+ "patterns": [
213
+ {
214
+ "begin": "(m)\\s*\\{",
215
+ "captures": {
216
+ "0": {
217
+ "name": "punctuation.definition.string.perl"
218
+ },
219
+ "1": {
220
+ "name": "support.function.perl"
221
+ }
222
+ },
223
+ "end": "\\}",
224
+ "name": "string.regexp.find-m.nested_braces.perl",
225
+ "patterns": [
226
+ {
227
+ "include": "#escaped_char"
228
+ },
229
+ {
230
+ "include": "#variable"
231
+ },
232
+ {
233
+ "include": "#nested_braces_interpolated"
234
+ }
235
+ ]
236
+ },
237
+ {
238
+ "begin": "(m)\\s*\\[",
239
+ "captures": {
240
+ "0": {
241
+ "name": "punctuation.definition.string.perl"
242
+ },
243
+ "1": {
244
+ "name": "support.function.perl"
245
+ }
246
+ },
247
+ "end": "\\]",
248
+ "name": "string.regexp.find-m.nested_brackets.perl",
249
+ "patterns": [
250
+ {
251
+ "include": "#escaped_char"
252
+ },
253
+ {
254
+ "include": "#variable"
255
+ },
256
+ {
257
+ "include": "#nested_brackets_interpolated"
258
+ }
259
+ ]
260
+ },
261
+ {
262
+ "begin": "(m)\\s*<",
263
+ "captures": {
264
+ "0": {
265
+ "name": "punctuation.definition.string.perl"
266
+ },
267
+ "1": {
268
+ "name": "support.function.perl"
269
+ }
270
+ },
271
+ "end": ">",
272
+ "name": "string.regexp.find-m.nested_ltgt.perl",
273
+ "patterns": [
274
+ {
275
+ "include": "#escaped_char"
276
+ },
277
+ {
278
+ "include": "#variable"
279
+ },
280
+ {
281
+ "include": "#nested_ltgt_interpolated"
282
+ }
283
+ ]
284
+ },
285
+ {
286
+ "begin": "(m)\\s*\\(",
287
+ "captures": {
288
+ "0": {
289
+ "name": "punctuation.definition.string.perl"
290
+ },
291
+ "1": {
292
+ "name": "support.function.perl"
293
+ }
294
+ },
295
+ "end": "\\)",
296
+ "name": "string.regexp.find-m.nested_parens.perl",
297
+ "patterns": [
298
+ {
299
+ "include": "#escaped_char"
300
+ },
301
+ {
302
+ "include": "#variable"
303
+ },
304
+ {
305
+ "include": "#nested_parens_interpolated"
306
+ }
307
+ ]
308
+ },
309
+ {
310
+ "begin": "(m)\\s*'",
311
+ "captures": {
312
+ "0": {
313
+ "name": "punctuation.definition.string.perl"
314
+ },
315
+ "1": {
316
+ "name": "support.function.perl"
317
+ }
318
+ },
319
+ "end": "'",
320
+ "name": "string.regexp.find-m.single-quote.perl",
321
+ "patterns": [
322
+ {
323
+ "include": "#escaped_char"
324
+ }
325
+ ]
326
+ },
327
+ {
328
+ "begin": "\\G(?<!\\{|\\+|\\-)(m)(?!_)\\s*([^\\sa-zA-Z0-9'\\{\\[\\(\\<])",
329
+ "captures": {
330
+ "0": {
331
+ "name": "punctuation.definition.string.perl"
332
+ },
333
+ "1": {
334
+ "name": "support.function.perl"
335
+ }
336
+ },
337
+ "end": "\\2",
338
+ "name": "string.regexp.find-m.simple-delimiter.perl",
339
+ "patterns": [
340
+ {
341
+ "comment": "This is to prevent thinks like qr/foo$/ to treat $/ as a variable",
342
+ "match": "\\$(?=[^\\sa-zA-Z0-9'\\{\\[\\(\\<])",
343
+ "name": "keyword.control.anchor.perl"
344
+ },
345
+ {
346
+ "include": "#escaped_char"
347
+ },
348
+ {
349
+ "include": "#variable"
350
+ },
351
+ {
352
+ "begin": "\\[",
353
+ "beginCaptures": {
354
+ "1": {
355
+ "name": "punctuation.definition.character-class.begin.perl"
356
+ }
357
+ },
358
+ "end": "\\]",
359
+ "endCaptures": {
360
+ "1": {
361
+ "name": "punctuation.definition.character-class.end.perl"
362
+ }
363
+ },
364
+ "name": "constant.other.character-class.set.perl",
365
+ "patterns": [
366
+ {
367
+ "comment": "This is to prevent thinks like qr/foo$/ to treat $/ as a variable",
368
+ "match": "\\$(?=[^\\s\\w'\\{\\[\\(\\<])",
369
+ "name": "keyword.control.anchor.perl"
370
+ },
371
+ {
372
+ "include": "#escaped_char"
373
+ }
374
+ ]
375
+ },
376
+ {
377
+ "include": "#nested_parens_interpolated"
378
+ }
379
+ ]
380
+ }
381
+ ]
382
+ },
383
+ {
384
+ "applyEndPatternLast": 1,
385
+ "begin": "\\b(?=(?<!\\&)(s)(\\s+\\S|\\s*[;\\,\\{\\}\\(\\)\\[<]|$))",
386
+ "comment": "string.regexp.replace.perl",
387
+ "end": "((([egimosxradlupcn]*)))(?=(\\s+\\S|\\s*[;\\,\\{\\}\\)\\]>]|\\s*$))",
388
+ "endCaptures": {
389
+ "1": {
390
+ "name": "string.regexp.replace.perl"
391
+ },
392
+ "2": {
393
+ "name": "punctuation.definition.string.perl"
394
+ },
395
+ "3": {
396
+ "name": "keyword.control.regexp-option.perl"
397
+ }
398
+ },
399
+ "patterns": [
400
+ {
401
+ "begin": "(s)\\s*\\{",
402
+ "captures": {
403
+ "0": {
404
+ "name": "punctuation.definition.string.perl"
405
+ },
406
+ "1": {
407
+ "name": "support.function.perl"
408
+ }
409
+ },
410
+ "end": "\\}",
411
+ "name": "string.regexp.nested_braces.perl",
412
+ "patterns": [
413
+ {
414
+ "include": "#escaped_char"
415
+ },
416
+ {
417
+ "include": "#nested_braces"
418
+ }
419
+ ]
420
+ },
421
+ {
422
+ "begin": "(s)\\s*\\[",
423
+ "captures": {
424
+ "0": {
425
+ "name": "punctuation.definition.string.perl"
426
+ },
427
+ "1": {
428
+ "name": "support.function.perl"
429
+ }
430
+ },
431
+ "end": "\\]",
432
+ "name": "string.regexp.nested_brackets.perl",
433
+ "patterns": [
434
+ {
435
+ "include": "#escaped_char"
436
+ },
437
+ {
438
+ "include": "#nested_brackets"
439
+ }
440
+ ]
441
+ },
442
+ {
443
+ "begin": "(s)\\s*<",
444
+ "captures": {
445
+ "0": {
446
+ "name": "punctuation.definition.string.perl"
447
+ },
448
+ "1": {
449
+ "name": "support.function.perl"
450
+ }
451
+ },
452
+ "end": ">",
453
+ "name": "string.regexp.nested_ltgt.perl",
454
+ "patterns": [
455
+ {
456
+ "include": "#escaped_char"
457
+ },
458
+ {
459
+ "include": "#nested_ltgt"
460
+ }
461
+ ]
462
+ },
463
+ {
464
+ "begin": "(s)\\s*\\(",
465
+ "captures": {
466
+ "0": {
467
+ "name": "punctuation.definition.string.perl"
468
+ },
469
+ "1": {
470
+ "name": "support.function.perl"
471
+ }
472
+ },
473
+ "end": "\\)",
474
+ "name": "string.regexp.nested_parens.perl",
475
+ "patterns": [
476
+ {
477
+ "include": "#escaped_char"
478
+ },
479
+ {
480
+ "include": "#nested_parens"
481
+ }
482
+ ]
483
+ },
484
+ {
485
+ "begin": "\\{",
486
+ "captures": {
487
+ "0": {
488
+ "name": "punctuation.definition.string.perl"
489
+ }
490
+ },
491
+ "end": "\\}",
492
+ "name": "string.regexp.format.nested_braces.perl",
493
+ "patterns": [
494
+ {
495
+ "include": "#escaped_char"
496
+ },
497
+ {
498
+ "include": "#variable"
499
+ },
500
+ {
501
+ "include": "#nested_braces_interpolated"
502
+ }
503
+ ]
504
+ },
505
+ {
506
+ "begin": "\\[",
507
+ "captures": {
508
+ "0": {
509
+ "name": "punctuation.definition.string.perl"
510
+ }
511
+ },
512
+ "end": "\\]",
513
+ "name": "string.regexp.format.nested_brackets.perl",
514
+ "patterns": [
515
+ {
516
+ "include": "#escaped_char"
517
+ },
518
+ {
519
+ "include": "#variable"
520
+ },
521
+ {
522
+ "include": "#nested_brackets_interpolated"
523
+ }
524
+ ]
525
+ },
526
+ {
527
+ "begin": "<",
528
+ "captures": {
529
+ "0": {
530
+ "name": "punctuation.definition.string.perl"
531
+ }
532
+ },
533
+ "end": ">",
534
+ "name": "string.regexp.format.nested_ltgt.perl",
535
+ "patterns": [
536
+ {
537
+ "include": "#escaped_char"
538
+ },
539
+ {
540
+ "include": "#variable"
541
+ },
542
+ {
543
+ "include": "#nested_ltgt_interpolated"
544
+ }
545
+ ]
546
+ },
547
+ {
548
+ "begin": "\\(",
549
+ "captures": {
550
+ "0": {
551
+ "name": "punctuation.definition.string.perl"
552
+ }
553
+ },
554
+ "end": "\\)",
555
+ "name": "string.regexp.format.nested_parens.perl",
556
+ "patterns": [
557
+ {
558
+ "include": "#escaped_char"
559
+ },
560
+ {
561
+ "include": "#variable"
562
+ },
563
+ {
564
+ "include": "#nested_parens_interpolated"
565
+ }
566
+ ]
567
+ },
568
+ {
569
+ "begin": "'",
570
+ "captures": {
571
+ "0": {
572
+ "name": "punctuation.definition.string.perl"
573
+ }
574
+ },
575
+ "end": "'",
576
+ "name": "string.regexp.format.single_quote.perl",
577
+ "patterns": [
578
+ {
579
+ "match": "\\\\['\\\\]",
580
+ "name": "constant.character.escape.perl"
581
+ }
582
+ ]
583
+ },
584
+ {
585
+ "begin": "([^\\s\\w\\[({<;])",
586
+ "captures": {
587
+ "0": {
588
+ "name": "punctuation.definition.string.perl"
589
+ }
590
+ },
591
+ "end": "\\1",
592
+ "name": "string.regexp.format.simple_delimiter.perl",
593
+ "patterns": [
594
+ {
595
+ "include": "#escaped_char"
596
+ },
597
+ {
598
+ "include": "#variable"
599
+ }
600
+ ]
601
+ },
602
+ {
603
+ "match": "\\s+"
604
+ }
605
+ ]
606
+ },
607
+ {
608
+ "begin": "\\b(?=s([^\\sa-zA-Z0-9\\[({<]).*\\1([egimosxradlupcn]*)([\\}\\)\\;\\,]|\\s+))",
609
+ "comment": "string.regexp.replaceXXX",
610
+ "end": "((([egimosxradlupcn]*)))(?=([\\}\\)\\;\\,]|\\s+|\\s*$))",
611
+ "endCaptures": {
612
+ "1": {
613
+ "name": "string.regexp.replace.perl"
614
+ },
615
+ "2": {
616
+ "name": "punctuation.definition.string.perl"
617
+ },
618
+ "3": {
619
+ "name": "keyword.control.regexp-option.perl"
620
+ }
621
+ },
622
+ "patterns": [
623
+ {
624
+ "begin": "(s\\s*)([^\\sa-zA-Z0-9\\[({<])",
625
+ "captures": {
626
+ "0": {
627
+ "name": "punctuation.definition.string.perl"
628
+ },
629
+ "1": {
630
+ "name": "support.function.perl"
631
+ }
632
+ },
633
+ "end": "(?=\\2)",
634
+ "name": "string.regexp.replaceXXX.simple_delimiter.perl",
635
+ "patterns": [
636
+ {
637
+ "include": "#escaped_char"
638
+ }
639
+ ]
640
+ },
641
+ {
642
+ "begin": "'",
643
+ "captures": {
644
+ "0": {
645
+ "name": "punctuation.definition.string.perl"
646
+ }
647
+ },
648
+ "end": "'",
649
+ "name": "string.regexp.replaceXXX.format.single_quote.perl",
650
+ "patterns": [
651
+ {
652
+ "match": "\\\\['\\\\]",
653
+ "name": "constant.character.escape.perl.perl"
654
+ }
655
+ ]
656
+ },
657
+ {
658
+ "begin": "([^\\sa-zA-Z0-9\\[({<])",
659
+ "captures": {
660
+ "0": {
661
+ "name": "punctuation.definition.string.perl"
662
+ }
663
+ },
664
+ "end": "\\1",
665
+ "name": "string.regexp.replaceXXX.format.simple_delimiter.perl",
666
+ "patterns": [
667
+ {
668
+ "include": "#escaped_char"
669
+ },
670
+ {
671
+ "include": "#variable"
672
+ }
673
+ ]
674
+ }
675
+ ]
676
+ },
677
+ {
678
+ "begin": "\\b(?=(?<!\\\\)s\\s*([^\\s\\w\\[({<>]))",
679
+ "comment": "string.regexp.replace.extended",
680
+ "end": "((([egimosradlupc]*x[egimosradlupc]*)))\\b",
681
+ "endCaptures": {
682
+ "1": {
683
+ "name": "string.regexp.replace.perl"
684
+ },
685
+ "2": {
686
+ "name": "punctuation.definition.string.perl"
687
+ },
688
+ "3": {
689
+ "name": "keyword.control.regexp-option.perl"
690
+ }
691
+ },
692
+ "patterns": [
693
+ {
694
+ "begin": "(s)\\s*(.)",
695
+ "captures": {
696
+ "0": {
697
+ "name": "punctuation.definition.string.perl"
698
+ },
699
+ "1": {
700
+ "name": "support.function.perl"
701
+ }
702
+ },
703
+ "end": "(?=\\2)",
704
+ "name": "string.regexp.replace.extended.simple_delimiter.perl",
705
+ "patterns": [
706
+ {
707
+ "include": "#escaped_char"
708
+ }
709
+ ]
710
+ },
711
+ {
712
+ "begin": "'",
713
+ "captures": {
714
+ "0": {
715
+ "name": "punctuation.definition.string.perl"
716
+ }
717
+ },
718
+ "end": "'(?=[egimosradlupc]*x[egimosradlupc]*)\\b",
719
+ "name": "string.regexp.replace.extended.simple_delimiter.perl",
720
+ "patterns": [
721
+ {
722
+ "include": "#escaped_char"
723
+ }
724
+ ]
725
+ },
726
+ {
727
+ "begin": "(.)",
728
+ "captures": {
729
+ "0": {
730
+ "name": "punctuation.definition.string.perl"
731
+ }
732
+ },
733
+ "end": "\\1(?=[egimosradlupc]*x[egimosradlupc]*)\\b",
734
+ "name": "string.regexp.replace.extended.simple_delimiter.perl",
735
+ "patterns": [
736
+ {
737
+ "include": "#escaped_char"
738
+ },
739
+ {
740
+ "include": "#variable"
741
+ }
742
+ ]
743
+ }
744
+ ]
745
+ },
746
+ {
747
+ "begin": "(?<=\\(|\\{|~|&|\\||if|unless|^)\\s*((\\/))",
748
+ "beginCaptures": {
749
+ "1": {
750
+ "name": "string.regexp.find.perl"
751
+ },
752
+ "2": {
753
+ "name": "punctuation.definition.string.perl"
754
+ }
755
+ },
756
+ "contentName": "string.regexp.find.perl",
757
+ "end": "((\\1([egimosxradlupcn]*)))(?=(\\s+\\S|\\s*[;\\,\\#\\{\\}\\)]|\\s*$))",
758
+ "endCaptures": {
759
+ "1": {
760
+ "name": "string.regexp.find.perl"
761
+ },
762
+ "2": {
763
+ "name": "punctuation.definition.string.perl"
764
+ },
765
+ "3": {
766
+ "name": "keyword.control.regexp-option.perl"
767
+ }
768
+ },
769
+ "patterns": [
770
+ {
771
+ "comment": "This is to prevent thinks like /foo$/ to treat $/ as a variable",
772
+ "match": "\\$(?=\\/)",
773
+ "name": "keyword.control.anchor.perl"
774
+ },
775
+ {
776
+ "include": "#escaped_char"
777
+ },
778
+ {
779
+ "include": "#variable"
780
+ }
781
+ ]
782
+ },
783
+ {
784
+ "captures": {
785
+ "1": {
786
+ "name": "constant.other.key.perl"
787
+ }
788
+ },
789
+ "match": "\\b(\\w+)\\s*(?==>)"
790
+ },
791
+ {
792
+ "match": "(?<={)\\s*\\w+\\s*(?=})",
793
+ "name": "constant.other.bareword.perl"
794
+ },
795
+ {
796
+ "captures": {
797
+ "1": {
798
+ "name": "keyword.control.perl"
799
+ },
800
+ "2": {
801
+ "name": "entity.name.type.class.perl"
802
+ }
803
+ },
804
+ "match": "^\\s*(package)\\s+([^\\s;]+)",
805
+ "name": "meta.class.perl"
806
+ },
807
+ {
808
+ "captures": {
809
+ "1": {
810
+ "name": "storage.type.sub.perl"
811
+ },
812
+ "2": {
813
+ "name": "entity.name.function.perl"
814
+ },
815
+ "3": {
816
+ "name": "storage.type.method.perl"
817
+ }
818
+ },
819
+ "match": "\\b(sub)(?:\\s+([-a-zA-Z0-9_]+))?\\s*(?:\\([\\$\\@\\*;]*\\))?[^\\w\\{]",
820
+ "name": "meta.function.perl"
821
+ },
822
+ {
823
+ "captures": {
824
+ "1": {
825
+ "name": "entity.name.function.perl"
826
+ },
827
+ "2": {
828
+ "name": "punctuation.definition.parameters.perl"
829
+ },
830
+ "3": {
831
+ "name": "variable.parameter.function.perl"
832
+ }
833
+ },
834
+ "match": "^\\s*(BEGIN|UNITCHECK|CHECK|INIT|END|DESTROY)\\b",
835
+ "name": "meta.function.perl"
836
+ },
837
+ {
838
+ "begin": "^(?=(\\t| {4}))",
839
+ "end": "(?=[^\\t\\s])",
840
+ "name": "meta.leading-tabs",
841
+ "patterns": [
842
+ {
843
+ "captures": {
844
+ "1": {
845
+ "name": "meta.odd-tab"
846
+ },
847
+ "2": {
848
+ "name": "meta.even-tab"
849
+ }
850
+ },
851
+ "match": "(\\t| {4})(\\t| {4})?"
852
+ }
853
+ ]
854
+ },
855
+ {
856
+ "captures": {
857
+ "1": {
858
+ "name": "support.function.perl"
859
+ },
860
+ "2": {
861
+ "name": "punctuation.definition.string.perl"
862
+ },
863
+ "5": {
864
+ "name": "punctuation.definition.string.perl"
865
+ },
866
+ "8": {
867
+ "name": "punctuation.definition.string.perl"
868
+ }
869
+ },
870
+ "match": "\\b(tr|y)\\s*([^A-Za-z0-9\\s])(.*?)(?<!\\\\)(\\\\{2})*(\\2)(.*?)(?<!\\\\)(\\\\{2})*(\\2)",
871
+ "name": "string.regexp.replace.perl"
872
+ },
873
+ {
874
+ "match": "\\b(__FILE__|__LINE__|__PACKAGE__|__SUB__)\\b",
875
+ "name": "constant.language.perl"
876
+ },
877
+ {
878
+ "begin": "\\b(__DATA__|__END__)\\n?",
879
+ "beginCaptures": {
880
+ "1": {
881
+ "name": "constant.language.perl"
882
+ }
883
+ },
884
+ "contentName": "comment.block.documentation.perl",
885
+ "end": "\\z",
886
+ "patterns": [
887
+ {
888
+ "include": "#pod"
889
+ }
890
+ ]
891
+ },
892
+ {
893
+ "match": "(?<!->)\\b(continue|default|die|do|else|elsif|exit|for|foreach|given|goto|if|last|next|redo|return|select|unless|until|wait|when|while|switch|case|require|use|eval)\\b",
894
+ "name": "keyword.control.perl"
895
+ },
896
+ {
897
+ "match": "\\b(my|our|local)\\b",
898
+ "name": "storage.modifier.perl"
899
+ },
900
+ {
901
+ "match": "(?<!\\w)\\-[rwxoRWXOezsfdlpSbctugkTBMAC]\\b",
902
+ "name": "keyword.operator.filetest.perl"
903
+ },
904
+ {
905
+ "match": "\\b(and|or|xor|as|not)\\b",
906
+ "name": "keyword.operator.logical.perl"
907
+ },
908
+ {
909
+ "match": "(<=>|=>|->)",
910
+ "name": "keyword.operator.comparison.perl"
911
+ },
912
+ {
913
+ "include": "#heredoc"
914
+ },
915
+ {
916
+ "begin": "\\bqq\\s*([^\\(\\{\\[\\<\\w\\s])",
917
+ "beginCaptures": {
918
+ "0": {
919
+ "name": "punctuation.definition.string.begin.perl"
920
+ }
921
+ },
922
+ "end": "\\1",
923
+ "endCaptures": {
924
+ "0": {
925
+ "name": "punctuation.definition.string.end.perl"
926
+ }
927
+ },
928
+ "name": "string.quoted.other.qq.perl",
929
+ "patterns": [
930
+ {
931
+ "include": "#escaped_char"
932
+ },
933
+ {
934
+ "include": "#variable"
935
+ }
936
+ ]
937
+ },
938
+ {
939
+ "begin": "\\bqx\\s*([^'\\(\\{\\[\\<\\w\\s])",
940
+ "beginCaptures": {
941
+ "0": {
942
+ "name": "punctuation.definition.string.begin.perl"
943
+ }
944
+ },
945
+ "end": "\\1",
946
+ "endCaptures": {
947
+ "0": {
948
+ "name": "punctuation.definition.string.end.perl"
949
+ }
950
+ },
951
+ "name": "string.interpolated.qx.perl",
952
+ "patterns": [
953
+ {
954
+ "include": "#escaped_char"
955
+ },
956
+ {
957
+ "include": "#variable"
958
+ }
959
+ ]
960
+ },
961
+ {
962
+ "begin": "\\bqx\\s*'",
963
+ "beginCaptures": {
964
+ "0": {
965
+ "name": "punctuation.definition.string.begin.perl"
966
+ }
967
+ },
968
+ "end": "'",
969
+ "endCaptures": {
970
+ "0": {
971
+ "name": "punctuation.definition.string.end.perl"
972
+ }
973
+ },
974
+ "name": "string.interpolated.qx.single-quote.perl",
975
+ "patterns": [
976
+ {
977
+ "include": "#escaped_char"
978
+ }
979
+ ]
980
+ },
981
+ {
982
+ "begin": "\"",
983
+ "beginCaptures": {
984
+ "0": {
985
+ "name": "punctuation.definition.string.begin.perl"
986
+ }
987
+ },
988
+ "end": "\"",
989
+ "endCaptures": {
990
+ "0": {
991
+ "name": "punctuation.definition.string.end.perl"
992
+ }
993
+ },
994
+ "name": "string.quoted.double.perl",
995
+ "patterns": [
996
+ {
997
+ "include": "#escaped_char"
998
+ },
999
+ {
1000
+ "include": "#variable"
1001
+ }
1002
+ ]
1003
+ },
1004
+ {
1005
+ "begin": "(?<!->)\\bqw?\\s*([^\\(\\{\\[\\<\\w\\s])",
1006
+ "beginCaptures": {
1007
+ "0": {
1008
+ "name": "punctuation.definition.string.begin.perl"
1009
+ }
1010
+ },
1011
+ "end": "\\1",
1012
+ "endCaptures": {
1013
+ "0": {
1014
+ "name": "punctuation.definition.string.end.perl"
1015
+ }
1016
+ },
1017
+ "name": "string.quoted.other.q.perl"
1018
+ },
1019
+ {
1020
+ "begin": "'",
1021
+ "beginCaptures": {
1022
+ "0": {
1023
+ "name": "punctuation.definition.string.begin.perl"
1024
+ }
1025
+ },
1026
+ "end": "'",
1027
+ "endCaptures": {
1028
+ "0": {
1029
+ "name": "punctuation.definition.string.end.perl"
1030
+ }
1031
+ },
1032
+ "name": "string.quoted.single.perl",
1033
+ "patterns": [
1034
+ {
1035
+ "match": "\\\\['\\\\]",
1036
+ "name": "constant.character.escape.perl"
1037
+ }
1038
+ ]
1039
+ },
1040
+ {
1041
+ "begin": "`",
1042
+ "beginCaptures": {
1043
+ "0": {
1044
+ "name": "punctuation.definition.string.begin.perl"
1045
+ }
1046
+ },
1047
+ "end": "`",
1048
+ "endCaptures": {
1049
+ "0": {
1050
+ "name": "punctuation.definition.string.end.perl"
1051
+ }
1052
+ },
1053
+ "name": "string.interpolated.perl",
1054
+ "patterns": [
1055
+ {
1056
+ "include": "#escaped_char"
1057
+ },
1058
+ {
1059
+ "include": "#variable"
1060
+ }
1061
+ ]
1062
+ },
1063
+ {
1064
+ "begin": "(?<!->)\\bqq\\s*\\(",
1065
+ "beginCaptures": {
1066
+ "0": {
1067
+ "name": "punctuation.definition.string.begin.perl"
1068
+ }
1069
+ },
1070
+ "end": "\\)",
1071
+ "endCaptures": {
1072
+ "0": {
1073
+ "name": "punctuation.definition.string.end.perl"
1074
+ }
1075
+ },
1076
+ "name": "string.quoted.other.qq-paren.perl",
1077
+ "patterns": [
1078
+ {
1079
+ "include": "#escaped_char"
1080
+ },
1081
+ {
1082
+ "include": "#nested_parens_interpolated"
1083
+ },
1084
+ {
1085
+ "include": "#variable"
1086
+ }
1087
+ ]
1088
+ },
1089
+ {
1090
+ "begin": "\\bqq\\s*\\{",
1091
+ "beginCaptures": {
1092
+ "0": {
1093
+ "name": "punctuation.definition.string.begin.perl"
1094
+ }
1095
+ },
1096
+ "end": "\\}",
1097
+ "endCaptures": {
1098
+ "0": {
1099
+ "name": "punctuation.definition.string.end.perl"
1100
+ }
1101
+ },
1102
+ "name": "string.quoted.other.qq-brace.perl",
1103
+ "patterns": [
1104
+ {
1105
+ "include": "#escaped_char"
1106
+ },
1107
+ {
1108
+ "include": "#nested_braces_interpolated"
1109
+ },
1110
+ {
1111
+ "include": "#variable"
1112
+ }
1113
+ ]
1114
+ },
1115
+ {
1116
+ "begin": "\\bqq\\s*\\[",
1117
+ "beginCaptures": {
1118
+ "0": {
1119
+ "name": "punctuation.definition.string.begin.perl"
1120
+ }
1121
+ },
1122
+ "end": "\\]",
1123
+ "endCaptures": {
1124
+ "0": {
1125
+ "name": "punctuation.definition.string.end.perl"
1126
+ }
1127
+ },
1128
+ "name": "string.quoted.other.qq-bracket.perl",
1129
+ "patterns": [
1130
+ {
1131
+ "include": "#escaped_char"
1132
+ },
1133
+ {
1134
+ "include": "#nested_brackets_interpolated"
1135
+ },
1136
+ {
1137
+ "include": "#variable"
1138
+ }
1139
+ ]
1140
+ },
1141
+ {
1142
+ "begin": "\\bqq\\s*\\<",
1143
+ "beginCaptures": {
1144
+ "0": {
1145
+ "name": "punctuation.definition.string.begin.perl"
1146
+ }
1147
+ },
1148
+ "end": "\\>",
1149
+ "endCaptures": {
1150
+ "0": {
1151
+ "name": "punctuation.definition.string.end.perl"
1152
+ }
1153
+ },
1154
+ "name": "string.quoted.other.qq-ltgt.perl",
1155
+ "patterns": [
1156
+ {
1157
+ "include": "#escaped_char"
1158
+ },
1159
+ {
1160
+ "include": "#nested_ltgt_interpolated"
1161
+ },
1162
+ {
1163
+ "include": "#variable"
1164
+ }
1165
+ ]
1166
+ },
1167
+ {
1168
+ "begin": "(?<!->)\\bqx\\s*\\(",
1169
+ "beginCaptures": {
1170
+ "0": {
1171
+ "name": "punctuation.definition.string.begin.perl"
1172
+ }
1173
+ },
1174
+ "end": "\\)",
1175
+ "endCaptures": {
1176
+ "0": {
1177
+ "name": "punctuation.definition.string.end.perl"
1178
+ }
1179
+ },
1180
+ "name": "string.interpolated.qx-paren.perl",
1181
+ "patterns": [
1182
+ {
1183
+ "include": "#escaped_char"
1184
+ },
1185
+ {
1186
+ "include": "#nested_parens_interpolated"
1187
+ },
1188
+ {
1189
+ "include": "#variable"
1190
+ }
1191
+ ]
1192
+ },
1193
+ {
1194
+ "begin": "\\bqx\\s*\\{",
1195
+ "beginCaptures": {
1196
+ "0": {
1197
+ "name": "punctuation.definition.string.begin.perl"
1198
+ }
1199
+ },
1200
+ "end": "\\}",
1201
+ "endCaptures": {
1202
+ "0": {
1203
+ "name": "punctuation.definition.string.end.perl"
1204
+ }
1205
+ },
1206
+ "name": "string.interpolated.qx-brace.perl",
1207
+ "patterns": [
1208
+ {
1209
+ "include": "#escaped_char"
1210
+ },
1211
+ {
1212
+ "include": "#nested_braces_interpolated"
1213
+ },
1214
+ {
1215
+ "include": "#variable"
1216
+ }
1217
+ ]
1218
+ },
1219
+ {
1220
+ "begin": "\\bqx\\s*\\[",
1221
+ "beginCaptures": {
1222
+ "0": {
1223
+ "name": "punctuation.definition.string.begin.perl"
1224
+ }
1225
+ },
1226
+ "end": "\\]",
1227
+ "endCaptures": {
1228
+ "0": {
1229
+ "name": "punctuation.definition.string.end.perl"
1230
+ }
1231
+ },
1232
+ "name": "string.interpolated.qx-bracket.perl",
1233
+ "patterns": [
1234
+ {
1235
+ "include": "#escaped_char"
1236
+ },
1237
+ {
1238
+ "include": "#nested_brackets_interpolated"
1239
+ },
1240
+ {
1241
+ "include": "#variable"
1242
+ }
1243
+ ]
1244
+ },
1245
+ {
1246
+ "begin": "\\bqx\\s*\\<",
1247
+ "beginCaptures": {
1248
+ "0": {
1249
+ "name": "punctuation.definition.string.begin.perl"
1250
+ }
1251
+ },
1252
+ "end": "\\>",
1253
+ "endCaptures": {
1254
+ "0": {
1255
+ "name": "punctuation.definition.string.end.perl"
1256
+ }
1257
+ },
1258
+ "name": "string.interpolated.qx-ltgt.perl",
1259
+ "patterns": [
1260
+ {
1261
+ "include": "#escaped_char"
1262
+ },
1263
+ {
1264
+ "include": "#nested_ltgt_interpolated"
1265
+ },
1266
+ {
1267
+ "include": "#variable"
1268
+ }
1269
+ ]
1270
+ },
1271
+ {
1272
+ "begin": "(?<!->)\\bqw?\\s*\\(",
1273
+ "beginCaptures": {
1274
+ "0": {
1275
+ "name": "punctuation.definition.string.begin.perl"
1276
+ }
1277
+ },
1278
+ "end": "\\)",
1279
+ "endCaptures": {
1280
+ "0": {
1281
+ "name": "punctuation.definition.string.end.perl"
1282
+ }
1283
+ },
1284
+ "name": "string.quoted.other.q-paren.perl",
1285
+ "patterns": [
1286
+ {
1287
+ "include": "#nested_parens"
1288
+ }
1289
+ ]
1290
+ },
1291
+ {
1292
+ "begin": "\\bqw?\\s*\\{",
1293
+ "beginCaptures": {
1294
+ "0": {
1295
+ "name": "punctuation.definition.string.begin.perl"
1296
+ }
1297
+ },
1298
+ "end": "\\}",
1299
+ "endCaptures": {
1300
+ "0": {
1301
+ "name": "punctuation.definition.string.end.perl"
1302
+ }
1303
+ },
1304
+ "name": "string.quoted.other.q-brace.perl",
1305
+ "patterns": [
1306
+ {
1307
+ "include": "#nested_braces"
1308
+ }
1309
+ ]
1310
+ },
1311
+ {
1312
+ "begin": "\\bqw?\\s*\\[",
1313
+ "beginCaptures": {
1314
+ "0": {
1315
+ "name": "punctuation.definition.string.begin.perl"
1316
+ }
1317
+ },
1318
+ "end": "\\]",
1319
+ "endCaptures": {
1320
+ "0": {
1321
+ "name": "punctuation.definition.string.end.perl"
1322
+ }
1323
+ },
1324
+ "name": "string.quoted.other.q-bracket.perl",
1325
+ "patterns": [
1326
+ {
1327
+ "include": "#nested_brackets"
1328
+ }
1329
+ ]
1330
+ },
1331
+ {
1332
+ "begin": "\\bqw?\\s*\\<",
1333
+ "beginCaptures": {
1334
+ "0": {
1335
+ "name": "punctuation.definition.string.begin.perl"
1336
+ }
1337
+ },
1338
+ "end": "\\>",
1339
+ "endCaptures": {
1340
+ "0": {
1341
+ "name": "punctuation.definition.string.end.perl"
1342
+ }
1343
+ },
1344
+ "name": "string.quoted.other.q-ltgt.perl",
1345
+ "patterns": [
1346
+ {
1347
+ "include": "#nested_ltgt"
1348
+ }
1349
+ ]
1350
+ },
1351
+ {
1352
+ "begin": "^__\\w+__",
1353
+ "beginCaptures": {
1354
+ "0": {
1355
+ "name": "punctuation.definition.string.begin.perl"
1356
+ }
1357
+ },
1358
+ "end": "$",
1359
+ "endCaptures": {
1360
+ "0": {
1361
+ "name": "punctuation.definition.string.end.perl"
1362
+ }
1363
+ },
1364
+ "name": "string.unquoted.program-block.perl"
1365
+ },
1366
+ {
1367
+ "begin": "\\b(format)\\s+(\\w+)\\s*=",
1368
+ "beginCaptures": {
1369
+ "1": {
1370
+ "name": "support.function.perl"
1371
+ },
1372
+ "2": {
1373
+ "name": "entity.name.function.format.perl"
1374
+ }
1375
+ },
1376
+ "end": "^\\.\\s*$",
1377
+ "name": "meta.format.perl",
1378
+ "patterns": [
1379
+ {
1380
+ "include": "#line_comment"
1381
+ },
1382
+ {
1383
+ "include": "#variable"
1384
+ }
1385
+ ]
1386
+ },
1387
+ {
1388
+ "captures": {
1389
+ "1": {
1390
+ "name": "support.function.perl"
1391
+ },
1392
+ "2": {
1393
+ "name": "entity.name.function.perl"
1394
+ }
1395
+ },
1396
+ "match": "\\b(x)\\s*(\\d+)\\b"
1397
+ },
1398
+ {
1399
+ "match": "\\b(ARGV|DATA|ENV|SIG|STDERR|STDIN|STDOUT|atan2|bind|binmode|bless|caller|chdir|chmod|chomp|chop|chown|chr|chroot|close|closedir|cmp|connect|cos|crypt|dbmclose|dbmopen|defined|delete|dump|each|endgrent|endhostent|endnetent|endprotoent|endpwent|endservent|eof|eq|eval|exec|exists|exp|fcntl|fileno|flock|fork|formline|ge|getc|getgrent|getgrgid|getgrnam|gethostbyaddr|gethostbyname|gethostent|getlogin|getnetbyaddr|getnetbyname|getnetent|getpeername|getpgrp|getppid|getpriority|getprotobyname|getprotobynumber|getprotoent|getpwent|getpwnam|getpwuid|getservbyname|getservbyport|getservent|getsockname|getsockopt|glob|gmtime|grep|gt|hex|import|index|int|ioctl|join|keys|kill|lc|lcfirst|le|length|link|listen|local|localtime|log|lstat|lt|m|map|mkdir|msgctl|msgget|msgrcv|msgsnd|ne|no|oct|open|opendir|ord|pack|pipe|pop|pos|print|printf|push|quotemeta|rand|read|readdir|readlink|recv|ref|rename|reset|reverse|rewinddir|rindex|rmdir|s|say|scalar|seek|seekdir|semctl|semget|semop|send|setgrent|sethostent|setnetent|setpgrp|setpriority|setprotoent|setpwent|setservent|setsockopt|shift|shmctl|shmget|shmread|shmwrite|shutdown|sin|sleep|socket|socketpair|sort|splice|split|sprintf|sqrt|srand|stat|study|substr|symlink|syscall|sysopen|sysread|system|syswrite|tell|telldir|tie|tied|time|times|tr|truncate|uc|ucfirst|umask|undef|unlink|unpack|unshift|untie|utime|values|vec|waitpid|wantarray|warn|write|y)\\b",
1400
+ "name": "support.function.perl"
1401
+ },
1402
+ {
1403
+ "captures": {
1404
+ "1": {
1405
+ "name": "punctuation.section.scope.begin.perl"
1406
+ },
1407
+ "2": {
1408
+ "name": "punctuation.section.scope.end.perl"
1409
+ }
1410
+ },
1411
+ "comment": "Match empty brackets for ↩ snippet",
1412
+ "match": "(\\{)(\\})"
1413
+ },
1414
+ {
1415
+ "captures": {
1416
+ "1": {
1417
+ "name": "punctuation.section.scope.begin.perl"
1418
+ },
1419
+ "2": {
1420
+ "name": "punctuation.section.scope.end.perl"
1421
+ }
1422
+ },
1423
+ "comment": "Match empty parenthesis for ↩ snippet",
1424
+ "match": "(\\()(\\))"
1425
+ }
1426
+ ],
1427
+ "repository": {
1428
+ "escaped_char": {
1429
+ "patterns": [
1430
+ {
1431
+ "match": "\\\\\\d+",
1432
+ "name": "constant.character.escape.perl"
1433
+ },
1434
+ {
1435
+ "match": "\\\\c[^\\s\\\\]",
1436
+ "name": "constant.character.escape.perl"
1437
+ },
1438
+ {
1439
+ "match": "\\\\g(?:\\{(?:\\w*|-\\d+)\\}|\\d+)",
1440
+ "name": "constant.character.escape.perl"
1441
+ },
1442
+ {
1443
+ "match": "\\\\k(?:\\{\\w*\\}|<\\w*>|'\\w*')",
1444
+ "name": "constant.character.escape.perl"
1445
+ },
1446
+ {
1447
+ "match": "\\\\N\\{[^\\}]*\\}",
1448
+ "name": "constant.character.escape.perl"
1449
+ },
1450
+ {
1451
+ "match": "\\\\o\\{\\d*\\}",
1452
+ "name": "constant.character.escape.perl"
1453
+ },
1454
+ {
1455
+ "match": "\\\\(?:p|P)(?:\\{\\w*\\}|P)",
1456
+ "name": "constant.character.escape.perl"
1457
+ },
1458
+ {
1459
+ "match": "\\\\x(?:[0-9a-zA-Z]{2}|\\{\\w*\\})?",
1460
+ "name": "constant.character.escape.perl"
1461
+ },
1462
+ {
1463
+ "match": "\\\\.",
1464
+ "name": "constant.character.escape.perl"
1465
+ }
1466
+ ]
1467
+ },
1468
+ "heredoc": {
1469
+ "patterns": [
1470
+ {
1471
+ "begin": "((((<<(~)?) *')(HTML)(')))(.*)\\n?",
1472
+ "beginCaptures": {
1473
+ "1": {
1474
+ "name": "string.unquoted.heredoc.raw.perl"
1475
+ },
1476
+ "2": {
1477
+ "name": "punctuation.definition.string.begin.perl"
1478
+ },
1479
+ "3": {
1480
+ "name": "punctuation.definition.delimiter.begin.perl"
1481
+ },
1482
+ "7": {
1483
+ "name": "punctuation.definition.delimiter.end.perl"
1484
+ },
1485
+ "8": {
1486
+ "patterns": [
1487
+ {
1488
+ "include": "$self"
1489
+ }
1490
+ ]
1491
+ }
1492
+ },
1493
+ "contentName": "string.unquoted.heredoc.raw.perl",
1494
+ "end": "^((?!\\5)\\s+)?((\\6))$",
1495
+ "endCaptures": {
1496
+ "2": {
1497
+ "name": "string.unquoted.heredoc.raw.perl"
1498
+ },
1499
+ "3": {
1500
+ "name": "punctuation.definition.string.end.perl"
1501
+ }
1502
+ },
1503
+ "name": "meta.embedded.block.html",
1504
+ "patterns": [
1505
+ {
1506
+ "begin": "^",
1507
+ "end": "\\n",
1508
+ "name": "text.html.basic",
1509
+ "patterns": [
1510
+ {
1511
+ "include": "text.html.basic"
1512
+ }
1513
+ ]
1514
+ }
1515
+ ]
1516
+ },
1517
+ {
1518
+ "begin": "((((<<(~)?) *')(XML)(')))(.*)\\n?",
1519
+ "beginCaptures": {
1520
+ "1": {
1521
+ "name": "string.unquoted.heredoc.raw.perl"
1522
+ },
1523
+ "2": {
1524
+ "name": "punctuation.definition.string.begin.perl"
1525
+ },
1526
+ "3": {
1527
+ "name": "punctuation.definition.delimiter.begin.perl"
1528
+ },
1529
+ "7": {
1530
+ "name": "punctuation.definition.delimiter.end.perl"
1531
+ },
1532
+ "8": {
1533
+ "patterns": [
1534
+ {
1535
+ "include": "$self"
1536
+ }
1537
+ ]
1538
+ }
1539
+ },
1540
+ "contentName": "string.unquoted.heredoc.raw.perl",
1541
+ "end": "^((?!\\5)\\s+)?((\\6))$",
1542
+ "endCaptures": {
1543
+ "2": {
1544
+ "name": "string.unquoted.heredoc.raw.perl"
1545
+ },
1546
+ "3": {
1547
+ "name": "punctuation.definition.string.end.perl"
1548
+ }
1549
+ },
1550
+ "name": "meta.embedded.block.xml",
1551
+ "patterns": [
1552
+ {
1553
+ "begin": "^",
1554
+ "end": "\\n",
1555
+ "name": "text.xml",
1556
+ "patterns": [
1557
+ {
1558
+ "include": "text.xml"
1559
+ }
1560
+ ]
1561
+ }
1562
+ ]
1563
+ },
1564
+ {
1565
+ "begin": "((((<<(~)?) *')(CSS)(')))(.*)\\n?",
1566
+ "beginCaptures": {
1567
+ "1": {
1568
+ "name": "string.unquoted.heredoc.raw.perl"
1569
+ },
1570
+ "2": {
1571
+ "name": "punctuation.definition.string.begin.perl"
1572
+ },
1573
+ "3": {
1574
+ "name": "punctuation.definition.delimiter.begin.perl"
1575
+ },
1576
+ "7": {
1577
+ "name": "punctuation.definition.delimiter.end.perl"
1578
+ },
1579
+ "8": {
1580
+ "patterns": [
1581
+ {
1582
+ "include": "$self"
1583
+ }
1584
+ ]
1585
+ }
1586
+ },
1587
+ "contentName": "string.unquoted.heredoc.raw.perl",
1588
+ "end": "^((?!\\5)\\s+)?((\\6))$",
1589
+ "endCaptures": {
1590
+ "2": {
1591
+ "name": "string.unquoted.heredoc.raw.perl"
1592
+ },
1593
+ "3": {
1594
+ "name": "punctuation.definition.string.end.perl"
1595
+ }
1596
+ },
1597
+ "name": "meta.embedded.block.css",
1598
+ "patterns": [
1599
+ {
1600
+ "begin": "^",
1601
+ "end": "\\n",
1602
+ "name": "source.css",
1603
+ "patterns": [
1604
+ {
1605
+ "include": "source.css"
1606
+ }
1607
+ ]
1608
+ }
1609
+ ]
1610
+ },
1611
+ {
1612
+ "begin": "((((<<(~)?) *')(JAVASCRIPT)(')))(.*)\\n?",
1613
+ "beginCaptures": {
1614
+ "1": {
1615
+ "name": "string.unquoted.heredoc.raw.perl"
1616
+ },
1617
+ "2": {
1618
+ "name": "punctuation.definition.string.begin.perl"
1619
+ },
1620
+ "3": {
1621
+ "name": "punctuation.definition.delimiter.begin.perl"
1622
+ },
1623
+ "7": {
1624
+ "name": "punctuation.definition.delimiter.end.perl"
1625
+ },
1626
+ "8": {
1627
+ "patterns": [
1628
+ {
1629
+ "include": "$self"
1630
+ }
1631
+ ]
1632
+ }
1633
+ },
1634
+ "contentName": "string.unquoted.heredoc.raw.perl",
1635
+ "end": "^((?!\\5)\\s+)?((\\6))$",
1636
+ "endCaptures": {
1637
+ "2": {
1638
+ "name": "string.unquoted.heredoc.raw.perl"
1639
+ },
1640
+ "3": {
1641
+ "name": "punctuation.definition.string.end.perl"
1642
+ }
1643
+ },
1644
+ "name": "meta.embedded.block.js",
1645
+ "patterns": [
1646
+ {
1647
+ "begin": "^",
1648
+ "end": "\\n",
1649
+ "name": "source.js",
1650
+ "patterns": [
1651
+ {
1652
+ "include": "source.js"
1653
+ }
1654
+ ]
1655
+ }
1656
+ ]
1657
+ },
1658
+ {
1659
+ "begin": "((((<<(~)?) *')(SQL)(')))(.*)\\n?",
1660
+ "beginCaptures": {
1661
+ "1": {
1662
+ "name": "string.unquoted.heredoc.raw.perl"
1663
+ },
1664
+ "2": {
1665
+ "name": "punctuation.definition.string.begin.perl"
1666
+ },
1667
+ "3": {
1668
+ "name": "punctuation.definition.delimiter.begin.perl"
1669
+ },
1670
+ "7": {
1671
+ "name": "punctuation.definition.delimiter.end.perl"
1672
+ },
1673
+ "8": {
1674
+ "patterns": [
1675
+ {
1676
+ "include": "$self"
1677
+ }
1678
+ ]
1679
+ }
1680
+ },
1681
+ "contentName": "string.unquoted.heredoc.raw.perl",
1682
+ "end": "^((?!\\5)\\s+)?((\\6))$",
1683
+ "endCaptures": {
1684
+ "2": {
1685
+ "name": "string.unquoted.heredoc.raw.perl"
1686
+ },
1687
+ "3": {
1688
+ "name": "punctuation.definition.string.end.perl"
1689
+ }
1690
+ },
1691
+ "name": "meta.embedded.block.sql",
1692
+ "patterns": [
1693
+ {
1694
+ "begin": "^",
1695
+ "end": "\\n",
1696
+ "name": "source.sql",
1697
+ "patterns": [
1698
+ {
1699
+ "include": "source.sql"
1700
+ }
1701
+ ]
1702
+ }
1703
+ ]
1704
+ },
1705
+ {
1706
+ "begin": "((((<<(~)?) *')(POSTSCRIPT)(')))(.*)\\n?",
1707
+ "beginCaptures": {
1708
+ "1": {
1709
+ "name": "string.unquoted.heredoc.raw.perl"
1710
+ },
1711
+ "2": {
1712
+ "name": "punctuation.definition.string.begin.perl"
1713
+ },
1714
+ "3": {
1715
+ "name": "punctuation.definition.delimiter.begin.perl"
1716
+ },
1717
+ "7": {
1718
+ "name": "punctuation.definition.delimiter.end.perl"
1719
+ },
1720
+ "8": {
1721
+ "patterns": [
1722
+ {
1723
+ "include": "$self"
1724
+ }
1725
+ ]
1726
+ }
1727
+ },
1728
+ "contentName": "string.unquoted.heredoc.raw.perl",
1729
+ "end": "^((?!\\5)\\s+)?((\\6))$",
1730
+ "endCaptures": {
1731
+ "2": {
1732
+ "name": "string.unquoted.heredoc.raw.perl"
1733
+ },
1734
+ "3": {
1735
+ "name": "punctuation.definition.string.end.perl"
1736
+ }
1737
+ },
1738
+ "name": "meta.embedded.block.postscript",
1739
+ "patterns": [
1740
+ {
1741
+ "begin": "^",
1742
+ "end": "\\n",
1743
+ "name": "source.postscript",
1744
+ "patterns": [
1745
+ {
1746
+ "include": "source.postscript"
1747
+ }
1748
+ ]
1749
+ }
1750
+ ]
1751
+ },
1752
+ {
1753
+ "begin": "((((<<(~)?) *')([^']*)(')))(.*)\\n?",
1754
+ "beginCaptures": {
1755
+ "1": {
1756
+ "name": "string.unquoted.heredoc.raw.perl"
1757
+ },
1758
+ "2": {
1759
+ "name": "punctuation.definition.string.begin.perl"
1760
+ },
1761
+ "3": {
1762
+ "name": "punctuation.definition.delimiter.begin.perl"
1763
+ },
1764
+ "7": {
1765
+ "name": "punctuation.definition.delimiter.end.perl"
1766
+ },
1767
+ "8": {
1768
+ "patterns": [
1769
+ {
1770
+ "include": "$self"
1771
+ }
1772
+ ]
1773
+ }
1774
+ },
1775
+ "contentName": "string.unquoted.heredoc.raw.perl",
1776
+ "end": "^((?!\\5)\\s+)?((\\6))$",
1777
+ "endCaptures": {
1778
+ "2": {
1779
+ "name": "string.unquoted.heredoc.raw.perl"
1780
+ },
1781
+ "3": {
1782
+ "name": "punctuation.definition.string.end.perl"
1783
+ }
1784
+ }
1785
+ },
1786
+ {
1787
+ "begin": "((((<<(~)?) *\\\\)((?![=\\d\\$\\( ])[^;,'\"`\\s\\)]*)()))(.*)\\n?",
1788
+ "beginCaptures": {
1789
+ "1": {
1790
+ "name": "string.unquoted.heredoc.raw.perl"
1791
+ },
1792
+ "2": {
1793
+ "name": "punctuation.definition.string.begin.perl"
1794
+ },
1795
+ "3": {
1796
+ "name": "punctuation.definition.delimiter.begin.perl"
1797
+ },
1798
+ "7": {
1799
+ "name": "punctuation.definition.delimiter.end.perl"
1800
+ },
1801
+ "8": {
1802
+ "patterns": [
1803
+ {
1804
+ "include": "$self"
1805
+ }
1806
+ ]
1807
+ }
1808
+ },
1809
+ "contentName": "string.unquoted.heredoc.raw.perl",
1810
+ "end": "^((?!\\5)\\s+)?((\\6))$",
1811
+ "endCaptures": {
1812
+ "2": {
1813
+ "name": "string.unquoted.heredoc.raw.perl"
1814
+ },
1815
+ "3": {
1816
+ "name": "punctuation.definition.string.end.perl"
1817
+ }
1818
+ }
1819
+ },
1820
+ {
1821
+ "begin": "((((<<(~)?) *\")(HTML)(\")))(.*)\\n?",
1822
+ "beginCaptures": {
1823
+ "1": {
1824
+ "name": "string.unquoted.heredoc.interpolated.perl"
1825
+ },
1826
+ "2": {
1827
+ "name": "punctuation.definition.string.begin.perl"
1828
+ },
1829
+ "3": {
1830
+ "name": "punctuation.definition.delimiter.begin.perl"
1831
+ },
1832
+ "7": {
1833
+ "name": "punctuation.definition.delimiter.end.perl"
1834
+ },
1835
+ "8": {
1836
+ "patterns": [
1837
+ {
1838
+ "include": "$self"
1839
+ }
1840
+ ]
1841
+ }
1842
+ },
1843
+ "contentName": "string.unquoted.heredoc.interpolated.perl",
1844
+ "end": "^((?!\\5)\\s+)?((\\6))$",
1845
+ "endCaptures": {
1846
+ "2": {
1847
+ "name": "string.unquoted.heredoc.interpolated.perl"
1848
+ },
1849
+ "3": {
1850
+ "name": "punctuation.definition.string.end.perl"
1851
+ }
1852
+ },
1853
+ "name": "meta.embedded.block.html",
1854
+ "patterns": [
1855
+ {
1856
+ "begin": "^",
1857
+ "end": "\\n",
1858
+ "name": "text.html.basic",
1859
+ "patterns": [
1860
+ {
1861
+ "include": "#escaped_char"
1862
+ },
1863
+ {
1864
+ "include": "#variable"
1865
+ },
1866
+ {
1867
+ "include": "text.html.basic"
1868
+ }
1869
+ ]
1870
+ }
1871
+ ]
1872
+ },
1873
+ {
1874
+ "begin": "((((<<(~)?) *\")(XML)(\")))(.*)\\n?",
1875
+ "beginCaptures": {
1876
+ "1": {
1877
+ "name": "string.unquoted.heredoc.interpolated.perl"
1878
+ },
1879
+ "2": {
1880
+ "name": "punctuation.definition.string.begin.perl"
1881
+ },
1882
+ "3": {
1883
+ "name": "punctuation.definition.delimiter.begin.perl"
1884
+ },
1885
+ "7": {
1886
+ "name": "punctuation.definition.delimiter.end.perl"
1887
+ },
1888
+ "8": {
1889
+ "patterns": [
1890
+ {
1891
+ "include": "$self"
1892
+ }
1893
+ ]
1894
+ }
1895
+ },
1896
+ "contentName": "string.unquoted.heredoc.interpolated.perl",
1897
+ "end": "^((?!\\5)\\s+)?((\\6))$",
1898
+ "endCaptures": {
1899
+ "2": {
1900
+ "name": "string.unquoted.heredoc.interpolated.perl"
1901
+ },
1902
+ "3": {
1903
+ "name": "punctuation.definition.string.end.perl"
1904
+ }
1905
+ },
1906
+ "name": "meta.embedded.block.xml",
1907
+ "patterns": [
1908
+ {
1909
+ "begin": "^",
1910
+ "end": "\\n",
1911
+ "name": "text.xml",
1912
+ "patterns": [
1913
+ {
1914
+ "include": "#escaped_char"
1915
+ },
1916
+ {
1917
+ "include": "#variable"
1918
+ },
1919
+ {
1920
+ "include": "text.xml"
1921
+ }
1922
+ ]
1923
+ }
1924
+ ]
1925
+ },
1926
+ {
1927
+ "begin": "((((<<(~)?) *\")(CSS)(\")))(.*)\\n?",
1928
+ "beginCaptures": {
1929
+ "1": {
1930
+ "name": "string.unquoted.heredoc.interpolated.perl"
1931
+ },
1932
+ "2": {
1933
+ "name": "punctuation.definition.string.begin.perl"
1934
+ },
1935
+ "3": {
1936
+ "name": "punctuation.definition.delimiter.begin.perl"
1937
+ },
1938
+ "7": {
1939
+ "name": "punctuation.definition.delimiter.end.perl"
1940
+ },
1941
+ "8": {
1942
+ "patterns": [
1943
+ {
1944
+ "include": "$self"
1945
+ }
1946
+ ]
1947
+ }
1948
+ },
1949
+ "contentName": "string.unquoted.heredoc.interpolated.perl",
1950
+ "end": "^((?!\\5)\\s+)?((\\6))$",
1951
+ "endCaptures": {
1952
+ "2": {
1953
+ "name": "string.unquoted.heredoc.interpolated.perl"
1954
+ },
1955
+ "3": {
1956
+ "name": "punctuation.definition.string.end.perl"
1957
+ }
1958
+ },
1959
+ "name": "meta.embedded.block.css",
1960
+ "patterns": [
1961
+ {
1962
+ "begin": "^",
1963
+ "end": "\\n",
1964
+ "name": "source.css",
1965
+ "patterns": [
1966
+ {
1967
+ "include": "#escaped_char"
1968
+ },
1969
+ {
1970
+ "include": "#variable"
1971
+ },
1972
+ {
1973
+ "include": "source.css"
1974
+ }
1975
+ ]
1976
+ }
1977
+ ]
1978
+ },
1979
+ {
1980
+ "begin": "((((<<(~)?) *\")(JAVASCRIPT)(\")))(.*)\\n?",
1981
+ "beginCaptures": {
1982
+ "1": {
1983
+ "name": "string.unquoted.heredoc.interpolated.perl"
1984
+ },
1985
+ "2": {
1986
+ "name": "punctuation.definition.string.begin.perl"
1987
+ },
1988
+ "3": {
1989
+ "name": "punctuation.definition.delimiter.begin.perl"
1990
+ },
1991
+ "7": {
1992
+ "name": "punctuation.definition.delimiter.end.perl"
1993
+ },
1994
+ "8": {
1995
+ "patterns": [
1996
+ {
1997
+ "include": "$self"
1998
+ }
1999
+ ]
2000
+ }
2001
+ },
2002
+ "contentName": "string.unquoted.heredoc.interpolated.perl",
2003
+ "end": "^((?!\\5)\\s+)?((\\6))$",
2004
+ "endCaptures": {
2005
+ "2": {
2006
+ "name": "string.unquoted.heredoc.interpolated.perl"
2007
+ },
2008
+ "3": {
2009
+ "name": "punctuation.definition.string.end.perl"
2010
+ }
2011
+ },
2012
+ "name": "meta.embedded.block.js",
2013
+ "patterns": [
2014
+ {
2015
+ "begin": "^",
2016
+ "end": "\\n",
2017
+ "name": "source.js",
2018
+ "patterns": [
2019
+ {
2020
+ "include": "#escaped_char"
2021
+ },
2022
+ {
2023
+ "include": "#variable"
2024
+ },
2025
+ {
2026
+ "include": "source.js"
2027
+ }
2028
+ ]
2029
+ }
2030
+ ]
2031
+ },
2032
+ {
2033
+ "begin": "((((<<(~)?) *\")(SQL)(\")))(.*)\\n?",
2034
+ "beginCaptures": {
2035
+ "1": {
2036
+ "name": "string.unquoted.heredoc.interpolated.perl"
2037
+ },
2038
+ "2": {
2039
+ "name": "punctuation.definition.string.begin.perl"
2040
+ },
2041
+ "3": {
2042
+ "name": "punctuation.definition.delimiter.begin.perl"
2043
+ },
2044
+ "7": {
2045
+ "name": "punctuation.definition.delimiter.end.perl"
2046
+ },
2047
+ "8": {
2048
+ "patterns": [
2049
+ {
2050
+ "include": "$self"
2051
+ }
2052
+ ]
2053
+ }
2054
+ },
2055
+ "contentName": "string.unquoted.heredoc.interpolated.perl",
2056
+ "end": "^((?!\\5)\\s+)?((\\6))$",
2057
+ "endCaptures": {
2058
+ "2": {
2059
+ "name": "string.unquoted.heredoc.interpolated.perl"
2060
+ },
2061
+ "3": {
2062
+ "name": "punctuation.definition.string.end.perl"
2063
+ }
2064
+ },
2065
+ "name": "meta.embedded.block.sql",
2066
+ "patterns": [
2067
+ {
2068
+ "begin": "^",
2069
+ "end": "\\n",
2070
+ "name": "source.sql",
2071
+ "patterns": [
2072
+ {
2073
+ "include": "#escaped_char"
2074
+ },
2075
+ {
2076
+ "include": "#variable"
2077
+ },
2078
+ {
2079
+ "include": "source.sql"
2080
+ }
2081
+ ]
2082
+ }
2083
+ ]
2084
+ },
2085
+ {
2086
+ "begin": "((((<<(~)?) *\")(POSTSCRIPT)(\")))(.*)\\n?",
2087
+ "beginCaptures": {
2088
+ "1": {
2089
+ "name": "string.unquoted.heredoc.interpolated.perl"
2090
+ },
2091
+ "2": {
2092
+ "name": "punctuation.definition.string.begin.perl"
2093
+ },
2094
+ "3": {
2095
+ "name": "punctuation.definition.delimiter.begin.perl"
2096
+ },
2097
+ "7": {
2098
+ "name": "punctuation.definition.delimiter.end.perl"
2099
+ },
2100
+ "8": {
2101
+ "patterns": [
2102
+ {
2103
+ "include": "$self"
2104
+ }
2105
+ ]
2106
+ }
2107
+ },
2108
+ "contentName": "string.unquoted.heredoc.interpolated.perl",
2109
+ "end": "^((?!\\5)\\s+)?((\\6))$",
2110
+ "endCaptures": {
2111
+ "2": {
2112
+ "name": "string.unquoted.heredoc.interpolated.perl"
2113
+ },
2114
+ "3": {
2115
+ "name": "punctuation.definition.string.end.perl"
2116
+ }
2117
+ },
2118
+ "name": "meta.embedded.block.postscript",
2119
+ "patterns": [
2120
+ {
2121
+ "begin": "^",
2122
+ "end": "\\n",
2123
+ "name": "source.postscript",
2124
+ "patterns": [
2125
+ {
2126
+ "include": "#escaped_char"
2127
+ },
2128
+ {
2129
+ "include": "#variable"
2130
+ },
2131
+ {
2132
+ "include": "source.postscript"
2133
+ }
2134
+ ]
2135
+ }
2136
+ ]
2137
+ },
2138
+ {
2139
+ "begin": "((((<<(~)?) *\")([^\"]*)(\")))(.*)\\n?",
2140
+ "beginCaptures": {
2141
+ "1": {
2142
+ "name": "string.unquoted.heredoc.interpolated.perl"
2143
+ },
2144
+ "2": {
2145
+ "name": "punctuation.definition.string.begin.perl"
2146
+ },
2147
+ "3": {
2148
+ "name": "punctuation.definition.delimiter.begin.perl"
2149
+ },
2150
+ "7": {
2151
+ "name": "punctuation.definition.delimiter.end.perl"
2152
+ },
2153
+ "8": {
2154
+ "patterns": [
2155
+ {
2156
+ "include": "$self"
2157
+ }
2158
+ ]
2159
+ }
2160
+ },
2161
+ "contentName": "string.unquoted.heredoc.interpolated.perl",
2162
+ "end": "^((?!\\5)\\s+)?((\\6))$",
2163
+ "endCaptures": {
2164
+ "2": {
2165
+ "name": "string.unquoted.heredoc.interpolated.perl"
2166
+ },
2167
+ "3": {
2168
+ "name": "punctuation.definition.string.end.perl"
2169
+ }
2170
+ },
2171
+ "patterns": [
2172
+ {
2173
+ "include": "#escaped_char"
2174
+ },
2175
+ {
2176
+ "include": "#variable"
2177
+ }
2178
+ ]
2179
+ },
2180
+ {
2181
+ "begin": "((((<<(~)?) *)(HTML)()))(.*)\\n?",
2182
+ "beginCaptures": {
2183
+ "1": {
2184
+ "name": "string.unquoted.heredoc.interpolated.perl"
2185
+ },
2186
+ "2": {
2187
+ "name": "punctuation.definition.string.begin.perl"
2188
+ },
2189
+ "3": {
2190
+ "name": "punctuation.definition.delimiter.begin.perl"
2191
+ },
2192
+ "7": {
2193
+ "name": "punctuation.definition.delimiter.end.perl"
2194
+ },
2195
+ "8": {
2196
+ "patterns": [
2197
+ {
2198
+ "include": "$self"
2199
+ }
2200
+ ]
2201
+ }
2202
+ },
2203
+ "contentName": "string.unquoted.heredoc.interpolated.perl",
2204
+ "end": "^((?!\\5)\\s+)?((\\6))$",
2205
+ "endCaptures": {
2206
+ "2": {
2207
+ "name": "string.unquoted.heredoc.interpolated.perl"
2208
+ },
2209
+ "3": {
2210
+ "name": "punctuation.definition.string.end.perl"
2211
+ }
2212
+ },
2213
+ "name": "meta.embedded.block.html",
2214
+ "patterns": [
2215
+ {
2216
+ "begin": "^",
2217
+ "end": "\\n",
2218
+ "name": "text.html.basic",
2219
+ "patterns": [
2220
+ {
2221
+ "include": "#escaped_char"
2222
+ },
2223
+ {
2224
+ "include": "#variable"
2225
+ },
2226
+ {
2227
+ "include": "text.html.basic"
2228
+ }
2229
+ ]
2230
+ }
2231
+ ]
2232
+ },
2233
+ {
2234
+ "begin": "((((<<(~)?) *)(XML)()))(.*)\\n?",
2235
+ "beginCaptures": {
2236
+ "1": {
2237
+ "name": "string.unquoted.heredoc.interpolated.perl"
2238
+ },
2239
+ "2": {
2240
+ "name": "punctuation.definition.string.begin.perl"
2241
+ },
2242
+ "3": {
2243
+ "name": "punctuation.definition.delimiter.begin.perl"
2244
+ },
2245
+ "7": {
2246
+ "name": "punctuation.definition.delimiter.end.perl"
2247
+ },
2248
+ "8": {
2249
+ "patterns": [
2250
+ {
2251
+ "include": "$self"
2252
+ }
2253
+ ]
2254
+ }
2255
+ },
2256
+ "contentName": "string.unquoted.heredoc.interpolated.perl",
2257
+ "end": "^((?!\\5)\\s+)?((\\6))$",
2258
+ "endCaptures": {
2259
+ "2": {
2260
+ "name": "string.unquoted.heredoc.interpolated.perl"
2261
+ },
2262
+ "3": {
2263
+ "name": "punctuation.definition.string.end.perl"
2264
+ }
2265
+ },
2266
+ "name": "meta.embedded.block.xml",
2267
+ "patterns": [
2268
+ {
2269
+ "begin": "^",
2270
+ "end": "\\n",
2271
+ "name": "text.xml",
2272
+ "patterns": [
2273
+ {
2274
+ "include": "#escaped_char"
2275
+ },
2276
+ {
2277
+ "include": "#variable"
2278
+ },
2279
+ {
2280
+ "include": "text.xml"
2281
+ }
2282
+ ]
2283
+ }
2284
+ ]
2285
+ },
2286
+ {
2287
+ "begin": "((((<<(~)?) *)(CSS)()))(.*)\\n?",
2288
+ "beginCaptures": {
2289
+ "1": {
2290
+ "name": "string.unquoted.heredoc.interpolated.perl"
2291
+ },
2292
+ "2": {
2293
+ "name": "punctuation.definition.string.begin.perl"
2294
+ },
2295
+ "3": {
2296
+ "name": "punctuation.definition.delimiter.begin.perl"
2297
+ },
2298
+ "7": {
2299
+ "name": "punctuation.definition.delimiter.end.perl"
2300
+ },
2301
+ "8": {
2302
+ "patterns": [
2303
+ {
2304
+ "include": "$self"
2305
+ }
2306
+ ]
2307
+ }
2308
+ },
2309
+ "contentName": "string.unquoted.heredoc.interpolated.perl",
2310
+ "end": "^((?!\\5)\\s+)?((\\6))$",
2311
+ "endCaptures": {
2312
+ "2": {
2313
+ "name": "string.unquoted.heredoc.interpolated.perl"
2314
+ },
2315
+ "3": {
2316
+ "name": "punctuation.definition.string.end.perl"
2317
+ }
2318
+ },
2319
+ "name": "meta.embedded.block.css",
2320
+ "patterns": [
2321
+ {
2322
+ "begin": "^",
2323
+ "end": "\\n",
2324
+ "name": "source.css",
2325
+ "patterns": [
2326
+ {
2327
+ "include": "#escaped_char"
2328
+ },
2329
+ {
2330
+ "include": "#variable"
2331
+ },
2332
+ {
2333
+ "include": "source.css"
2334
+ }
2335
+ ]
2336
+ }
2337
+ ]
2338
+ },
2339
+ {
2340
+ "begin": "((((<<(~)?) *)(JAVASCRIPT)()))(.*)\\n?",
2341
+ "beginCaptures": {
2342
+ "1": {
2343
+ "name": "string.unquoted.heredoc.interpolated.perl"
2344
+ },
2345
+ "2": {
2346
+ "name": "punctuation.definition.string.begin.perl"
2347
+ },
2348
+ "3": {
2349
+ "name": "punctuation.definition.delimiter.begin.perl"
2350
+ },
2351
+ "7": {
2352
+ "name": "punctuation.definition.delimiter.end.perl"
2353
+ },
2354
+ "8": {
2355
+ "patterns": [
2356
+ {
2357
+ "include": "$self"
2358
+ }
2359
+ ]
2360
+ }
2361
+ },
2362
+ "contentName": "string.unquoted.heredoc.interpolated.perl",
2363
+ "end": "^((?!\\5)\\s+)?((\\6))$",
2364
+ "endCaptures": {
2365
+ "2": {
2366
+ "name": "string.unquoted.heredoc.interpolated.perl"
2367
+ },
2368
+ "3": {
2369
+ "name": "punctuation.definition.string.end.perl"
2370
+ }
2371
+ },
2372
+ "name": "meta.embedded.block.js",
2373
+ "patterns": [
2374
+ {
2375
+ "begin": "^",
2376
+ "end": "\\n",
2377
+ "name": "source.js",
2378
+ "patterns": [
2379
+ {
2380
+ "include": "#escaped_char"
2381
+ },
2382
+ {
2383
+ "include": "#variable"
2384
+ },
2385
+ {
2386
+ "include": "source.js"
2387
+ }
2388
+ ]
2389
+ }
2390
+ ]
2391
+ },
2392
+ {
2393
+ "begin": "((((<<(~)?) *)(SQL)()))(.*)\\n?",
2394
+ "beginCaptures": {
2395
+ "1": {
2396
+ "name": "string.unquoted.heredoc.interpolated.perl"
2397
+ },
2398
+ "2": {
2399
+ "name": "punctuation.definition.string.begin.perl"
2400
+ },
2401
+ "3": {
2402
+ "name": "punctuation.definition.delimiter.begin.perl"
2403
+ },
2404
+ "7": {
2405
+ "name": "punctuation.definition.delimiter.end.perl"
2406
+ },
2407
+ "8": {
2408
+ "patterns": [
2409
+ {
2410
+ "include": "$self"
2411
+ }
2412
+ ]
2413
+ }
2414
+ },
2415
+ "contentName": "string.unquoted.heredoc.interpolated.perl",
2416
+ "end": "^((?!\\5)\\s+)?((\\6))$",
2417
+ "endCaptures": {
2418
+ "2": {
2419
+ "name": "string.unquoted.heredoc.interpolated.perl"
2420
+ },
2421
+ "3": {
2422
+ "name": "punctuation.definition.string.end.perl"
2423
+ }
2424
+ },
2425
+ "name": "meta.embedded.block.sql",
2426
+ "patterns": [
2427
+ {
2428
+ "begin": "^",
2429
+ "end": "\\n",
2430
+ "name": "source.sql",
2431
+ "patterns": [
2432
+ {
2433
+ "include": "#escaped_char"
2434
+ },
2435
+ {
2436
+ "include": "#variable"
2437
+ },
2438
+ {
2439
+ "include": "source.sql"
2440
+ }
2441
+ ]
2442
+ }
2443
+ ]
2444
+ },
2445
+ {
2446
+ "begin": "((((<<(~)?) *)(POSTSCRIPT)()))(.*)\\n?",
2447
+ "beginCaptures": {
2448
+ "1": {
2449
+ "name": "string.unquoted.heredoc.interpolated.perl"
2450
+ },
2451
+ "2": {
2452
+ "name": "punctuation.definition.string.begin.perl"
2453
+ },
2454
+ "3": {
2455
+ "name": "punctuation.definition.delimiter.begin.perl"
2456
+ },
2457
+ "7": {
2458
+ "name": "punctuation.definition.delimiter.end.perl"
2459
+ },
2460
+ "8": {
2461
+ "patterns": [
2462
+ {
2463
+ "include": "$self"
2464
+ }
2465
+ ]
2466
+ }
2467
+ },
2468
+ "contentName": "string.unquoted.heredoc.interpolated.perl",
2469
+ "end": "^((?!\\5)\\s+)?((\\6))$",
2470
+ "endCaptures": {
2471
+ "2": {
2472
+ "name": "string.unquoted.heredoc.interpolated.perl"
2473
+ },
2474
+ "3": {
2475
+ "name": "punctuation.definition.string.end.perl"
2476
+ }
2477
+ },
2478
+ "name": "meta.embedded.block.postscript",
2479
+ "patterns": [
2480
+ {
2481
+ "begin": "^",
2482
+ "end": "\\n",
2483
+ "name": "source.postscript",
2484
+ "patterns": [
2485
+ {
2486
+ "include": "#escaped_char"
2487
+ },
2488
+ {
2489
+ "include": "#variable"
2490
+ },
2491
+ {
2492
+ "include": "source.postscript"
2493
+ }
2494
+ ]
2495
+ }
2496
+ ]
2497
+ },
2498
+ {
2499
+ "begin": "((((<<(~)?) *)((?![=\\d\\$\\( ])[^;,'\"`\\s\\)]*)()))(.*)\\n?",
2500
+ "beginCaptures": {
2501
+ "1": {
2502
+ "name": "string.unquoted.heredoc.interpolated.perl"
2503
+ },
2504
+ "2": {
2505
+ "name": "punctuation.definition.string.begin.perl"
2506
+ },
2507
+ "3": {
2508
+ "name": "punctuation.definition.delimiter.begin.perl"
2509
+ },
2510
+ "7": {
2511
+ "name": "punctuation.definition.delimiter.end.perl"
2512
+ },
2513
+ "8": {
2514
+ "patterns": [
2515
+ {
2516
+ "include": "$self"
2517
+ }
2518
+ ]
2519
+ }
2520
+ },
2521
+ "contentName": "string.unquoted.heredoc.interpolated.perl",
2522
+ "end": "^((?!\\5)\\s+)?((\\6))$",
2523
+ "endCaptures": {
2524
+ "2": {
2525
+ "name": "string.unquoted.heredoc.interpolated.perl"
2526
+ },
2527
+ "3": {
2528
+ "name": "punctuation.definition.string.end.perl"
2529
+ }
2530
+ },
2531
+ "patterns": [
2532
+ {
2533
+ "include": "#escaped_char"
2534
+ },
2535
+ {
2536
+ "include": "#variable"
2537
+ }
2538
+ ]
2539
+ },
2540
+ {
2541
+ "begin": "((((<<(~)?) *`)([^`]*)(`)))(.*)\\n?",
2542
+ "beginCaptures": {
2543
+ "1": {
2544
+ "name": "string.unquoted.heredoc.interpolated.perl"
2545
+ },
2546
+ "2": {
2547
+ "name": "punctuation.definition.string.begin.perl"
2548
+ },
2549
+ "3": {
2550
+ "name": "punctuation.definition.delimiter.begin.perl"
2551
+ },
2552
+ "7": {
2553
+ "name": "punctuation.definition.delimiter.end.perl"
2554
+ },
2555
+ "8": {
2556
+ "patterns": [
2557
+ {
2558
+ "include": "$self"
2559
+ }
2560
+ ]
2561
+ }
2562
+ },
2563
+ "contentName": "string.unquoted.heredoc.shell.perl",
2564
+ "end": "^((?!\\5)\\s+)?((\\6))$",
2565
+ "endCaptures": {
2566
+ "2": {
2567
+ "name": "string.unquoted.heredoc.interpolated.perl"
2568
+ },
2569
+ "3": {
2570
+ "name": "punctuation.definition.string.end.perl"
2571
+ }
2572
+ },
2573
+ "patterns": [
2574
+ {
2575
+ "include": "#escaped_char"
2576
+ },
2577
+ {
2578
+ "include": "#variable"
2579
+ }
2580
+ ]
2581
+ }
2582
+ ]
2583
+ },
2584
+ "line_comment": {
2585
+ "patterns": [
2586
+ {
2587
+ "begin": "(^[ \\t]+)?(?=#)",
2588
+ "beginCaptures": {
2589
+ "1": {
2590
+ "name": "punctuation.whitespace.comment.leading.perl"
2591
+ }
2592
+ },
2593
+ "end": "(?!\\G)",
2594
+ "patterns": [
2595
+ {
2596
+ "begin": "#",
2597
+ "beginCaptures": {
2598
+ "0": {
2599
+ "name": "punctuation.definition.comment.perl"
2600
+ }
2601
+ },
2602
+ "end": "\\n",
2603
+ "name": "comment.line.number-sign.perl"
2604
+ }
2605
+ ]
2606
+ }
2607
+ ]
2608
+ },
2609
+ "nested_braces": {
2610
+ "begin": "\\{",
2611
+ "captures": {
2612
+ "1": {
2613
+ "name": "punctuation.section.scope.perl"
2614
+ }
2615
+ },
2616
+ "end": "\\}",
2617
+ "patterns": [
2618
+ {
2619
+ "include": "#escaped_char"
2620
+ },
2621
+ {
2622
+ "include": "#nested_braces"
2623
+ }
2624
+ ]
2625
+ },
2626
+ "nested_braces_interpolated": {
2627
+ "begin": "\\{",
2628
+ "captures": {
2629
+ "1": {
2630
+ "name": "punctuation.section.scope.perl"
2631
+ }
2632
+ },
2633
+ "end": "\\}",
2634
+ "patterns": [
2635
+ {
2636
+ "include": "#escaped_char"
2637
+ },
2638
+ {
2639
+ "include": "#variable"
2640
+ },
2641
+ {
2642
+ "include": "#nested_braces_interpolated"
2643
+ }
2644
+ ]
2645
+ },
2646
+ "nested_brackets": {
2647
+ "begin": "\\[",
2648
+ "captures": {
2649
+ "1": {
2650
+ "name": "punctuation.section.scope.perl"
2651
+ }
2652
+ },
2653
+ "end": "\\]",
2654
+ "patterns": [
2655
+ {
2656
+ "include": "#escaped_char"
2657
+ },
2658
+ {
2659
+ "include": "#nested_brackets"
2660
+ }
2661
+ ]
2662
+ },
2663
+ "nested_brackets_interpolated": {
2664
+ "begin": "\\[",
2665
+ "captures": {
2666
+ "1": {
2667
+ "name": "punctuation.section.scope.perl"
2668
+ }
2669
+ },
2670
+ "end": "\\]",
2671
+ "patterns": [
2672
+ {
2673
+ "include": "#escaped_char"
2674
+ },
2675
+ {
2676
+ "include": "#variable"
2677
+ },
2678
+ {
2679
+ "include": "#nested_brackets_interpolated"
2680
+ }
2681
+ ]
2682
+ },
2683
+ "nested_ltgt": {
2684
+ "begin": "<",
2685
+ "captures": {
2686
+ "1": {
2687
+ "name": "punctuation.section.scope.perl"
2688
+ }
2689
+ },
2690
+ "end": ">",
2691
+ "patterns": [
2692
+ {
2693
+ "include": "#nested_ltgt"
2694
+ }
2695
+ ]
2696
+ },
2697
+ "nested_ltgt_interpolated": {
2698
+ "begin": "<",
2699
+ "captures": {
2700
+ "1": {
2701
+ "name": "punctuation.section.scope.perl"
2702
+ }
2703
+ },
2704
+ "end": ">",
2705
+ "patterns": [
2706
+ {
2707
+ "include": "#variable"
2708
+ },
2709
+ {
2710
+ "include": "#nested_ltgt_interpolated"
2711
+ }
2712
+ ]
2713
+ },
2714
+ "nested_parens": {
2715
+ "begin": "\\(",
2716
+ "captures": {
2717
+ "1": {
2718
+ "name": "punctuation.section.scope.perl"
2719
+ }
2720
+ },
2721
+ "end": "\\)",
2722
+ "patterns": [
2723
+ {
2724
+ "include": "#escaped_char"
2725
+ },
2726
+ {
2727
+ "include": "#nested_parens"
2728
+ }
2729
+ ]
2730
+ },
2731
+ "nested_parens_interpolated": {
2732
+ "begin": "\\(",
2733
+ "captures": {
2734
+ "1": {
2735
+ "name": "punctuation.section.scope.perl"
2736
+ }
2737
+ },
2738
+ "end": "\\)",
2739
+ "patterns": [
2740
+ {
2741
+ "comment": "This is to prevent thinks like qr/foo$/ to treat $/ as a variable",
2742
+ "match": "\\$(?=[^\\s\\w'\\{\\[\\(\\<])",
2743
+ "name": "keyword.control.anchor.perl"
2744
+ },
2745
+ {
2746
+ "include": "#escaped_char"
2747
+ },
2748
+ {
2749
+ "include": "#variable"
2750
+ },
2751
+ {
2752
+ "include": "#nested_parens_interpolated"
2753
+ }
2754
+ ]
2755
+ },
2756
+ "pod": {
2757
+ "patterns": [
2758
+ {
2759
+ "match": "^=(pod|back|cut)\\b",
2760
+ "name": "storage.type.class.pod.perl"
2761
+ },
2762
+ {
2763
+ "begin": "^(=begin)\\s+(html)\\s*$",
2764
+ "beginCaptures": {
2765
+ "1": {
2766
+ "name": "storage.type.class.pod.perl"
2767
+ },
2768
+ "2": {
2769
+ "name": "variable.other.pod.perl"
2770
+ }
2771
+ },
2772
+ "contentName": "text.embedded.html.basic",
2773
+ "end": "^(=end)\\s+(html)|^(?==cut)",
2774
+ "endCaptures": {
2775
+ "1": {
2776
+ "name": "storage.type.class.pod.perl"
2777
+ },
2778
+ "2": {
2779
+ "name": "variable.other.pod.perl"
2780
+ }
2781
+ },
2782
+ "name": "meta.embedded.pod.perl",
2783
+ "patterns": [
2784
+ {
2785
+ "include": "text.html.basic"
2786
+ }
2787
+ ]
2788
+ },
2789
+ {
2790
+ "captures": {
2791
+ "1": {
2792
+ "name": "storage.type.class.pod.perl"
2793
+ },
2794
+ "2": {
2795
+ "name": "variable.other.pod.perl",
2796
+ "patterns": [
2797
+ {
2798
+ "include": "#pod-formatting"
2799
+ }
2800
+ ]
2801
+ }
2802
+ },
2803
+ "match": "^(=(?:head[1-4]|item|over|encoding|begin|end|for))\\b\\s*(.*)"
2804
+ },
2805
+ {
2806
+ "include": "#pod-formatting"
2807
+ }
2808
+ ]
2809
+ },
2810
+ "pod-formatting": {
2811
+ "patterns": [
2812
+ {
2813
+ "captures": {
2814
+ "1": {
2815
+ "name": "markup.italic.pod.perl"
2816
+ },
2817
+ "2": {
2818
+ "name": "markup.italic.pod.perl"
2819
+ }
2820
+ },
2821
+ "match": "I(?:<([^<>]+)>|<+(\\s+(?:(?<!\\s)>|[^>])+\\s+)>+)",
2822
+ "name": "entity.name.type.instance.pod.perl"
2823
+ },
2824
+ {
2825
+ "captures": {
2826
+ "1": {
2827
+ "name": "markup.bold.pod.perl"
2828
+ },
2829
+ "2": {
2830
+ "name": "markup.bold.pod.perl"
2831
+ }
2832
+ },
2833
+ "match": "B(?:<([^<>]+)>|<+(\\s+(?:(?<!\\s)>|[^>])+\\s+)>+)",
2834
+ "name": "entity.name.type.instance.pod.perl"
2835
+ },
2836
+ {
2837
+ "captures": {
2838
+ "1": {
2839
+ "name": "markup.raw.pod.perl"
2840
+ },
2841
+ "2": {
2842
+ "name": "markup.raw.pod.perl"
2843
+ }
2844
+ },
2845
+ "match": "C(?:<([^<>]+)>|<+(\\\\s+(?:(?<!\\\\s)>|[^>])+\\\\s+)>+)",
2846
+ "name": "entity.name.type.instance.pod.perl"
2847
+ },
2848
+ {
2849
+ "captures": {
2850
+ "1": {
2851
+ "name": "markup.underline.link.hyperlink.pod.perl"
2852
+ }
2853
+ },
2854
+ "match": "L<([^>]+)>",
2855
+ "name": "entity.name.type.instance.pod.perl"
2856
+ },
2857
+ {
2858
+ "match": "[EFSXZ]<[^>]*>",
2859
+ "name": "entity.name.type.instance.pod.perl"
2860
+ }
2861
+ ]
2862
+ },
2863
+ "variable": {
2864
+ "patterns": [
2865
+ {
2866
+ "captures": {
2867
+ "1": {
2868
+ "name": "punctuation.definition.variable.perl"
2869
+ }
2870
+ },
2871
+ "match": "(\\$)&(?![A-Za-z0-9_])",
2872
+ "name": "variable.other.regexp.match.perl"
2873
+ },
2874
+ {
2875
+ "captures": {
2876
+ "1": {
2877
+ "name": "punctuation.definition.variable.perl"
2878
+ }
2879
+ },
2880
+ "match": "(\\$)`(?![A-Za-z0-9_])",
2881
+ "name": "variable.other.regexp.pre-match.perl"
2882
+ },
2883
+ {
2884
+ "captures": {
2885
+ "1": {
2886
+ "name": "punctuation.definition.variable.perl"
2887
+ }
2888
+ },
2889
+ "match": "(\\$)'(?![A-Za-z0-9_])",
2890
+ "name": "variable.other.regexp.post-match.perl"
2891
+ },
2892
+ {
2893
+ "captures": {
2894
+ "1": {
2895
+ "name": "punctuation.definition.variable.perl"
2896
+ }
2897
+ },
2898
+ "match": "(\\$)\\+(?![A-Za-z0-9_])",
2899
+ "name": "variable.other.regexp.last-paren-match.perl"
2900
+ },
2901
+ {
2902
+ "captures": {
2903
+ "1": {
2904
+ "name": "punctuation.definition.variable.perl"
2905
+ }
2906
+ },
2907
+ "match": "(\\$)\"(?![A-Za-z0-9_])",
2908
+ "name": "variable.other.readwrite.list-separator.perl"
2909
+ },
2910
+ {
2911
+ "captures": {
2912
+ "1": {
2913
+ "name": "punctuation.definition.variable.perl"
2914
+ }
2915
+ },
2916
+ "match": "(\\$)0(?![A-Za-z0-9_])",
2917
+ "name": "variable.other.predefined.program-name.perl"
2918
+ },
2919
+ {
2920
+ "captures": {
2921
+ "1": {
2922
+ "name": "punctuation.definition.variable.perl"
2923
+ }
2924
+ },
2925
+ "match": "(\\$)[_ab\\*\\.\\/\\|,\\\\;#%=\\-~^:?!\\$<>\\(\\)\\[\\]@](?![A-Za-z0-9_])",
2926
+ "name": "variable.other.predefined.perl"
2927
+ },
2928
+ {
2929
+ "captures": {
2930
+ "1": {
2931
+ "name": "punctuation.definition.variable.perl"
2932
+ }
2933
+ },
2934
+ "match": "(\\$)[0-9]+(?![A-Za-z0-9_])",
2935
+ "name": "variable.other.subpattern.perl"
2936
+ },
2937
+ {
2938
+ "captures": {
2939
+ "1": {
2940
+ "name": "punctuation.definition.variable.perl"
2941
+ }
2942
+ },
2943
+ "match": "([\\$\\@\\%](#)?)([a-zA-Zx7f-xff\\$]|::)([a-zA-Z0-9_x7f-xff\\$]|::)*\\b",
2944
+ "name": "variable.other.readwrite.global.perl"
2945
+ },
2946
+ {
2947
+ "captures": {
2948
+ "1": {
2949
+ "name": "punctuation.definition.variable.perl"
2950
+ },
2951
+ "2": {
2952
+ "name": "punctuation.definition.variable.perl"
2953
+ }
2954
+ },
2955
+ "match": "(\\$\\{)(?:[a-zA-Zx7f-xff\\$]|::)(?:[a-zA-Z0-9_x7f-xff\\$]|::)*(\\})",
2956
+ "name": "variable.other.readwrite.global.perl"
2957
+ },
2958
+ {
2959
+ "captures": {
2960
+ "1": {
2961
+ "name": "punctuation.definition.variable.perl"
2962
+ }
2963
+ },
2964
+ "match": "([\\$\\@\\%](#)?)[0-9_]\\b",
2965
+ "name": "variable.other.readwrite.global.special.perl"
2966
+ }
2967
+ ]
2968
+ }
2969
+ },
2970
+ "scopeName": "source.perl"
2971
+ }