1<lexer>
 2  <config>
 3    <name>lox</name>
 4    <filename>*.lox</filename>
 5    <dot_all>true</dot_all>
 6    <ensure_nl>true</ensure_nl>
 7  </config>
 8  <rules>
 9    <state name="whitespace">
10      <rule pattern="\n">
11        <token type="Text"/>
12      </rule>
13      <rule pattern="\s+">
14        <token type="Text"/>
15      </rule>
16    </state>
17    <state name="root">
18      <rule>
19        <include state="whitespace"/>
20      </rule>
21      <rule pattern="//.*?\n">
22        <token type="CommentSingle"/>
23      </rule>
24      <rule pattern="(and|break|case|continue|default|else|for|if|or|print|return|super|switch|this|while)\b">
25        <token type="Keyword"/>
26      </rule>
27      <rule pattern="(false|nil|true)\b">
28        <token type="KeywordConstant"/>
29      </rule>
30      <rule pattern="(class)(\s+)([a-zA-Z_]\w*)">
31        <bygroups>
32          <token type="KeywordDeclaration"/>
33          <token type="Text"/>
34          <token type="NameClass"/>
35        </bygroups>
36      </rule>
37      <rule pattern="(fun)(\s+)([a-zA-Z_]\w*)">
38        <bygroups>
39          <token type="KeywordDeclaration"/>
40          <token type="Text"/>
41          <token type="NameFunction"/>
42        </bygroups>
43      </rule>
44      <rule pattern="(const)(\s+)([a-zA-Z_]\w*)">
45        <bygroups>
46          <token type="KeywordDeclaration"/>
47          <token type="Text"/>
48          <token type="NameConstant"/>
49        </bygroups>
50      </rule>
51      <rule pattern="(var)(\s+)([a-zA-Z_]\w*)">
52        <bygroups>
53          <token type="KeywordDeclaration"/>
54          <token type="Text"/>
55          <token type="NameVariable"/>
56        </bygroups>
57      </rule>
58      <rule pattern="\d+(\.\d*|[eE][+\-]?\d+)">
59        <token type="LiteralNumberFloat"/>
60      </rule>
61      <rule pattern="[0-9][0-9]*">
62        <token type="LiteralNumberInteger"/>
63      </rule>
64      <rule pattern="&#34;(\\\\|\\&#34;|[^&#34;])*&#34;">
65        <token type="LiteralStringDouble"/>
66      </rule>
67      <rule pattern="!|\+|-|\*|/|&lt;|&gt;|=">
68        <token type="Operator"/>
69      </rule>
70      <rule pattern="[{}():;.,]">
71        <token type="Punctuation"/>
72      </rule>
73      <rule pattern="[a-zA-Z_]\w*">
74        <token type="NameVariable"/>
75      </rule>
76    </state>
77  </rules>
78</lexer>