Click here to Skip to main content
15,886,760 members
Articles / Operating Systems / Windows

Sandcastle Help File Builder

Rate me:
Please Sign up or sign in to vote.
4.93/5 (131 votes)
17 May 2007Ms-PL45 min read 999.4K   5.3K   291  
A GUI for creating projects to build help files with Sandcastle and a console mode tool to build them as well.
<?xml version="1.0" encoding="ISO-8859-1" ?>
<highlight needs-build="yes" save-build="no">
	<!-- families of keywords -->
	<keywordlists>
		<!-- Common C-like language keywords (C, C++, C#) -->
		<keywordlist id="kwclang-keywords">
			<kw>break</kw>
			<kw>case</kw>
			<kw>char</kw>
			<kw>const</kw>
			<kw>continue</kw>
			<kw>default</kw>
			<kw>do</kw>
			<kw>double</kw>
			<kw>else</kw>
			<kw>enum</kw>
			<kw>extern</kw>
			<kw>float</kw>
			<kw>for</kw>
			<kw>goto</kw>
			<kw>if</kw>
			<kw>int</kw>
			<kw>long</kw>
			<kw>return</kw>
			<kw>short</kw>
			<kw>sizeof</kw>
			<kw>static</kw>
			<kw>struct</kw>
			<kw>switch</kw>
			<kw>void</kw>
			<kw>volatile</kw>
			<kw>while</kw>
		</keywordlist>
		<!-- Common C++-like object oriented language keywords (C++, C#) -->
		<keywordlist id="kwclangoo-keywords">
			<kw>bool</kw>
			<kw>catch</kw>
			<kw>class</kw>
			<kw>explicit</kw>
			<kw>false</kw>
			<kw>namespace</kw>
			<kw>new</kw>
			<kw>operator</kw>
			<kw>private</kw>
			<kw>protected</kw>
			<kw>public</kw>
			<kw>this</kw>
			<kw>throw</kw>
			<kw>true</kw>
			<kw>try</kw>
			<kw>using</kw>
			<kw>virtual</kw>
		</keywordlist>
		<!-- C keywords -->
		<keywordlist id="kwc-keywords">
			<kw>auto</kw>
			<kw>register</kw>
			<kw>signed</kw>
			<kw>typedef</kw>
			<kw>union</kw>
			<kw>unsigned</kw>
		</keywordlist>
		<!-- C++ keywords -->
		<keywordlist id="kwcpp-keywords">
			<kw>asm</kw>
			<kw>const_cast</kw>
			<kw>delete</kw>
			<kw>dynamic_cast</kw>
			<kw>friend</kw>
			<kw>inline</kw>
			<kw>mutable</kw>
			<kw>reinterpret_cast</kw>
			<kw>static_cast</kw>
			<kw>template</kw>
			<kw>typeid</kw>
			<kw>typename</kw>
			<kw>wchar_t</kw>
		</keywordlist>
		<!-- STL keywords -->
		<keywordlist id="kwcpp-stl" pre="(std\s*::\s*){0,1}">
			<kw>vector</kw>
			<kw>set</kw>
			<kw>map</kw>
			<kw>list</kw>
			<kw>stack</kw>
			<kw>deque</kw>
			<kw>multimap</kw>
			<kw>multiset</kw>
		</keywordlist>
		<!-- C# keywords -->
		<keywordlist id="kwcs-keywords">
			<kw>abstract</kw>
			<kw>as</kw>
			<kw>base</kw>
			<kw>byte</kw>
			<kw>checked</kw>
			<kw>decimal</kw>
			<kw>delegate</kw>
			<kw>event</kw>
			<kw>finally</kw>
			<kw>fixed</kw>
			<kw>foreach</kw>
			<kw>implicit</kw>
			<kw>in</kw>
			<kw>interface</kw>
			<kw>internal</kw>
			<kw>is</kw>
			<kw>lock</kw>
			<kw>null</kw>
			<kw>object</kw>
			<kw>out</kw>
			<kw>override</kw>
			<kw>params</kw>
			<kw>partial</kw>
			<kw>readonly</kw>
			<kw>ref</kw>
			<kw>sbyte</kw>
			<kw>sealed</kw>
			<kw>stackalloc</kw>
			<kw>string</kw>
			<kw>typeof</kw>
			<kw>uint</kw>
			<kw>ulong</kw>
			<kw>unchecked</kw>
			<kw>unsafe</kw>
			<kw>ushort</kw>
		</keywordlist>
		<!-- Common VB-like language keywords (VB.NET, VBScript) -->
		<keywordlist id="kwvblang-keywords">
			<kw>And</kw>
			<kw>CBool</kw>
			<kw>CByte</kw>
			<kw>CDate</kw>
			<kw>CDbl</kw>
			<kw>CInt</kw>
			<kw>CLng</kw>
			<kw>CSng</kw>
			<kw>CStr</kw>
			<kw>Call</kw>
			<kw>Case</kw>
			<kw>Class</kw>
			<kw>Const</kw>
			<kw>Date</kw>
			<kw>Dim</kw>
			<kw>Do</kw>
			<kw>Each</kw>
			<kw>Else</kw>
			<kw>End</kw>
			<kw>Erase</kw>
			<kw>Error</kw>
			<kw>Exit</kw>
			<kw>False</kw>
			<kw>For</kw>
			<kw>Function</kw>
			<kw>Get</kw>
			<kw>If</kw>
			<kw>Is</kw>
			<kw>Loop</kw>
			<kw>Mod</kw>
			<kw>Next</kw>
			<kw>Not</kw>
			<kw>Nothing</kw>
			<kw>On</kw>
			<kw>Option</kw>
			<kw>Or</kw>
			<kw>Private</kw>
			<kw>Property</kw>
			<kw>Public</kw>
			<kw>ReDim</kw>
			<kw>Resume</kw>
			<kw>Select</kw>
			<kw>Set</kw>
			<kw>Step</kw>
			<kw>Stop</kw>
			<kw>String</kw>
			<kw>Sub</kw>
			<kw>Then</kw>
			<kw>To</kw>
			<kw>True</kw>
			<kw>While</kw>
			<kw>With</kw>
			<kw>Xor</kw>
		</keywordlist>
		<!-- VB.NET language keywords -->
		<keywordlist id="kwvbnet-keywords">
			<kw>AddHandler</kw>
			<kw>AddressOf</kw>
			<kw>Alias</kw>
			<kw>AndAlso</kw>
			<kw>As</kw>
			<kw>Boolean</kw>
			<kw>ByRef</kw>
			<kw>ByVal</kw>
			<kw>Byte</kw>
			<kw>CChar</kw>
			<kw>CDec</kw>
			<kw>CObj</kw>
			<kw>CSByte</kw>
			<kw>CShort</kw>
			<kw>CType</kw>
			<kw>CUInt</kw>
			<kw>CULng</kw>
			<kw>CUShort</kw>
			<kw>Catch</kw>
			<kw>Char</kw>
			<kw>Continue</kw>
			<kw>Decimal</kw>
			<kw>Declare</kw>
			<kw>Default</kw>
			<kw>Delegate</kw>
			<kw>DirectCast</kw>
			<kw>Double</kw>
			<kw>ElseIf</kw>
			<kw>Enum</kw>
			<kw>Event</kw>
			<kw>Finally</kw>
			<kw>Friend</kw>
			<kw>GetType</kw>
			<kw>Global</kw>
			<kw>GoTo</kw>
			<kw>Handles</kw>
			<kw>Implements</kw>
			<kw>Imports</kw>
			<kw>In</kw>
			<kw>Inherits</kw>
			<kw>Integer</kw>
			<kw>Interface</kw>
			<kw>IsNot</kw>
			<kw>Lib</kw>
			<kw>Like</kw>
			<kw>Long</kw>
			<kw>Me</kw>
			<kw>Module</kw>
			<kw>MustInherit</kw>
			<kw>MustOverride</kw>
			<kw>MyBase</kw>
			<kw>MyClass</kw>
			<kw>Namespace</kw>
			<kw>Narrowing</kw>
			<kw>New</kw>
			<kw>NotInheritable</kw>
			<kw>NotOverridable</kw>
			<kw>Object</kw>
			<kw>Of</kw>
			<kw>Operator</kw>
			<kw>Optional</kw>
			<kw>OrElse</kw>
			<kw>Overloads</kw>
			<kw>Overridable</kw>
			<kw>Overrides</kw>
			<kw>ParamArray</kw>
			<kw>Partial</kw>
			<kw>Protected</kw>
			<kw>RaiseEvent</kw>
			<kw>ReadOnly</kw>
			<kw>RemoveHandler</kw>
			<kw>Return</kw>
			<kw>SByte</kw>
			<kw>Shadows</kw>
			<kw>Shared</kw>
			<kw>Short</kw>
			<kw>Single</kw>
			<kw>Static</kw>
			<kw>Structure</kw>
			<kw>SyncLock</kw>
			<kw>Throw</kw>
			<kw>Try</kw>
			<kw>TryCast</kw>
			<kw>TypeOf</kw>
			<kw>UInteger</kw>
			<kw>ULong</kw>
			<kw>UShort</kw>
			<kw>Using</kw>
			<kw>When</kw>
			<kw>Widening</kw>
			<kw>WithEvents</kw>
			<kw>WriteOnly</kw>
		</keywordlist>
		<!-- VBScript keywords -->
		<keywordlist id="kwvbscript-keywords">
			<kw>Abs</kw>
			<kw>Array</kw>
			<kw>Asc</kw>
			<kw>Atn</kw>
			<kw>CCur</kw>
			<kw>Chr</kw>
			<kw>Clear</kw>
			<kw>Cos</kw>
			<kw>CreateObject</kw>
			<kw>DateAdd</kw>
			<kw>DateDiff</kw>
			<kw>DatePart</kw>
			<kw>DateSerial</kw>
			<kw>DateValue</kw>
			<kw>Day</kw>
			<kw>Derived</kw>
			<kw>Empty</kw>
			<kw>Escape</kw>
			<kw>Eval</kw>
			<kw>Execute</kw>
			<kw>ExecuteGlobal</kw>
			<kw>Exp</kw>
			<kw>Explicit</kw>
			<kw>Filter</kw>
			<kw>Fix</kw>
			<kw>FormatCurrency</kw>
			<kw>FormatDateTime</kw>
			<kw>FormatNumber</kw>
			<kw>FormatPercent</kw>
			<kw>GetLocale</kw>
			<kw>GetObject</kw>
			<kw>GetRef</kw>
			<kw>Hex</kw>
			<kw>Hour</kw>
			<kw>InStr</kw>
			<kw>InStrRev</kw>
			<kw>InputBox</kw>
			<kw>Int</kw>
			<kw>IsArray</kw>
			<kw>IsDate</kw>
			<kw>IsEmpty</kw>
			<kw>IsNull</kw>
			<kw>IsNumeric</kw>
			<kw>IsObject</kw>
			<kw>Join</kw>
			<kw>LBound</kw>
			<kw>LCase</kw>
			<kw>LTrim</kw>
			<kw>Left</kw>
			<kw>Len</kw>
			<kw>Let</kw>
			<kw>LoadPicture</kw>
			<kw>Log</kw>
			<kw>Math</kw>
			<kw>Maths</kw>
			<kw>Mid</kw>
			<kw>Minute</kw>
			<kw>Month</kw>
			<kw>MonthName</kw>
			<kw>MsgBox</kw>
			<kw>Now</kw>
			<kw>Null</kw>
			<kw>Oct</kw>
			<kw>RGB</kw>
			<kw>RTrim</kw>
			<kw>Raise</kw>
			<kw>Randomize</kw>
			<kw>Replace</kw>
			<kw>Right</kw>
			<kw>Rnd</kw>
			<kw>Round</kw>
			<kw>ScriptEngine</kw>
			<kw>ScriptEngineBuildVersion</kw>
			<kw>ScriptEngineMajorVersion</kw>
			<kw>ScriptEngineMinorVersion</kw>
			<kw>Second</kw>
			<kw>SetLocale</kw>
			<kw>Sgn</kw>
			<kw>Sin</kw>
			<kw>Space</kw>
			<kw>Split</kw>
			<kw>Sqr</kw>
			<kw>StrComp</kw>
			<kw>StrReverse</kw>
			<kw>Tan</kw>
			<kw>Test</kw>
			<kw>Time</kw>
			<kw>TimeSerial</kw>
			<kw>TimeValue</kw>
			<kw>Timer</kw>
			<kw>Trim</kw>
			<kw>TypeName</kw>
			<kw>UBound</kw>
			<kw>UCase</kw>
			<kw>Unescape</kw>
			<kw>VarType</kw>
			<kw>Weekday</kw>
			<kw>WeekdayName</kw>
			<kw>Wend</kw>
			<kw>Write</kw>
			<kw>WriteLine</kw>
			<kw>Year</kw>
		</keywordlist>
		<!-- JSCript keywords -->
		<keywordlist id="kwjscript-statements">
			<kw>break</kw>
			<kw>catch</kw>
			<kw>continue</kw>
			<kw>debugger</kw>
			<kw>do</kw>
			<kw>while</kw>
			<kw>for</kw>
			<kw>in</kw>
			<kw>function</kw>
			<kw>if</kw>
			<kw>else</kw>
			<kw>Labeled</kw>
			<kw>return</kw>
			<kw>switch</kw>
			<kw>this</kw>
			<kw>throw</kw>
			<kw>try</kw>
			<kw>while</kw>
			<kw>var</kw>
			<kw>with</kw>
		</keywordlist>
		<keywordlist id="kwjscript-objects">
			<kw>ActiveXObject</kw>
			<kw>Array</kw>
			<kw>arguments</kw>
			<kw>Boolean</kw>
			<kw>Date</kw>
			<kw>Debug</kw>
			<kw>Enumerator</kw>
			<kw>Error</kw>
			<kw>Function</kw>
			<kw>Global</kw>
			<kw>Math</kw>
			<kw>Number</kw>
			<kw>Object</kw>
			<kw>RegExp</kw>
			<kw>String</kw>
			<kw>VBArray</kw>
		</keywordlist>
		<keywordlist id="kwjsharp">
			<kw>abstract</kw>
			<kw>boolean</kw>
			<kw>break</kw>
			<kw>byte</kw>
			<kw>case</kw>
			<kw>catch</kw>
			<kw>char</kw>
			<kw>class</kw>
			<kw>const</kw>
			<kw>continue</kw>
			<kw>default</kw>
			<kw>delegate</kw>
			<kw>do</kw>
			<kw>double</kw>
			<kw>else</kw>
			<kw>enum</kw>
			<kw>extends</kw>
			<kw>false</kw>
			<kw>final</kw>
			<kw>finally</kw>
			<kw>float</kw>
			<kw>for</kw>
			<kw>if</kw>
			<kw>implements</kw>
			<kw>import</kw>
			<kw>instanceof</kw>
			<kw>int</kw>
			<kw>interface</kw>
			<kw>long</kw>
			<kw>multicast</kw>
			<kw>native</kw>
			<kw>new</kw>
			<kw>null</kw>
			<kw>package</kw>
			<kw>private</kw>
			<kw>protected</kw>
			<kw>public</kw>
			<kw>return</kw>
			<kw>short</kw>
			<kw>static</kw>
			<kw>strictfp</kw>
			<kw>super</kw>
			<kw>switch</kw>
			<kw>synchronized</kw>
			<kw>this</kw>
			<kw>throw</kw>
			<kw>throws</kw>
			<kw>transient</kw>
			<kw>true</kw>
			<kw>try</kw>
			<kw>ubyte</kw>
			<kw>void</kw>
			<kw>volatile</kw>
			<kw>while</kw>
		</keywordlist>
	</keywordlists>
	<!-- Languages syntax specification -->
	<languages>
		<!-- C language specification -->
		<language id="c" tabSize="4" name="C">
			<!-- Code contexts: default (most common) is code. -->
			<contexts default="code">
				<!-- basic source code context -->
				<context id="code" attribute="code">
					<!-- /* block of comment */ -->
					<detect2chars attribute="hidden" context="blockcomment" char="/" char1="*" />
					<!-- " " literals -->
					<regexp id="literal" attribute="literal" context="code" expression="&quot;(.|\\&quot;|\\\r\n)*?((\\\\)+&quot;|[^\\]{1}&quot;)" />
					<!-- preprocessor (#XXXX) -->
					<regexp id="preprocessor" attribute="preprocessor" context="code" expression="#\w+" />
					<!-- <include.file> -->
					<regexp id="include" attribute="literal" context="code" expression="&lt;\w+(\.\w*)*&gt;" />
					<!-- numbers -->
					<regexp id="number" attribute="number" context="code" expression="0x[0-9a-fA-F]*|(((?&lt;=[^0-9])(\+|-))?)\b[0-9][0-9]*(\.[0-9]+)?" />
					<!-- keyword C-like -->
					<keyword attribute="keyword" context="code" family="kwclang-keywords" />
					<!-- keyword C -->
					<keyword attribute="keyword" context="code" family="kwc-keywords" />
				</context>
				<!-- block comment /* ... */ -->
				<context id="blockcomment" attribute="cpp-blockcomment">
					<!-- finish line of comment, start block -->
					<detect2chars attribute="hidden" context="code" char="*" char1="/" />
				</context>
			</contexts>
		</language>
		<!-- C++ language specification -->
		<language id="cpp" tabSize="4" name="C++">
			<!-- Code contexts: default (most common) is code. -->
			<contexts default="code">
				<!-- basic source code context -->
				<context id="code" attribute="code">
					<!-- /* block of comment */ -->
					<detect2chars attribute="hidden" context="blockcomment" char="/" char1="*" />
					<!-- // line of comment -->
					<detect2chars attribute="hidden" context="linecomment" char="/" char1="/" />
					<!-- " " literals -->
					<regexp id="literal" attribute="literal" context="code" expression="&quot;(.|\\&quot;|\\\r\n)*?((\\\\)+&quot;|[^\\]{1}&quot;)" />
					<!-- preprocessor (#XXXX) -->
					<regexp id="preprocessor" attribute="preprocessor" context="code" expression="#\w+" />
					<!-- <include.file> -->
					<regexp id="include" attribute="literal" context="code" expression="&lt;\w+(\.\w*)*&gt;" />
					<!-- numbers -->
					<regexp id="number" attribute="number" context="code" expression="0x[0-9a-fA-F]*|(((?&lt;=[^0-9])(\+|-))?)\b[0-9][0-9]*(\.[0-9]+)?" />
					<!-- keyword C-like -->
					<keyword attribute="keyword" context="code" family="kwclang-keywords" />
					<!-- keyword C++-like -->
					<keyword attribute="keyword" context="code" family="kwclangoo-keywords" />
					<!-- keyword C -->
					<keyword attribute="keyword" context="code" family="kwc-keywords" />
					<!-- keyword C++ -->
					<keyword attribute="keyword" context="code" family="kwcpp-keywords" />
					<!-- keyword stl -->
					<keyword attribute="keyword" context="code" family="kwcpp-stl" />
				</context>
				<!-- block comment /* ... */ -->
				<context id="blockcomment" attribute="cpp-blockcomment">
					<!-- finish line of comment, start block -->
					<detect2chars attribute="hidden" context="code" char="*" char1="/" />
				</context>
				<!-- line comment // ... -->
				<context id="linecomment" attribute="cpp-linecomment">
					<!-- finish line of comment, start block -->
					<detect2chars attribute="hidden" context="blockcomment" char="/" char1="*" />
					<!-- finish line of comment end of line -->
					<linecontinue attribute="hidden" context="code" />
				</context>
			</contexts>
		</language>
		<!-- C# language specification -->
		<language id="cs" tabSize="4" name="C#">
			<!-- Code contexts: default (most common) is code. -->
			<contexts default="code">
				<!-- basic source code context -->
				<context id="code" attribute="code">
					<!-- /* block of comment */ -->
					<detect2chars attribute="hidden" context="blockcomment" char="/" char1="*" />
					<!-- // line of comment -->
					<detect2chars attribute="hidden" context="linecomment" char="/" char1="/" />
					<!-- " " literals -->
					<regexp id="literal" attribute="literal" context="code" expression="@&quot;(.|[\r\n])*?&quot;|&quot;(.|\\&quot;|\\\r\n)*?((\\\\)+&quot;|[^\\]{1}&quot;)" />
					<!-- preprocessor (#XXXX) -->
					<regexp id="preprocessor" attribute="preprocessor" context="code" expression="#\w+" />
					<!-- numbers -->
					<regexp id="number" attribute="number" context="code" expression="0x[0-9a-fA-F]*|(((?&lt;=[^0-9])(\+|-))?)\b[0-9][0-9]*(\.[0-9]+)?" />
					<!-- keyword C-like -->
					<keyword attribute="keyword" context="code" family="kwclang-keywords" />
					<!-- keyword C++-like -->
					<keyword attribute="keyword" context="code" family="kwclangoo-keywords" />
					<!-- keyword C# -->
					<keyword attribute="keyword" context="code" family="kwcs-keywords" />
				</context>
				<!-- block comment /* ... */ -->
				<context id="blockcomment" attribute="cpp-blockcomment">
					<!-- finish line of comment, start block -->
					<detect2chars attribute="hidden" context="code" char="*" char1="/" />
				</context>
				<!-- line comment // ... -->
				<context id="linecomment" attribute="cpp-linecomment">
					<!-- finish line of comment, start block -->
					<detect2chars attribute="hidden" context="blockcomment" char="/" char1="*" />
					<!-- finish line of comment end of line -->
					<linecontinue attribute="hidden" context="code" />
				</context>
			</contexts>
		</language>
		<!-- VB.NET -->
		<language id="vbnet" not-case-sensitive="yes" tabSize="4" name="VB.NET">
			<contexts default="code">
				<!-- Code context -->
				<context id="code" attribute="code">
					<!-- Single line of comment -->
					<regexp id="vb-comment" attribute="vb-comment" context="code" expression="'.*[\r\n]|Rem(((\t| ).*[\r\n])|[\r\n]{1,2})" />
					<!-- literal -->
					<regexp id="literal" attribute="literal" context="code" expression="&quot;(.|&quot;&quot;)*?&quot;" />
					<!-- preprocessor (#XXXX) -->
					<regexp id="preprocessor" attribute="preprocessor" context="code" expression="#\w+(\s*(if|region))?" />
					<!-- numbers -->
					<regexp id="number" attribute="number" context="code" expression="&amp;[h][0-9a-f]*&amp;?|(((?&lt;=[^0-9])(\+|-))?)\b[0-9][0-9]*(\.[0-9]+)?" />
					<!-- Keywords -->
					<keyword attribute="keyword" context="code" family="kwvblang-keywords" />
					<!-- Keywords -->
					<keyword attribute="keyword" context="code" family="kwvbnet-keywords" />
				</context>
			</contexts>
		</language>
		<!-- VB Script -->
		<language id="vbscript" not-case-sensitive="yes" tabSize="4" name="VBScript">
			<contexts default="code">
				<!-- Code context -->
				<context id="code" attribute="code">
					<!-- Single line of comment -->
					<regexp id="vb-comment" attribute="vb-comment" context="code" expression="'.*[\r\n]|Rem(((\t| ).*[\r\n])|[\r\n]{1,2})" />
					<!-- literal -->
					<regexp id="literal" attribute="literal" context="code" expression="&quot;(.|&quot;&quot;)*?&quot;" />
					<!-- numbers -->
					<regexp id="number" attribute="number" context="code" expression="&amp;[h][0-9a-f]*&amp;?|(((?&lt;=[^0-9])(\+|-))?)\b[0-9][0-9]*(\.[0-9]+)?" />
					<!-- Keywords -->
					<keyword attribute="keyword" context="code" family="kwvblang-keywords" />
					<!-- Keywords -->
					<keyword attribute="keyword" context="code" family="kwvbscript-keywords" />
				</context>
			</contexts>
		</language>
		<!-- JSCript -->
		<language id="jscript" not-case-sensitive="yes" tabSize="4" name="JavaScript">
			<!-- Code contexts: default (most common) is code. -->
			<contexts default="code">
				<!-- basic source code context -->
				<context id="code" attribute="code">
					<!-- /* block of comment */ -->
					<detect2chars attribute="hidden" context="blockcomment" char="/" char1="*" />
					<!-- // line of comment -->
					<detect2chars attribute="hidden" context="linecomment" char="/" char1="/" />
					<!-- " " literals -->
					<regexp id="rx-literal" attribute="literal" context="code" expression="&quot;(.|\\&quot;|\\\r\n)*?((\\\\)+&quot;|[^\\]{1}&quot;)" />
					<!-- numbers -->
					<regexp id="number" attribute="number" context="code" expression="0x[0-9a-fA-F]*|(((?&lt;=[^0-9])(\+|-))?)\b[0-9][0-9]*(\.[0-9]+)?" />
					<!-- statements -->
					<keyword attribute="keyword" context="code" family="kwjscript-statements" />
					<!-- objects -->
					<keyword attribute="keyword" context="code" family="kwjscript-objects" />
				</context>
				<!-- block comment /* ... */ -->
				<context id="blockcomment" attribute="cpp-blockcomment">
					<!-- finish line of comment, start block -->
					<detect2chars attribute="hidden" context="code" char="*" char1="/" />
				</context>
				<!-- line comment // ... -->
				<context id="linecomment" attribute="cpp-linecomment">
					<!-- finish line of comment, start block -->
					<detect2chars attribute="hidden" context="cpp-blockcomment" char="/" char1="*" />
					<!-- finish line of comment end of line -->
					<linecontinue attribute="hidden" context="code" />
				</context>
			</contexts>
		</language>
		<!-- J# language specification -->
		<language id="jsharp" tabSize="4" name="J#">
			<!-- Code contexts: default (most common) is code. -->
			<contexts default="code">
				<!-- basic source code context -->
				<context id="code" attribute="code">
					<!-- /* block of comment */ -->
					<detect2chars attribute="hidden" context="blockcomment" char="/" char1="*" />
					<!-- // line of comment -->
					<detect2chars attribute="hidden" context="linecomment" char="/" char1="/" />
					<!-- " " literals -->
					<regexp id="literal" attribute="literal" context="code" expression="&quot;(.|\\&quot;|\\\r\n)*?((\\\\)+&quot;|[^\\]{1}&quot;)" />
					<!-- preprocessor (#XXXX) -->
					<regexp id="preprocessor" attribute="preprocessor" context="code" expression="#\w+" />
					<!-- numbers -->
					<regexp id="number" attribute="number" context="code" expression="0x[0-9a-fA-F]*|(((?&lt;=[^0-9])(\+|-))?)\b[0-9][0-9]*(\.[0-9]+)?" />
					<!-- keyword J# -->
					<keyword attribute="keyword" context="code" family="kwjsharp" />
				</context>
				<!-- block comment /* ... */ -->
				<context id="blockcomment" attribute="cpp-blockcomment">
					<!-- finish line of comment, start block -->
					<detect2chars attribute="hidden" context="code" char="*" char1="/" />
				</context>
				<!-- line comment // ... -->
				<context id="linecomment" attribute="cpp-linecomment">
					<!-- finish line of comment, start block -->
					<detect2chars attribute="hidden" context="blockcomment" char="/" char1="*" />
					<!-- finish line of comment end of line -->
					<linecontinue attribute="hidden" context="code" />
				</context>
			</contexts>
		</language>
		<!-- XML -->
		<language id="xml" tabSize="8" name="XML">
			<contexts default="value">
				<!-- Value context -->
				<context id="value" attribute="xml-value">
					<!-- Comment -->
					<regexp id="rx-xml-comment" attribute="xml-comment" context="value" expression="&lt;!--(.|\n)*?--&gt;" />
					<!-- cdata -->
					<regexp id="rx-hidden" attribute="hidden" context="cdata" expression="&lt;!\[CDATA\[" />
					<!-- closing element -->
					<regexp id="rx-close-elem" attribute="xml-bracket" context="closing-element" expression="&lt;/" />
					<!-- opening element -->
					<regexp id="rx-open-elem" attribute="xml-bracket" context="opening-element" expression="&lt;\?{0,1}" />
				</context>
				<!-- cdata tag -->
				<context id="cdata" attribute="xml-cdata">
					<regexp id="rx-hidden" attribute="hidden" context="value" expression="\]\]&gt;" />
				</context>
				<!-- opening element context -->
				<context id="opening-element" attribute="xml-code">
					<!-- find tag... -->
					<regexp id="rx-attr" attribute="xml-tag" context="element-attributes" expression="\b((\w|-|\.)+\:){0,1}(\w|-|\.)+\b" />
				</context>
				<!-- closing element -->
				<context id="closing-element" attribute="xml-code">
					<regexp id="rx-closing-elem" attribute="xml-tag" context="closing-element" expression="\b((\w|-|\.)+\:){0,1}(\w|-|\.)+\b" />
					<regexp id="rx-value" attribute="xml-bracket" context="value" expression="(\?|/){0,1}&gt;" />
				</context>
				<!-- attributes group -->
				<context id="element-attributes" attribute="xml-code">
					<!-- find end of element -->
					<regexp id="rx-value" attribute="xml-bracket" context="value" expression="(\?|/){0,1}&gt;" />
					<!-- find attributes... -->
					<regexp id="rx-attr-name" attribute="xml-attribute-name" context="attribute-name" expression="\b((\w|-|\.)+\:){0,1}(\w|-|\.)+\b" />
				</context>
				<!-- attribute name -->
				<context id="attribute-name" attribute="hidden">
					<regexp id="rx-elem-equal" attribute="xml-attribute-equal" context="attribute-name" expression="=" />
					<regexp id="rx-elem-attrs" attribute="xml-attribute-value" context="element-attributes" expression="(&quot;.*?&quot;|&apos;.*?&apos;|\b(\w|-|\.)+\b)" />
				</context>
			</contexts>
		</language>
	</languages>
</highlight>

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Microsoft Public License (Ms-PL)


Written By
Software Developer (Senior)
United States United States
Eric Woodruff is an Analyst/Programmer for Spokane County, Washington where he helps develop and support various applications, mainly criminal justice systems, using Windows Forms (C#) and SQL Server as well as some ASP.NET applications.

He is also the author of various open source projects for .NET including:

The Sandcastle Help File Builder - A front end and project management system that lets you build help file projects using Microsoft's Sandcastle documentation tools. It includes a standalone GUI and a package for Visual Studio integration.

Visual Studio Spell Checker - A Visual Studio editor extension that checks the spelling of comments, strings, and plain text as you type or interactively with a tool window. This can be installed via the Visual Studio Gallery.

Image Map Controls - Windows Forms and web server controls that implement image maps.

PDI Library - A complete set of classes that let you have access to all objects, properties, parameter types, and data types as defined by the vCard (RFC 2426), vCalendar, and iCalendar (RFC 2445) specifications. A recurrence engine is also provided that allows you to easily and reliably calculate occurrence dates and times for even the most complex recurrence patterns.

Windows Forms List Controls - A set of extended .NET Windows Forms list controls. The controls include an auto-complete combo box, a multi-column combo box, a user control dropdown combo box, a radio button list, a check box list, a data navigator control, and a data list control (similar in nature to a continuous details section in Microsoft Access or the DataRepeater from VB6).

For more information see http://www.EWoodruff.us

Comments and Discussions