github-linguist 7.7.0 → 7.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (70) hide show
  1. checksums.yaml +4 -4
  2. data/grammars/annotation.liquidhaskell.haskell.json +47 -0
  3. data/grammars/hidden.manref.json +1 -1
  4. data/grammars/hint.haskell.json +47 -0
  5. data/grammars/hint.message.haskell.json +47 -0
  6. data/grammars/hint.type.haskell.json +47 -0
  7. data/grammars/markdown.plantuml.codeblock.json +26 -0
  8. data/grammars/source.4dm.json +1100 -0
  9. data/grammars/source.abap.json +1 -1
  10. data/grammars/source.agda.json +32 -202
  11. data/grammars/source.ahk.json +6 -2
  12. data/grammars/source.chapel.json +4 -4
  13. data/grammars/source.csound.json +1 -1
  14. data/grammars/source.dart.json +57 -31
  15. data/grammars/source.dircolors.json +101 -3
  16. data/grammars/source.editorconfig.json +23 -5
  17. data/grammars/source.elixir.json +8 -0
  18. data/grammars/source.elm.json +1 -1
  19. data/grammars/source.emacs.lisp.json +10 -0
  20. data/grammars/source.faust.json +119 -0
  21. data/grammars/source.gcode.json +166 -8
  22. data/grammars/source.hack.json +4 -18
  23. data/grammars/source.haskell.json +47 -0
  24. data/grammars/source.hlsl.json +9 -5
  25. data/grammars/source.hsig.json +47 -0
  26. data/grammars/source.hx.json +4 -0
  27. data/grammars/source.igor.json +44 -0
  28. data/grammars/source.julia.json +25 -21
  29. data/grammars/source.lean.json +19 -3
  30. data/grammars/source.lean.markdown.json +2598 -0
  31. data/grammars/source.matlab.json +215 -152
  32. data/grammars/source.mcfunction-snapshot.json +1 -1
  33. data/grammars/source.meson.json +1 -1
  34. data/grammars/source.mrc.json +416 -534
  35. data/grammars/source.nasl.json +155 -0
  36. data/grammars/source.nextflow.json +2 -2
  37. data/grammars/source.odin-ehr.json +806 -0
  38. data/grammars/source.odin.json +402 -0
  39. data/grammars/source.prisma.json +7 -0
  40. data/grammars/source.qasm.json +66 -0
  41. data/grammars/source.ql.json +1408 -0
  42. data/grammars/source.scala.json +27 -3
  43. data/grammars/source.sy.json +2088 -183
  44. data/grammars/source.terraform.json +576 -132
  45. data/grammars/source.tnsaudit.json +256 -0
  46. data/grammars/source.ts.json +89 -30
  47. data/grammars/source.tsx.json +89 -30
  48. data/grammars/source.v.json +541 -788
  49. data/grammars/source.viml.json +2 -2
  50. data/grammars/source.webassembly.json +10 -0
  51. data/grammars/source.wsd.json +775 -0
  52. data/grammars/text.tex.latex.haskell.json +47 -0
  53. data/grammars/version +1 -1
  54. data/lib/linguist/VERSION +1 -1
  55. data/lib/linguist/file_blob.rb +1 -1
  56. data/lib/linguist/generated.rb +23 -3
  57. data/lib/linguist/heuristics.yml +48 -3
  58. data/lib/linguist/languages.json +1 -1
  59. data/lib/linguist/languages.yml +156 -34
  60. data/lib/linguist/lazy_blob.rb +10 -10
  61. data/lib/linguist/linguist.bundle +0 -0
  62. data/lib/linguist/samples.json +7739 -2010
  63. data/lib/linguist/shebang.rb +5 -3
  64. data/lib/linguist/vendor.yml +3 -0
  65. metadata +13 -7
  66. data/grammars/source.LS.json +0 -85
  67. data/grammars/source.MCPOST.json +0 -54
  68. data/grammars/source.MOD.json +0 -55
  69. data/grammars/source.apt.json +0 -18
  70. data/grammars/source.yaml-ext.json +0 -324
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 127d0286b605eacb8a85a1d0f94ad6a7492e3842dec8839875e12d07d1575c24
4
- data.tar.gz: f74b2b6299773a445c1e5ed64429c2ecf20014b4f6100852a38ec5de8cfdb312
3
+ metadata.gz: e83ceb8bf77137817f34d6e9f7f03c98848810f05d5b302041890d0cec6d8a10
4
+ data.tar.gz: 5958359cc33f77f56c59166000692ce9f48f8b502520f1d1b1fcfd5ff27e1e93
5
5
  SHA512:
6
- metadata.gz: 3c6cfa0346aeef80b8903bc699e55c7ed0654547a4e2b1a208416c0c41f3fd326ba6b5b662771f5d2517eaac65e28183917bdb43f2c4b4c3aeab6b4dab6bdd17
7
- data.tar.gz: 958144eab81ef48c57328aa7a7b092177c46850b9e48c395b5e0db1fef5000cf4da120aa905893c6ef50df7f851b743b113938cae732568c282c7bd87ca44b37
6
+ metadata.gz: da8c5a07b3b3bbb1e9beefa1d968fbfb6af90ce4da450d7993f53d72bda4f7cfd50acb5d24b248f7042370c025049dca3bc97a005c9ebe331f8db5cf3bc05675
7
+ data.tar.gz: 689b968ac78b67169813cceba5a2cc8471ba844b8e040eadf3560d6f0ba651e47a1448877fc2c34ade13f99905a302ad12b6d631c4fb2deb85f0b18c3b560be6
@@ -286,6 +286,9 @@
286
286
  {
287
287
  "include": "#comments"
288
288
  },
289
+ {
290
+ "include": "#string"
291
+ },
289
292
  {
290
293
  "include": "#where"
291
294
  },
@@ -1716,6 +1719,12 @@
1716
1719
  {
1717
1720
  "include": "#via_list"
1718
1721
  },
1722
+ {
1723
+ "include": "#via_list_newline"
1724
+ },
1725
+ {
1726
+ "include": "#via_indent"
1727
+ },
1719
1728
  {
1720
1729
  "include": "#via_simple"
1721
1730
  },
@@ -1724,6 +1733,25 @@
1724
1733
  }
1725
1734
  ]
1726
1735
  },
1736
+ "via_indent": {
1737
+ "patterns": [
1738
+ {
1739
+ "name": "meta.via.haskell",
1740
+ "begin": "(?:\\G(?:\\s*\\w+\\s)?|^)([ \\t]*)(via)\\s*",
1741
+ "end": "(?:^(?!\\1|[ \\t]*$)|(?=@-}))",
1742
+ "patterns": [
1743
+ {
1744
+ "include": "#type_signature"
1745
+ }
1746
+ ],
1747
+ "beginCaptures": {
1748
+ "2": {
1749
+ "name": "keyword.other.haskell"
1750
+ }
1751
+ }
1752
+ }
1753
+ ]
1754
+ },
1727
1755
  "via_keyword": {
1728
1756
  "patterns": [
1729
1757
  {
@@ -1756,6 +1784,25 @@
1756
1784
  }
1757
1785
  ]
1758
1786
  },
1787
+ "via_list_newline": {
1788
+ "patterns": [
1789
+ {
1790
+ "name": "meta.via.haskell",
1791
+ "begin": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(via)\\s*",
1792
+ "end": "$",
1793
+ "patterns": [
1794
+ {
1795
+ "include": "#type_signature"
1796
+ }
1797
+ ],
1798
+ "beginCaptures": {
1799
+ "1": {
1800
+ "name": "keyword.other.haskell"
1801
+ }
1802
+ }
1803
+ }
1804
+ ]
1805
+ },
1759
1806
  "via_simple": {
1760
1807
  "patterns": [
1761
1808
  {
@@ -3,7 +3,7 @@
3
3
  "patterns": [
4
4
  {
5
5
  "name": "manref",
6
- "match": "([^\\s()\u003c\u003e/\"'`{}!:\u0026*#?\\\\]+)((\\()([0-9])([^()\\s]*)(\\)))",
6
+ "match": "([^\\s()\u003c\u003e/\"'`{}!:\u0026*#?\\\\]+)((\\()([0-9])(?!\\.|(?\u003c=0)(?:[Xx][0-9A-Fa-f]+|[OoBb][0-9]+))([^()\\s]*)(\\)))",
7
7
  "captures": {
8
8
  "1": {
9
9
  "name": "manref.subject"
@@ -268,6 +268,9 @@
268
268
  {
269
269
  "include": "#comments"
270
270
  },
271
+ {
272
+ "include": "#string"
273
+ },
271
274
  {
272
275
  "include": "#where"
273
276
  },
@@ -1643,6 +1646,12 @@
1643
1646
  {
1644
1647
  "include": "#via_list"
1645
1648
  },
1649
+ {
1650
+ "include": "#via_list_newline"
1651
+ },
1652
+ {
1653
+ "include": "#via_indent"
1654
+ },
1646
1655
  {
1647
1656
  "include": "#via_simple"
1648
1657
  },
@@ -1651,6 +1660,25 @@
1651
1660
  }
1652
1661
  ]
1653
1662
  },
1663
+ "via_indent": {
1664
+ "patterns": [
1665
+ {
1666
+ "name": "meta.via.haskell",
1667
+ "begin": "^([ \\t]*)(via)\\s*",
1668
+ "end": "^(?!\\1|[ \\t]*$)",
1669
+ "patterns": [
1670
+ {
1671
+ "include": "#type_signature"
1672
+ }
1673
+ ],
1674
+ "beginCaptures": {
1675
+ "2": {
1676
+ "name": "keyword.other.haskell"
1677
+ }
1678
+ }
1679
+ }
1680
+ ]
1681
+ },
1654
1682
  "via_keyword": {
1655
1683
  "patterns": [
1656
1684
  {
@@ -1683,6 +1711,25 @@
1683
1711
  }
1684
1712
  ]
1685
1713
  },
1714
+ "via_list_newline": {
1715
+ "patterns": [
1716
+ {
1717
+ "name": "meta.via.haskell",
1718
+ "begin": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(via)\\s*",
1719
+ "end": "$",
1720
+ "patterns": [
1721
+ {
1722
+ "include": "#type_signature"
1723
+ }
1724
+ ],
1725
+ "beginCaptures": {
1726
+ "1": {
1727
+ "name": "keyword.other.haskell"
1728
+ }
1729
+ }
1730
+ }
1731
+ ]
1732
+ },
1686
1733
  "via_simple": {
1687
1734
  "patterns": [
1688
1735
  {
@@ -292,6 +292,9 @@
292
292
  {
293
293
  "include": "#comments"
294
294
  },
295
+ {
296
+ "include": "#string"
297
+ },
295
298
  {
296
299
  "include": "#where"
297
300
  },
@@ -1667,6 +1670,12 @@
1667
1670
  {
1668
1671
  "include": "#via_list"
1669
1672
  },
1673
+ {
1674
+ "include": "#via_list_newline"
1675
+ },
1676
+ {
1677
+ "include": "#via_indent"
1678
+ },
1670
1679
  {
1671
1680
  "include": "#via_simple"
1672
1681
  },
@@ -1675,6 +1684,25 @@
1675
1684
  }
1676
1685
  ]
1677
1686
  },
1687
+ "via_indent": {
1688
+ "patterns": [
1689
+ {
1690
+ "name": "meta.via.haskell",
1691
+ "begin": "^([ \\t]*)(via)\\s*",
1692
+ "end": "^(?!\\1|[ \\t]*$)",
1693
+ "patterns": [
1694
+ {
1695
+ "include": "#type_signature"
1696
+ }
1697
+ ],
1698
+ "beginCaptures": {
1699
+ "2": {
1700
+ "name": "keyword.other.haskell"
1701
+ }
1702
+ }
1703
+ }
1704
+ ]
1705
+ },
1678
1706
  "via_keyword": {
1679
1707
  "patterns": [
1680
1708
  {
@@ -1707,6 +1735,25 @@
1707
1735
  }
1708
1736
  ]
1709
1737
  },
1738
+ "via_list_newline": {
1739
+ "patterns": [
1740
+ {
1741
+ "name": "meta.via.haskell",
1742
+ "begin": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(via)\\s*",
1743
+ "end": "$",
1744
+ "patterns": [
1745
+ {
1746
+ "include": "#type_signature"
1747
+ }
1748
+ ],
1749
+ "beginCaptures": {
1750
+ "1": {
1751
+ "name": "keyword.other.haskell"
1752
+ }
1753
+ }
1754
+ }
1755
+ ]
1756
+ },
1710
1757
  "via_simple": {
1711
1758
  "patterns": [
1712
1759
  {
@@ -265,6 +265,9 @@
265
265
  {
266
266
  "include": "#comments"
267
267
  },
268
+ {
269
+ "include": "#string"
270
+ },
268
271
  {
269
272
  "include": "#where"
270
273
  },
@@ -1640,6 +1643,12 @@
1640
1643
  {
1641
1644
  "include": "#via_list"
1642
1645
  },
1646
+ {
1647
+ "include": "#via_list_newline"
1648
+ },
1649
+ {
1650
+ "include": "#via_indent"
1651
+ },
1643
1652
  {
1644
1653
  "include": "#via_simple"
1645
1654
  },
@@ -1648,6 +1657,25 @@
1648
1657
  }
1649
1658
  ]
1650
1659
  },
1660
+ "via_indent": {
1661
+ "patterns": [
1662
+ {
1663
+ "name": "meta.via.haskell",
1664
+ "begin": "^([ \\t]*)(via)\\s*",
1665
+ "end": "^(?!\\1|[ \\t]*$)",
1666
+ "patterns": [
1667
+ {
1668
+ "include": "#type_signature"
1669
+ }
1670
+ ],
1671
+ "beginCaptures": {
1672
+ "2": {
1673
+ "name": "keyword.other.haskell"
1674
+ }
1675
+ }
1676
+ }
1677
+ ]
1678
+ },
1651
1679
  "via_keyword": {
1652
1680
  "patterns": [
1653
1681
  {
@@ -1680,6 +1708,25 @@
1680
1708
  }
1681
1709
  ]
1682
1710
  },
1711
+ "via_list_newline": {
1712
+ "patterns": [
1713
+ {
1714
+ "name": "meta.via.haskell",
1715
+ "begin": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(via)\\s*",
1716
+ "end": "$",
1717
+ "patterns": [
1718
+ {
1719
+ "include": "#type_signature"
1720
+ }
1721
+ ],
1722
+ "beginCaptures": {
1723
+ "1": {
1724
+ "name": "keyword.other.haskell"
1725
+ }
1726
+ }
1727
+ }
1728
+ ]
1729
+ },
1683
1730
  "via_simple": {
1684
1731
  "patterns": [
1685
1732
  {
@@ -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
+ }