io.xml

 1<lexer>
 2  <config>
 3    <name>Io</name>
 4    <alias>io</alias>
 5    <filename>*.io</filename>
 6    <mime_type>text/x-iosrc</mime_type>
 7  </config>
 8  <rules>
 9    <state name="root">
10      <rule pattern="\n">
11        <token type="Text"/>
12      </rule>
13      <rule pattern="\s+">
14        <token type="Text"/>
15      </rule>
16      <rule pattern="//(.*?)\n">
17        <token type="CommentSingle"/>
18      </rule>
19      <rule pattern="#(.*?)\n">
20        <token type="CommentSingle"/>
21      </rule>
22      <rule pattern="/(\\\n)?[*](.|\n)*?[*](\\\n)?/">
23        <token type="CommentMultiline"/>
24      </rule>
25      <rule pattern="/\+">
26        <token type="CommentMultiline"/>
27        <push state="nestedcomment"/>
28      </rule>
29      <rule pattern="&#34;(\\\\|\\&#34;|[^&#34;])*&#34;">
30        <token type="LiteralString"/>
31      </rule>
32      <rule pattern="::=|:=|=|\(|\)|;|,|\*|-|\+|&gt;|&lt;|@|!|/|\||\^|\.|%|&amp;|\[|\]|\{|\}">
33        <token type="Operator"/>
34      </rule>
35      <rule pattern="(clone|do|doFile|doString|method|for|if|else|elseif|then)\b">
36        <token type="Keyword"/>
37      </rule>
38      <rule pattern="(nil|false|true)\b">
39        <token type="NameConstant"/>
40      </rule>
41      <rule pattern="(Object|list|List|Map|args|Sequence|Coroutine|File)\b">
42        <token type="NameBuiltin"/>
43      </rule>
44      <rule pattern="[a-zA-Z_]\w*">
45        <token type="Name"/>
46      </rule>
47      <rule pattern="(\d+\.?\d*|\d*\.\d+)([eE][+-]?[0-9]+)?">
48        <token type="LiteralNumberFloat"/>
49      </rule>
50      <rule pattern="\d+">
51        <token type="LiteralNumberInteger"/>
52      </rule>
53    </state>
54    <state name="nestedcomment">
55      <rule pattern="[^+/]+">
56        <token type="CommentMultiline"/>
57      </rule>
58      <rule pattern="/\+">
59        <token type="CommentMultiline"/>
60        <push/>
61      </rule>
62      <rule pattern="\+/">
63        <token type="CommentMultiline"/>
64        <pop depth="1"/>
65      </rule>
66      <rule pattern="[+/]">
67        <token type="CommentMultiline"/>
68      </rule>
69    </state>
70  </rules>
71</lexer>