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="""".*?"""">
54 <token type="LiteralStringDouble"/>
55 </rule>
56 <rule pattern=""(\\\\|\\"|[^"])*"">
57 <token type="LiteralStringDouble"/>
58 </rule>
59 <rule pattern="\$/((?!/\$).)*/\$">
60 <token type="LiteralString"/>
61 </rule>
62 <rule pattern="/(\\\\|\\"|[^/])*/">
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="[=<>!+-/*&|]">
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>