vb_net.xml

  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>