github-linguist 7.6.0 → 7.10.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (147) hide show
  1. checksums.yaml +5 -5
  2. data/bin/github-linguist +17 -4
  3. data/grammars/annotation.liquidhaskell.haskell.json +58 -11
  4. data/grammars/etc.json +472 -4
  5. data/grammars/hidden.manref.json +29 -0
  6. data/grammars/hidden.regexp.injection-shell.json +28 -0
  7. data/grammars/hint.haskell.json +58 -11
  8. data/grammars/hint.message.haskell.json +58 -11
  9. data/grammars/hint.type.haskell.json +58 -11
  10. data/grammars/injections.etc.json +601 -1
  11. data/grammars/markdown.plantuml.codeblock.json +26 -0
  12. data/grammars/source.4dm.json +1156 -0
  13. data/grammars/source.abap.json +7 -7
  14. data/grammars/source.abl.json +685 -83
  15. data/grammars/source.abnf.json +23 -1
  16. data/grammars/source.agda.json +33 -203
  17. data/grammars/source.ahk.json +9 -5
  18. data/grammars/source.angelscript.json +1 -1
  19. data/grammars/source.ballerina.json +55 -19
  20. data/grammars/source.c++.json +4 -4
  21. data/grammars/source.c.platform.json +584 -33
  22. data/grammars/source.chapel.json +7 -4
  23. data/grammars/source.csound.json +1 -1
  24. data/grammars/source.css.json +3 -3
  25. data/grammars/source.css.scss.json +164 -15
  26. data/grammars/source.curlrc.json +869 -65
  27. data/grammars/source.d.json +2 -2
  28. data/grammars/source.dart.json +58 -32
  29. data/grammars/source.dircolors.json +137 -0
  30. data/grammars/source.direct-x.json +135 -0
  31. data/grammars/source.ebnf.json +67 -39
  32. data/grammars/source.editorconfig.json +23 -5
  33. data/grammars/source.elixir.json +51 -0
  34. data/grammars/source.elm.json +1 -1
  35. data/grammars/source.emacs.lisp.json +10 -0
  36. data/grammars/source.faust.json +119 -0
  37. data/grammars/source.futhark.json +146 -0
  38. data/grammars/source.gcode.json +166 -8
  39. data/grammars/source.gedcom.json +196 -0
  40. data/grammars/source.generic-db.json +41 -0
  41. data/grammars/source.gfm.blade.json +15 -0
  42. data/grammars/source.gfm.json +1697 -1439
  43. data/grammars/source.gitconfig.json +1 -1
  44. data/grammars/source.hack.json +200 -98
  45. data/grammars/source.haskell.json +58 -11
  46. data/grammars/source.hlsl.json +9 -5
  47. data/grammars/source.hosts.json +40 -0
  48. data/grammars/source.hsig.json +58 -11
  49. data/grammars/source.httpspec.json +1 -1
  50. data/grammars/source.hx.json +9 -5
  51. data/grammars/source.hxml.json +2 -2
  52. data/grammars/source.idris.json +1 -1
  53. data/grammars/source.igor.json +46 -2
  54. data/grammars/source.ini.npmrc.json +311 -0
  55. data/grammars/source.inno.json +133 -0
  56. data/grammars/source.inputrc.json +500 -0
  57. data/grammars/source.isabelle.root.json +1 -1
  58. data/grammars/source.jison.json +3 -0
  59. data/grammars/source.jisonlex.json +3 -0
  60. data/grammars/source.js.json +4 -4
  61. data/grammars/source.julia.json +70 -24
  62. data/grammars/source.kotlin.json +17 -51
  63. data/grammars/source.lcov.json +398 -0
  64. data/grammars/source.lean.json +20 -4
  65. data/grammars/source.lean.markdown.json +2598 -0
  66. data/grammars/source.lex.json +4 -4
  67. data/grammars/source.m2.json +125 -0
  68. data/grammars/source.m4.json +141 -99
  69. data/grammars/source.man-conf.json +47 -35
  70. data/grammars/source.matlab.json +437 -184
  71. data/grammars/source.mcfunction-snapshot.json +21388 -561
  72. data/grammars/source.mcfunction.json +55 -5
  73. data/grammars/source.meson.json +1 -1
  74. data/grammars/source.mlir.json +37 -317
  75. data/grammars/source.modula-3.json +10 -0
  76. data/grammars/source.msl.json +755 -0
  77. data/grammars/source.nasl.json +155 -0
  78. data/grammars/source.neon.json +381 -0
  79. data/grammars/source.nextflow.json +2 -2
  80. data/grammars/source.objc.platform.json +493 -35
  81. data/grammars/source.odin-ehr.json +806 -0
  82. data/grammars/source.odin.json +402 -0
  83. data/grammars/source.openbsd-pkg.contents.json +128 -0
  84. data/grammars/source.opts.json +12 -2
  85. data/grammars/source.perl6fe.json +1 -1
  86. data/grammars/source.postscript.json +358 -103
  87. data/grammars/source.prisma.json +435 -0
  88. data/grammars/source.purescript.json +29 -2
  89. data/grammars/source.python.json +52 -0
  90. data/grammars/source.q.json +150 -63
  91. data/grammars/source.qasm.json +66 -0
  92. data/grammars/source.ql.json +1408 -0
  93. data/grammars/source.r.json +4 -4
  94. data/grammars/source.reason.json +28 -16
  95. data/grammars/source.rego.json +124 -0
  96. data/grammars/source.sass.json +158 -3
  97. data/grammars/source.scala.json +53 -18
  98. data/grammars/source.sieve.json +383 -0
  99. data/grammars/source.solidity.json +1 -1
  100. data/grammars/source.ssh-config.json +1 -14
  101. data/grammars/source.swift.json +162 -2
  102. data/grammars/source.sy.json +2088 -183
  103. data/grammars/source.tags.json +266 -0
  104. data/grammars/source.terraform.json +576 -132
  105. data/grammars/source.tnsaudit.json +256 -0
  106. data/grammars/source.ts.json +246 -70
  107. data/grammars/source.tsx.json +247 -71
  108. data/grammars/source.v.json +587 -761
  109. data/grammars/source.vim-snippet.json +645 -0
  110. data/grammars/source.viml.json +6 -6
  111. data/grammars/source.webassembly.json +10 -0
  112. data/grammars/source.webidl.json +8 -0
  113. data/grammars/source.wgetrc.json +1640 -0
  114. data/grammars/source.wsd.json +781 -0
  115. data/grammars/source.x86.json +7 -3
  116. data/grammars/source.zig.json +231 -360
  117. data/grammars/text.dfy.dafny.json +188 -0
  118. data/grammars/text.html.php.blade.json +535 -528
  119. data/grammars/text.html.riot.json +788 -0
  120. data/grammars/text.muse.json +1471 -0
  121. data/grammars/text.openbsd-pkg.desc.json +78 -0
  122. data/grammars/text.roff.json +49 -1
  123. data/grammars/text.sfd.json +21 -0
  124. data/grammars/text.tex.latex.haskell.json +58 -11
  125. data/grammars/text.vim-help.json +383 -0
  126. data/grammars/text.xml.svg.json +8 -2
  127. data/grammars/version +1 -1
  128. data/lib/linguist/VERSION +1 -1
  129. data/lib/linguist/blob_helper.rb +4 -2
  130. data/lib/linguist/file_blob.rb +1 -1
  131. data/lib/linguist/generated.rb +96 -28
  132. data/lib/linguist/heuristics.yml +64 -4
  133. data/lib/linguist/languages.json +1 -1
  134. data/lib/linguist/languages.yml +408 -49
  135. data/lib/linguist/lazy_blob.rb +10 -10
  136. data/lib/linguist/linguist.bundle +0 -0
  137. data/lib/linguist/samples.json +48129 -31562
  138. data/lib/linguist/shebang.rb +5 -3
  139. data/lib/linguist/vendor.yml +71 -60
  140. metadata +48 -17
  141. data/grammars/source.LS.json +0 -85
  142. data/grammars/source.MCPOST.json +0 -54
  143. data/grammars/source.MOD.json +0 -55
  144. data/grammars/source.apt.json +0 -18
  145. data/grammars/source.jlex.json +0 -322
  146. data/grammars/source.yaml-ext.json +0 -324
  147. data/grammars/text.html.abl.json +0 -70
@@ -0,0 +1,26 @@
1
+ {
2
+ "scopeName": "markdown.plantuml.codeblock",
3
+ "patterns": [
4
+ {
5
+ "include": "#plantuml-code-block"
6
+ }
7
+ ],
8
+ "repository": {
9
+ "plantuml-code-block": {
10
+ "begin": "plantuml(\\s+[^`~]*)?$",
11
+ "end": "(^|\\G)(?=\\s*[`~]{3,}\\s*$)",
12
+ "patterns": [
13
+ {
14
+ "contentName": "meta.embedded.block.plantuml",
15
+ "begin": "(^|\\G)(\\s*)(.*)",
16
+ "while": "(^|\\G)(?!\\s*([`~]{3,})\\s*$)",
17
+ "patterns": [
18
+ {
19
+ "include": "source.wsd"
20
+ }
21
+ ]
22
+ }
23
+ ]
24
+ }
25
+ }
26
+ }
@@ -0,0 +1,1156 @@
1
+ {
2
+ "name": "4D",
3
+ "scopeName": "source.4dm",
4
+ "patterns": [
5
+ {
6
+ "include": "#comments"
7
+ },
8
+ {
9
+ "include": "#for_loop"
10
+ },
11
+ {
12
+ "include": "#keywords"
13
+ },
14
+ {
15
+ "include": "#parameters"
16
+ },
17
+ {
18
+ "include": "#affectation_variable"
19
+ },
20
+ {
21
+ "include": "#long_int_variable"
22
+ },
23
+ {
24
+ "include": "#real_variable"
25
+ },
26
+ {
27
+ "include": "#text_variable"
28
+ },
29
+ {
30
+ "include": "#boolean_variable"
31
+ },
32
+ {
33
+ "include": "#picture_variable"
34
+ },
35
+ {
36
+ "include": "#pointer_variable"
37
+ },
38
+ {
39
+ "include": "#object_variable"
40
+ },
41
+ {
42
+ "include": "#variant_variable"
43
+ },
44
+ {
45
+ "include": "#collection_variable"
46
+ },
47
+ {
48
+ "include": "#strings"
49
+ },
50
+ {
51
+ "include": "#interprocess_variable"
52
+ },
53
+ {
54
+ "include": "#local_variables"
55
+ },
56
+ {
57
+ "include": "#operators"
58
+ },
59
+ {
60
+ "include": "#boolean_values"
61
+ },
62
+ {
63
+ "include": "#constant_4d"
64
+ },
65
+ {
66
+ "include": "#this-function"
67
+ },
68
+ {
69
+ "include": "#numbers"
70
+ },
71
+ {
72
+ "include": "#block"
73
+ },
74
+ {
75
+ "include": "#table_reference"
76
+ },
77
+ {
78
+ "include": "#function-call-innards"
79
+ },
80
+ {
81
+ "name": "punctuation.terminator.statement.4d",
82
+ "match": "\\n"
83
+ },
84
+ {
85
+ "include": "#param_separator"
86
+ },
87
+ {
88
+ "name": "meta.bracket.square.access.4d",
89
+ "begin": "([a-zA-Z_][a-zA-Z_0-9]*|(?\u003c=[\\]\\)]))?(\\[)(?!\\])",
90
+ "end": "\\]",
91
+ "patterns": [
92
+ {
93
+ "include": "#function-call-innards"
94
+ }
95
+ ],
96
+ "beginCaptures": {
97
+ "1": {
98
+ "name": "variable.object.4d"
99
+ },
100
+ "2": {
101
+ "name": "punctuation.definition.begin.bracket.square.4d"
102
+ }
103
+ },
104
+ "endCaptures": {
105
+ "0": {
106
+ "name": "punctuation.definition.end.bracket.square.4d"
107
+ }
108
+ }
109
+ },
110
+ {
111
+ "include": "#member_access"
112
+ },
113
+ {
114
+ "include": "#method_access"
115
+ },
116
+ {
117
+ "name": "entity.name.class.4d",
118
+ "match": "^\\n*[\\t ]*(?i)(Class constructor)"
119
+ },
120
+ {
121
+ "name": "variable.language.function.4d",
122
+ "match": "^\\n*[\\t ]*(?i)(Function)(\\s[a-z_0-9]+[a-z_0-9 ]*)"
123
+ },
124
+ {
125
+ "name": "entity.name.class.4d",
126
+ "match": "^\\n*[\\t ]*(?i)(Class extends)(\\s[a-z_0-9]+[a-z_0-9 ]*)"
127
+ },
128
+ {
129
+ "name": "variable.language.super.4d",
130
+ "match": "^\\n*[\\t ]*(?i)(Super(\\:C1705)?)"
131
+ }
132
+ ],
133
+ "repository": {
134
+ "affectation_variable": {
135
+ "name": "meta.block.affectation.4d",
136
+ "begin": "^((?i)(?:\\$|\u003c\u003e|)(?:\\$|\u003c\u003e|)[a-z_0-9]+[a-z_0-9 ]*)(:=)",
137
+ "end": "(\\n)",
138
+ "patterns": [
139
+ {
140
+ "include": "#this-function"
141
+ },
142
+ {
143
+ "include": "#function-call-innards"
144
+ },
145
+ {
146
+ "include": "#member_access"
147
+ },
148
+ {
149
+ "include": "#method_access"
150
+ },
151
+ {
152
+ "include": "#local_variables"
153
+ },
154
+ {
155
+ "include": "#numbers"
156
+ },
157
+ {
158
+ "include": "#strings"
159
+ },
160
+ {
161
+ "include": "#interprocess_variable"
162
+ },
163
+ {
164
+ "name": "meta.probably_variable.4d",
165
+ "match": "(?i)(?:\\$|\u003c\u003e|)[a-z_0-9]+[a-z_0-9 ]*"
166
+ }
167
+ ],
168
+ "beginCaptures": {
169
+ "1": {
170
+ "name": "variable.name.4d"
171
+ },
172
+ "2": {
173
+ "name": "keyword.operator.assignment.4d"
174
+ }
175
+ },
176
+ "endCaptures": {
177
+ "1": {
178
+ "name": "punctuation.section.end.affectaction.4d"
179
+ }
180
+ }
181
+ },
182
+ "block": {
183
+ "patterns": [
184
+ {
185
+ "name": "meta.block.4d",
186
+ "begin": "(?i)\\b(for each)\\b",
187
+ "end": "(?i)\\b(end for each)\\b",
188
+ "beginCaptures": {
189
+ "0": {
190
+ "name": "punctuation.section.block.begin.for_each.curly.4d"
191
+ }
192
+ },
193
+ "endCaptures": {
194
+ "0": {
195
+ "name": "punctuation.section.block.end.for_each.curly.4d"
196
+ }
197
+ }
198
+ }
199
+ ]
200
+ },
201
+ "boolean_values": {
202
+ "name": "constant.language.4d",
203
+ "match": "(?i)(NULL|true(\\:C214)?|false(\\:C215)?)"
204
+ },
205
+ "boolean_variable": {
206
+ "name": "storage.type.boolean.4d",
207
+ "begin": "^\\n*[\\t ]*(?i)(C_BOOLEAN(\\:C305)?)(\\()((?i)[\\$a-z_0-9 ]+)",
208
+ "end": "(\\))",
209
+ "patterns": [
210
+ {
211
+ "name": "variable.name.boolean.4d",
212
+ "match": "(?i)(?:\\$|\u003c\u003e|)(?:\\$|\u003c\u003e|)[a-z_0-9]+[a-z_0-9 ]*"
213
+ },
214
+ {
215
+ "include": "#param_separator"
216
+ }
217
+ ],
218
+ "beginCaptures": {
219
+ "1": {
220
+ "name": "storage.type.boolean.4d"
221
+ },
222
+ "2": {
223
+ "name": "meta.c_boolean.code.4d"
224
+ },
225
+ "3": {
226
+ "name": "punctuation.section.arguments.begin.bracket.round.4d"
227
+ },
228
+ "4": {
229
+ "name": "variable.name.boolean.4d"
230
+ }
231
+ },
232
+ "endCaptures": {
233
+ "1": {
234
+ "name": "punctuation.section.arguments.end.bracket.round.4d"
235
+ }
236
+ }
237
+ },
238
+ "collection_variable": {
239
+ "name": "storage.type.collection.4d",
240
+ "begin": "^\\n*[\\t ]*(?i)(C_COLLECTION(\\:C1488)?)(\\()((?i)(?:\\$|\u003c\u003e|)(?:\\$|\u003c\u003e|)[a-z_0-9]+[a-z_0-9 ]*)",
241
+ "end": "(\\))",
242
+ "patterns": [
243
+ {
244
+ "name": "variable.name.collection.4d",
245
+ "match": "(?i)(?:\\$|\u003c\u003e|)(?:\\$|\u003c\u003e|)[a-z_0-9]+[a-z_0-9 ]*"
246
+ },
247
+ {
248
+ "include": "#param_separator"
249
+ }
250
+ ],
251
+ "beginCaptures": {
252
+ "1": {
253
+ "name": "storage.type.collection.4d"
254
+ },
255
+ "2": {
256
+ "name": "meta.c_collection.code.4d"
257
+ },
258
+ "3": {
259
+ "name": "punctuation.section.arguments.begin.bracket.round.4d"
260
+ },
261
+ "4": {
262
+ "name": "variable.name.collection.4d"
263
+ }
264
+ },
265
+ "endCaptures": {
266
+ "1": {
267
+ "name": "punctuation.section.arguments.end.bracket.round.4d"
268
+ }
269
+ }
270
+ },
271
+ "comments": {
272
+ "patterns": [
273
+ {
274
+ "name": "comment.line.double-slash.4d",
275
+ "begin": "\\s*+(\\/\\/)",
276
+ "end": "(?\u003c=\\n)(?\u003c!\\\\\\n)",
277
+ "beginCaptures": {
278
+ "1": {
279
+ "name": "punctuation.definition.comment.4d"
280
+ }
281
+ }
282
+ },
283
+ {
284
+ "name": "comment.block.4d",
285
+ "match": "^/\\*\\* =(\\s*.*?)\\s*= \\*\\*/$\\n?",
286
+ "captures": {
287
+ "1": {
288
+ "name": "meta.toc-list.banner.block.4d"
289
+ }
290
+ }
291
+ },
292
+ {
293
+ "name": "comment.block.4d",
294
+ "begin": "/\\*\\*",
295
+ "end": "\\*\\*/",
296
+ "beginCaptures": {
297
+ "0": {
298
+ "name": "punctuation.definition.comment.begin.4d"
299
+ }
300
+ },
301
+ "endCaptures": {
302
+ "0": {
303
+ "name": "punctuation.definition.comment.end.4d"
304
+ }
305
+ }
306
+ },
307
+ {
308
+ "name": "comment.block.4d",
309
+ "begin": "/\\*",
310
+ "end": "\\*/",
311
+ "beginCaptures": {
312
+ "0": {
313
+ "name": "punctuation.definition.comment.begin.4d"
314
+ }
315
+ },
316
+ "endCaptures": {
317
+ "0": {
318
+ "name": "punctuation.definition.comment.end.4d"
319
+ }
320
+ }
321
+ },
322
+ {
323
+ "name": "comment.line.banner.4d",
324
+ "match": "^//=(\\s*.*?)\\s*=\\s*$\\n?",
325
+ "captures": {
326
+ "1": {
327
+ "name": "meta.toc-list.banner.line.4d"
328
+ }
329
+ }
330
+ },
331
+ {
332
+ "begin": "(^[ \\t]+)?(?=//)",
333
+ "end": "(?!\\G)",
334
+ "patterns": [
335
+ {
336
+ "name": "comment.line.double-slash.4d",
337
+ "begin": "//",
338
+ "end": "(?=\\n)",
339
+ "beginCaptures": {
340
+ "0": {
341
+ "name": "punctuation.definition.comment.4d"
342
+ }
343
+ }
344
+ }
345
+ ],
346
+ "beginCaptures": {
347
+ "1": {
348
+ "name": "punctuation.whitespace.comment.leading.4d"
349
+ }
350
+ }
351
+ }
352
+ ]
353
+ },
354
+ "constant_4d": {
355
+ "name": "constant.numeric.4d",
356
+ "match": "(?i)([a-z_0-9 ]*)(\\:K[0-9]+)?(\\:[0-9]+)"
357
+ },
358
+ "for_loop": {
359
+ "name": "meta.block.loop.for.4d",
360
+ "begin": "^(?i)(for)\\((\\$[a-z]+);([0-9]+);([0-9]+)\\)",
361
+ "end": "(\\n)",
362
+ "beginCaptures": {
363
+ "1": {
364
+ "name": "keyword.control.4d"
365
+ },
366
+ "2": {
367
+ "name": "variable.name.4d"
368
+ },
369
+ "3": {
370
+ "name": "constant.range.begin.4d"
371
+ },
372
+ "4": {
373
+ "name": "constant.range.end.4d"
374
+ }
375
+ },
376
+ "endCaptures": {
377
+ "1": {
378
+ "name": "punctuation.section.end.for.4d"
379
+ }
380
+ }
381
+ },
382
+ "function-call-innards": {
383
+ "patterns": [
384
+ {
385
+ "include": "#comments"
386
+ },
387
+ {
388
+ "include": "#storage_types"
389
+ },
390
+ {
391
+ "include": "#operators"
392
+ },
393
+ {
394
+ "begin": "(?x)\n(?!\\s*\\()\n(\n(?:[A-Za-z_ ][A-Za-z0-9_]*+)++(\\:C[0-9]+)? # actual name\n|\n(?:(?\u003c=operator)(?:[-*\u0026\u003c\u003e=+#]+|\\(\\)))\n)\n\\s*(\\()",
395
+ "end": "\\)",
396
+ "patterns": [
397
+ {
398
+ "include": "#this-function"
399
+ },
400
+ {
401
+ "include": "#function-call-innards"
402
+ },
403
+ {
404
+ "include": "#strings"
405
+ },
406
+ {
407
+ "include": "#numbers"
408
+ },
409
+ {
410
+ "include": "#parameters"
411
+ },
412
+ {
413
+ "include": "#local_variables"
414
+ },
415
+ {
416
+ "include": "#boolean_values"
417
+ },
418
+ {
419
+ "include": "#constant_4d"
420
+ },
421
+ {
422
+ "include": "#param_separator"
423
+ },
424
+ {
425
+ "include": "#operators"
426
+ },
427
+ {
428
+ "include": "#member_access"
429
+ },
430
+ {
431
+ "include": "#table_reference"
432
+ }
433
+ ],
434
+ "beginCaptures": {
435
+ "1": {
436
+ "name": "entity.name.function.4d"
437
+ },
438
+ "2": {
439
+ "name": "entity.command.number.4d"
440
+ },
441
+ "3": {
442
+ "name": "punctuation.section.arguments.begin.bracket.round.4d"
443
+ }
444
+ },
445
+ "endCaptures": {
446
+ "0": {
447
+ "name": "punctuation.section.arguments.end.bracket.round.4d"
448
+ }
449
+ }
450
+ },
451
+ {
452
+ "begin": "\\(",
453
+ "end": "\\)",
454
+ "patterns": [
455
+ {
456
+ "include": "#function-call-innards"
457
+ },
458
+ {
459
+ "include": "#member_access"
460
+ },
461
+ {
462
+ "include": "#table_reference"
463
+ },
464
+ {
465
+ "include": "#this-function"
466
+ }
467
+ ],
468
+ "beginCaptures": {
469
+ "0": {
470
+ "name": "punctuation.section.parens.begin.bracket.round.4d"
471
+ }
472
+ },
473
+ "endCaptures": {
474
+ "0": {
475
+ "name": "punctuation.section.parens.end.bracket.round.4d"
476
+ }
477
+ }
478
+ }
479
+ ]
480
+ },
481
+ "interprocess_variable": {
482
+ "name": "variable.interprocess.name.4d",
483
+ "match": "\u003c\u003e(?i)[a-z_0-9 ]+"
484
+ },
485
+ "keywords": {
486
+ "patterns": [
487
+ {
488
+ "name": "keyword.control.4d",
489
+ "match": "^\\n*[\\t ]*(?i)(If|While|Else|End if|For each|End for each|End for|Begin SQL|End SQL|while|End while|Use|End use|Case of|End case|Repeat|Until|For)\\b"
490
+ }
491
+ ]
492
+ },
493
+ "local_variables": {
494
+ "name": "variable.local.name.4d",
495
+ "match": "\\$[a-zA-Z_0-9 ]*"
496
+ },
497
+ "long_int_variable": {
498
+ "name": "storage.type.4d",
499
+ "begin": "^\\n*[\\t ]*(?i)(C_LONGINT(\\:C283)?)(\\()((?i)(?:\\$|\u003c\u003e|)(?:\\$|\u003c\u003e|)[a-z_0-9]+[a-z_0-9 ]*)",
500
+ "end": "(\\))",
501
+ "patterns": [
502
+ {
503
+ "name": "variable.name.longint.4d",
504
+ "match": "(?i)(?:\\$|\u003c\u003e|)(?:\\$|\u003c\u003e|)[a-z_0-9]+[a-z_0-9 ]*"
505
+ },
506
+ {
507
+ "include": "#param_separator"
508
+ }
509
+ ],
510
+ "beginCaptures": {
511
+ "1": {
512
+ "name": "storage.type.longint.4d"
513
+ },
514
+ "2": {
515
+ "name": "meta.c_longint.code.4d"
516
+ },
517
+ "3": {
518
+ "name": "punctuation.section.arguments.begin.bracket.round.4d"
519
+ },
520
+ "4": {
521
+ "name": "variable.name.longint.4d"
522
+ }
523
+ },
524
+ "endCaptures": {
525
+ "1": {
526
+ "name": "punctuation.section.arguments.end.bracket.round.4d"
527
+ }
528
+ }
529
+ },
530
+ "member_access": {
531
+ "match": "((?:[a-zA-Z_\\s*]*(\\:C[0-9]+)?|(?\u003c=\\]|\\)))\\s*)(?:((?:\\.\\*|\\.))|((?:-\u003e\\*|-\u003e)))((?:[a-zA-Z_]\\w*\\s*(?:(?:(?:\\.\\*|\\.))|(?:(?:-\u003e\\*|-\u003e)))\\s*)*)\\s*(\\b[a-zA-Z_]\\w*\\b(?!\\())",
532
+ "captures": {
533
+ "1": {
534
+ "name": "variable.other.object.access.4d"
535
+ },
536
+ "2": {
537
+ "name": "entity.command.number.4d"
538
+ },
539
+ "3": {
540
+ "name": "punctuation.separator.dot-access.4d"
541
+ },
542
+ "4": {
543
+ "name": "punctuation.separator.pointer-access.4d"
544
+ },
545
+ "5": {
546
+ "patterns": [
547
+ {
548
+ "include": "#this-function"
549
+ },
550
+ {
551
+ "include": "#member_access"
552
+ },
553
+ {
554
+ "include": "#method_access"
555
+ },
556
+ {
557
+ "match": "((?:[a-zA-Z_]\\w*|(?\u003c=\\]|\\)))\\s*)(?:((?:\\.\\*|\\.))|((?:-\u003e\\*|-\u003e)))",
558
+ "captures": {
559
+ "1": {
560
+ "name": "variable.other.object.access.4d"
561
+ },
562
+ "2": {
563
+ "name": "punctuation.separator.dot-access.4d"
564
+ },
565
+ "3": {
566
+ "name": "punctuation.separator.pointer-access.4d"
567
+ }
568
+ }
569
+ }
570
+ ]
571
+ },
572
+ "6": {
573
+ "name": "variable.other.member.4d"
574
+ }
575
+ }
576
+ },
577
+ "method_access": {
578
+ "contentName": "meta.function-call.member.4d",
579
+ "begin": "((?:[a-zA-Z_\\s*]*(\\:C[0-9]+)?|(?\u003c=\\]|\\)))\\s*)(?:((?:\\.\\*|\\.))|((?:-\u003e\\*|-\u003e)))((?:[a-zA-Z_]\\w*\\s*(?:(?:(?:\\.\\*|\\.))|(?:(?:-\u003e\\*|-\u003e)))\\s*)*)\\s*([a-zA-Z_]\\w*)(\\()",
580
+ "end": "(\\))",
581
+ "patterns": [
582
+ {
583
+ "include": "#strings"
584
+ },
585
+ {
586
+ "include": "#numbers"
587
+ },
588
+ {
589
+ "include": "#parameters"
590
+ },
591
+ {
592
+ "include": "#local_variables"
593
+ },
594
+ {
595
+ "include": "#boolean_values"
596
+ },
597
+ {
598
+ "include": "#constant_4d"
599
+ },
600
+ {
601
+ "include": "#param_separator"
602
+ },
603
+ {
604
+ "include": "#function-call-innards"
605
+ },
606
+ {
607
+ "include": "#table_reference"
608
+ },
609
+ {
610
+ "include": "#this-function"
611
+ }
612
+ ],
613
+ "beginCaptures": {
614
+ "1": {
615
+ "name": "variable.other.object.access.4d"
616
+ },
617
+ "2": {
618
+ "name": "entity.command.number.4d"
619
+ },
620
+ "3": {
621
+ "name": "punctuation.separator.dot-access.4d"
622
+ },
623
+ "4": {
624
+ "name": "punctuation.separator.pointer-access.4d"
625
+ },
626
+ "5": {
627
+ "patterns": [
628
+ {
629
+ "include": "#member_access"
630
+ },
631
+ {
632
+ "include": "#method_access"
633
+ },
634
+ {
635
+ "include": "#this-function"
636
+ },
637
+ {
638
+ "match": "((?:[a-zA-Z_]\\w*|(?\u003c=\\]|\\)))\\s*)(?:((?:\\.\\*|\\.))|((?:-\u003e\\*|-\u003e)))",
639
+ "captures": {
640
+ "1": {
641
+ "name": "variable.other.object.access.4d"
642
+ },
643
+ "2": {
644
+ "name": "punctuation.separator.dot-access.4d"
645
+ },
646
+ "3": {
647
+ "name": "punctuation.separator.pointer-access.4d"
648
+ }
649
+ }
650
+ }
651
+ ]
652
+ },
653
+ "6": {
654
+ "name": "entity.name.function.member.4d"
655
+ },
656
+ "7": {
657
+ "name": "punctuation.section.arguments.begin.bracket.round.function.member.4d"
658
+ }
659
+ },
660
+ "endCaptures": {
661
+ "1": {
662
+ "name": "punctuation.section.arguments.end.bracket.round.function.member.4d"
663
+ }
664
+ }
665
+ },
666
+ "numbers": {
667
+ "begin": "(?\u003c!\\w)(?=\\d|\\.\\d)",
668
+ "end": "(?!(?:(?:[0-9a-zA-Z_\\.]|')|(?\u003c=[eEpP])[+-]))",
669
+ "patterns": [
670
+ {
671
+ "match": "(\\G0[xX])([0-9a-fA-F](?:[0-9a-fA-F]|((?\u003c=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)?((?:(?\u003c=[0-9a-fA-F])\\.|\\.(?=[0-9a-fA-F])))([0-9a-fA-F](?:[0-9a-fA-F]|((?\u003c=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)?((?\u003c!')([pP])(\\+?)(\\-?)((?:[0-9](?:[0-9]|(?:(?\u003c=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)))?([lLfF](?!\\w))?(?!(?:(?:[0-9a-zA-Z_\\.]|')|(?\u003c=[eEpP])[+-]))",
672
+ "captures": {
673
+ "1": {
674
+ "name": "keyword.other.unit.hexadecimal.4d"
675
+ },
676
+ "10": {
677
+ "name": "keyword.operator.minus.exponent.hexadecimal.4d"
678
+ },
679
+ "11": {
680
+ "name": "constant.numeric.exponent.hexadecimal.4d",
681
+ "patterns": [
682
+ {
683
+ "name": "punctuation.separator.constant.numeric.4d",
684
+ "match": "(?\u003c=[0-9a-fA-F])'(?=[0-9a-fA-F])"
685
+ }
686
+ ]
687
+ },
688
+ "12": {
689
+ "name": "keyword.other.unit.suffix.floating-point.4d"
690
+ },
691
+ "2": {
692
+ "name": "constant.numeric.hexadecimal.4d",
693
+ "patterns": [
694
+ {
695
+ "name": "punctuation.separator.constant.numeric.4d",
696
+ "match": "(?\u003c=[0-9a-fA-F])'(?=[0-9a-fA-F])"
697
+ }
698
+ ]
699
+ },
700
+ "3": {
701
+ "name": "punctuation.separator.constant.numeric.4d"
702
+ },
703
+ "4": {
704
+ "name": "constant.numeric.hexadecimal.4d"
705
+ },
706
+ "5": {
707
+ "name": "constant.numeric.hexadecimal.4d",
708
+ "patterns": [
709
+ {
710
+ "name": "punctuation.separator.constant.numeric.4d",
711
+ "match": "(?\u003c=[0-9a-fA-F])'(?=[0-9a-fA-F])"
712
+ }
713
+ ]
714
+ },
715
+ "6": {
716
+ "name": "punctuation.separator.constant.numeric.4d"
717
+ },
718
+ "8": {
719
+ "name": "keyword.other.unit.exponent.hexadecimal.4d"
720
+ },
721
+ "9": {
722
+ "name": "keyword.operator.plus.exponent.hexadecimal.4d"
723
+ }
724
+ }
725
+ },
726
+ {
727
+ "match": "(\\G(?=[0-9.])(?!0[xXbB]))([0-9](?:[0-9]|((?\u003c=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)?((?:(?\u003c=[0-9])\\.|\\.(?=[0-9])))([0-9](?:[0-9]|((?\u003c=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)?((?\u003c!')([eE])(\\+?)(\\-?)((?:[0-9](?:[0-9]|(?:(?\u003c=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)))?([lLfF](?!\\w))?(?!(?:(?:[0-9a-zA-Z_\\.]|')|(?\u003c=[eEpP])[+-]))",
728
+ "captures": {
729
+ "10": {
730
+ "name": "keyword.operator.minus.exponent.decimal.4d"
731
+ },
732
+ "11": {
733
+ "name": "constant.numeric.exponent.decimal.4d",
734
+ "patterns": [
735
+ {
736
+ "name": "punctuation.separator.constant.numeric.4d",
737
+ "match": "(?\u003c=[0-9a-fA-F])'(?=[0-9a-fA-F])"
738
+ }
739
+ ]
740
+ },
741
+ "12": {
742
+ "name": "keyword.other.unit.suffix.floating-point.4d"
743
+ },
744
+ "2": {
745
+ "name": "constant.numeric.decimal.4d",
746
+ "patterns": [
747
+ {
748
+ "name": "punctuation.separator.constant.numeric.4d",
749
+ "match": "(?\u003c=[0-9a-fA-F])'(?=[0-9a-fA-F])"
750
+ }
751
+ ]
752
+ },
753
+ "3": {
754
+ "name": "punctuation.separator.constant.numeric.4d"
755
+ },
756
+ "4": {
757
+ "name": "constant.numeric.decimal.point.4d"
758
+ },
759
+ "5": {
760
+ "name": "constant.numeric.decimal.4d",
761
+ "patterns": [
762
+ {
763
+ "name": "punctuation.separator.constant.numeric.4d",
764
+ "match": "(?\u003c=[0-9a-fA-F])'(?=[0-9a-fA-F])"
765
+ }
766
+ ]
767
+ },
768
+ "6": {
769
+ "name": "punctuation.separator.constant.numeric.4d"
770
+ },
771
+ "8": {
772
+ "name": "keyword.other.unit.exponent.decimal.4d"
773
+ },
774
+ "9": {
775
+ "name": "keyword.operator.plus.exponent.decimal.4d"
776
+ }
777
+ }
778
+ },
779
+ {
780
+ "match": "(\\G0[bB])([01](?:[01]|((?\u003c=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)((?:(?:(?:(?:(?:[uU]|[uU]ll?)|[uU]LL?)|ll?[uU]?)|LL?[uU]?)|[fF])(?!\\w))?(?!(?:(?:[0-9a-zA-Z_\\.]|')|(?\u003c=[eEpP])[+-]))",
781
+ "captures": {
782
+ "1": {
783
+ "name": "keyword.other.unit.binary.4d"
784
+ },
785
+ "2": {
786
+ "name": "constant.numeric.binary.4d",
787
+ "patterns": [
788
+ {
789
+ "name": "punctuation.separator.constant.numeric.4d",
790
+ "match": "(?\u003c=[0-9a-fA-F])'(?=[0-9a-fA-F])"
791
+ }
792
+ ]
793
+ },
794
+ "3": {
795
+ "name": "punctuation.separator.constant.numeric.4d"
796
+ },
797
+ "4": {
798
+ "name": "keyword.other.unit.suffix.integer.4d"
799
+ }
800
+ }
801
+ },
802
+ {
803
+ "match": "(\\G0)((?:[0-7]|((?\u003c=[0-9a-fA-F])'(?=[0-9a-fA-F])))+)((?:(?:(?:(?:(?:[uU]|[uU]ll?)|[uU]LL?)|ll?[uU]?)|LL?[uU]?)|[fF])(?!\\w))?(?!(?:(?:[0-9a-zA-Z_\\.]|')|(?\u003c=[eEpP])[+-]))",
804
+ "captures": {
805
+ "1": {
806
+ "name": "keyword.other.unit.octal.4d"
807
+ },
808
+ "2": {
809
+ "name": "constant.numeric.octal.4d",
810
+ "patterns": [
811
+ {
812
+ "name": "punctuation.separator.constant.numeric.4d",
813
+ "match": "(?\u003c=[0-9a-fA-F])'(?=[0-9a-fA-F])"
814
+ }
815
+ ]
816
+ },
817
+ "3": {
818
+ "name": "punctuation.separator.constant.numeric.4d"
819
+ },
820
+ "4": {
821
+ "name": "keyword.other.unit.suffix.integer.4d"
822
+ }
823
+ }
824
+ },
825
+ {
826
+ "match": "(\\G0[xX])([0-9a-fA-F](?:[0-9a-fA-F]|((?\u003c=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)((?\u003c!')([pP])(\\+?)(\\-?)((?:[0-9](?:[0-9]|(?:(?\u003c=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)))?((?:(?:(?:(?:(?:[uU]|[uU]ll?)|[uU]LL?)|ll?[uU]?)|LL?[uU]?)|[fF])(?!\\w))?(?!(?:(?:[0-9a-zA-Z_\\.]|')|(?\u003c=[eEpP])[+-]))",
827
+ "captures": {
828
+ "1": {
829
+ "name": "keyword.other.unit.hexadecimal.4d"
830
+ },
831
+ "2": {
832
+ "name": "constant.numeric.hexadecimal.4d",
833
+ "patterns": [
834
+ {
835
+ "name": "punctuation.separator.constant.numeric.4d",
836
+ "match": "(?\u003c=[0-9a-fA-F])'(?=[0-9a-fA-F])"
837
+ }
838
+ ]
839
+ },
840
+ "3": {
841
+ "name": "punctuation.separator.constant.numeric.4d"
842
+ },
843
+ "5": {
844
+ "name": "keyword.other.unit.exponent.hexadecimal.4d"
845
+ },
846
+ "6": {
847
+ "name": "keyword.operator.plus.exponent.hexadecimal.4d"
848
+ },
849
+ "7": {
850
+ "name": "keyword.operator.minus.exponent.hexadecimal.4d"
851
+ },
852
+ "8": {
853
+ "name": "constant.numeric.exponent.hexadecimal.4d",
854
+ "patterns": [
855
+ {
856
+ "name": "punctuation.separator.constant.numeric.4d",
857
+ "match": "(?\u003c=[0-9a-fA-F])'(?=[0-9a-fA-F])"
858
+ }
859
+ ]
860
+ },
861
+ "9": {
862
+ "name": "keyword.other.unit.suffix.integer.4d"
863
+ }
864
+ }
865
+ },
866
+ {
867
+ "match": "(\\G(?=[0-9.])(?!0[xXbB]))([0-9](?:[0-9]|((?\u003c=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)((?\u003c!')([eE])(\\+?)(\\-?)((?:[0-9](?:[0-9]|(?:(?\u003c=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)))?((?:(?:(?:(?:(?:[uU]|[uU]ll?)|[uU]LL?)|ll?[uU]?)|LL?[uU]?)|[fF])(?!\\w))?(?!(?:(?:[0-9a-zA-Z_\\.]|')|(?\u003c=[eEpP])[+-]))",
868
+ "captures": {
869
+ "2": {
870
+ "name": "constant.numeric.decimal.4d",
871
+ "patterns": [
872
+ {
873
+ "name": "punctuation.separator.constant.numeric.4d",
874
+ "match": "(?\u003c=[0-9a-fA-F])'(?=[0-9a-fA-F])"
875
+ }
876
+ ]
877
+ },
878
+ "3": {
879
+ "name": "punctuation.separator.constant.numeric.4d"
880
+ },
881
+ "5": {
882
+ "name": "keyword.other.unit.exponent.decimal.4d"
883
+ },
884
+ "6": {
885
+ "name": "keyword.operator.plus.exponent.decimal.4d"
886
+ },
887
+ "7": {
888
+ "name": "keyword.operator.minus.exponent.decimal.4d"
889
+ },
890
+ "8": {
891
+ "name": "constant.numeric.exponent.decimal.4d",
892
+ "patterns": [
893
+ {
894
+ "name": "punctuation.separator.constant.numeric.4d",
895
+ "match": "(?\u003c=[0-9a-fA-F])'(?=[0-9a-fA-F])"
896
+ }
897
+ ]
898
+ },
899
+ "9": {
900
+ "name": "keyword.other.unit.suffix.integer.4d"
901
+ }
902
+ }
903
+ }
904
+ ]
905
+ },
906
+ "object_variable": {
907
+ "name": "storage.type.object.4d",
908
+ "begin": "^\\n*[\\t ]*(?i)(C_OBJECT(\\:C1216)?)(\\()((?i)(?:\\$|\u003c\u003e|)(?:\\$|\u003c\u003e|)[a-z_0-9]+[a-z_0-9 ]*)",
909
+ "end": "(\\))",
910
+ "patterns": [
911
+ {
912
+ "name": "variable.name.object.4d",
913
+ "match": "(?i)(?:\\$|\u003c\u003e|)(?:\\$|\u003c\u003e|)[a-z_0-9]+[a-z_0-9 ]*"
914
+ },
915
+ {
916
+ "include": "#param_separator"
917
+ }
918
+ ],
919
+ "beginCaptures": {
920
+ "1": {
921
+ "name": "storage.type.object.4d"
922
+ },
923
+ "2": {
924
+ "name": "meta.c_object.code.4d"
925
+ },
926
+ "3": {
927
+ "name": "punctuation.section.arguments.begin.bracket.round.4d"
928
+ },
929
+ "4": {
930
+ "name": "variable.name.object.4d"
931
+ }
932
+ },
933
+ "endCaptures": {
934
+ "1": {
935
+ "name": "punctuation.section.arguments.end.bracket.round.4d"
936
+ }
937
+ }
938
+ },
939
+ "operators": {
940
+ "patterns": [
941
+ {
942
+ "name": "keyword.operator.assignment.4d",
943
+ "match": ":="
944
+ },
945
+ {
946
+ "name": "keyword.operator.comparison.4d",
947
+ "match": "#|\u003c=|\u003e=|\u003c|\u003e|="
948
+ },
949
+ {
950
+ "name": "keyword.operator.4d",
951
+ "match": "%|\\*|/|-|\\+"
952
+ }
953
+ ]
954
+ },
955
+ "param_separator": {
956
+ "name": "punctuation.separator.delimiter.4d",
957
+ "match": ";"
958
+ },
959
+ "parameters": {
960
+ "name": "variable.parameter.4d",
961
+ "match": "\\$[0-9]"
962
+ },
963
+ "picture_variable": {
964
+ "name": "storage.type.picture.4d",
965
+ "begin": "^\\n*[\\t ]*(?i)(C_PICTURE(\\:C286)?)(\\()((?i)(?:\\$|\u003c\u003e|)(?:\\$|\u003c\u003e|)[a-z_0-9]+[a-z_0-9 ]*)",
966
+ "end": "(\\))",
967
+ "patterns": [
968
+ {
969
+ "name": "variable.name.picture.4d",
970
+ "match": "(?i)(?:\\$|\u003c\u003e|)(?:\\$|\u003c\u003e|)[a-z_0-9]+[a-z_0-9 ]*"
971
+ },
972
+ {
973
+ "include": "#param_separator"
974
+ }
975
+ ],
976
+ "beginCaptures": {
977
+ "1": {
978
+ "name": "storage.type.picture.4d"
979
+ },
980
+ "2": {
981
+ "name": "meta.c_picture.code.4d"
982
+ },
983
+ "3": {
984
+ "name": "punctuation.section.arguments.begin.bracket.round.4d"
985
+ },
986
+ "4": {
987
+ "name": "variable.name.picture.4d"
988
+ }
989
+ },
990
+ "endCaptures": {
991
+ "1": {
992
+ "name": "punctuation.section.arguments.end.bracket.round.4d"
993
+ }
994
+ }
995
+ },
996
+ "pointer_variable": {
997
+ "name": "storage.type.pointer.4d",
998
+ "begin": "^\\n*[\\t ]*(?i)(C_POINTER(\\:C301)?)(\\()((?i)(?:\\$|\u003c\u003e|)(?:\\$|\u003c\u003e|)[a-z_0-9]+[a-z_0-9 ]*)",
999
+ "end": "(\\))",
1000
+ "patterns": [
1001
+ {
1002
+ "name": "variable.name.pointer.4d",
1003
+ "match": "(?i)(?:\\$|\u003c\u003e|)(?:\\$|\u003c\u003e|)[a-z_0-9]+[a-z_0-9 ]*"
1004
+ },
1005
+ {
1006
+ "include": "#param_separator"
1007
+ }
1008
+ ],
1009
+ "beginCaptures": {
1010
+ "1": {
1011
+ "name": "storage.type.pointer.4d"
1012
+ },
1013
+ "2": {
1014
+ "name": "meta.c_pointer.code.4d"
1015
+ },
1016
+ "3": {
1017
+ "name": "punctuation.section.arguments.begin.bracket.round.4d"
1018
+ },
1019
+ "4": {
1020
+ "name": "variable.name.pointer.4d"
1021
+ }
1022
+ },
1023
+ "endCaptures": {
1024
+ "1": {
1025
+ "name": "punctuation.section.arguments.end.bracket.round.4d"
1026
+ }
1027
+ }
1028
+ },
1029
+ "real_variable": {
1030
+ "name": "storage.type.real.4d",
1031
+ "begin": "^\\n*[\\t ]*(?i)(C_REAL(\\:C285)?)(\\()((?i)(?:\\$|\u003c\u003e|)(?:\\$|\u003c\u003e|)[a-z_0-9]+[a-z_0-9 ]*)",
1032
+ "end": "(\\))",
1033
+ "patterns": [
1034
+ {
1035
+ "name": "variable.name.real.4d",
1036
+ "match": "(?i)(?:\\$|\u003c\u003e|)(?:\\$|\u003c\u003e|)[a-z_0-9]+[a-z_0-9 ]*"
1037
+ },
1038
+ {
1039
+ "include": "#param_separator"
1040
+ }
1041
+ ],
1042
+ "beginCaptures": {
1043
+ "1": {
1044
+ "name": "storage.type.real.4d"
1045
+ },
1046
+ "2": {
1047
+ "name": "meta.c_real.code.4d"
1048
+ },
1049
+ "3": {
1050
+ "name": "punctuation.section.arguments.begin.bracket.round.4d"
1051
+ },
1052
+ "4": {
1053
+ "name": "variable.name.real.4d"
1054
+ }
1055
+ },
1056
+ "endCaptures": {
1057
+ "1": {
1058
+ "name": "punctuation.section.arguments.end.bracket.round.4d"
1059
+ }
1060
+ }
1061
+ },
1062
+ "strings": {
1063
+ "name": "string.quoted.double.4d",
1064
+ "begin": "\"",
1065
+ "end": "\"",
1066
+ "patterns": [
1067
+ {
1068
+ "name": "constant.character.escape.4d",
1069
+ "match": "\\\\."
1070
+ }
1071
+ ]
1072
+ },
1073
+ "table_reference": {
1074
+ "begin": "(?i)\\[((?:\\$|\u003c\u003e|)[a-z_0-9]+[a-z_0-9 ]*)(\\:[0-9]+)?",
1075
+ "end": "\\]",
1076
+ "beginCaptures": {
1077
+ "1": {
1078
+ "name": "support.table.name.4d"
1079
+ },
1080
+ "2": {
1081
+ "name": "support.table.index.4d"
1082
+ }
1083
+ }
1084
+ },
1085
+ "text_variable": {
1086
+ "name": "storage.type.text.4d",
1087
+ "begin": "^\\n*[\\t ]*(?i)(C_TEXT(\\:C284)?)(\\()((?i)(?:\\$|\u003c\u003e|)(?:\\$|\u003c\u003e|)[a-z_0-9]+[a-z_0-9 ]*)",
1088
+ "end": "(\\))",
1089
+ "patterns": [
1090
+ {
1091
+ "name": "variable.name.text.4d",
1092
+ "match": "(?i)(?:\\$|\u003c\u003e|)(?:\\$|\u003c\u003e|)[a-z_0-9]+[a-z_0-9 ]*"
1093
+ },
1094
+ {
1095
+ "include": "#param_separator"
1096
+ }
1097
+ ],
1098
+ "beginCaptures": {
1099
+ "1": {
1100
+ "name": "storage.type.text.4d"
1101
+ },
1102
+ "2": {
1103
+ "name": "meta.c_text.code.4d"
1104
+ },
1105
+ "3": {
1106
+ "name": "punctuation.section.arguments.begin.bracket.round.4d"
1107
+ },
1108
+ "4": {
1109
+ "name": "variable.name.text.4d"
1110
+ }
1111
+ },
1112
+ "endCaptures": {
1113
+ "1": {
1114
+ "name": "punctuation.section.arguments.end.bracket.round.4d"
1115
+ }
1116
+ }
1117
+ },
1118
+ "this-function": {
1119
+ "name": "variable.language.this.4d",
1120
+ "match": "(^\\n*[\\t ]*(?i)(This(\\:C1470)?))|((?i)(This(\\:C1470)?))"
1121
+ },
1122
+ "variant_variable": {
1123
+ "name": "storage.type.variant.4d",
1124
+ "begin": "^\\n*[\\t ]*(?i)(C_VARIANT(\\:C1683)?)(\\()((?i)(?:\\$|\u003c\u003e|)(?:\\$|\u003c\u003e|)[a-z_0-9]+[a-z_0-9 ]*)",
1125
+ "end": "(\\))",
1126
+ "patterns": [
1127
+ {
1128
+ "name": "variable.name.variant.4d",
1129
+ "match": "(?i)(?:\\$|\u003c\u003e|)(?:\\$|\u003c\u003e|)[a-z_0-9]+[a-z_0-9 ]*"
1130
+ },
1131
+ {
1132
+ "include": "#param_separator"
1133
+ }
1134
+ ],
1135
+ "beginCaptures": {
1136
+ "1": {
1137
+ "name": "storage.type.variant.4d"
1138
+ },
1139
+ "2": {
1140
+ "name": "meta.c_variant.code.4d"
1141
+ },
1142
+ "3": {
1143
+ "name": "punctuation.section.arguments.begin.bracket.round.4d"
1144
+ },
1145
+ "4": {
1146
+ "name": "variable.name.variant.4d"
1147
+ }
1148
+ },
1149
+ "endCaptures": {
1150
+ "1": {
1151
+ "name": "punctuation.section.arguments.end.bracket.round.4d"
1152
+ }
1153
+ }
1154
+ }
1155
+ }
1156
+ }