Skip to content

Commit 8fba410

Browse files
committed
Add support for Rego syntax
Adapted heavily from several of the lexers in this repo, and https://github.com/tsandall/vim-rego/blob/b47bf95996b72d630464b44ca567f2945bd37ac9/syntax/rego.vim
1 parent d7a7dd3 commit 8fba410

File tree

1 file changed

+88
-0
lines changed

1 file changed

+88
-0
lines changed

lexers/embedded/rego.xml

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
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+
</state>
87+
</rules>
88+
</lexer>

0 commit comments

Comments
 (0)