PluginProbe
Code Block Pro – Beautiful Syntax Highlighting / 1.7.0
Code Block Pro – Beautiful Syntax Highlighting v1.7.0
1.27.1 1.27.2 1.27.3 1.27.4 1.27.5 1.27.6 1.27.7 1.28.0 1.3.0 1.4.0 1.5.0 1.5.1 1.5.2 1.6.0 1.7.0 1.8.0 1.9.0 1.9.1 1.9.2 1.9.3 trunk 1.1.0 1.10.0 1.11.0 1.11.1 All 63 releases
code-block-pro / build / shiki / languages / ocaml.tmLanguage.json

ocaml.tmLanguage.json in Code Block Pro – Beautiful Syntax Highlighting 1.7.0, at build/shiki/languages/ocaml.tmLanguage.json

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