config/sublime/Packages/OCaml/OCaml.tmLanguage
2012-08-01 21:04:05 -07:00

2156 lines
51 KiB
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>fileTypes</key>
<array>
<string>ml</string>
<string>mli</string>
</array>
<key>foldingStartMarker</key>
<string>(\b(module|class|)\s.*?=\s*$|\bbegin|sig|struct|(object(\s*\(_?[a-z]+\))?)\s*$|\bwhile\s.*?\bdo\s*$|^let(?:\s+rec)?\s+[a-z_][a-zA-Z0-9_]*\s+(?!=)\S)</string>
<key>foldingStopMarker</key>
<string>(\bend(\s+in)?[ \t]*(;{1,2}|=)?|\bdone;?|^\s*;;|^\s*in)[ \t]*$</string>
<key>keyEquivalent</key>
<string>^~O</string>
<key>name</key>
<string>OCaml</string>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.module-binding.ocaml</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.other.module-definition.ocaml</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>support.other.module.ocaml</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>punctuation.separator.module-binding.ocmal</string>
</dict>
</dict>
<key>match</key>
<string>\b(let)\s+(module)\s+([A-Z][a-zA-Z0-9'_]*)\s*(=)</string>
<key>name</key>
<string>meta.module.binding</string>
</dict>
<dict>
<key>begin</key>
<string>\b(let|and)\s+(?!\(\*)((rec\s+)([a-z_][a-zA-Z0-9_']*)\b|([a-z_][a-zA-Z0-9_']*|\([^)]+\))(?=\s)((?=\s*=\s*(?=fun(?:ction)\b))|(?!\s*=)))</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.function-definition.ocaml</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>keyword.other.funtion-definition.ocaml</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>entity.name.function.ocaml</string>
</dict>
<key>5</key>
<dict>
<key>name</key>
<string>entity.name.function.ocaml</string>
</dict>
</dict>
<key>end</key>
<string>(?:(:)\s*([^=]+))?(?:(=)|(=)\s*(?=fun(?:ction)\b))</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.separator.function.type-constraint.ocaml</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>storage.type.ocaml</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>keyword.operator.ocaml</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>keyword.operator.ocaml</string>
</dict>
</dict>
<key>name</key>
<string>meta.function.ocaml</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#variables</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(\(|\s)(?=fun\s)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.function.anonymous.ocaml</string>
</dict>
</dict>
<key>end</key>
<string>(\))</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.function.anonymous.ocaml</string>
</dict>
</dict>
<key>name</key>
<string>meta.function.anonymous.ocaml</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?&lt;=(\(|\s))(fun)\s</string>
<key>beginCaptures</key>
<dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.other.function-definition.ocaml</string>
</dict>
</dict>
<key>end</key>
<string>(-&gt;)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.separator.function-definition.ocaml</string>
</dict>
</dict>
<key>name</key>
<string>meta.function.anonymous.definition.ocaml</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#variables</string>
</dict>
</array>
</dict>
<dict>
<key>include</key>
<string>$self</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>^\s*(?=type\s)</string>
<key>end</key>
<string>\b(?=let|end|val)|^\s*$</string>
<key>name</key>
<string>meta.type-definition-group.ocaml</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>\b(type|and)\s+([^=]*)(=)?</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.type-definition.ocaml</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>storage.type.ocaml</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>punctuation.separator.type-definition.ocaml</string>
</dict>
</dict>
<key>end</key>
<string>(?=\b(type|and|let|end|val)\b)|(?=^\s*$)</string>
<key>name</key>
<string>meta.type-definition.ocaml</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#typedefs</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>\b(with|function)(?=(\s*$|.*-&gt;))\b|((?&lt;!\S)(\|)(?=(\w|\s).*-&gt;))</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.control.match-definition.ocaml</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.other.function-definition.ocaml</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>keyword.control.match-definition.ocaml</string>
</dict>
</dict>
<key>end</key>
<string>(?:(-&gt;)|\b(when)\b|\s(?=\|))</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.separator.match-definition.ocaml</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.control.match-condition.ocaml</string>
</dict>
</dict>
<key>name</key>
<string>meta.pattern-match.ocaml</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#matchpatterns</string>
</dict>
</array>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.class-type-definition.ocaml</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>entity.name.type.class-type.ocaml</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>storage.type.ocaml</string>
</dict>
</dict>
<key>match</key>
<string>^[ \t]*(class\s+type\s+)((\[\s*('[A-Za-z][a-zA-Z0-9_']*(?:\s*,\s*'[A-Za-z][a-zA-Z0-9_']*)*)\s*\]\s+)?[a-z_][a-zA-Z0-9'_]*)</string>
<key>name</key>
<string>meta.class.type-definition.ocaml</string>
</dict>
<dict>
<key>begin</key>
<string>^[ \t]*(class)(?:\s+(?!(?:virtual)\s+))((\[\s*('[A-Za-z][a-zA-Z0-9_']*(?:\s*,\s*'[A-Za-z][a-zA-Z0-9_']*)*)\s*\]\s+)?[a-z_][a-zA-Z0-9'_]*)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.class-definition.ocaml</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>entity.name.type.class.ocaml</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>storage.type.ocaml</string>
</dict>
</dict>
<key>end</key>
<string>(=)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.ocaml</string>
</dict>
</dict>
<key>name</key>
<string>meta.class.ocaml</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#variables</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>^[ \t]*(class\s+virtual\s+)((\[\s*('[A-Za-z][a-zA-Z0-9_']*(?:\s*,\s*'[A-Za-z][a-zA-Z0-9_']*)*)\s*\]\s+)?[a-z_][a-zA-Z0-9'_]*)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.class-definition.ocaml</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>entity.name.type.class.ocaml</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>storage.type.ocaml</string>
</dict>
</dict>
<key>end</key>
<string>(=)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.ocaml</string>
</dict>
</dict>
<key>name</key>
<string>meta.class.virtual.ocaml</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#variables</string>
</dict>
</array>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.class-type-definition.ocaml</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>entity.name.type.class-type.ocaml</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>storage.type.ocaml</string>
</dict>
</dict>
<key>match</key>
<string>^[ \t]*(class\s+type\s+virtual)((\[\s*('[A-Za-z][a-zA-Z0-9_']*(?:\s*,\s*'[A-Za-z][a-zA-Z0-9_']*)*)\s*\]\s+)?[a-z_][a-zA-Z0-9'_]*)</string>
<key>name</key>
<string>meta.class.virtual.type-definition.ocaml</string>
</dict>
<dict>
<key>begin</key>
<string>(\{)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.record.ocaml</string>
</dict>
</dict>
<key>end</key>
<string>(\})</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.record.ocaml</string>
</dict>
</dict>
<key>name</key>
<string>meta.record.ocaml</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>\bwith\b</string>
<key>name</key>
<string>keyword.other.language.ocaml</string>
</dict>
<dict>
<key>begin</key>
<string>(\bmutable\s+)?\b([a-z_][a-zA-Z0-9_']*)\s*(:)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.storage.modifier.ocaml</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>source.ocaml</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>punctuation.definition.record.ocaml</string>
</dict>
</dict>
<key>end</key>
<string>(;|(?=}))</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.ocaml</string>
</dict>
</dict>
<key>name</key>
<string>meta.record.definition.ocaml</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#typedefs</string>
</dict>
</array>
</dict>
<dict>
<key>include</key>
<string>$self</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>\b(object)\s*(?:(\()(_?[a-z]+)(\)))?\s*$</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.object-definition.ocaml</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.self-binding.ocaml</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>entity.name.type.self-binding.ocaml</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>punctuation.definition.self-binding.ocaml</string>
</dict>
</dict>
<key>end</key>
<string>\b(end)\b</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.control.object.ocaml</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.terminator.expression.ocaml</string>
</dict>
</dict>
<key>name</key>
<string>meta.object.ocaml</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>\b(method)\s+(virtual\s+)?(private\s+)?([a-z_][a-zA-Z0-9'_]*)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.method-definition.ocaml</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.other.method-definition.ocaml</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>keyword.other.method-restriction.ocaml</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>entity.name.function.method.ocaml</string>
</dict>
</dict>
<key>end</key>
<string>(=|:)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.ocaml</string>
</dict>
</dict>
<key>name</key>
<string>meta.method.ocaml</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#variables</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(constraint)\s+([a-z_'][a-zA-Z0-9'_]*)\s+(=)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.language.ocaml</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>storage.type.ocaml</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>keyword.operator.ocaml</string>
</dict>
</dict>
<key>end</key>
<string>(#[a-z_][a-zA-Z0-9'_]*)|(int|char|float|string|list|array|bool|unit|exn|option|int32|int64|nativeint|format4|lazy_t)|([a-z_][a-zA-Z0-9'_]*)\s*$</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.type.polymorphic-variant.ocaml</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>storage.type.ocaml</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>storage.type.ocaml</string>
</dict>
</dict>
<key>name</key>
<string>meta.object.type-constraint.ocaml</string>
</dict>
<dict>
<key>include</key>
<string>$self</string>
</dict>
</array>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.separator.method-call.ocaml</string>
</dict>
</dict>
<key>match</key>
<string>(?&lt;=\w|\)|')(#)[a-z_][a-zA-Z0-9'_]*</string>
<key>name</key>
<string>meta.method-call.ocaml</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.module-definition.ocaml</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>entity.name.type.module.ocaml</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>punctuation.separator.module-definition.ocaml</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>entity.name.type.module-type.ocaml</string>
</dict>
</dict>
<key>match</key>
<string>^[ \t]*(module)\s+([A-Z_][a-zA-Z0-9'_]*)(?:\s*(:)\s*([A-Z][a-zA-Z0-9'_]*)?)?</string>
<key>name</key>
<string>meta.module.ocaml</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.module-type-definition.ocaml</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>entity.name.type.module-type.ocaml</string>
</dict>
</dict>
<key>match</key>
<string>^[ \t]*(module\s+type\s+)([A-Z][a-zA-Z0-9'_]*)</string>
<key>name</key>
<string>meta.module.type.ocaml</string>
</dict>
<dict>
<key>begin</key>
<string>\b(sig)\b</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.module.signature.ocaml</string>
</dict>
</dict>
<key>end</key>
<string>\b(end)\b</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.module.signature.ocaml</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.terminator.expression.ocaml</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>keyword.operator.ocaml</string>
</dict>
</dict>
<key>name</key>
<string>meta.module.signature.ocaml</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#module-signature</string>
</dict>
<dict>
<key>include</key>
<string>$self</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>\b(struct)\b</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.module.structure.ocaml</string>
</dict>
</dict>
<key>end</key>
<string>\b(end)\b</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.module.structure.ocaml</string>
</dict>
</dict>
<key>name</key>
<string>meta.module.structure.ocaml</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>$self</string>
</dict>
</array>
</dict>
<dict>
<key>include</key>
<string>#moduleref</string>
</dict>
<dict>
<key>begin</key>
<string>\b(open)\s+([A-Z][a-zA-Z0-9'_]*)(?=(\.[A-Z][a-zA-Z0-9_]*)*)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.ocaml</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>support.other.module.ocaml</string>
</dict>
</dict>
<key>end</key>
<string>(\s|$)</string>
<key>name</key>
<string>meta.module.open.ocaml</string>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.separator.module-reference.ocaml</string>
</dict>
</dict>
<key>match</key>
<string>(\.)([A-Z][a-zA-Z0-9'_]*)</string>
<key>name</key>
<string>support.other.module.ocaml</string>
</dict>
</array>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.ocaml</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>entity.name.type.exception.ocaml</string>
</dict>
</dict>
<key>match</key>
<string>\b(exception)\s+([A-Z][a-zA-Z0-9'_]*)\b</string>
<key>name</key>
<string>meta.exception.ocaml</string>
</dict>
<dict>
<key>begin</key>
<string>(?=(\[&lt;)(?![^\[]+?[^&gt;]]))</string>
<key>end</key>
<string>(&gt;])</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.camlp4-stream.ocaml</string>
</dict>
</dict>
<key>name</key>
<string>source.camlp4.embedded.ocaml</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>source.camlp4.ocaml</string>
</dict>
</array>
</dict>
<dict>
<key>include</key>
<string>#strings</string>
</dict>
<dict>
<key>include</key>
<string>#constants</string>
</dict>
<dict>
<key>include</key>
<string>#comments</string>
</dict>
<dict>
<key>include</key>
<string>#lists</string>
</dict>
<dict>
<key>include</key>
<string>#arrays</string>
</dict>
<dict>
<key>begin</key>
<string>(\()(?=(~[a-z][a-zA-Z0-9_]*:|("(\\"|[^"])*")|[^\(\)~"])+(?&lt;!:)(:&gt;|:(?![:=])))</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.section.type-constraint.ocaml</string>
</dict>
</dict>
<key>end</key>
<string>(?&lt;!:)(:&gt;|:(?![:=]))(.*?)(\))</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.separator.type-constraint.ocaml</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>storage.type.ocaml</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>punctuation.section.type-constraint.ocaml</string>
</dict>
</dict>
<key>name</key>
<string>meta.type-constraint.ocaml</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>$self</string>
</dict>
</array>
</dict>
<dict>
<key>match</key>
<string>^[ \t]*#[a-zA-Z]+</string>
<key>name</key>
<string>keyword.other.directive.ocaml</string>
</dict>
<dict>
<key>match</key>
<string>^[ \t]*#[0-9]*</string>
<key>name</key>
<string>keyword.other.directive.line-number.ocaml</string>
</dict>
<dict>
<key>include</key>
<string>#storagetypes</string>
</dict>
<dict>
<key>match</key>
<string>\b(mutable|ref)\b</string>
<key>name</key>
<string>keyword.other.storage.modifier.ocaml</string>
</dict>
<dict>
<key>match</key>
<string>`[A-Za-z][a-zA-Z0-9'_]*\b</string>
<key>name</key>
<string>entity.name.type.variant.polymorphic.ocaml</string>
</dict>
<dict>
<key>match</key>
<string>\b[A-Z][a-zA-Z0-9'_]*\b</string>
<key>name</key>
<string>entity.name.type.variant.ocaml</string>
</dict>
<dict>
<key>match</key>
<string>!=|:=|&gt;|&lt;</string>
<key>name</key>
<string>keyword.operator.symbol.ocaml</string>
</dict>
<dict>
<key>match</key>
<string>[*+/-]\.</string>
<key>name</key>
<string>keyword.operator.infix.floating-point.ocaml</string>
</dict>
<dict>
<key>match</key>
<string>~-\.</string>
<key>name</key>
<string>keyword.operator.prefix.floating-point.ocaml</string>
</dict>
<dict>
<key>match</key>
<string>::</string>
<key>name</key>
<string>punctuation.definition.list.constructor.ocaml</string>
</dict>
<dict>
<key>match</key>
<string>;;</string>
<key>name</key>
<string>punctuation.terminator.expression.ocaml</string>
</dict>
<dict>
<key>match</key>
<string>;</string>
<key>name</key>
<string>punctuation.separator.ocaml</string>
</dict>
<dict>
<key>match</key>
<string>-&gt;</string>
<key>name</key>
<string>punctuation.separator.function-return.ocaml</string>
</dict>
<dict>
<key>match</key>
<string>[=&lt;&gt;@^&amp;+\-*/$%|][|!$%&amp;*+./:&lt;=&gt;?@^~-]*</string>
<key>name</key>
<string>keyword.operator.infix.ocaml</string>
</dict>
<dict>
<key>match</key>
<string>\bnot\b|!|[!\?~][!$%&amp;*+./:&lt;=&gt;?@^~-]+</string>
<key>name</key>
<string>keyword.operator.prefix.ocaml</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.separator.argument-label.ocaml</string>
</dict>
</dict>
<key>match</key>
<string>~[a-z][a-z0-9'_]*(:)?</string>
<key>name</key>
<string>entity.name.tag.label.ocaml</string>
</dict>
<dict>
<key>begin</key>
<string>\b(begin)\b</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.control.begin-end.ocaml</string>
</dict>
</dict>
<key>end</key>
<string>\b(end)\b</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.control.begin-end.ocaml</string>
</dict>
</dict>
<key>name</key>
<string>meta.begin-end-group.ocaml</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>$self</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>\b(for)\b</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.control.for-loop.ocaml</string>
</dict>
</dict>
<key>end</key>
<string>\b(done)\b</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.control.for-loop.ocaml</string>
</dict>
</dict>
<key>name</key>
<string>meta.for-loop.ocaml</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>\bdo\b</string>
<key>name</key>
<string>keyword.control.loop.ocaml</string>
</dict>
<dict>
<key>include</key>
<string>$self</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>\b(while)\b</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.control.while-loop.ocaml</string>
</dict>
</dict>
<key>end</key>
<string>\b(done)\b</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.control.while-loop.ocaml</string>
</dict>
</dict>
<key>name</key>
<string>meta.while-loop.ocaml</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>\bdo\b</string>
<key>name</key>
<string>keyword.control.loop.ocaml</string>
</dict>
<dict>
<key>include</key>
<string>$self</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>\(</string>
<key>end</key>
<string>\)</string>
<key>name</key>
<string>meta.paren-group.ocaml</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>$self</string>
</dict>
</array>
</dict>
<dict>
<key>match</key>
<string>\b(and|land|lor|lsl|lsr|lxor|mod|or)\b</string>
<key>name</key>
<string>keyword.operator.ocaml</string>
</dict>
<dict>
<key>match</key>
<string>\b(downto|if|else|match|then|to|when|with|try)\b</string>
<key>name</key>
<string>keyword.control.ocaml</string>
</dict>
<dict>
<key>match</key>
<string>\b(as|assert|class|constraint|exception|functor|in|include|inherit|initializer|lazy|let|mod|module|mutable|new|object|open|private|rec|sig|struct|type|virtual)\b</string>
<key>name</key>
<string>keyword.other.ocaml</string>
</dict>
<dict>
<key>include</key>
<string>#module-signature</string>
</dict>
<dict>
<key>match</key>
<string>(||“|”)</string>
<key>name</key>
<string>invalid.illegal.unrecognized-character.ocaml</string>
</dict>
</array>
<key>repository</key>
<dict>
<key>arrays</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(\[\|)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.array.begin.ocaml</string>
</dict>
</dict>
<key>end</key>
<string>(\|])</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.array.end.ocaml</string>
</dict>
</dict>
<key>name</key>
<string>meta.array.ocaml</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#arrays</string>
</dict>
<dict>
<key>include</key>
<string>$self</string>
</dict>
</array>
</dict>
</array>
</dict>
<key>comments</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>comment.block.empty.ocaml</string>
</dict>
</dict>
<key>match</key>
<string>\(\*+(\*)\)</string>
<key>name</key>
<string>comment.block.ocaml</string>
</dict>
<dict>
<key>begin</key>
<string>\(\*</string>
<key>end</key>
<string>\*\)</string>
<key>name</key>
<string>comment.block.ocaml</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#comments</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?=[^\\])(")</string>
<key>end</key>
<string>"</string>
<key>name</key>
<string>comment.block.string.quoted.double.ocaml</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>\\(x[a-fA-F0-9][a-fA-F0-9]|[0-2]\d\d|[bnrt'"\\])</string>
<key>name</key>
<string>comment.block.string.constant.character.escape.ocaml</string>
</dict>
</array>
</dict>
</array>
</dict>
<key>constants</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>meta.empty-typing-pair.ocaml</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>meta.empty-typing-pair.parens.ocaml</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>meta.empty-typing-pair.ocaml</string>
</dict>
</dict>
<key>match</key>
<string>(?:\[\s*(\])|\((\))|\(\s*(\)))</string>
<key>name</key>
<string>constant.language.pseudo-variable.ocaml</string>
</dict>
<dict>
<key>match</key>
<string>\b(true|false)\b</string>
<key>name</key>
<string>constant.language.boolean.ocaml</string>
</dict>
<dict>
<key>match</key>
<string>\b-?[0-9][0-9_]*((\.([0-9][0-9_]*([eE][+-]??[0-9][0-9_]*)?)?)|([eE][+-]??[0-9][0-9_]*))</string>
<key>name</key>
<string>constant.numeric.floating-point.ocaml</string>
</dict>
<dict>
<key>match</key>
<string>\b(-?((0(x|X)[0-9a-fA-F][0-9a-fA-F_]*)|(0(o|O)[0-7][0-7_]*)|(0(b|B)[01][01_]*)|([0-9][0-9_]*)))n</string>
<key>name</key>
<string>constant.numeric.integer.nativeint.ocaml</string>
</dict>
<dict>
<key>match</key>
<string>\b(-?((0(x|X)[0-9a-fA-F][0-9a-fA-F_]*)|(0(o|O)[0-7][0-7_]*)|(0(b|B)[01][01_]*)|([0-9][0-9_]*)))L</string>
<key>name</key>
<string>constant.numeric.integer.int64.ocaml</string>
</dict>
<dict>
<key>match</key>
<string>\b(-?((0(x|X)[0-9a-fA-F][0-9a-fA-F_]*)|(0(o|O)[0-7][0-7_]*)|(0(b|B)[01][01_]*)|([0-9][0-9_]*)))l</string>
<key>name</key>
<string>constant.numeric.integer.int32.ocaml</string>
</dict>
<dict>
<key>match</key>
<string>\b(-?((0(x|X)[0-9a-fA-F][0-9a-fA-F_]*)|(0(o|O)[0-7][0-7_]*)|(0(b|B)[01][01_]*)|([0-9][0-9_]*)))</string>
<key>name</key>
<string>constant.numeric.integer.ocaml</string>
</dict>
<dict>
<key>match</key>
<string>'(.|\\(x[a-fA-F0-9][a-fA-F0-9]|[0-2]\d\d|[bnrt'"\\]))'</string>
<key>name</key>
<string>constant.character.ocaml</string>
</dict>
</array>
</dict>
<key>definite_storagetypes</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#storagetypes</string>
</dict>
<dict>
<key>match</key>
<string>\b[a-zA-Z0-9'_]+\b</string>
<key>name</key>
<string>storage.type.ocaml</string>
</dict>
</array>
</dict>
<key>lists</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(\[)(?!\||&lt;|&gt;)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.list.begin.ocaml</string>
</dict>
</dict>
<key>end</key>
<string>(?&lt;!\||&gt;)(])</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.list.end.ocaml</string>
</dict>
</dict>
<key>name</key>
<string>meta.list.ocaml</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#lists</string>
</dict>
<dict>
<key>include</key>
<string>$self</string>
</dict>
</array>
</dict>
</array>
</dict>
<key>matchpatterns</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>\b_\b</string>
<key>name</key>
<string>constant.language.universal-match.ocaml</string>
</dict>
<dict>
<key>match</key>
<string>\|(?=\s*\S)</string>
<key>name</key>
<string>punctuation.separator.match-pattern.ocaml</string>
</dict>
<dict>
<key>begin</key>
<string>(\()(?=(?!=.*?-&gt;).*?\|)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.match-option.ocaml</string>
</dict>
</dict>
<key>end</key>
<string>(\))</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.match-option.ocaml</string>
</dict>
</dict>
<key>name</key>
<string>meta.match-option.ocaml</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>\|</string>
<key>name</key>
<string>punctuation.separator.match-option.ocaml</string>
</dict>
<dict>
<key>include</key>
<string>#matchpatterns</string>
</dict>
</array>
</dict>
<dict>
<key>include</key>
<string>#moduleref</string>
</dict>
<dict>
<key>include</key>
<string>#constants</string>
</dict>
<dict>
<key>include</key>
<string>#variables</string>
</dict>
<dict>
<key>include</key>
<string>$self</string>
</dict>
</array>
</dict>
<key>module-signature</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(val)\s+([a-z_][a-zA-Z0-9_']*)\s*(:)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.ocaml</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>entity.name.type.value-signature.ocaml</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>punctuation.separator.type-constraint.ocaml</string>
</dict>
</dict>
<key>end</key>
<string>(?=\b(type|val|external|class|module|end)\b)|^\s*$</string>
<key>name</key>
<string>meta.module.signature.val.ocaml</string>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.optional-parameter.ocaml</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>entity.name.tag.label.optional.ocaml</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>punctuation.separator.optional-parameter.ocaml</string>
</dict>
</dict>
<key>match</key>
<string>(\?)([a-z][a-zA-Z0-9_]*)\s*(:)</string>
<key>name</key>
<string>variable.parameter.ameter.optional.ocaml</string>
</dict>
<dict>
<key>begin</key>
<string>([a-z][a-zA-Z0-9'_]*)\s*(:)\s*</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>entity.name.tag.label.ocaml</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.separator.label.ocaml</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>storage.type.ocaml</string>
</dict>
</dict>
<key>end</key>
<string>\s</string>
<key>name</key>
<string>variable.parameter.labeled.ocaml</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#definite_storagetypes</string>
</dict>
</array>
</dict>
<dict>
<key>include</key>
<string>#typedefs</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(external)\s+([a-z_][a-zA-Z0-9_']*)\s*(:)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.ocaml</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>entity.name.type.external-signature.ocaml</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>punctuation.separator.type-constraint.ocaml</string>
</dict>
</dict>
<key>end</key>
<string>(?=\b(type|val|external|class|module|let|end)\b)|^\s*$</string>
<key>name</key>
<string>meta.module.signature.external.ocaml</string>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.optional-parameter.ocaml</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>entity.name.tag.label.optional.ocaml</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>punctuation.separator.optional-parameter.ocaml</string>
</dict>
</dict>
<key>match</key>
<string>(\?)([a-z][a-zA-Z0-9_]*)\s*(:)</string>
<key>name</key>
<string>variable.parameter.optional.ocaml</string>
</dict>
<dict>
<key>begin</key>
<string>(~)([a-z][a-zA-Z0-9'_]*)\s*(:)\s*</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.labeled-parameter.ocaml</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>entity.name.tag.label.ocaml</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>punctuation.separator.label.ocaml</string>
</dict>
</dict>
<key>end</key>
<string>\s</string>
<key>name</key>
<string>variable.parameter.labeled.ocaml</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#variables</string>
</dict>
</array>
</dict>
<dict>
<key>include</key>
<string>#strings</string>
</dict>
<dict>
<key>include</key>
<string>#typedefs</string>
</dict>
</array>
</dict>
</array>
</dict>
<key>moduleref</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>support.other.module.ocaml</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.separator.module-reference.ocaml</string>
</dict>
</dict>
<key>match</key>
<string>\b([A-Z][a-zA-Z0-9'_]*)(\.)</string>
<key>name</key>
<string>meta.module-reference.ocaml</string>
</dict>
</array>
</dict>
<key>storagetypes</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>\b(int|char|float|string|list|array|bool|unit|exn|option|int32|int64|nativeint|format4|lazy_t)\b</string>
<key>name</key>
<string>storage.type.ocaml</string>
</dict>
<dict>
<key>match</key>
<string>#[a-z_][a-zA-Z0-9_]*</string>
<key>name</key>
<string>storage.type.variant.polymorphic.ocaml</string>
</dict>
</array>
</dict>
<key>strings</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?=[^\\])(")</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.ocaml</string>
</dict>
</dict>
<key>end</key>
<string>(")</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.ocaml</string>
</dict>
</dict>
<key>name</key>
<string>string.quoted.double.ocaml</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>\\$[ \t]*</string>
<key>name</key>
<string>punctuation.separator.string.ignore-eol.ocaml</string>
</dict>
<dict>
<key>match</key>
<string>\\(x[a-fA-F0-9][a-fA-F0-9]|[0-2]\d\d|[bnrt'"\\])</string>
<key>name</key>
<string>constant.character.string.escape.ocaml</string>
</dict>
<dict>
<key>match</key>
<string>\\[\|\(\)1-9$^.*+?\[\]]</string>
<key>name</key>
<string>constant.character.regexp.escape.ocaml</string>
</dict>
<dict>
<key>match</key>
<string>\\(?!(x[a-fA-F0-9][a-fA-F0-9]|[0-2]\d\d|[bnrt'"\\]|[\|\(\)1-9$^.*+?\[\]]|$[ \t]*))(?:.)</string>
<key>name</key>
<string>invalid.illegal.character.string.escape</string>
</dict>
</array>
</dict>
</array>
</dict>
<key>typedefs</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>\|</string>
<key>name</key>
<string>punctuation.separator.variant-definition.ocaml</string>
</dict>
<dict>
<key>include</key>
<string>#comments</string>
</dict>
<dict>
<key>begin</key>
<string>\(</string>
<key>end</key>
<string>\)</string>
<key>name</key>
<string>meta.paren-group.ocaml</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#typedefs</string>
</dict>
</array>
</dict>
<dict>
<key>match</key>
<string>\bof\b</string>
<key>name</key>
<string>keyword.other.ocaml</string>
</dict>
<dict>
<key>include</key>
<string>#storagetypes</string>
</dict>
<dict>
<key>match</key>
<string>(?&lt;=\s|\()['a-z_][a-zA-Z0-9_]*\b</string>
<key>name</key>
<string>storage.type.ocaml</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>support.other.module.ocaml</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>storage.type.module.ocaml</string>
</dict>
</dict>
<key>match</key>
<string>\b((?:[A-Z][a-zA-Z0-9'_]*)(?:\.[A-Z][a-zA-Z0-9'_]+)*)(\.[a-zA-Z0-9'_]+)</string>
<key>name</key>
<string>meta.module.type.ocaml</string>
</dict>
<dict>
<key>begin</key>
<string>(\[(&gt;|&lt;)?)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.polymorphic-variant.ocaml</string>
</dict>
</dict>
<key>end</key>
<string>(\])</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.polymorphic-variant.ocaml</string>
</dict>
</dict>
<key>name</key>
<string>meta.polymorphic-variant.definition.ocaml</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#typedefs</string>
</dict>
</array>
</dict>
<dict>
<key>include</key>
<string>$self</string>
</dict>
<dict>
<key>match</key>
<string>\|</string>
<key>name</key>
<string>punctuation.separator.algebraic-type.ocaml</string>
</dict>
</array>
</dict>
<key>variables</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>\(\)</string>
<key>name</key>
<string>variable.parameter.unit.ocaml</string>
</dict>
<dict>
<key>include</key>
<string>#constants</string>
</dict>
<dict>
<key>include</key>
<string>#moduleref</string>
</dict>
<dict>
<key>begin</key>
<string>(~)([a-z][a-zA-Z0-9'_]*)(\s*:\s*)?</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.labeled-parameter.ocaml</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>entity.name.tag.label.ocaml</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>punctuation.separator.label.ocaml</string>
</dict>
</dict>
<key>end</key>
<string>(?=(-&gt;|\s))</string>
<key>name</key>
<string>variable.parameter.labeled.ocaml</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#variables</string>
</dict>
</array>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.optional-parameter.ocaml</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>entity.name.tag.label.optional.ocaml</string>
</dict>
</dict>
<key>match</key>
<string>(\?)([a-z][a-zA-Z0-9_]*)</string>
<key>name</key>
<string>variable.parameter.optional.ocaml</string>
</dict>
<dict>
<key>begin</key>
<string>(\?)(\()([a-z_][a-zA-Z0-9'_]*)\s*(=)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.optional-parameter.ocaml</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.optional-parameter.ocaml</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>entity.name.tag.label.optional.ocaml</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>punctuation.separator.optional-parameter-assignment.ocaml</string>
</dict>
</dict>
<key>end</key>
<string>(\))</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.optional-parameter.ocaml</string>
</dict>
</dict>
<key>name</key>
<string>variable.parameter.optional.ocaml</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>$self</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(\()(?=(~[a-z][a-zA-Z0-9_]*:|("(\\"|[^"])*")|[^\(\)~"])+(?&lt;!:)(:&gt;|:(?![:=])))</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.section.type-constraint.ocaml</string>
</dict>
</dict>
<key>end</key>
<string>(\))</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.section.type-constraint.ocaml</string>
</dict>
</dict>
<key>name</key>
<string>meta.parameter.type-constrained.ocaml</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?&lt;!:)(:&gt;|:(?![:=]))</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.separator.type-constraint.ocaml</string>
</dict>
</dict>
<key>end</key>
<string>(?=\))</string>
<key>name</key>
<string>storage.type.ocaml</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>\(</string>
<key>end</key>
<string>\)</string>
<key>name</key>
<string>meta.paren.group</string>
</dict>
</array>
</dict>
<dict>
<key>include</key>
<string>#variables</string>
</dict>
</array>
</dict>
<dict>
<key>include</key>
<string>#comments</string>
</dict>
<dict>
<key>begin</key>
<string>\(</string>
<key>end</key>
<string>\)</string>
<key>name</key>
<string>meta.paren-group.ocaml</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#variables</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(\()</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.tuple.ocaml</string>
</dict>
</dict>
<key>end</key>
<string>(\))</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.tuple.ocaml</string>
</dict>
</dict>
<key>name</key>
<string>variable.parameter.tuple.ocaml</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#matchpatterns</string>
</dict>
<dict>
<key>include</key>
<string>#variables</string>
</dict>
<dict>
<key>match</key>
<string>,</string>
<key>name</key>
<string>punctuation.separator.tuple.ocaml</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(\{)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.record.ocaml</string>
</dict>
</dict>
<key>end</key>
<string>(\})</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.record.ocaml</string>
</dict>
</dict>
<key>name</key>
<string>variable.parameter.record.ocaml</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#moduleref</string>
</dict>
<dict>
<key>begin</key>
<string>\b([a-z][a-zA-Z0-9'_]*)\s*(=)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>entity.name.tag.record.ocaml</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.separator.record.field-assignment.ocaml</string>
</dict>
</dict>
<key>end</key>
<string>(;)|(?=\})</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.separator.record.ocaml</string>
</dict>
</dict>
<key>name</key>
<string>meta.recordfield.match.ocaml</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#matchpatterns</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>include</key>
<string>#storagetypes</string>
</dict>
<dict>
<key>match</key>
<string>\b[a-z_][a-zA-Z0-9'_]*</string>
<key>name</key>
<string>variable.parameter.ocaml</string>
</dict>
</array>
</dict>
</dict>
<key>scopeName</key>
<string>source.ocaml</string>
<key>uuid</key>
<string>F816FA69-6EE8-11D9-BF2D-000D93589AF6</string>
</dict>
</plist>