github-linguist 7.6.1 → 7.9.0

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