<?xml version="1.0"?>

<SyntaxDefinition name="Boo" extensions=".boo">

	<Environment>
		<Default bold="false" italic="false" color="SystemColors.WindowText" bgcolor="SystemColors.Window" />
		<Selection bold="false" italic="false" color="SystemColors.HighlightText" bgcolor="SystemColors.Highlight" />
		<VRuler bold="false" italic="false" color="SystemColors.ControlLight" />
		<InvalidLines bold="false" italic="false" color="Red" />
		<CaretMarker bold="false" italic="false" color="Yellow" />
		<LineNumbers bold="false" italic="false" color="SystemColors.ControlDark" bgcolor="SystemColors.Window" />
		<FoldLine bold="false" italic="false" color="Gray" bgcolor="Black" />
		<FoldMarker bold="false" italic="false" color="Gray" bgcolor="White" />
		<EOLMarkers bold="false" italic="false" color="#E0E0E5" />
		<SpaceMarkers bold="false" italic="false" color="#E0E0E5" />
		<TabMarkers bold="false" italic="false" color="#E0E0E5" />
	</Environment>

	<Properties>
		<Property name="LineComment" value="#"/>
	</Properties>

	<Digits name="Digits" bold="false" italic="false" color="DarkBlue" />

	<RuleSets>
		<RuleSet ignorecase="false" >
			<Delimiters>&amp;&lt;&gt;~!@$%^*()-+=|\#/{}[]:;"' ,	.?</Delimiters>

			<Span name="DocLineComment" noescapesequences="true" stopateol="false" bold="false" italic="false" color="Green">
				<Begin >"""</Begin>
				<End >"""</End>
			</Span>

			<Span name="LineComment" stopateol="true" bold="false" italic="false" color="Gray" >
				<Begin >#</Begin>
			</Span>

			<Span name="LineComment2" stopateol="true" bold="false" italic="false" color="#999999" >
				<Begin >//</Begin>
			</Span>

			<Span name="BlockComment" rule="comments set" stopateol="false" bold="false" italic="false" color="Green" >
				<Begin >/*</Begin>
				<End >*/</End>
			</Span>

			<Span name="String" rule="str formatting" stopateol="true" bold="false" italic="false" color="Blue" >
				<Begin >"</Begin>
				<End >"</End>
			</Span>

			<Span name="MultiLineString" noescapesequences="true" rule="str formatting" stopateol="false" bold="false" italic="false" color="Blue" >
				<Begin >"""</Begin>
				<End >"""</End>
			</Span>

			<Span name="Char" stopateol="true" bold="false" italic="false" color="Blue" >
				<Begin >'</Begin>
				<End >'</End>
			</Span>

			<Span name="MultiLineRegEx" stopateol="false" bold="false" italic="false" color="#FF6600">
				<Begin>@@/</Begin>
				<End>/</End>
			</Span>
			
			<Span name="RegEx" stopateol="true" bold="false" italic="false" color="#FF6600">
				<Begin>/@! @@!/@</Begin>
				<End>/</End>
			</Span>

			<MarkPrevious bold="false" italic="false" color="MidnightBlue" >(</MarkPrevious>

			<KeyWords name="Punctuation" bold="false" italic="false" color="DarkGreen" >
				<Key word="?"/>
				<Key word=","/>
				<Key word="."/>
				<Key word=";"/>
				<Key word="("/>
				<Key word=")"/>
				<Key word="["/>
				<Key word="]"/>
				<Key word="{"/>
				<Key word="}"/>
				<Key word="+"/>
				<Key word="-"/>
				<Key word="/"/>
				<Key word="%"/>
				<Key word="*"/>
				<Key word="&lt;"/>
				<Key word="&gt;"/>
				<Key word="^"/>
				<Key word="="/>
				<Key word="~"/>
				<Key word="!"/>
				<Key word="|"/>
				<Key word="&amp;"/>
			</KeyWords>

			<KeyWords name="AccessKeywords" bold="true" italic="false" color="Black" >
				<Key word="self"/>
				<Key word="super"/>
			</KeyWords>

			<KeyWords name="OperatorKeywords" bold="true" italic="false" color="DarkCyan" >
				<Key word="is"/>
				<Key word="isa"/>
				<Key word="and"/>
				<Key word="or"/>
				<Key word="not"/>
			</KeyWords>

			<KeyWords name="SelectionStatements" bold="true" italic="false" color="Blue" >
				<Key word="else"/>
				<Key word="elif"/>
				<Key word="if"/>
				<Key word="given"/>
				<Key word="when"/>
				<Key word="unless"/>
				<Key word="otherwise"/>
			</KeyWords>

			<KeyWords name="IterationStatements" bold="true" italic="false" color="Blue" >
				<Key word="for"/>
				<Key word="in"/>
				<Key word="while"/>
			</KeyWords>

			<KeyWords name="JumpStatements" bold="false" italic="false" color="Navy" >
				<Key word="break"/>
				<Key word="continue"/>
				<Key word="return"/>
				<Key word="yield"/>
				<Key word="goto" />
			</KeyWords>

			<KeyWords name="ExceptionHandlingStatements" bold="true" italic="false" color="Teal" >
				<Key word="try"/>
				<Key word="raise"/>
				<Key word="ensure"/>
				<Key word="except"/>
				<Key word="retry"/>
				<Key word="success"/>
			</KeyWords>

			<KeyWords name="CheckedUncheckedStatements" bold="true" italic="false" color="DarkGray" >
				<Key word="checked"/>
				<Key word="unchecked"/>
			</KeyWords>

			<KeyWords name="UnsafeFixedStatements" bold="false" italic="false" color="Olive" >
				<Key word="fixed"/>
				<Key word="unsafe"/>
			</KeyWords>

			<KeyWords name="ValueTypes" bold="true" italic="false" color="Purple" >
				<Key word="bool"/>
				<Key word="double"/>
				<Key word="single"/>
				<Key word="byte"/>
				<Key word="sbyte"/>
				<Key word="short"/>
				<Key word="ushort"/>
				<Key word="int"/>
				<Key word="uint"/>
				<Key word="long"/>
				<Key word="ulong"/>
				<Key word="date"/>
				<Key word="timespan" />
				<Key word="decimal" />
				<Key word="char" />
			</KeyWords>

			<KeyWords name="ReferenceTypes" bold="true" italic="false" color="Purple" >
				<Key word="object"/>
				<Key word="string"/>
				<Key word="regex"/>
			</KeyWords>

			<KeyWords name="Void" bold="false" italic="false" color="Red" >
				<Key word="void"/>
			</KeyWords>

			<KeyWords name="ConversionKeyWords" bold="true" italic="false" color="Blue" >
				<Key word="cast"/>
				<Key word="as"/>
			</KeyWords>

			<KeyWords name="Modifiers" bold="false" italic="false" color="Brown" >
				<Key word="override"/>
				<Key word="static"/>
				<Key word="virtual"/>
				<Key word="abstract"/>
				<Key word="final"/>
				<Key word="transient"/>
				<Key word="partial"/>
			</KeyWords>

			<KeyWords name="AccessModifiers" bold="true" italic="false" color="Blue" >
				<Key word="public"/>
				<Key word="protected"/>
				<Key word="private"/>
				<Key word="internal"/>
			</KeyWords>

			<KeyWords name="NameSpaces" bold="true" italic="false" color="Green" >
				<Key word="namespace"/>
				<Key word="import"/>
				<Key word="from"/>
			</KeyWords>

			<KeyWords name="GetSet" bold="false" italic="false" color="SaddleBrown" >
				<Key word="get"/>
				<Key word="set"/>
			</KeyWords>

			<KeyWords name="Literals" bold="true" italic="false" color="Black" >
				<Key word="null"/>
				<Key word="value"/>
				<Key word="true"/>
				<Key word="false"/>
				<Key word="ast" />
			</KeyWords>

			<KeyWords name="DefaultMacros" bold="false" italic="false" color="Maroon" >
				<Key word="using"/>
				<Key word="unchecked"/>
				<Key word="checked"/>
				<Key word="lock"/>
				<Key word="getter"/>
				<Key word="required"/>
				<Key word="rawArrayIndexing"/>
				<Key word="normalArrayIndexing"/>
				<Key word="yieldAll" />
			</KeyWords>

			<KeyWords name="Builtins" bold="false" italic="false" color="Purple" >
				<Key word="assert"/>
				<Key word="array"/>
				<Key word="matrix" />
				<Key word="print"/>
				<Key word="gets"/>
				<Key word="prompt"/>
				<Key word="enumerate"/>
				<Key word="zip"/>
				<Key word="filter"/>
				<Key word="map"/>
				<Key word="cat"/>
				<Key word="__eval__" />
				<Key word="__switch__" />
			</KeyWords>

			<KeyWords name="Methods" bold="true" italic="false" color="Blue" >
				<Key word="constructor"/>
				<Key word="destructor"/>
				<Key word="def"/>
				<Key word="include"/>
				<Key word="event" />
				<Key word="ref"/>
			</KeyWords>

			<KeyWords name="Pass" bold="false" italic="false" color="Gray" >
				<Key word="pass"/>
			</KeyWords>

			<KeyWords name="TypesDef" bold="true" italic="false" color="Blue" >
				<Key word="enum"/>
				<Key word="class"/>
				<Key word="struct" />
				<Key word="interface"/>
				<Key word="mixin"/>
				<Key word="callable"/>
				<Key word="do" />
				<Key word="of" />
			</KeyWords>

		</RuleSet>

		<RuleSet ignorecase="false" name="comments set" >
			<Delimiters>&amp;&lt;&gt;~!@%^*()-+=|\#/{}[]:;"' ,	.?</Delimiters>

			<Span name="BlockComment" rule="comment set 2" stopateol="false" bold="false" italic="false" color="#339966" >
				<Begin >/*</Begin>
				<End >*/</End>
			</Span>

		</RuleSet>

		<RuleSet ignorecase="false" name="comment set 2" >
			<Delimiters>&amp;&lt;&gt;~!@%^*()-+=|\#/{}[]:;"' ,	.?</Delimiters>

			<Span name="BlockComment" rule="comments set" stopateol="false" bold="false" italic="false" color="Teal" >
				<Begin >/*</Begin>
				<End >*/</End>
			</Span>

		</RuleSet>

		<RuleSet ignorecase="false" name="str formatting" >
			<Delimiters>&amp;&lt;&gt;~!@%^*()-+=|\#/{}[]:;"' ,	.?</Delimiters>

			<Span name="Formatting" stopateol="false" bold="false" italic="false" color="#993366" >
				<Begin >${</Begin>
				<End >}</End>
			</Span>

		</RuleSet>

	</RuleSets>

</SyntaxDefinition>

