chamba 0.7.0 → 0.9.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 (134) hide show
  1. package/LICENSE +53 -14
  2. package/README.md +34 -8
  3. package/dist/commands/advanced.js +7 -278
  4. package/dist/commands/dev.js +11 -612
  5. package/dist/commands/doctor.js +1 -29
  6. package/dist/commands/menu.js +1 -80
  7. package/dist/commands/onboard.js +6 -230
  8. package/dist/commands/settings.js +15 -349
  9. package/dist/lib/agent-commands.js +2 -0
  10. package/dist/lib/agent-context.js +6 -210
  11. package/dist/lib/browser.js +1 -40
  12. package/dist/lib/chamba-yaml.js +10 -191
  13. package/dist/lib/constants.js +1 -125
  14. package/dist/lib/dockerfile-builder.js +41 -261
  15. package/dist/lib/env.js +2 -78
  16. package/dist/lib/git-env.js +1 -21
  17. package/dist/lib/global-config.js +4 -66
  18. package/dist/lib/pnpm-store.js +1 -19
  19. package/dist/lib/ports.js +1 -210
  20. package/dist/lib/safe-rm.js +1 -36
  21. package/dist/lib/sessions.js +2 -34
  22. package/dist/lib/shadows.js +1 -176
  23. package/dist/lib/skills.js +2 -0
  24. package/dist/lib/templates.js +1 -0
  25. package/dist/lib/webterm.js +1 -305
  26. package/dist/lib/workspace-identity.js +4 -260
  27. package/package.json +4 -4
  28. package/templates/Dockerfile +15 -22
  29. package/templates/claude-statusline.sh +5 -7
  30. package/templates/context/baseline.md +4 -2
  31. package/templates/context/web-pane-craft.md +1 -1
  32. package/templates/pane-apps/client/assets/api-BBDf_rzz.js +12 -0
  33. package/templates/pane-apps/client/assets/api-DNLbSBpK.css +1 -0
  34. package/templates/pane-apps/client/assets/bee-B7t97l5B.webp +0 -0
  35. package/templates/pane-apps/client/assets/buzz-CUUsbnXH.mp3 +0 -0
  36. package/templates/pane-apps/client/assets/c-BNa-DeUl.json +3552 -0
  37. package/templates/pane-apps/client/assets/cpp-B-T4NRoH.json +20239 -0
  38. package/templates/pane-apps/client/assets/csharp-BbxHChhA.json +6010 -0
  39. package/templates/pane-apps/client/assets/css-CWCxuwmz.json +1860 -0
  40. package/templates/pane-apps/client/assets/diff-B-2N89g8.json +154 -0
  41. package/templates/pane-apps/client/assets/docker-DWTvYW26.json +103 -0
  42. package/templates/pane-apps/client/assets/files-BkmyervY.js +1 -0
  43. package/templates/pane-apps/client/assets/go-B2hyYeNg.json +3156 -0
  44. package/templates/pane-apps/client/assets/graphql-Z6Id2aNO.json +1292 -0
  45. package/templates/pane-apps/client/assets/home-3SeGzySM.css +1 -0
  46. package/templates/pane-apps/client/assets/home-Cu9xOd2i.js +1 -0
  47. package/templates/pane-apps/client/assets/html-BtzvlIfu.json +2627 -0
  48. package/templates/pane-apps/client/assets/ini-Bn3Twap1.json +108 -0
  49. package/templates/pane-apps/client/assets/java-C7t2dwLO.json +1885 -0
  50. package/templates/pane-apps/client/assets/javascript-DuC2v0C0.json +5996 -0
  51. package/templates/pane-apps/client/assets/json-CwdkWeV5.json +206 -0
  52. package/templates/pane-apps/client/assets/jsonc-MYWDbTU3.json +206 -0
  53. package/templates/pane-apps/client/assets/jsx-Cn8EZuIC.json +5996 -0
  54. package/templates/pane-apps/client/assets/kotlin-CFNOz1gw.json +580 -0
  55. package/templates/pane-apps/client/assets/make-BVnlFCcl.json +629 -0
  56. package/templates/pane-apps/client/assets/markdown-B4Xk2WM_.json +3263 -0
  57. package/templates/pane-apps/client/assets/php-CAQzQmmI.json +4188 -0
  58. package/templates/pane-apps/client/assets/pop-D5ZANBC3.mp3 +0 -0
  59. package/templates/pane-apps/client/assets/python-CYQee8m4.json +4174 -0
  60. package/templates/pane-apps/client/assets/reviews-DMrGB-kG.js +153 -0
  61. package/templates/pane-apps/client/assets/reviews-nK_yRav9.css +1 -0
  62. package/templates/pane-apps/client/assets/ruby-D7R58tus.json +3114 -0
  63. package/templates/pane-apps/client/assets/rust-BFBbFiei.json +1103 -0
  64. package/templates/pane-apps/client/assets/scss-TQRhBkPG.json +1874 -0
  65. package/templates/pane-apps/client/assets/shellscript-DieAkC4W.json +2375 -0
  66. package/templates/pane-apps/client/assets/specs-Cabb15F0.js +13 -0
  67. package/templates/pane-apps/client/assets/sql-Bxd030LV.json +634 -0
  68. package/templates/pane-apps/client/assets/toml-ChrKGzsV.json +430 -0
  69. package/templates/pane-apps/client/assets/tsx-D2e90MFw.json +5996 -0
  70. package/templates/pane-apps/client/assets/typescript-DonXQ_n1.json +5747 -0
  71. package/templates/pane-apps/client/assets/useNow-BHFKFraS.js +1 -0
  72. package/templates/pane-apps/client/assets/xml-B17r2RXF.json +382 -0
  73. package/templates/pane-apps/client/assets/yaml-CKn4h1zy.json +627 -0
  74. package/templates/pane-apps/client/home/index.html +16 -0
  75. package/templates/pane-apps/client/reviews/index.html +17 -0
  76. package/templates/pane-apps/client/specs/index.html +4 -2
  77. package/templates/pane-apps/server/home.mjs +12 -0
  78. package/templates/pane-apps/server/reviews.mjs +21 -0
  79. package/templates/pane-apps/server/specs.mjs +5 -1588
  80. package/templates/skills/chamba-statusline/SKILL.md +7 -19
  81. package/templates/skills/dx-review/SKILL.md +136 -0
  82. package/templates/skills/dx-review/references/acts.md +233 -0
  83. package/templates/skills/dx-spec/SKILL.md +230 -30
  84. package/templates/skills/dx-spec/references/principles-template.md +2 -0
  85. package/templates/skills/dx-spec/references/review-guide.md +6 -52
  86. package/templates/skills/dx-spec/references/spec-guide.md +25 -5
  87. package/templates/skills/dx-spec/references/stages.md +149 -60
  88. package/templates/skills/dx-spec-execute/SKILL.md +217 -38
  89. package/templates/startup.mjs +22 -16
  90. package/templates/tool-helper.sh +168 -0
  91. package/templates/webterm/README.md +82 -27
  92. package/templates/webterm/color.js +61 -0
  93. package/templates/webterm/config.js +55 -4
  94. package/templates/webterm/context/claude.md +0 -1
  95. package/templates/webterm/public/app/alerts.js +95 -14
  96. package/templates/webterm/public/app/anchored.js +81 -0
  97. package/templates/webterm/public/app/composer.js +37 -3
  98. package/templates/webterm/public/app/connection.js +23 -0
  99. package/templates/webterm/public/app/dom.js +3 -0
  100. package/templates/webterm/public/app/frames.js +52 -18
  101. package/templates/webterm/public/app/home-host.js +16 -0
  102. package/templates/webterm/public/app/main.js +24 -8
  103. package/templates/webterm/public/app/new-session.js +13 -41
  104. package/templates/webterm/public/app/palette.js +58 -0
  105. package/templates/webterm/public/app/pane-shape.js +169 -0
  106. package/templates/webterm/public/app/pane-shell.js +240 -135
  107. package/templates/webterm/public/app/pane.js +39 -24
  108. package/templates/webterm/public/app/reviews-host.js +19 -0
  109. package/templates/webterm/public/app/specs-host.js +12 -218
  110. package/templates/webterm/public/app/state.js +5 -0
  111. package/templates/webterm/public/app/tabs.js +6 -2
  112. package/templates/webterm/public/app/theme.js +75 -27
  113. package/templates/webterm/public/app/tool-host.js +318 -0
  114. package/templates/webterm/public/app/workspace-color.js +192 -0
  115. package/templates/webterm/public/index.html +22 -4
  116. package/templates/webterm/public/styles.css +195 -21
  117. package/templates/webterm/server.js +198 -150
  118. package/templates/webterm/tool-document.js +3 -2
  119. package/templates/webterm/tools/commands.js +61 -0
  120. package/templates/webterm/tools/home.js +58 -0
  121. package/templates/webterm/tools/index.js +26 -0
  122. package/templates/webterm/tools/mount.js +337 -0
  123. package/templates/webterm/tools/paths.js +34 -0
  124. package/templates/webterm/tools/reviews.js +137 -0
  125. package/templates/webterm/tools/specs.js +154 -0
  126. package/templates/webterm/typed-line.js +70 -7
  127. package/templates/context/context-usage.md +0 -1
  128. package/templates/context-usage.sh +0 -266
  129. package/templates/pane-apps/client/assets/specs-B1970L17.css +0 -1
  130. package/templates/pane-apps/client/assets/specs-cEee_SPn.js +0 -23
  131. package/templates/skills/dx-spec-config/SKILL.md +0 -313
  132. package/templates/skills/dx-spec-config/references/principles-template.md +0 -12
  133. package/templates/specs.sh +0 -106
  134. package/templates/webterm/specs.js +0 -358
@@ -0,0 +1,4188 @@
1
+ {
2
+ "displayName": "PHP",
3
+ "name": "php",
4
+ "patterns": [
5
+ {
6
+ "include": "#attribute"
7
+ },
8
+ {
9
+ "include": "#comments"
10
+ },
11
+ {
12
+ "captures": {
13
+ "1": {
14
+ "name": "keyword.other.namespace.php"
15
+ },
16
+ "2": {
17
+ "name": "entity.name.type.namespace.php",
18
+ "patterns": [
19
+ {
20
+ "match": "\\\\",
21
+ "name": "punctuation.separator.inheritance.php"
22
+ }
23
+ ]
24
+ }
25
+ },
26
+ "match": "(?i)(?:^|(?<=<\\?php))\\s*(namespace)\\s+([0-9\\\\_a-z\\x7F-\\x{10FFFF}]+)(?=\\s*;)",
27
+ "name": "meta.namespace.php"
28
+ },
29
+ {
30
+ "begin": "(?i)(?:^|(?<=<\\?php))\\s*(namespace)\\s+",
31
+ "beginCaptures": {
32
+ "1": {
33
+ "name": "keyword.other.namespace.php"
34
+ }
35
+ },
36
+ "end": "(?<=})|(?=\\?>)",
37
+ "name": "meta.namespace.php",
38
+ "patterns": [
39
+ {
40
+ "include": "#comments"
41
+ },
42
+ {
43
+ "captures": {
44
+ "0": {
45
+ "patterns": [
46
+ {
47
+ "match": "\\\\",
48
+ "name": "punctuation.separator.inheritance.php"
49
+ }
50
+ ]
51
+ }
52
+ },
53
+ "match": "(?i)[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+",
54
+ "name": "entity.name.type.namespace.php"
55
+ },
56
+ {
57
+ "begin": "\\{",
58
+ "beginCaptures": {
59
+ "0": {
60
+ "name": "punctuation.definition.namespace.begin.bracket.curly.php"
61
+ }
62
+ },
63
+ "end": "}|(?=\\?>)",
64
+ "endCaptures": {
65
+ "0": {
66
+ "name": "punctuation.definition.namespace.end.bracket.curly.php"
67
+ }
68
+ },
69
+ "patterns": [
70
+ {
71
+ "include": "$self"
72
+ }
73
+ ]
74
+ },
75
+ {
76
+ "match": "\\S+",
77
+ "name": "invalid.illegal.identifier.php"
78
+ }
79
+ ]
80
+ },
81
+ {
82
+ "match": "\\s+(?=use\\b)"
83
+ },
84
+ {
85
+ "begin": "(?i)\\buse\\b",
86
+ "beginCaptures": {
87
+ "0": {
88
+ "name": "keyword.other.use.php"
89
+ }
90
+ },
91
+ "end": "(?<=})|(?=;)|(?=\\?>)",
92
+ "name": "meta.use.php",
93
+ "patterns": [
94
+ {
95
+ "match": "\\b(const|function)\\b",
96
+ "name": "storage.type.${1:/downcase}.php"
97
+ },
98
+ {
99
+ "begin": "\\{",
100
+ "beginCaptures": {
101
+ "0": {
102
+ "name": "punctuation.definition.use.begin.bracket.curly.php"
103
+ }
104
+ },
105
+ "end": "}",
106
+ "endCaptures": {
107
+ "0": {
108
+ "name": "punctuation.definition.use.end.bracket.curly.php"
109
+ }
110
+ },
111
+ "patterns": [
112
+ {
113
+ "include": "#scope-resolution"
114
+ },
115
+ {
116
+ "captures": {
117
+ "1": {
118
+ "name": "keyword.other.use-as.php"
119
+ },
120
+ "2": {
121
+ "name": "storage.modifier.php"
122
+ },
123
+ "3": {
124
+ "name": "storage.modifier.inheritance.${3:/downcase}.php"
125
+ },
126
+ "4": {
127
+ "name": "storage.modifier.visibility.${4:/downcase}.php"
128
+ },
129
+ "5": {
130
+ "name": "storage.modifier.static.php"
131
+ },
132
+ "6": {
133
+ "name": "entity.other.alias.php"
134
+ }
135
+ },
136
+ "match": "(?i)\\b(as)\\s+((final|abstract)|(p(?:ublic|rivate|rotected))|(static))\\s+([_a-z\\x7F-\\x{10FFFF}][0-9_a-z\\x7F-\\x{10FFFF}]*)"
137
+ },
138
+ {
139
+ "captures": {
140
+ "1": {
141
+ "name": "keyword.other.use-as.php"
142
+ },
143
+ "2": {
144
+ "patterns": [
145
+ {
146
+ "captures": {
147
+ "1": {
148
+ "name": "storage.modifier.inheritance.${1:/downcase}.php"
149
+ },
150
+ "2": {
151
+ "name": "storage.modifier.visibility.${2:/downcase}.php"
152
+ },
153
+ "3": {
154
+ "name": "storage.modifier.static.php"
155
+ }
156
+ },
157
+ "match": "(?i)\\b(?:(final|abstract)|(p(?:ublic|rivate|rotected))|(static))\\b",
158
+ "name": "storage.modifier.php"
159
+ },
160
+ {
161
+ "match": ".+",
162
+ "name": "entity.other.alias.php"
163
+ }
164
+ ]
165
+ }
166
+ },
167
+ "match": "(?i)\\b(as)\\s+([_a-z\\x7F-\\x{10FFFF}][0-9_a-z\\x7F-\\x{10FFFF}]*)"
168
+ },
169
+ {
170
+ "captures": {
171
+ "1": {
172
+ "name": "keyword.other.use-insteadof.php"
173
+ },
174
+ "2": {
175
+ "name": "support.class.php"
176
+ }
177
+ },
178
+ "match": "(?i)\\b(insteadof)\\s+([_a-z\\x7F-\\x{10FFFF}][0-9_a-z\\x7F-\\x{10FFFF}]*)"
179
+ },
180
+ {
181
+ "match": ";",
182
+ "name": "punctuation.terminator.expression.php"
183
+ },
184
+ {
185
+ "include": "#use-inner"
186
+ }
187
+ ]
188
+ },
189
+ {
190
+ "include": "#use-inner"
191
+ }
192
+ ]
193
+ },
194
+ {
195
+ "begin": "(?i)\\b(trait)\\s+([_a-z\\x7F-\\x{10FFFF}][0-9_a-z\\x7F-\\x{10FFFF}]*)",
196
+ "beginCaptures": {
197
+ "1": {
198
+ "name": "storage.type.trait.php"
199
+ },
200
+ "2": {
201
+ "name": "entity.name.type.trait.php"
202
+ }
203
+ },
204
+ "end": "}|(?=\\?>)",
205
+ "endCaptures": {
206
+ "0": {
207
+ "name": "punctuation.definition.trait.end.bracket.curly.php"
208
+ }
209
+ },
210
+ "name": "meta.trait.php",
211
+ "patterns": [
212
+ {
213
+ "include": "#comments"
214
+ },
215
+ {
216
+ "begin": "\\{",
217
+ "beginCaptures": {
218
+ "0": {
219
+ "name": "punctuation.definition.trait.begin.bracket.curly.php"
220
+ }
221
+ },
222
+ "contentName": "meta.trait.body.php",
223
+ "end": "(?=}|\\?>)",
224
+ "patterns": [
225
+ {
226
+ "include": "$self"
227
+ }
228
+ ]
229
+ }
230
+ ]
231
+ },
232
+ {
233
+ "begin": "(?i)\\b(interface)\\s+([_a-z\\x7F-\\x{10FFFF}][0-9_a-z\\x7F-\\x{10FFFF}]*)",
234
+ "beginCaptures": {
235
+ "1": {
236
+ "name": "storage.type.interface.php"
237
+ },
238
+ "2": {
239
+ "name": "entity.name.type.interface.php"
240
+ }
241
+ },
242
+ "end": "}|(?=\\?>)",
243
+ "endCaptures": {
244
+ "0": {
245
+ "name": "punctuation.definition.interface.end.bracket.curly.php"
246
+ }
247
+ },
248
+ "name": "meta.interface.php",
249
+ "patterns": [
250
+ {
251
+ "include": "#comments"
252
+ },
253
+ {
254
+ "include": "#interface-extends"
255
+ },
256
+ {
257
+ "begin": "\\{",
258
+ "beginCaptures": {
259
+ "0": {
260
+ "name": "punctuation.definition.interface.begin.bracket.curly.php"
261
+ }
262
+ },
263
+ "contentName": "meta.interface.body.php",
264
+ "end": "(?=}|\\?>)",
265
+ "patterns": [
266
+ {
267
+ "include": "#class-constant"
268
+ },
269
+ {
270
+ "include": "$self"
271
+ }
272
+ ]
273
+ }
274
+ ]
275
+ },
276
+ {
277
+ "begin": "(?i)\\b(enum)\\s+([_a-z\\x7F-\\x{10FFFF}][0-9_a-z\\x7F-\\x{10FFFF}]*)(?:\\s*(:)\\s*(int|string)\\b)?",
278
+ "beginCaptures": {
279
+ "1": {
280
+ "name": "storage.type.enum.php"
281
+ },
282
+ "2": {
283
+ "name": "entity.name.type.enum.php"
284
+ },
285
+ "3": {
286
+ "name": "keyword.operator.return-value.php"
287
+ },
288
+ "4": {
289
+ "name": "keyword.other.type.php"
290
+ }
291
+ },
292
+ "end": "}|(?=\\?>)",
293
+ "endCaptures": {
294
+ "0": {
295
+ "name": "punctuation.definition.enum.end.bracket.curly.php"
296
+ }
297
+ },
298
+ "name": "meta.enum.php",
299
+ "patterns": [
300
+ {
301
+ "include": "#comments"
302
+ },
303
+ {
304
+ "include": "#class-implements"
305
+ },
306
+ {
307
+ "begin": "\\{",
308
+ "beginCaptures": {
309
+ "0": {
310
+ "name": "punctuation.definition.enum.begin.bracket.curly.php"
311
+ }
312
+ },
313
+ "contentName": "meta.enum.body.php",
314
+ "end": "(?=}|\\?>)",
315
+ "patterns": [
316
+ {
317
+ "captures": {
318
+ "1": {
319
+ "name": "storage.modifier.php"
320
+ },
321
+ "2": {
322
+ "name": "storage.type.enum.case.php"
323
+ },
324
+ "3": {
325
+ "name": "constant.enum.php"
326
+ }
327
+ },
328
+ "match": "(?i)\\b((case))\\s*([_a-z\\x7F-\\x{10FFFF}][0-9_a-z\\x7F-\\x{10FFFF}]*)"
329
+ },
330
+ {
331
+ "include": "#class-constant"
332
+ },
333
+ {
334
+ "include": "$self"
335
+ }
336
+ ]
337
+ }
338
+ ]
339
+ },
340
+ {
341
+ "begin": "(?i)\\b(?:((?:(?:final|abstract|readonly)\\s+)*)(class)\\s+([_a-z\\x7F-\\x{10FFFF}][0-9_a-z\\x7F-\\x{10FFFF}]*)|(new)\\b\\s*(#\\[.*])?\\s*(?:((readonly))\\s+)?\\b(class)\\b)",
342
+ "beginCaptures": {
343
+ "1": {
344
+ "patterns": [
345
+ {
346
+ "captures": {
347
+ "1": {
348
+ "name": "storage.modifier.inheritance.${1:/downcase}.php"
349
+ },
350
+ "2": {
351
+ "name": "storage.modifier.readonly.php"
352
+ }
353
+ },
354
+ "match": "(?i)(final|abstract)|(readonly)",
355
+ "name": "storage.modifier.php"
356
+ }
357
+ ]
358
+ },
359
+ "2": {
360
+ "name": "storage.type.class.php"
361
+ },
362
+ "3": {
363
+ "name": "entity.name.type.class.php"
364
+ },
365
+ "4": {
366
+ "name": "keyword.other.new.php"
367
+ },
368
+ "5": {
369
+ "patterns": [
370
+ {
371
+ "include": "#attribute"
372
+ }
373
+ ]
374
+ },
375
+ "6": {
376
+ "name": "storage.modifier.php"
377
+ },
378
+ "7": {
379
+ "name": "storage.modifier.readonly.php"
380
+ },
381
+ "8": {
382
+ "name": "storage.type.class.php"
383
+ }
384
+ },
385
+ "end": "}|(?=\\?>)",
386
+ "endCaptures": {
387
+ "0": {
388
+ "name": "punctuation.definition.class.end.bracket.curly.php"
389
+ }
390
+ },
391
+ "name": "meta.class.php",
392
+ "patterns": [
393
+ {
394
+ "begin": "(?<=class)\\s*(\\()",
395
+ "beginCaptures": {
396
+ "1": {
397
+ "name": "punctuation.definition.arguments.begin.bracket.round.php"
398
+ }
399
+ },
400
+ "end": "\\)|(?=\\?>)",
401
+ "endCaptures": {
402
+ "0": {
403
+ "name": "punctuation.definition.arguments.end.bracket.round.php"
404
+ }
405
+ },
406
+ "name": "meta.function-call.php",
407
+ "patterns": [
408
+ {
409
+ "include": "#named-arguments"
410
+ },
411
+ {
412
+ "include": "$self"
413
+ }
414
+ ]
415
+ },
416
+ {
417
+ "include": "#comments"
418
+ },
419
+ {
420
+ "include": "#class-extends"
421
+ },
422
+ {
423
+ "include": "#class-implements"
424
+ },
425
+ {
426
+ "begin": "\\{",
427
+ "beginCaptures": {
428
+ "0": {
429
+ "name": "punctuation.definition.class.begin.bracket.curly.php"
430
+ }
431
+ },
432
+ "contentName": "meta.class.body.php",
433
+ "end": "(?=}|\\?>)",
434
+ "patterns": [
435
+ {
436
+ "include": "#class-constant"
437
+ },
438
+ {
439
+ "include": "$self"
440
+ }
441
+ ]
442
+ }
443
+ ]
444
+ },
445
+ {
446
+ "include": "#match_statement"
447
+ },
448
+ {
449
+ "include": "#switch_statement"
450
+ },
451
+ {
452
+ "captures": {
453
+ "1": {
454
+ "name": "keyword.control.yield-from.php"
455
+ }
456
+ },
457
+ "match": "\\s*\\b(yield\\s+from)\\b"
458
+ },
459
+ {
460
+ "captures": {
461
+ "1": {
462
+ "name": "keyword.control.${1:/downcase}.php"
463
+ }
464
+ },
465
+ "match": "\\b(break|case|continue|declare|default|die|do|else(if)?|end(declare|for(each)?|if|switch|while)|exit|for(each)?|if|return|switch|use|while|yield)\\b"
466
+ },
467
+ {
468
+ "begin": "(?i)\\b((?:require|include)(?:_once)?)(\\s+|(?=\\())",
469
+ "beginCaptures": {
470
+ "1": {
471
+ "name": "keyword.control.import.include.php"
472
+ }
473
+ },
474
+ "end": "(?=[;\\s]|$|\\?>)",
475
+ "name": "meta.include.php",
476
+ "patterns": [
477
+ {
478
+ "include": "$self"
479
+ }
480
+ ]
481
+ },
482
+ {
483
+ "begin": "\\b(catch)\\s*(\\()",
484
+ "beginCaptures": {
485
+ "1": {
486
+ "name": "keyword.control.exception.catch.php"
487
+ },
488
+ "2": {
489
+ "name": "punctuation.definition.parameters.begin.bracket.round.php"
490
+ }
491
+ },
492
+ "end": "\\)",
493
+ "endCaptures": {
494
+ "0": {
495
+ "name": "punctuation.definition.parameters.end.bracket.round.php"
496
+ }
497
+ },
498
+ "name": "meta.catch.php",
499
+ "patterns": [
500
+ {
501
+ "captures": {
502
+ "1": {
503
+ "patterns": [
504
+ {
505
+ "match": "\\|",
506
+ "name": "punctuation.separator.delimiter.php"
507
+ },
508
+ {
509
+ "begin": "(?i)(?=[\\\\_a-z\\x7F-\\x{10FFFF}])",
510
+ "end": "(?i)([_a-z\\x7F-\\x{10FFFF}][0-9_a-z\\x7F-\\x{10FFFF}]*)(?![0-9\\\\_a-z\\x7F-\\x{10FFFF}])",
511
+ "endCaptures": {
512
+ "1": {
513
+ "name": "support.class.exception.php"
514
+ }
515
+ },
516
+ "patterns": [
517
+ {
518
+ "include": "#namespace"
519
+ }
520
+ ]
521
+ }
522
+ ]
523
+ },
524
+ "2": {
525
+ "name": "variable.other.php"
526
+ },
527
+ "3": {
528
+ "name": "punctuation.definition.variable.php"
529
+ }
530
+ },
531
+ "match": "(?i)([0-9\\\\_a-z\\x7F-\\x{10FFFF}]+(?:\\s*\\|\\s*[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+)*)\\s*((\\$+)[_a-z\\x7F-\\x{10FFFF}][0-9_a-z\\x7F-\\x{10FFFF}]*)?"
532
+ }
533
+ ]
534
+ },
535
+ {
536
+ "match": "\\b(catch|try|throw|exception|finally)\\b",
537
+ "name": "keyword.control.exception.php"
538
+ },
539
+ {
540
+ "begin": "(?i)\\b(function)\\s*(?=&?\\s*\\()",
541
+ "beginCaptures": {
542
+ "1": {
543
+ "name": "storage.type.function.php"
544
+ }
545
+ },
546
+ "end": "(?=\\s*\\{)",
547
+ "name": "meta.function.closure.php",
548
+ "patterns": [
549
+ {
550
+ "include": "#comments"
551
+ },
552
+ {
553
+ "begin": "(&)?\\s*(\\()",
554
+ "beginCaptures": {
555
+ "1": {
556
+ "name": "storage.modifier.reference.php"
557
+ },
558
+ "2": {
559
+ "name": "punctuation.definition.parameters.begin.bracket.round.php"
560
+ }
561
+ },
562
+ "contentName": "meta.function.parameters.php",
563
+ "end": "\\)",
564
+ "endCaptures": {
565
+ "0": {
566
+ "name": "punctuation.definition.parameters.end.bracket.round.php"
567
+ }
568
+ },
569
+ "patterns": [
570
+ {
571
+ "include": "#function-parameters"
572
+ }
573
+ ]
574
+ },
575
+ {
576
+ "begin": "(?i)(use)\\s*(\\()",
577
+ "beginCaptures": {
578
+ "1": {
579
+ "name": "keyword.other.function.use.php"
580
+ },
581
+ "2": {
582
+ "name": "punctuation.definition.parameters.begin.bracket.round.php"
583
+ }
584
+ },
585
+ "end": "\\)",
586
+ "endCaptures": {
587
+ "0": {
588
+ "name": "punctuation.definition.parameters.end.bracket.round.php"
589
+ }
590
+ },
591
+ "name": "meta.function.closure.use.php",
592
+ "patterns": [
593
+ {
594
+ "match": ",",
595
+ "name": "punctuation.separator.delimiter.php"
596
+ },
597
+ {
598
+ "captures": {
599
+ "1": {
600
+ "name": "variable.other.php"
601
+ },
602
+ "2": {
603
+ "name": "storage.modifier.reference.php"
604
+ },
605
+ "3": {
606
+ "name": "punctuation.definition.variable.php"
607
+ }
608
+ },
609
+ "match": "(?i)((?:(&)\\s*)?(\\$+)[_a-z\\x7F-\\x{10FFFF}][0-9_a-z\\x7F-\\x{10FFFF}]*)\\s*(?=[),])"
610
+ }
611
+ ]
612
+ },
613
+ {
614
+ "captures": {
615
+ "1": {
616
+ "name": "keyword.operator.return-value.php"
617
+ },
618
+ "2": {
619
+ "patterns": [
620
+ {
621
+ "include": "#php-types"
622
+ }
623
+ ]
624
+ }
625
+ },
626
+ "match": "(?i)(:)\\s*((?:\\?\\s*)?[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+|(?:[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+|\\(\\s*[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+(?:\\s*&\\s*[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+)+\\s*\\))(?:\\s*[\\&|]\\s*(?:[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+|\\(\\s*[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+(?:\\s*&\\s*[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+)+\\s*\\)))+)(?=\\s*(?:\\{|/[*/]|#|$))"
627
+ }
628
+ ]
629
+ },
630
+ {
631
+ "begin": "(?i)\\b(fn)\\s*(?=&?\\s*\\()",
632
+ "beginCaptures": {
633
+ "1": {
634
+ "name": "storage.type.function.php"
635
+ }
636
+ },
637
+ "end": "=>",
638
+ "endCaptures": {
639
+ "0": {
640
+ "name": "punctuation.definition.arrow.php"
641
+ }
642
+ },
643
+ "name": "meta.function.closure.php",
644
+ "patterns": [
645
+ {
646
+ "begin": "(?:(&)\\s*)?(\\()",
647
+ "beginCaptures": {
648
+ "1": {
649
+ "name": "storage.modifier.reference.php"
650
+ },
651
+ "2": {
652
+ "name": "punctuation.definition.parameters.begin.bracket.round.php"
653
+ }
654
+ },
655
+ "contentName": "meta.function.parameters.php",
656
+ "end": "\\)",
657
+ "endCaptures": {
658
+ "0": {
659
+ "name": "punctuation.definition.parameters.end.bracket.round.php"
660
+ }
661
+ },
662
+ "patterns": [
663
+ {
664
+ "include": "#function-parameters"
665
+ }
666
+ ]
667
+ },
668
+ {
669
+ "captures": {
670
+ "1": {
671
+ "name": "keyword.operator.return-value.php"
672
+ },
673
+ "2": {
674
+ "patterns": [
675
+ {
676
+ "include": "#php-types"
677
+ }
678
+ ]
679
+ }
680
+ },
681
+ "match": "(?i)(:)\\s*((?:\\?\\s*)?[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+|(?:[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+|\\(\\s*[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+(?:\\s*&\\s*[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+)+\\s*\\))(?:\\s*[\\&|]\\s*(?:[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+|\\(\\s*[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+(?:\\s*&\\s*[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+)+\\s*\\)))+)(?=\\s*(?:=>|/[*/]|#|$))"
682
+ }
683
+ ]
684
+ },
685
+ {
686
+ "begin": "((?:(?:final|abstract|public|private|protected)\\s+)*)(function)\\s+(__construct)\\s*(\\()",
687
+ "beginCaptures": {
688
+ "1": {
689
+ "patterns": [
690
+ {
691
+ "captures": {
692
+ "1": {
693
+ "name": "storage.modifier.inheritance.${1:/downcase}.php"
694
+ },
695
+ "2": {
696
+ "name": "storage.modifier.visibility.${2:/downcase}.php"
697
+ }
698
+ },
699
+ "match": "(?i)(final|abstract)|(p(?:ublic|rivate|rotected))",
700
+ "name": "storage.modifier.php"
701
+ }
702
+ ]
703
+ },
704
+ "2": {
705
+ "name": "storage.type.function.php"
706
+ },
707
+ "3": {
708
+ "name": "support.function.constructor.php"
709
+ },
710
+ "4": {
711
+ "name": "punctuation.definition.parameters.begin.bracket.round.php"
712
+ }
713
+ },
714
+ "contentName": "meta.function.parameters.php",
715
+ "end": "(?i)(\\))\\s*(:\\s*(?:\\?\\s*)?(?!\\s)[\\&()0-9\\\\_a-z|\\x7F-\\x{10FFFF}\\s]+(?<!\\s))?(?=\\s*(?:\\{|/[*/]|#|$|;))",
716
+ "endCaptures": {
717
+ "1": {
718
+ "name": "punctuation.definition.parameters.end.bracket.round.php"
719
+ },
720
+ "2": {
721
+ "name": "invalid.illegal.return-type.php"
722
+ }
723
+ },
724
+ "name": "meta.function.php",
725
+ "patterns": [
726
+ {
727
+ "include": "#comments"
728
+ },
729
+ {
730
+ "match": ",",
731
+ "name": "punctuation.separator.delimiter.php"
732
+ },
733
+ {
734
+ "begin": "(?i)((?:(?:p(?:ublic|rivate|rotected)(?:\\(set\\))?|readonly)(?:\\s+|(?=\\?)))++)(?:((?:\\?\\s*)?[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+|(?:[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+|\\(\\s*[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+(?:\\s*&\\s*[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+)+\\s*\\))(?:\\s*[\\&|]\\s*(?:[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+|\\(\\s*[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+(?:\\s*&\\s*[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+)+\\s*\\)))+)\\s+)?((?:(&)\\s*)?(\\$)[_a-z\\x7F-\\x{10FFFF}][0-9_a-z\\x7F-\\x{10FFFF}]*)",
735
+ "beginCaptures": {
736
+ "1": {
737
+ "patterns": [
738
+ {
739
+ "captures": {
740
+ "1": {
741
+ "name": "storage.modifier.visibility.set.${2:/downcase}.php"
742
+ },
743
+ "3": {
744
+ "name": "storage.modifier.visibility.${3:/downcase}.php"
745
+ },
746
+ "4": {
747
+ "name": "storage.modifier.readonly.php"
748
+ }
749
+ },
750
+ "match": "(?i)\\b((p(?:ublic|rivate|rotected))\\(set\\))|\\b(p(?:ublic|rivate|rotected))\\b|\\b(readonly)\\b",
751
+ "name": "storage.modifier.php"
752
+ }
753
+ ]
754
+ },
755
+ "2": {
756
+ "patterns": [
757
+ {
758
+ "include": "#php-types"
759
+ }
760
+ ]
761
+ },
762
+ "3": {
763
+ "name": "variable.other.php"
764
+ },
765
+ "4": {
766
+ "name": "storage.modifier.reference.php"
767
+ },
768
+ "5": {
769
+ "name": "punctuation.definition.variable.php"
770
+ }
771
+ },
772
+ "end": "(?=\\s*(?:[),]|/[*/]|#))",
773
+ "name": "meta.function.parameter.promoted-property.php",
774
+ "patterns": [
775
+ {
776
+ "begin": "=",
777
+ "beginCaptures": {
778
+ "0": {
779
+ "name": "keyword.operator.assignment.php"
780
+ }
781
+ },
782
+ "end": "(?=\\s*(?:[),]|/[*/]|#))",
783
+ "patterns": [
784
+ {
785
+ "include": "#parameter-default-types"
786
+ }
787
+ ]
788
+ }
789
+ ]
790
+ },
791
+ {
792
+ "include": "#function-parameters"
793
+ }
794
+ ]
795
+ },
796
+ {
797
+ "begin": "((?:(?:final|abstract|public|private|protected|static)\\s+)*)(function)\\s+(?i:(__(?:call|construct|debugInfo|destruct|get|set|isset|unset|toString|clone|set_state|sleep|wakeup|autoload|invoke|callStatic|serialize|unserialize))|(&)?\\s*([A-Z_a-z\\x7F-\\x{10FFFF}][0-9A-Z_a-z\\x7F-\\x{10FFFF}]*))\\s*(\\()",
798
+ "beginCaptures": {
799
+ "1": {
800
+ "patterns": [
801
+ {
802
+ "captures": {
803
+ "1": {
804
+ "name": "storage.modifier.inheritance.${1:/downcase}.php"
805
+ },
806
+ "2": {
807
+ "name": "storage.modifier.visibility.${2:/downcase}.php"
808
+ },
809
+ "3": {
810
+ "name": "storage.modifier.static.php"
811
+ }
812
+ },
813
+ "match": "(?i)(final|abstract)|(p(?:ublic|rivate|rotected))|(static)",
814
+ "name": "storage.modifier.php"
815
+ }
816
+ ]
817
+ },
818
+ "2": {
819
+ "name": "storage.type.function.php"
820
+ },
821
+ "3": {
822
+ "name": "support.function.magic.php"
823
+ },
824
+ "4": {
825
+ "name": "storage.modifier.reference.php"
826
+ },
827
+ "5": {
828
+ "name": "entity.name.function.php"
829
+ },
830
+ "6": {
831
+ "name": "punctuation.definition.parameters.begin.bracket.round.php"
832
+ }
833
+ },
834
+ "contentName": "meta.function.parameters.php",
835
+ "end": "(?i)(\\))(?:\\s*(:)\\s*((?:\\?\\s*)?[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+|(?:[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+|\\(\\s*[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+(?:\\s*&\\s*[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+)+\\s*\\))(?:\\s*[\\&|]\\s*(?:[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+|\\(\\s*[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+(?:\\s*&\\s*[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+)+\\s*\\)))+))?(?=\\s*(?:\\{|/[*/]|#|$|;))",
836
+ "endCaptures": {
837
+ "1": {
838
+ "name": "punctuation.definition.parameters.end.bracket.round.php"
839
+ },
840
+ "2": {
841
+ "name": "keyword.operator.return-value.php"
842
+ },
843
+ "3": {
844
+ "patterns": [
845
+ {
846
+ "match": "\\b(static)\\b",
847
+ "name": "storage.type.php"
848
+ },
849
+ {
850
+ "match": "\\b(never)\\b",
851
+ "name": "keyword.other.type.never.php"
852
+ },
853
+ {
854
+ "include": "#php-types"
855
+ }
856
+ ]
857
+ }
858
+ },
859
+ "name": "meta.function.php",
860
+ "patterns": [
861
+ {
862
+ "include": "#function-parameters"
863
+ }
864
+ ]
865
+ },
866
+ {
867
+ "captures": {
868
+ "1": {
869
+ "patterns": [
870
+ {
871
+ "captures": {
872
+ "1": {
873
+ "name": "storage.modifier.visibility.set.${2:/downcase}.php"
874
+ },
875
+ "3": {
876
+ "name": "storage.modifier.visibility.${3:/downcase}.php"
877
+ },
878
+ "4": {
879
+ "name": "storage.modifier.${4:/downcase}.php"
880
+ }
881
+ },
882
+ "match": "(?i)\\b((p(?:ublic|rivate|rotected))\\(set\\))|\\b(p(?:ublic|rivate|rotected))\\b|\\b(readonly|static)\\b",
883
+ "name": "storage.modifier.php"
884
+ }
885
+ ]
886
+ },
887
+ "2": {
888
+ "patterns": [
889
+ {
890
+ "include": "#php-types"
891
+ }
892
+ ]
893
+ },
894
+ "3": {
895
+ "name": "variable.other.php"
896
+ },
897
+ "4": {
898
+ "name": "punctuation.definition.variable.php"
899
+ }
900
+ },
901
+ "match": "(?i)((?:(?:p(?:ublic|rivate|rotected)(?:\\(set\\))?|static|readonly)(?:\\s+|(?=\\?)))++)((?:\\?\\s*)?[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+|(?:[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+|\\(\\s*[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+(?:\\s*&\\s*[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+)+\\s*\\))(?:\\s*[\\&|]\\s*(?:[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+|\\(\\s*[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+(?:\\s*&\\s*[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+)+\\s*\\)))+)?\\s+((\\$)[_a-z\\x7F-\\x{10FFFF}][0-9_a-z\\x7F-\\x{10FFFF}]*)"
902
+ },
903
+ {
904
+ "include": "#invoke-call"
905
+ },
906
+ {
907
+ "include": "#scope-resolution"
908
+ },
909
+ {
910
+ "include": "#variables"
911
+ },
912
+ {
913
+ "include": "#strings"
914
+ },
915
+ {
916
+ "captures": {
917
+ "1": {
918
+ "name": "support.function.construct.php"
919
+ },
920
+ "2": {
921
+ "name": "punctuation.definition.array.begin.bracket.round.php"
922
+ },
923
+ "3": {
924
+ "name": "punctuation.definition.array.end.bracket.round.php"
925
+ }
926
+ },
927
+ "match": "(array)(\\()(\\))",
928
+ "name": "meta.array.empty.php"
929
+ },
930
+ {
931
+ "begin": "(array)\\s*(\\()",
932
+ "beginCaptures": {
933
+ "1": {
934
+ "name": "support.function.construct.php"
935
+ },
936
+ "2": {
937
+ "name": "punctuation.definition.array.begin.bracket.round.php"
938
+ }
939
+ },
940
+ "end": "\\)|(?=\\?>)",
941
+ "endCaptures": {
942
+ "0": {
943
+ "name": "punctuation.definition.array.end.bracket.round.php"
944
+ }
945
+ },
946
+ "name": "meta.array.php",
947
+ "patterns": [
948
+ {
949
+ "include": "$self"
950
+ }
951
+ ]
952
+ },
953
+ {
954
+ "captures": {
955
+ "1": {
956
+ "name": "punctuation.definition.storage-type.begin.bracket.round.php"
957
+ },
958
+ "2": {
959
+ "name": "storage.type.php"
960
+ },
961
+ "3": {
962
+ "name": "storage.type.cast.${3:/downcase}.php"
963
+ },
964
+ "5": {
965
+ "name": "punctuation.definition.storage-type.end.bracket.round.php"
966
+ }
967
+ },
968
+ "match": "(?i)(\\()\\s*((bool|int|float|string|array|object)|(binary|boolean|integer|double|real|unset))\\s*(\\))"
969
+ },
970
+ {
971
+ "match": "(?i)\\b(array|real|double|float|int(eger)?|bool(ean)?|string|class|var|function|interface|trait|parent|self|object|mixed)\\b",
972
+ "name": "storage.type.php"
973
+ },
974
+ {
975
+ "match": "(?i)\\bconst\\b",
976
+ "name": "storage.type.const.php"
977
+ },
978
+ {
979
+ "captures": {
980
+ "1": {
981
+ "name": "storage.modifier.global.php"
982
+ },
983
+ "2": {
984
+ "name": "storage.modifier.inheritance.${2:/downcase}.php"
985
+ },
986
+ "3": {
987
+ "name": "storage.modifier.visibility.${3:/downcase}.php"
988
+ },
989
+ "4": {
990
+ "name": "storage.modifier.static.php"
991
+ }
992
+ },
993
+ "match": "(?i)\\b(?:(global)|(abstract|final)|(p(?:rivate|rotected|ublic))|(static))\\b",
994
+ "name": "storage.modifier.php"
995
+ },
996
+ {
997
+ "include": "#object"
998
+ },
999
+ {
1000
+ "match": ";",
1001
+ "name": "punctuation.terminator.expression.php"
1002
+ },
1003
+ {
1004
+ "match": ":",
1005
+ "name": "punctuation.terminator.statement.php"
1006
+ },
1007
+ {
1008
+ "include": "#heredoc"
1009
+ },
1010
+ {
1011
+ "include": "#numbers"
1012
+ },
1013
+ {
1014
+ "match": "(?i)\\bclone\\b",
1015
+ "name": "keyword.other.clone.php"
1016
+ },
1017
+ {
1018
+ "match": "\\.\\.\\.",
1019
+ "name": "keyword.operator.spread.php"
1020
+ },
1021
+ {
1022
+ "match": "\\.=?",
1023
+ "name": "keyword.operator.string.php"
1024
+ },
1025
+ {
1026
+ "match": "=>",
1027
+ "name": "keyword.operator.key.php"
1028
+ },
1029
+ {
1030
+ "captures": {
1031
+ "1": {
1032
+ "name": "keyword.operator.assignment.php"
1033
+ },
1034
+ "2": {
1035
+ "name": "storage.modifier.reference.php"
1036
+ },
1037
+ "3": {
1038
+ "name": "storage.modifier.reference.php"
1039
+ }
1040
+ },
1041
+ "match": "(?i)(=)(&)|(&)(?=[$_a-z])"
1042
+ },
1043
+ {
1044
+ "match": "@",
1045
+ "name": "keyword.operator.error-control.php"
1046
+ },
1047
+ {
1048
+ "match": "===?|!==?|<>",
1049
+ "name": "keyword.operator.comparison.php"
1050
+ },
1051
+ {
1052
+ "match": "(?:|[-+]|\\*\\*?|[%\\&/^|]|<<|>>|\\?\\?)=",
1053
+ "name": "keyword.operator.assignment.php"
1054
+ },
1055
+ {
1056
+ "match": "<=>?|>=|[<>]",
1057
+ "name": "keyword.operator.comparison.php"
1058
+ },
1059
+ {
1060
+ "match": "--|\\+\\+",
1061
+ "name": "keyword.operator.increment-decrement.php"
1062
+ },
1063
+ {
1064
+ "match": "[-+]|\\*\\*?|[%/]",
1065
+ "name": "keyword.operator.arithmetic.php"
1066
+ },
1067
+ {
1068
+ "match": "(?i)(!|&&|\\|\\|)|\\b(and|or|xor)\\b",
1069
+ "name": "keyword.operator.logical.php"
1070
+ },
1071
+ {
1072
+ "match": "(?i)\\bas\\b",
1073
+ "name": "keyword.operator.as.php"
1074
+ },
1075
+ {
1076
+ "include": "#function-call"
1077
+ },
1078
+ {
1079
+ "match": "<<|>>|[\\&^|~]",
1080
+ "name": "keyword.operator.bitwise.php"
1081
+ },
1082
+ {
1083
+ "begin": "(?i)\\b(instanceof)\\s+(?=[$\\\\_a-z])",
1084
+ "beginCaptures": {
1085
+ "1": {
1086
+ "name": "keyword.operator.type.php"
1087
+ }
1088
+ },
1089
+ "end": "(?i)(?=[^$0-9\\\\_a-z\\x7F-\\x{10FFFF}])",
1090
+ "patterns": [
1091
+ {
1092
+ "include": "#class-name"
1093
+ },
1094
+ {
1095
+ "include": "#variable-name"
1096
+ }
1097
+ ]
1098
+ },
1099
+ {
1100
+ "include": "#instantiation"
1101
+ },
1102
+ {
1103
+ "captures": {
1104
+ "1": {
1105
+ "name": "keyword.control.goto.php"
1106
+ },
1107
+ "2": {
1108
+ "name": "support.other.php"
1109
+ }
1110
+ },
1111
+ "match": "(?i)(goto)\\s+([_a-z\\x7F-\\x{10FFFF}][0-9_a-z\\x7F-\\x{10FFFF}]*)"
1112
+ },
1113
+ {
1114
+ "captures": {
1115
+ "1": {
1116
+ "name": "entity.name.goto-label.php"
1117
+ }
1118
+ },
1119
+ "match": "(?i)^\\s*([_a-z\\x7F-\\x{10FFFF}][0-9_a-z\\x7F-\\x{10FFFF}]*(?<!default|else))\\s*:(?!:)"
1120
+ },
1121
+ {
1122
+ "include": "#string-backtick"
1123
+ },
1124
+ {
1125
+ "include": "#ternary_shorthand"
1126
+ },
1127
+ {
1128
+ "include": "#null_coalescing"
1129
+ },
1130
+ {
1131
+ "include": "#ternary_expression"
1132
+ },
1133
+ {
1134
+ "begin": "\\{",
1135
+ "beginCaptures": {
1136
+ "0": {
1137
+ "name": "punctuation.definition.begin.bracket.curly.php"
1138
+ }
1139
+ },
1140
+ "end": "}|(?=\\?>)",
1141
+ "endCaptures": {
1142
+ "0": {
1143
+ "name": "punctuation.definition.end.bracket.curly.php"
1144
+ }
1145
+ },
1146
+ "patterns": [
1147
+ {
1148
+ "include": "$self"
1149
+ }
1150
+ ]
1151
+ },
1152
+ {
1153
+ "begin": "\\[",
1154
+ "beginCaptures": {
1155
+ "0": {
1156
+ "name": "punctuation.section.array.begin.php"
1157
+ }
1158
+ },
1159
+ "end": "]|(?=\\?>)",
1160
+ "endCaptures": {
1161
+ "0": {
1162
+ "name": "punctuation.section.array.end.php"
1163
+ }
1164
+ },
1165
+ "patterns": [
1166
+ {
1167
+ "include": "$self"
1168
+ }
1169
+ ]
1170
+ },
1171
+ {
1172
+ "begin": "\\(",
1173
+ "beginCaptures": {
1174
+ "0": {
1175
+ "name": "punctuation.definition.begin.bracket.round.php"
1176
+ }
1177
+ },
1178
+ "end": "\\)|(?=\\?>)",
1179
+ "endCaptures": {
1180
+ "0": {
1181
+ "name": "punctuation.definition.end.bracket.round.php"
1182
+ }
1183
+ },
1184
+ "patterns": [
1185
+ {
1186
+ "include": "$self"
1187
+ }
1188
+ ]
1189
+ },
1190
+ {
1191
+ "include": "#constants"
1192
+ },
1193
+ {
1194
+ "match": ",",
1195
+ "name": "punctuation.separator.delimiter.php"
1196
+ }
1197
+ ],
1198
+ "repository": {
1199
+ "attribute": {
1200
+ "begin": "#\\[",
1201
+ "end": "]",
1202
+ "name": "meta.attribute.php",
1203
+ "patterns": [
1204
+ {
1205
+ "match": ",",
1206
+ "name": "punctuation.separator.delimiter.php"
1207
+ },
1208
+ {
1209
+ "begin": "([0-9A-Z\\\\_a-z\\x7F-\\x{10FFFF}]+)\\s*(\\()",
1210
+ "beginCaptures": {
1211
+ "1": {
1212
+ "patterns": [
1213
+ {
1214
+ "include": "#attribute-name"
1215
+ }
1216
+ ]
1217
+ },
1218
+ "2": {
1219
+ "name": "punctuation.definition.arguments.begin.bracket.round.php"
1220
+ }
1221
+ },
1222
+ "end": "\\)",
1223
+ "endCaptures": {
1224
+ "0": {
1225
+ "name": "punctuation.definition.arguments.end.bracket.round.php"
1226
+ }
1227
+ },
1228
+ "patterns": [
1229
+ {
1230
+ "include": "#named-arguments"
1231
+ },
1232
+ {
1233
+ "include": "$self"
1234
+ }
1235
+ ]
1236
+ },
1237
+ {
1238
+ "include": "#attribute-name"
1239
+ }
1240
+ ]
1241
+ },
1242
+ "attribute-name": {
1243
+ "patterns": [
1244
+ {
1245
+ "begin": "(?i)(?=\\\\?[_a-z\\x7F-\\x{10FFFF}][0-9_a-z\\x7F-\\x{10FFFF}]*\\\\)",
1246
+ "end": "(?i)([_a-z\\x7F-\\x{10FFFF}][0-9_a-z\\x7F-\\x{10FFFF}]*)?(?![0-9\\\\_a-z\\x7F-\\x{10FFFF}])",
1247
+ "endCaptures": {
1248
+ "1": {
1249
+ "name": "support.attribute.php"
1250
+ }
1251
+ },
1252
+ "patterns": [
1253
+ {
1254
+ "include": "#namespace"
1255
+ }
1256
+ ]
1257
+ },
1258
+ {
1259
+ "captures": {
1260
+ "1": {
1261
+ "name": "punctuation.separator.inheritance.php"
1262
+ }
1263
+ },
1264
+ "match": "(?i)(\\\\)?\\b(Attribute|SensitiveParameter|AllowDynamicProperties|ReturnTypeWillChange|Override|Deprecated)\\b",
1265
+ "name": "support.attribute.builtin.php"
1266
+ },
1267
+ {
1268
+ "begin": "(?i)(?=[\\\\_a-z\\x7F-\\x{10FFFF}])",
1269
+ "end": "(?i)([_a-z\\x7F-\\x{10FFFF}][0-9_a-z\\x7F-\\x{10FFFF}]*)?(?![0-9\\\\_a-z\\x7F-\\x{10FFFF}])",
1270
+ "endCaptures": {
1271
+ "1": {
1272
+ "name": "support.attribute.php"
1273
+ }
1274
+ },
1275
+ "patterns": [
1276
+ {
1277
+ "include": "#namespace"
1278
+ }
1279
+ ]
1280
+ }
1281
+ ]
1282
+ },
1283
+ "class-builtin": {
1284
+ "patterns": [
1285
+ {
1286
+ "captures": {
1287
+ "1": {
1288
+ "name": "punctuation.separator.inheritance.php"
1289
+ }
1290
+ },
1291
+ "match": "(?i)(\\\\)?\\b(Attribute|(A(?:PC|ppend))Iterator|Array(Access|Iterator|Object)|Bad(Function|Method)CallException|(Ca(?:ching|llbackFilter))Iterator|Collator|Collectable|Cond|Countable|CURLFile|Date(Interval|Period|Time(Interface|Immutable|Zone)?)?|Directory(Iterator)?|DomainException|DOM(Attr|CdataSection|CharacterData|Comment|Document(Fragment)?|Element|EntityReference|Implementation|NamedNodeMap|Node(list)?|ProcessingInstruction|Text|XPath)|(Error)?Exception|EmptyIterator|finfo|Ev(Check|Child|Embed|Fork|Idle|Io|Loop|Periodic|Prepare|Signal|Stat|Timer|Watcher)?|Event(Base|Buffer(Event)?|SslContext|Http(Request|Connection)?|Config|DnsBase|Util|Listener)?|FANNConnection|(Fil(?:ter|esystem))Iterator|Gender\\\\Gender|GlobIterator|Gmagick(Draw|Pixel)?|Haru(Annotation|Destination|Doc|Encoder|Font|Image|Outline|Page)|Http(((?:In|De)flate)?Stream|Message|Request(Pool)?|Response|QueryString)|HRTime\\\\(PerformanceCounter|StopWatch)|Intl(Calendar|((CodePoint|RuleBased)?Break|Parts)?Iterator|DateFormatter|TimeZone)|Imagick(Draw|Pixel(Iterator)?)?|InfiniteIterator|InvalidArgumentException|Iterator(Aggregate|Iterator)?|JsonSerializable|KTaglib_(MPEG_(File|AudioProperties)|Tag|ID3v2_(Tag|(AttachedPicture)?Frame))|Lapack|(L(?:ength|ocale|ogic))Exception|LimitIterator|Lua(Closure)?|Mongo(BinData|Client|Code|Collection|CommandCursor|Cursor(Exception)?|Date|DB(Ref)?|DeleteBatch|Grid(FS(Cursor|File)?)|Id|InsertBatch|Int(32|64)|Log|Pool|Regex|ResultException|Timestamp|UpdateBatch|Write(Batch|ConcernException))?|Memcache(d)?|MessageFormatter|MultipleIterator|Mutex|mysqli(_(driver|stmt|warning|result))?|MysqlndUh(Connection|PreparedStatement)|NoRewindIterator|Normalizer|NumberFormatter|OCI-(Collection|Lob)|OuterIterator|(O(?:utOf(Bounds|Range)|verflow))Exception|ParentIterator|PDO(Statement)?|Phar(Data|FileInfo)?|php_user_filter|Pool|QuickHash(Int(S(?:et|tringHash))|StringIntHash)|Recursive(Array|Caching|Directory|Fallback|Filter|Iterator|Regex|Tree)?Iterator|Reflection(Attribute|Class(Constant)?|Constant|Enum((?:Unit|Backed)Case)?|Fiber|Function(Abstract)?|Generator|(Named|Union|Intersection)?Type|Method|Object|Parameter|Property|Reference|(Zend)?Extension)?|RangeException|Reflector|RegexIterator|ResourceBundle|RuntimeException|RRD(Creator|Graph|Updater)|SAM(Connection|Message)|SCA(_((?:Soap|Local)Proxy))?|SDO_(DAS_(ChangeSummary|Data(Factory|Object)|Relational|Setting|XML(_Document)?)|Data(Factory|Object)|Exception|List|Model_(Property|ReflectionDataObject|Type)|Sequence)|SeekableIterator|Serializable|SessionHandler(Interface)?|SimpleXML(Iterator|Element)|SNMP|Soap(Client|Fault|Header|Param|Server|Var)|SphinxClient|Spoofchecker|Spl(DoublyLinkedList|Enum|File(Info|Object)|FixedArray|(M(?:ax|in))?Heap|Observer|ObjectStorage|(Priority)?Queue|Stack|Subject|Type|TempFileObject)|SQLite(3(Result|Stmt)?|Database|Result|Unbuffered)|stdClass|streamWrapper|SVM(Model)?|Swish(Result(s)?|Search)?|Sync(Event|Mutex|ReaderWriter|Semaphore)|Thread(ed)?|tidy(Node)?|TokyoTyrant(Table|Iterator|Query)?|Transliterator|Traversable|UConverter|(Un(?:derflow|expectedValue))Exception|V8Js(Exception)?|Varnish(Admin|Log|Stat)|Worker|Weak(Map|Ref)|XML(Diff\\\\(Base|DOM|File|Memory)|Reader|Writer)|XsltProcessor|Yaf_(Route_(Interface|Map|Regex|Rewrite|Simple|Supervar)|Action_Abstract|Application|Config_(Simple|Ini|Abstract)|Controller_Abstract|Dispatcher|Exception|Loader|Plugin_Abstract|Registry|Request_(Abstract|Simple|Http)|Response_Abstract|Router|Session|View_(Simple|Interface))|Yar_(Client(_Exception)?|Concurrent_Client|Server(_Exception)?)|ZipArchive|ZMQ(Context|Device|Poll|Socket)?)\\b",
1292
+ "name": "support.class.builtin.php"
1293
+ }
1294
+ ]
1295
+ },
1296
+ "class-constant": {
1297
+ "patterns": [
1298
+ {
1299
+ "captures": {
1300
+ "1": {
1301
+ "name": "storage.type.const.php"
1302
+ },
1303
+ "2": {
1304
+ "patterns": [
1305
+ {
1306
+ "include": "#php-types"
1307
+ }
1308
+ ]
1309
+ },
1310
+ "3": {
1311
+ "name": "constant.other.php"
1312
+ }
1313
+ },
1314
+ "match": "(?i)\\b(const)\\s+(?:((?:\\?\\s*)?[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+|(?:[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+|\\(\\s*[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+(?:\\s*&\\s*[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+)+\\s*\\))(?:\\s*[\\&|]\\s*(?:[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+|\\(\\s*[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+(?:\\s*&\\s*[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+)+\\s*\\)))+)\\s+)?([_a-z\\x7F-\\x{10FFFF}][0-9_a-z\\x7F-\\x{10FFFF}]*)"
1315
+ }
1316
+ ]
1317
+ },
1318
+ "class-extends": {
1319
+ "patterns": [
1320
+ {
1321
+ "begin": "(?i)(extends)\\s+",
1322
+ "beginCaptures": {
1323
+ "1": {
1324
+ "name": "storage.modifier.extends.php"
1325
+ }
1326
+ },
1327
+ "end": "(?i)(?=[^0-9A-Z\\\\_a-z\\x7F-\\x{10FFFF}])",
1328
+ "patterns": [
1329
+ {
1330
+ "include": "#comments"
1331
+ },
1332
+ {
1333
+ "include": "#inheritance-single"
1334
+ }
1335
+ ]
1336
+ }
1337
+ ]
1338
+ },
1339
+ "class-implements": {
1340
+ "patterns": [
1341
+ {
1342
+ "begin": "(?i)(implements)\\s+",
1343
+ "beginCaptures": {
1344
+ "1": {
1345
+ "name": "storage.modifier.implements.php"
1346
+ }
1347
+ },
1348
+ "end": "(?i)(?=\\{)",
1349
+ "patterns": [
1350
+ {
1351
+ "include": "#comments"
1352
+ },
1353
+ {
1354
+ "match": ",",
1355
+ "name": "punctuation.separator.classes.php"
1356
+ },
1357
+ {
1358
+ "include": "#inheritance-single"
1359
+ }
1360
+ ]
1361
+ }
1362
+ ]
1363
+ },
1364
+ "class-name": {
1365
+ "patterns": [
1366
+ {
1367
+ "begin": "(?i)(?=\\\\?[_a-z\\x7F-\\x{10FFFF}][0-9_a-z\\x7F-\\x{10FFFF}]*\\\\)",
1368
+ "end": "(?i)([_a-z\\x7F-\\x{10FFFF}][0-9_a-z\\x7F-\\x{10FFFF}]*)?(?![0-9\\\\_a-z\\x7F-\\x{10FFFF}])",
1369
+ "endCaptures": {
1370
+ "1": {
1371
+ "name": "support.class.php"
1372
+ }
1373
+ },
1374
+ "patterns": [
1375
+ {
1376
+ "include": "#namespace"
1377
+ }
1378
+ ]
1379
+ },
1380
+ {
1381
+ "include": "#class-builtin"
1382
+ },
1383
+ {
1384
+ "begin": "(?i)(?=[\\\\_a-z\\x7F-\\x{10FFFF}])",
1385
+ "end": "(?i)([_a-z\\x7F-\\x{10FFFF}][0-9_a-z\\x7F-\\x{10FFFF}]*)?(?![0-9\\\\_a-z\\x7F-\\x{10FFFF}])",
1386
+ "endCaptures": {
1387
+ "1": {
1388
+ "name": "support.class.php"
1389
+ }
1390
+ },
1391
+ "patterns": [
1392
+ {
1393
+ "include": "#namespace"
1394
+ }
1395
+ ]
1396
+ }
1397
+ ]
1398
+ },
1399
+ "comments": {
1400
+ "patterns": [
1401
+ {
1402
+ "begin": "/\\*\\*(?=\\s)",
1403
+ "beginCaptures": {
1404
+ "0": {
1405
+ "name": "punctuation.definition.comment.php"
1406
+ }
1407
+ },
1408
+ "end": "\\*/",
1409
+ "endCaptures": {
1410
+ "0": {
1411
+ "name": "punctuation.definition.comment.php"
1412
+ }
1413
+ },
1414
+ "name": "comment.block.documentation.phpdoc.php",
1415
+ "patterns": [
1416
+ {
1417
+ "include": "#php_doc"
1418
+ }
1419
+ ]
1420
+ },
1421
+ {
1422
+ "begin": "/\\*",
1423
+ "captures": {
1424
+ "0": {
1425
+ "name": "punctuation.definition.comment.php"
1426
+ }
1427
+ },
1428
+ "end": "\\*/",
1429
+ "name": "comment.block.php"
1430
+ },
1431
+ {
1432
+ "begin": "(^\\s+)?(?=//)",
1433
+ "beginCaptures": {
1434
+ "1": {
1435
+ "name": "punctuation.whitespace.comment.leading.php"
1436
+ }
1437
+ },
1438
+ "end": "(?!\\G)",
1439
+ "patterns": [
1440
+ {
1441
+ "begin": "//",
1442
+ "beginCaptures": {
1443
+ "0": {
1444
+ "name": "punctuation.definition.comment.php"
1445
+ }
1446
+ },
1447
+ "end": "\\n|(?=\\?>)",
1448
+ "name": "comment.line.double-slash.php"
1449
+ }
1450
+ ]
1451
+ },
1452
+ {
1453
+ "begin": "(^\\s+)?(?=#)(?!#\\[)",
1454
+ "beginCaptures": {
1455
+ "1": {
1456
+ "name": "punctuation.whitespace.comment.leading.php"
1457
+ }
1458
+ },
1459
+ "end": "(?!\\G)",
1460
+ "patterns": [
1461
+ {
1462
+ "begin": "#",
1463
+ "beginCaptures": {
1464
+ "0": {
1465
+ "name": "punctuation.definition.comment.php"
1466
+ }
1467
+ },
1468
+ "end": "\\n|(?=\\?>)",
1469
+ "name": "comment.line.number-sign.php"
1470
+ }
1471
+ ]
1472
+ }
1473
+ ]
1474
+ },
1475
+ "constants": {
1476
+ "patterns": [
1477
+ {
1478
+ "match": "(?i)\\b(TRUE|FALSE|NULL|__(FILE|DIR|FUNCTION|CLASS|METHOD|LINE|NAMESPACE)__|ON|OFF|YES|NO|NL|BR|TAB)\\b",
1479
+ "name": "constant.language.php"
1480
+ },
1481
+ {
1482
+ "captures": {
1483
+ "1": {
1484
+ "name": "punctuation.separator.inheritance.php"
1485
+ }
1486
+ },
1487
+ "match": "(\\\\)?\\b(DEFAULT_INCLUDE_PATH|EAR_(INSTALL|EXTENSION)_DIR|E_(ALL|COMPILE_(ERROR|WARNING)|CORE_(ERROR|WARNING)|DEPRECATED|ERROR|NOTICE|PARSE|RECOVERABLE_ERROR|STRICT|USER_(DEPRECATED|ERROR|NOTICE|WARNING)|WARNING)|PHP_(ROUND_HALF_(DOWN|EVEN|ODD|UP)|(MAJOR|MINOR|RELEASE)_VERSION|MAXPATHLEN|BINDIR|SHLIB_SUFFIX|SYSCONFDIR|SAPI|CONFIG_FILE_(PATH|SCAN_DIR)|INT_(MAX|SIZE)|ZTS|OS|OUTPUT_HANDLER_(START|CONT|END)|DEBUG|DATADIR|URL_(SCHEME|HOST|USER|PORT|PASS|PATH|QUERY|FRAGMENT)|PREFIX|EXTRA_VERSION|EXTENSION_DIR|EOL|VERSION(_ID)?|WINDOWS_(NT_(SERVER|DOMAIN_CONTROLLER|WORKSTATION)|VERSION_(M(?:AJOR|INOR))|BUILD|SUITEMASK|SP_(M(?:AJOR|INOR))|PRODUCTTYPE|PLATFORM)|LIBDIR|LOCALSTATEDIR)|STD(ERR|IN|OUT)|ZEND_(DEBUG_BUILD|THREAD_SAFE))\\b",
1488
+ "name": "support.constant.core.php"
1489
+ },
1490
+ {
1491
+ "captures": {
1492
+ "1": {
1493
+ "name": "punctuation.separator.inheritance.php"
1494
+ }
1495
+ },
1496
+ "match": "(\\\\)?\\b(__COMPILER_HALT_OFFSET__|AB(MON_([1-9]|10|11|12)|DAY[1-7])|AM_STR|ASSERT_(ACTIVE|BAIL|CALLBACK_QUIET_EVAL|WARNING)|ALT_DIGITS|CASE_(UPPER|LOWER)|CHAR_MAX|CONNECTION_(ABORTED|NORMAL|TIMEOUT)|CODESET|COUNT_(NORMAL|RECURSIVE)|CREDITS_(ALL|DOCS|FULLPAGE|GENERAL|GROUP|MODULES|QA|SAPI)|CRYPT_(BLOWFISH|EXT_DES|MD5|SHA(256|512)|SALT_LENGTH|STD_DES)|CURRENCY_SYMBOL|D_(T_)?FMT|DATE_(ATOM|COOKIE|ISO8601|RFC(822|850|1036|1123|2822|3339)|RSS|W3C)|DAY_[1-7]|DECIMAL_POINT|DIRECTORY_SEPARATOR|ENT_(COMPAT|IGNORE|(NO)?QUOTES)|EXTR_(IF_EXISTS|OVERWRITE|PREFIX_(ALL|IF_EXISTS|INVALID|SAME)|REFS|SKIP)|ERA(_(D_(T_)?FMT)|T_FMT|YEAR)?|FRAC_DIGITS|GROUPING|HASH_HMAC|HTML_(ENTITIES|SPECIALCHARS)|INF|INFO_(ALL|CREDITS|CONFIGURATION|ENVIRONMENT|GENERAL|LICENSEMODULES|VARIABLES)|INI_(ALL|CANNER_(NORMAL|RAW)|PERDIR|SYSTEM|USER)|INT_(CURR_SYMBOL|FRAC_DIGITS)|LC_(ALL|COLLATE|CTYPE|MESSAGES|MONETARY|NUMERIC|TIME)|LOCK_(EX|NB|SH|UN)|LOG_(ALERT|AUTH(PRIV)?|CRIT|CRON|CONS|DAEMON|DEBUG|EMERG|ERR|INFO|LOCAL[1-7]|LPR|KERN|MAIL|NEWS|NODELAY|NOTICE|NOWAIT|ODELAY|PID|PERROR|WARNING|SYSLOG|UCP|USER)|M_(1_PI|SQRT(1_2|[23]|PI)|2_(SQRT)?PI|PI(_([24]))?|E(ULER)?|LN(10|2|PI)|LOG(10|2)E)|MON_([1-9]|10|11|12|DECIMAL_POINT|GROUPING|THOUSANDS_SEP)|N_(CS_PRECEDES|SEP_BY_SPACE|SIGN_POSN)|NAN|NEGATIVE_SIGN|NO(EXPR|STR)|P_(CS_PRECEDES|SEP_BY_SPACE|SIGN_POSN)|PM_STR|POSITIVE_SIGN|PATH(_SEPARATOR|INFO_(EXTENSION|(BASE|DIR|FILE)NAME))|RADIXCHAR|SEEK_(CUR|END|SET)|SORT_(ASC|DESC|LOCALE_STRING|REGULAR|STRING)|STR_PAD_(BOTH|LEFT|RIGHT)|T_FMT(_AMPM)?|THOUSEP|THOUSANDS_SEP|UPLOAD_ERR_(CANT_WRITE|EXTENSION|(FORM|INI)_SIZE|NO_(FILE|TMP_DIR)|OK|PARTIAL)|YES(EXPR|STR))\\b",
1497
+ "name": "support.constant.std.php"
1498
+ },
1499
+ {
1500
+ "captures": {
1501
+ "1": {
1502
+ "name": "punctuation.separator.inheritance.php"
1503
+ }
1504
+ },
1505
+ "match": "(\\\\)?\\b(GLOB_(MARK|BRACE|NO(SORT|CHECK|ESCAPE)|ONLYDIR|ERR|AVAILABLE_FLAGS)|XML_(SAX_IMPL|(DTD|DOCUMENT(_(FRAG|TYPE))?|HTML_DOCUMENT|NOTATION|NAMESPACE_DECL|PI|COMMENT|DATA_SECTION|TEXT)_NODE|OPTION_(SKIP_(TAGSTART|WHITE)|CASE_FOLDING|TARGET_ENCODING)|ERROR_((BAD_CHAR|(ATTRIBUTE_EXTERNAL|BINARY|PARAM|RECURSIVE)_ENTITY)_REF|MISPLACED_XML_PI|SYNTAX|NONE|NO_(MEMORY|ELEMENTS)|TAG_MISMATCH|INCORRECT_ENCODING|INVALID_TOKEN|DUPLICATE_ATTRIBUTE|UNCLOSED_(CDATA_SECTION|TOKEN)|UNDEFINED_ENTITY|UNKNOWN_ENCODING|JUNK_AFTER_DOC_ELEMENT|PARTIAL_CHAR|EXTERNAL_ENTITY_HANDLING|ASYNC_ENTITY)|ENTITY_(((REF|DECL)_)?NODE)|ELEMENT(_DECL)?_NODE|LOCAL_NAMESPACE|ATTRIBUTE_(N(?:MTOKEN(S)?|OTATION|ODE))|CDATA|ID(REF(S)?)?|DECL_NODE|ENTITY|ENUMERATION)|MHASH_(RIPEMD(128|160|256|320)|GOST|MD([245])|SHA(1|224|256|384|512)|SNEFRU256|HAVAL(128|160|192|224|256)|CRC23(B)?|TIGER(1(?:28|60))?|WHIRLPOOL|ADLER32)|MYSQL_(BOTH|NUM|CLIENT_(SSL|COMPRESS|IGNORE_SPACE|INTERACTIVE|ASSOC))|MYSQLI_(REPORT_(STRICT|INDEX|OFF|ERROR|ALL)|REFRESH_(GRANT|MASTER|BACKUP_LOG|STATUS|SLAVE|HOSTS|THREADS|TABLES|LOG)|READ_DEFAULT_(FILE|GROUP)|(GROUP|MULTIPLE_KEY|BINARY|BLOB)_FLAG|BOTH|STMT_ATTR_(CURSOR_TYPE|UPDATE_MAX_LENGTH|PREFETCH_ROWS)|STORE_RESULT|SERVER_QUERY_(NO_((GOOD_)?INDEX_USED)|WAS_SLOW)|SET_(CHARSET_NAME|FLAG)|NO_(D(?:EFAULT_VALUE_FLAG|ATA))|NOT_NULL_FLAG|NUM(_FLAG)?|CURSOR_TYPE_(READ_ONLY|SCROLLABLE|NO_CURSOR|FOR_UPDATE)|CLIENT_(SSL|NO_SCHEMA|COMPRESS|IGNORE_SPACE|INTERACTIVE|FOUND_ROWS)|TYPE_(GEOMETRY|((MEDIUM|LONG|TINY)_)?BLOB|BIT|SHORT|STRING|SET|YEAR|NULL|NEWDECIMAL|NEWDATE|CHAR|TIME(STAMP)?|TINY|INT24|INTERVAL|DOUBLE|DECIMAL|DATE(TIME)?|ENUM|VAR_STRING|FLOAT|LONG(LONG)?)|TIME_STAMP_FLAG|INIT_COMMAND|ZEROFILL_FLAG|ON_UPDATE_NOW_FLAG|OPT_(NET_((CMD|READ)_BUFFER_SIZE)|CONNECT_TIMEOUT|INT_AND_FLOAT_NATIVE|LOCAL_INFILE)|DEBUG_TRACE_ENABLED|DATA_TRUNCATED|USE_RESULT|(ENUM|(PART|PRI|UNIQUE)_KEY|UNSIGNED)_FLAG|ASSOC|ASYNC|AUTO_INCREMENT_FLAG)|MCRYPT_(RC([26])|RIJNDAEL_(128|192|256)|RAND|GOST|XTEA|MODE_(STREAM|NOFB|CBC|CFB|OFB|ECB)|MARS|BLOWFISH(_COMPAT)?|SERPENT|SKIPJACK|SAFER(64|128|PLUS)|CRYPT|CAST_(128|256)|TRIPLEDES|THREEWAY|TWOFISH|IDEA|(3)?DES|DECRYPT|DEV_(U)?RANDOM|PANAMA|ENCRYPT|ENIGNA|WAKE|LOKI97|ARCFOUR(_IV)?)|STREAM_(REPORT_ERRORS|MUST_SEEK|MKDIR_RECURSIVE|BUFFER_(NONE|FULL|LINE)|SHUT_(RD)?WR|SOCK_(RDM|RAW|STREAM|SEQPACKET|DGRAM)|SERVER_(BIND|LISTEN)|NOTIFY_(REDIRECTED|RESOLVE|MIME_TYPE_IS|SEVERITY_(INFO|ERR|WARN)|COMPLETED|CONNECT|PROGRESS|FILE_SIZE_IS|FAILURE|AUTH_(RE(?:QUIRED|SULT)))|CRYPTO_METHOD_((SSLv2(3)?|SSLv3|TLS)_(CLIENT|SERVER))|CLIENT_((ASYNC_)?CONNECT|PERSISTENT)|CAST_(AS_STREAM|FOR_SELECT)|(I(?:GNORE|S))_URL|IPPROTO_(RAW|TCP|ICMP|IP|UDP)|OOB|OPTION_(READ_(BUFFER|TIMEOUT)|BLOCKING|WRITE_BUFFER)|URL_STAT_(LINK|QUIET)|USE_PATH|PEEK|PF_(INET(6)?|UNIX)|ENFORCE_SAFE_MODE|FILTER_(ALL|READ|WRITE))|SUNFUNCS_RET_(DOUBLE|STRING|TIMESTAMP)|SQLITE_(READONLY|ROW|MISMATCH|MISUSE|BOTH|BUSY|SCHEMA|NOMEM|NOTFOUND|NOTADB|NOLFS|NUM|CORRUPT|CONSTRAINT|CANTOPEN|TOOBIG|INTERRUPT|INTERNAL|IOERR|OK|DONE|PROTOCOL|PERM|ERROR|EMPTY|FORMAT|FULL|LOCKED|ABORT|ASSOC|AUTH)|SQLITE3_(BOTH|BLOB|NUM|NULL|TEXT|INTEGER|OPEN_(READ(ONLY|WRITE)|CREATE)|FLOAT_ASSOC)|CURL(M_(BAD_((EASY)?HANDLE)|CALL_MULTI_PERFORM|INTERNAL_ERROR|OUT_OF_MEMORY|OK)|MSG_DONE|SSH_AUTH_(HOST|NONE|DEFAULT|PUBLICKEY|PASSWORD|KEYBOARD)|CLOSEPOLICY_(SLOWEST|CALLBACK|OLDEST|LEAST_(RECENTLY_USED|TRAFFIC)|INFO_(REDIRECT_(COUNT|TIME)|REQUEST_SIZE|SSL_VERIFYRESULT|STARTTRANSFER_TIME|(S(?:IZE|PEED))_((?:DOWN|UP)LOAD)|HTTP_CODE|HEADER_(OUT|SIZE)|NAMELOOKUP_TIME|CONNECT_TIME|CONTENT_(TYPE|LENGTH_((?:DOWN|UP)LOAD))|CERTINFO|TOTAL_TIME|PRIVATE|PRETRANSFER_TIME|EFFECTIVE_URL|FILETIME)|OPT_(RESUME_FROM|RETURNTRANSFER|REDIR_PROTOCOLS|REFERER|READ(DATA|FUNCTION)|RANGE|RANDOM_FILE|MAX(CONNECTS|REDIRS)|BINARYTRANSFER|BUFFERSIZE|SSH_(HOST_PUBLIC_KEY_MD5|(P(?:RIVATE|UBLIC))_KEYFILE)|AUTH_TYPES)|SSL(CERT(TYPE|PASSWD)?|ENGINE(_DEFAULT)?|VERSION|KEY(TYPE|PASSWD)?)|SSL_(CIPHER_LIST|VERIFY(HOST|PEER))|STDERR|HTTP(GET|HEADER|200ALIASES|_VERSION|PROXYTUNNEL|AUTH)|HEADER(FUNCTION)?|NO(BODY|SIGNAL|PROGRESS)|NETRC|CRLF|CONNECTTIMEOUT(_MS)?|COOKIE(SESSION|JAR|FILE)?|CUSTOMREQUEST|CERTINFO|CLOSEPOLICY|CA(INFO|PATH)|TRANSFERTEXT|TCP_NODELAY|TIME(CONDITION|OUT(_MS)?|VALUE)|INTERFACE|INFILE(SIZE)?|IPRESOLVE|DNS_(CACHE_TIMEOUT|USE_GLOBAL_CACHE)|URL|USER(AGENT|PWD)|UNRESTRICTED_AUTH|UPLOAD|PRIVATE|PROGRESSFUNCTION|PROXY(TYPE|USERPWD|PORT|AUTH)?|PROTOCOLS|PORT|POST(REDIR|QUOTE|FIELDS)?|PUT|EGDSOCKET|ENCODING|VERBOSE|KRB4LEVEL|KEYPASSWD|QUOTE|FRESH_CONNECT|FTP(APPEND|LISTONLY|PORT|SSLAUTH)|FTP_(SSL|SKIP_PASV_IP|CREATE_MISSING_DIRS|USE_EP(RT|SV)|FILEMETHOD)|FILE(TIME)?|FORBID_REUSE|FOLLOWLOCATION|FAILONERROR|WRITE(FUNCTION|HEADER)|LOW_SPEED_(LIMIT|TIME)|AUTOREFERER)|PROXY_(HTTP|SOCKS([45]))|PROTO_(SCP|SFTP|HTTP(S)?|TELNET|TFTP|DICT|FTP(S)?|FILE|LDAP(S)?|ALL)|E_((RE(?:CV|AD))_ERROR|GOT_NOTHING|MALFORMAT_USER|BAD_(CONTENT_ENCODING|CALLING_ORDER|PASSWORD_ENTERED|FUNCTION_ARGUMENT)|SSH|SSL_(CIPHER|CONNECT_ERROR|CERTPROBLEM|CACERT|PEER_CERTIFICATE|ENGINE_(NOTFOUND|SETFAILED))|SHARE_IN_USE|SEND_ERROR|HTTP_(RANGE_ERROR|NOT_FOUND|PORT_FAILED|POST_ERROR)|COULDNT_(RESOLVE_(HOST|PROXY)|CONNECT)|TOO_MANY_REDIRECTS|TELNET_OPTION_SYNTAX|OBSOLETE|OUT_OF_MEMORY|OPERATION|TIMEOUTED|OK|URL_MALFORMAT(_USER)?|UNSUPPORTED_PROTOCOL|UNKNOWN_TELNET_OPTION|PARTIAL_FILE|FTP_(BAD_DOWNLOAD_RESUME|SSL_FAILED|COULDNT_(RETR_FILE|GET_SIZE|STOR_FILE|SET_(BINARY|ASCII)|USE_REST)|CANT_(GET_HOST|RECONNECT)|USER_PASSWORD_INCORRECT|PORT_FAILED|QUOTE_ERROR|WRITE_ERROR|WEIRD_((PASS|PASV|SERVER|USER)_REPLY|227_FORMAT)|ACCESS_DENIED)|FILESIZE_EXCEEDED|FILE_COULDNT_READ_FILE|FUNCTION_NOT_FOUND|FAILED_INIT|WRITE_ERROR|LIBRARY_NOT_FOUND|LDAP_(SEARCH_FAILED|CANNOT_BIND|INVALID_URL)|ABORTED_BY_CALLBACK)|VERSION_NOW|FTP(METHOD_(MULTI|SINGLE|NO)CWD|SSL_(ALL|NONE|CONTROL|TRY)|AUTH_(DEFAULT|SSL|TLS))|AUTH_(ANY(SAFE)?|BASIC|DIGEST|GSSNEGOTIATE|NTLM))|CURL_(HTTP_VERSION_(1_([01])|NONE)|NETRC_(REQUIRED|IGNORED|OPTIONAL)|TIMECOND_(IF(UN)?MODSINCE|LASTMOD)|IPRESOLVE_(V([46])|WHATEVER)|VERSION_(SSL|IPV6|KERBEROS4|LIBZ))|IMAGETYPE_(GIF|XBM|BMP|SWF|COUNT|TIFF_(MM|II)|ICO|IFF|UNKNOWN|JB2|JPX|JP2|JPC|JPEG(2000)?|PSD|PNG|WBMP)|INPUT_(REQUEST|GET|SERVER|SESSION|COOKIE|POST|ENV)|ICONV_(MIME_DECODE_(STRICT|CONTINUE_ON_ERROR)|IMPL|VERSION)|DNS_(MX|SRV|SOA|HINFO|NS|NAPTR|CNAME|TXT|PTR|ANY|ALL|AAAA|A(6)?)|DOM(STRING_SIZE_ERR)|DOM_((SYNTAX|HIERARCHY_REQUEST|NO_((?:MODIFICATION|DATA)_ALLOWED)|NOT_(FOUND|SUPPORTED)|NAMESPACE|INDEX_SIZE|USE_ATTRIBUTE|VALID_(MODIFICATION|STATE|CHARACTER|ACCESS)|PHP|VALIDATION|WRONG_DOCUMENT)_ERR)|JSON_(HEX_(TAG|QUOT|AMP|APOS)|NUMERIC_CHECK|ERROR_(SYNTAX|STATE_MISMATCH|NONE|CTRL_CHAR|DEPTH|UTF8)|FORCE_OBJECT)|PREG_((D_UTF8(_OFFSET)?|NO|INTERNAL|(BACKTRACK|RECURSION)_LIMIT)_ERROR|GREP_INVERT|SPLIT_(NO_EMPTY|(DELIM|OFFSET)_CAPTURE)|SET_ORDER|OFFSET_CAPTURE|PATTERN_ORDER)|PSFS_(PASS_ON|ERR_FATAL|FEED_ME|FLAG_(NORMAL|FLUSH_(CLOSE|INC)))|PCRE_VERSION|POSIX_(([FRWX])_OK|S_IF(REG|BLK|SOCK|CHR|IFO))|FNM_(NOESCAPE|CASEFOLD|PERIOD|PATHNAME)|FILTER_(REQUIRE_(SCALAR|ARRAY)|NULL_ON_FAILURE|CALLBACK|DEFAULT|UNSAFE_RAW|SANITIZE_(MAGIC_QUOTES|STRING|STRIPPED|SPECIAL_CHARS|NUMBER_(INT|FLOAT)|URL|EMAIL|ENCODED|FULL_SPCIAL_CHARS)|VALIDATE_(REGEXP|BOOLEAN|INT|IP|URL|EMAIL|FLOAT)|FORCE_ARRAY|FLAG_(SCHEME_REQUIRED|STRIP_(BACKTICK|HIGH|LOW)|HOST_REQUIRED|NONE|NO_(RES|PRIV)_RANGE|ENCODE_QUOTES|IPV([46])|PATH_REQUIRED|EMPTY_STRING_NULL|ENCODE_(HIGH|LOW|AMP)|QUERY_REQUIRED|ALLOW_(SCIENTIFIC|HEX|THOUSAND|OCTAL|FRACTION)))|FILE_(BINARY|SKIP_EMPTY_LINES|NO_DEFAULT_CONTEXT|TEXT|IGNORE_NEW_LINES|USE_INCLUDE_PATH|APPEND)|FILEINFO_(RAW|MIME(_(ENCODING|TYPE))?|SYMLINK|NONE|CONTINUE|DEVICES|PRESERVE_ATIME)|FORCE_(DEFLATE|GZIP)|LIBXML_(XINCLUDE|NSCLEAN|NO(XMLDECL|BLANKS|NET|CDATA|ERROR|EMPTYTAG|ENT|WARNING)|COMPACT|DTD(VALID|LOAD|ATTR)|((DOTTED|LOADED)_)?VERSION|PARSEHUGE|ERR_(NONE|ERROR|FATAL|WARNING)))\\b",
1506
+ "name": "support.constant.ext.php"
1507
+ },
1508
+ {
1509
+ "captures": {
1510
+ "1": {
1511
+ "name": "punctuation.separator.inheritance.php"
1512
+ }
1513
+ },
1514
+ "match": "(\\\\)?\\b(T_(RETURN|REQUIRE(_ONCE)?|GOTO|GLOBAL|(MINUS|MOD|MUL|XOR)_EQUAL|METHOD_C|ML_COMMENT|BREAK|BOOL_CAST|BOOLEAN_(AND|OR)|BAD_CHARACTER|SR(_EQUAL)?|STRING(_CAST|VARNAME)?|START_HEREDOC|STATIC|SWITCH|SL(_EQUAL)?|HALT_COMPILER|NS_(C|SEPARATOR)|NUM_STRING|NEW|NAMESPACE|CHARACTER|COMMENT|CONSTANT(_ENCAPSED_STRING)?|CONCAT_EQUAL|CONTINUE|CURLY_OPEN|CLOSE_TAG|CLONE|CLASS(_C)?|CASE|CATCH|TRY|THROW|IMPLEMENTS|ISSET|IS_((GREATER|SMALLER)_OR_EQUAL|(NOT_)?(IDENTICAL|EQUAL))|INSTANCEOF|INCLUDE(_ONCE)?|INC|INT_CAST|INTERFACE|INLINE_HTML|IF|OR_EQUAL|OBJECT_(CAST|OPERATOR)|OPEN_TAG(_WITH_ECHO)?|OLD_FUNCTION|DNUMBER|DIR|DIV_EQUAL|DOC_COMMENT|DOUBLE_(ARROW|CAST|COLON)|DOLLAR_OPEN_CURLY_BRACES|DO|DEC|DECLARE|DEFAULT|USE|UNSET(_CAST)?|PRINT|PRIVATE|PROTECTED|PUBLIC|PLUS_EQUAL|PAAMAYIM_NEKUDOTAYIM|EXTENDS|EXIT|EMPTY|ENCAPSED_AND_WHITESPACE|END(SWITCH|IF|DECLARE|FOR(EACH)?|WHILE)|END_HEREDOC|ECHO|EVAL|ELSE(IF)?|VAR(IABLE)?|FINAL|FILE|FOR(EACH)?|FUNC_C|FUNCTION|WHITESPACE|WHILE|LNUMBER|LIST|LINE|LOGICAL_(AND|OR|XOR)|ARRAY_(CAST)?|ABSTRACT|AS|AND_EQUAL))\\b",
1515
+ "name": "support.constant.parser-token.php"
1516
+ },
1517
+ {
1518
+ "match": "(?i)[_a-z\\x7F-\\x{10FFFF}][0-9_a-z\\x7F-\\x{10FFFF}]*",
1519
+ "name": "constant.other.php"
1520
+ }
1521
+ ]
1522
+ },
1523
+ "function-call": {
1524
+ "patterns": [
1525
+ {
1526
+ "begin": "(\\\\?(?<![0-9A-Z_a-z\\x7F-\\x{10FFFF}])[A-Z_a-z\\x7F-\\x{10FFFF}][0-9A-Z_a-z\\x7F-\\x{10FFFF}]*(?:\\\\[A-Z_a-z\\x7F-\\x{10FFFF}][0-9A-Z_a-z\\x7F-\\x{10FFFF}]*)+)\\s*(\\()",
1527
+ "beginCaptures": {
1528
+ "1": {
1529
+ "patterns": [
1530
+ {
1531
+ "include": "#namespace"
1532
+ },
1533
+ {
1534
+ "match": "(?i)[_a-z\\x7F-\\x{10FFFF}][0-9_a-z\\x7F-\\x{10FFFF}]*",
1535
+ "name": "entity.name.function.php"
1536
+ }
1537
+ ]
1538
+ },
1539
+ "2": {
1540
+ "name": "punctuation.definition.arguments.begin.bracket.round.php"
1541
+ }
1542
+ },
1543
+ "end": "\\)|(?=\\?>)",
1544
+ "endCaptures": {
1545
+ "0": {
1546
+ "name": "punctuation.definition.arguments.end.bracket.round.php"
1547
+ }
1548
+ },
1549
+ "name": "meta.function-call.php",
1550
+ "patterns": [
1551
+ {
1552
+ "include": "#named-arguments"
1553
+ },
1554
+ {
1555
+ "include": "$self"
1556
+ }
1557
+ ]
1558
+ },
1559
+ {
1560
+ "begin": "(\\\\)?(?<![0-9A-Z_a-z\\x7F-\\x{10FFFF}])([A-Z_a-z\\x7F-\\x{10FFFF}][0-9A-Z_a-z\\x7F-\\x{10FFFF}]*)\\s*(\\()",
1561
+ "beginCaptures": {
1562
+ "1": {
1563
+ "patterns": [
1564
+ {
1565
+ "include": "#namespace"
1566
+ }
1567
+ ]
1568
+ },
1569
+ "2": {
1570
+ "patterns": [
1571
+ {
1572
+ "include": "#support"
1573
+ },
1574
+ {
1575
+ "match": "(?i)[_a-z\\x7F-\\x{10FFFF}][0-9_a-z\\x7F-\\x{10FFFF}]*",
1576
+ "name": "entity.name.function.php"
1577
+ }
1578
+ ]
1579
+ },
1580
+ "3": {
1581
+ "name": "punctuation.definition.arguments.begin.bracket.round.php"
1582
+ }
1583
+ },
1584
+ "end": "\\)|(?=\\?>)",
1585
+ "endCaptures": {
1586
+ "0": {
1587
+ "name": "punctuation.definition.arguments.end.bracket.round.php"
1588
+ }
1589
+ },
1590
+ "name": "meta.function-call.php",
1591
+ "patterns": [
1592
+ {
1593
+ "include": "#named-arguments"
1594
+ },
1595
+ {
1596
+ "include": "$self"
1597
+ }
1598
+ ]
1599
+ },
1600
+ {
1601
+ "match": "(?i)\\b(print|echo)\\b",
1602
+ "name": "support.function.construct.output.php"
1603
+ }
1604
+ ]
1605
+ },
1606
+ "function-parameters": {
1607
+ "patterns": [
1608
+ {
1609
+ "include": "#attribute"
1610
+ },
1611
+ {
1612
+ "include": "#comments"
1613
+ },
1614
+ {
1615
+ "match": ",",
1616
+ "name": "punctuation.separator.delimiter.php"
1617
+ },
1618
+ {
1619
+ "captures": {
1620
+ "1": {
1621
+ "patterns": [
1622
+ {
1623
+ "include": "#php-types"
1624
+ }
1625
+ ]
1626
+ },
1627
+ "2": {
1628
+ "name": "variable.other.php"
1629
+ },
1630
+ "3": {
1631
+ "name": "storage.modifier.reference.php"
1632
+ },
1633
+ "4": {
1634
+ "name": "keyword.operator.variadic.php"
1635
+ },
1636
+ "5": {
1637
+ "name": "punctuation.definition.variable.php"
1638
+ }
1639
+ },
1640
+ "match": "(?i)(?:((?:\\?\\s*)?[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+|(?:[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+|\\(\\s*[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+(?:\\s*&\\s*[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+)+\\s*\\))(?:\\s*[\\&|]\\s*(?:[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+|\\(\\s*[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+(?:\\s*&\\s*[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+)+\\s*\\)))+)\\s+)?((?:(&)\\s*)?(\\.\\.\\.)(\\$)[_a-z\\x7F-\\x{10FFFF}][0-9_a-z\\x7F-\\x{10FFFF}]*)(?=\\s*(?:[),]|/[*/]|#|$))",
1641
+ "name": "meta.function.parameter.variadic.php"
1642
+ },
1643
+ {
1644
+ "begin": "(?i)((?:\\?\\s*)?[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+|(?:[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+|\\(\\s*[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+(?:\\s*&\\s*[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+)+\\s*\\))(?:\\s*[\\&|]\\s*(?:[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+|\\(\\s*[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+(?:\\s*&\\s*[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+)+\\s*\\)))+)\\s+((?:(&)\\s*)?(\\$)[_a-z\\x7F-\\x{10FFFF}][0-9_a-z\\x7F-\\x{10FFFF}]*)",
1645
+ "beginCaptures": {
1646
+ "1": {
1647
+ "patterns": [
1648
+ {
1649
+ "include": "#php-types"
1650
+ }
1651
+ ]
1652
+ },
1653
+ "2": {
1654
+ "name": "variable.other.php"
1655
+ },
1656
+ "3": {
1657
+ "name": "storage.modifier.reference.php"
1658
+ },
1659
+ "4": {
1660
+ "name": "punctuation.definition.variable.php"
1661
+ }
1662
+ },
1663
+ "end": "(?=\\s*(?:[),]|/[*/]|#))",
1664
+ "name": "meta.function.parameter.typehinted.php",
1665
+ "patterns": [
1666
+ {
1667
+ "begin": "=",
1668
+ "beginCaptures": {
1669
+ "0": {
1670
+ "name": "keyword.operator.assignment.php"
1671
+ }
1672
+ },
1673
+ "end": "(?=\\s*(?:[),]|/[*/]|#))",
1674
+ "patterns": [
1675
+ {
1676
+ "include": "#parameter-default-types"
1677
+ }
1678
+ ]
1679
+ }
1680
+ ]
1681
+ },
1682
+ {
1683
+ "captures": {
1684
+ "1": {
1685
+ "name": "variable.other.php"
1686
+ },
1687
+ "2": {
1688
+ "name": "storage.modifier.reference.php"
1689
+ },
1690
+ "3": {
1691
+ "name": "punctuation.definition.variable.php"
1692
+ }
1693
+ },
1694
+ "match": "(?i)((?:(&)\\s*)?(\\$)[_a-z\\x7F-\\x{10FFFF}][0-9_a-z\\x7F-\\x{10FFFF}]*)(?=\\s*(?:[),]|/[*/]|#|$))",
1695
+ "name": "meta.function.parameter.no-default.php"
1696
+ },
1697
+ {
1698
+ "begin": "(?i)((?:(&)\\s*)?(\\$)[_a-z\\x7F-\\x{10FFFF}][0-9_a-z\\x7F-\\x{10FFFF}]*)\\s*(=)\\s*",
1699
+ "beginCaptures": {
1700
+ "1": {
1701
+ "name": "variable.other.php"
1702
+ },
1703
+ "2": {
1704
+ "name": "storage.modifier.reference.php"
1705
+ },
1706
+ "3": {
1707
+ "name": "punctuation.definition.variable.php"
1708
+ },
1709
+ "4": {
1710
+ "name": "keyword.operator.assignment.php"
1711
+ }
1712
+ },
1713
+ "end": "(?=\\s*(?:[),]|/[*/]|#))",
1714
+ "name": "meta.function.parameter.default.php",
1715
+ "patterns": [
1716
+ {
1717
+ "include": "#parameter-default-types"
1718
+ }
1719
+ ]
1720
+ }
1721
+ ]
1722
+ },
1723
+ "heredoc": {
1724
+ "patterns": [
1725
+ {
1726
+ "begin": "(?i)(?=<<<\\s*(\"?)([_a-z\\x7F-\\x{10FFFF}][0-9_a-z\\x7F-\\x{10FFFF}]*)(\\1)\\s*$)",
1727
+ "end": "(?!\\G)",
1728
+ "name": "string.unquoted.heredoc.php",
1729
+ "patterns": [
1730
+ {
1731
+ "include": "#heredoc_interior"
1732
+ }
1733
+ ]
1734
+ },
1735
+ {
1736
+ "begin": "(?=<<<\\s*'([A-Z_a-z]+[0-9A-Z_a-z]*)'\\s*$)",
1737
+ "end": "(?!\\G)",
1738
+ "name": "string.unquoted.nowdoc.php",
1739
+ "patterns": [
1740
+ {
1741
+ "include": "#nowdoc_interior"
1742
+ }
1743
+ ]
1744
+ }
1745
+ ]
1746
+ },
1747
+ "heredoc_interior": {
1748
+ "patterns": [
1749
+ {
1750
+ "begin": "(<<<)\\s*(\"?)(HTML)(\\2)(\\s*)$",
1751
+ "beginCaptures": {
1752
+ "0": {
1753
+ "name": "punctuation.section.embedded.begin.php"
1754
+ },
1755
+ "1": {
1756
+ "name": "punctuation.definition.string.php"
1757
+ },
1758
+ "3": {
1759
+ "name": "keyword.operator.heredoc.php"
1760
+ },
1761
+ "5": {
1762
+ "name": "invalid.illegal.trailing-whitespace.php"
1763
+ }
1764
+ },
1765
+ "contentName": "text.html",
1766
+ "end": "^\\s*(\\3)(?![0-9A-Z_a-z\\x7F-\\x{10FFFF}])",
1767
+ "endCaptures": {
1768
+ "0": {
1769
+ "name": "punctuation.section.embedded.end.php"
1770
+ },
1771
+ "1": {
1772
+ "name": "keyword.operator.heredoc.php"
1773
+ }
1774
+ },
1775
+ "name": "meta.embedded.html",
1776
+ "patterns": [
1777
+ {
1778
+ "include": "#interpolation"
1779
+ },
1780
+ {
1781
+ "include": "text.html.basic"
1782
+ }
1783
+ ]
1784
+ },
1785
+ {
1786
+ "begin": "(<<<)\\s*(\"?)(XML)(\\2)(\\s*)$",
1787
+ "beginCaptures": {
1788
+ "0": {
1789
+ "name": "punctuation.section.embedded.begin.php"
1790
+ },
1791
+ "1": {
1792
+ "name": "punctuation.definition.string.php"
1793
+ },
1794
+ "3": {
1795
+ "name": "keyword.operator.heredoc.php"
1796
+ },
1797
+ "5": {
1798
+ "name": "invalid.illegal.trailing-whitespace.php"
1799
+ }
1800
+ },
1801
+ "contentName": "text.xml",
1802
+ "end": "^\\s*(\\3)(?![0-9A-Z_a-z\\x7F-\\x{10FFFF}])",
1803
+ "endCaptures": {
1804
+ "0": {
1805
+ "name": "punctuation.section.embedded.end.php"
1806
+ },
1807
+ "1": {
1808
+ "name": "keyword.operator.heredoc.php"
1809
+ }
1810
+ },
1811
+ "name": "meta.embedded.xml",
1812
+ "patterns": [
1813
+ {
1814
+ "include": "#interpolation"
1815
+ },
1816
+ {
1817
+ "include": "text.xml"
1818
+ }
1819
+ ]
1820
+ },
1821
+ {
1822
+ "begin": "(<<<)\\s*(\"?)([DS]QL)(\\2)(\\s*)$",
1823
+ "beginCaptures": {
1824
+ "0": {
1825
+ "name": "punctuation.section.embedded.begin.php"
1826
+ },
1827
+ "1": {
1828
+ "name": "punctuation.definition.string.php"
1829
+ },
1830
+ "3": {
1831
+ "name": "keyword.operator.heredoc.php"
1832
+ },
1833
+ "5": {
1834
+ "name": "invalid.illegal.trailing-whitespace.php"
1835
+ }
1836
+ },
1837
+ "contentName": "source.sql",
1838
+ "end": "^\\s*(\\3)(?![0-9A-Z_a-z\\x7F-\\x{10FFFF}])",
1839
+ "endCaptures": {
1840
+ "0": {
1841
+ "name": "punctuation.section.embedded.end.php"
1842
+ },
1843
+ "1": {
1844
+ "name": "keyword.operator.heredoc.php"
1845
+ }
1846
+ },
1847
+ "name": "meta.embedded.sql",
1848
+ "patterns": [
1849
+ {
1850
+ "include": "#interpolation"
1851
+ },
1852
+ {
1853
+ "include": "source.sql"
1854
+ }
1855
+ ]
1856
+ },
1857
+ {
1858
+ "begin": "(<<<)\\s*(\"?)(J(?:AVASCRIPT|S))(\\2)(\\s*)$",
1859
+ "beginCaptures": {
1860
+ "0": {
1861
+ "name": "punctuation.section.embedded.begin.php"
1862
+ },
1863
+ "1": {
1864
+ "name": "punctuation.definition.string.php"
1865
+ },
1866
+ "3": {
1867
+ "name": "keyword.operator.heredoc.php"
1868
+ },
1869
+ "5": {
1870
+ "name": "invalid.illegal.trailing-whitespace.php"
1871
+ }
1872
+ },
1873
+ "contentName": "source.js",
1874
+ "end": "^\\s*(\\3)(?![0-9A-Z_a-z\\x7F-\\x{10FFFF}])",
1875
+ "endCaptures": {
1876
+ "0": {
1877
+ "name": "punctuation.section.embedded.end.php"
1878
+ },
1879
+ "1": {
1880
+ "name": "keyword.operator.heredoc.php"
1881
+ }
1882
+ },
1883
+ "name": "meta.embedded.js",
1884
+ "patterns": [
1885
+ {
1886
+ "include": "#interpolation"
1887
+ },
1888
+ {
1889
+ "include": "source.js"
1890
+ }
1891
+ ]
1892
+ },
1893
+ {
1894
+ "begin": "(<<<)\\s*(\"?)(JSON)(\\2)(\\s*)$",
1895
+ "beginCaptures": {
1896
+ "0": {
1897
+ "name": "punctuation.section.embedded.begin.php"
1898
+ },
1899
+ "1": {
1900
+ "name": "punctuation.definition.string.php"
1901
+ },
1902
+ "3": {
1903
+ "name": "keyword.operator.heredoc.php"
1904
+ },
1905
+ "5": {
1906
+ "name": "invalid.illegal.trailing-whitespace.php"
1907
+ }
1908
+ },
1909
+ "contentName": "source.json",
1910
+ "end": "^\\s*(\\3)(?![0-9A-Z_a-z\\x7F-\\x{10FFFF}])",
1911
+ "endCaptures": {
1912
+ "0": {
1913
+ "name": "punctuation.section.embedded.end.php"
1914
+ },
1915
+ "1": {
1916
+ "name": "keyword.operator.heredoc.php"
1917
+ }
1918
+ },
1919
+ "name": "meta.embedded.json",
1920
+ "patterns": [
1921
+ {
1922
+ "include": "#interpolation"
1923
+ },
1924
+ {
1925
+ "include": "source.json"
1926
+ }
1927
+ ]
1928
+ },
1929
+ {
1930
+ "begin": "(<<<)\\s*(\"?)(CSS)(\\2)(\\s*)$",
1931
+ "beginCaptures": {
1932
+ "0": {
1933
+ "name": "punctuation.section.embedded.begin.php"
1934
+ },
1935
+ "1": {
1936
+ "name": "punctuation.definition.string.php"
1937
+ },
1938
+ "3": {
1939
+ "name": "keyword.operator.heredoc.php"
1940
+ },
1941
+ "5": {
1942
+ "name": "invalid.illegal.trailing-whitespace.php"
1943
+ }
1944
+ },
1945
+ "contentName": "source.css",
1946
+ "end": "^\\s*(\\3)(?![0-9A-Z_a-z\\x7F-\\x{10FFFF}])",
1947
+ "endCaptures": {
1948
+ "0": {
1949
+ "name": "punctuation.section.embedded.end.php"
1950
+ },
1951
+ "1": {
1952
+ "name": "keyword.operator.heredoc.php"
1953
+ }
1954
+ },
1955
+ "name": "meta.embedded.css",
1956
+ "patterns": [
1957
+ {
1958
+ "include": "#interpolation"
1959
+ },
1960
+ {
1961
+ "include": "source.css"
1962
+ }
1963
+ ]
1964
+ },
1965
+ {
1966
+ "begin": "(<<<)\\s*(\"?)(REGEXP?)(\\2)(\\s*)$",
1967
+ "beginCaptures": {
1968
+ "0": {
1969
+ "name": "punctuation.section.embedded.begin.php"
1970
+ },
1971
+ "1": {
1972
+ "name": "punctuation.definition.string.php"
1973
+ },
1974
+ "3": {
1975
+ "name": "keyword.operator.heredoc.php"
1976
+ },
1977
+ "5": {
1978
+ "name": "invalid.illegal.trailing-whitespace.php"
1979
+ }
1980
+ },
1981
+ "contentName": "string.regexp.heredoc.php",
1982
+ "end": "^\\s*(\\3)(?![0-9A-Z_a-z\\x7F-\\x{10FFFF}])",
1983
+ "endCaptures": {
1984
+ "0": {
1985
+ "name": "punctuation.section.embedded.end.php"
1986
+ },
1987
+ "1": {
1988
+ "name": "keyword.operator.heredoc.php"
1989
+ }
1990
+ },
1991
+ "patterns": [
1992
+ {
1993
+ "include": "#interpolation"
1994
+ },
1995
+ {
1996
+ "match": "(\\\\){1,2}[]$.\\[^{}]",
1997
+ "name": "constant.character.escape.regex.php"
1998
+ },
1999
+ {
2000
+ "captures": {
2001
+ "1": {
2002
+ "name": "punctuation.definition.arbitrary-repitition.php"
2003
+ },
2004
+ "3": {
2005
+ "name": "punctuation.definition.arbitrary-repitition.php"
2006
+ }
2007
+ },
2008
+ "match": "(\\{)\\d+(,\\d+)?(})",
2009
+ "name": "string.regexp.arbitrary-repitition.php"
2010
+ },
2011
+ {
2012
+ "begin": "\\[(?:\\^?])?",
2013
+ "captures": {
2014
+ "0": {
2015
+ "name": "punctuation.definition.character-class.php"
2016
+ }
2017
+ },
2018
+ "end": "]",
2019
+ "name": "string.regexp.character-class.php",
2020
+ "patterns": [
2021
+ {
2022
+ "match": "\\\\[]'\\[\\\\]",
2023
+ "name": "constant.character.escape.php"
2024
+ }
2025
+ ]
2026
+ },
2027
+ {
2028
+ "match": "[$*+^]",
2029
+ "name": "keyword.operator.regexp.php"
2030
+ },
2031
+ {
2032
+ "begin": "(?i)(?<=^|\\s)(#)\\s(?=[-\\t !,.0-9?_a-z\\x7F-\\x{10FFFF}[^\\x00-\\x7F]]*$)",
2033
+ "beginCaptures": {
2034
+ "1": {
2035
+ "name": "punctuation.definition.comment.php"
2036
+ }
2037
+ },
2038
+ "end": "$",
2039
+ "endCaptures": {
2040
+ "0": {
2041
+ "name": "punctuation.definition.comment.php"
2042
+ }
2043
+ },
2044
+ "name": "comment.line.number-sign.php"
2045
+ }
2046
+ ]
2047
+ },
2048
+ {
2049
+ "begin": "(<<<)\\s*(\"?)(BLADE)(\\2)(\\s*)$",
2050
+ "beginCaptures": {
2051
+ "0": {
2052
+ "name": "punctuation.section.embedded.begin.php"
2053
+ },
2054
+ "1": {
2055
+ "name": "punctuation.definition.string.php"
2056
+ },
2057
+ "3": {
2058
+ "name": "keyword.operator.heredoc.php"
2059
+ },
2060
+ "5": {
2061
+ "name": "invalid.illegal.trailing-whitespace.php"
2062
+ }
2063
+ },
2064
+ "contentName": "text.html.php.blade",
2065
+ "end": "^\\s*(\\3)(?![0-9A-Z_a-z\\x7F-\\x{10FFFF}])",
2066
+ "endCaptures": {
2067
+ "0": {
2068
+ "name": "punctuation.section.embedded.end.php"
2069
+ },
2070
+ "1": {
2071
+ "name": "keyword.operator.heredoc.php"
2072
+ }
2073
+ },
2074
+ "name": "meta.embedded.php.blade",
2075
+ "patterns": [
2076
+ {
2077
+ "include": "#interpolation"
2078
+ }
2079
+ ]
2080
+ },
2081
+ {
2082
+ "begin": "(?i)(<<<)\\s*(\"?)([_a-z\\x7F-\\x{10FFFF}]+[0-9_a-z\\x7F-\\x{10FFFF}]*)(\\2)(\\s*)",
2083
+ "beginCaptures": {
2084
+ "1": {
2085
+ "name": "punctuation.definition.string.php"
2086
+ },
2087
+ "3": {
2088
+ "name": "keyword.operator.heredoc.php"
2089
+ },
2090
+ "5": {
2091
+ "name": "invalid.illegal.trailing-whitespace.php"
2092
+ }
2093
+ },
2094
+ "end": "^\\s*(\\3)(?![0-9A-Z_a-z\\x7F-\\x{10FFFF}])",
2095
+ "endCaptures": {
2096
+ "1": {
2097
+ "name": "keyword.operator.heredoc.php"
2098
+ }
2099
+ },
2100
+ "patterns": [
2101
+ {
2102
+ "include": "#interpolation"
2103
+ }
2104
+ ]
2105
+ }
2106
+ ]
2107
+ },
2108
+ "inheritance-single": {
2109
+ "patterns": [
2110
+ {
2111
+ "begin": "(?i)(?=\\\\?[_a-z\\x7F-\\x{10FFFF}][0-9_a-z\\x7F-\\x{10FFFF}]*\\\\)",
2112
+ "end": "(?i)([_a-z\\x7F-\\x{10FFFF}][0-9_a-z\\x7F-\\x{10FFFF}]*)?(?=[^0-9\\\\_a-z\\x7F-\\x{10FFFF}])",
2113
+ "endCaptures": {
2114
+ "1": {
2115
+ "name": "entity.other.inherited-class.php"
2116
+ }
2117
+ },
2118
+ "patterns": [
2119
+ {
2120
+ "include": "#namespace"
2121
+ }
2122
+ ]
2123
+ },
2124
+ {
2125
+ "include": "#class-builtin"
2126
+ },
2127
+ {
2128
+ "include": "#namespace"
2129
+ },
2130
+ {
2131
+ "match": "(?i)[_a-z\\x7F-\\x{10FFFF}][0-9_a-z\\x7F-\\x{10FFFF}]*",
2132
+ "name": "entity.other.inherited-class.php"
2133
+ }
2134
+ ]
2135
+ },
2136
+ "instantiation": {
2137
+ "patterns": [
2138
+ {
2139
+ "captures": {
2140
+ "1": {
2141
+ "name": "keyword.other.new.php"
2142
+ },
2143
+ "2": {
2144
+ "patterns": [
2145
+ {
2146
+ "match": "(?i)(parent|static|self)(?![0-9_a-z\\x7F-\\x{10FFFF}])",
2147
+ "name": "storage.type.php"
2148
+ },
2149
+ {
2150
+ "include": "#class-name"
2151
+ },
2152
+ {
2153
+ "include": "#variable-name"
2154
+ }
2155
+ ]
2156
+ }
2157
+ },
2158
+ "match": "(?i)(new)\\s+(?!class\\b)([$0-9\\\\_a-z\\x7F-\\x{10FFFF}]+)(?![(0-9\\\\_a-z\\x7F-\\x{10FFFF}])"
2159
+ },
2160
+ {
2161
+ "begin": "(?i)(new)\\s+(?!class\\b)([$0-9\\\\_a-z\\x7F-\\x{10FFFF}]+)\\s*(\\()",
2162
+ "beginCaptures": {
2163
+ "1": {
2164
+ "name": "keyword.other.new.php"
2165
+ },
2166
+ "2": {
2167
+ "patterns": [
2168
+ {
2169
+ "match": "(?i)(parent|static|self)(?![0-9_a-z\\x7F-\\x{10FFFF}])",
2170
+ "name": "storage.type.php"
2171
+ },
2172
+ {
2173
+ "include": "#class-name"
2174
+ },
2175
+ {
2176
+ "include": "#variable-name"
2177
+ }
2178
+ ]
2179
+ },
2180
+ "3": {
2181
+ "name": "punctuation.definition.arguments.begin.bracket.round.php"
2182
+ }
2183
+ },
2184
+ "contentName": "meta.function-call.php",
2185
+ "end": "\\)|(?=\\?>)",
2186
+ "endCaptures": {
2187
+ "0": {
2188
+ "name": "punctuation.definition.arguments.end.bracket.round.php"
2189
+ }
2190
+ },
2191
+ "patterns": [
2192
+ {
2193
+ "include": "#named-arguments"
2194
+ },
2195
+ {
2196
+ "include": "$self"
2197
+ }
2198
+ ]
2199
+ }
2200
+ ]
2201
+ },
2202
+ "interface-extends": {
2203
+ "patterns": [
2204
+ {
2205
+ "begin": "(?i)(extends)\\s+",
2206
+ "beginCaptures": {
2207
+ "1": {
2208
+ "name": "storage.modifier.extends.php"
2209
+ }
2210
+ },
2211
+ "end": "(?i)(?=\\{)",
2212
+ "patterns": [
2213
+ {
2214
+ "include": "#comments"
2215
+ },
2216
+ {
2217
+ "match": ",",
2218
+ "name": "punctuation.separator.classes.php"
2219
+ },
2220
+ {
2221
+ "include": "#inheritance-single"
2222
+ }
2223
+ ]
2224
+ }
2225
+ ]
2226
+ },
2227
+ "interpolation": {
2228
+ "patterns": [
2229
+ {
2230
+ "match": "\\\\[0-7]{1,3}",
2231
+ "name": "constant.character.escape.octal.php"
2232
+ },
2233
+ {
2234
+ "match": "\\\\x\\h{1,2}",
2235
+ "name": "constant.character.escape.hex.php"
2236
+ },
2237
+ {
2238
+ "match": "\\\\u\\{\\h+}",
2239
+ "name": "constant.character.escape.unicode.php"
2240
+ },
2241
+ {
2242
+ "match": "\\\\[$\\\\efnrtv]",
2243
+ "name": "constant.character.escape.php"
2244
+ },
2245
+ {
2246
+ "begin": "\\{(?=\\$.*?})",
2247
+ "beginCaptures": {
2248
+ "0": {
2249
+ "name": "punctuation.definition.variable.php"
2250
+ }
2251
+ },
2252
+ "end": "}",
2253
+ "endCaptures": {
2254
+ "0": {
2255
+ "name": "punctuation.definition.variable.php"
2256
+ }
2257
+ },
2258
+ "patterns": [
2259
+ {
2260
+ "include": "$self"
2261
+ }
2262
+ ]
2263
+ },
2264
+ {
2265
+ "include": "#variable-name"
2266
+ }
2267
+ ]
2268
+ },
2269
+ "interpolation_double_quoted": {
2270
+ "patterns": [
2271
+ {
2272
+ "match": "\\\\\"",
2273
+ "name": "constant.character.escape.php"
2274
+ },
2275
+ {
2276
+ "include": "#interpolation"
2277
+ }
2278
+ ]
2279
+ },
2280
+ "invoke-call": {
2281
+ "begin": "(?i)((\\$+)[_a-z\\x7F-\\x{10FFFF}][0-9_a-z\\x7F-\\x{10FFFF}]*)\\s*(\\()",
2282
+ "beginCaptures": {
2283
+ "1": {
2284
+ "name": "variable.other.php"
2285
+ },
2286
+ "2": {
2287
+ "name": "punctuation.definition.variable.php"
2288
+ },
2289
+ "3": {
2290
+ "name": "punctuation.definition.arguments.begin.bracket.round.php"
2291
+ }
2292
+ },
2293
+ "end": "\\)|(?=\\?>)",
2294
+ "endCaptures": {
2295
+ "0": {
2296
+ "name": "punctuation.definition.arguments.end.bracket.round.php"
2297
+ }
2298
+ },
2299
+ "name": "meta.function-call.invoke.php",
2300
+ "patterns": [
2301
+ {
2302
+ "include": "#named-arguments"
2303
+ },
2304
+ {
2305
+ "include": "$self"
2306
+ }
2307
+ ]
2308
+ },
2309
+ "match_statement": {
2310
+ "patterns": [
2311
+ {
2312
+ "match": "\\s+(?=match\\b)"
2313
+ },
2314
+ {
2315
+ "begin": "\\bmatch\\b",
2316
+ "beginCaptures": {
2317
+ "0": {
2318
+ "name": "keyword.control.match.php"
2319
+ }
2320
+ },
2321
+ "end": "}|(?=\\?>)",
2322
+ "endCaptures": {
2323
+ "0": {
2324
+ "name": "punctuation.definition.section.match-block.end.bracket.curly.php"
2325
+ }
2326
+ },
2327
+ "name": "meta.match-statement.php",
2328
+ "patterns": [
2329
+ {
2330
+ "begin": "\\(",
2331
+ "beginCaptures": {
2332
+ "0": {
2333
+ "name": "punctuation.definition.match-expression.begin.bracket.round.php"
2334
+ }
2335
+ },
2336
+ "end": "\\)|(?=\\?>)",
2337
+ "endCaptures": {
2338
+ "0": {
2339
+ "name": "punctuation.definition.match-expression.end.bracket.round.php"
2340
+ }
2341
+ },
2342
+ "patterns": [
2343
+ {
2344
+ "include": "$self"
2345
+ }
2346
+ ]
2347
+ },
2348
+ {
2349
+ "begin": "\\{",
2350
+ "beginCaptures": {
2351
+ "0": {
2352
+ "name": "punctuation.definition.section.match-block.begin.bracket.curly.php"
2353
+ }
2354
+ },
2355
+ "end": "(?=}|\\?>)",
2356
+ "patterns": [
2357
+ {
2358
+ "match": "=>",
2359
+ "name": "keyword.definition.arrow.php"
2360
+ },
2361
+ {
2362
+ "include": "$self"
2363
+ }
2364
+ ]
2365
+ }
2366
+ ]
2367
+ }
2368
+ ]
2369
+ },
2370
+ "named-arguments": {
2371
+ "captures": {
2372
+ "1": {
2373
+ "name": "entity.name.variable.parameter.php"
2374
+ },
2375
+ "2": {
2376
+ "name": "punctuation.separator.colon.php"
2377
+ }
2378
+ },
2379
+ "match": "(?i)(?<=^|[(,])\\s*([_a-z\\x7F-\\x{10FFFF}][0-9_a-z\\x7F-\\x{10FFFF}]*)\\s*(:)(?!:)"
2380
+ },
2381
+ "namespace": {
2382
+ "begin": "(?i)(?:(namespace)|[_a-z\\x7F-\\x{10FFFF}][0-9_a-z\\x7F-\\x{10FFFF}]*)?(\\\\)",
2383
+ "beginCaptures": {
2384
+ "1": {
2385
+ "name": "variable.language.namespace.php"
2386
+ },
2387
+ "2": {
2388
+ "name": "punctuation.separator.inheritance.php"
2389
+ }
2390
+ },
2391
+ "end": "(?i)(?![0-9_a-z\\x7F-\\x{10FFFF}]*\\\\)",
2392
+ "name": "support.other.namespace.php",
2393
+ "patterns": [
2394
+ {
2395
+ "match": "\\\\",
2396
+ "name": "punctuation.separator.inheritance.php"
2397
+ }
2398
+ ]
2399
+ },
2400
+ "nowdoc_interior": {
2401
+ "patterns": [
2402
+ {
2403
+ "begin": "(<<<)\\s*'(HTML)'(\\s*)$",
2404
+ "beginCaptures": {
2405
+ "0": {
2406
+ "name": "punctuation.section.embedded.begin.php"
2407
+ },
2408
+ "1": {
2409
+ "name": "punctuation.definition.string.php"
2410
+ },
2411
+ "2": {
2412
+ "name": "keyword.operator.nowdoc.php"
2413
+ },
2414
+ "3": {
2415
+ "name": "invalid.illegal.trailing-whitespace.php"
2416
+ }
2417
+ },
2418
+ "contentName": "text.html",
2419
+ "end": "^\\s*(\\2)(?![0-9A-Z_a-z\\x7F-\\x{10FFFF}])",
2420
+ "endCaptures": {
2421
+ "0": {
2422
+ "name": "punctuation.section.embedded.end.php"
2423
+ },
2424
+ "1": {
2425
+ "name": "keyword.operator.nowdoc.php"
2426
+ }
2427
+ },
2428
+ "name": "meta.embedded.html",
2429
+ "patterns": [
2430
+ {
2431
+ "include": "text.html.basic"
2432
+ }
2433
+ ]
2434
+ },
2435
+ {
2436
+ "begin": "(<<<)\\s*'(XML)'(\\s*)$",
2437
+ "beginCaptures": {
2438
+ "0": {
2439
+ "name": "punctuation.section.embedded.begin.php"
2440
+ },
2441
+ "1": {
2442
+ "name": "punctuation.definition.string.php"
2443
+ },
2444
+ "2": {
2445
+ "name": "keyword.operator.nowdoc.php"
2446
+ },
2447
+ "3": {
2448
+ "name": "invalid.illegal.trailing-whitespace.php"
2449
+ }
2450
+ },
2451
+ "contentName": "text.xml",
2452
+ "end": "^\\s*(\\2)(?![0-9A-Z_a-z\\x7F-\\x{10FFFF}])",
2453
+ "endCaptures": {
2454
+ "0": {
2455
+ "name": "punctuation.section.embedded.end.php"
2456
+ },
2457
+ "1": {
2458
+ "name": "keyword.operator.nowdoc.php"
2459
+ }
2460
+ },
2461
+ "name": "meta.embedded.xml",
2462
+ "patterns": [
2463
+ {
2464
+ "include": "text.xml"
2465
+ }
2466
+ ]
2467
+ },
2468
+ {
2469
+ "begin": "(<<<)\\s*'([DS]QL)'(\\s*)$",
2470
+ "beginCaptures": {
2471
+ "0": {
2472
+ "name": "punctuation.section.embedded.begin.php"
2473
+ },
2474
+ "1": {
2475
+ "name": "punctuation.definition.string.php"
2476
+ },
2477
+ "2": {
2478
+ "name": "keyword.operator.nowdoc.php"
2479
+ },
2480
+ "3": {
2481
+ "name": "invalid.illegal.trailing-whitespace.php"
2482
+ }
2483
+ },
2484
+ "contentName": "source.sql",
2485
+ "end": "^\\s*(\\2)(?![0-9A-Z_a-z\\x7F-\\x{10FFFF}])",
2486
+ "endCaptures": {
2487
+ "0": {
2488
+ "name": "punctuation.section.embedded.end.php"
2489
+ },
2490
+ "1": {
2491
+ "name": "keyword.operator.nowdoc.php"
2492
+ }
2493
+ },
2494
+ "name": "meta.embedded.sql",
2495
+ "patterns": [
2496
+ {
2497
+ "include": "source.sql"
2498
+ }
2499
+ ]
2500
+ },
2501
+ {
2502
+ "begin": "(<<<)\\s*'(J(?:AVASCRIPT|S))'(\\s*)$",
2503
+ "beginCaptures": {
2504
+ "0": {
2505
+ "name": "punctuation.section.embedded.begin.php"
2506
+ },
2507
+ "1": {
2508
+ "name": "punctuation.definition.string.php"
2509
+ },
2510
+ "2": {
2511
+ "name": "keyword.operator.nowdoc.php"
2512
+ },
2513
+ "3": {
2514
+ "name": "invalid.illegal.trailing-whitespace.php"
2515
+ }
2516
+ },
2517
+ "contentName": "source.js",
2518
+ "end": "^\\s*(\\2)(?![0-9A-Z_a-z\\x7F-\\x{10FFFF}])",
2519
+ "endCaptures": {
2520
+ "0": {
2521
+ "name": "punctuation.section.embedded.end.php"
2522
+ },
2523
+ "1": {
2524
+ "name": "keyword.operator.nowdoc.php"
2525
+ }
2526
+ },
2527
+ "name": "meta.embedded.js",
2528
+ "patterns": [
2529
+ {
2530
+ "include": "source.js"
2531
+ }
2532
+ ]
2533
+ },
2534
+ {
2535
+ "begin": "(<<<)\\s*'(JSON)'(\\s*)$",
2536
+ "beginCaptures": {
2537
+ "0": {
2538
+ "name": "punctuation.section.embedded.begin.php"
2539
+ },
2540
+ "1": {
2541
+ "name": "punctuation.definition.string.php"
2542
+ },
2543
+ "2": {
2544
+ "name": "keyword.operator.nowdoc.php"
2545
+ },
2546
+ "3": {
2547
+ "name": "invalid.illegal.trailing-whitespace.php"
2548
+ }
2549
+ },
2550
+ "contentName": "source.json",
2551
+ "end": "^\\s*(\\2)(?![0-9A-Z_a-z\\x7F-\\x{10FFFF}])",
2552
+ "endCaptures": {
2553
+ "0": {
2554
+ "name": "punctuation.section.embedded.end.php"
2555
+ },
2556
+ "1": {
2557
+ "name": "keyword.operator.nowdoc.php"
2558
+ }
2559
+ },
2560
+ "name": "meta.embedded.json",
2561
+ "patterns": [
2562
+ {
2563
+ "include": "source.json"
2564
+ }
2565
+ ]
2566
+ },
2567
+ {
2568
+ "begin": "(<<<)\\s*'(CSS)'(\\s*)$",
2569
+ "beginCaptures": {
2570
+ "0": {
2571
+ "name": "punctuation.section.embedded.begin.php"
2572
+ },
2573
+ "1": {
2574
+ "name": "punctuation.definition.string.php"
2575
+ },
2576
+ "2": {
2577
+ "name": "keyword.operator.nowdoc.php"
2578
+ },
2579
+ "3": {
2580
+ "name": "invalid.illegal.trailing-whitespace.php"
2581
+ }
2582
+ },
2583
+ "contentName": "source.css",
2584
+ "end": "^\\s*(\\2)(?![0-9A-Z_a-z\\x7F-\\x{10FFFF}])",
2585
+ "endCaptures": {
2586
+ "0": {
2587
+ "name": "punctuation.section.embedded.end.php"
2588
+ },
2589
+ "1": {
2590
+ "name": "keyword.operator.nowdoc.php"
2591
+ }
2592
+ },
2593
+ "name": "meta.embedded.css",
2594
+ "patterns": [
2595
+ {
2596
+ "include": "source.css"
2597
+ }
2598
+ ]
2599
+ },
2600
+ {
2601
+ "begin": "(<<<)\\s*'(REGEXP?)'(\\s*)$",
2602
+ "beginCaptures": {
2603
+ "0": {
2604
+ "name": "punctuation.section.embedded.begin.php"
2605
+ },
2606
+ "1": {
2607
+ "name": "punctuation.definition.string.php"
2608
+ },
2609
+ "2": {
2610
+ "name": "keyword.operator.nowdoc.php"
2611
+ },
2612
+ "3": {
2613
+ "name": "invalid.illegal.trailing-whitespace.php"
2614
+ }
2615
+ },
2616
+ "contentName": "string.regexp.nowdoc.php",
2617
+ "end": "^\\s*(\\2)(?![0-9A-Z_a-z\\x7F-\\x{10FFFF}])",
2618
+ "endCaptures": {
2619
+ "0": {
2620
+ "name": "punctuation.section.embedded.end.php"
2621
+ },
2622
+ "1": {
2623
+ "name": "keyword.operator.nowdoc.php"
2624
+ }
2625
+ },
2626
+ "patterns": [
2627
+ {
2628
+ "match": "(\\\\){1,2}[]$.\\[^{}]",
2629
+ "name": "constant.character.escape.regex.php"
2630
+ },
2631
+ {
2632
+ "captures": {
2633
+ "1": {
2634
+ "name": "punctuation.definition.arbitrary-repitition.php"
2635
+ },
2636
+ "3": {
2637
+ "name": "punctuation.definition.arbitrary-repitition.php"
2638
+ }
2639
+ },
2640
+ "match": "(\\{)\\d+(,\\d+)?(})",
2641
+ "name": "string.regexp.arbitrary-repitition.php"
2642
+ },
2643
+ {
2644
+ "begin": "\\[(?:\\^?])?",
2645
+ "captures": {
2646
+ "0": {
2647
+ "name": "punctuation.definition.character-class.php"
2648
+ }
2649
+ },
2650
+ "end": "]",
2651
+ "name": "string.regexp.character-class.php",
2652
+ "patterns": [
2653
+ {
2654
+ "match": "\\\\[]'\\[\\\\]",
2655
+ "name": "constant.character.escape.php"
2656
+ }
2657
+ ]
2658
+ },
2659
+ {
2660
+ "match": "[$*+^]",
2661
+ "name": "keyword.operator.regexp.php"
2662
+ },
2663
+ {
2664
+ "begin": "(?i)(?<=^|\\s)(#)\\s(?=[-\\t !,.0-9?_a-z\\x7F-\\x{10FFFF}[^\\x00-\\x7F]]*$)",
2665
+ "beginCaptures": {
2666
+ "1": {
2667
+ "name": "punctuation.definition.comment.php"
2668
+ }
2669
+ },
2670
+ "end": "$",
2671
+ "endCaptures": {
2672
+ "0": {
2673
+ "name": "punctuation.definition.comment.php"
2674
+ }
2675
+ },
2676
+ "name": "comment.line.number-sign.php"
2677
+ }
2678
+ ]
2679
+ },
2680
+ {
2681
+ "begin": "(<<<)\\s*'(BLADE)'(\\s*)$",
2682
+ "beginCaptures": {
2683
+ "0": {
2684
+ "name": "punctuation.section.embedded.begin.php"
2685
+ },
2686
+ "1": {
2687
+ "name": "punctuation.definition.string.php"
2688
+ },
2689
+ "2": {
2690
+ "name": "keyword.operator.nowdoc.php"
2691
+ },
2692
+ "3": {
2693
+ "name": "invalid.illegal.trailing-whitespace.php"
2694
+ }
2695
+ },
2696
+ "contentName": "text.html.php.blade",
2697
+ "end": "^\\s*(\\2)(?![0-9A-Z_a-z\\x7F-\\x{10FFFF}])",
2698
+ "endCaptures": {
2699
+ "0": {
2700
+ "name": "punctuation.section.embedded.end.php"
2701
+ },
2702
+ "1": {
2703
+ "name": "keyword.operator.nowdoc.php"
2704
+ }
2705
+ },
2706
+ "name": "meta.embedded.php.blade"
2707
+ },
2708
+ {
2709
+ "begin": "(?i)(<<<)\\s*'([_a-z\\x7F-\\x{10FFFF}]+[0-9_a-z\\x7F-\\x{10FFFF}]*)'(\\s*)",
2710
+ "beginCaptures": {
2711
+ "1": {
2712
+ "name": "punctuation.definition.string.php"
2713
+ },
2714
+ "2": {
2715
+ "name": "keyword.operator.nowdoc.php"
2716
+ },
2717
+ "3": {
2718
+ "name": "invalid.illegal.trailing-whitespace.php"
2719
+ }
2720
+ },
2721
+ "end": "^\\s*(\\2)(?![0-9A-Z_a-z\\x7F-\\x{10FFFF}])",
2722
+ "endCaptures": {
2723
+ "1": {
2724
+ "name": "keyword.operator.nowdoc.php"
2725
+ }
2726
+ }
2727
+ }
2728
+ ]
2729
+ },
2730
+ "null_coalescing": {
2731
+ "match": "\\?\\?",
2732
+ "name": "keyword.operator.null-coalescing.php"
2733
+ },
2734
+ "numbers": {
2735
+ "patterns": [
2736
+ {
2737
+ "match": "0[Xx]\\h+(?:_\\h+)*",
2738
+ "name": "constant.numeric.hex.php"
2739
+ },
2740
+ {
2741
+ "match": "0[Bb][01]+(?:_[01]+)*",
2742
+ "name": "constant.numeric.binary.php"
2743
+ },
2744
+ {
2745
+ "match": "0[Oo][0-7]+(?:_[0-7]+)*",
2746
+ "name": "constant.numeric.octal.php"
2747
+ },
2748
+ {
2749
+ "match": "0(?:_?[0-7]+)+",
2750
+ "name": "constant.numeric.octal.php"
2751
+ },
2752
+ {
2753
+ "captures": {
2754
+ "1": {
2755
+ "name": "punctuation.separator.decimal.period.php"
2756
+ },
2757
+ "2": {
2758
+ "name": "punctuation.separator.decimal.period.php"
2759
+ }
2760
+ },
2761
+ "match": "(?:[0-9]+(?:_[0-9]+)*)?(\\.)[0-9]+(?:_[0-9]+)*(?:[Ee][-+]?[0-9]+(?:_[0-9]+)*)?|[0-9]+(?:_[0-9]+)*(\\.)(?:[0-9]+(?:_[0-9]+)*)?(?:[Ee][-+]?[0-9]+(?:_[0-9]+)*)?|[0-9]+(?:_[0-9]+)*[Ee][-+]?[0-9]+(?:_[0-9]+)*",
2762
+ "name": "constant.numeric.decimal.php"
2763
+ },
2764
+ {
2765
+ "match": "0|[1-9](?:_?[0-9]+)*",
2766
+ "name": "constant.numeric.decimal.php"
2767
+ }
2768
+ ]
2769
+ },
2770
+ "object": {
2771
+ "patterns": [
2772
+ {
2773
+ "begin": "(\\??->)\\s*(\\$?\\{)",
2774
+ "beginCaptures": {
2775
+ "1": {
2776
+ "name": "keyword.operator.class.php"
2777
+ },
2778
+ "2": {
2779
+ "name": "punctuation.definition.variable.php"
2780
+ }
2781
+ },
2782
+ "end": "}",
2783
+ "endCaptures": {
2784
+ "0": {
2785
+ "name": "punctuation.definition.variable.php"
2786
+ }
2787
+ },
2788
+ "patterns": [
2789
+ {
2790
+ "include": "$self"
2791
+ }
2792
+ ]
2793
+ },
2794
+ {
2795
+ "begin": "(?i)(\\??->)\\s*([_a-z\\x7F-\\x{10FFFF}][0-9_a-z\\x7F-\\x{10FFFF}]*)\\s*(\\()",
2796
+ "beginCaptures": {
2797
+ "1": {
2798
+ "name": "keyword.operator.class.php"
2799
+ },
2800
+ "2": {
2801
+ "name": "entity.name.function.php"
2802
+ },
2803
+ "3": {
2804
+ "name": "punctuation.definition.arguments.begin.bracket.round.php"
2805
+ }
2806
+ },
2807
+ "end": "\\)|(?=\\?>)",
2808
+ "endCaptures": {
2809
+ "0": {
2810
+ "name": "punctuation.definition.arguments.end.bracket.round.php"
2811
+ }
2812
+ },
2813
+ "name": "meta.method-call.php",
2814
+ "patterns": [
2815
+ {
2816
+ "include": "#named-arguments"
2817
+ },
2818
+ {
2819
+ "include": "$self"
2820
+ }
2821
+ ]
2822
+ },
2823
+ {
2824
+ "captures": {
2825
+ "1": {
2826
+ "name": "keyword.operator.class.php"
2827
+ },
2828
+ "2": {
2829
+ "name": "variable.other.property.php"
2830
+ },
2831
+ "3": {
2832
+ "name": "punctuation.definition.variable.php"
2833
+ }
2834
+ },
2835
+ "match": "(?i)(\\??->)\\s*((\\$+)?[_a-z\\x7F-\\x{10FFFF}][0-9_a-z\\x7F-\\x{10FFFF}]*)?"
2836
+ }
2837
+ ]
2838
+ },
2839
+ "parameter-default-types": {
2840
+ "patterns": [
2841
+ {
2842
+ "include": "#strings"
2843
+ },
2844
+ {
2845
+ "include": "#numbers"
2846
+ },
2847
+ {
2848
+ "include": "#string-backtick"
2849
+ },
2850
+ {
2851
+ "include": "#variables"
2852
+ },
2853
+ {
2854
+ "match": "=>",
2855
+ "name": "keyword.operator.key.php"
2856
+ },
2857
+ {
2858
+ "match": "=",
2859
+ "name": "keyword.operator.assignment.php"
2860
+ },
2861
+ {
2862
+ "match": "&(?=\\s*\\$)",
2863
+ "name": "storage.modifier.reference.php"
2864
+ },
2865
+ {
2866
+ "begin": "(array)\\s*(\\()",
2867
+ "beginCaptures": {
2868
+ "1": {
2869
+ "name": "support.function.construct.php"
2870
+ },
2871
+ "2": {
2872
+ "name": "punctuation.definition.array.begin.bracket.round.php"
2873
+ }
2874
+ },
2875
+ "end": "\\)",
2876
+ "endCaptures": {
2877
+ "0": {
2878
+ "name": "punctuation.definition.array.end.bracket.round.php"
2879
+ }
2880
+ },
2881
+ "name": "meta.array.php",
2882
+ "patterns": [
2883
+ {
2884
+ "include": "#parameter-default-types"
2885
+ }
2886
+ ]
2887
+ },
2888
+ {
2889
+ "begin": "\\[",
2890
+ "beginCaptures": {
2891
+ "0": {
2892
+ "name": "punctuation.section.array.begin.php"
2893
+ }
2894
+ },
2895
+ "end": "]|(?=\\?>)",
2896
+ "endCaptures": {
2897
+ "0": {
2898
+ "name": "punctuation.section.array.end.php"
2899
+ }
2900
+ },
2901
+ "patterns": [
2902
+ {
2903
+ "include": "$self"
2904
+ }
2905
+ ]
2906
+ },
2907
+ {
2908
+ "include": "#instantiation"
2909
+ },
2910
+ {
2911
+ "begin": "(?i)(?=[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+(::)\\s*([_a-z\\x7F-\\x{10FFFF}][0-9_a-z\\x7F-\\x{10FFFF}]*)?)",
2912
+ "end": "(?i)(::)\\s*([_a-z\\x7F-\\x{10FFFF}][0-9_a-z\\x7F-\\x{10FFFF}]*)?",
2913
+ "endCaptures": {
2914
+ "1": {
2915
+ "name": "keyword.operator.class.php"
2916
+ },
2917
+ "2": {
2918
+ "name": "constant.other.class.php"
2919
+ }
2920
+ },
2921
+ "patterns": [
2922
+ {
2923
+ "include": "#class-name"
2924
+ }
2925
+ ]
2926
+ },
2927
+ {
2928
+ "include": "#constants"
2929
+ }
2930
+ ]
2931
+ },
2932
+ "php-types": {
2933
+ "patterns": [
2934
+ {
2935
+ "match": "\\?",
2936
+ "name": "keyword.operator.nullable-type.php"
2937
+ },
2938
+ {
2939
+ "match": "[\\&|]",
2940
+ "name": "punctuation.separator.delimiter.php"
2941
+ },
2942
+ {
2943
+ "match": "(?i)\\b(null|int|float|bool|string|array|object|callable|iterable|true|false|mixed|void)\\b",
2944
+ "name": "keyword.other.type.php"
2945
+ },
2946
+ {
2947
+ "match": "(?i)\\b(parent|self)\\b",
2948
+ "name": "storage.type.php"
2949
+ },
2950
+ {
2951
+ "match": "\\(",
2952
+ "name": "punctuation.definition.type.begin.bracket.round.php"
2953
+ },
2954
+ {
2955
+ "match": "\\)",
2956
+ "name": "punctuation.definition.type.end.bracket.round.php"
2957
+ },
2958
+ {
2959
+ "include": "#class-name"
2960
+ }
2961
+ ]
2962
+ },
2963
+ "php_doc": {
2964
+ "patterns": [
2965
+ {
2966
+ "match": "^(?!\\s*\\*).*?(?:(?=\\*/)|$\\n?)",
2967
+ "name": "invalid.illegal.missing-asterisk.phpdoc.php"
2968
+ },
2969
+ {
2970
+ "captures": {
2971
+ "1": {
2972
+ "name": "keyword.other.phpdoc.php"
2973
+ },
2974
+ "2": {
2975
+ "name": "storage.modifier.php"
2976
+ },
2977
+ "3": {
2978
+ "name": "storage.modifier.visibility.${3:/downcase}.php"
2979
+ },
2980
+ "4": {
2981
+ "name": "invalid.illegal.wrong-access-type.phpdoc.php"
2982
+ }
2983
+ },
2984
+ "match": "^\\s*\\*\\s*(@access)\\s+(?i:((p(?:ublic|rivate|rotected)))|(.+))\\s*$"
2985
+ },
2986
+ {
2987
+ "captures": {
2988
+ "1": {
2989
+ "name": "keyword.other.phpdoc.php"
2990
+ },
2991
+ "2": {
2992
+ "name": "markup.underline.link.php"
2993
+ }
2994
+ },
2995
+ "match": "(@xlink)\\s+(.+)\\s*$"
2996
+ },
2997
+ {
2998
+ "begin": "(@(?:global|param|property(-(read|write))?|return|throws|var))\\s+(?=[(?A-Z\\\\_a-z\\x7F-\\x{10FFFF}])",
2999
+ "beginCaptures": {
3000
+ "1": {
3001
+ "name": "keyword.other.phpdoc.php"
3002
+ }
3003
+ },
3004
+ "contentName": "meta.other.type.phpdoc.php",
3005
+ "end": "(?=\\s|\\*/)",
3006
+ "patterns": [
3007
+ {
3008
+ "include": "#php_doc_types_array_multiple"
3009
+ },
3010
+ {
3011
+ "include": "#php_doc_types_array_single"
3012
+ },
3013
+ {
3014
+ "include": "#php_doc_types"
3015
+ },
3016
+ {
3017
+ "match": "[\\&|]",
3018
+ "name": "punctuation.separator.delimiter.php"
3019
+ }
3020
+ ]
3021
+ },
3022
+ {
3023
+ "match": "@(api|abstract|author|category|copyright|example|global|inherit[Dd]oc|internal|license|link|method|property(-(read|write))?|package|param|return|see|since|source|static|subpackage|throws|todo|var|version|uses|deprecated|final|ignore)\\b",
3024
+ "name": "keyword.other.phpdoc.php"
3025
+ },
3026
+ {
3027
+ "captures": {
3028
+ "1": {
3029
+ "name": "keyword.other.phpdoc.php"
3030
+ }
3031
+ },
3032
+ "match": "\\{(@(link|inherit[Dd]oc)).+?}",
3033
+ "name": "meta.tag.inline.phpdoc.php"
3034
+ }
3035
+ ]
3036
+ },
3037
+ "php_doc_types": {
3038
+ "captures": {
3039
+ "0": {
3040
+ "patterns": [
3041
+ {
3042
+ "match": "\\?",
3043
+ "name": "keyword.operator.nullable-type.php"
3044
+ },
3045
+ {
3046
+ "match": "\\b(string|integer|int|boolean|bool|float|double|object|mixed|array|resource|void|null|callback|false|true|self|static)\\b",
3047
+ "name": "keyword.other.type.php"
3048
+ },
3049
+ {
3050
+ "include": "#class-name"
3051
+ },
3052
+ {
3053
+ "match": "[\\&|]",
3054
+ "name": "punctuation.separator.delimiter.php"
3055
+ }
3056
+ ]
3057
+ }
3058
+ },
3059
+ "match": "(?i)\\??[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+([\\&|]\\??[0-9\\\\_a-z\\x7F-\\x{10FFFF}]+)*"
3060
+ },
3061
+ "php_doc_types_array_multiple": {
3062
+ "begin": "\\(",
3063
+ "beginCaptures": {
3064
+ "0": {
3065
+ "name": "punctuation.definition.type.begin.bracket.round.phpdoc.php"
3066
+ }
3067
+ },
3068
+ "end": "(\\))(\\[])?|(?=\\*/)",
3069
+ "endCaptures": {
3070
+ "1": {
3071
+ "name": "punctuation.definition.type.end.bracket.round.phpdoc.php"
3072
+ },
3073
+ "2": {
3074
+ "name": "keyword.other.array.phpdoc.php"
3075
+ }
3076
+ },
3077
+ "patterns": [
3078
+ {
3079
+ "include": "#php_doc_types_array_multiple"
3080
+ },
3081
+ {
3082
+ "include": "#php_doc_types_array_single"
3083
+ },
3084
+ {
3085
+ "include": "#php_doc_types"
3086
+ },
3087
+ {
3088
+ "match": "[\\&|]",
3089
+ "name": "punctuation.separator.delimiter.php"
3090
+ }
3091
+ ]
3092
+ },
3093
+ "php_doc_types_array_single": {
3094
+ "captures": {
3095
+ "1": {
3096
+ "patterns": [
3097
+ {
3098
+ "include": "#php_doc_types"
3099
+ }
3100
+ ]
3101
+ },
3102
+ "2": {
3103
+ "name": "keyword.other.array.phpdoc.php"
3104
+ }
3105
+ },
3106
+ "match": "(?i)([0-9\\\\_a-z\\x7F-\\x{10FFFF}]+)(\\[])"
3107
+ },
3108
+ "regex-double-quoted": {
3109
+ "begin": "\"/(?=(\\\\.|[^\"/])++/[ADSUXeimsux]*\")",
3110
+ "beginCaptures": {
3111
+ "0": {
3112
+ "name": "punctuation.definition.string.begin.php"
3113
+ }
3114
+ },
3115
+ "end": "(/)([ADSUXeimsux]*)(\")",
3116
+ "endCaptures": {
3117
+ "0": {
3118
+ "name": "punctuation.definition.string.end.php"
3119
+ }
3120
+ },
3121
+ "name": "string.regexp.double-quoted.php",
3122
+ "patterns": [
3123
+ {
3124
+ "match": "(\\\\){1,2}[]$.\\[^{}]",
3125
+ "name": "constant.character.escape.regex.php"
3126
+ },
3127
+ {
3128
+ "include": "#interpolation_double_quoted"
3129
+ },
3130
+ {
3131
+ "captures": {
3132
+ "1": {
3133
+ "name": "punctuation.definition.arbitrary-repetition.php"
3134
+ },
3135
+ "3": {
3136
+ "name": "punctuation.definition.arbitrary-repetition.php"
3137
+ }
3138
+ },
3139
+ "match": "(\\{)\\d+(,\\d+)?(})",
3140
+ "name": "string.regexp.arbitrary-repetition.php"
3141
+ },
3142
+ {
3143
+ "begin": "\\[(?:\\^?])?",
3144
+ "captures": {
3145
+ "0": {
3146
+ "name": "punctuation.definition.character-class.php"
3147
+ }
3148
+ },
3149
+ "end": "]",
3150
+ "name": "string.regexp.character-class.php",
3151
+ "patterns": [
3152
+ {
3153
+ "include": "#interpolation_double_quoted"
3154
+ }
3155
+ ]
3156
+ },
3157
+ {
3158
+ "match": "[$*+^]",
3159
+ "name": "keyword.operator.regexp.php"
3160
+ }
3161
+ ]
3162
+ },
3163
+ "regex-single-quoted": {
3164
+ "begin": "'/(?=(\\\\(?:\\\\(?:\\\\['\\\\]?|[^'])|.)|[^'/])++/[ADSUXeimsux]*')",
3165
+ "beginCaptures": {
3166
+ "0": {
3167
+ "name": "punctuation.definition.string.begin.php"
3168
+ }
3169
+ },
3170
+ "end": "(/)([ADSUXeimsux]*)(')",
3171
+ "endCaptures": {
3172
+ "0": {
3173
+ "name": "punctuation.definition.string.end.php"
3174
+ }
3175
+ },
3176
+ "name": "string.regexp.single-quoted.php",
3177
+ "patterns": [
3178
+ {
3179
+ "include": "#single_quote_regex_escape"
3180
+ },
3181
+ {
3182
+ "captures": {
3183
+ "1": {
3184
+ "name": "punctuation.definition.arbitrary-repetition.php"
3185
+ },
3186
+ "3": {
3187
+ "name": "punctuation.definition.arbitrary-repetition.php"
3188
+ }
3189
+ },
3190
+ "match": "(\\{)\\d+(,\\d+)?(})",
3191
+ "name": "string.regexp.arbitrary-repetition.php"
3192
+ },
3193
+ {
3194
+ "begin": "\\[(?:\\^?])?",
3195
+ "captures": {
3196
+ "0": {
3197
+ "name": "punctuation.definition.character-class.php"
3198
+ }
3199
+ },
3200
+ "end": "]",
3201
+ "name": "string.regexp.character-class.php"
3202
+ },
3203
+ {
3204
+ "match": "[$*+^]",
3205
+ "name": "keyword.operator.regexp.php"
3206
+ }
3207
+ ]
3208
+ },
3209
+ "scope-resolution": {
3210
+ "patterns": [
3211
+ {
3212
+ "captures": {
3213
+ "1": {
3214
+ "patterns": [
3215
+ {
3216
+ "match": "\\b(self|static|parent)\\b",
3217
+ "name": "storage.type.php"
3218
+ },
3219
+ {
3220
+ "include": "#class-name"
3221
+ },
3222
+ {
3223
+ "include": "#variable-name"
3224
+ }
3225
+ ]
3226
+ }
3227
+ },
3228
+ "match": "([A-Z\\\\_a-z\\x7F-\\x{10FFFF}][0-9A-Z\\\\_a-z\\x7F-\\x{10FFFF}]*)(?=\\s*::)"
3229
+ },
3230
+ {
3231
+ "begin": "(?i)(::)\\s*([_a-z\\x7F-\\x{10FFFF}][0-9_a-z\\x7F-\\x{10FFFF}]*)\\s*(\\()",
3232
+ "beginCaptures": {
3233
+ "1": {
3234
+ "name": "keyword.operator.class.php"
3235
+ },
3236
+ "2": {
3237
+ "name": "entity.name.function.php"
3238
+ },
3239
+ "3": {
3240
+ "name": "punctuation.definition.arguments.begin.bracket.round.php"
3241
+ }
3242
+ },
3243
+ "end": "\\)|(?=\\?>)",
3244
+ "endCaptures": {
3245
+ "0": {
3246
+ "name": "punctuation.definition.arguments.end.bracket.round.php"
3247
+ }
3248
+ },
3249
+ "name": "meta.method-call.static.php",
3250
+ "patterns": [
3251
+ {
3252
+ "include": "#named-arguments"
3253
+ },
3254
+ {
3255
+ "include": "$self"
3256
+ }
3257
+ ]
3258
+ },
3259
+ {
3260
+ "captures": {
3261
+ "1": {
3262
+ "name": "keyword.operator.class.php"
3263
+ },
3264
+ "2": {
3265
+ "name": "keyword.other.class.php"
3266
+ }
3267
+ },
3268
+ "match": "(?i)(::)\\s*(class)\\b"
3269
+ },
3270
+ {
3271
+ "captures": {
3272
+ "1": {
3273
+ "name": "keyword.operator.class.php"
3274
+ },
3275
+ "2": {
3276
+ "name": "variable.other.class.php"
3277
+ },
3278
+ "3": {
3279
+ "name": "punctuation.definition.variable.php"
3280
+ },
3281
+ "4": {
3282
+ "name": "constant.other.class.php"
3283
+ }
3284
+ },
3285
+ "match": "(?i)(::)\\s*(?:((\\$+)[_a-z\\x7F-\\x{10FFFF}][0-9_a-z\\x7F-\\x{10FFFF}]*)|([_a-z\\x7F-\\x{10FFFF}][0-9_a-z\\x7F-\\x{10FFFF}]*))?"
3286
+ }
3287
+ ]
3288
+ },
3289
+ "single_quote_regex_escape": {
3290
+ "match": "\\\\(?:\\\\(?:\\\\['\\\\]?|[^'])|.)",
3291
+ "name": "constant.character.escape.php"
3292
+ },
3293
+ "sql-string-double-quoted": {
3294
+ "begin": "\"\\s*(?=(SELECT|INSERT|UPDATE|DELETE|CREATE|REPLACE|ALTER|AND|WITH)\\b)",
3295
+ "beginCaptures": {
3296
+ "0": {
3297
+ "name": "punctuation.definition.string.begin.php"
3298
+ }
3299
+ },
3300
+ "contentName": "source.sql.embedded.php",
3301
+ "end": "\"",
3302
+ "endCaptures": {
3303
+ "0": {
3304
+ "name": "punctuation.definition.string.end.php"
3305
+ }
3306
+ },
3307
+ "name": "string.quoted.double.sql.php",
3308
+ "patterns": [
3309
+ {
3310
+ "captures": {
3311
+ "1": {
3312
+ "name": "punctuation.definition.comment.sql"
3313
+ }
3314
+ },
3315
+ "match": "(#)(\\\\\"|[^\"])*(?=\"|$)",
3316
+ "name": "comment.line.number-sign.sql"
3317
+ },
3318
+ {
3319
+ "captures": {
3320
+ "1": {
3321
+ "name": "punctuation.definition.comment.sql"
3322
+ }
3323
+ },
3324
+ "match": "(--)(\\\\\"|[^\"])*(?=\"|$)",
3325
+ "name": "comment.line.double-dash.sql"
3326
+ },
3327
+ {
3328
+ "match": "\\\\[\"'\\\\`]",
3329
+ "name": "constant.character.escape.php"
3330
+ },
3331
+ {
3332
+ "match": "'(?=((\\\\')|[^\"'])*(\"|$))",
3333
+ "name": "string.quoted.single.unclosed.sql"
3334
+ },
3335
+ {
3336
+ "match": "`(?=((\\\\`)|[^\"`])*(\"|$))",
3337
+ "name": "string.quoted.other.backtick.unclosed.sql"
3338
+ },
3339
+ {
3340
+ "begin": "'",
3341
+ "end": "'",
3342
+ "name": "string.quoted.single.sql",
3343
+ "patterns": [
3344
+ {
3345
+ "include": "#interpolation_double_quoted"
3346
+ }
3347
+ ]
3348
+ },
3349
+ {
3350
+ "begin": "`",
3351
+ "end": "`",
3352
+ "name": "string.quoted.other.backtick.sql",
3353
+ "patterns": [
3354
+ {
3355
+ "include": "#interpolation_double_quoted"
3356
+ }
3357
+ ]
3358
+ },
3359
+ {
3360
+ "include": "#interpolation_double_quoted"
3361
+ },
3362
+ {
3363
+ "include": "source.sql"
3364
+ }
3365
+ ]
3366
+ },
3367
+ "sql-string-single-quoted": {
3368
+ "begin": "'\\s*(?=(SELECT|INSERT|UPDATE|DELETE|CREATE|REPLACE|ALTER|AND|WITH)\\b)",
3369
+ "beginCaptures": {
3370
+ "0": {
3371
+ "name": "punctuation.definition.string.begin.php"
3372
+ }
3373
+ },
3374
+ "contentName": "source.sql.embedded.php",
3375
+ "end": "'",
3376
+ "endCaptures": {
3377
+ "0": {
3378
+ "name": "punctuation.definition.string.end.php"
3379
+ }
3380
+ },
3381
+ "name": "string.quoted.single.sql.php",
3382
+ "patterns": [
3383
+ {
3384
+ "captures": {
3385
+ "1": {
3386
+ "name": "punctuation.definition.comment.sql"
3387
+ }
3388
+ },
3389
+ "match": "(#)(\\\\'|[^'])*(?='|$)",
3390
+ "name": "comment.line.number-sign.sql"
3391
+ },
3392
+ {
3393
+ "captures": {
3394
+ "1": {
3395
+ "name": "punctuation.definition.comment.sql"
3396
+ }
3397
+ },
3398
+ "match": "(--)(\\\\'|[^'])*(?='|$)",
3399
+ "name": "comment.line.double-dash.sql"
3400
+ },
3401
+ {
3402
+ "match": "\\\\[\"'\\\\`]",
3403
+ "name": "constant.character.escape.php"
3404
+ },
3405
+ {
3406
+ "match": "N(?=')"
3407
+ },
3408
+ {
3409
+ "match": "`(?=((\\\\`)|[^'`])*('|$))",
3410
+ "name": "string.quoted.other.backtick.unclosed.sql"
3411
+ },
3412
+ {
3413
+ "match": "\"(?=((\\\\\")|[^\"'])*('|$))",
3414
+ "name": "string.quoted.double.unclosed.sql"
3415
+ },
3416
+ {
3417
+ "include": "source.sql"
3418
+ }
3419
+ ]
3420
+ },
3421
+ "string-backtick": {
3422
+ "begin": "`",
3423
+ "beginCaptures": {
3424
+ "0": {
3425
+ "name": "punctuation.definition.string.begin.php"
3426
+ }
3427
+ },
3428
+ "end": "`",
3429
+ "endCaptures": {
3430
+ "0": {
3431
+ "name": "punctuation.definition.string.end.php"
3432
+ }
3433
+ },
3434
+ "name": "string.interpolated.php",
3435
+ "patterns": [
3436
+ {
3437
+ "match": "\\\\`",
3438
+ "name": "constant.character.escape.php"
3439
+ },
3440
+ {
3441
+ "include": "#interpolation"
3442
+ }
3443
+ ]
3444
+ },
3445
+ "string-double-quoted": {
3446
+ "begin": "\"",
3447
+ "beginCaptures": {
3448
+ "0": {
3449
+ "name": "punctuation.definition.string.begin.php"
3450
+ }
3451
+ },
3452
+ "end": "\"",
3453
+ "endCaptures": {
3454
+ "0": {
3455
+ "name": "punctuation.definition.string.end.php"
3456
+ }
3457
+ },
3458
+ "name": "string.quoted.double.php",
3459
+ "patterns": [
3460
+ {
3461
+ "include": "#interpolation_double_quoted"
3462
+ }
3463
+ ]
3464
+ },
3465
+ "string-single-quoted": {
3466
+ "begin": "'",
3467
+ "beginCaptures": {
3468
+ "0": {
3469
+ "name": "punctuation.definition.string.begin.php"
3470
+ }
3471
+ },
3472
+ "end": "'",
3473
+ "endCaptures": {
3474
+ "0": {
3475
+ "name": "punctuation.definition.string.end.php"
3476
+ }
3477
+ },
3478
+ "name": "string.quoted.single.php",
3479
+ "patterns": [
3480
+ {
3481
+ "match": "\\\\['\\\\]",
3482
+ "name": "constant.character.escape.php"
3483
+ }
3484
+ ]
3485
+ },
3486
+ "strings": {
3487
+ "patterns": [
3488
+ {
3489
+ "include": "#regex-double-quoted"
3490
+ },
3491
+ {
3492
+ "include": "#sql-string-double-quoted"
3493
+ },
3494
+ {
3495
+ "include": "#string-double-quoted"
3496
+ },
3497
+ {
3498
+ "include": "#regex-single-quoted"
3499
+ },
3500
+ {
3501
+ "include": "#sql-string-single-quoted"
3502
+ },
3503
+ {
3504
+ "include": "#string-single-quoted"
3505
+ }
3506
+ ]
3507
+ },
3508
+ "support": {
3509
+ "patterns": [
3510
+ {
3511
+ "match": "(?i)\\bapc_(store|sma_info|compile_file|clear_cache|cas|cache_info|inc|dec|define_constants|delete(_file)?|exists|fetch|load_constants|add|bin_(dump|load)(file)?)\\b",
3512
+ "name": "support.function.apc.php"
3513
+ },
3514
+ {
3515
+ "match": "(?i)\\b(compact|count|current|end|extract|in_array|key(_exists)?|list|nat(case)?sort|next|pos|prev|range|reset|shuffle|sizeof|[ak]?r?sort|u[ak]?sort|array_(all|any|change_key_case|chunk|column|combine|count_values|fill(_keys)?|filter|find(_key)?|flip|is_list|key_(exists|first|last)|keys|map|multisort|pad|pop|product|push|rand|reduce|reverse|search|shift|slice|splice|sum|unique|unshift|values|u?(diff|intersect)(_u?(key|assoc))?|(walk|replace|merge)(_recursive)?))\\b",
3516
+ "name": "support.function.array.php"
3517
+ },
3518
+ {
3519
+ "match": "(?i)\\b(connection_(aborted|status)|constant|defined?|die|eval|exit|get_browser|__halt_compiler|highlight_(file|string)|hrtime|ignore_user_abort|pack|php_strip_whitespace|show_source|u?sleep|sys_getloadavg|time_(nanosleep|sleep_until)|uniqid|unpack)\\b",
3520
+ "name": "support.function.basic_functions.php"
3521
+ },
3522
+ {
3523
+ "match": "(?i)\\bbc(add|ceil|comp|(div|pow)(mod)?|floor|mod|mul|round|scale|sqrt|sub)\\b",
3524
+ "name": "support.function.bcmath.php"
3525
+ },
3526
+ {
3527
+ "match": "(?i)\\bblenc_encrypt\\b",
3528
+ "name": "support.function.blenc.php"
3529
+ },
3530
+ {
3531
+ "match": "(?i)\\bbz(compress|close|open|decompress|errstr|errno|error|flush|write|read)\\b",
3532
+ "name": "support.function.bz2.php"
3533
+ },
3534
+ {
3535
+ "match": "(?i)\\b((French|Gregorian|Jewish|Julian)ToJD|cal_(to_jd|info|days_in_month|from_jd)|unixtojd|jdto(unix|jewish)|easter_(da(?:te|ys))|JD(MonthName|To(Gregorian|Julian|French)|DayOfWeek))\\b",
3536
+ "name": "support.function.calendar.php"
3537
+ },
3538
+ {
3539
+ "match": "(?i)\\b(__autoload|class_alias|(class|interface|method|property|trait|enum)_exists|is_(a|subclass_of)|get_(class(_(vars|methods))?|(called|parent)_class|(mangled_)?object_vars|declared_(classes|interfaces|traits)))\\b",
3540
+ "name": "support.function.classobj.php"
3541
+ },
3542
+ {
3543
+ "match": "(?i)\\b(com_(create_guid|print_typeinfo|event_sink|load_typelib|get_active_object|message_pump)|variant_(sub|set(_type)?|not|neg|cast|cat|cmp|int|idiv|imp|or|div|date_(from|to)_timestamp|pow|eqv|fix|and|add|abs|round|get_type|xor|mod|mul))\\b",
3544
+ "name": "support.function.com.php"
3545
+ },
3546
+ {
3547
+ "match": "(?i)\\b(isset|unset|eval|empty|list)\\b",
3548
+ "name": "support.function.construct.php"
3549
+ },
3550
+ {
3551
+ "match": "(?i)\\b(print|echo)\\b",
3552
+ "name": "support.function.construct.output.php"
3553
+ },
3554
+ {
3555
+ "match": "(?i)\\bctype_(space|cntrl|digit|upper|punct|print|lower|alnum|alpha|graph|xdigit)\\b",
3556
+ "name": "support.function.ctype.php"
3557
+ },
3558
+ {
3559
+ "match": "(?i)\\bcurl_(close|copy_handle|errno|error|escape|exec|getinfo|init|pause|reset|setopt(_array)?|strerror|unescape|upkeep|version|multi_((add|remove)_handle|close|errno|exec|getcontent|info_read|init|select|setopt|strerror)|share_(close|errno|init(_persistent)?|setopt|strerror))\\b",
3560
+ "name": "support.function.curl.php"
3561
+ },
3562
+ {
3563
+ "match": "(?i)\\b(strtotime|str[fp]time|checkdate|time|timezone_name_(from_abbr|get)|idate|timezone_((location|offset|transitions|version)_get|(abbreviations|identifiers)_list|open)|date(_(sun(rise|set)|sun_info|sub|create(_immutable)?(_from_format)?|timestamp_[gs]et|timezone_[gs]et|time_set|isodate_set|interval_(create_from_date_string|format)|offset_get|diff|default_timezone_[gs]et|date_set|parse(_from_format)?|format|add|get_last_errors|modify))?|localtime|get(date|timeofday)|gm(strftime|date|mktime)|microtime|mktime)\\b",
3564
+ "name": "support.function.datetime.php"
3565
+ },
3566
+ {
3567
+ "match": "(?i)\\bdba_(sync|handlers|nextkey|close|insert|optimize|open|delete|popen|exists|key_split|firstkey|fetch|list|replace)\\b",
3568
+ "name": "support.function.dba.php"
3569
+ },
3570
+ {
3571
+ "match": "(?i)\\bdbx_(sort|connect|compare|close|escape_string|error|query|fetch_row)\\b",
3572
+ "name": "support.function.dbx.php"
3573
+ },
3574
+ {
3575
+ "match": "(?i)\\b(scandir|chdir|chroot|closedir|opendir|dir|rewinddir|readdir|getcwd)\\b",
3576
+ "name": "support.function.dir.php"
3577
+ },
3578
+ {
3579
+ "match": "(?i)\\beio_(sync(fs)?|sync_file_range|symlink|stat(vfs)?|sendfile|set_min_parallel|set_max_(idle|poll_(reqs|time)|parallel)|seek|n(threads|op|pending|reqs|ready)|chown|chmod|custom|close|cancel|truncate|init|open|dup2|unlink|utime|poll|event_loop|f(sync|stat(vfs)?|chown|chmod|truncate|datasync|utime|allocate)|write|lstat|link|rename|realpath|read(ahead|dir|link)?|rmdir|get_(event_stream|last_error)|grp(_(add|cancel|limit))?|mknod|mkdir|busy)\\b",
3580
+ "name": "support.function.eio.php"
3581
+ },
3582
+ {
3583
+ "match": "(?i)\\benchant_(dict_(store_replacement|suggest|check|is_in_session|describe|quick_check|add_to_(personal|session)|get_error)|broker_(set_ordering|init|dict_exists|describe|free(_dict)?|list_dicts|request_(pwl_)?dict|get_error))\\b",
3584
+ "name": "support.function.enchant.php"
3585
+ },
3586
+ {
3587
+ "match": "(?i)\\b(split(i)?|sql_regcase|ereg(i)?(_replace)?)\\b",
3588
+ "name": "support.function.ereg.php"
3589
+ },
3590
+ {
3591
+ "match": "(?i)\\b((restore|set)_(e(?:rror|xception))_handler|trigger_error|debug_(print_)?backtrace|user_error|error_(log|reporting|(clear|get)_last))\\b",
3592
+ "name": "support.function.errorfunc.php"
3593
+ },
3594
+ {
3595
+ "match": "(?i)\\b(shell_exec|system|passthru|proc_(nice|close|terminate|open|get_status)|escapeshell(arg|cmd)|exec)\\b",
3596
+ "name": "support.function.exec.php"
3597
+ },
3598
+ {
3599
+ "match": "(?i)\\b(exif_(thumbnail|tagname|imagetype|read_data)|read_exif_data)\\b",
3600
+ "name": "support.function.exif.php"
3601
+ },
3602
+ {
3603
+ "match": "(?i)\\bfann_((duplicate|length|merge|shuffle|subset)_train_data|scale_(train(_data)?|((?:in|out)put)(_train_data)?)|set_(scaling_params|sarprop_(step_error_(shift|threshold_factor)|temperature|weight_decay_shift)|cascade_(num_candidate_groups|candidate_(change_fraction|limit|stagnation_epochs)|output_(change_fraction|stagnation_epochs)|weight_multiplier|activation_(functions|steepnesses)|(m(?:ax|in))_(cand|out)_epochs)|callback|training_algorithm|train_(error|stop)_function|((?:in|out)put)_scaling_params|error_log|quickprop_(decay|mu)|weight(_array)?|learning_(momentum|rate)|bit_fail_limit|activation_(function|steepness)(_(hidden|layer|output))?|rprop_(((?:de|in)crease)_factor|delta_(max|min|zero)))|save(_train)?|num_((?:in|out)put)_train_data|copy|clear_scaling_params|cascadetrain_on_(file|data)|create_((s(?:parse|hortcut|tandard))(_array)?|train(_from_callback)?|from_file)|test(_data)?|train(_(on_(file|data)|epoch))?|init_weights|descale_(input|output|train)|destroy(_train)?|print_error|run|reset_(MSE|err(no|str))|read_train_from_file|randomize_weights|get_(sarprop_(step_error_(shift|threshold_factor)|temperature|weight_decay_shift)|num_(input|output|layers)|network_type|MSE|connection_(array|rate)|bias_array|bit_fail(_limit)?|cascade_(num_(candidate(?:s|_groups))|(candidate|output)_(change_fraction|limit|stagnation_epochs)|weight_multiplier|activation_(functions|steepnesses)(_count)?|(m(?:ax|in))_(cand|out)_epochs)|total_((?:connecti|neur)ons)|training_algorithm|train_(error|stop)_function|err(no|str)|quickprop_(decay|mu)|learning_(momentum|rate)|layer_array|activation_(function|steepness)|rprop_(((?:de|in)crease)_factor|delta_(max|min|zero))))\\b",
3604
+ "name": "support.function.fann.php"
3605
+ },
3606
+ {
3607
+ "match": "(?i)\\b(symlink|stat|set_file_buffer|chown|chgrp|chmod|copy|clearstatcache|touch|tempnam|tmpfile|is_(dir|(uploaded_)?file|executable|link|readable|writ(e)?able)|disk_(free|total)_space|diskfreespace|dirname|delete|unlink|umask|pclose|popen|pathinfo|parse_ini_(file|string)|fscanf|fstat|fseek|fnmatch|fclose|ftell|ftruncate|file(size|[acm]time|type|inode|owner|perms|group)?|file_(exists|(get|put)_contents)|f(open|puts|putcsv|passthru|eof|flush|write|lock|read|gets(s)?|getc(sv)?)|lstat|lchown|lchgrp|link(info)?|rename|rewind|read(file|link)|realpath(_cache_(get|size))?|rmdir|glob|move_uploaded_file|mkdir|basename|f(data)?sync)\\b",
3608
+ "name": "support.function.file.php"
3609
+ },
3610
+ {
3611
+ "match": "(?i)\\b(finfo_(set_flags|close|open|file|buffer)|mime_content_type)\\b",
3612
+ "name": "support.function.fileinfo.php"
3613
+ },
3614
+ {
3615
+ "match": "(?i)\\bfilter_(has_var|input(_array)?|id|var(_array)?|list)\\b",
3616
+ "name": "support.function.filter.php"
3617
+ },
3618
+ {
3619
+ "match": "(?i)\\b(f(?:astcgi_finish_request|pm_get_status))\\b",
3620
+ "name": "support.function.fpm.php"
3621
+ },
3622
+ {
3623
+ "match": "(?i)\\b(call_user_(func|method)(_array)?|create_function|unregister_tick_function|forward_static_call(_array)?|function_exists|func_(num_args|get_arg(s)?)|register_(shutdown|tick)_function|get_defined_functions)\\b",
3624
+ "name": "support.function.funchand.php"
3625
+ },
3626
+ {
3627
+ "match": "(?i)\\b((n)?gettext|textdomain|d((?:(n)?|c(n)?)gettext)|bind(textdomain|_textdomain_codeset))\\b",
3628
+ "name": "support.function.gettext.php"
3629
+ },
3630
+ {
3631
+ "match": "(?i)\\bgmp_(scan[01]|strval|sign|sub|setbit|sqrt(rem)?|hamdist|neg|nextprime|com|clrbit|cmp|testbit|intval|init|invert|import|or|div(exact)?|div_(qr??|r)|jacobi|popcount|pow(m)?|perfect_(square|power)|prob_prime|export|fact|legendre|and|add|abs|root(rem)?|random(_(bits|range|seed))?|gcd(ext)?|xor|mod|mul|binomial|kronecker|lcm)\\b",
3632
+ "name": "support.function.gmp.php"
3633
+ },
3634
+ {
3635
+ "match": "(?i)\\bhash(_(algos|copy|equals|file|final|hkdf|hmac(_(file|algos)?)?|init|pbkdf2|update(_(file|stream))?))?\\b",
3636
+ "name": "support.function.hash.php"
3637
+ },
3638
+ {
3639
+ "match": "(?i)\\b(http_(support|send_(status|stream|content_(disposition|type)|data|file|last_modified)|head|negotiate_(charset|content_type|language)|chunked_decode|cache_(etag|last_modified)|throttle|inflate|deflate|date|post_(data|fields)|put_(data|file|stream)|persistent_handles_(count|clean|ident)|parse_(cookie|headers|message|params)|redirect|request(_(method_(exists|name|(un)?register)|body_encode))?|get(_request_(headers|body(_stream)?))?|match_(etag|modified|request_header)|build_(cookie|str|url))|ob_(etag|deflate|inflate)handler)\\b",
3640
+ "name": "support.function.http.php"
3641
+ },
3642
+ {
3643
+ "match": "(?i)\\b(iconv(_(str(pos|len|rpos)|substr|[gs]et_encoding|mime_(decode(_headers)?|encode)))?|ob_iconv_handler)\\b",
3644
+ "name": "support.function.iconv.php"
3645
+ },
3646
+ {
3647
+ "match": "(?i)\\biis_((st(?:art|op))_(serv(?:ice|er))|set_(script_map|server_rights|dir_security|app_settings)|(add|remove)_server|get_(script_map|service_state|server_(rights|by_(comment|path))|dir_security))\\b",
3648
+ "name": "support.function.iisfunc.php"
3649
+ },
3650
+ {
3651
+ "match": "(?i)\\b(iptc(embed|parse)|(jpeg|png)2wbmp|gd_info|getimagesize(fromstring)?|image(s[xy]|scale|(char|string)(up)?|set(clip|style|thickness|tile|interpolation|pixel|brush)|savealpha|convolution|copy(resampled|resized|merge(gray)?)?|colors(forindex|total)|color(set|closest(alpha|hwb)?|transparent|deallocate|(allocate|exact|resolve)(alpha)?|at|match)|crop(auto)?|create(truecolor|from(avif|bmp|string|jpeg|png|wbmp|webp|gif|gd(2(part)?)?|tga|xpm|xbm))?|types|ttf(bbox|text)|truecolortopalette|istruecolor|interlace|2wbmp|destroy|dashedline|jpeg|_type_to_(extension|mime_type)|ps(slantfont|text|(encode|extend|free|load)font|bbox)|png|polygon|palette(copy|totruecolor)|ellipse|ft(text|bbox)|filter|fill|filltoborder|filled(arc|ellipse|polygon|rectangle)|font(height|width)|flip|webp|wbmp|line|loadfont|layereffect|antialias|affine(matrix(concat|get))?|alphablending|arc|rotate|rectangle|gif|gd2?|gammacorrect|grab(screen|window)|xbm|resolution|openpolygon|get(clip|interpolation)|avif|bmp))\\b",
3652
+ "name": "support.function.image.php"
3653
+ },
3654
+ {
3655
+ "match": "(?i)\\b(sys_get_temp_dir|set_(time_limit|include_path|magic_quotes_runtime)|cli_[gs]et_process_title|ini_(alter|get(_all)?|restore|set)|zend_(thread_id|version|logo_guid)|dl|php(credits|info|version)|php_(sapi_name|ini_(scanned_files|loaded_file)|uname|logo_guid)|putenv|extension_loaded|version_compare|assert(_options)?|restore_include_path|gc_(collect_cycles|disable|enable(d)?)|getopt|get_(cfg_var|current_user|defined_constants|extension_funcs|include_path|included_files|loaded_extensions|magic_quotes_(gpc|runtime)|required_files|resources)|get(env|lastmod|rusage|my(inode|[gpu]id))|memory_get_(peak_)?usage|main|magic_quotes_runtime)\\b",
3656
+ "name": "support.function.info.php"
3657
+ },
3658
+ {
3659
+ "match": "(?i)\\bibase_(set_event_handler|service_((?:at|de)tach)|server_info|num_(fields|params)|name_result|connect|commit(_ret)?|close|trans|delete_user|drop_db|db_info|pconnect|param_info|prepare|err(code|msg)|execute|query|field_info|fetch_(assoc|object|row)|free_(event_handler|query|result)|wait_event|add_user|affected_rows|rollback(_ret)?|restore|gen_id|modify_user|maintain_db|backup|blob_(cancel|close|create|import|info|open|echo|add|get))\\b",
3660
+ "name": "support.function.interbase.php"
3661
+ },
3662
+ {
3663
+ "match": "(?i)\\b(normalizer_(normalize|is_normalized)|idn_to_(unicode|utf8|ascii)|numfmt_(set_(symbol|(text_)?attribute|pattern)|create|(parse|format)(_currency)?|get_(symbol|(text_)?attribute|pattern|error_(code|message)|locale))|collator_(sort(_with_sort_keys)?|set_(attribute|strength)|compare|create|asort|get_(strength|sort_key|error_(code|message)|locale|attribute))|transliterator_(create(_(inverse|from_rules))?|transliterate|list_ids|get_error_(code|message))|intl(cal|tz)_get_error_(code|message)|intl_(is_failure|error_name|get_error_(code|message))|datefmt_(set_(calendar|lenient|pattern|timezone(_id)?)|create|is_lenient|parse|format(_object)?|localtime|get_(calendar(_object)?|time(type|zone(_id)?)|datetype|pattern|error_(code|message)|locale))|locale_(set_default|compose|canonicalize|parse|filter_matches|lookup|accept_from_http|get_(script|display_(script|name|variant|language|region)|default|primary_language|keywords|all_variants|region))|resourcebundle_(create|count|locales|get(_(error_(code|message)))?)|grapheme_(str(i?str|r?i?pos|len|_split)|substr|extract)|msgfmt_(set_pattern|create|(format|parse)(_message)?|get_(pattern|error_(code|message)|locale)))\\b",
3664
+ "name": "support.function.intl.php"
3665
+ },
3666
+ {
3667
+ "match": "(?i)\\bjson_(decode|encode|last_error(_msg)?|validate)\\b",
3668
+ "name": "support.function.json.php"
3669
+ },
3670
+ {
3671
+ "match": "(?i)\\bldap_(start|tls|sort|search|sasl_bind|set_(option|rebind_proc)|(first|next)_(attribute|entry|reference)|connect|control_paged_result(_response)?|count_entries|compare|close|t61_to_8859|8859_to_t61|dn2ufn|delete|unbind|parse_(re(?:ference|sult))|escape|errno|err2str|error|explode_dn|bind|free_result|list|add|rename|read|get_(option|dn|entries|values(_len)?|attributes)|modify(_batch)?|mod_(add|del|replace))\\b",
3672
+ "name": "support.function.ldap.php"
3673
+ },
3674
+ {
3675
+ "match": "(?i)\\blibxml_(set_(streams_context|external_entity_loader)|clear_errors|disable_entity_loader|use_internal_errors|get_(errors|last_error))\\b",
3676
+ "name": "support.function.libxml.php"
3677
+ },
3678
+ {
3679
+ "match": "(?i)\\b(ezmlm_hash|mail)\\b",
3680
+ "name": "support.function.mail.php"
3681
+ },
3682
+ {
3683
+ "match": "(?i)\\b(a?(cos|sin|tan)h?|sqrt|srand|hypot|hexdec|ceil|is_(nan|(in)?finite)|octdec|dec(hex|oct|bin)|deg2rad|pi|pow|exp(m1)?|floor|f(div|mod|pow)|lcg_value|log(1[0p])?|atan2|abs|round|rand|rad2deg|getrandmax|mt_(srand|rand|getrandmax)|max|min|bindec|base_convert|intdiv)\\b",
3684
+ "name": "support.function.math.php"
3685
+ },
3686
+ {
3687
+ "match": "(?i)\\bmb_(str(cut|str|to(lower|upper)|istr|ipos|imwidth|pos|width|len|rchr|richr|ripos|rpos|_pad|_split)|substitute_character|substr(_count)?|split|send_mail|http_((?:in|out)put)|check_encoding|convert_(case|encoding|kana|variables)|internal_encoding|output_handler|decode_(numericentity|mimeheader)|detect_(encoding|order)|parse_str|preferred_mime_name|encoding_aliases|encode_(numericentity|mimeheader)|ereg(i(_replace)?)?|ereg_(search(_(get(pos|regs)|init|regs|(set)?pos))?|replace(_callback)?|match)|list_encodings|language|regex_(set_options|encoding)|get_info|[lr]?trim|[lu]cfirst|ord|chr|scrub)\\b",
3688
+ "name": "support.function.mbstring.php"
3689
+ },
3690
+ {
3691
+ "match": "(?i)\\b(m(?:crypt_(cfb|create_iv|cbc|ofb|decrypt|encrypt|ecb|list_(algorithms|modes)|generic(_((de)?init|end))?|enc_(self_test|is_block_(algorithm|algorithm_mode|mode)|get_(supported_key_sizes|(block|iv|key)_size|(algorithms|modes)_name))|get_(cipher_name|(block|iv|key)_size)|module_(close|self_test|is_block_(algorithm|algorithm_mode|mode)|open|get_(supported_key_sizes|algo_(block|key)_size)))|decrypt_generic))\\b",
3692
+ "name": "support.function.mcrypt.php"
3693
+ },
3694
+ {
3695
+ "match": "(?i)\\bmemcache_debug\\b",
3696
+ "name": "support.function.memcache.php"
3697
+ },
3698
+ {
3699
+ "match": "(?i)\\bmhash(_(count|keygen_s2k|get_(hash_name|block_size)))?\\b",
3700
+ "name": "support.function.mhash.php"
3701
+ },
3702
+ {
3703
+ "match": "(?i)\\b(log_(cmd_(insert|delete|update)|killcursor|write_batch|reply|getmore)|bson_((?:de|en)code))\\b",
3704
+ "name": "support.function.mongo.php"
3705
+ },
3706
+ {
3707
+ "match": "(?i)\\bmysql_(stat|set_charset|select_db|num_(fields|rows)|connect|client_encoding|close|create_db|escape_string|thread_id|tablename|insert_id|info|data_seek|drop_db|db_(name|query)|unbuffered_query|pconnect|ping|errno|error|query|field_(seek|name|type|table|flags|len)|fetch_(object|field|lengths|assoc|array|row)|free_result|list_(tables|dbs|processes|fields)|affected_rows|result|real_escape_string|get_(client|host|proto|server)_info)\\b",
3708
+ "name": "support.function.mysql.php"
3709
+ },
3710
+ {
3711
+ "match": "(?i)\\bmysqli_(ssl_set|store_result|stat|send_(query|long_data)|set_(charset|opt|local_infile_(default|handler))|stmt_(store_result|send_long_data|next_result|close|init|data_seek|prepare|execute|fetch|free_result|attr_[gs]et|result_metadata|reset|get_(result|warnings)|more_results|bind_(param|result))|select_db|slave_query|savepoint|next_result|change_user|character_set_name|connect|commit|client_encoding|close|thread_safe|init|options|((?:en|dis)able)_(r(?:eads_from_master|pl_parse))|dump_debug_info|debug|data_seek|use_result|ping|poll|param_count|prepare|escape_string|execute|embedded_server_(start|end)|kill|query|field_seek|free_result|autocommit|rollback|report|refresh|fetch(_(object|fields|field(_direct)?|assoc|all|array|row))?|rpl_(parse_enabled|probe|query_type)|release_savepoint|reap_async_query|real_(connect|escape_string|query)|more_results|multi_query|get_(charset|connection_stats|client_(stats|info|version)|cache_stats|warnings|links_stats|metadata)|master_query|bind_(param|result)|begin_transaction)\\b",
3712
+ "name": "support.function.mysqli.php"
3713
+ },
3714
+ {
3715
+ "match": "(?i)\\bmysqlnd_memcache_(set|get_config)\\b",
3716
+ "name": "support.function.mysqlnd-memcache.php"
3717
+ },
3718
+ {
3719
+ "match": "(?i)\\bmysqlnd_ms_(set_(user_pick_server|qos)|dump_servers|query_is_select|fabric_select_(shard|global)|get_(stats|last_(used_connection|gtid))|xa_(commit|rollback|gc|begin)|match_wild)\\b",
3720
+ "name": "support.function.mysqlnd-ms.php"
3721
+ },
3722
+ {
3723
+ "match": "(?i)\\bmysqlnd_qc_(set_(storage_handler|cache_condition|is_select|user_handlers)|clear_cache|get_(normalized_query_trace_log|core_stats|cache_info|query_trace_log|available_handlers))\\b",
3724
+ "name": "support.function.mysqlnd-qc.php"
3725
+ },
3726
+ {
3727
+ "match": "(?i)\\bmysqlnd_uh_(set_(statement|connection)_proxy|convert_to_mysqlnd)\\b",
3728
+ "name": "support.function.mysqlnd-uh.php"
3729
+ },
3730
+ {
3731
+ "match": "(?i)\\b(syslog|socket_(set_(blocking|timeout)|get_status)|set(raw)?cookie|http_response_code|openlog|headers_(list|sent)|header(_(re(?:gister_callback|move)))?|checkdnsrr|closelog|inet_(ntop|pton)|ip2long|openlog|dns_(check_record|get_(record|mx))|define_syslog_variables|(p)?fsockopen|long2ip|get(servby(name|port)|host(name|by(name(l)?|addr))|protoby(n(?:ame|umber))|mxrr)|http_(clear|get)_last_response_headers|net_get_interfaces|request_parse_body)\\b",
3732
+ "name": "support.function.network.php"
3733
+ },
3734
+ {
3735
+ "match": "(?i)\\bnsapi_(virtual|response_headers|request_headers)\\b",
3736
+ "name": "support.function.nsapi.php"
3737
+ },
3738
+ {
3739
+ "match": "(?i)\\b(oci(?:(statementtype|setprefetch|serverversion|savelob(file)?|numcols|new(collection|cursor|descriptor)|nlogon|column(scale|size|name|type(raw)?|isnull|precision)|coll(size|trim|assign(elem)?|append|getelem|max)|commit|closelob|cancel|internaldebug|definebyname|plogon|parse|error|execute|fetch(statement|into)?|free(statement|collection|cursor|desc)|write(temporarylob|lobtofile)|loadlob|log(o(?:n|ff))|rowcount|rollback|result|bindbyname)|_(statement_type|set_(client_(i(?:nfo|dentifier))|prefetch|edition|action|module_name)|server_version|num_(fields|rows)|new_(connect|collection|cursor|descriptor)|connect|commit|client_version|close|cancel|internal_debug|define_by_name|pconnect|password_change|parse|error|execute|bind_(array_)?by_name|field_(scale|size|name|type(_raw)?|is_null|precision)|fetch(_(object|assoc|all|array|row))?|free_(statement|descriptor)|lob_(copy|is_equal)|rollback|result|get_implicit_resultset)))\\b",
3740
+ "name": "support.function.oci8.php"
3741
+ },
3742
+ {
3743
+ "match": "(?i)\\bopcache_(compile_file|invalidate|is_script_cached|reset|get_(status|configuration))\\b",
3744
+ "name": "support.function.opcache.php"
3745
+ },
3746
+ {
3747
+ "match": "(?i)\\bopenssl_(sign|spki_(new|export(_challenge)?|verify)|seal|csr_(sign|new|export(_to_file)?|get_(subject|public_key))|cipher_(iv|key)_length|open|dh_compute_key|digest|decrypt|public_((?:de|en)crypt)|encrypt|error_string|pkcs12_(export(_to_file)?|read)|(cms|pkcs7)_(sign|decrypt|encrypt|verify|read)|verify|free_key|random_pseudo_bytes|pkey_(derive|new|export(_to_file)?|free|get_(details|public|private))|private_((?:de|en)crypt)|pbkdf2|get_((cipher|md)_methods|cert_locations|curve_names|(p(?:ublic|rivate))key)|x509_(check_private_key|checkpurpose|parse|export(_to_file)?|fingerprint|free|read|verify))\\b",
3748
+ "name": "support.function.openssl.php"
3749
+ },
3750
+ {
3751
+ "match": "(?i)\\b(output_(add_rewrite_var|reset_rewrite_vars)|flush|ob_(start|clean|implicit_flush|end_(clean|flush)|flush|list_handlers|gzhandler|get_(status|contents|clean|flush|length|level)))\\b",
3752
+ "name": "support.function.output.php"
3753
+ },
3754
+ {
3755
+ "match": "(?i)\\bpassword_(algos|hash|needs_rehash|verify|get_info)\\b",
3756
+ "name": "support.function.password.php"
3757
+ },
3758
+ {
3759
+ "match": "(?i)\\bpcntl_(alarm|async_signals|errno|exec|r?fork|get_last_error|[gs]et((?:cpuaffin|prior)ity)|signal(_(dispatch|get_handler))?|sig(procmask|timedwait|waitinfo)|strerror|unshare|wait(p?id)?|wexitstatus|wif((?:exit|signal|stopp)ed)|w(stop|term)sig)\\b",
3760
+ "name": "support.function.pcntl.php"
3761
+ },
3762
+ {
3763
+ "match": "(?i)\\bpg_(socket|send_(prepare|execute|query(_params)?)|set_(client_encoding|error_verbosity)|select|host|num_(fields|rows)|consume_input|connection_(status|reset|busy)|connect(_poll)?|convert|copy_(from|to)|client_encoding|close|cancel_query|tty|transaction_status|trace|insert|options|delete|dbname|untrace|unescape_bytea|update|pconnect|ping|port|put_line|parameter_status|prepare|version|query(_params)?|escape_(string|identifier|literal|bytea)|end_copy|execute|flush|free_result|last_(notice|error|oid)|field_(size|num|name|type(_oid)?|table|is_null|prtlen)|affected_rows|result_(status|seek|error(_field)?)|fetch_(object|assoc|all(_columns)?|array|row|result)|get_(notify|pid|result)|meta_data|lo_(seek|close|create|tell|truncate|import|open|unlink|export|write|read(_all)?)|)\\b",
3764
+ "name": "support.function.pgsql.php"
3765
+ },
3766
+ {
3767
+ "match": "(?i)\\b(virtual|getallheaders|apache_([gs]etenv|note|child_terminate|lookup_uri|response_headers|reset_timeout|request_headers|get_(version|modules)))\\b",
3768
+ "name": "support.function.php_apache.php"
3769
+ },
3770
+ {
3771
+ "match": "(?i)\\bdom_import_simplexml\\b",
3772
+ "name": "support.function.php_dom.php"
3773
+ },
3774
+ {
3775
+ "match": "(?i)\\bftp_(ssl_connect|systype|site|size|set_option|nlist|nb_(continue|f?(put|get))|ch(dir|mod)|connect|cdup|close|delete|put|pwd|pasv|exec|quit|f(put|get)|login|alloc|rename|raw(list)?|rmdir|get(_option)?|mdtm|mkdir)\\b",
3776
+ "name": "support.function.php_ftp.php"
3777
+ },
3778
+ {
3779
+ "match": "(?i)\\bimap_((create|delete|list|rename|scan)(mailbox)?|status|sort|subscribe|set_quota|set(flag_full|acl)|search|savebody|num_(recent|msg)|check|close|clearflag_full|thread|timeout|open|header(info)?|headers|append|alerts|reopen|8bit|unsubscribe|undelete|utf7_((?:de|en)code)|utf8|uid|ping|errors|expunge|qprint|gc|fetch(structure|header|text|mime|body)|fetch_overview|lsub|list(s(?:can|ubscribed))|last_error|rfc822_(parse_(headers|adrlist)|write_address)|get(subscribed|acl|mailboxes)|get_quota(root)?|msgno|mime_header_decode|mail_(copy|compose|move)|mail|mailboxmsginfo|binary|body(struct)?|base64)\\b",
3780
+ "name": "support.function.php_imap.php"
3781
+ },
3782
+ {
3783
+ "match": "(?i)\\bmssql_(select_db|num_(fields|rows)|next_result|connect|close|init|data_seek|pconnect|execute|query|field_(seek|name|type|length)|fetch_(object|field|assoc|array|row|batch)|free_(statement|result)|rows_affected|result|guid_string|get_last_message|min_(error|message)_severity|bind)\\b",
3784
+ "name": "support.function.php_mssql.php"
3785
+ },
3786
+ {
3787
+ "match": "(?i)\\bodbc_(statistics|specialcolumns|setoption|num_(fields|rows)|next_result|connect|columns|columnprivileges|commit|cursor|close(_all)?|tables|tableprivileges|do|data_source|pconnect|primarykeys|procedures|procedurecolumns|prepare|error(msg)?|exec(ute)?|field_(scale|num|name|type|precision|len)|foreignkeys|free_result|fetch_(into|object|array|row)|longreadlen|autocommit|rollback|result(_all)?|gettypeinfo|binmode)\\b",
3788
+ "name": "support.function.php_odbc.php"
3789
+ },
3790
+ {
3791
+ "match": "(?i)\\bpreg_(split|quote|filter|last_error(_msg)?|replace(_callback(_array)?)?|grep|match(_all)?)\\b",
3792
+ "name": "support.function.php_pcre.php"
3793
+ },
3794
+ {
3795
+ "match": "(?i)\\b(spl_(classes|object_hash|autoload(_(call|unregister|extensions|functions|register))?)|class_(implements|uses|parents)|iterator_(count|to_array|apply))\\b",
3796
+ "name": "support.function.php_spl.php"
3797
+ },
3798
+ {
3799
+ "match": "(?i)\\bzip_(close|open|entry_(name|compressionmethod|compressedsize|close|open|filesize|read)|read)\\b",
3800
+ "name": "support.function.php_zip.php"
3801
+ },
3802
+ {
3803
+ "match": "(?i)\\bposix_(strerror|set(s|e?u|[ep]?g)id|ctermid|ttyname|times|isatty|initgroups|uname|errno|kill|e?access|get(sid|cwd|uid|pid|ppid|pwnam|pwuid|pgid|pgrp|euid|egid|login|rlimit|gid|grnam|groups|grgid)|get_last_error|mknod|mkfifo|(sys|f?path)conf|setrlimit)\\b",
3804
+ "name": "support.function.posix.php"
3805
+ },
3806
+ {
3807
+ "match": "(?i)\\bset(thread|proc)title\\b",
3808
+ "name": "support.function.proctitle.php"
3809
+ },
3810
+ {
3811
+ "match": "(?i)\\bpspell_(store_replacement|suggest|save_wordlist|new(_(config|personal))?|check|clear_session|config_(save_repl|create|ignore|(d(?:ata|ict))_dir|personal|runtogether|repl|mode)|add_to_(session|personal))\\b",
3812
+ "name": "support.function.pspell.php"
3813
+ },
3814
+ {
3815
+ "match": "(?i)\\breadline(_(completion_function|clear_history|callback_(handler_(install|remove)|read_char)|info|on_new_line|write_history|list_history|add_history|redisplay|read_history))?\\b",
3816
+ "name": "support.function.readline.php"
3817
+ },
3818
+ {
3819
+ "match": "(?i)\\brecode(_(string|file))?\\b",
3820
+ "name": "support.function.recode.php"
3821
+ },
3822
+ {
3823
+ "match": "(?i)\\brrd(c_disconnect|_(create|tune|info|update|error|version|first|fetch|last(update)?|restore|graph|xport))\\b",
3824
+ "name": "support.function.rrd.php"
3825
+ },
3826
+ {
3827
+ "match": "(?i)\\b(shm_((get|has|remove|put)_var|detach|attach|remove)|sem_(acquire|release|remove|get)|ftok|msg_((get|remove|set|stat)_queue|send|queue_exists|receive))\\b",
3828
+ "name": "support.function.sem.php"
3829
+ },
3830
+ {
3831
+ "match": "(?i)\\bsession_(status|start|set_(save_handler|cookie_params)|save_path|name|commit|cache_(expire|limiter)|is_registered|id|destroy|decode|unset|unregister|encode|write_close|abort|reset|register(_shutdown)?|((?:regener|cre)ate)_id|get_cookie_params|module_name|gc)\\b",
3832
+ "name": "support.function.session.php"
3833
+ },
3834
+ {
3835
+ "match": "(?i)\\bshmop_(size|close|open|delete|write|read)\\b",
3836
+ "name": "support.function.shmop.php"
3837
+ },
3838
+ {
3839
+ "match": "(?i)\\bsimplexml_(import_dom|load_(string|file))\\b",
3840
+ "name": "support.function.simplexml.php"
3841
+ },
3842
+ {
3843
+ "match": "(?i)\\b(snmp(?:(walk(oid)?|realwalk|get(next)?|set)|_(set_(valueretrieval|quick_print|enum_print|oid_(numeric_print|output_format))|read_mib|get_(valueretrieval|quick_print))|[23]_(set|walk|real_walk|get(next)?)))\\b",
3844
+ "name": "support.function.snmp.php"
3845
+ },
3846
+ {
3847
+ "match": "(?i)\\b(is_soap_fault|use_soap_error_handler)\\b",
3848
+ "name": "support.function.soap.php"
3849
+ },
3850
+ {
3851
+ "match": "(?i)\\bsocket_(accept|addrinfo_(bind|connect|explain|lookup)|atmark|bind|(clear|last)_error|close|cmsg_space|connect|create(_(listen|pair))?|(ex|im)port_stream|[gs]et_option|[gs]etopt|get(peer|sock)name|listen|read|recv(from|msg)?|select|send(msg|to)?|set_(non)?block|shutdown|strerror|write|wsaprotocol_info_(export|import|release))\\b",
3852
+ "name": "support.function.sockets.php"
3853
+ },
3854
+ {
3855
+ "match": "(?i)\\bsqlite_(single_query|seek|has_(more|prev)|num_(fields|rows)|next|changes|column|current|close|create_(aggregate|function)|open|unbuffered_query|udf_((?:de|en)code)_binary|popen|prev|escape_string|error_string|exec|valid|key|query|field_name|factory|fetch_(string|single|column_types|object|all|array)|lib(encoding|version)|last_(insert_rowid|error)|array_query|rewind|busy_timeout)\\b",
3856
+ "name": "support.function.sqlite.php"
3857
+ },
3858
+ {
3859
+ "match": "(?i)\\bsqlsrv_(send_stream_data|server_info|has_rows|num_(fields|rows)|next_result|connect|configure|commit|client_info|close|cancel|prepare|errors|execute|query|field_metadata|fetch(_(array|object))?|free_stmt|rows_affected|rollback|get_(config|field)|begin_transaction)\\b",
3860
+ "name": "support.function.sqlsrv.php"
3861
+ },
3862
+ {
3863
+ "match": "(?i)\\bstats_(harmonic_mean|covariance|standard_deviation|skew|cdf_(noncentral_(chisquare|f)|negative_binomial|chisquare|cauchy|t|uniform|poisson|exponential|f|weibull|logistic|laplace|gamma|binomial|beta)|stat_(noncentral_t|correlation|innerproduct|independent_t|powersum|percentile|paired_t|gennch|binomial_coef)|dens_(normal|negative_binomial|chisquare|cauchy|t|pmf_(hypergeometric|poisson|binomial)|exponential|f|weibull|logistic|laplace|gamma|beta)|den_uniform|variance|kurtosis|absolute_deviation|rand_(setall|phrase_to_seeds|ranf|get_seeds|gen_(noncentral_[ft]|noncenral_chisquare|normal|chisquare|t|int|i(uniform|poisson|binomial(_negative)?)|exponential|f(uniform)?|gamma|beta)))\\b",
3864
+ "name": "support.function.stats.php"
3865
+ },
3866
+ {
3867
+ "match": "(?i)\\bstream_(bucket_(new|prepend|append|make_writeable)|context_(create|[gs]et_(options?|default|params))|copy_to_stream|filter_((ap|pre)pend|register|remove)|get_(contents|filters|line|meta_data|transports|wrappers)|is(atty|_local)|notification_callback|register_wrapper|resolve_include_path|select|set_(blocking|chunk_size|(read|write)_buffer|timeout)|socket_(accept|client|enable_crypto|get_name|pair|recvfrom|sendto|server|shutdown)|supports_lock|wrapper_((un)?register|restore))\\b",
3868
+ "name": "support.function.streamsfuncs.php"
3869
+ },
3870
+ {
3871
+ "match": "(?i)\\b(money_format|md5(_file)?|metaphone|bin2hex|sscanf|sha1(_file)?|str(str|c?spn|n(at)?(case)?cmp|chr|coll|(case)?cmp|to(upper|lower)|tok|tr|istr|pos|pbrk|len|rchr|ri?pos|rev)|str_(getcsv|i?replace|pad|repeat|rot13|shuffle|split|word_count|contains|(starts|ends)_with|(in|de)crement)|strip(c?slashes|os)|strip_tags|similar_text|soundex|substr(_(count|compare|replace))?|setlocale|html(specialchars(_decode)?|entities)|html_entity_decode|hex2bin|hebrev(c)?|number_format|nl2br|nl_langinfo|chop|chunk_split|chr|convert_(cyr_string|uu((?:de|en)code))|count_chars|crypt|crc32|trim|implode|ord|uc(first|words)|join|parse_str|print(f)?|echo|explode|v?[fs]?printf|quoted_printable_((?:de|en)code)|quotemeta|wordwrap|lcfirst|[lr]trim|localeconv|levenshtein|addc?slashes|get_html_translation_table)\\b",
3872
+ "name": "support.function.string.php"
3873
+ },
3874
+ {
3875
+ "match": "(?i)\\bsybase_(set_message_handler|select_db|num_(fields|rows)|connect|close|deadlock_retry_count|data_seek|unbuffered_query|pconnect|query|field_seek|fetch_(object|field|assoc|array|row)|free_result|affected_rows|result|get_last_message|min_(client|error|message|server)_severity)\\b",
3876
+ "name": "support.function.sybase.php"
3877
+ },
3878
+ {
3879
+ "match": "(?i)\\b(taint|is_tainted|untaint)\\b",
3880
+ "name": "support.function.taint.php"
3881
+ },
3882
+ {
3883
+ "match": "(?i)\\b(tidy_([gs]etopt|set_encoding|save_config|config_count|clean_repair|is_(x(?:html|ml))|diagnose|(access|error|warning)_count|load_config|reset_config|(parse|repair)_(string|file)|get_(status|html(_ver)?|head|config|output|opt_doc|root|release|body))|ob_tidyhandler)\\b",
3884
+ "name": "support.function.tidy.php"
3885
+ },
3886
+ {
3887
+ "match": "(?i)\\btoken_(name|get_all)\\b",
3888
+ "name": "support.function.tokenizer.php"
3889
+ },
3890
+ {
3891
+ "match": "(?i)\\btrader_(stoch([fr]|rsi)?|stddev|sin(h)?|sum|sub|set_(compat|unstable_period)|sqrt|sar(ext)?|sma|ht_(sine|trend(line|mode)|dc(p(?:eriod|hase))|phasor)|natr|cci|cos(h)?|correl|cdl(shootingstar|shortline|sticksandwich|stalledpattern|spinningtop|separatinglines|hikkake(mod)?|highwave|homingpigeon|hangingman|harami(cross)?|hammer|concealbabyswall|counterattack|closingmarubozu|thrusting|tasukigap|takuri|tristar|inneck|invertedhammer|identical3crows|2crows|onneck|doji(star)?|darkcloudcover|dragonflydoji|unique3river|upsidegap2crows|3(starsinsouth|inside|outside|whitesoldiers|linestrike|blackcrows)|piercing|engulfing|evening(doji)?star|kicking(bylength)?|longline|longleggeddoji|ladderbottom|advanceblock|abandonedbaby|risefall3methods|rickshawman|gapsidesidewhite|gravestonedoji|xsidegap3methods|morning(doji)?star|mathold|matchinglow|marubozu|belthold|breakaway)|ceil|cmo|tsf|typprice|t3|tema|tan(h)?|trix|trima|trange|obv|div|dema|dx|ultosc|ppo|plus_d[im]|errno|exp|ema|var|kama|floor|wclprice|willr|wma|ln|log10|bop|beta|bbands|linearreg(_(slope|intercept|angle))?|asin|acos|atan|atr|adosc|add??|adx(r)?|apo|avgprice|aroon(osc)?|rsi|rocp??|rocr(100)?|get_(compat|unstable_period)|min(index)?|minus_d[im]|minmax(index)?|mid(p(?:oint|rice))|mom|mult|medprice|mfi|macd(ext|fix)?|mavp|max(index)?|ma(ma)?)\\b",
3892
+ "name": "support.function.trader.php"
3893
+ },
3894
+ {
3895
+ "match": "(?i)\\buopz_(copy|compose|implement|overload|delete|undefine|extend|function|flags|restore|rename|redefine|backup)\\b",
3896
+ "name": "support.function.uopz.php"
3897
+ },
3898
+ {
3899
+ "match": "(?i)\\b(http_build_query|(raw)?url((?:de|en)code)|parse_url|get_(headers|meta_tags)|base64_((?:de|en)code))\\b",
3900
+ "name": "support.function.url.php"
3901
+ },
3902
+ {
3903
+ "match": "(?i)\\b((bool|double|float|int|str)val|debug_zval_dump|empty|get_(debug_type|defined_vars|resource_(id|type))|[gs]ettype|is_(array|bool|callable|countable|double|float|int(eger)?|iterable|long|null|numeric|object|real|resource|scalar|string)|isset|print_r|(un)?serialize|unset|var_(dump|export))\\b",
3904
+ "name": "support.function.var.php"
3905
+ },
3906
+ {
3907
+ "match": "(?i)\\bwddx_(serialize_(va(?:lue|rs))|deserialize|packet_(start|end)|add_vars)\\b",
3908
+ "name": "support.function.wddx.php"
3909
+ },
3910
+ {
3911
+ "match": "(?i)\\bxhprof_(sample_)?((?:dis|en)able)\\b",
3912
+ "name": "support.function.xhprof.php"
3913
+ },
3914
+ {
3915
+ "match": "(?i)\\b(utf8_((?:de|en)code)|xml_(set_((notation|(end|start)_namespace|unparsed_entity)_decl_handler|(character_data|default|element|external_entity_ref|processing_instruction)_handler|object)|parse(_into_struct)?|parser_([gs]et_option|create(_ns)?|free)|error_string|get_(current_((column|line)_number|byte_index)|error_code)))\\b",
3916
+ "name": "support.function.xml.php"
3917
+ },
3918
+ {
3919
+ "match": "(?i)\\bxmlrpc_(server_(call_method|create|destroy|add_introspection_data|register_(introspection_callback|method))|is_fault|decode(_request)?|parse_method_descriptions|encode(_request)?|[gs]et_type)\\b",
3920
+ "name": "support.function.xmlrpc.php"
3921
+ },
3922
+ {
3923
+ "match": "(?i)\\bxmlwriter_((end|start|write)_(comment|cdata|dtd(_(attlist|entity|element))?|document|pi|attribute|element)|(start|write)_(attribute|element)_ns|write_raw|set_indent(_string)?|text|output_memory|open_(memory|uri)|full_end_element|flush|)\\b",
3924
+ "name": "support.function.xmlwriter.php"
3925
+ },
3926
+ {
3927
+ "match": "(?i)\\b(zlib_(decode|encode|get_coding_type)|readgzfile|gz(seek|compress|close|tell|inflate|open|decode|deflate|uncompress|puts|passthru|encode|eof|file|write|rewind|read|getc|getss?)|deflate_(add|init)|inflate_(add|get_(read_len|status)|init))\\b",
3928
+ "name": "support.function.zlib.php"
3929
+ }
3930
+ ]
3931
+ },
3932
+ "switch_statement": {
3933
+ "patterns": [
3934
+ {
3935
+ "match": "\\s+(?=switch\\b)"
3936
+ },
3937
+ {
3938
+ "begin": "\\bswitch\\b(?!\\s*\\(.*\\)\\s*:)",
3939
+ "beginCaptures": {
3940
+ "0": {
3941
+ "name": "keyword.control.switch.php"
3942
+ }
3943
+ },
3944
+ "end": "}|(?=\\?>)",
3945
+ "endCaptures": {
3946
+ "0": {
3947
+ "name": "punctuation.definition.section.switch-block.end.bracket.curly.php"
3948
+ }
3949
+ },
3950
+ "name": "meta.switch-statement.php",
3951
+ "patterns": [
3952
+ {
3953
+ "begin": "\\(",
3954
+ "beginCaptures": {
3955
+ "0": {
3956
+ "name": "punctuation.definition.switch-expression.begin.bracket.round.php"
3957
+ }
3958
+ },
3959
+ "end": "\\)|(?=\\?>)",
3960
+ "endCaptures": {
3961
+ "0": {
3962
+ "name": "punctuation.definition.switch-expression.end.bracket.round.php"
3963
+ }
3964
+ },
3965
+ "patterns": [
3966
+ {
3967
+ "include": "$self"
3968
+ }
3969
+ ]
3970
+ },
3971
+ {
3972
+ "begin": "\\{",
3973
+ "beginCaptures": {
3974
+ "0": {
3975
+ "name": "punctuation.definition.section.switch-block.begin.bracket.curly.php"
3976
+ }
3977
+ },
3978
+ "end": "(?=}|\\?>)",
3979
+ "patterns": [
3980
+ {
3981
+ "include": "$self"
3982
+ }
3983
+ ]
3984
+ }
3985
+ ]
3986
+ }
3987
+ ]
3988
+ },
3989
+ "ternary_expression": {
3990
+ "begin": "\\?",
3991
+ "beginCaptures": {
3992
+ "0": {
3993
+ "name": "keyword.operator.ternary.php"
3994
+ }
3995
+ },
3996
+ "end": "(?<!:):(?!:)",
3997
+ "endCaptures": {
3998
+ "0": {
3999
+ "name": "keyword.operator.ternary.php"
4000
+ }
4001
+ },
4002
+ "patterns": [
4003
+ {
4004
+ "captures": {
4005
+ "1": {
4006
+ "patterns": [
4007
+ {
4008
+ "include": "$self"
4009
+ }
4010
+ ]
4011
+ }
4012
+ },
4013
+ "match": "(?i)^\\s*([_a-z\\x7F-\\x{10FFFF}][0-9_a-z\\x7F-\\x{10FFFF}]*)\\s*(?=:(?!:))"
4014
+ },
4015
+ {
4016
+ "include": "$self"
4017
+ }
4018
+ ]
4019
+ },
4020
+ "ternary_shorthand": {
4021
+ "match": "\\?:",
4022
+ "name": "keyword.operator.ternary.php"
4023
+ },
4024
+ "use-inner": {
4025
+ "patterns": [
4026
+ {
4027
+ "include": "#comments"
4028
+ },
4029
+ {
4030
+ "begin": "(?i)\\b(as)\\s+",
4031
+ "beginCaptures": {
4032
+ "1": {
4033
+ "name": "keyword.other.use-as.php"
4034
+ }
4035
+ },
4036
+ "end": "(?i)[_a-z\\x7F-\\x{10FFFF}][0-9_a-z\\x7F-\\x{10FFFF}]*",
4037
+ "endCaptures": {
4038
+ "0": {
4039
+ "name": "entity.other.alias.php"
4040
+ }
4041
+ }
4042
+ },
4043
+ {
4044
+ "include": "#class-name"
4045
+ },
4046
+ {
4047
+ "match": ",",
4048
+ "name": "punctuation.separator.delimiter.php"
4049
+ }
4050
+ ]
4051
+ },
4052
+ "var_basic": {
4053
+ "patterns": [
4054
+ {
4055
+ "captures": {
4056
+ "1": {
4057
+ "name": "punctuation.definition.variable.php"
4058
+ }
4059
+ },
4060
+ "match": "(?i)(\\$+)[_a-z\\x7F-\\x{10FFFF}][0-9_a-z\\x7F-\\x{10FFFF}]*",
4061
+ "name": "variable.other.php"
4062
+ }
4063
+ ]
4064
+ },
4065
+ "var_global": {
4066
+ "captures": {
4067
+ "1": {
4068
+ "name": "punctuation.definition.variable.php"
4069
+ }
4070
+ },
4071
+ "match": "(\\$)((_(COOKIE|FILES|GET|POST|REQUEST))|arg([cv]))\\b",
4072
+ "name": "variable.other.global.php"
4073
+ },
4074
+ "var_global_safer": {
4075
+ "captures": {
4076
+ "1": {
4077
+ "name": "punctuation.definition.variable.php"
4078
+ }
4079
+ },
4080
+ "match": "(\\$)((GLOBALS|_(ENV|SERVER|SESSION)))",
4081
+ "name": "variable.other.global.safer.php"
4082
+ },
4083
+ "var_language": {
4084
+ "captures": {
4085
+ "1": {
4086
+ "name": "punctuation.definition.variable.php"
4087
+ }
4088
+ },
4089
+ "match": "(\\$)this\\b",
4090
+ "name": "variable.language.this.php"
4091
+ },
4092
+ "variable-name": {
4093
+ "patterns": [
4094
+ {
4095
+ "include": "#var_global"
4096
+ },
4097
+ {
4098
+ "include": "#var_global_safer"
4099
+ },
4100
+ {
4101
+ "captures": {
4102
+ "1": {
4103
+ "name": "variable.other.php"
4104
+ },
4105
+ "10": {
4106
+ "name": "string.unquoted.index.php"
4107
+ },
4108
+ "11": {
4109
+ "name": "punctuation.section.array.end.php"
4110
+ },
4111
+ "2": {
4112
+ "name": "punctuation.definition.variable.php"
4113
+ },
4114
+ "4": {
4115
+ "name": "keyword.operator.class.php"
4116
+ },
4117
+ "5": {
4118
+ "name": "variable.other.property.php"
4119
+ },
4120
+ "6": {
4121
+ "name": "punctuation.section.array.begin.php"
4122
+ },
4123
+ "7": {
4124
+ "name": "constant.numeric.index.php"
4125
+ },
4126
+ "8": {
4127
+ "name": "variable.other.index.php"
4128
+ },
4129
+ "9": {
4130
+ "name": "punctuation.definition.variable.php"
4131
+ }
4132
+ },
4133
+ "match": "(?i)((\\$)(?<name>[_a-z\\x7F-\\x{10FFFF}][0-9_a-z\\x7F-\\x{10FFFF}]*))\\s*(?:(\\??->)\\s*(\\g<name>)|(\\[)(?:(\\d+)|((\\$)\\g<name>)|([_a-z\\x7F-\\x{10FFFF}][0-9_a-z\\x7F-\\x{10FFFF}]*))(]))?"
4134
+ },
4135
+ {
4136
+ "captures": {
4137
+ "1": {
4138
+ "name": "variable.other.php"
4139
+ },
4140
+ "2": {
4141
+ "name": "punctuation.definition.variable.php"
4142
+ },
4143
+ "4": {
4144
+ "name": "punctuation.definition.variable.php"
4145
+ }
4146
+ },
4147
+ "match": "(?i)((\\$\\{)(?<name>[_a-z\\x7F-\\x{10FFFF}][0-9_a-z\\x7F-\\x{10FFFF}]*)(}))"
4148
+ }
4149
+ ]
4150
+ },
4151
+ "variables": {
4152
+ "patterns": [
4153
+ {
4154
+ "include": "#var_language"
4155
+ },
4156
+ {
4157
+ "include": "#var_global"
4158
+ },
4159
+ {
4160
+ "include": "#var_global_safer"
4161
+ },
4162
+ {
4163
+ "include": "#var_basic"
4164
+ },
4165
+ {
4166
+ "begin": "\\$\\{(?=.*?})",
4167
+ "beginCaptures": {
4168
+ "0": {
4169
+ "name": "punctuation.definition.variable.php"
4170
+ }
4171
+ },
4172
+ "end": "}",
4173
+ "endCaptures": {
4174
+ "0": {
4175
+ "name": "punctuation.definition.variable.php"
4176
+ }
4177
+ },
4178
+ "patterns": [
4179
+ {
4180
+ "include": "$self"
4181
+ }
4182
+ ]
4183
+ }
4184
+ ]
4185
+ }
4186
+ },
4187
+ "scopeName": "source.php"
4188
+ }