1. <lexer>
    
  2.   <config>
    
  3.     <name>VB.net</name>
    
  4.     <alias>vb.net</alias>
    
  5.     <alias>vbnet</alias>
    
  6.     <filename>*.vb</filename>
    
  7.     <filename>*.bas</filename>
    
  8.     <mime_type>text/x-vbnet</mime_type>
    
  9.     <mime_type>text/x-vba</mime_type>
    
  10.     <case_insensitive>true</case_insensitive>
    
  11.   </config>
    
  12.   <rules>
    
  13.     <state name="dim">
    
  14.       <rule pattern="[_\w][\w]*">
    
  15.         <token type="NameVariable"/>
    
  16.         <pop depth="1"/>
    
  17.       </rule>
    
  18.       <rule>
    
  19.         <pop depth="1"/>
    
  20.       </rule>
    
  21.     </state>
    
  22.     <state name="funcname">
    
  23.       <rule pattern="[_\w][\w]*">
    
  24.         <token type="NameFunction"/>
    
  25.         <pop depth="1"/>
    
  26.       </rule>
    
  27.     </state>
    
  28.     <state name="classname">
    
  29.       <rule pattern="[_\w][\w]*">
    
  30.         <token type="NameClass"/>
    
  31.         <pop depth="1"/>
    
  32.       </rule>
    
  33.     </state>
    
  34.     <state name="namespace">
    
  35.       <rule pattern="[_\w][\w]*">
    
  36.         <token type="NameNamespace"/>
    
  37.       </rule>
    
  38.       <rule pattern="\.">
    
  39.         <token type="NameNamespace"/>
    
  40.       </rule>
    
  41.       <rule>
    
  42.         <pop depth="1"/>
    
  43.       </rule>
    
  44.     </state>
    
  45.     <state name="end">
    
  46.       <rule pattern="\s+">
    
  47.         <token type="Text"/>
    
  48.       </rule>
    
  49.       <rule pattern="(Function|Sub|Property|Class|Structure|Enum|Module|Namespace)\b">
    
  50.         <token type="Keyword"/>
    
  51.         <pop depth="1"/>
    
  52.       </rule>
    
  53.       <rule>
    
  54.         <pop depth="1"/>
    
  55.       </rule>
    
  56.     </state>
    
  57.     <state name="root">
    
  58.       <rule pattern="^\s*&lt;.*?&gt;">
    
  59.         <token type="NameAttribute"/>
    
  60.       </rule>
    
  61.       <rule pattern="\s+">
    
  62.         <token type="Text"/>
    
  63.       </rule>
    
  64.       <rule pattern="\n">
    
  65.         <token type="Text"/>
    
  66.       </rule>
    
  67.       <rule pattern="rem\b.*?\n">
    
  68.         <token type="Comment"/>
    
  69.       </rule>
    
  70.       <rule pattern="&#39;.*?\n">
    
  71.         <token type="Comment"/>
    
  72.       </rule>
    
  73.       <rule pattern="#If\s.*?\sThen|#ElseIf\s.*?\sThen|#Else|#End\s+If|#Const|#ExternalSource.*?\n|#End\s+ExternalSource|#Region.*?\n|#End\s+Region|#ExternalChecksum">
    
  74.         <token type="CommentPreproc"/>
    
  75.       </rule>
    
  76.       <rule pattern="[(){}!#,.:]">
    
  77.         <token type="Punctuation"/>
    
  78.       </rule>
    
  79.       <rule pattern="Option\s+(Strict|Explicit|Compare)\s+(On|Off|Binary|Text)">
    
  80.         <token type="KeywordDeclaration"/>
    
  81.       </rule>
    
  82.       <rule pattern="(?&lt;!\.)(NotOverridable|NotInheritable|RemoveHandler|MustOverride|Overridable|MustInherit|Implements|RaiseEvent|AddHandler|ParamArray|WithEvents|DirectCast|Overrides|Overloads|Protected|WriteOnly|Interface|Narrowing|Inherits|Widening|SyncLock|ReadOnly|Operator|Continue|Delegate|Optional|MyClass|Declare|CUShort|Handles|Default|Shadows|TryCast|Finally|Private|Nothing|Partial|CSByte|Select|Option|Return|Friend|Resume|ElseIf|MyBase|Shared|Single|Public|CShort|Static|Global|Catch|CType|Error|CUInt|Using|While|GoSub|False|CDate|Throw|Event|CChar|CULng|CBool|Erase|ByVal|ByRef|Alias|EndIf|CByte|ReDim|Stop|Call|Wend|Next|CLng|Loop|True|CDec|With|Then|GoTo|CObj|CSng|Exit|CStr|Else|Each|Case|CInt|Step|When|CDbl|Set|For|Let|Lib|Try|New|Not|Get|On|To|Do|If|Of|Me)\b">
    
  83.         <token type="Keyword"/>
    
  84.       </rule>
    
  85.       <rule pattern="(?&lt;!\.)End\b">
    
  86.         <token type="Keyword"/>
    
  87.         <push state="end"/>
    
  88.       </rule>
    
  89.       <rule pattern="(?&lt;!\.)(Dim|Const)\b">
    
  90.         <token type="Keyword"/>
    
  91.         <push state="dim"/>
    
  92.       </rule>
    
  93.       <rule pattern="(?&lt;!\.)(Function|Sub|Property)(\s+)">
    
  94.         <bygroups>
    
  95.           <token type="Keyword"/>
    
  96.           <token type="Text"/>
    
  97.         </bygroups>
    
  98.         <push state="funcname"/>
    
  99.       </rule>
    
  100.       <rule pattern="(?&lt;!\.)(Class|Structure|Enum)(\s+)">
    
  101.         <bygroups>
    
  102.           <token type="Keyword"/>
    
  103.           <token type="Text"/>
    
  104.         </bygroups>
    
  105.         <push state="classname"/>
    
  106.       </rule>
    
  107.       <rule pattern="(?&lt;!\.)(Module|Namespace|Imports)(\s+)">
    
  108.         <bygroups>
    
  109.           <token type="Keyword"/>
    
  110.           <token type="Text"/>
    
  111.         </bygroups>
    
  112.         <push state="namespace"/>
    
  113.       </rule>
    
  114.       <rule pattern="(?&lt;!\.)(Boolean|Byte|Char|Date|Decimal|Double|Integer|Long|Object|SByte|Short|Single|String|Variant|UInteger|ULong|UShort)\b">
    
  115.         <token type="KeywordType"/>
    
  116.       </rule>
    
  117.       <rule pattern="(?&lt;!\.)(AddressOf|And|AndAlso|As|GetType|In|Is|IsNot|Like|Mod|Or|OrElse|TypeOf|Xor)\b">
    
  118.         <token type="OperatorWord"/>
    
  119.       </rule>
    
  120.       <rule pattern="&amp;=|[*]=|/=|\\=|\^=|\+=|-=|&lt;&lt;=|&gt;&gt;=|&lt;&lt;|&gt;&gt;|:=|&lt;=|&gt;=|&lt;&gt;|[-&amp;*/\\^+=&lt;&gt;\[\]]">
    
  121.         <token type="Operator"/>
    
  122.       </rule>
    
  123.       <rule pattern="&#34;">
    
  124.         <token type="LiteralString"/>
    
  125.         <push state="string"/>
    
  126.       </rule>
    
  127.       <rule pattern="_\n">
    
  128.         <token type="Text"/>
    
  129.       </rule>
    
  130.       <rule pattern="[_\w][\w]*">
    
  131.         <token type="Name"/>
    
  132.       </rule>
    
  133.       <rule pattern="#.*?#">
    
  134.         <token type="LiteralDate"/>
    
  135.       </rule>
    
  136.       <rule pattern="(\d+\.\d*|\d*\.\d+)(F[+-]?[0-9]+)?">
    
  137.         <token type="LiteralNumberFloat"/>
    
  138.       </rule>
    
  139.       <rule pattern="\d+([SILDFR]|US|UI|UL)?">
    
  140.         <token type="LiteralNumberInteger"/>
    
  141.       </rule>
    
  142.       <rule pattern="&amp;H[0-9a-f]+([SILDFR]|US|UI|UL)?">
    
  143.         <token type="LiteralNumberInteger"/>
    
  144.       </rule>
    
  145.       <rule pattern="&amp;O[0-7]+([SILDFR]|US|UI|UL)?">
    
  146.         <token type="LiteralNumberInteger"/>
    
  147.       </rule>
    
  148.     </state>
    
  149.     <state name="string">
    
  150.       <rule pattern="&#34;&#34;">
    
  151.         <token type="LiteralString"/>
    
  152.       </rule>
    
  153.       <rule pattern="&#34;C?">
    
  154.         <token type="LiteralString"/>
    
  155.         <pop depth="1"/>
    
  156.       </rule>
    
  157.       <rule pattern="[^&#34;]+">
    
  158.         <token type="LiteralString"/>
    
  159.       </rule>
    
  160.     </state>
    
  161.   </rules>
    
  162. </lexer>