rego.xml

 1<lexer>
 2  <config>
 3    <name>Rego</name>
 4    <alias>rego</alias>
 5    <filename>*.rego</filename>
 6  </config>
 7  <rules>
 8    <state name="root">
 9      <rule pattern="(package|import|as|not|with|default|else|some|in|if|contains)\b">
10        <token type="KeywordDeclaration"/>
11      </rule>
12      <!-- importing keywords should then show up as keywords -->
13      <rule pattern="(import)( future.keywords.)(\w+)">
14        <bygroups>
15          <token type="KeywordDeclaration"/>
16          <token type="Text"/>
17          <token type="KeywordDeclaration"/>
18        </bygroups>
19      </rule>
20      <rule pattern="#[^\r\n]*">
21        <token type="Comment"/>
22      </rule>
23      <rule pattern="(FIXME|TODO|XXX)\b( .*)$">
24        <bygroups>
25          <token type="Error"/>
26          <token type="CommentSpecial"/>
27        </bygroups>
28      </rule>
29      <rule pattern="(true|false|null)\b">
30        <token type="KeywordConstant"/>
31      </rule>
32      <rule pattern="\d+i">
33        <token type="LiteralNumber"/>
34      </rule>
35      <rule pattern="\d+\.\d*([Ee][-+]\d+)?i">
36        <token type="LiteralNumber"/>
37      </rule>
38      <rule pattern="\.\d+([Ee][-+]\d+)?i">
39        <token type="LiteralNumber"/>
40      </rule>
41      <rule pattern="\d+[Ee][-+]\d+i">
42        <token type="LiteralNumber"/>
43      </rule>
44      <rule pattern="\d+(\.\d+[eE][+\-]?\d+|\.\d*|[eE][+\-]?\d+)">
45        <token type="LiteralNumberFloat"/>
46      </rule>
47      <rule pattern="\.\d+([eE][+\-]?\d+)?">
48        <token type="LiteralNumberFloat"/>
49      </rule>
50      <rule pattern="(0|[1-9][0-9]*)">
51        <token type="LiteralNumberInteger"/>
52      </rule>
53      <rule pattern="&#34;&#34;&#34;.*?&#34;&#34;&#34;">
54        <token type="LiteralStringDouble"/>
55      </rule>
56      <rule pattern="&#34;(\\\\|\\&#34;|[^&#34;])*&#34;">
57        <token type="LiteralStringDouble"/>
58      </rule>
59      <rule pattern="\$/((?!/\$).)*/\$">
60        <token type="LiteralString"/>
61      </rule>
62      <rule pattern="/(\\\\|\\&#34;|[^/])*/">
63        <token type="LiteralString"/>
64      </rule>
65      <rule pattern="^(\w+)">
66        <token type="Name"/>
67      </rule>
68      <rule pattern="[a-z_-][\w-]*(?=\()">
69        <token type="NameFunction"/>
70      </rule>
71      <rule pattern="[\r\n\s]+">
72        <token type="TextWhitespace"/>
73      </rule>
74      <rule pattern="(package|import)(\s+)">
75        <bygroups>
76          <token type="KeywordDeclaration"/>
77          <token type="Text"/>
78        </bygroups>
79      </rule>
80      <rule pattern="[=&lt;&gt;!+-/*&amp;|]">
81        <token type="Operator"/>
82      </rule>
83      <rule pattern=":=">
84        <token type="Operator"/>
85      </rule>
86      <rule pattern="[[\]{}():;]+">
87        <token type="Punctuation"/>
88      </rule>
89      <rule pattern="[$a-zA-Z_]\w*">
90        <token type="NameOther"/>
91      </rule>
92    </state>
93  </rules>
94</lexer>