<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language SYSTEM "language.dtd">
<!-- FIXME: find the correct mimetype -->
<language _name="MSIL" version="1.0" _section="Others" mimetypes="text/x-msil">

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

	<!-- // C++ Line Comment -->
        <line-comment name="C++ Line Comment" style="Comment">
                <start-regex>//</start-regex>
        </line-comment>

	<!-- /* C Block Comment */ -->
	<block-comment name="C Block Comment" style="Comment">
		<start-regex>/\*</start-regex>
        	<end-regex>\*/</end-regex>
	</block-comment>

	<!-- "double-quoted strings" -->
	<string name="String" style="String" end-at-line-end="FALSE">
		<start-regex>&quot;</start-regex>
		<end-regex>&quot;</end-regex>
	</string>

	<!-- 'single-quoted strings' -->
	<string name="String 2" style="String" end-at-line-end="FALSE">
		<start-regex>&apos;</start-regex>
		<end-regex>&apos;</end-regex>
	</string>

	<!-- MSIL Reserved Words - Group #1-->
	<keyword-list name="Reserved Words - Group #1" style="Others" case-sensitive="TRUE">
		<keyword>abstract</keyword>
		<keyword>Action</keyword>
		<keyword>Add</keyword>
		<keyword>add_CollectionChanged</keyword>
		<keyword>Add_TableRow</keyword>
		<keyword>addon</keyword>
		<keyword>AddRange</keyword>
		<keyword>algorithm</keyword>
		<keyword>alignment</keyword>
		<keyword>ansi</keyword>
		<keyword>App</keyword>
		<keyword>args</keyword>
		<keyword>as</keyword>
		<keyword>assembly</keyword>
		<keyword>assert</keyword>
		<keyword>at</keyword>
		<keyword>AtEnd</keyword>
		<keyword>auto</keyword>
		<keyword>base</keyword>
		<keyword>beforefieldinit</keyword>
		<keyword>BeginInvoke</keyword>
		<keyword>bool</keyword>
		<keyword>break</keyword>
		<keyword>buffer</keyword>
		<keyword>byte</keyword>
		<keyword>bytearray</keyword>
		<keyword>case</keyword>
		<keyword>catch</keyword>
		<keyword>cctor</keyword>
		<keyword>char</keyword>
		<keyword>checked</keyword>
		<keyword>cil</keyword>
		<keyword>class</keyword>
		<keyword>Clone</keyword>
		<keyword>Close</keyword>
		<keyword>columnExpr1</keyword>
		<keyword>components</keyword>
		<keyword>const</keyword>
		<keyword>continue</keyword>
		<keyword>corflags</keyword>
		<keyword>CreateInstance</keyword>
		<keyword>ctor</keyword>
		<keyword>Current</keyword>
		<keyword>custom</keyword>
		<keyword>data</keyword>
		<keyword>DBNull</keyword>
		<keyword>decimal</keyword>
		<keyword>default</keyword>
		<keyword>delegate</keyword>
		<keyword>Dispose</keyword>
		<keyword>disposing</keyword>
		<keyword>do</keyword>
		<keyword>double</keyword>
		<keyword>else</keyword>
		<keyword>End</keyword>
		<keyword>EndInvoke</keyword>
		<keyword>entrypoint</keyword>
		<keyword>enum</keyword>
		<keyword>Equals</keyword>
		<keyword>ErrorLength</keyword>
		<keyword>ErrorLocation</keyword>
		<keyword>event</keyword>
		<keyword>eventAction</keyword>
		<keyword>eventRow</keyword>
		<keyword>explicit</keyword>
		<keyword>Expr1Column</keyword>
		<keyword>extends</keyword>
		<keyword>extern</keyword>
		<keyword>false</keyword>
		<keyword>family</keyword>
		<keyword>field</keyword>
		<keyword>file</keyword>
		<keyword>FilterAdapter</keyword>
		<keyword>final</keyword>
		<keyword>Finalize</keyword>
		<keyword>finally</keyword>
		<keyword>Find</keyword>
		<keyword>FindByID</keyword>
		<keyword>fixed</keyword>
		<keyword>float</keyword>
		<keyword>float32</keyword>
		<keyword>float64</keyword>
		<keyword>for</keyword>
		<keyword>foreach</keyword>
		<keyword>FromArgb</keyword>
		<keyword>get</keyword>
		<keyword>get_Action</keyword>
		<keyword>get_AtEnd</keyword>
		<keyword>get_CaseSensitive</keyword>
		<keyword>get_Columns</keyword>
		<keyword>get_Constraints</keyword>
		<keyword>get_Controls</keyword>
		<keyword>get_Count</keyword>
		<keyword>get_Current</keyword>
		<keyword>get_DataSet</keyword>
		<keyword>get_DataSetName</keyword>
		<keyword>get_DataType</keyword>
		<keyword>get_DisplayExpression</keyword>
		<keyword>get_End</keyword>
		<keyword>get_EnforceConstraints</keyword>
		<keyword>get_ErrorLength</keyword>
		<keyword>get_ErrorLocation</keyword>
		<keyword>get_Expr1</keyword>
		<keyword>get_Expr1Column</keyword>
		<keyword>get_Item</keyword>
		<keyword>get_Length</keyword>
		<keyword>get_Locale</keyword>
		<keyword>get_MinimumCapacity</keyword>
		<keyword>get_Namespace</keyword>
		<keyword>get_Offset</keyword>
		<keyword>get_Parameters</keyword>
		<keyword>get_Prefix</keyword>
		<keyword>get_RegexOptions</keyword>
		<keyword>get_Relations</keyword>
		<keyword>get_Row</keyword>
		<keyword>get_Rows</keyword>
		<keyword>get_SelectCommand</keyword>
		<keyword>get_Special</keyword>
		<keyword>get_Start</keyword>
		<keyword>get_String</keyword>
		<keyword>get_StringValue</keyword>
		<keyword>get_Table</keyword>
		<keyword>get_TableMappings</keyword>
		<keyword>get_TableName</keyword>
		<keyword>get_Tables</keyword>
		<keyword>get_Text</keyword>
		<keyword>GetEnumerator</keyword>
		<keyword>GetHashCode</keyword>
		<keyword>GetObject</keyword>
		<keyword>GetRowType</keyword>
		<keyword>GetSchemaSerializable</keyword>
		<keyword>GetSerializationData</keyword>
		<keyword>GetTypeFromHandle</keyword>
		<keyword>GetValue</keyword>
		<keyword>goto</keyword>
		<keyword>hash</keyword>
		<keyword>hidebysig</keyword>
		<keyword>if</keyword>
		<keyword>imagebase</keyword>
		<keyword>implements</keyword>
		<keyword>implicit</keyword>
		<keyword>import</keyword>
		<keyword>in</keyword>
		<keyword>info</keyword>
		<keyword>init</keyword>
		<keyword>InitClass</keyword>
		<keyword>InitializeComponent</keyword>
		<keyword>InitVars</keyword>
		<keyword>InRange</keyword>
		<keyword>instance</keyword>
		<keyword>int</keyword>
		<keyword>int16</keyword>
		<keyword>int32</keyword>
		<keyword>int64</keyword>
		<keyword>int8</keyword>
		<keyword>interface</keyword>
		<keyword>internal</keyword>
		<keyword>internalcall</keyword>
		<keyword>Invoke</keyword>
		<keyword>is</keyword>
		<keyword>IsExpr1Null</keyword>
		<keyword>IsNull</keyword>
		<keyword>Item</keyword>
		<keyword>lasterr</keyword>
		<keyword>Length</keyword>
		<keyword>literal</keyword>
		<keyword>locals</keyword>
		<keyword>lock</keyword>
		<keyword>long</keyword>
		<keyword>Main</keyword>
		<keyword>managed</keyword>
		<keyword>marshal</keyword>
		<keyword>maxstack</keyword>
		<keyword>Merge</keyword>
		<keyword>method</keyword>
		<keyword>module</keyword>
		<keyword>MoveNext</keyword>
		<keyword>mresource</keyword>
		<keyword>mscorlib</keyword>
		<keyword>namespace</keyword>
		<keyword>native</keyword>
		<keyword>nested</keyword>
		<keyword>new</keyword>
		<keyword>New_TableRow</keyword>
		<keyword>NewRow</keyword>
		<keyword>NewRowFromBuilder</keyword>
		<keyword>newslot</keyword>
		<keyword>null</keyword>
		<keyword>object</keyword>
		<keyword>Offset</keyword>
		<keyword>OnClick</keyword>
		<keyword>OnLeave</keyword>
		<keyword>OnLostFocus</keyword>
		<keyword>OnMouseLeave</keyword>
		<keyword>OnMouseMove</keyword>
		<keyword>OnPaint</keyword>
		<keyword>OnRowChanged</keyword>
		<keyword>OnRowChanging</keyword>
		<keyword>OnRowDeleted</keyword>
		<keyword>OnRowDeleting</keyword>
	</keyword-list>

	<!-- MSIL Reserved Words - Group #2-->
	<keyword-list name="Reserved Words - Group #2" style="Others" case-sensitive="TRUE">
		<keyword>op_Addition</keyword>
		<keyword>op_BitwiseAnd</keyword>
		<keyword>op_BitwiseOr</keyword>
		<keyword>op_Division</keyword>
		<keyword>op_Equality</keyword>
		<keyword>op_ExclusiveOr</keyword>
		<keyword>op_Explicit</keyword>
		<keyword>op_False</keyword>
		<keyword>op_Implicit</keyword>
		<keyword>op_Inequality</keyword>
		<keyword>op_LeftShift</keyword>
		<keyword>op_LogicalNot</keyword>
		<keyword>op_Modulus</keyword>
		<keyword>op_Multiply</keyword>
		<keyword>op_RightShift</keyword>
		<keyword>op_Subtraction</keyword>
		<keyword>op_True</keyword>
		<keyword>Open</keyword>
		<keyword>operator</keyword>
		<keyword>out</keyword>
		<keyword>override</keyword>
		<keyword>pack</keyword>
		<keyword>param</keyword>
		<keyword>params</keyword>
		<keyword>Parse</keyword>
		<keyword>permissionset</keyword>
		<keyword>pinned</keyword>
		<keyword>pinvokeimpl</keyword>
		<keyword>preservesig</keyword>
		<keyword>private</keyword>
		<keyword>property</keyword>
		<keyword>protected</keyword>
		<keyword>public</keyword>
		<keyword>publickeytoken</keyword>
		<keyword>Read</keyword>
		<keyword>readonly</keyword>
		<keyword>ReadXml</keyword>
		<keyword>ReadXmlSerializable</keyword>
		<keyword>RecordInfo</keyword>
		<keyword>ref</keyword>
		<keyword>RegexOptions</keyword>
		<keyword>Remove</keyword>
		<keyword>remove_Changed</keyword>
		<keyword>Remove_TableRow</keyword>
		<keyword>removeon</keyword>
		<keyword>reqmin</keyword>
		<keyword>Reset</keyword>
		<keyword>return</keyword>
		<keyword>row</keyword>
		<keyword>Row</keyword>
		<keyword>rtspecialname</keyword>
		<keyword>runtime</keyword>
		<keyword>sbyte</keyword>
		<keyword>SchemaChanged</keyword>
		<keyword>sealed</keyword>
		<keyword>sequential</keyword>
		<keyword>serializable</keyword>
		<keyword>set</keyword>
		<keyword>set_CaseSensitive</keyword>
		<keyword>set_CommandText</keyword>
		<keyword>set_Connection</keyword>
		<keyword>set_DataSetName</keyword>
		<keyword>set_DeleteCommand</keyword>
		<keyword>set_DisplayExpression</keyword>
		<keyword>set_EnforceConstraints</keyword>
		<keyword>set_ErrorLength</keyword>
		<keyword>set_ErrorLocation</keyword>
		<keyword>set_Expr1</keyword>
		<keyword>set_InsertCommand</keyword>
		<keyword>set_Item</keyword>
		<keyword>set_ItemArray</keyword>
		<keyword>set_Length</keyword>
		<keyword>set_Locale</keyword>
		<keyword>set_MinimumCapacity</keyword>
		<keyword>set_Namespace</keyword>
		<keyword>set_Offset</keyword>
		<keyword>set_Position</keyword>
		<keyword>set_Prefix</keyword>
		<keyword>set_RegexOptions</keyword>
		<keyword>set_SelectCommand</keyword>
		<keyword>set_StringValue</keyword>
		<keyword>set_UpdateCommand</keyword>
		<keyword>set_Value</keyword>
		<keyword>SetExpr1Null</keyword>
		<keyword>short</keyword>
		<keyword>ShouldSerialize_Table</keyword>
		<keyword>ShouldSerializeRelations</keyword>
		<keyword>ShouldSerializeTables</keyword>
		<keyword>size</keyword>
		<keyword>sizeof</keyword>
		<keyword>Special</keyword>
		<keyword>specialname</keyword>
		<keyword>stackalloc</keyword>
		<keyword>Start</keyword>
		<keyword>static</keyword>
		<keyword>string</keyword>
		<keyword>String</keyword>
		<keyword>StringValue</keyword>
		<keyword>struct</keyword>
		<keyword>Substring</keyword>
		<keyword>subsystem</keyword>
		<keyword>synchronized</keyword>
		<keyword>sysstring</keyword>
		<keyword>table_Table</keyword>
		<keyword>this</keyword>
		<keyword>ToString</keyword>
		<keyword>true</keyword>
		<keyword>try</keyword>
		<keyword>typeof</keyword>
                <keyword>uint</keyword>
                <keyword>ulong</keyword>
                <keyword>unchecked</keyword>
                <keyword>unsafe</keyword>
                <keyword>unsigned</keyword>
                <keyword>ushort</keyword>
                <keyword>using</keyword>
                <keyword>valuetype</keyword>
                <keyword>ver</keyword>
                <keyword>virtual</keyword>
                <keyword>void</keyword>
                <keyword>volatile</keyword>
                <keyword>while</keyword>
                <keyword>winapi</keyword>
                <keyword>WriteXmlSchema</keyword>
	</keyword-list>

	<!-- MSIL OpCodes -->
	<keyword-list name="OpCodes" style="Keyword" case-sensitive="TRUE">
		<keyword>add</keyword>
		<keyword>and</keyword>
		<keyword>arglist</keyword>
		<keyword>beq</keyword>
		<keyword>bge</keyword>
		<keyword>bgt</keyword>
		<keyword>ble</keyword>
		<keyword>blt</keyword>
		<keyword>bne</keyword>
		<keyword>box</keyword>
		<keyword>br</keyword>
		<keyword>break</keyword>
		<keyword>brfalse</keyword>
		<keyword>brtrue</keyword>
		<keyword>call</keyword>
		<keyword>calli</keyword>
		<keyword>callvirt</keyword>
		<keyword>castclass</keyword>
		<keyword>ceq</keyword>
		<keyword>cgt</keyword>
		<keyword>ckfinite</keyword>
		<keyword>clt</keyword>
		<keyword>cpblk</keyword>
		<keyword>cpobj</keyword>
		<keyword>conv</keyword>
		<keyword>div</keyword>
		<keyword>dup</keyword>
		<keyword>endfilter</keyword>
		<keyword>endfinally</keyword>
		<keyword>i</keyword>
		<keyword>i1</keyword>
		<keyword>i2</keyword>
		<keyword>i4</keyword>
		<keyword>i8</keyword>
		<keyword>initblk</keyword>
		<keyword>initobj</keyword>
		<keyword>isinst</keyword>
		<keyword>jmp</keyword>
		<keyword>ldarg</keyword>
		<keyword>ldarga</keyword>
		<keyword>ldc</keyword>
		<keyword>ldelem</keyword>
		<keyword>ldelema</keyword>
		<keyword>ldfld</keyword>
		<keyword>ldflda</keyword>
		<keyword>ldftn</keyword>
		<keyword>ldind</keyword>
		<keyword>ldlen</keyword>
		<keyword>ldloc</keyword>
		<keyword>ldloca</keyword>
		<keyword>ldnull</keyword>
		<keyword>ldobj</keyword>
		<keyword>ldsfld</keyword>
		<keyword>ldsflda</keyword>
		<keyword>ldstr</keyword>
		<keyword>ldtoken</keyword>
		<keyword>ldvirtftn</keyword>
		<keyword>leave</keyword>
		<keyword>localloc</keyword>
		<keyword>m1</keyword>
		<keyword>mkrefany</keyword>
		<keyword>mul</keyword>
		<keyword>neg</keyword>
		<keyword>newarr</keyword>
		<keyword>newobj</keyword>
		<keyword>nop</keyword>
		<keyword>not</keyword>
		<keyword>or</keyword>
		<keyword>ovf</keyword>
		<keyword>pop</keyword>
		<keyword>r4</keyword>
		<keyword>r8</keyword>
		<keyword>ref</keyword>
		<keyword>refanytype</keyword>
		<keyword>refanyval</keyword>
		<keyword>rem</keyword>
		<keyword>ret</keyword>
		<keyword>rethrow</keyword>
		<keyword>s</keyword>
		<keyword>shl</keyword>
		<keyword>shr</keyword>
		<keyword>sizeof</keyword>
		<keyword>starg</keyword>
		<keyword>stelem</keyword>
		<keyword>stfld</keyword>
		<keyword>stind</keyword>
		<keyword>stloc</keyword>
		<keyword>stobj</keyword>
		<keyword>stsfld</keyword>
		<keyword>sub</keyword>
		<keyword>switch</keyword>
		<keyword>tail</keyword>
		<keyword>throw</keyword>
		<keyword>u</keyword>
		<keyword>u1</keyword>
		<keyword>u2</keyword>
		<keyword>u4</keyword>
		<keyword>u8</keyword>
		<keyword>un</keyword>
		<keyword>unaligned</keyword>
		<keyword>unbox</keyword>
		<keyword>volatile</keyword>
		<keyword>xor</keyword>
	</keyword-list>

</language>