tm-grammars 0.0.0

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