stas.xml

 1<lexer>
 2  <config>
 3    <name>stas</name>
 4    <filename>*.stas</filename>
 5  </config>
 6  <rules>
 7    <state name="string-double-quoted">
 8      <rule pattern="\\.">
 9        <token type="LiteralStringEscape"/>
10      </rule>
11      <rule pattern="[^\\&#34;]+">
12        <token type="LiteralString"/>
13      </rule>
14      <rule pattern="&#34;">
15        <token type="LiteralString"/>
16        <pop depth="1"/>
17      </rule>
18    </state>
19    <state name="string-single-quoted">
20      <rule pattern="\\.">
21        <token type="LiteralStringEscape"/>
22      </rule>
23      <rule pattern="[^\\&#39;]+">
24        <token type="LiteralString"/>
25      </rule>
26      <rule pattern="&#39;">
27        <token type="LiteralString"/>
28        <pop depth="1"/>
29      </rule>
30    </state>
31    <state name="string-char-literal">
32      <rule pattern="\\.">
33        <token type="LiteralStringEscape"/>
34      </rule>
35      <rule pattern="[^\\`]+">
36        <token type="LiteralString"/>
37      </rule>
38      <rule pattern="`">
39        <token type="LiteralStringChar"/>
40        <pop depth="1"/>
41      </rule>
42    </state>
43    <state name="root">
44      <rule pattern="(\n|\s)+">
45        <token type="Text"/>
46      </rule>
47      <rule pattern="(?&lt;!\S)(fn|argc|argv|swap|dup|over|over2|rot|rot4|drop|w8|w16|w32|w64|r8|r16|r32|r64|syscall0|syscall1|syscall2|syscall3|syscall4|syscall5|syscall6|_breakpoint|assert|const|auto|reserve|pop|include|addr|if|else|elif|while|break|continue|ret)(?!\S)">
48        <token type="Keyword"/>
49      </rule>
50      <rule pattern="(?&lt;!\S)(\+|\-|\*|\/|\%|\%\%|\+\+|\-\-|&gt;&gt;|&lt;&lt;)(?!\S)">
51        <token type="Operator"/>
52      </rule>
53      <rule pattern="(?&lt;!\S)(\=|\!\=|&gt;|&lt;|&gt;\=|&lt;\=|&gt;s|&lt;s|&gt;\=s|&lt;\=s)(?!\S)">
54        <token type="Operator"/>
55      </rule>
56      <rule pattern="(?&lt;!\S)(\&amp;|\||\^|\~|\!|-\>)(?!\S)">
57        <token type="Operator"/>
58      </rule>
59      <rule pattern="(?&lt;!\S)\-?(\d+)(?!\S)">
60        <token type="LiteralNumber"/>
61      </rule>
62      <rule pattern="(?&lt;!\S);.*(\S|\n)">
63        <token type="Comment"/>
64      </rule>
65      <rule pattern="&#39;">
66        <token type="LiteralString"/>
67        <push state="string-single-quoted"/>
68      </rule>
69      <rule pattern="&#34;">
70        <token type="LiteralString"/>
71        <push state="string-double-quoted"/>
72      </rule>
73      <rule pattern="`">
74        <token type="LiteralStringChar"/>
75        <push state="string-char-literal"/>
76      </rule>
77      <rule pattern="(?&lt;!\S)[{}](?!\S)">
78        <token type="Punctuation"/>
79      </rule>
80      <rule pattern="(?&lt;!\S)[^\s]+(?!\S)">
81        <token type="Name"/>
82      </rule>
83    </state>
84  </rules>
85</lexer>