<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>fileTypes</key>
	<array>
		<string>mql4</string>
		<string>mq4</string>
	</array>
	<key>foldingStartMarker</key>
	<string>(^.)?\{</string>
	<key>foldingStopMarker</key>
	<string>(^\s*)?\}</string>
	<key>name</key>
	<string>MQL4</string>
	<key>patterns</key>
	<array>
		<dict>
			<key>include</key>
			<string>#comments</string>
		</dict>
		<dict>
			<key>match</key>
			<string>\b(const|private|protected|public|virtual)\b</string>
			<key>name</key>
			<string>storage.modifier.source.mql4</string>
		</dict>
		<dict>
			<key>match</key>
			<string>\b(break|case|continue|default|delete|do|else|for|if|new|operator|return|sizeof|switch|while)\b</string>
			<key>name</key>
			<string>keyword.control.mql4</string>
		</dict>
		<dict>
			<key>match</key>
			<string>#\b(property|import|define|include)\b</string>
			<key>name</key>
			<string>keyword.control.preprocessor.mql4</string>
		</dict>
		<dict>
			<key>match</key>
			<string>\b(bool|char|class|color|datetime|double|enum|float|int|long|short|string|struct|uchar|uint|ulong|ushort|void)\b</string>
			<key>name</key>
			<string>storage.type.mql4</string>
		</dict>
		<dict>
			<key>match</key>
			<string>\b(extern|input|static)\b</string>
			<key>name</key>
			<string>storage.modifier.mql4</string>
		</dict>
		<dict>
			<key>match</key>
			<string>\b(true|TRUE)\b</string>
			<key>name</key>
			<string>constant.language.boolean.true.mql4</string>
		</dict>
		<dict>
			<key>match</key>
			<string>\b(false|FALSE)\b</string>
			<key>name</key>
			<string>constant.language.boolean.false.mql4</string>
		</dict>
		<dict>
			<key>match</key>
			<string>\b(null|NULL)\b</string>
			<key>name</key>
			<string>constant.language.null.mql4</string>
		</dict>
		<dict>
			<key>match</key>
			<string>\b(empty|EMPTY)\b</string>
			<key>name</key>
			<string>constant.language.empty.mql4</string>
		</dict>
		<dict>
			<key>match</key>
			<string>\b(this|strict|template|typename)\b</string>
			<key>name</key>
			<string>constant.language.other.mql4</string>
		</dict>
		<dict>
			<key>match</key>
			<string>\b(([A-Z_]+)(\d*)?)\b</string>
			<key>name</key>
			<string>constant.language.mql4</string>
		</dict>
		<dict>
			<key>match</key>
			<string>\b(([a-zA-Z_]+)([a-zA-Z0-9_]*)?)\b</string>
			<key>name</key>
			<string>variable.other.mql4</string>
		</dict>
		<dict>
			<key>match</key>
			<string>\b([1-9]+[0-9]*|0[a-z,A-Z,0-9]*)\b</string>
			<key>name</key>
			<string>constant.numeric.integer.mql4</string>
		</dict>
		<dict>
			<key>match</key>
			<string>\b(\d*\.\d*)\b</string>
			<key>name</key>
			<string>constant.numeric.double.mql4</string>
		</dict>
		<dict>
			<key>match</key>
			<string>&lt;\=|&gt;\=|\=\=|&lt;|&gt;|\!\=</string>
			<key>name</key>
			<string>keyword.operator.comparison.mql4</string>
		</dict>
		<dict>
			<key>match</key>
			<string>\+\=|-\=|\*\=|/\=|//\=|%\=|&amp;\=|\|\=|\^\=|&gt;&gt;\=|&lt;&lt;\=</string>
			<key>name</key>
			<string>keyword.operator.assignment.augmented.mql4</string>
		</dict>
		<dict>
			<key>match</key>
			<string>%|\*|\-|\+|\/|\+\+|\-\-|\^|&gt;&gt;|&lt;&lt;</string>
			<key>name</key>
			<string>keyword.operator.arithmetic.mql4</string>
		</dict>
		<dict>
			<key>match</key>
			<string>=</string>
			<key>name</key>
			<string>keyword.operator.assignment.mql4</string>
		</dict>
		<dict>
			<key>match</key>
			<string>\!|&amp;&amp;|\|\|</string>
			<key>name</key>
			<string>keyword.operator.logical.mql4</string>
		</dict>
		<dict>
			<key>begin</key>
			<string>"</string>
			<key>beginCaptures</key>
			<dict>
				<key>0</key>
				<dict>
					<key>name</key>
					<string>punctuation.definition.string.begin.mql4</string>
				</dict>
			</dict>
			<key>end</key>
			<string>"</string>
			<key>endCaptures</key>
			<dict>
				<key>0</key>
				<dict>
					<key>name</key>
					<string>punctuation.definition.string.end.mql4</string>
				</dict>
			</dict>
			<key>name</key>
			<string>string.quoted.double.mql4</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#string_escaped_char</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#string_placeholder</string>
				</dict>
			</array>
		</dict>
		<dict>
			<key>begin</key>
			<string>'</string>
			<key>beginCaptures</key>
			<dict>
				<key>0</key>
				<dict>
					<key>name</key>
					<string>punctuation.definition.string.begin.mql4</string>
				</dict>
			</dict>
			<key>end</key>
			<string>'</string>
			<key>endCaptures</key>
			<dict>
				<key>0</key>
				<dict>
					<key>name</key>
					<string>punctuation.definition.string.end.mql4</string>
				</dict>
			</dict>
			<key>name</key>
			<string>string.quoted.single.mql4</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#string_escaped_char</string>
				</dict>
			</array>
		</dict>
		<dict>
			<key>include</key>
			<string>#block</string>
		</dict>
		<dict>
			<key>begin</key>
			<string>(?x)
    		(?:  ^                                 # begin-of-line
    		  |
    		     (?: (?= \s )           (?&lt;!else|new|return) (?&lt;=\w)      #  or word + space before name
    		       | (?= \s*[A-Za-z_] ) (?&lt;!&amp;&amp;)       (?&lt;=[*&amp;&gt;])   #  or type modifier before name
    		     )
    		)
    		(\s*) (?!(while|for|do|if|else|switch|catch|return)\s*\()
    		(
    			(?: [A-Za-z_][A-Za-z0-9_]*+ | :: )++ |                  # actual name
    			(?: (?&lt;=operator) (?: [-*&amp;&lt;&gt;=+!]+ | \(\) | \[\] ) )  # if it is a C++ operator
    		)
    		 \s*(?=\()</string>
			<key>beginCaptures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>punctuation.whitespace.function.leading.mql4</string>
				</dict>
				<key>3</key>
				<dict>
					<key>name</key>
					<string>entity.name.function.mql4</string>
				</dict>
				<key>4</key>
				<dict>
					<key>name</key>
					<string>punctuation.definition.parameters.mql4</string>
				</dict>
			</dict>
			<key>end</key>
			<string>(?&lt;=\})|(?=#)|(;)</string>
			<key>name</key>
			<string>meta.function.mql4</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#comments</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#parens</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#block</string>
				</dict>
			</array>
		</dict>
	</array>
	<key>repository</key>
	<dict>
		<key>block</key>
		<dict>
			<key>begin</key>
			<string>\{</string>
			<key>end</key>
			<string>\}</string>
			<key>name</key>
			<string>meta.block.mql4</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#block_innards</string>
				</dict>
			</array>
		</dict>
		<key>block_innards</key>
		<dict>
			<key>patterns</key>
			<array>
				<dict>
					<key>captures</key>
					<dict>
						<key>1</key>
						<dict>
							<key>name</key>
							<string>punctuation.whitespace.support.function.leading.mql4</string>
						</dict>
						<key>2</key>
						<dict>
							<key>name</key>
							<string>support.function.C99.mql4</string>
						</dict>
					</dict>
					<key>match</key>
					<string></string>
				</dict>
				<dict>
					<key>captures</key>
					<dict>
						<key>1</key>
						<dict>
							<key>name</key>
							<string>punctuation.whitespace.function-call.leading.mql4</string>
						</dict>
						<key>2</key>
						<dict>
							<key>name</key>
							<string>support.function.any-method.mql4</string>
						</dict>
						<key>3</key>
						<dict>
							<key>name</key>
							<string>punctuation.definition.parameters.mql4</string>
						</dict>
					</dict>
					<key>match</key>
					<string>(?x) (?: (?= \s ) (?:(?&lt;=else|new|return) | (?&lt;!\w)) (\s+))? (\b (?!(while|for|do|if|else|switch|catch|return)\s*\()(?:(?!NS)[A-Za-z_][A-Za-z0-9_]*+\b | :: )++ ) \s*(\()</string>
					<key>name</key>
					<string>meta.function-call.mql4</string>
				</dict>
				<dict>
					<key>captures</key>
					<dict>
						<key>1</key>
						<dict>
							<key>name</key>
							<string>variable.other.mql4</string>
						</dict>
						<key>2</key>
						<dict>
							<key>name</key>
							<string>punctuation.definition.parameters.mql4</string>
						</dict>
					</dict>
					<key>match</key>
					<string>(?x) (?x) (?: (?: (?= \s ) (?&lt;!else|new|return) (?&lt;=\w)\s+ ) ) ( (?: [A-Za-z_][A-Za-z0-9_]*+ | :: )++ | (?: (?&lt;=operator) (?: [-*&&lt;&gt;=+!]+ | \(\) | \[\] ) )? ) \s*(\()</string>
					<key>name</key>
					<string>meta.initialization.mql4</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#block</string>
				</dict>
				<dict>
					<key>include</key>
					<string>$base</string>
				</dict>
			</array>
		</dict>
		<key>comments</key>
		<dict>
			<key>patterns</key>
			<array>
				<dict>
					<key>captures</key>
					<dict>
						<key>1</key>
						<dict>
							<key>name</key>
							<string>meta.toc-list.banner.block.mql4</string>
						</dict>
					</dict>
					<key>match</key>
					<string>^/\* =(\s*.*?)\s*= \*/$\n?</string>
					<key>name</key>
					<string>comment.block.mql4</string>
				</dict>
				<dict>
					<key>begin</key>
					<string>/\*</string>
					<key>captures</key>
					<dict>
						<key>0</key>
						<dict>
							<key>name</key>
							<string>punctuation.definition.comment.mql4</string>
						</dict>
					</dict>
					<key>end</key>
					<string>\*/</string>
					<key>name</key>
					<string>comment.block.mql4</string>
				</dict>
				<dict>
					<key>match</key>
					<string>\*/.*\n</string>
					<key>name</key>
					<string>invalid.illegal.stray-comment-end.mql4</string>
				</dict>
				<dict>
					<key>captures</key>
					<dict>
						<key>1</key>
						<dict>
							<key>name</key>
							<string>meta.toc-list.banner.line.mql4</string>
						</dict>
					</dict>
					<key>match</key>
					<string>^// =(\s*.*?)\s*=\s*$\n?</string>
					<key>name</key>
					<string>comment.line.banner.mql4</string>
				</dict>
				<dict>
					<key>begin</key>
					<string>//</string>
					<key>beginCaptures</key>
					<dict>
						<key>0</key>
						<dict>
							<key>name</key>
							<string>punctuation.definition.comment.mql4</string>
						</dict>
					</dict>
					<key>end</key>
					<string>$\n?</string>
					<key>name</key>
					<string>comment.line.double-slash.mql4</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>match</key>
							<string>(?&gt;\\\s*\n)</string>
							<key>name</key>
							<string>punctuation.separator.continuation.mql4</string>
						</dict>
					</array>
				</dict>
			</array>
		</dict>
		<key>parens</key>
		<dict>
			<key>begin</key>
			<string>\(</string>
			<key>end</key>
			<string>\)</string>
			<key>name</key>
			<string>meta.parens.mql4</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>$base</string>
				</dict>
			</array>
		</dict>
		<key>string_escaped_char</key>
		<dict>
			<key>patterns</key>
			<array>
				<dict>
					<key>match</key>
					<string>\\(\\|[abefnprtv'"?]|[0-3]\d{,2}|[4-7]\d?|x[a-fA-F0-9]{,2}|u[a-fA-F0-9]{,4}|U[a-fA-F0-9]{,8})</string>
					<key>name</key>
					<string>constant.character.escape.mql4</string>
				</dict>
				<dict>
					<key>match</key>
					<string>\\.</string>
					<key>name</key>
					<string>invalid.illegal.unknown-escape.mql4</string>
				</dict>
			</array>
		</dict>
		<key>string_placeholder</key>
		<dict>
			<key>patterns</key>
			<array>
				<dict>
					<key>match</key>
					<string>(?x)%
                        (?x)% (\d+\$)? 								
                        [#0\- +']* 									
                        [,;:_]? 									
                        ((-?\d+)|\*(-?\d+\$)?)? 					
                        (\.((-?\d+)|\*(-?\d+\$)?)?)? 				
                        (hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)? 		
                        [diouxXDOUeEfFgGaACcSspn%] 					
                    </string>
					<key>name</key>
					<string>constant.other.placeholder.mql4</string>
				</dict>
			</array>
		</dict>
	</dict>
	<key>scopeName</key>
	<string>source.mq4</string>
	<key>uuid</key>
	<string>192620ec-60be-4dc4-99a8-5c59c6000ced</string>
</dict>
</plist>
