...
1<lexer>
2 <config>
3 <name>PromQL</name>
4 <alias>promql</alias>
5 <filename>*.promql</filename>
6 </config>
7 <rules>
8 <state name="range">
9 <rule pattern="\]">
10 <token type="Punctuation"/>
11 <pop depth="1"/>
12 </rule>
13 <rule pattern="[1-9][0-9]*[smhdwy]">
14 <token type="LiteralString"/>
15 </rule>
16 </state>
17 <state name="function">
18 <rule pattern="\)">
19 <token type="Operator"/>
20 <pop depth="1"/>
21 </rule>
22 <rule pattern="\(">
23 <token type="Operator"/>
24 <push/>
25 </rule>
26 <rule>
27 <pop depth="1"/>
28 </rule>
29 </state>
30 <state name="root">
31 <rule pattern="\n">
32 <token type="TextWhitespace"/>
33 </rule>
34 <rule pattern="\s+">
35 <token type="TextWhitespace"/>
36 </rule>
37 <rule pattern=",">
38 <token type="Punctuation"/>
39 </rule>
40 <rule pattern="(group_right|group_left|ignoring|without|offset|bool|on|by)\b">
41 <token type="Keyword"/>
42 </rule>
43 <rule pattern="(count_values|quantile|bottomk|stdvar|stddev|count|group|topk|sum|min|max|avg)\b">
44 <token type="Keyword"/>
45 </rule>
46 <rule pattern="(histogram_quantile|quantile_over_time|absent_over_time|stdvar_over_time|stddev_over_time|count_over_time|predict_linear|label_replace|max_over_time|avg_over_time|sum_over_time|days_in_month|min_over_time|day_of_month|holt_winters|day_of_week|label_join|sort_desc|clamp_max|timestamp|clamp_min|increase|changes|resets|vector|absent|idelta|minute|scalar|log10|delta|month|floor|deriv|round|irate|rate|year|sort|log2|sqrt|ceil|time|hour|abs|exp|ln)\b">
47 <token type="KeywordReserved"/>
48 </rule>
49 <rule pattern="[1-9][0-9]*[smhdwy]">
50 <token type="LiteralString"/>
51 </rule>
52 <rule pattern="-?[0-9]+\.[0-9]+">
53 <token type="LiteralNumberFloat"/>
54 </rule>
55 <rule pattern="-?[0-9]+">
56 <token type="LiteralNumberInteger"/>
57 </rule>
58 <rule pattern="#.*?$">
59 <token type="CommentSingle"/>
60 </rule>
61 <rule pattern="(\+|\-|\*|\/|\%|\^)">
62 <token type="Operator"/>
63 </rule>
64 <rule pattern="==|!=|>=|<=|<|>">
65 <token type="Operator"/>
66 </rule>
67 <rule pattern="and|or|unless">
68 <token type="OperatorWord"/>
69 </rule>
70 <rule pattern="[_a-zA-Z][a-zA-Z0-9_]+">
71 <token type="NameVariable"/>
72 </rule>
73 <rule pattern="(["\'])(.*?)(["\'])">
74 <bygroups>
75 <token type="Punctuation"/>
76 <token type="LiteralString"/>
77 <token type="Punctuation"/>
78 </bygroups>
79 </rule>
80 <rule pattern="\(">
81 <token type="Operator"/>
82 <push state="function"/>
83 </rule>
84 <rule pattern="\)">
85 <token type="Operator"/>
86 </rule>
87 <rule pattern="\{">
88 <token type="Punctuation"/>
89 <push state="labels"/>
90 </rule>
91 <rule pattern="\[">
92 <token type="Punctuation"/>
93 <push state="range"/>
94 </rule>
95 </state>
96 <state name="labels">
97 <rule pattern="\}">
98 <token type="Punctuation"/>
99 <pop depth="1"/>
100 </rule>
101 <rule pattern="\n">
102 <token type="TextWhitespace"/>
103 </rule>
104 <rule pattern="\s+">
105 <token type="TextWhitespace"/>
106 </rule>
107 <rule pattern=",">
108 <token type="Punctuation"/>
109 </rule>
110 <rule pattern="([_a-zA-Z][a-zA-Z0-9_]*?)(\s*?)(=~|!=|=|!~)(\s*?)("|')(.*?)("|')">
111 <bygroups>
112 <token type="NameLabel"/>
113 <token type="TextWhitespace"/>
114 <token type="Operator"/>
115 <token type="TextWhitespace"/>
116 <token type="Punctuation"/>
117 <token type="LiteralString"/>
118 <token type="Punctuation"/>
119 </bygroups>
120 </rule>
121 </state>
122 </rules>
123</lexer>
View as plain text