<SyntaxLanguage Key="VB.NET" LanguageDefinitionVersion="4.0" Secure="True" 
				SyntaxLanguageTypeName="CodeHighlighterTest.VBDotNetDynamicSyntaxLanguage, CodeHighlighterTest" 
				xmlns="http://ActiproSoftware/SyntaxEditor/4.0/LanguageDefinition">

	<!-- String Properties -->
	<Properties>
		<Property Key="Creator" Value="Actipro Software LLC" />
		<Property Key="Copyright" Value="Copyright (c) 2001-2006 Actipro Software LLC.  All rights reserved." />
	</Properties>

	<!-- Triggers -->
	<Triggers>
		<KeyPressTrigger Key="MemberListTrigger" Character=".">
			<KeyPressTriggerValidStates>
				<KeyPressTriggerValidState State="DefaultState" />
			</KeyPressTriggerValidStates>
		</KeyPressTrigger>
		<KeyPressTrigger Key="XMLCommentTagListTrigger" Character="&lt;">
			<KeyPressTriggerValidStates>
				<KeyPressTriggerValidState State="XMLCommentState" />
			</KeyPressTriggerValidStates>
		</KeyPressTrigger>
	</Triggers>
	
	<!-- Highlighting Styles -->	
	<Styles>
		<Style Key="ReservedWordStyle" ForeColor="Blue" />
		<Style Key="NativeTypeStyle" ForeColor="Blue" />
		<Style Key="OperatorStyle" ForeColor="Black" />
		<Style Key="ReservedWordOperatorStyle" ForeColor="Blue" />
		<Style Key="NumberStyle" ForeColor="Purple" />
		<Style Key="StringDelimiterStyle" ForeColor="Maroon" />
		<Style Key="StringDefaultStyle" ForeColor="Maroon" />
		<Style Key="CommentDelimiterStyle" ForeColor="Green" />
		<Style Key="CommentDefaultStyle" ForeColor="Green" />
		<Style Key="XMLCommentDelimiterStyle" ForeColor="Gray" />
		<Style Key="XMLCommentTagStyle" ForeColor="Gray" />
		<Style Key="XMLCommentDefaultStyle" ForeColor="Green" />
		<Style Key="PreProcessorDirectiveKeywordStyle" Name="Pre-Processor Directive Keyword" ForeColor="Blue" />
		<Style Key="PreProcessorDirectiveDefaultStyle" Name="Pre-Processor Directive Default" ForeColor="Black" />
	</Styles>
	
	<!-- States -->
	<States>
		<!-- Code -->
		<State Key="DefaultState">
			<!-- Patterns Groups -->
			<PatternGroups>
				<!-- Whitespace -->
				<RegexPatternGroup TokenKey="WhitespaceToken" PatternValue="{WhitespaceMacro}+" IsWhitespace="True" />
				<!-- Line Terminators -->
				<RegexPatternGroup TokenKey="LineTerminatorToken" PatternValue="{LineTerminatorMacro}" IsWhitespace="True" />
				<!-- Brackets -->
				<ExplicitPatternGroup Key="OpenParenthesisPatternGroup" TokenKey="OpenParenthesisToken" PatternValue="(" EndBracket="CloseParenthesisPatternGroup" />
				<ExplicitPatternGroup Key="CloseParenthesisPatternGroup" TokenKey="CloseParenthesisToken" PatternValue=")" StartBracket="OpenParenthesisPatternGroup" />
				<!-- Exit Reserved Words -->
				<ExplicitPatternGroup TokenKey="ExitReservedWordToken" Style="ReservedWordStyle" LookBehind="^|[^\.]" LookAhead="{NonWordMacro}|\z" CaseSensitivity="AutoCorrect">
					<ExplicitPattern Value="Exit Sub" />
					<ExplicitPattern Value="Exit Function" />
					<ExplicitPattern Value="Exit Property" />
					<ExplicitPattern Value="Exit" />
				</ExplicitPatternGroup>
				<!-- Foldable Start Reserved Words -->
				<ExplicitPatternGroup TokenKey="SubReservedWordToken" Style="ReservedWordStyle" LookBehind="^|[^\.]" LookAhead="{NonWordMacro}|\z" CaseSensitivity="AutoCorrect">
					<ExplicitPattern Value="Sub" />
				</ExplicitPatternGroup>
				<ExplicitPatternGroup TokenKey="FunctionReservedWordToken" Style="ReservedWordStyle" LookBehind="^|[^\.]" LookAhead="{NonWordMacro}|\z" CaseSensitivity="AutoCorrect">
					<ExplicitPattern Value="Function" />
				</ExplicitPatternGroup>
				<ExplicitPatternGroup TokenKey="PropertyReservedWordToken" Style="ReservedWordStyle" LookBehind="^|[^\.]" LookAhead="{NonWordMacro}|\z" CaseSensitivity="AutoCorrect">
					<ExplicitPattern Value="Property" />
				</ExplicitPatternGroup>
				<ExplicitPatternGroup TokenKey="ClassReservedWordToken" Style="ReservedWordStyle" LookBehind="^|[^\.]" LookAhead="{NonWordMacro}|\z" CaseSensitivity="AutoCorrect">
					<ExplicitPattern Value="Class" />
				</ExplicitPatternGroup>
				<ExplicitPatternGroup TokenKey="InterfaceReservedWordToken" Style="ReservedWordStyle" LookBehind="^|[^\.]" LookAhead="{NonWordMacro}|\z" CaseSensitivity="AutoCorrect">
					<ExplicitPattern Value="Interface" />
				</ExplicitPatternGroup>
				<ExplicitPatternGroup TokenKey="EnumReservedWordToken" Style="ReservedWordStyle" LookBehind="^|[^\.]" LookAhead="{NonWordMacro}|\z" CaseSensitivity="AutoCorrect">
					<ExplicitPattern Value="Enum" />
				</ExplicitPatternGroup>
				<ExplicitPatternGroup TokenKey="StructureReservedWordToken" Style="ReservedWordStyle" LookBehind="^|[^\.]" LookAhead="{NonWordMacro}|\z" CaseSensitivity="AutoCorrect">
					<ExplicitPattern Value="Structure" />
				</ExplicitPatternGroup>
				<ExplicitPatternGroup TokenKey="ModuleReservedWordToken" Style="ReservedWordStyle" LookBehind="^|[^\.]" LookAhead="{NonWordMacro}|\z" CaseSensitivity="AutoCorrect">
					<ExplicitPattern Value="Module" />
				</ExplicitPatternGroup>
				<ExplicitPatternGroup TokenKey="NamespaceReservedWordToken" Style="ReservedWordStyle" LookBehind="^|[^\.]" LookAhead="{NonWordMacro}|\z" CaseSensitivity="AutoCorrect">
					<ExplicitPattern Value="Namespace" />
				</ExplicitPatternGroup>
				<!-- Foldable End Reserved Words -->
				<ExplicitPatternGroup TokenKey="EndSubReservedWordToken" Style="ReservedWordStyle" LookBehind="^|[^\.]" LookAhead="{NonWordMacro}|\z" CaseSensitivity="AutoCorrect">
					<ExplicitPattern Value="End Sub" />
				</ExplicitPatternGroup>
				<ExplicitPatternGroup TokenKey="EndFunctionReservedWordToken" Style="ReservedWordStyle" LookBehind="^|[^\.]" LookAhead="{NonWordMacro}|\z" CaseSensitivity="AutoCorrect">
					<ExplicitPattern Value="End Function" />
				</ExplicitPatternGroup>
				<ExplicitPatternGroup TokenKey="EndPropertyReservedWordToken" Style="ReservedWordStyle" LookBehind="^|[^\.]" LookAhead="{NonWordMacro}|\z" CaseSensitivity="AutoCorrect">
					<ExplicitPattern Value="End Property" />
				</ExplicitPatternGroup>
				<ExplicitPatternGroup TokenKey="EndClassReservedWordToken" Style="ReservedWordStyle" LookBehind="^|[^\.]" LookAhead="{NonWordMacro}|\z" CaseSensitivity="AutoCorrect">
					<ExplicitPattern Value="End Class" />
				</ExplicitPatternGroup>
				<ExplicitPatternGroup TokenKey="EndInterfaceReservedWordToken" Style="ReservedWordStyle" LookBehind="^|[^\.]" LookAhead="{NonWordMacro}|\z" CaseSensitivity="AutoCorrect">
					<ExplicitPattern Value="End Interface" />
				</ExplicitPatternGroup>
				<ExplicitPatternGroup TokenKey="EndEnumReservedWordToken" Style="ReservedWordStyle" LookBehind="^|[^\.]" LookAhead="{NonWordMacro}|\z" CaseSensitivity="AutoCorrect">
					<ExplicitPattern Value="End Enum" />
				</ExplicitPatternGroup>
				<ExplicitPatternGroup TokenKey="EndStructureReservedWordToken" Style="ReservedWordStyle" LookBehind="^|[^\.]" LookAhead="{NonWordMacro}|\z" CaseSensitivity="AutoCorrect">
					<ExplicitPattern Value="End Structure" />
				</ExplicitPatternGroup>
				<ExplicitPatternGroup TokenKey="EndModuleReservedWordToken" Style="ReservedWordStyle" LookBehind="^|[^\.]" LookAhead="{NonWordMacro}|\z" CaseSensitivity="AutoCorrect">
					<ExplicitPattern Value="End Module" />
				</ExplicitPatternGroup>
				<ExplicitPatternGroup TokenKey="EndNamespaceReservedWordToken" Style="ReservedWordStyle" LookBehind="^|[^\.]" LookAhead="{NonWordMacro}|\z" CaseSensitivity="AutoCorrect">
					<ExplicitPattern Value="End Namespace" />
				</ExplicitPatternGroup>
				<!-- Punctuation -->
				<ExplicitPatternGroup TokenKey="PunctuationToken">
					<ExplicitPatterns>
						. ,
					</ExplicitPatterns>
				</ExplicitPatternGroup>
				<!-- Native Types -->
				<ExplicitPatternGroup TokenKey="NativeTypeToken" Style="NativeTypeStyle" LookBehind="^|[^\.]" LookAhead="{NonWordMacro}|\z" CaseSensitivity="AutoCorrect">
					<ExplicitPatterns>
						Boolean Byte Char Date Decimal Double Integer Long Object SByte Short Single String UShort UInteger ULong
					</ExplicitPatterns>
				</ExplicitPatternGroup>
				<!-- Booleans -->
				<ExplicitPatternGroup TokenKey="BooleanToken" Style="ReservedWordStyle" LookBehind="^|[^\.]" LookAhead="{NonWordMacro}|\z" CaseSensitivity="AutoCorrect">
					<ExplicitPatterns>
						False True
					</ExplicitPatterns>
				</ExplicitPatternGroup>
				<!-- Me -->
				<ExplicitPatternGroup TokenKey="MeToken" PatternValue="Me" Style="ReservedWordStyle" LookBehind="^|[^\.]" LookAhead="{NonWordMacro}|\z" CaseSensitivity="AutoCorrect"/>
				<!-- Reserved Word Operators -->
				<ExplicitPatternGroup TokenKey="ReservedWordOperatorToken" Style="ReservedWordOperatorStyle" LookBehind="^|[^\.]" LookAhead="{NonWordMacro}|\z" CaseSensitivity="AutoCorrect">
					<ExplicitPatterns>
						AddressOf And AndAlso GetType Is IsNot Mod Not Or OrElse Xor
					</ExplicitPatterns>
				</ExplicitPatternGroup>
				<!-- Reserved Words -->
				<ExplicitPatternGroup TokenKey="ReservedWordToken" Style="ReservedWordStyle" LookBehind="^|[^\.]" LookAhead="{NonWordMacro}|\z" CaseSensitivity="AutoCorrect">
					<ExplicitPatterns>
						Alias Ansi As Assembly Auto ByRef ByVal
						AddHandler Call Case Catch Compare Const
						Abs AppActivate Asc Atn Beep CallByName CBool CByte CChar CDate CDbl CDec ChDir ChDrive Choose Chr ChrW
						CInt CLng CObj Command Continue Conversions Cos CreateObject CShort CSng CStr CType CurDir Custom
						Default DirectCast
						Declare Delegate Dim Do Each Else ElseIf End Erase Error
						Event Explicit
						DateAdd DateDiff DatePart
						DateSerial DateValue Day DDB DeleteSetting Dir Environ EOF ErrorToString Exp
						Friend Handles
						Finally For Get Goto
						FileAttr FileClose FileCopy
						FileDateTime FileGet FileGetObject FileLen FileOpen FilePut FilePutObject FileWidth Filter Fix Format
						FormatCurrency FormatDateTime FormatNumber FormatPercent FreeFile FV GetAllSettings GetAttr GetChar
						GetException GetObject GetSetting Hex Hour
						If Implements Imports In Inherits
						IIf Input InputBox InputString InStr InStrRev Int IPmt
						IRR IsArray IsDate IsDBNull IsError IsNothing IsNumeric IsReference Join Kill LBound LCase Left Len
						Lib LineInput Loc Lock LOF Log Loop LSet LTrim Mid Minute MIRR MkDir Month MonthName MsgBox
						MustInherit MustOverride MyBase MyClass
						New Nothing NotInheritable NotOverridable Off On Optional Overloads Overridable Overrides
						ParamArray Preserve Private Protected Public ReadOnly Resume
						Next Of On Option RaiseEvent Randomize ReDim RemoveHandler Resume Return
						NPer NPV Oct Partial Partition
						Pmt PPmt Print PrintLine PV QBColor Rate Rename Replace Reset RGB Right RmDir Rnd Round RSet RTrim
						Select Set Stop Strict SyncLock
						SaveSetting Second Seek SetAttr Sgn Shadows Shared Shell Sin SLN Space SPC Split Sqr Static Step Str StrComp StrConv StrDup
						StrReverse SYD SystemTypeName
						TypeOf Unicode WithEvents WriteOnly
						Then Throw To Try Until Using While With
						TAB Tan TimeSerial TimeValue Trim TypeName UBound UCase Unlock Val VarType
						VbTypeName WeekDay WeekDayName Write WriteLine Year
					</ExplicitPatterns>
				</ExplicitPatternGroup>
				<!-- Identifier -->
				<RegexPatternGroup TokenKey="IdentifierToken" PatternValue="(_ | {AlphaMacro})({WordMacro})*" />
				<!-- Operators -->
				<ExplicitPatternGroup TokenKey="OperatorToken" Style="OperatorStyle">
					<ExplicitPatterns>
						= &lt;&gt;
						+= -= *= /= \= ^= &amp;=
						+ - * / \ ^ &amp;
						&lt;= &lt; &gt;= &gt;
					</ExplicitPatterns>
				</ExplicitPatternGroup>
				<!-- Numbers -->
				<RegexPatternGroup TokenKey="RealNumberToken" Style="NumberStyle" LookAhead="{NonWordMacro}|\z">
					<RegexPattern Value="{DigitMacro}* \. {DigitMacro}+ ([Ee] [\+\-]? {DigitMacro}+)?" />
					<RegexPattern Value="{DigitMacro}+ [Ee] [\+\-]? {DigitMacro}+" />
				</RegexPatternGroup>
				<RegexPatternGroup TokenKey="IntegerNumberToken" Style="NumberStyle" PatternValue="{DigitMacro}+" LookAhead="{NonWordMacro}|\z" />
				<RegexPatternGroup TokenKey="HexIntegerNumberToken" Style="NumberStyle" PatternValue="&amp; [hH] {HexDigitMacro}+" LookAhead="{NonWordMacro}|\z" />
			</PatternGroups>
			<!-- Child States -->
			<ChildStates>
				<ChildState Key="StringState" />
				<ChildState Key="XMLCommentState" />
				<ChildState Key="CommentState" />
				<ChildState Key="PreProcessorDirectiveState" />
			</ChildStates>
		</State>

		<!-- Strings -->
		<State Key="StringState" TokenKey="StringDefaultToken" Style="StringDefaultStyle">
			<!-- Scopes -->
			<Scopes>
				<Scope>
					<ExplicitPatternGroup Type="StartScope" TokenKey="StringStartToken" Style="StringDelimiterStyle" PatternValue="&quot;" />
					<RegexPatternGroup Type="EndScope" TokenKey="StringEndToken" Style="StringDelimiterStyle" PatternValue="[\&quot;\n]" />
				</Scope>
			</Scopes>
			<!-- Patterns Groups -->
			<PatternGroups>
				<ExplicitPatternGroup TokenKey="StringEscapedCharacterToken" PatternValue="&quot;&quot;" />
				<RegexPatternGroup TokenKey="StringDefaultToken2" PatternValue="[^\&quot;\n]+" />
			</PatternGroups>
		</State>

		<!-- Comments -->
		<State Key="CommentState" TokenKey="CommentDefaultToken" Style="CommentDefaultStyle">
			<!-- Scopes -->
			<Scopes>
				<Scope>
					<ExplicitPatternGroup Type="StartScope" TokenKey="CommentStartToken" Style="CommentDelimiterStyle" PatternValue="'" />
					<RegexPatternGroup Type="EndScope" TokenKey="CommentEndToken" Style="CommentDelimiterStyle" PatternValue="{LineTerminatorMacro}" IsWhitespace="True" />
				</Scope>
				<Scope>
					<ExplicitPatternGroup Type="StartScope" TokenKey="CommentStartToken" Style="CommentDelimiterStyle" PatternValue="REM" LookBehind="^|[^\.]" LookAhead="{NonWordMacro}|\z" />
					<RegexPatternGroup Type="EndScope" TokenKey="CommentEndToken" Style="CommentDelimiterStyle" PatternValue="{LineTerminatorMacro}" IsWhitespace="True" />	
				</Scope>
			</Scopes>
			<!-- Patterns Groups -->
			<PatternGroups>
				<RegexPatternGroup TokenKey="CommentDefaultToken" PatternValue="{NonLineTerminatorMacro}+" />
			</PatternGroups>
		</State>

		<!-- XML Comments -->
		<State Key="XMLCommentState" TokenKey="XMLCommentDefaultToken" Style="XMLCommentDefaultStyle">
			<!-- Scopes -->
			<Scopes>
				<Scope>
					<ExplicitPatternGroup Type="StartScope" TokenKey="XMLCommentStartToken" Style="XMLCommentDelimiterStyle" PatternValue="'''" />
					<RegexPatternGroup Type="EndScope" TokenKey="XMLCommentEndToken" Style="XMLCommentDelimiterStyle" PatternValue="{LineTerminatorMacro}" IsWhitespace="True" />	
				</Scope>
			</Scopes>
			<!-- Patterns Groups -->
			<PatternGroups>
				<RegexPatternGroup TokenKey="XMLCommentDelimiterToken" Style="XMLCommentDelimiterStyle" PatternValue="'''" />
				<RegexPatternGroup TokenKey="XMLCommentStartTagToken" Style="XMLCommentTagStyle" PatternValue="&lt; [^\n&gt;]* [\n&gt;]" />
				<RegexPatternGroup TokenKey="XMLCommentEndTagToken" Style="XMLCommentTagStyle" PatternValue="&lt;/ [^\n&gt;]* [\n&gt;]" />
				<RegexPatternGroup TokenKey="XMLCommentWhitespaceToken" PatternValue="{WhitespaceMacro}+" IsWhitespace="True" />
				<RegexPatternGroup TokenKey="XMLCommentLineTerminatorToken" PatternValue="{LineTerminatorMacro}" LookAhead="{LineTerminatorWhitespaceMacro}* '''" IsWhitespace="True" />
				<RegexPatternGroup TokenKey="XMLCommentWordToken" PatternValue="\w+" />
				<RegexPatternGroup TokenKey="XMLCommentDefaultToken" PatternValue="{NonLineTerminatorMacro}" />
			</PatternGroups>
		</State>
		
		<!-- Pre-Processor Directives -->
		<State Key="PreProcessorDirectiveState" TokenKey="PreProcessorDirectiveDefaultToken" Style="PreProcessorDirectiveDefaultStyle">
			<!-- Scopes -->
			<Scopes>
				<Scope>
					<ExplicitPatternGroup Type="StartScope" TokenKey="RegionPreProcessorDirectiveStartToken" Style="PreProcessorDirectiveKeywordStyle" PatternValue="#Region" LookAhead="{NonWordMacro}|\z" CaseSensitivity="AutoCorrect" />
					<RegexPatternGroup Type="EndScope" TokenKey="PreProcessorDirectiveEndToken" Style="DefaultStyle" PatternValue="{LineTerminatorMacro}" IsWhitespace="True" />	
				</Scope>
				<Scope>
					<ExplicitPatternGroup Type="StartScope" TokenKey="EndRegionPreProcessorDirectiveStartToken" Style="PreProcessorDirectiveKeywordStyle" PatternValue="#End Region" LookAhead="{NonWordMacro}|\z" CaseSensitivity="AutoCorrect" />
					<RegexPatternGroup Type="EndScope" TokenKey="PreProcessorDirectiveEndToken" Style="DefaultStyle" PatternValue="{LineTerminatorMacro}" IsWhitespace="True" />	
				</Scope>
			</Scopes>
			<!-- Patterns Groups -->
			<PatternGroups>
				<RegexPatternGroup TokenKey="PreProcessorDirectiveDefaultToken" PatternValue="{NonLineTerminatorMacro}+" />
			</PatternGroups>
		</State>
	</States>

	<!-- Example Text -->
	<ExampleText>
		<![CDATA[
''' <summary>
''' Provides a helper class for generating random numbers.
''' </summary>
Public Class RandomHelper

	''' <summary>
	''' Returns a new random number.
	''' </summary>
	''' <param name="lowerBound">The lower bound of the number.</param>
	''' <param name="upperBound">The upper bound of the number.</param>
	''' <returns>The generated number.</returns>
	Public Function GetRandom(lowerBound As Integer, upperBound As Integer) 
		'Create a random number within the range
		Randomize
		GetRandom = CInt((upperBound - lowerBound) * Rnd + 1) 
	End Function 

	''' <summary>
	''' Returns an array of random numbers in the range of <c>0</c> to <c>100</c>.
	''' </summary>
	''' <param name="arraySize">The number of random numbers to generate.</param>
	''' <returns>The array of generated numbers.</returns>
	Public Function RangedRandomArray(arraySize As Integer) 
		Dim tempArray() As Integer  'storage for a working array 
		Dim index As Integer
	    
		' Type in the text 'Select' on the next line and press the 
		' Tab key immediately after to activate a code snippet
		
		ReDim tempArray(arraySize) ' resize the tempArray to arraySize
	    
		For index = 1 To arraySize
			tempArray(index) = GetRandom(0, 100)
		Next index
	    
		'Return the array, populated with random integers to the caller of the function  
		RangedRandomArray = tempArray 
	End Function 
	
End Class
		]]>
	</ExampleText>
	
</SyntaxLanguage>
