tm-grammars 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (181) hide show
  1. package/LICENSE +22 -0
  2. package/NOTICE +6565 -0
  3. package/README.md +211 -0
  4. package/grammars/abap.json +380 -0
  5. package/grammars/actionscript-3.json +951 -0
  6. package/grammars/ada.json +3874 -0
  7. package/grammars/apache.json +562 -0
  8. package/grammars/apex.json +3203 -0
  9. package/grammars/apl.json +1479 -0
  10. package/grammars/applescript.json +1406 -0
  11. package/grammars/ara.json +428 -0
  12. package/grammars/asm.json +1741 -0
  13. package/grammars/astro.json +776 -0
  14. package/grammars/awk.json +388 -0
  15. package/grammars/ballerina.json +3768 -0
  16. package/grammars/bat.json +783 -0
  17. package/grammars/beancount.json +831 -0
  18. package/grammars/berry.json +172 -0
  19. package/grammars/bibtex.json +315 -0
  20. package/grammars/bicep.json +239 -0
  21. package/grammars/blade.json +3870 -0
  22. package/grammars/c.json +3552 -0
  23. package/grammars/cadence.json +738 -0
  24. package/grammars/clarity.json +877 -0
  25. package/grammars/clojure.json +426 -0
  26. package/grammars/cmake.json +143 -0
  27. package/grammars/cobol.json +1124 -0
  28. package/grammars/codeql.json +1540 -0
  29. package/grammars/coffee.json +1311 -0
  30. package/grammars/cpp-macro.json +9498 -0
  31. package/grammars/cpp.json +16635 -0
  32. package/grammars/crystal.json +1866 -0
  33. package/grammars/csharp.json +5722 -0
  34. package/grammars/css.json +1860 -0
  35. package/grammars/csv.json +46 -0
  36. package/grammars/cue.json +1128 -0
  37. package/grammars/cypher.json +353 -0
  38. package/grammars/d.json +3185 -0
  39. package/grammars/dart.json +522 -0
  40. package/grammars/dax.json +185 -0
  41. package/grammars/diff.json +155 -0
  42. package/grammars/docker.json +97 -0
  43. package/grammars/dream-maker.json +640 -0
  44. package/grammars/elixir.json +1014 -0
  45. package/grammars/elm.json +751 -0
  46. package/grammars/erb.json +156 -0
  47. package/grammars/erlang.json +1757 -0
  48. package/grammars/fish.json +189 -0
  49. package/grammars/fsharp.json +1831 -0
  50. package/grammars/gdresource.json +290 -0
  51. package/grammars/gdscript.json +969 -0
  52. package/grammars/gdshader.json +405 -0
  53. package/grammars/gherkin.json +133 -0
  54. package/grammars/git-commit.json +85 -0
  55. package/grammars/git-rebase.json +56 -0
  56. package/grammars/glimmer-js.json +98 -0
  57. package/grammars/glimmer-ts.json +98 -0
  58. package/grammars/glsl.json +57 -0
  59. package/grammars/gnuplot.json +892 -0
  60. package/grammars/go.json +1012 -0
  61. package/grammars/graphql.json +1295 -0
  62. package/grammars/groovy.json +1378 -0
  63. package/grammars/hack.json +2650 -0
  64. package/grammars/haml.json +598 -0
  65. package/grammars/handlebars.json +848 -0
  66. package/grammars/haskell.json +2431 -0
  67. package/grammars/hcl.json +787 -0
  68. package/grammars/hjson.json +821 -0
  69. package/grammars/hlsl.json +212 -0
  70. package/grammars/html.json +93 -0
  71. package/grammars/imba.json +2696 -0
  72. package/grammars/ini.json +108 -0
  73. package/grammars/java.json +1885 -0
  74. package/grammars/javascript.json +5984 -0
  75. package/grammars/jinja-html.json +16 -0
  76. package/grammars/jinja.json +345 -0
  77. package/grammars/jison.json +715 -0
  78. package/grammars/jsdoc.json +21 -0
  79. package/grammars/json.json +208 -0
  80. package/grammars/json5.json +244 -0
  81. package/grammars/jsonc.json +208 -0
  82. package/grammars/jsonl.json +208 -0
  83. package/grammars/jsonnet.json +211 -0
  84. package/grammars/jssm.json +159 -0
  85. package/grammars/jsx.json +5984 -0
  86. package/grammars/julia.json +1061 -0
  87. package/grammars/kotlin.json +580 -0
  88. package/grammars/kusto.json +687 -0
  89. package/grammars/latex.json +2395 -0
  90. package/grammars/less.json +5012 -0
  91. package/grammars/liquid.json +990 -0
  92. package/grammars/lisp.json +121 -0
  93. package/grammars/logo.json +55 -0
  94. package/grammars/lua.json +956 -0
  95. package/grammars/make.json +629 -0
  96. package/grammars/markdown.json +3066 -0
  97. package/grammars/marko.json +1344 -0
  98. package/grammars/matlab.json +1131 -0
  99. package/grammars/mdc.json +571 -0
  100. package/grammars/mdx.json +5629 -0
  101. package/grammars/mermaid.json +1382 -0
  102. package/grammars/mojo.json +4153 -0
  103. package/grammars/narrat.json +227 -0
  104. package/grammars/nextflow.json +298 -0
  105. package/grammars/nginx.json +2121 -0
  106. package/grammars/nim.json +1522 -0
  107. package/grammars/nix.json +1200 -0
  108. package/grammars/nushell.json +1047 -0
  109. package/grammars/objective-c.json +3750 -0
  110. package/grammars/objective-cpp.json +7242 -0
  111. package/grammars/ocaml.json +2967 -0
  112. package/grammars/pascal.json +154 -0
  113. package/grammars/perl.json +2971 -0
  114. package/grammars/php.json +4024 -0
  115. package/grammars/plsql.json +241 -0
  116. package/grammars/postcss.json +377 -0
  117. package/grammars/powerquery.json +349 -0
  118. package/grammars/powershell.json +1024 -0
  119. package/grammars/prisma.json +443 -0
  120. package/grammars/prolog.json +298 -0
  121. package/grammars/proto.json +507 -0
  122. package/grammars/pug.json +1033 -0
  123. package/grammars/puppet.json +777 -0
  124. package/grammars/purescript.json +871 -0
  125. package/grammars/python.json +4208 -0
  126. package/grammars/r.json +637 -0
  127. package/grammars/raku.json +310 -0
  128. package/grammars/razor.json +1813 -0
  129. package/grammars/reg.json +136 -0
  130. package/grammars/rel.json +200 -0
  131. package/grammars/riscv.json +298 -0
  132. package/grammars/rst.json +734 -0
  133. package/grammars/ruby.json +2769 -0
  134. package/grammars/rust.json +1171 -0
  135. package/grammars/sas.json +302 -0
  136. package/grammars/sass.json +618 -0
  137. package/grammars/scala.json +1313 -0
  138. package/grammars/scheme.json +384 -0
  139. package/grammars/scss.json +1874 -0
  140. package/grammars/shaderlab.json +199 -0
  141. package/grammars/shellscript.json +2025 -0
  142. package/grammars/shellsession.json +33 -0
  143. package/grammars/smalltalk.json +235 -0
  144. package/grammars/solidity.json +1210 -0
  145. package/grammars/sparql.json +45 -0
  146. package/grammars/splunk.json +91 -0
  147. package/grammars/sql.json +631 -0
  148. package/grammars/ssh-config.json +88 -0
  149. package/grammars/stata.json +3050 -0
  150. package/grammars/stylus.json +1208 -0
  151. package/grammars/svelte.json +1171 -0
  152. package/grammars/swift.json +4203 -0
  153. package/grammars/system-verilog.json +1063 -0
  154. package/grammars/tasl.json +292 -0
  155. package/grammars/tcl.json +291 -0
  156. package/grammars/tex.json +281 -0
  157. package/grammars/toml.json +431 -0
  158. package/grammars/tsx.json +5984 -0
  159. package/grammars/turtle.json +261 -0
  160. package/grammars/twig.json +1394 -0
  161. package/grammars/typescript.json +5735 -0
  162. package/grammars/v.json +1001 -0
  163. package/grammars/vb.json +232 -0
  164. package/grammars/verilog.json +305 -0
  165. package/grammars/vhdl.json +1484 -0
  166. package/grammars/viml.json +445 -0
  167. package/grammars/vue-html.json +559 -0
  168. package/grammars/vue.json +1237 -0
  169. package/grammars/vyper.json +5415 -0
  170. package/grammars/wasm.json +831 -0
  171. package/grammars/wenyan.json +129 -0
  172. package/grammars/wgsl.json +391 -0
  173. package/grammars/wolfram.json +2370 -0
  174. package/grammars/xml.json +382 -0
  175. package/grammars/xsl.json +89 -0
  176. package/grammars/yaml.json +616 -0
  177. package/grammars/zenscript.json +257 -0
  178. package/grammars/zig.json +312 -0
  179. package/index.d.ts +18 -0
  180. package/index.js +2165 -0
  181. package/package.json +46 -0
@@ -0,0 +1,2967 @@
1
+ {
2
+ "displayName": "OCaml",
3
+ "fileTypes": [
4
+ ".ml",
5
+ ".mli"
6
+ ],
7
+ "name": "ocaml",
8
+ "patterns": [
9
+ {
10
+ "include": "#comment"
11
+ },
12
+ {
13
+ "include": "#pragma"
14
+ },
15
+ {
16
+ "include": "#decl"
17
+ }
18
+ ],
19
+ "repository": {
20
+ "attribute": {
21
+ "begin": "(\\[)[[:space:]]*((?<![#\\-:!?.@*/&%^+<=>|~$])@{1,3}(?![#\\-:!?.@*/&%^+<=>|~$]))",
22
+ "beginCaptures": {
23
+ "1": {
24
+ "name": "constant.language constant.numeric entity.other.attribute-name.id.css strong"
25
+ },
26
+ "2": {
27
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
28
+ }
29
+ },
30
+ "end": "\\]",
31
+ "endCaptures": {
32
+ "0": {
33
+ "name": "constant.language constant.numeric entity.other.attribute-name.id.css strong"
34
+ }
35
+ },
36
+ "patterns": [
37
+ {
38
+ "include": "#attributePayload"
39
+ }
40
+ ]
41
+ },
42
+ "attributeIdentifier": {
43
+ "captures": {
44
+ "1": {
45
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp strong"
46
+ },
47
+ "2": {
48
+ "name": "punctuation.definition.tag"
49
+ }
50
+ },
51
+ "match": "((?<![#\\-:!?.@*/&%^+<=>|~$])%(?![#\\-:!?.@*/&%^+<=>|~$]))((?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|\"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*))"
52
+ },
53
+ "attributePayload": {
54
+ "patterns": [
55
+ {
56
+ "begin": "(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]%|^%))(?![#\\-:!?.@*/&%^+<=>|~$]))",
57
+ "end": "((?<![#\\-:!?.@*/&%^+<=>|~$])[:\\?](?![#\\-:!?.@*/&%^+<=>|~$]))|(?<=[[:space:]])|(?=\\])",
58
+ "endCaptures": {
59
+ "1": {
60
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
61
+ }
62
+ },
63
+ "patterns": [
64
+ {
65
+ "include": "#pathModuleExtended"
66
+ },
67
+ {
68
+ "include": "#pathRecord"
69
+ }
70
+ ]
71
+ },
72
+ {
73
+ "begin": "(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]:|^:))(?![#\\-:!?.@*/&%^+<=>|~$]))",
74
+ "end": "(?=\\])",
75
+ "patterns": [
76
+ {
77
+ "include": "#signature"
78
+ },
79
+ {
80
+ "include": "#type"
81
+ }
82
+ ]
83
+ },
84
+ {
85
+ "begin": "(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]\\?|^\\?))(?![#\\-:!?.@*/&%^+<=>|~$]))",
86
+ "end": "(?=\\])",
87
+ "patterns": [
88
+ {
89
+ "begin": "(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]\\?|^\\?))(?![#\\-:!?.@*/&%^+<=>|~$]))",
90
+ "end": "(?=\\])|\\bwhen\\b",
91
+ "endCaptures": {
92
+ "1": {
93
+ }
94
+ },
95
+ "patterns": [
96
+ {
97
+ "include": "#pattern"
98
+ }
99
+ ]
100
+ },
101
+ {
102
+ "begin": "(?:(?<=(?:[^[:word:]]when|^when))(?![[:word:]]))",
103
+ "end": "(?=\\])",
104
+ "patterns": [
105
+ {
106
+ "include": "#term"
107
+ }
108
+ ]
109
+ }
110
+ ]
111
+ },
112
+ {
113
+ "include": "#term"
114
+ }
115
+ ]
116
+ },
117
+ "bindClassTerm": {
118
+ "patterns": [
119
+ {
120
+ "begin": "(?:(?<=(?:[^[:word:]]and|^and|[^[:word:]]class|^class|[^[:word:]]type|^type))(?![[:word:]]))",
121
+ "end": "(?<![#\\-:!?.@*/&%^+<=>|~$])(:)|(=)(?![#\\-:!?.@*/&%^+<=>|~$])|(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
122
+ "endCaptures": {
123
+ "1": {
124
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp strong"
125
+ },
126
+ "2": {
127
+ "name": "support.type strong"
128
+ }
129
+ },
130
+ "patterns": [
131
+ {
132
+ "begin": "(?:(?<=(?:[^[:word:]]and|^and|[^[:word:]]class|^class|[^[:word:]]type|^type))(?![[:word:]]))",
133
+ "end": "(?=(?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|\"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)[[:space:]]*,|[^[:space:][:lower:]%])|(?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|\"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)|(?=\\btype\\b)",
134
+ "endCaptures": {
135
+ "0": {
136
+ "name": "entity.name.function strong emphasis"
137
+ }
138
+ },
139
+ "patterns": [
140
+ {
141
+ "include": "#attributeIdentifier"
142
+ }
143
+ ]
144
+ },
145
+ {
146
+ "begin": "\\[",
147
+ "captures": {
148
+ "0": {
149
+ "name": "punctuation.definition.tag"
150
+ }
151
+ },
152
+ "end": "\\]",
153
+ "patterns": [
154
+ {
155
+ "include": "#type"
156
+ }
157
+ ]
158
+ },
159
+ {
160
+ "include": "#bindTermArgs"
161
+ }
162
+ ]
163
+ },
164
+ {
165
+ "begin": "(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]:|^:))(?![#\\-:!?.@*/&%^+<=>|~$]))",
166
+ "end": "(?<![#\\-:!?.@*/&%^+<=>|~$])=(?![#\\-:!?.@*/&%^+<=>|~$])|(?=\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|val)\\b)",
167
+ "endCaptures": {
168
+ "0": {
169
+ "name": "support.type strong"
170
+ }
171
+ },
172
+ "patterns": [
173
+ {
174
+ "include": "#literalClassType"
175
+ }
176
+ ]
177
+ },
178
+ {
179
+ "begin": "(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]=|^=))(?![#\\-:!?.@*/&%^+<=>|~$]))",
180
+ "end": "\\band\\b|(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
181
+ "endCaptures": {
182
+ "0": {
183
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp markup.underline"
184
+ }
185
+ },
186
+ "patterns": [
187
+ {
188
+ "include": "#term"
189
+ }
190
+ ]
191
+ }
192
+ ]
193
+ },
194
+ "bindClassType": {
195
+ "patterns": [
196
+ {
197
+ "begin": "(?:(?<=(?:[^[:word:]]and|^and|[^[:word:]]class|^class|[^[:word:]]type|^type))(?![[:word:]]))",
198
+ "end": "(?<![#\\-:!?.@*/&%^+<=>|~$])(:)|(=)(?![#\\-:!?.@*/&%^+<=>|~$])|(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
199
+ "endCaptures": {
200
+ "1": {
201
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp strong"
202
+ },
203
+ "2": {
204
+ "name": "support.type strong"
205
+ }
206
+ },
207
+ "patterns": [
208
+ {
209
+ "begin": "(?:(?<=(?:[^[:word:]]and|^and|[^[:word:]]class|^class|[^[:word:]]type|^type))(?![[:word:]]))",
210
+ "end": "(?=(?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|\"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)[[:space:]]*,|[^[:space:][:lower:]%])|(?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|\"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)|(?=\\btype\\b)",
211
+ "endCaptures": {
212
+ "0": {
213
+ "name": "entity.name.function strong emphasis"
214
+ }
215
+ },
216
+ "patterns": [
217
+ {
218
+ "include": "#attributeIdentifier"
219
+ }
220
+ ]
221
+ },
222
+ {
223
+ "begin": "\\[",
224
+ "captures": {
225
+ "0": {
226
+ "name": "punctuation.definition.tag"
227
+ }
228
+ },
229
+ "end": "\\]",
230
+ "patterns": [
231
+ {
232
+ "include": "#type"
233
+ }
234
+ ]
235
+ },
236
+ {
237
+ "include": "#bindTermArgs"
238
+ }
239
+ ]
240
+ },
241
+ {
242
+ "begin": "(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]:|^:))(?![#\\-:!?.@*/&%^+<=>|~$]))",
243
+ "end": "(?<![#\\-:!?.@*/&%^+<=>|~$])=(?![#\\-:!?.@*/&%^+<=>|~$])|(?=\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|val)\\b)",
244
+ "endCaptures": {
245
+ "0": {
246
+ "name": "support.type strong"
247
+ }
248
+ },
249
+ "patterns": [
250
+ {
251
+ "include": "#literalClassType"
252
+ }
253
+ ]
254
+ },
255
+ {
256
+ "begin": "(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]=|^=))(?![#\\-:!?.@*/&%^+<=>|~$]))",
257
+ "end": "\\band\\b|(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
258
+ "endCaptures": {
259
+ "0": {
260
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp markup.underline"
261
+ }
262
+ },
263
+ "patterns": [
264
+ {
265
+ "include": "#literalClassType"
266
+ }
267
+ ]
268
+ }
269
+ ]
270
+ },
271
+ "bindConstructor": {
272
+ "patterns": [
273
+ {
274
+ "begin": "(?:(?<=(?:[^[:word:]]exception|^exception))(?![[:word:]]))|(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]\\+=|^\\+=|[^#\\-:!?.@*/&%^+<=>|~$]=|^=|[^#\\-:!?.@*/&%^+<=>|~$]\\||^\\|))(?![#\\-:!?.@*/&%^+<=>|~$]))",
275
+ "end": "(:)|(\\bof\\b)|((?<![#\\-:!?.@*/&%^+<=>|~$])\\|(?![#\\-:!?.@*/&%^+<=>|~$]))|(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
276
+ "endCaptures": {
277
+ "1": {
278
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp strong"
279
+ },
280
+ "2": {
281
+ "name": "punctuation.definition.tag"
282
+ },
283
+ "3": {
284
+ "name": "support.type strong"
285
+ }
286
+ },
287
+ "patterns": [
288
+ {
289
+ "include": "#attributeIdentifier"
290
+ },
291
+ {
292
+ "match": "\\.\\.",
293
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
294
+ },
295
+ {
296
+ "match": "\\b(?:\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)\\b(?![[:space:]]*(?:\\.|\\([^\\*]))",
297
+ "name": "constant.language constant.numeric entity.other.attribute-name.id.css strong"
298
+ },
299
+ {
300
+ "include": "#type"
301
+ }
302
+ ]
303
+ },
304
+ {
305
+ "begin": "(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]:|^:))(?![#\\-:!?.@*/&%^+<=>|~$]))|(?:(?<=(?:[^[:word:]]of|^of))(?![[:word:]]))",
306
+ "end": "(?<![#\\-:!?.@*/&%^+<=>|~$])\\|(?![#\\-:!?.@*/&%^+<=>|~$])|(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
307
+ "endCaptures": {
308
+ "0": {
309
+ "name": "support.type strong"
310
+ }
311
+ },
312
+ "patterns": [
313
+ {
314
+ "include": "#type"
315
+ }
316
+ ]
317
+ }
318
+ ]
319
+ },
320
+ "bindSignature": {
321
+ "patterns": [
322
+ {
323
+ "include": "#comment"
324
+ },
325
+ {
326
+ "begin": "(?:(?<=(?:[^[:word:]]type|^type))(?![[:word:]]))",
327
+ "end": "(?<![#\\-:!?.@*/&%^+<=>|~$])=(?![#\\-:!?.@*/&%^+<=>|~$])",
328
+ "endCaptures": {
329
+ "0": {
330
+ "name": "support.type strong"
331
+ }
332
+ },
333
+ "patterns": [
334
+ {
335
+ "include": "#comment"
336
+ },
337
+ {
338
+ "include": "#pathModuleExtended"
339
+ }
340
+ ]
341
+ },
342
+ {
343
+ "begin": "(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]=|^=))(?![#\\-:!?.@*/&%^+<=>|~$]))",
344
+ "end": "\\band\\b|(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
345
+ "endCaptures": {
346
+ "0": {
347
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp markup.underline"
348
+ }
349
+ },
350
+ "patterns": [
351
+ {
352
+ "include": "#signature"
353
+ }
354
+ ]
355
+ }
356
+ ]
357
+ },
358
+ "bindStructure": {
359
+ "patterns": [
360
+ {
361
+ "include": "#comment"
362
+ },
363
+ {
364
+ "begin": "(?:(?<=(?:[^[:word:]]and|^and))(?![[:word:]]))|(?=[[:upper:]])",
365
+ "end": "(?<![#\\-:!?.@*/&%^+<=>|~$])(:(?!=))|(:?=)(?![#\\-:!?.@*/&%^+<=>|~$])|(?=\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|open|type|val)\\b)",
366
+ "endCaptures": {
367
+ "1": {
368
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp strong"
369
+ },
370
+ "2": {
371
+ "name": "support.type strong"
372
+ }
373
+ },
374
+ "patterns": [
375
+ {
376
+ "include": "#comment"
377
+ },
378
+ {
379
+ "match": "\\bmodule\\b",
380
+ "name": "markup.inserted constant.language support.constant.property-value entity.name.filename"
381
+ },
382
+ {
383
+ "match": "(?:\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)",
384
+ "name": "entity.name.function strong emphasis"
385
+ },
386
+ {
387
+ "begin": "\\((?!\\))",
388
+ "captures": {
389
+ "0": {
390
+ "name": "punctuation.definition.tag"
391
+ }
392
+ },
393
+ "end": "\\)",
394
+ "patterns": [
395
+ {
396
+ "include": "#comment"
397
+ },
398
+ {
399
+ "begin": "(?<![#\\-:!?.@*/&%^+<=>|~$]):(?![#\\-:!?.@*/&%^+<=>|~$])",
400
+ "beginCaptures": {
401
+ "0": {
402
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp strong"
403
+ }
404
+ },
405
+ "end": "(?=\\))",
406
+ "patterns": [
407
+ {
408
+ "include": "#signature"
409
+ }
410
+ ]
411
+ },
412
+ {
413
+ "include": "#variableModule"
414
+ }
415
+ ]
416
+ },
417
+ {
418
+ "include": "#literalUnit"
419
+ }
420
+ ]
421
+ },
422
+ {
423
+ "begin": "(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]:|^:))(?![#\\-:!?.@*/&%^+<=>|~$]))",
424
+ "end": "\\b(and)\\b|((?<![#\\-:!?.@*/&%^+<=>|~$])=(?![#\\-:!?.@*/&%^+<=>|~$]))|(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
425
+ "endCaptures": {
426
+ "1": {
427
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp markup.underline"
428
+ },
429
+ "2": {
430
+ "name": "support.type strong"
431
+ }
432
+ },
433
+ "patterns": [
434
+ {
435
+ "include": "#signature"
436
+ }
437
+ ]
438
+ },
439
+ {
440
+ "begin": "(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]:=|^:=|[^#\\-:!?.@*/&%^+<=>|~$]=|^=))(?![#\\-:!?.@*/&%^+<=>|~$]))",
441
+ "end": "\\b(?:(and)|(with))\\b|(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
442
+ "endCaptures": {
443
+ "1": {
444
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp markup.underline"
445
+ },
446
+ "2": {
447
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp markup.underline"
448
+ }
449
+ },
450
+ "patterns": [
451
+ {
452
+ "include": "#structure"
453
+ }
454
+ ]
455
+ }
456
+ ]
457
+ },
458
+ "bindTerm": {
459
+ "patterns": [
460
+ {
461
+ "begin": "(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]!|^!))(?![#\\-:!?.@*/&%^+<=>|~$]))|(?:(?<=(?:[^[:word:]]and|^and|[^[:word:]]external|^external|[^[:word:]]let|^let|[^[:word:]]method|^method|[^[:word:]]val|^val))(?![[:word:]]))",
462
+ "end": "(\\bmodule\\b)|(\\bopen\\b)|(?<![#\\-:!?.@*/&%^+<=>|~$])(:)|((?<![#\\-:!?.@*/&%^+<=>|~$])=(?![#\\-:!?.@*/&%^+<=>|~$]))(?![#\\-:!?.@*/&%^+<=>|~$])|(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
463
+ "endCaptures": {
464
+ "1": {
465
+ "name": "markup.inserted constant.language support.constant.property-value entity.name.filename"
466
+ },
467
+ "2": {
468
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
469
+ },
470
+ "3": {
471
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp strong"
472
+ },
473
+ "4": {
474
+ "name": "support.type strong"
475
+ }
476
+ },
477
+ "patterns": [
478
+ {
479
+ "begin": "(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]!|^!))(?![#\\-:!?.@*/&%^+<=>|~$]))|(?:(?<=(?:[^[:word:]]and|^and|[^[:word:]]external|^external|[^[:word:]]let|^let|[^[:word:]]method|^method|[^[:word:]]val|^val))(?![[:word:]]))",
480
+ "end": "(?=\\b(?:module|open)\\b)|(?=(?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|\"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)[[:space:]]*,|[^[:space:][:lower:]%])|(\\brec\\b)|((?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|\"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*))",
481
+ "endCaptures": {
482
+ "1": {
483
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
484
+ },
485
+ "2": {
486
+ "name": "entity.name.function strong emphasis"
487
+ }
488
+ },
489
+ "patterns": [
490
+ {
491
+ "include": "#attributeIdentifier"
492
+ },
493
+ {
494
+ "include": "#comment"
495
+ }
496
+ ]
497
+ },
498
+ {
499
+ "begin": "(?:(?<=(?:[^[:word:]]rec|^rec))(?![[:word:]]))",
500
+ "end": "((?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|\"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*))|(?=[^[:space:][:alpha:]])",
501
+ "endCaptures": {
502
+ "0": {
503
+ "name": "entity.name.function strong emphasis"
504
+ }
505
+ },
506
+ "patterns": [
507
+ {
508
+ "include": "#bindTermArgs"
509
+ }
510
+ ]
511
+ },
512
+ {
513
+ "include": "#bindTermArgs"
514
+ }
515
+ ]
516
+ },
517
+ {
518
+ "begin": "(?:(?<=(?:[^[:word:]]module|^module))(?![[:word:]]))",
519
+ "end": "(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
520
+ "patterns": [
521
+ {
522
+ "include": "#declModule"
523
+ }
524
+ ]
525
+ },
526
+ {
527
+ "begin": "(?:(?<=(?:[^[:word:]]open|^open))(?![[:word:]]))",
528
+ "end": "(?=\\bin\\b)|(?=\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
529
+ "patterns": [
530
+ {
531
+ "include": "#pathModuleSimple"
532
+ }
533
+ ]
534
+ },
535
+ {
536
+ "begin": "(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]:|^:))(?![#\\-:!?.@*/&%^+<=>|~$]))",
537
+ "end": "(?<![#\\-:!?.@*/&%^+<=>|~$])=(?![#\\-:!?.@*/&%^+<=>|~$])|(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
538
+ "endCaptures": {
539
+ "0": {
540
+ "name": "support.type strong"
541
+ }
542
+ },
543
+ "patterns": [
544
+ {
545
+ "begin": "(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]:|^:))(?![#\\-:!?.@*/&%^+<=>|~$]))",
546
+ "end": "\\btype\\b|(?=[^[:space:]])",
547
+ "endCaptures": {
548
+ "0": {
549
+ "name": "keyword.control"
550
+ }
551
+ }
552
+ },
553
+ {
554
+ "begin": "(?:(?<=(?:[^[:word:]]type|^type))(?![[:word:]]))",
555
+ "end": "(?<![#\\-:!?.@*/&%^+<=>|~$])\\.(?![#\\-:!?.@*/&%^+<=>|~$])",
556
+ "endCaptures": {
557
+ "0": {
558
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
559
+ }
560
+ },
561
+ "patterns": [
562
+ {
563
+ "include": "#pattern"
564
+ }
565
+ ]
566
+ },
567
+ {
568
+ "include": "#type"
569
+ }
570
+ ]
571
+ },
572
+ {
573
+ "begin": "(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]=|^=))(?![#\\-:!?.@*/&%^+<=>|~$]))",
574
+ "end": "\\band\\b|(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
575
+ "endCaptures": {
576
+ "0": {
577
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp markup.underline"
578
+ }
579
+ },
580
+ "patterns": [
581
+ {
582
+ "include": "#term"
583
+ }
584
+ ]
585
+ }
586
+ ]
587
+ },
588
+ "bindTermArgs": {
589
+ "patterns": [
590
+ {
591
+ "applyEndPatternLast": true,
592
+ "begin": "~|\\?",
593
+ "beginCaptures": {
594
+ "0": {
595
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
596
+ }
597
+ },
598
+ "end": ":|(?=[^[:space:]])",
599
+ "endCaptures": {
600
+ "0": {
601
+ "name": "keyword"
602
+ }
603
+ },
604
+ "patterns": [
605
+ {
606
+ "begin": "(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]~|^~|[^#\\-:!?.@*/&%^+<=>|~$]\\?|^\\?))(?![#\\-:!?.@*/&%^+<=>|~$]))",
607
+ "end": "(?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|\"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)|(?<=\\))",
608
+ "endCaptures": {
609
+ "0": {
610
+ "name": "markup.inserted constant.language support.constant.property-value entity.name.filename"
611
+ }
612
+ },
613
+ "patterns": [
614
+ {
615
+ "include": "#comment"
616
+ },
617
+ {
618
+ "begin": "\\((?!\\*)",
619
+ "captures": {
620
+ "0": {
621
+ "name": "punctuation.definition.tag"
622
+ }
623
+ },
624
+ "end": "\\)",
625
+ "patterns": [
626
+ {
627
+ "begin": "(?<=\\()",
628
+ "end": ":|=",
629
+ "endCaptures": {
630
+ "0": {
631
+ "name": "keyword"
632
+ }
633
+ },
634
+ "patterns": [
635
+ {
636
+ "match": "(?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|\"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)",
637
+ "name": "markup.inserted constant.language support.constant.property-value entity.name.filename"
638
+ }
639
+ ]
640
+ },
641
+ {
642
+ "begin": "(?<=:)",
643
+ "end": "=|(?=\\))",
644
+ "endCaptures": {
645
+ "0": {
646
+ "name": "keyword"
647
+ }
648
+ },
649
+ "patterns": [
650
+ {
651
+ "include": "#type"
652
+ }
653
+ ]
654
+ },
655
+ {
656
+ "begin": "(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]=|^=))(?![#\\-:!?.@*/&%^+<=>|~$]))",
657
+ "end": "(?=\\))",
658
+ "patterns": [
659
+ {
660
+ "include": "#term"
661
+ }
662
+ ]
663
+ }
664
+ ]
665
+ }
666
+ ]
667
+ }
668
+ ]
669
+ },
670
+ {
671
+ "include": "#pattern"
672
+ }
673
+ ]
674
+ },
675
+ "bindType": {
676
+ "patterns": [
677
+ {
678
+ "begin": "(?:(?<=(?:[^[:word:]]and|^and|[^[:word:]]type|^type))(?![[:word:]]))",
679
+ "end": "(?<![#\\-:!?.@*/&%^+<=>|~$])\\+=|=(?![#\\-:!?.@*/&%^+<=>|~$])|(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
680
+ "endCaptures": {
681
+ "0": {
682
+ "name": "support.type strong"
683
+ }
684
+ },
685
+ "patterns": [
686
+ {
687
+ "include": "#attributeIdentifier"
688
+ },
689
+ {
690
+ "include": "#pathType"
691
+ },
692
+ {
693
+ "match": "(?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|\"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)",
694
+ "name": "entity.name.function strong"
695
+ },
696
+ {
697
+ "include": "#type"
698
+ }
699
+ ]
700
+ },
701
+ {
702
+ "begin": "(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]\\+=|^\\+=|[^#\\-:!?.@*/&%^+<=>|~$]=|^=))(?![#\\-:!?.@*/&%^+<=>|~$]))",
703
+ "end": "\\band\\b|(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
704
+ "endCaptures": {
705
+ "0": {
706
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp markup.underline"
707
+ }
708
+ },
709
+ "patterns": [
710
+ {
711
+ "include": "#bindConstructor"
712
+ }
713
+ ]
714
+ }
715
+ ]
716
+ },
717
+ "comment": {
718
+ "patterns": [
719
+ {
720
+ "include": "#attribute"
721
+ },
722
+ {
723
+ "include": "#extension"
724
+ },
725
+ {
726
+ "include": "#commentBlock"
727
+ },
728
+ {
729
+ "include": "#commentDoc"
730
+ }
731
+ ]
732
+ },
733
+ "commentBlock": {
734
+ "begin": "\\(\\*(?!\\*[^\\)])",
735
+ "contentName": "emphasis",
736
+ "end": "\\*\\)",
737
+ "name": "comment constant.regexp meta.separator.markdown",
738
+ "patterns": [
739
+ {
740
+ "include": "#commentBlock"
741
+ },
742
+ {
743
+ "include": "#commentDoc"
744
+ }
745
+ ]
746
+ },
747
+ "commentDoc": {
748
+ "begin": "\\(\\*\\*",
749
+ "end": "\\*\\)",
750
+ "name": "comment constant.regexp meta.separator.markdown",
751
+ "patterns": [
752
+ {
753
+ "match": "\\*"
754
+ },
755
+ {
756
+ "include": "#comment"
757
+ }
758
+ ]
759
+ },
760
+ "decl": {
761
+ "patterns": [
762
+ {
763
+ "include": "#declClass"
764
+ },
765
+ {
766
+ "include": "#declException"
767
+ },
768
+ {
769
+ "include": "#declInclude"
770
+ },
771
+ {
772
+ "include": "#declModule"
773
+ },
774
+ {
775
+ "include": "#declOpen"
776
+ },
777
+ {
778
+ "include": "#declTerm"
779
+ },
780
+ {
781
+ "include": "#declType"
782
+ }
783
+ ]
784
+ },
785
+ "declClass": {
786
+ "begin": "\\bclass\\b",
787
+ "beginCaptures": {
788
+ "0": {
789
+ "name": "entity.name.class constant.numeric markup.underline"
790
+ }
791
+ },
792
+ "end": ";;|(?=\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
793
+ "endCaptures": {
794
+ "0": {
795
+ "name": "punctuation.definition.tag"
796
+ }
797
+ },
798
+ "patterns": [
799
+ {
800
+ "include": "#comment"
801
+ },
802
+ {
803
+ "include": "#pragma"
804
+ },
805
+ {
806
+ "begin": "(?:(?<=(?:[^[:word:]]class|^class))(?![[:word:]]))",
807
+ "beginCaptures": {
808
+ "0": {
809
+ "name": "entity.name.class constant.numeric markup.underline"
810
+ }
811
+ },
812
+ "end": "\\btype\\b|(?=\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|val)\\b)",
813
+ "endCaptures": {
814
+ "0": {
815
+ "name": "keyword"
816
+ }
817
+ },
818
+ "patterns": [
819
+ {
820
+ "include": "#bindClassTerm"
821
+ }
822
+ ]
823
+ },
824
+ {
825
+ "begin": "(?:(?<=(?:[^[:word:]]type|^type))(?![[:word:]]))",
826
+ "end": "(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
827
+ "patterns": [
828
+ {
829
+ "include": "#bindClassType"
830
+ }
831
+ ]
832
+ }
833
+ ]
834
+ },
835
+ "declException": {
836
+ "begin": "\\bexception\\b",
837
+ "beginCaptures": {
838
+ "0": {
839
+ "name": "keyword markup.underline"
840
+ }
841
+ },
842
+ "end": ";;|(?=\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
843
+ "endCaptures": {
844
+ "0": {
845
+ "name": "punctuation.definition.tag"
846
+ }
847
+ },
848
+ "patterns": [
849
+ {
850
+ "include": "#attributeIdentifier"
851
+ },
852
+ {
853
+ "include": "#comment"
854
+ },
855
+ {
856
+ "include": "#pragma"
857
+ },
858
+ {
859
+ "include": "#bindConstructor"
860
+ }
861
+ ]
862
+ },
863
+ "declInclude": {
864
+ "begin": "\\binclude\\b",
865
+ "beginCaptures": {
866
+ "0": {
867
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
868
+ }
869
+ },
870
+ "end": ";;|(?=\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
871
+ "endCaptures": {
872
+ "0": {
873
+ "name": "punctuation.definition.tag"
874
+ }
875
+ },
876
+ "patterns": [
877
+ {
878
+ "include": "#attributeIdentifier"
879
+ },
880
+ {
881
+ "include": "#comment"
882
+ },
883
+ {
884
+ "include": "#pragma"
885
+ },
886
+ {
887
+ "include": "#signature"
888
+ }
889
+ ]
890
+ },
891
+ "declModule": {
892
+ "begin": "(?:(?<=(?:[^[:word:]]module|^module))(?![[:word:]]))|\\bmodule\\b",
893
+ "beginCaptures": {
894
+ "0": {
895
+ "name": "markup.inserted constant.language support.constant.property-value entity.name.filename markup.underline"
896
+ }
897
+ },
898
+ "end": ";;|(?=\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
899
+ "endCaptures": {
900
+ "0": {
901
+ "name": "punctuation.definition.tag"
902
+ }
903
+ },
904
+ "patterns": [
905
+ {
906
+ "include": "#comment"
907
+ },
908
+ {
909
+ "include": "#pragma"
910
+ },
911
+ {
912
+ "begin": "(?:(?<=(?:[^[:word:]]module|^module))(?![[:word:]]))",
913
+ "end": "(\\btype\\b)|(?=[[:upper:]])",
914
+ "endCaptures": {
915
+ "0": {
916
+ "name": "keyword"
917
+ }
918
+ },
919
+ "patterns": [
920
+ {
921
+ "include": "#attributeIdentifier"
922
+ },
923
+ {
924
+ "include": "#comment"
925
+ },
926
+ {
927
+ "match": "\\brec\\b",
928
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
929
+ }
930
+ ]
931
+ },
932
+ {
933
+ "begin": "(?:(?<=(?:[^[:word:]]type|^type))(?![[:word:]]))",
934
+ "end": "(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
935
+ "patterns": [
936
+ {
937
+ "include": "#bindSignature"
938
+ }
939
+ ]
940
+ },
941
+ {
942
+ "begin": "(?=[[:upper:]])",
943
+ "end": "(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
944
+ "patterns": [
945
+ {
946
+ "include": "#bindStructure"
947
+ }
948
+ ]
949
+ }
950
+ ]
951
+ },
952
+ "declOpen": {
953
+ "begin": "\\bopen\\b",
954
+ "beginCaptures": {
955
+ "0": {
956
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
957
+ }
958
+ },
959
+ "end": ";;|(?=\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
960
+ "endCaptures": {
961
+ "0": {
962
+ "name": "punctuation.definition.tag"
963
+ }
964
+ },
965
+ "patterns": [
966
+ {
967
+ "include": "#attributeIdentifier"
968
+ },
969
+ {
970
+ "include": "#comment"
971
+ },
972
+ {
973
+ "include": "#pragma"
974
+ },
975
+ {
976
+ "include": "#pathModuleExtended"
977
+ }
978
+ ]
979
+ },
980
+ "declTerm": {
981
+ "begin": "\\b(?:(external|val)|(method)|(let))\\b(!?)",
982
+ "beginCaptures": {
983
+ "1": {
984
+ "name": "support.type markup.underline"
985
+ },
986
+ "2": {
987
+ "name": "storage.type markup.underline"
988
+ },
989
+ "3": {
990
+ "name": "keyword.control markup.underline"
991
+ },
992
+ "4": {
993
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
994
+ }
995
+ },
996
+ "end": ";;|(?=\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
997
+ "endCaptures": {
998
+ "0": {
999
+ "name": "punctuation.definition.tag"
1000
+ }
1001
+ },
1002
+ "patterns": [
1003
+ {
1004
+ "include": "#comment"
1005
+ },
1006
+ {
1007
+ "include": "#pragma"
1008
+ },
1009
+ {
1010
+ "include": "#bindTerm"
1011
+ }
1012
+ ]
1013
+ },
1014
+ "declType": {
1015
+ "begin": "(?:(?<=(?:[^[:word:]]type|^type))(?![[:word:]]))|\\btype\\b",
1016
+ "beginCaptures": {
1017
+ "0": {
1018
+ "name": "keyword markup.underline"
1019
+ }
1020
+ },
1021
+ "end": ";;|(?=\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
1022
+ "endCaptures": {
1023
+ "0": {
1024
+ "name": "punctuation.definition.tag"
1025
+ }
1026
+ },
1027
+ "patterns": [
1028
+ {
1029
+ "include": "#comment"
1030
+ },
1031
+ {
1032
+ "include": "#pragma"
1033
+ },
1034
+ {
1035
+ "include": "#bindType"
1036
+ }
1037
+ ]
1038
+ },
1039
+ "extension": {
1040
+ "begin": "(\\[)((?<![#\\-:!?.@*/&%^+<=>|~$])%{1,3}(?![#\\-:!?.@*/&%^+<=>|~$]))",
1041
+ "beginCaptures": {
1042
+ "1": {
1043
+ "name": "constant.language constant.numeric entity.other.attribute-name.id.css strong"
1044
+ },
1045
+ "2": {
1046
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
1047
+ }
1048
+ },
1049
+ "end": "\\]",
1050
+ "endCaptures": {
1051
+ "0": {
1052
+ "name": "constant.language constant.numeric entity.other.attribute-name.id.css strong"
1053
+ }
1054
+ },
1055
+ "patterns": [
1056
+ {
1057
+ "include": "#attributePayload"
1058
+ }
1059
+ ]
1060
+ },
1061
+ "literal": {
1062
+ "patterns": [
1063
+ {
1064
+ "include": "#termConstructor"
1065
+ },
1066
+ {
1067
+ "include": "#literalArray"
1068
+ },
1069
+ {
1070
+ "include": "#literalBoolean"
1071
+ },
1072
+ {
1073
+ "include": "#literalCharacter"
1074
+ },
1075
+ {
1076
+ "include": "#literalList"
1077
+ },
1078
+ {
1079
+ "include": "#literalNumber"
1080
+ },
1081
+ {
1082
+ "include": "#literalObjectTerm"
1083
+ },
1084
+ {
1085
+ "include": "#literalString"
1086
+ },
1087
+ {
1088
+ "include": "#literalRecord"
1089
+ },
1090
+ {
1091
+ "include": "#literalUnit"
1092
+ }
1093
+ ]
1094
+ },
1095
+ "literalArray": {
1096
+ "begin": "\\[\\|",
1097
+ "captures": {
1098
+ "0": {
1099
+ "name": "constant.language constant.numeric entity.other.attribute-name.id.css strong"
1100
+ }
1101
+ },
1102
+ "end": "\\|\\]",
1103
+ "patterns": [
1104
+ {
1105
+ "include": "#term"
1106
+ }
1107
+ ]
1108
+ },
1109
+ "literalBoolean": {
1110
+ "match": "\\bfalse|true\\b",
1111
+ "name": "constant.language constant.numeric entity.other.attribute-name.id.css strong"
1112
+ },
1113
+ "literalCharacter": {
1114
+ "begin": "(?<![[:word:]])'",
1115
+ "end": "'",
1116
+ "name": "markup.punctuation.quote.beginning",
1117
+ "patterns": [
1118
+ {
1119
+ "include": "#literalCharacterEscape"
1120
+ }
1121
+ ]
1122
+ },
1123
+ "literalCharacterEscape": {
1124
+ "match": "\\\\(?:[\\\\\"'ntbr]|[[:digit:]][[:digit:]][[:digit:]]|x[[:xdigit:]][[:xdigit:]]|o[0-3][0-7][0-7])"
1125
+ },
1126
+ "literalClassType": {
1127
+ "patterns": [
1128
+ {
1129
+ "include": "#comment"
1130
+ },
1131
+ {
1132
+ "begin": "\\bobject\\b",
1133
+ "captures": {
1134
+ "0": {
1135
+ "name": "punctuation.definition.tag emphasis"
1136
+ }
1137
+ },
1138
+ "end": "\\bend\\b",
1139
+ "patterns": [
1140
+ {
1141
+ "begin": "\\binherit\\b",
1142
+ "beginCaptures": {
1143
+ "0": {
1144
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
1145
+ }
1146
+ },
1147
+ "end": ";;|(?=\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
1148
+ "endCaptures": {
1149
+ "0": {
1150
+ "name": "punctuation.definition.tag"
1151
+ }
1152
+ },
1153
+ "patterns": [
1154
+ {
1155
+ "begin": "\\bas\\b",
1156
+ "beginCaptures": {
1157
+ "0": {
1158
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
1159
+ }
1160
+ },
1161
+ "end": ";;|(?=\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
1162
+ "patterns": [
1163
+ {
1164
+ "include": "#variablePattern"
1165
+ }
1166
+ ]
1167
+ },
1168
+ {
1169
+ "include": "#type"
1170
+ }
1171
+ ]
1172
+ },
1173
+ {
1174
+ "include": "#pattern"
1175
+ },
1176
+ {
1177
+ "include": "#declTerm"
1178
+ }
1179
+ ]
1180
+ },
1181
+ {
1182
+ "begin": "\\[",
1183
+ "end": "\\]"
1184
+ }
1185
+ ]
1186
+ },
1187
+ "literalList": {
1188
+ "patterns": [
1189
+ {
1190
+ "begin": "\\[",
1191
+ "captures": {
1192
+ "0": {
1193
+ "name": "constant.language constant.numeric entity.other.attribute-name.id.css strong"
1194
+ }
1195
+ },
1196
+ "end": "\\]",
1197
+ "patterns": [
1198
+ {
1199
+ "include": "#term"
1200
+ }
1201
+ ]
1202
+ }
1203
+ ]
1204
+ },
1205
+ "literalNumber": {
1206
+ "match": "(?<![[:alpha:]])[[:digit:]][[:digit:]]*(\\.[[:digit:]][[:digit:]]*)?",
1207
+ "name": "constant.numeric"
1208
+ },
1209
+ "literalObjectTerm": {
1210
+ "patterns": [
1211
+ {
1212
+ "include": "#comment"
1213
+ },
1214
+ {
1215
+ "begin": "\\bobject\\b",
1216
+ "captures": {
1217
+ "0": {
1218
+ "name": "punctuation.definition.tag emphasis"
1219
+ }
1220
+ },
1221
+ "end": "\\bend\\b",
1222
+ "patterns": [
1223
+ {
1224
+ "begin": "\\binherit\\b",
1225
+ "beginCaptures": {
1226
+ "0": {
1227
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
1228
+ }
1229
+ },
1230
+ "end": ";;|(?=\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
1231
+ "endCaptures": {
1232
+ "0": {
1233
+ "name": "punctuation.definition.tag"
1234
+ }
1235
+ },
1236
+ "patterns": [
1237
+ {
1238
+ "begin": "\\bas\\b",
1239
+ "beginCaptures": {
1240
+ "0": {
1241
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
1242
+ }
1243
+ },
1244
+ "end": ";;|(?=\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
1245
+ "patterns": [
1246
+ {
1247
+ "include": "#variablePattern"
1248
+ }
1249
+ ]
1250
+ },
1251
+ {
1252
+ "include": "#term"
1253
+ }
1254
+ ]
1255
+ },
1256
+ {
1257
+ "include": "#pattern"
1258
+ },
1259
+ {
1260
+ "include": "#declTerm"
1261
+ }
1262
+ ]
1263
+ },
1264
+ {
1265
+ "begin": "\\[",
1266
+ "end": "\\]"
1267
+ }
1268
+ ]
1269
+ },
1270
+ "literalRecord": {
1271
+ "begin": "\\{",
1272
+ "captures": {
1273
+ "0": {
1274
+ "name": "constant.language constant.numeric entity.other.attribute-name.id.css strong strong"
1275
+ }
1276
+ },
1277
+ "end": "\\}",
1278
+ "patterns": [
1279
+ {
1280
+ "begin": "(?<=\\{|;)",
1281
+ "end": "(:)|(=)|(;)|(with)|(?=\\})",
1282
+ "endCaptures": {
1283
+ "1": {
1284
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp strong"
1285
+ },
1286
+ "2": {
1287
+ "name": "support.type strong"
1288
+ },
1289
+ "3": {
1290
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
1291
+ },
1292
+ "4": {
1293
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
1294
+ }
1295
+ },
1296
+ "patterns": [
1297
+ {
1298
+ "include": "#comment"
1299
+ },
1300
+ {
1301
+ "include": "#pathModulePrefixSimple"
1302
+ },
1303
+ {
1304
+ "match": "(?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|\"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)",
1305
+ "name": "markup.inserted constant.language support.constant.property-value entity.name.filename emphasis"
1306
+ }
1307
+ ]
1308
+ },
1309
+ {
1310
+ "begin": "(?:(?<=(?:[^[:word:]]with|^with))(?![[:word:]]))",
1311
+ "end": "(:)|(=)|(;)|(?=\\})",
1312
+ "endCaptures": {
1313
+ "1": {
1314
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp strong"
1315
+ },
1316
+ "2": {
1317
+ "name": "support.type strong"
1318
+ },
1319
+ "3": {
1320
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
1321
+ }
1322
+ },
1323
+ "patterns": [
1324
+ {
1325
+ "match": "(?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|\"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)",
1326
+ "name": "markup.inserted constant.language support.constant.property-value entity.name.filename emphasis"
1327
+ }
1328
+ ]
1329
+ },
1330
+ {
1331
+ "begin": "(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]:|^:))(?![#\\-:!?.@*/&%^+<=>|~$]))",
1332
+ "end": "(;)|(=)|(?=\\})",
1333
+ "endCaptures": {
1334
+ "1": {
1335
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
1336
+ },
1337
+ "2": {
1338
+ "name": "support.type strong"
1339
+ }
1340
+ },
1341
+ "patterns": [
1342
+ {
1343
+ "include": "#type"
1344
+ }
1345
+ ]
1346
+ },
1347
+ {
1348
+ "begin": "(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]=|^=))(?![#\\-:!?.@*/&%^+<=>|~$]))",
1349
+ "end": ";|(?=\\})",
1350
+ "endCaptures": {
1351
+ "0": {
1352
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
1353
+ }
1354
+ },
1355
+ "patterns": [
1356
+ {
1357
+ "include": "#term"
1358
+ }
1359
+ ]
1360
+ }
1361
+ ]
1362
+ },
1363
+ "literalString": {
1364
+ "patterns": [
1365
+ {
1366
+ "begin": "\"",
1367
+ "end": "\"",
1368
+ "name": "string beginning.punctuation.definition.quote.markdown",
1369
+ "patterns": [
1370
+ {
1371
+ "include": "#literalStringEscape"
1372
+ }
1373
+ ]
1374
+ },
1375
+ {
1376
+ "begin": "(\\{)([_[:lower:]]*?)(\\|)",
1377
+ "end": "(\\|)(\\2)(\\})",
1378
+ "name": "string beginning.punctuation.definition.quote.markdown",
1379
+ "patterns": [
1380
+ {
1381
+ "include": "#literalStringEscape"
1382
+ }
1383
+ ]
1384
+ }
1385
+ ]
1386
+ },
1387
+ "literalStringEscape": {
1388
+ "match": "\\\\(?:[\\\\\"ntbr]|[[:digit:]][[:digit:]][[:digit:]]|x[[:xdigit:]][[:xdigit:]]|o[0-3][0-7][0-7])"
1389
+ },
1390
+ "literalUnit": {
1391
+ "match": "\\(\\)",
1392
+ "name": "constant.language constant.numeric entity.other.attribute-name.id.css strong"
1393
+ },
1394
+ "pathModuleExtended": {
1395
+ "patterns": [
1396
+ {
1397
+ "include": "#pathModulePrefixExtended"
1398
+ },
1399
+ {
1400
+ "match": "(?:\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)",
1401
+ "name": "entity.name.class constant.numeric"
1402
+ }
1403
+ ]
1404
+ },
1405
+ "pathModulePrefixExtended": {
1406
+ "begin": "(?:\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)(?=[[:space:]]*\\.|$|\\()",
1407
+ "beginCaptures": {
1408
+ "0": {
1409
+ "name": "entity.name.class constant.numeric"
1410
+ }
1411
+ },
1412
+ "end": "(?![[:space:]\\.]|$|\\()",
1413
+ "patterns": [
1414
+ {
1415
+ "include": "#comment"
1416
+ },
1417
+ {
1418
+ "begin": "\\(",
1419
+ "captures": {
1420
+ "0": {
1421
+ "name": "keyword.control"
1422
+ }
1423
+ },
1424
+ "end": "\\)",
1425
+ "patterns": [
1426
+ {
1427
+ "match": "((?:\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)(?=[[:space:]]*\\)))",
1428
+ "name": "string.other.link variable.language variable.parameter emphasis"
1429
+ },
1430
+ {
1431
+ "include": "#structure"
1432
+ }
1433
+ ]
1434
+ },
1435
+ {
1436
+ "begin": "(?<![#\\-:!?.@*/&%^+<=>|~$])\\.(?![#\\-:!?.@*/&%^+<=>|~$])",
1437
+ "beginCaptures": {
1438
+ "0": {
1439
+ "name": "keyword strong"
1440
+ }
1441
+ },
1442
+ "end": "((?:\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)(?=[[:space:]]*\\.|$))|((?:\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)(?=[[:space:]]*(?:$|\\()))|((?:\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)(?=[[:space:]]*\\)))|(?![[:space:]\\.[:upper:]]|$|\\()",
1443
+ "endCaptures": {
1444
+ "1": {
1445
+ "name": "entity.name.class constant.numeric"
1446
+ },
1447
+ "2": {
1448
+ "name": "entity.name.function strong"
1449
+ },
1450
+ "3": {
1451
+ "name": "string.other.link variable.language variable.parameter emphasis"
1452
+ }
1453
+ }
1454
+ }
1455
+ ]
1456
+ },
1457
+ "pathModulePrefixExtendedParens": {
1458
+ "begin": "\\(",
1459
+ "captures": {
1460
+ "0": {
1461
+ "name": "keyword.control"
1462
+ }
1463
+ },
1464
+ "end": "\\)",
1465
+ "patterns": [
1466
+ {
1467
+ "match": "((?:\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)(?=[[:space:]]*\\)))",
1468
+ "name": "string.other.link variable.language variable.parameter emphasis"
1469
+ },
1470
+ {
1471
+ "include": "#structure"
1472
+ }
1473
+ ]
1474
+ },
1475
+ "pathModulePrefixSimple": {
1476
+ "begin": "(?:\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)(?=[[:space:]]*\\.)",
1477
+ "beginCaptures": {
1478
+ "0": {
1479
+ "name": "entity.name.class constant.numeric"
1480
+ }
1481
+ },
1482
+ "end": "(?![[:space:]\\.])",
1483
+ "patterns": [
1484
+ {
1485
+ "include": "#comment"
1486
+ },
1487
+ {
1488
+ "begin": "(?<![#\\-:!?.@*/&%^+<=>|~$])\\.(?![#\\-:!?.@*/&%^+<=>|~$])",
1489
+ "beginCaptures": {
1490
+ "0": {
1491
+ "name": "keyword strong"
1492
+ }
1493
+ },
1494
+ "end": "((?:\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)(?=[[:space:]]*\\.))|((?:\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)(?=[[:space:]]*))|(?![[:space:]\\.[:upper:]])",
1495
+ "endCaptures": {
1496
+ "1": {
1497
+ "name": "entity.name.class constant.numeric"
1498
+ },
1499
+ "2": {
1500
+ "name": "constant.language constant.numeric entity.other.attribute-name.id.css strong"
1501
+ }
1502
+ }
1503
+ }
1504
+ ]
1505
+ },
1506
+ "pathModuleSimple": {
1507
+ "patterns": [
1508
+ {
1509
+ "include": "#pathModulePrefixSimple"
1510
+ },
1511
+ {
1512
+ "match": "(?:\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)",
1513
+ "name": "entity.name.class constant.numeric"
1514
+ }
1515
+ ]
1516
+ },
1517
+ "pathRecord": {
1518
+ "patterns": [
1519
+ {
1520
+ "begin": "(?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|\"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)",
1521
+ "end": "(?=[^[:space:]\\.])(?!\\(\\*)",
1522
+ "patterns": [
1523
+ {
1524
+ "include": "#comment"
1525
+ },
1526
+ {
1527
+ "begin": "(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]\\.|^\\.))(?![#\\-:!?.@*/&%^+<=>|~$]))|(?<![#\\-:!?.@*/&%^+<=>|~$])\\.(?![#\\-:!?.@*/&%^+<=>|~$])",
1528
+ "beginCaptures": {
1529
+ "0": {
1530
+ "name": "keyword strong"
1531
+ }
1532
+ },
1533
+ "end": "((?<![#\\-:!?.@*/&%^+<=>|~$])\\.(?![#\\-:!?.@*/&%^+<=>|~$]))|((?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|mutable|nonrec|#|object|of|open|or|%|\\+|private|\\?|\"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*))|(?<=\\))|(?<=\\])",
1534
+ "endCaptures": {
1535
+ "1": {
1536
+ "name": "keyword strong"
1537
+ },
1538
+ "2": {
1539
+ "name": "markup.inserted constant.language support.constant.property-value entity.name.filename"
1540
+ }
1541
+ },
1542
+ "patterns": [
1543
+ {
1544
+ "include": "#comment"
1545
+ },
1546
+ {
1547
+ "include": "#pathModulePrefixSimple"
1548
+ },
1549
+ {
1550
+ "begin": "\\((?!\\*)",
1551
+ "captures": {
1552
+ "0": {
1553
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
1554
+ }
1555
+ },
1556
+ "end": "\\)",
1557
+ "patterns": [
1558
+ {
1559
+ "include": "#term"
1560
+ }
1561
+ ]
1562
+ },
1563
+ {
1564
+ "begin": "\\[",
1565
+ "captures": {
1566
+ "0": {
1567
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
1568
+ }
1569
+ },
1570
+ "end": "\\]",
1571
+ "patterns": [
1572
+ {
1573
+ "include": "#pattern"
1574
+ }
1575
+ ]
1576
+ }
1577
+ ]
1578
+ }
1579
+ ]
1580
+ }
1581
+ ]
1582
+ },
1583
+ "pattern": {
1584
+ "patterns": [
1585
+ {
1586
+ "include": "#comment"
1587
+ },
1588
+ {
1589
+ "include": "#patternArray"
1590
+ },
1591
+ {
1592
+ "include": "#patternLazy"
1593
+ },
1594
+ {
1595
+ "include": "#patternList"
1596
+ },
1597
+ {
1598
+ "include": "#patternMisc"
1599
+ },
1600
+ {
1601
+ "include": "#patternModule"
1602
+ },
1603
+ {
1604
+ "include": "#patternRecord"
1605
+ },
1606
+ {
1607
+ "include": "#literal"
1608
+ },
1609
+ {
1610
+ "include": "#patternParens"
1611
+ },
1612
+ {
1613
+ "include": "#patternType"
1614
+ },
1615
+ {
1616
+ "include": "#variablePattern"
1617
+ },
1618
+ {
1619
+ "include": "#termOperator"
1620
+ }
1621
+ ]
1622
+ },
1623
+ "patternArray": {
1624
+ "begin": "\\[\\|",
1625
+ "captures": {
1626
+ "0": {
1627
+ "name": "constant.language constant.numeric entity.other.attribute-name.id.css strong"
1628
+ }
1629
+ },
1630
+ "end": "\\|\\]",
1631
+ "patterns": [
1632
+ {
1633
+ "include": "#pattern"
1634
+ }
1635
+ ]
1636
+ },
1637
+ "patternLazy": {
1638
+ "match": "lazy",
1639
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
1640
+ },
1641
+ "patternList": {
1642
+ "begin": "\\[",
1643
+ "captures": {
1644
+ "0": {
1645
+ "name": "constant.language constant.numeric entity.other.attribute-name.id.css strong"
1646
+ }
1647
+ },
1648
+ "end": "\\]",
1649
+ "patterns": [
1650
+ {
1651
+ "include": "#pattern"
1652
+ }
1653
+ ]
1654
+ },
1655
+ "patternMisc": {
1656
+ "captures": {
1657
+ "1": {
1658
+ "name": "string.regexp strong"
1659
+ },
1660
+ "2": {
1661
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
1662
+ },
1663
+ "3": {
1664
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
1665
+ }
1666
+ },
1667
+ "match": "((?<![#\\-:!?.@*/&%^+<=>|~$]),(?![#\\-:!?.@*/&%^+<=>|~$]))|([#\\-:!?.@*/&%^+<=>|~$]+)|\\b(as)\\b"
1668
+ },
1669
+ "patternModule": {
1670
+ "begin": "\\bmodule\\b",
1671
+ "beginCaptures": {
1672
+ "0": {
1673
+ "name": "markup.inserted constant.language support.constant.property-value entity.name.filename"
1674
+ }
1675
+ },
1676
+ "end": "(?=\\))",
1677
+ "patterns": [
1678
+ {
1679
+ "include": "#declModule"
1680
+ }
1681
+ ]
1682
+ },
1683
+ "patternParens": {
1684
+ "begin": "\\((?!\\))",
1685
+ "captures": {
1686
+ "0": {
1687
+ "name": "punctuation.definition.tag"
1688
+ }
1689
+ },
1690
+ "end": "\\)",
1691
+ "patterns": [
1692
+ {
1693
+ "include": "#comment"
1694
+ },
1695
+ {
1696
+ "begin": "(?<![#\\-:!?.@*/&%^+<=>|~$]):(?![#\\-:!?.@*/&%^+<=>|~$])",
1697
+ "beginCaptures": {
1698
+ "0": {
1699
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp strong"
1700
+ }
1701
+ },
1702
+ "end": "(?=\\))",
1703
+ "patterns": [
1704
+ {
1705
+ "include": "#type"
1706
+ }
1707
+ ]
1708
+ },
1709
+ {
1710
+ "include": "#pattern"
1711
+ }
1712
+ ]
1713
+ },
1714
+ "patternRecord": {
1715
+ "begin": "\\{",
1716
+ "captures": {
1717
+ "0": {
1718
+ "name": "constant.language constant.numeric entity.other.attribute-name.id.css strong strong"
1719
+ }
1720
+ },
1721
+ "end": "\\}",
1722
+ "patterns": [
1723
+ {
1724
+ "begin": "(?<=\\{|;)",
1725
+ "end": "(:)|(=)|(;)|(with)|(?=\\})",
1726
+ "endCaptures": {
1727
+ "1": {
1728
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp strong"
1729
+ },
1730
+ "2": {
1731
+ "name": "support.type strong"
1732
+ },
1733
+ "3": {
1734
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
1735
+ },
1736
+ "4": {
1737
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
1738
+ }
1739
+ },
1740
+ "patterns": [
1741
+ {
1742
+ "include": "#comment"
1743
+ },
1744
+ {
1745
+ "include": "#pathModulePrefixSimple"
1746
+ },
1747
+ {
1748
+ "match": "(?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|\"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)",
1749
+ "name": "markup.inserted constant.language support.constant.property-value entity.name.filename emphasis"
1750
+ }
1751
+ ]
1752
+ },
1753
+ {
1754
+ "begin": "(?:(?<=(?:[^[:word:]]with|^with))(?![[:word:]]))",
1755
+ "end": "(:)|(=)|(;)|(?=\\})",
1756
+ "endCaptures": {
1757
+ "1": {
1758
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp strong"
1759
+ },
1760
+ "2": {
1761
+ "name": "support.type strong"
1762
+ },
1763
+ "3": {
1764
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
1765
+ }
1766
+ },
1767
+ "patterns": [
1768
+ {
1769
+ "match": "(?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|\"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)",
1770
+ "name": "markup.inserted constant.language support.constant.property-value entity.name.filename emphasis"
1771
+ }
1772
+ ]
1773
+ },
1774
+ {
1775
+ "begin": "(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]:|^:))(?![#\\-:!?.@*/&%^+<=>|~$]))",
1776
+ "end": "(;)|(=)|(?=\\})",
1777
+ "endCaptures": {
1778
+ "1": {
1779
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
1780
+ },
1781
+ "2": {
1782
+ "name": "support.type strong"
1783
+ }
1784
+ },
1785
+ "patterns": [
1786
+ {
1787
+ "include": "#type"
1788
+ }
1789
+ ]
1790
+ },
1791
+ {
1792
+ "begin": "(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]=|^=))(?![#\\-:!?.@*/&%^+<=>|~$]))",
1793
+ "end": ";|(?=\\})",
1794
+ "endCaptures": {
1795
+ "0": {
1796
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
1797
+ }
1798
+ },
1799
+ "patterns": [
1800
+ {
1801
+ "include": "#pattern"
1802
+ }
1803
+ ]
1804
+ }
1805
+ ]
1806
+ },
1807
+ "patternType": {
1808
+ "begin": "\\btype\\b",
1809
+ "beginCaptures": {
1810
+ "0": {
1811
+ "name": "keyword"
1812
+ }
1813
+ },
1814
+ "end": "(?=\\))",
1815
+ "patterns": [
1816
+ {
1817
+ "include": "#declType"
1818
+ }
1819
+ ]
1820
+ },
1821
+ "pragma": {
1822
+ "begin": "(?<![#\\-:!?.@*/&%^+<=>|~$])#(?![#\\-:!?.@*/&%^+<=>|~$])",
1823
+ "beginCaptures": {
1824
+ "0": {
1825
+ "name": "punctuation.definition.tag"
1826
+ }
1827
+ },
1828
+ "end": "(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
1829
+ "patterns": [
1830
+ {
1831
+ "include": "#comment"
1832
+ },
1833
+ {
1834
+ "include": "#literalNumber"
1835
+ },
1836
+ {
1837
+ "include": "#literalString"
1838
+ }
1839
+ ]
1840
+ },
1841
+ "signature": {
1842
+ "patterns": [
1843
+ {
1844
+ "include": "#comment"
1845
+ },
1846
+ {
1847
+ "include": "#signatureLiteral"
1848
+ },
1849
+ {
1850
+ "include": "#signatureFunctor"
1851
+ },
1852
+ {
1853
+ "include": "#pathModuleExtended"
1854
+ },
1855
+ {
1856
+ "include": "#signatureParens"
1857
+ },
1858
+ {
1859
+ "include": "#signatureRecovered"
1860
+ },
1861
+ {
1862
+ "include": "#signatureConstraints"
1863
+ }
1864
+ ]
1865
+ },
1866
+ "signatureConstraints": {
1867
+ "begin": "\\bwith\\b",
1868
+ "beginCaptures": {
1869
+ "0": {
1870
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp markup.underline"
1871
+ }
1872
+ },
1873
+ "end": "(?=\\))|(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
1874
+ "patterns": [
1875
+ {
1876
+ "begin": "(?:(?<=(?:[^[:word:]]with|^with))(?![[:word:]]))",
1877
+ "end": "\\b(?:(module)|(type))\\b",
1878
+ "endCaptures": {
1879
+ "1": {
1880
+ "name": "markup.inserted constant.language support.constant.property-value entity.name.filename"
1881
+ },
1882
+ "2": {
1883
+ "name": "keyword"
1884
+ }
1885
+ }
1886
+ },
1887
+ {
1888
+ "include": "#declModule"
1889
+ },
1890
+ {
1891
+ "include": "#declType"
1892
+ }
1893
+ ]
1894
+ },
1895
+ "signatureFunctor": {
1896
+ "patterns": [
1897
+ {
1898
+ "begin": "\\bfunctor\\b",
1899
+ "beginCaptures": {
1900
+ "0": {
1901
+ "name": "keyword"
1902
+ }
1903
+ },
1904
+ "end": "(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
1905
+ "patterns": [
1906
+ {
1907
+ "begin": "(?:(?<=(?:[^[:word:]]functor|^functor))(?![[:word:]]))",
1908
+ "end": "(\\(\\))|(\\((?!\\)))",
1909
+ "endCaptures": {
1910
+ "1": {
1911
+ "name": "constant.language constant.numeric entity.other.attribute-name.id.css strong"
1912
+ },
1913
+ "2": {
1914
+ "name": "punctuation.definition.tag"
1915
+ }
1916
+ }
1917
+ },
1918
+ {
1919
+ "begin": "(?<=\\()",
1920
+ "end": "(:)|(\\))",
1921
+ "endCaptures": {
1922
+ "1": {
1923
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp strong"
1924
+ },
1925
+ "2": {
1926
+ "name": "punctuation.definition.tag"
1927
+ }
1928
+ },
1929
+ "patterns": [
1930
+ {
1931
+ "include": "#variableModule"
1932
+ }
1933
+ ]
1934
+ },
1935
+ {
1936
+ "begin": "(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]:|^:))(?![#\\-:!?.@*/&%^+<=>|~$]))",
1937
+ "end": "\\)",
1938
+ "endCaptures": {
1939
+ "0": {
1940
+ "name": "punctuation.definition.tag"
1941
+ }
1942
+ },
1943
+ "patterns": [
1944
+ {
1945
+ "include": "#signature"
1946
+ }
1947
+ ]
1948
+ },
1949
+ {
1950
+ "begin": "(?<=\\))",
1951
+ "end": "(\\()|((?<![#\\-:!?.@*/&%^+<=>|~$])->(?![#\\-:!?.@*/&%^+<=>|~$]))",
1952
+ "endCaptures": {
1953
+ "1": {
1954
+ "name": "punctuation.definition.tag"
1955
+ },
1956
+ "2": {
1957
+ "name": "support.type strong"
1958
+ }
1959
+ }
1960
+ },
1961
+ {
1962
+ "begin": "(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]->|^->))(?![#\\-:!?.@*/&%^+<=>|~$]))",
1963
+ "end": "(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
1964
+ "patterns": [
1965
+ {
1966
+ "include": "#signature"
1967
+ }
1968
+ ]
1969
+ }
1970
+ ]
1971
+ },
1972
+ {
1973
+ "match": "(?<![#\\-:!?.@*/&%^+<=>|~$])->(?![#\\-:!?.@*/&%^+<=>|~$])",
1974
+ "name": "support.type strong"
1975
+ }
1976
+ ]
1977
+ },
1978
+ "signatureLiteral": {
1979
+ "begin": "\\bsig\\b",
1980
+ "captures": {
1981
+ "0": {
1982
+ "name": "punctuation.definition.tag emphasis"
1983
+ }
1984
+ },
1985
+ "end": "\\bend\\b",
1986
+ "patterns": [
1987
+ {
1988
+ "include": "#comment"
1989
+ },
1990
+ {
1991
+ "include": "#pragma"
1992
+ },
1993
+ {
1994
+ "include": "#decl"
1995
+ }
1996
+ ]
1997
+ },
1998
+ "signatureParens": {
1999
+ "begin": "\\((?!\\))",
2000
+ "captures": {
2001
+ "0": {
2002
+ "name": "punctuation.definition.tag"
2003
+ }
2004
+ },
2005
+ "end": "\\)",
2006
+ "patterns": [
2007
+ {
2008
+ "include": "#comment"
2009
+ },
2010
+ {
2011
+ "begin": "(?<![#\\-:!?.@*/&%^+<=>|~$]):(?![#\\-:!?.@*/&%^+<=>|~$])",
2012
+ "beginCaptures": {
2013
+ "0": {
2014
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp strong"
2015
+ }
2016
+ },
2017
+ "end": "(?=\\))",
2018
+ "patterns": [
2019
+ {
2020
+ "include": "#signature"
2021
+ }
2022
+ ]
2023
+ },
2024
+ {
2025
+ "include": "#signature"
2026
+ }
2027
+ ]
2028
+ },
2029
+ "signatureRecovered": {
2030
+ "patterns": [
2031
+ {
2032
+ "begin": "\\(|(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]:|^:|[^#\\-:!?.@*/&%^+<=>|~$]->|^->))(?![#\\-:!?.@*/&%^+<=>|~$]))|(?:(?<=(?:[^[:word:]]include|^include|[^[:word:]]open|^open))(?![[:word:]]))",
2033
+ "end": "\\bmodule\\b|(?!$|[[:space:]]|\\bmodule\\b)",
2034
+ "endCaptures": {
2035
+ "0": {
2036
+ "name": "markup.inserted constant.language support.constant.property-value entity.name.filename"
2037
+ }
2038
+ }
2039
+ },
2040
+ {
2041
+ "begin": "(?:(?<=(?:[^[:word:]]module|^module))(?![[:word:]]))",
2042
+ "end": "(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
2043
+ "patterns": [
2044
+ {
2045
+ "begin": "(?:(?<=(?:[^[:word:]]module|^module))(?![[:word:]]))",
2046
+ "end": "\\btype\\b",
2047
+ "endCaptures": {
2048
+ "0": {
2049
+ "name": "keyword"
2050
+ }
2051
+ }
2052
+ },
2053
+ {
2054
+ "begin": "(?:(?<=(?:[^[:word:]]type|^type))(?![[:word:]]))",
2055
+ "end": "\\bof\\b",
2056
+ "endCaptures": {
2057
+ "0": {
2058
+ "name": "punctuation.definition.tag"
2059
+ }
2060
+ }
2061
+ },
2062
+ {
2063
+ "begin": "(?:(?<=(?:[^[:word:]]of|^of))(?![[:word:]]))",
2064
+ "end": "(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
2065
+ "patterns": [
2066
+ {
2067
+ "include": "#signature"
2068
+ }
2069
+ ]
2070
+ }
2071
+ ]
2072
+ }
2073
+ ]
2074
+ },
2075
+ "structure": {
2076
+ "patterns": [
2077
+ {
2078
+ "include": "#comment"
2079
+ },
2080
+ {
2081
+ "include": "#structureLiteral"
2082
+ },
2083
+ {
2084
+ "include": "#structureFunctor"
2085
+ },
2086
+ {
2087
+ "include": "#pathModuleExtended"
2088
+ },
2089
+ {
2090
+ "include": "#structureParens"
2091
+ }
2092
+ ]
2093
+ },
2094
+ "structureFunctor": {
2095
+ "patterns": [
2096
+ {
2097
+ "begin": "\\bfunctor\\b",
2098
+ "beginCaptures": {
2099
+ "0": {
2100
+ "name": "keyword"
2101
+ }
2102
+ },
2103
+ "end": "(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
2104
+ "patterns": [
2105
+ {
2106
+ "begin": "(?:(?<=(?:[^[:word:]]functor|^functor))(?![[:word:]]))",
2107
+ "end": "(\\(\\))|(\\((?!\\)))",
2108
+ "endCaptures": {
2109
+ "1": {
2110
+ "name": "constant.language constant.numeric entity.other.attribute-name.id.css strong"
2111
+ },
2112
+ "2": {
2113
+ "name": "punctuation.definition.tag"
2114
+ }
2115
+ }
2116
+ },
2117
+ {
2118
+ "begin": "(?<=\\()",
2119
+ "end": "(:)|(\\))",
2120
+ "endCaptures": {
2121
+ "1": {
2122
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp strong"
2123
+ },
2124
+ "2": {
2125
+ "name": "punctuation.definition.tag"
2126
+ }
2127
+ },
2128
+ "patterns": [
2129
+ {
2130
+ "include": "#variableModule"
2131
+ }
2132
+ ]
2133
+ },
2134
+ {
2135
+ "begin": "(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]:|^:))(?![#\\-:!?.@*/&%^+<=>|~$]))",
2136
+ "end": "\\)",
2137
+ "endCaptures": {
2138
+ "0": {
2139
+ "name": "punctuation.definition.tag"
2140
+ }
2141
+ },
2142
+ "patterns": [
2143
+ {
2144
+ "include": "#signature"
2145
+ }
2146
+ ]
2147
+ },
2148
+ {
2149
+ "begin": "(?<=\\))",
2150
+ "end": "(\\()|((?<![#\\-:!?.@*/&%^+<=>|~$])->(?![#\\-:!?.@*/&%^+<=>|~$]))",
2151
+ "endCaptures": {
2152
+ "1": {
2153
+ "name": "punctuation.definition.tag"
2154
+ },
2155
+ "2": {
2156
+ "name": "support.type strong"
2157
+ }
2158
+ }
2159
+ },
2160
+ {
2161
+ "begin": "(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]->|^->))(?![#\\-:!?.@*/&%^+<=>|~$]))",
2162
+ "end": "(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
2163
+ "patterns": [
2164
+ {
2165
+ "include": "#structure"
2166
+ }
2167
+ ]
2168
+ }
2169
+ ]
2170
+ },
2171
+ {
2172
+ "match": "(?<![#\\-:!?.@*/&%^+<=>|~$])->(?![#\\-:!?.@*/&%^+<=>|~$])",
2173
+ "name": "support.type strong"
2174
+ }
2175
+ ]
2176
+ },
2177
+ "structureLiteral": {
2178
+ "begin": "\\bstruct\\b",
2179
+ "captures": {
2180
+ "0": {
2181
+ "name": "punctuation.definition.tag emphasis"
2182
+ }
2183
+ },
2184
+ "end": "\\bend\\b",
2185
+ "patterns": [
2186
+ {
2187
+ "include": "#comment"
2188
+ },
2189
+ {
2190
+ "include": "#pragma"
2191
+ },
2192
+ {
2193
+ "include": "#decl"
2194
+ }
2195
+ ]
2196
+ },
2197
+ "structureParens": {
2198
+ "begin": "\\(",
2199
+ "captures": {
2200
+ "0": {
2201
+ "name": "punctuation.definition.tag"
2202
+ }
2203
+ },
2204
+ "end": "\\)",
2205
+ "patterns": [
2206
+ {
2207
+ "include": "#structureUnpack"
2208
+ },
2209
+ {
2210
+ "include": "#structure"
2211
+ }
2212
+ ]
2213
+ },
2214
+ "structureUnpack": {
2215
+ "begin": "\\bval\\b",
2216
+ "beginCaptures": {
2217
+ "0": {
2218
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
2219
+ }
2220
+ },
2221
+ "end": "(?=\\))"
2222
+ },
2223
+ "term": {
2224
+ "patterns": [
2225
+ {
2226
+ "include": "#termLet"
2227
+ },
2228
+ {
2229
+ "include": "#termAtomic"
2230
+ }
2231
+ ]
2232
+ },
2233
+ "termAtomic": {
2234
+ "patterns": [
2235
+ {
2236
+ "include": "#comment"
2237
+ },
2238
+ {
2239
+ "include": "#termConditional"
2240
+ },
2241
+ {
2242
+ "include": "#termConstructor"
2243
+ },
2244
+ {
2245
+ "include": "#termDelim"
2246
+ },
2247
+ {
2248
+ "include": "#termFor"
2249
+ },
2250
+ {
2251
+ "include": "#termFunction"
2252
+ },
2253
+ {
2254
+ "include": "#literal"
2255
+ },
2256
+ {
2257
+ "include": "#termMatch"
2258
+ },
2259
+ {
2260
+ "include": "#termMatchRule"
2261
+ },
2262
+ {
2263
+ "include": "#termPun"
2264
+ },
2265
+ {
2266
+ "include": "#termOperator"
2267
+ },
2268
+ {
2269
+ "include": "#termTry"
2270
+ },
2271
+ {
2272
+ "include": "#termWhile"
2273
+ },
2274
+ {
2275
+ "include": "#pathRecord"
2276
+ }
2277
+ ]
2278
+ },
2279
+ "termConditional": {
2280
+ "match": "\\b(?:if|then|else)\\b",
2281
+ "name": "keyword.control"
2282
+ },
2283
+ "termConstructor": {
2284
+ "patterns": [
2285
+ {
2286
+ "include": "#pathModulePrefixSimple"
2287
+ },
2288
+ {
2289
+ "match": "(?:\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)",
2290
+ "name": "constant.language constant.numeric entity.other.attribute-name.id.css strong"
2291
+ }
2292
+ ]
2293
+ },
2294
+ "termDelim": {
2295
+ "patterns": [
2296
+ {
2297
+ "begin": "\\((?!\\))",
2298
+ "captures": {
2299
+ "0": {
2300
+ "name": "punctuation.definition.tag"
2301
+ }
2302
+ },
2303
+ "end": "\\)",
2304
+ "patterns": [
2305
+ {
2306
+ "include": "#term"
2307
+ }
2308
+ ]
2309
+ },
2310
+ {
2311
+ "begin": "\\bbegin\\b",
2312
+ "captures": {
2313
+ "0": {
2314
+ "name": "punctuation.definition.tag"
2315
+ }
2316
+ },
2317
+ "end": "\\bend\\b",
2318
+ "patterns": [
2319
+ {
2320
+ "include": "#attributeIdentifier"
2321
+ },
2322
+ {
2323
+ "include": "#term"
2324
+ }
2325
+ ]
2326
+ }
2327
+ ]
2328
+ },
2329
+ "termFor": {
2330
+ "patterns": [
2331
+ {
2332
+ "begin": "\\bfor\\b",
2333
+ "beginCaptures": {
2334
+ "0": {
2335
+ "name": "keyword.control"
2336
+ }
2337
+ },
2338
+ "end": "\\bdone\\b",
2339
+ "endCaptures": {
2340
+ "0": {
2341
+ "name": "keyword.control"
2342
+ }
2343
+ },
2344
+ "patterns": [
2345
+ {
2346
+ "begin": "(?:(?<=(?:[^[:word:]]for|^for))(?![[:word:]]))",
2347
+ "end": "(?<![#\\-:!?.@*/&%^+<=>|~$])=(?![#\\-:!?.@*/&%^+<=>|~$])",
2348
+ "endCaptures": {
2349
+ "0": {
2350
+ "name": "support.type strong"
2351
+ }
2352
+ },
2353
+ "patterns": [
2354
+ {
2355
+ "include": "#pattern"
2356
+ }
2357
+ ]
2358
+ },
2359
+ {
2360
+ "begin": "(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]=|^=))(?![#\\-:!?.@*/&%^+<=>|~$]))",
2361
+ "end": "\\b(?:downto|to)\\b",
2362
+ "endCaptures": {
2363
+ "0": {
2364
+ "name": "keyword.control"
2365
+ }
2366
+ },
2367
+ "patterns": [
2368
+ {
2369
+ "include": "#term"
2370
+ }
2371
+ ]
2372
+ },
2373
+ {
2374
+ "begin": "(?:(?<=(?:[^[:word:]]to|^to))(?![[:word:]]))",
2375
+ "end": "\\bdo\\b",
2376
+ "endCaptures": {
2377
+ "0": {
2378
+ "name": "keyword.control"
2379
+ }
2380
+ },
2381
+ "patterns": [
2382
+ {
2383
+ "include": "#term"
2384
+ }
2385
+ ]
2386
+ },
2387
+ {
2388
+ "begin": "(?:(?<=(?:[^[:word:]]do|^do))(?![[:word:]]))",
2389
+ "end": "(?=\\bdone\\b)",
2390
+ "patterns": [
2391
+ {
2392
+ "include": "#term"
2393
+ }
2394
+ ]
2395
+ }
2396
+ ]
2397
+ }
2398
+ ]
2399
+ },
2400
+ "termFunction": {
2401
+ "captures": {
2402
+ "1": {
2403
+ "name": "storage.type"
2404
+ },
2405
+ "2": {
2406
+ "name": "storage.type"
2407
+ }
2408
+ },
2409
+ "match": "\\b(?:(fun)|(function))\\b"
2410
+ },
2411
+ "termLet": {
2412
+ "patterns": [
2413
+ {
2414
+ "begin": "(?:(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]=|^=|[^#\\-:!?.@*/&%^+<=>|~$]->|^->))(?![#\\-:!?.@*/&%^+<=>|~$]))|(?<=;|\\())(?=[[:space:]]|\\blet\\b)|(?:(?<=(?:[^[:word:]]begin|^begin|[^[:word:]]do|^do|[^[:word:]]else|^else|[^[:word:]]in|^in|[^[:word:]]struct|^struct|[^[:word:]]then|^then|[^[:word:]]try|^try))(?![[:word:]]))|(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]@@|^@@))(?![#\\-:!?.@*/&%^+<=>|~$]))[[:space:]]+",
2415
+ "end": "\\b(?:(and)|(let))\\b|(?=[^[:space:]])(?!\\(\\*)",
2416
+ "endCaptures": {
2417
+ "1": {
2418
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp markup.underline"
2419
+ },
2420
+ "2": {
2421
+ "name": "storage.type markup.underline"
2422
+ }
2423
+ },
2424
+ "patterns": [
2425
+ {
2426
+ "include": "#comment"
2427
+ }
2428
+ ]
2429
+ },
2430
+ {
2431
+ "begin": "(?:(?<=(?:[^[:word:]]and|^and|[^[:word:]]let|^let))(?![[:word:]]))|(let)",
2432
+ "beginCaptures": {
2433
+ "1": {
2434
+ "name": "storage.type markup.underline"
2435
+ }
2436
+ },
2437
+ "end": "\\b(?:(and)|(in))\\b|(?=\\}|\\)|\\]|\\b(?:end|class|exception|external|include|inherit|initializer|let|method|module|open|type|val)\\b)",
2438
+ "endCaptures": {
2439
+ "1": {
2440
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp markup.underline"
2441
+ },
2442
+ "2": {
2443
+ "name": "storage.type markup.underline"
2444
+ }
2445
+ },
2446
+ "patterns": [
2447
+ {
2448
+ "include": "#bindTerm"
2449
+ }
2450
+ ]
2451
+ }
2452
+ ]
2453
+ },
2454
+ "termMatch": {
2455
+ "begin": "\\bmatch\\b",
2456
+ "captures": {
2457
+ "0": {
2458
+ "name": "keyword.control"
2459
+ }
2460
+ },
2461
+ "end": "\\bwith\\b",
2462
+ "patterns": [
2463
+ {
2464
+ "include": "#term"
2465
+ }
2466
+ ]
2467
+ },
2468
+ "termMatchRule": {
2469
+ "patterns": [
2470
+ {
2471
+ "begin": "(?:(?<=(?:[^[:word:]]fun|^fun|[^[:word:]]function|^function|[^[:word:]]with|^with))(?![[:word:]]))",
2472
+ "end": "(?<![#\\-:!?.@*/&%^+<=>|~$])(\\|)|(->)(?![#\\-:!?.@*/&%^+<=>|~$])",
2473
+ "endCaptures": {
2474
+ "1": {
2475
+ "name": "support.type strong"
2476
+ },
2477
+ "2": {
2478
+ "name": "support.type strong"
2479
+ }
2480
+ },
2481
+ "patterns": [
2482
+ {
2483
+ "include": "#comment"
2484
+ },
2485
+ {
2486
+ "include": "#attributeIdentifier"
2487
+ },
2488
+ {
2489
+ "include": "#pattern"
2490
+ }
2491
+ ]
2492
+ },
2493
+ {
2494
+ "begin": "(?:(?<=(?:[^\\[#\\-:!?.@*/&%^+<=>|~$]\\||^\\|))(?![#\\-:!?.@*/&%^+<=>|~$]))|(?<![#\\-:!?.@*/&%^+<=>|~$])\\|(?![#\\-:!?.@*/&%^+<=>|~$])",
2495
+ "beginCaptures": {
2496
+ "0": {
2497
+ "name": "support.type strong"
2498
+ }
2499
+ },
2500
+ "end": "(?<![#\\-:!?.@*/&%^+<=>|~$])(\\|)|(->)(?![#\\-:!?.@*/&%^+<=>|~$])",
2501
+ "endCaptures": {
2502
+ "1": {
2503
+ "name": "support.type strong"
2504
+ },
2505
+ "2": {
2506
+ "name": "support.type strong"
2507
+ }
2508
+ },
2509
+ "patterns": [
2510
+ {
2511
+ "include": "#pattern"
2512
+ },
2513
+ {
2514
+ "begin": "\\bwhen\\b",
2515
+ "beginCaptures": {
2516
+ "0": {
2517
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
2518
+ }
2519
+ },
2520
+ "end": "(?=(?<![#\\-:!?.@*/&%^+<=>|~$])->(?![#\\-:!?.@*/&%^+<=>|~$]))",
2521
+ "patterns": [
2522
+ {
2523
+ "include": "#term"
2524
+ }
2525
+ ]
2526
+ }
2527
+ ]
2528
+ }
2529
+ ]
2530
+ },
2531
+ "termOperator": {
2532
+ "patterns": [
2533
+ {
2534
+ "begin": "(?<![#\\-:!?.@*/&%^+<=>|~$])#(?![#\\-:!?.@*/&%^+<=>|~$])",
2535
+ "beginCaptures": {
2536
+ "0": {
2537
+ "name": "keyword"
2538
+ }
2539
+ },
2540
+ "end": "(?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|\"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)",
2541
+ "endCaptures": {
2542
+ "0": {
2543
+ "name": "entity.name.function"
2544
+ }
2545
+ }
2546
+ },
2547
+ {
2548
+ "captures": {
2549
+ "0": {
2550
+ "name": "keyword.control strong"
2551
+ }
2552
+ },
2553
+ "match": "<-"
2554
+ },
2555
+ {
2556
+ "captures": {
2557
+ "1": {
2558
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
2559
+ },
2560
+ "2": {
2561
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
2562
+ }
2563
+ },
2564
+ "match": "(,|[#\\-:!?.@*/&%^+<=>|~$]+)|(;)"
2565
+ },
2566
+ {
2567
+ "match": "\\b(?:and|assert|asr|land|lazy|lsr|lxor|mod|new|or)\\b",
2568
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
2569
+ }
2570
+ ]
2571
+ },
2572
+ "termPun": {
2573
+ "applyEndPatternLast": true,
2574
+ "begin": "(?<![#\\-:!?.@*/&%^+<=>|~$])\\?|~(?![#\\-:!?.@*/&%^+<=>|~$])",
2575
+ "beginCaptures": {
2576
+ "0": {
2577
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
2578
+ }
2579
+ },
2580
+ "end": ":|(?=[^[:space:]:])",
2581
+ "endCaptures": {
2582
+ "0": {
2583
+ "name": "keyword"
2584
+ }
2585
+ },
2586
+ "patterns": [
2587
+ {
2588
+ "begin": "(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]\\?|^\\?|[^#\\-:!?.@*/&%^+<=>|~$]~|^~))(?![#\\-:!?.@*/&%^+<=>|~$]))",
2589
+ "end": "(?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|\"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)",
2590
+ "endCaptures": {
2591
+ "0": {
2592
+ "name": "markup.inserted constant.language support.constant.property-value entity.name.filename"
2593
+ }
2594
+ }
2595
+ }
2596
+ ]
2597
+ },
2598
+ "termTry": {
2599
+ "begin": "\\btry\\b",
2600
+ "captures": {
2601
+ "0": {
2602
+ "name": "keyword.control"
2603
+ }
2604
+ },
2605
+ "end": "\\bwith\\b",
2606
+ "patterns": [
2607
+ {
2608
+ "include": "#term"
2609
+ }
2610
+ ]
2611
+ },
2612
+ "termWhile": {
2613
+ "patterns": [
2614
+ {
2615
+ "begin": "\\bwhile\\b",
2616
+ "beginCaptures": {
2617
+ "0": {
2618
+ "name": "keyword.control"
2619
+ }
2620
+ },
2621
+ "end": "\\bdone\\b",
2622
+ "endCaptures": {
2623
+ "0": {
2624
+ "name": "keyword.control"
2625
+ }
2626
+ },
2627
+ "patterns": [
2628
+ {
2629
+ "begin": "(?:(?<=(?:[^[:word:]]while|^while))(?![[:word:]]))",
2630
+ "end": "\\bdo\\b",
2631
+ "endCaptures": {
2632
+ "0": {
2633
+ "name": "keyword.control"
2634
+ }
2635
+ },
2636
+ "patterns": [
2637
+ {
2638
+ "include": "#term"
2639
+ }
2640
+ ]
2641
+ },
2642
+ {
2643
+ "begin": "(?:(?<=(?:[^[:word:]]do|^do))(?![[:word:]]))",
2644
+ "end": "(?=\\bdone\\b)",
2645
+ "patterns": [
2646
+ {
2647
+ "include": "#term"
2648
+ }
2649
+ ]
2650
+ }
2651
+ ]
2652
+ }
2653
+ ]
2654
+ },
2655
+ "type": {
2656
+ "patterns": [
2657
+ {
2658
+ "include": "#comment"
2659
+ },
2660
+ {
2661
+ "match": "\\bnonrec\\b",
2662
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
2663
+ },
2664
+ {
2665
+ "include": "#pathModulePrefixExtended"
2666
+ },
2667
+ {
2668
+ "include": "#typeLabel"
2669
+ },
2670
+ {
2671
+ "include": "#typeObject"
2672
+ },
2673
+ {
2674
+ "include": "#typeOperator"
2675
+ },
2676
+ {
2677
+ "include": "#typeParens"
2678
+ },
2679
+ {
2680
+ "include": "#typePolymorphicVariant"
2681
+ },
2682
+ {
2683
+ "include": "#typeRecord"
2684
+ },
2685
+ {
2686
+ "include": "#typeConstructor"
2687
+ }
2688
+ ]
2689
+ },
2690
+ "typeConstructor": {
2691
+ "patterns": [
2692
+ {
2693
+ "begin": "(_)|((?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|\"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*))|(')((?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|\"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*))|(?<=[^\\*]\\)|\\])",
2694
+ "beginCaptures": {
2695
+ "1": {
2696
+ "name": "comment constant.regexp meta.separator.markdown"
2697
+ },
2698
+ "3": {
2699
+ "name": "string.other.link variable.language variable.parameter emphasis strong emphasis"
2700
+ },
2701
+ "4": {
2702
+ "name": "keyword.control emphasis"
2703
+ }
2704
+ },
2705
+ "end": "(?=\\((?!\\*)|\\*|:|,|=|\\.|>|-|\\{|\\[|\\+|\\}|\\)|\\]|;|\\|)|((?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|\"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*))[:space:]*(?!\\(\\*|[[:word:]])|(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
2706
+ "endCaptures": {
2707
+ "1": {
2708
+ "name": "entity.name.function strong"
2709
+ }
2710
+ },
2711
+ "patterns": [
2712
+ {
2713
+ "include": "#comment"
2714
+ },
2715
+ {
2716
+ "include": "#pathModulePrefixExtended"
2717
+ }
2718
+ ]
2719
+ }
2720
+ ]
2721
+ },
2722
+ "typeLabel": {
2723
+ "patterns": [
2724
+ {
2725
+ "begin": "(\\??)((?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|\"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*))[[:space:]]*((?<![#\\-:!?.@*/&%^+<=>|~$]):(?![#\\-:!?.@*/&%^+<=>|~$]))",
2726
+ "captures": {
2727
+ "1": {
2728
+ "name": "keyword strong emphasis"
2729
+ },
2730
+ "2": {
2731
+ "name": "markup.inserted constant.language support.constant.property-value entity.name.filename emphasis"
2732
+ },
2733
+ "3": {
2734
+ "name": "keyword"
2735
+ }
2736
+ },
2737
+ "end": "(?=(?<![#\\-:!?.@*/&%^+<=>|~$])->(?![#\\-:!?.@*/&%^+<=>|~$]))",
2738
+ "patterns": [
2739
+ {
2740
+ "include": "#type"
2741
+ }
2742
+ ]
2743
+ }
2744
+ ]
2745
+ },
2746
+ "typeModule": {
2747
+ "begin": "\\bmodule\\b",
2748
+ "beginCaptures": {
2749
+ "0": {
2750
+ "name": "markup.inserted constant.language support.constant.property-value entity.name.filename"
2751
+ }
2752
+ },
2753
+ "end": "(?=\\))",
2754
+ "patterns": [
2755
+ {
2756
+ "include": "#pathModuleExtended"
2757
+ },
2758
+ {
2759
+ "include": "#signatureConstraints"
2760
+ }
2761
+ ]
2762
+ },
2763
+ "typeObject": {
2764
+ "begin": "<",
2765
+ "captures": {
2766
+ "0": {
2767
+ "name": "constant.language constant.numeric entity.other.attribute-name.id.css strong strong"
2768
+ }
2769
+ },
2770
+ "end": ">",
2771
+ "patterns": [
2772
+ {
2773
+ "begin": "(?<=<|;)",
2774
+ "end": "(:)|(?=>)",
2775
+ "endCaptures": {
2776
+ "1": {
2777
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp strong"
2778
+ },
2779
+ "3": {
2780
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
2781
+ },
2782
+ "4": {
2783
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
2784
+ }
2785
+ },
2786
+ "patterns": [
2787
+ {
2788
+ "include": "#comment"
2789
+ },
2790
+ {
2791
+ "include": "#pathModulePrefixSimple"
2792
+ },
2793
+ {
2794
+ "match": "(?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|\"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)",
2795
+ "name": "markup.inserted constant.language support.constant.property-value entity.name.filename emphasis"
2796
+ }
2797
+ ]
2798
+ },
2799
+ {
2800
+ "begin": "(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]:|^:))(?![#\\-:!?.@*/&%^+<=>|~$]))",
2801
+ "end": "(;)|(?=>)",
2802
+ "endCaptures": {
2803
+ "1": {
2804
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
2805
+ },
2806
+ "2": {
2807
+ "name": "support.type strong"
2808
+ }
2809
+ },
2810
+ "patterns": [
2811
+ {
2812
+ "include": "#type"
2813
+ }
2814
+ ]
2815
+ }
2816
+ ]
2817
+ },
2818
+ "typeOperator": {
2819
+ "patterns": [
2820
+ {
2821
+ "match": ",|;|[#\\-:!?.@*/&%^+<=>|~$]+",
2822
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp strong"
2823
+ }
2824
+ ]
2825
+ },
2826
+ "typeParens": {
2827
+ "begin": "\\(",
2828
+ "captures": {
2829
+ "0": {
2830
+ "name": "punctuation.definition.tag"
2831
+ }
2832
+ },
2833
+ "end": "\\)",
2834
+ "patterns": [
2835
+ {
2836
+ "match": ",",
2837
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
2838
+ },
2839
+ {
2840
+ "include": "#typeModule"
2841
+ },
2842
+ {
2843
+ "include": "#type"
2844
+ }
2845
+ ]
2846
+ },
2847
+ "typePolymorphicVariant": {
2848
+ "begin": "\\[",
2849
+ "end": "\\]",
2850
+ "patterns": [
2851
+ ]
2852
+ },
2853
+ "typeRecord": {
2854
+ "begin": "\\{",
2855
+ "captures": {
2856
+ "0": {
2857
+ "name": "constant.language constant.numeric entity.other.attribute-name.id.css strong strong"
2858
+ }
2859
+ },
2860
+ "end": "\\}",
2861
+ "patterns": [
2862
+ {
2863
+ "begin": "(?<=\\{|;)",
2864
+ "end": "(:)|(=)|(;)|(with)|(?=\\})",
2865
+ "endCaptures": {
2866
+ "1": {
2867
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp strong"
2868
+ },
2869
+ "2": {
2870
+ "name": "support.type strong"
2871
+ },
2872
+ "3": {
2873
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
2874
+ },
2875
+ "4": {
2876
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
2877
+ }
2878
+ },
2879
+ "patterns": [
2880
+ {
2881
+ "include": "#comment"
2882
+ },
2883
+ {
2884
+ "include": "#pathModulePrefixSimple"
2885
+ },
2886
+ {
2887
+ "match": "(?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|\"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)",
2888
+ "name": "markup.inserted constant.language support.constant.property-value entity.name.filename emphasis"
2889
+ }
2890
+ ]
2891
+ },
2892
+ {
2893
+ "begin": "(?:(?<=(?:[^[:word:]]with|^with))(?![[:word:]]))",
2894
+ "end": "(:)|(=)|(;)|(?=\\})",
2895
+ "endCaptures": {
2896
+ "1": {
2897
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp strong"
2898
+ },
2899
+ "2": {
2900
+ "name": "support.type strong"
2901
+ },
2902
+ "3": {
2903
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
2904
+ }
2905
+ },
2906
+ "patterns": [
2907
+ {
2908
+ "match": "(?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|\"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)",
2909
+ "name": "markup.inserted constant.language support.constant.property-value entity.name.filename emphasis"
2910
+ }
2911
+ ]
2912
+ },
2913
+ {
2914
+ "begin": "(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]:|^:))(?![#\\-:!?.@*/&%^+<=>|~$]))",
2915
+ "end": "(;)|(=)|(?=\\})",
2916
+ "endCaptures": {
2917
+ "1": {
2918
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
2919
+ },
2920
+ "2": {
2921
+ "name": "support.type strong"
2922
+ }
2923
+ },
2924
+ "patterns": [
2925
+ {
2926
+ "include": "#type"
2927
+ }
2928
+ ]
2929
+ },
2930
+ {
2931
+ "begin": "(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]=|^=))(?![#\\-:!?.@*/&%^+<=>|~$]))",
2932
+ "end": ";|(?=\\})",
2933
+ "endCaptures": {
2934
+ "0": {
2935
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
2936
+ }
2937
+ },
2938
+ "patterns": [
2939
+ {
2940
+ "include": "#type"
2941
+ }
2942
+ ]
2943
+ }
2944
+ ]
2945
+ },
2946
+ "variableModule": {
2947
+ "captures": {
2948
+ "0": {
2949
+ "name": "string.other.link variable.language variable.parameter emphasis"
2950
+ }
2951
+ },
2952
+ "match": "(?:\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)"
2953
+ },
2954
+ "variablePattern": {
2955
+ "captures": {
2956
+ "1": {
2957
+ "name": "comment constant.regexp meta.separator.markdown"
2958
+ },
2959
+ "2": {
2960
+ "name": "string.other.link variable.language variable.parameter emphasis"
2961
+ }
2962
+ },
2963
+ "match": "(\\b_\\b)|((?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|\"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*))"
2964
+ }
2965
+ },
2966
+ "scopeName": "source.ocaml"
2967
+ }