<?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>
