<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language SYSTEM "language.dtd">
<language name="Boo" version="1.0" _section="Sources" mimetypes="text/x-boo">

	<escape-char>\</escape-char>

	<string name = "Multiline String" style = "String" end-at-line-end = "false">
		<start-regex>&quot;&quot;&quot;</start-regex>
		<end-regex>&quot;&quot;&quot;</end-regex>
	</string>

	<string name = "Double Quoted String" style = "String" end-at-line-end = "true">
		<start-regex>&quot;</start-regex>
		<end-regex>&quot;</end-regex>
	</string>

	<string name = "Single Quoted String" style = "String" end-at-line-end = "true">
		<start-regex>&apos;</start-regex>
		<end-regex>&apos;</end-regex>
	</string>
	
	<line-comment name = "Line Comment" style= "Comment">
		<start-regex>#</start-regex>
	</line-comment>
	
	<line-comment name = "C Style Line Comment" style = "Comment">
		<start-regex>//</start-regex>
	</line-comment>
	
	<string name = "Regular Expression" style = "String" end-at-line-end = "true">
		<start-regex>/[^/]</start-regex>
		<end-regex>/</end-regex>
	</string>
	
	<block-comment name = "Block Comment" style = "Comment">
		<start-regex>/\*</start-regex>
        <end-regex>\*/</end-regex>
	</block-comment>

	<keyword-list name = "Namespace" style = "Preprocessor" case-sensitive = "true">
		<keyword>import</keyword>
		<keyword>from</keyword>
		<keyword>as</keyword>
		<keyword>namespace</keyword>
	</keyword-list>

	<keyword-list _name = "Primitive" style = "Data Type" case-sensitive = "true">
		<keyword>bool</keyword>
		<keyword>byte</keyword>
		<keyword>sbyte</keyword>
		<keyword>double</keyword>
		<keyword>decimal</keyword>
		<keyword>single</keyword>
		<keyword>short</keyword>
		<keyword>ushort</keyword>
		<keyword>int</keyword>
		<keyword>char</keyword>
		<keyword>uint</keyword>
		<keyword>long</keyword>
		<keyword>ulong</keyword>
		<keyword>object</keyword>
		<keyword>duck</keyword>		
		<keyword>string</keyword>
		<keyword>regex</keyword>
		<keyword>date</keyword>
		<keyword>timespan</keyword>
	</keyword-list>

	<keyword-list name="Definition" style = "Keyword" case-sensitive="true">
		<keyword>abstract</keyword>
		<keyword>virtual</keyword>
		<keyword>override</keyword>
		<keyword>static</keyword>
		<keyword>final</keyword>
		<keyword>transient</keyword>
		
		<keyword>protected</keyword>
		<keyword>private</keyword>
		<keyword>public</keyword>
		<keyword>internal</keyword>
		<keyword>partial</keyword>
		
		<keyword>class</keyword>
		<keyword>struct</keyword>
		<keyword>interface</keyword>
		<keyword>enum</keyword>
		<keyword>callable</keyword>
		<keyword>of</keyword>
		
		<keyword>def</keyword>
		<keyword>constructor</keyword>
		<keyword>destructor</keyword>
		
		<keyword>do</keyword>
		<keyword>get</keyword>
		<keyword>set</keyword>
		<keyword>event</keyword>
		
		<keyword>return</keyword>
		<keyword>yield</keyword>
	</keyword-list>
	
	<pattern-item _name = "Number" style = "Decimal">
		<regex>\b[0-9][0-9\.]*(m|ms|d|h|s|f|F|l|L)?\b</regex>
	</pattern-item>

	<keyword-list _name = "Boolean" style = "Decimal" case-sensitive="true">
		<keyword>true</keyword>
		<keyword>false</keyword>
	</keyword-list>
	
	<keyword-list _name = "Literals" style="Keyword" case-sensitive="true">	
		<keyword>null</keyword>		
		<keyword>self</keyword>
		<keyword>super</keyword>
	</keyword-list>

	<keyword-list _name = "Keywords" style = "Keyword" case-sensitive="true">
		<keyword>and</keyword>
		<keyword>break</keyword>
		<keyword>cast</keyword>
		<keyword>continue</keyword>
		<keyword>elif</keyword>
		<keyword>else</keyword>
		<keyword>except</keyword>
		<keyword>ensure</keyword>
		<keyword>for</keyword>
		<keyword>given</keyword>
		<keyword>goto</keyword>
		<keyword>if</keyword>
		<keyword>in</keyword>
		<keyword>is</keyword>
		<keyword>isa</keyword>
		<keyword>not</keyword>
		<keyword>or</keyword>
		<keyword>otherwise</keyword>
		<keyword>pass</keyword>
		<keyword>raise</keyword>
		<keyword>try</keyword>
		<keyword>unless</keyword>
		<keyword>when</keyword>
		<keyword>while</keyword>
		<keyword>ref</keyword>
	</keyword-list>

	<keyword-list name = "Builtins" style = "Others" case-sensitive="true">
		<keyword>assert</keyword>
		<keyword>__eval__</keyword>
		<keyword>__switch__</keyword>
		<keyword>enumerate</keyword>
		<keyword>filter</keyword>
		<keyword>len</keyword>
		<keyword>typeof</keyword>
		<keyword>map</keyword>
		<keyword>max</keyword>
		<keyword>min</keyword>
		<keyword>property</keyword>
		<keyword>using</keyword>
		<keyword>getter</keyword>
		<keyword>required</keyword>
		<keyword>lock</keyword>
		<keyword>range</keyword>
		<keyword>zip</keyword>
		<keyword>checked</keyword>
		<keyword>unchecked</keyword>
		<keyword>rawArrayIndexing</keyword>
		<keyword>normalArrayIndexing</keyword>
		<keyword>print</keyword>
		<keyword>array</keyword>
		<keyword>matrix</keyword>
		<keyword>yieldAll</keyword>
	</keyword-list>
</language>
