1// Code generated by goyacc -o promql/generated_parser.y.go promql/generated_parser.y. DO NOT EDIT.
2
3//line promql/generated_parser.y:15
4package promql
5
6import __yyfmt__ "fmt"
7
8//line promql/generated_parser.y:15
9
10import (
11	"math"
12	"sort"
13	"strconv"
14	"time"
15
16	"github.com/prometheus/prometheus/pkg/labels"
17	"github.com/prometheus/prometheus/pkg/value"
18)
19
20//line promql/generated_parser.y:28
21type yySymType struct {
22	yys      int
23	node     Node
24	item     Item
25	matchers []*labels.Matcher
26	matcher  *labels.Matcher
27	label    labels.Label
28	labels   labels.Labels
29	strings  []string
30	series   []sequenceValue
31	uint     uint64
32	float    float64
33	string   string
34	duration time.Duration
35}
36
37const ASSIGN = 57346
38const BLANK = 57347
39const COLON = 57348
40const COMMA = 57349
41const COMMENT = 57350
42const DURATION = 57351
43const EOF = 57352
44const ERROR = 57353
45const IDENTIFIER = 57354
46const LEFT_BRACE = 57355
47const LEFT_BRACKET = 57356
48const LEFT_PAREN = 57357
49const METRIC_IDENTIFIER = 57358
50const NUMBER = 57359
51const RIGHT_BRACE = 57360
52const RIGHT_BRACKET = 57361
53const RIGHT_PAREN = 57362
54const SEMICOLON = 57363
55const SPACE = 57364
56const STRING = 57365
57const TIMES = 57366
58const operatorsStart = 57367
59const ADD = 57368
60const DIV = 57369
61const EQL = 57370
62const EQL_REGEX = 57371
63const GTE = 57372
64const GTR = 57373
65const LAND = 57374
66const LOR = 57375
67const LSS = 57376
68const LTE = 57377
69const LUNLESS = 57378
70const MOD = 57379
71const MUL = 57380
72const NEQ = 57381
73const NEQ_REGEX = 57382
74const POW = 57383
75const SUB = 57384
76const operatorsEnd = 57385
77const aggregatorsStart = 57386
78const AVG = 57387
79const BOTTOMK = 57388
80const COUNT = 57389
81const COUNT_VALUES = 57390
82const MAX = 57391
83const MIN = 57392
84const QUANTILE = 57393
85const STDDEV = 57394
86const STDVAR = 57395
87const SUM = 57396
88const TOPK = 57397
89const aggregatorsEnd = 57398
90const keywordsStart = 57399
91const BOOL = 57400
92const BY = 57401
93const GROUP_LEFT = 57402
94const GROUP_RIGHT = 57403
95const IGNORING = 57404
96const OFFSET = 57405
97const ON = 57406
98const WITHOUT = 57407
99const keywordsEnd = 57408
100const startSymbolsStart = 57409
101const START_METRIC = 57410
102const START_SERIES_DESCRIPTION = 57411
103const START_EXPRESSION = 57412
104const START_METRIC_SELECTOR = 57413
105const startSymbolsEnd = 57414
106
107var yyToknames = [...]string{
108	"$end",
109	"error",
110	"$unk",
111	"ASSIGN",
112	"BLANK",
113	"COLON",
114	"COMMA",
115	"COMMENT",
116	"DURATION",
117	"EOF",
118	"ERROR",
119	"IDENTIFIER",
120	"LEFT_BRACE",
121	"LEFT_BRACKET",
122	"LEFT_PAREN",
123	"METRIC_IDENTIFIER",
124	"NUMBER",
125	"RIGHT_BRACE",
126	"RIGHT_BRACKET",
127	"RIGHT_PAREN",
128	"SEMICOLON",
129	"SPACE",
130	"STRING",
131	"TIMES",
132	"operatorsStart",
133	"ADD",
134	"DIV",
135	"EQL",
136	"EQL_REGEX",
137	"GTE",
138	"GTR",
139	"LAND",
140	"LOR",
141	"LSS",
142	"LTE",
143	"LUNLESS",
144	"MOD",
145	"MUL",
146	"NEQ",
147	"NEQ_REGEX",
148	"POW",
149	"SUB",
150	"operatorsEnd",
151	"aggregatorsStart",
152	"AVG",
153	"BOTTOMK",
154	"COUNT",
155	"COUNT_VALUES",
156	"MAX",
157	"MIN",
158	"QUANTILE",
159	"STDDEV",
160	"STDVAR",
161	"SUM",
162	"TOPK",
163	"aggregatorsEnd",
164	"keywordsStart",
165	"BOOL",
166	"BY",
167	"GROUP_LEFT",
168	"GROUP_RIGHT",
169	"IGNORING",
170	"OFFSET",
171	"ON",
172	"WITHOUT",
173	"keywordsEnd",
174	"startSymbolsStart",
175	"START_METRIC",
176	"START_SERIES_DESCRIPTION",
177	"START_EXPRESSION",
178	"START_METRIC_SELECTOR",
179	"startSymbolsEnd",
180}
181var yyStatenames = [...]string{}
182
183const yyEofCode = 1
184const yyErrCode = 2
185const yyInitialStackSize = 16
186
187//line promql/generated_parser.y:641
188
189//line yacctab:1
190var yyExca = [...]int{
191	-1, 1,
192	1, -1,
193	-2, 0,
194	-1, 15,
195	1, 102,
196	10, 102,
197	22, 102,
198	-2, 0,
199	-1, 158,
200	12, 164,
201	13, 164,
202	16, 164,
203	17, 164,
204	23, 164,
205	26, 164,
206	42, 164,
207	45, 164,
208	46, 164,
209	47, 164,
210	48, 164,
211	49, 164,
212	50, 164,
213	51, 164,
214	52, 164,
215	53, 164,
216	54, 164,
217	55, 164,
218	-2, 0,
219	-1, 159,
220	12, 164,
221	13, 164,
222	16, 164,
223	17, 164,
224	23, 164,
225	26, 164,
226	42, 164,
227	45, 164,
228	46, 164,
229	47, 164,
230	48, 164,
231	49, 164,
232	50, 164,
233	51, 164,
234	52, 164,
235	53, 164,
236	54, 164,
237	55, 164,
238	-2, 0,
239	-1, 175,
240	19, 162,
241	-2, 0,
242	-1, 222,
243	19, 163,
244	-2, 0,
245}
246
247const yyPrivate = 57344
248
249const yyLast = 484
250
251var yyAct = [...]int{
252
253	228, 179, 17, 119, 218, 219, 31, 152, 91, 57,
254	80, 79, 82, 156, 104, 157, 181, 6, 83, 158,
255	159, 78, 212, 231, 153, 98, 190, 211, 99, 206,
256	196, 210, 146, 229, 234, 86, 81, 87, 232, 226,
257	154, 85, 205, 36, 225, 48, 192, 193, 75, 84,
258	194, 97, 209, 145, 84, 52, 13, 224, 100, 182,
259	184, 186, 187, 195, 197, 200, 201, 202, 203, 204,
260	77, 7, 183, 185, 188, 189, 191, 198, 199, 88,
261	233, 93, 122, 2, 3, 4, 5, 132, 126, 129,
262	124, 92, 125, 82, 12, 52, 28, 207, 11, 83,
263	12, 13, 53, 155, 11, 144, 151, 61, 160, 161,
264	162, 163, 164, 165, 166, 167, 168, 169, 170, 171,
265	172, 173, 105, 106, 107, 108, 109, 110, 111, 112,
266	113, 114, 115, 116, 117, 118, 176, 181, 148, 138,
267	175, 128, 59, 14, 208, 150, 1, 190, 221, 223,
268	48, 196, 58, 174, 127, 178, 121, 213, 143, 153,
269	214, 215, 216, 217, 220, 139, 141, 192, 193, 35,
270	8, 194, 9, 9, 15, 154, 140, 142, 33, 222,
271	182, 184, 186, 187, 195, 197, 200, 201, 202, 203,
272	204, 27, 26, 183, 185, 188, 189, 191, 198, 199,
273	136, 78, 96, 25, 123, 135, 24, 95, 120, 227,
274	93, 121, 10, 230, 63, 121, 134, 78, 94, 103,
275	92, 23, 54, 133, 72, 73, 90, 235, 75, 62,
276	63, 64, 236, 65, 66, 67, 68, 69, 70, 71,
277	72, 73, 74, 59, 75, 76, 22, 21, 101, 130,
278	77, 78, 20, 58, 102, 19, 18, 149, 60, 56,
279	147, 177, 55, 62, 63, 64, 77, 65, 66, 67,
280	68, 69, 70, 71, 72, 73, 74, 34, 75, 76,
281	180, 78, 137, 29, 89, 0, 0, 0, 0, 0,
282	0, 0, 0, 62, 63, 64, 0, 65, 66, 67,
283	77, 69, 70, 71, 72, 73, 74, 0, 75, 76,
284	0, 78, 0, 0, 0, 0, 0, 0, 0, 0,
285	0, 0, 0, 62, 63, 64, 0, 65, 66, 0,
286	77, 69, 70, 0, 72, 73, 74, 0, 75, 76,
287	30, 52, 0, 32, 11, 48, 0, 0, 131, 0,
288	0, 49, 0, 0, 50, 0, 16, 0, 30, 52,
289	77, 32, 11, 48, 0, 0, 0, 0, 0, 49,
290	51, 0, 50, 37, 38, 39, 40, 41, 42, 43,
291	44, 45, 46, 47, 0, 0, 0, 0, 51, 0,
292	0, 37, 38, 39, 40, 41, 42, 43, 44, 45,
293	46, 47, 30, 52, 0, 32, 11, 48, 0, 0,
294	0, 0, 0, 49, 0, 0, 50, 0, 0, 0,
295	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
296	0, 0, 51, 0, 78, 37, 38, 39, 40, 41,
297	42, 43, 44, 45, 46, 47, 62, 63, 0, 0,
298	0, 0, 0, 0, 0, 0, 0, 72, 73, 0,
299	0, 75, 76, 0, 0, 0, 0, 0, 0, 0,
300	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
301	0, 0, 0, 77,
302}
303var yyPact = [...]int{
304
305	15, 61, 88, 88, 346, 82, -1000, -1000, -1000, 43,
306	-1000, -1000, -1000, 241, -1000, 105, -1000, 237, -1000, -1000,
307	-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 34,
308	39, -1000, 390, -1000, 390, 42, -1000, -1000, -1000, -1000,
309	-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
310	-1000, -1000, 208, -1000, -1000, 200, -1000, -1000, 23, -1000,
311	6, -1000, -44, -44, -44, -44, -44, -44, -44, -44,
312	-44, -44, -44, -44, -44, -44, -44, 206, 202, 39,
313	-47, -1000, 139, 139, 328, -1000, 203, 7, -1000, 198,
314	-1000, -1000, 137, -1000, -1000, 140, -1000, 30, -1000, 133,
315	390, -1000, -49, -41, -1000, 390, 390, 390, 390, 390,
316	390, 390, 390, 390, 390, 390, 390, 390, 390, -1000,
317	-1000, -1000, 134, -1000, -1000, -1000, -1000, 135, -1000, -1000,
318	22, -1000, 237, -1000, -1000, 79, -1000, 29, -1000, -1000,
319	-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 3, -2,
320	-1000, -1000, -1000, 28, 28, 187, 139, 139, 139, 139,
321	7, 420, 420, 420, 297, 267, 420, 420, 297, 7,
322	7, 420, 7, 187, -1000, 147, -1000, 37, -1000, -1000,
323	-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
324	-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
325	-1000, -1000, -1000, -1000, -1000, -1000, 390, -1000, -1000, -1000,
326	-1000, 16, 16, -1, -1000, -1000, -1000, -1000, -1000, -1000,
327	-1000, 19, 78, -1000, -1000, 14, -1000, 237, -1000, -1000,
328	-1000, 16, -1000, -1000, -1000, -1000, -1000,
329}
330var yyPgo = [...]int{
331
332	0, 284, 43, 8, 283, 1, 282, 280, 169, 277,
333	212, 262, 170, 9, 261, 5, 4, 260, 258, 0,
334	6, 257, 7, 256, 11, 58, 255, 254, 2, 252,
335	249, 10, 248, 247, 246, 221, 219, 206, 203, 192,
336	191, 96, 178, 3, 148, 146, 143,
337}
338var yyR1 = [...]int{
339
340	0, 45, 45, 45, 45, 45, 45, 45, 28, 28,
341	28, 28, 28, 28, 28, 28, 28, 28, 28, 23,
342	23, 23, 23, 24, 24, 26, 26, 26, 26, 26,
343	26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
344	25, 27, 27, 36, 36, 32, 32, 32, 32, 15,
345	15, 15, 15, 14, 14, 14, 5, 5, 29, 31,
346	31, 30, 30, 37, 35, 35, 33, 39, 39, 39,
347	39, 39, 40, 41, 41, 41, 2, 2, 2, 1,
348	1, 1, 3, 3, 3, 3, 12, 12, 8, 8,
349	10, 10, 10, 10, 11, 11, 11, 13, 13, 13,
350	13, 46, 18, 18, 18, 18, 17, 17, 17, 17,
351	17, 21, 21, 21, 4, 4, 4, 4, 4, 4,
352	4, 4, 4, 4, 4, 7, 7, 7, 7, 7,
353	7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
354	7, 7, 7, 7, 7, 7, 7, 7, 9, 9,
355	6, 6, 6, 6, 34, 20, 22, 22, 19, 43,
356	38, 42, 44, 44, 16, 16,
357}
358var yyR2 = [...]int{
359
360	0, 2, 2, 2, 2, 2, 2, 1, 1, 1,
361	1, 1, 1, 1, 1, 1, 1, 1, 1, 3,
362	3, 2, 2, 2, 2, 4, 4, 4, 4, 4,
363	4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
364	1, 0, 1, 3, 3, 1, 1, 3, 3, 3,
365	4, 2, 1, 3, 1, 2, 1, 1, 2, 3,
366	2, 3, 1, 3, 3, 3, 4, 6, 6, 5,
367	4, 3, 2, 2, 1, 1, 3, 4, 2, 3,
368	1, 2, 3, 3, 2, 1, 2, 1, 1, 1,
369	3, 4, 2, 0, 3, 1, 2, 3, 3, 2,
370	1, 2, 0, 3, 2, 1, 1, 3, 1, 3,
371	4, 1, 1, 1, 1, 1, 1, 1, 1, 1,
372	1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
373	1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
374	1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
375	1, 1, 1, 1, 1, 1, 2, 2, 1, 1,
376	1, 1, 0, 1, 0, 1,
377}
378var yyChk = [...]int{
379
380	-1000, -45, 68, 69, 70, 71, 2, 10, -12, -8,
381	-10, 16, 12, 13, -46, -12, 10, -28, -23, -26,
382	-29, -33, -34, -35, -37, -38, -39, -40, -41, -4,
383	12, -20, 15, -42, -9, -8, -2, 45, 46, 47,
384	48, 49, 50, 51, 52, 53, 54, 55, 17, 23,
385	26, 42, 13, -41, -10, -11, 18, -13, 12, 2,
386	-18, 2, 26, 27, 28, 30, 31, 32, 33, 34,
387	35, 36, 37, 38, 39, 41, 42, 63, 14, -24,
388	-31, 2, 59, 65, 15, -31, -28, -28, -2, -1,
389	18, -3, 12, 2, 18, 7, 2, 28, 2, 22,
390	-25, -32, -27, -36, 58, -25, -25, -25, -25, -25,
391	-25, -25, -25, -25, -25, -25, -25, -25, -25, -43,
392	2, 9, -43, 2, -31, -24, -15, 15, 2, -15,
393	-30, 20, -28, 20, 18, 7, 2, -6, 2, 28,
394	39, 29, 40, 18, -13, 23, 2, -17, 5, -21,
395	12, -20, -22, 26, 42, -28, 62, 64, 60, 61,
396	-28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
397	-28, -28, -28, -28, 19, 6, 2, -14, 20, -5,
398	-7, 2, 45, 58, 46, 59, 47, 48, 60, 61,
399	12, 62, 32, 33, 36, 49, 16, 50, 63, 64,
400	51, 52, 53, 54, 55, 20, 7, 18, -3, 23,
401	2, 24, 24, -22, -20, -20, -15, -15, -16, -15,
402	-16, -44, -43, 2, 20, 7, 2, -28, -19, 17,
403	-19, 24, 19, 2, 20, -5, -19,
404}
405var yyDef = [...]int{
406
407	0, -2, 93, 93, 0, 0, 7, 6, 1, 93,
408	87, 88, 89, 0, 2, -2, 3, 4, 8, 9,
409	10, 11, 12, 13, 14, 15, 16, 17, 18, 0,
410	89, 154, 0, 160, 0, 74, 75, 114, 115, 116,
411	117, 118, 119, 120, 121, 122, 123, 124, 155, 161,
412	148, 149, 0, 5, 86, 0, 92, 95, 0, 100,
413	101, 105, 41, 41, 41, 41, 41, 41, 41, 41,
414	41, 41, 41, 41, 41, 41, 41, 0, 0, 0,
415	21, 22, 0, 0, 0, 58, 0, 72, 73, 0,
416	78, 80, 0, 85, 90, 0, 96, 0, 99, 104,
417	0, 40, 45, 46, 42, 0, 0, 0, 0, 0,
418	0, 0, 0, 0, 0, 0, 0, 0, 0, 64,
419	65, 159, 0, 71, 19, 20, 23, 0, 52, 24,
420	0, 60, 62, 63, 76, 0, 81, 0, 84, 150,
421	151, 152, 153, 91, 94, 97, 98, 103, 106, 108,
422	111, 112, 113, 0, 0, 25, 0, 0, -2, -2,
423	26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
424	36, 37, 38, 39, 66, -2, 70, 0, 51, 54,
425	56, 57, 125, 126, 127, 128, 129, 130, 131, 132,
426	133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
427	143, 144, 145, 146, 147, 59, 0, 77, 79, 82,
428	83, 0, 0, 0, 156, 157, 43, 44, 47, 165,
429	48, 0, -2, 69, 49, 0, 55, 61, 107, 158,
430	109, 0, 67, 68, 50, 53, 110,
431}
432var yyTok1 = [...]int{
433
434	1,
435}
436var yyTok2 = [...]int{
437
438	2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
439	12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
440	22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
441	32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
442	42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
443	52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
444	62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
445	72,
446}
447var yyTok3 = [...]int{
448	0,
449}
450
451var yyErrorMessages = [...]struct {
452	state int
453	token int
454	msg   string
455}{}
456
457//line yaccpar:1
458
459/*	parser for yacc output	*/
460
461var (
462	yyDebug        = 0
463	yyErrorVerbose = false
464)
465
466type yyLexer interface {
467	Lex(lval *yySymType) int
468	Error(s string)
469}
470
471type yyParser interface {
472	Parse(yyLexer) int
473	Lookahead() int
474}
475
476type yyParserImpl struct {
477	lval  yySymType
478	stack [yyInitialStackSize]yySymType
479	char  int
480}
481
482func (p *yyParserImpl) Lookahead() int {
483	return p.char
484}
485
486func yyNewParser() yyParser {
487	return &yyParserImpl{}
488}
489
490const yyFlag = -1000
491
492func yyTokname(c int) string {
493	if c >= 1 && c-1 < len(yyToknames) {
494		if yyToknames[c-1] != "" {
495			return yyToknames[c-1]
496		}
497	}
498	return __yyfmt__.Sprintf("tok-%v", c)
499}
500
501func yyStatname(s int) string {
502	if s >= 0 && s < len(yyStatenames) {
503		if yyStatenames[s] != "" {
504			return yyStatenames[s]
505		}
506	}
507	return __yyfmt__.Sprintf("state-%v", s)
508}
509
510func yyErrorMessage(state, lookAhead int) string {
511	const TOKSTART = 4
512
513	if !yyErrorVerbose {
514		return "syntax error"
515	}
516
517	for _, e := range yyErrorMessages {
518		if e.state == state && e.token == lookAhead {
519			return "syntax error: " + e.msg
520		}
521	}
522
523	res := "syntax error: unexpected " + yyTokname(lookAhead)
524
525	// To match Bison, suggest at most four expected tokens.
526	expected := make([]int, 0, 4)
527
528	// Look for shiftable tokens.
529	base := yyPact[state]
530	for tok := TOKSTART; tok-1 < len(yyToknames); tok++ {
531		if n := base + tok; n >= 0 && n < yyLast && yyChk[yyAct[n]] == tok {
532			if len(expected) == cap(expected) {
533				return res
534			}
535			expected = append(expected, tok)
536		}
537	}
538
539	if yyDef[state] == -2 {
540		i := 0
541		for yyExca[i] != -1 || yyExca[i+1] != state {
542			i += 2
543		}
544
545		// Look for tokens that we accept or reduce.
546		for i += 2; yyExca[i] >= 0; i += 2 {
547			tok := yyExca[i]
548			if tok < TOKSTART || yyExca[i+1] == 0 {
549				continue
550			}
551			if len(expected) == cap(expected) {
552				return res
553			}
554			expected = append(expected, tok)
555		}
556
557		// If the default action is to accept or reduce, give up.
558		if yyExca[i+1] != 0 {
559			return res
560		}
561	}
562
563	for i, tok := range expected {
564		if i == 0 {
565			res += ", expecting "
566		} else {
567			res += " or "
568		}
569		res += yyTokname(tok)
570	}
571	return res
572}
573
574func yylex1(lex yyLexer, lval *yySymType) (char, token int) {
575	token = 0
576	char = lex.Lex(lval)
577	if char <= 0 {
578		token = yyTok1[0]
579		goto out
580	}
581	if char < len(yyTok1) {
582		token = yyTok1[char]
583		goto out
584	}
585	if char >= yyPrivate {
586		if char < yyPrivate+len(yyTok2) {
587			token = yyTok2[char-yyPrivate]
588			goto out
589		}
590	}
591	for i := 0; i < len(yyTok3); i += 2 {
592		token = yyTok3[i+0]
593		if token == char {
594			token = yyTok3[i+1]
595			goto out
596		}
597	}
598
599out:
600	if token == 0 {
601		token = yyTok2[1] /* unknown char */
602	}
603	if yyDebug >= 3 {
604		__yyfmt__.Printf("lex %s(%d)\n", yyTokname(token), uint(char))
605	}
606	return char, token
607}
608
609func yyParse(yylex yyLexer) int {
610	return yyNewParser().Parse(yylex)
611}
612
613func (yyrcvr *yyParserImpl) Parse(yylex yyLexer) int {
614	var yyn int
615	var yyVAL yySymType
616	var yyDollar []yySymType
617	_ = yyDollar // silence set and not used
618	yyS := yyrcvr.stack[:]
619
620	Nerrs := 0   /* number of errors */
621	Errflag := 0 /* error recovery flag */
622	yystate := 0
623	yyrcvr.char = -1
624	yytoken := -1 // yyrcvr.char translated into internal numbering
625	defer func() {
626		// Make sure we report no lookahead when not parsing.
627		yystate = -1
628		yyrcvr.char = -1
629		yytoken = -1
630	}()
631	yyp := -1
632	goto yystack
633
634ret0:
635	return 0
636
637ret1:
638	return 1
639
640yystack:
641	/* put a state and value onto the stack */
642	if yyDebug >= 4 {
643		__yyfmt__.Printf("char %v in %v\n", yyTokname(yytoken), yyStatname(yystate))
644	}
645
646	yyp++
647	if yyp >= len(yyS) {
648		nyys := make([]yySymType, len(yyS)*2)
649		copy(nyys, yyS)
650		yyS = nyys
651	}
652	yyS[yyp] = yyVAL
653	yyS[yyp].yys = yystate
654
655yynewstate:
656	yyn = yyPact[yystate]
657	if yyn <= yyFlag {
658		goto yydefault /* simple state */
659	}
660	if yyrcvr.char < 0 {
661		yyrcvr.char, yytoken = yylex1(yylex, &yyrcvr.lval)
662	}
663	yyn += yytoken
664	if yyn < 0 || yyn >= yyLast {
665		goto yydefault
666	}
667	yyn = yyAct[yyn]
668	if yyChk[yyn] == yytoken { /* valid shift */
669		yyrcvr.char = -1
670		yytoken = -1
671		yyVAL = yyrcvr.lval
672		yystate = yyn
673		if Errflag > 0 {
674			Errflag--
675		}
676		goto yystack
677	}
678
679yydefault:
680	/* default state action */
681	yyn = yyDef[yystate]
682	if yyn == -2 {
683		if yyrcvr.char < 0 {
684			yyrcvr.char, yytoken = yylex1(yylex, &yyrcvr.lval)
685		}
686
687		/* look through exception table */
688		xi := 0
689		for {
690			if yyExca[xi+0] == -1 && yyExca[xi+1] == yystate {
691				break
692			}
693			xi += 2
694		}
695		for xi += 2; ; xi += 2 {
696			yyn = yyExca[xi+0]
697			if yyn < 0 || yyn == yytoken {
698				break
699			}
700		}
701		yyn = yyExca[xi+1]
702		if yyn < 0 {
703			goto ret0
704		}
705	}
706	if yyn == 0 {
707		/* error ... attempt to resume parsing */
708		switch Errflag {
709		case 0: /* brand new error */
710			yylex.Error(yyErrorMessage(yystate, yytoken))
711			Nerrs++
712			if yyDebug >= 1 {
713				__yyfmt__.Printf("%s", yyStatname(yystate))
714				__yyfmt__.Printf(" saw %s\n", yyTokname(yytoken))
715			}
716			fallthrough
717
718		case 1, 2: /* incompletely recovered error ... try again */
719			Errflag = 3
720
721			/* find a state where "error" is a legal shift action */
722			for yyp >= 0 {
723				yyn = yyPact[yyS[yyp].yys] + yyErrCode
724				if yyn >= 0 && yyn < yyLast {
725					yystate = yyAct[yyn] /* simulate a shift of "error" */
726					if yyChk[yystate] == yyErrCode {
727						goto yystack
728					}
729				}
730
731				/* the current p has no shift on "error", pop stack */
732				if yyDebug >= 2 {
733					__yyfmt__.Printf("error recovery pops state %d\n", yyS[yyp].yys)
734				}
735				yyp--
736			}
737			/* there is no state on the stack with an error shift ... abort */
738			goto ret1
739
740		case 3: /* no shift yet; clobber input char */
741			if yyDebug >= 2 {
742				__yyfmt__.Printf("error recovery discards %s\n", yyTokname(yytoken))
743			}
744			if yytoken == yyEofCode {
745				goto ret1
746			}
747			yyrcvr.char = -1
748			yytoken = -1
749			goto yynewstate /* try again in the same state */
750		}
751	}
752
753	/* reduction by production yyn */
754	if yyDebug >= 2 {
755		__yyfmt__.Printf("reduce %v in:\n\t%v\n", yyn, yyStatname(yystate))
756	}
757
758	yynt := yyn
759	yypt := yyp
760	_ = yypt // guard against "declared and not used"
761
762	yyp -= yyR2[yyn]
763	// yyp is now the index of $0. Perform the default action. Iff the
764	// reduced production is ε, $1 is possibly out of range.
765	if yyp+1 >= len(yyS) {
766		nyys := make([]yySymType, len(yyS)*2)
767		copy(nyys, yyS)
768		yyS = nyys
769	}
770	yyVAL = yyS[yyp+1]
771
772	/* consult goto table to find next state */
773	yyn = yyR1[yyn]
774	yyg := yyPgo[yyn]
775	yyj := yyg + yyS[yyp].yys + 1
776
777	if yyj >= yyLast {
778		yystate = yyAct[yyg]
779	} else {
780		yystate = yyAct[yyj]
781		if yyChk[yystate] != -yyn {
782			yystate = yyAct[yyg]
783		}
784	}
785	// dummy call; replaced with literal code
786	switch yynt {
787
788	case 1:
789		yyDollar = yyS[yypt-2 : yypt+1]
790//line promql/generated_parser.y:166
791		{
792			yylex.(*parser).generatedParserResult = yyDollar[2].labels
793		}
794	case 3:
795		yyDollar = yyS[yypt-2 : yypt+1]
796//line promql/generated_parser.y:169
797		{
798			yylex.(*parser).errorf("no expression found in input")
799		}
800	case 4:
801		yyDollar = yyS[yypt-2 : yypt+1]
802//line promql/generated_parser.y:171
803		{
804			yylex.(*parser).generatedParserResult = yyDollar[2].node
805		}
806	case 5:
807		yyDollar = yyS[yypt-2 : yypt+1]
808//line promql/generated_parser.y:173
809		{
810			yylex.(*parser).generatedParserResult = yyDollar[2].node
811		}
812	case 7:
813		yyDollar = yyS[yypt-1 : yypt+1]
814//line promql/generated_parser.y:176
815		{
816			yylex.(*parser).unexpected("", "")
817		}
818	case 19:
819		yyDollar = yyS[yypt-3 : yypt+1]
820//line promql/generated_parser.y:198
821		{
822			yyVAL.node = yylex.(*parser).newAggregateExpr(yyDollar[1].item, yyDollar[2].node, yyDollar[3].node)
823		}
824	case 20:
825		yyDollar = yyS[yypt-3 : yypt+1]
826//line promql/generated_parser.y:200
827		{
828			yyVAL.node = yylex.(*parser).newAggregateExpr(yyDollar[1].item, yyDollar[3].node, yyDollar[2].node)
829		}
830	case 21:
831		yyDollar = yyS[yypt-2 : yypt+1]
832//line promql/generated_parser.y:202
833		{
834			yyVAL.node = yylex.(*parser).newAggregateExpr(yyDollar[1].item, &AggregateExpr{}, yyDollar[2].node)
835		}
836	case 22:
837		yyDollar = yyS[yypt-2 : yypt+1]
838//line promql/generated_parser.y:204
839		{
840			yylex.(*parser).unexpected("aggregation", "")
841		}
842	case 23:
843		yyDollar = yyS[yypt-2 : yypt+1]
844//line promql/generated_parser.y:209
845		{
846			yyVAL.node = &AggregateExpr{
847				Grouping: yyDollar[2].strings,
848			}
849		}
850	case 24:
851		yyDollar = yyS[yypt-2 : yypt+1]
852//line promql/generated_parser.y:215
853		{
854			yyVAL.node = &AggregateExpr{
855				Grouping: yyDollar[2].strings,
856				Without:  true,
857			}
858		}
859	case 25:
860		yyDollar = yyS[yypt-4 : yypt+1]
861//line promql/generated_parser.y:228
862		{
863			yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node)
864		}
865	case 26:
866		yyDollar = yyS[yypt-4 : yypt+1]
867//line promql/generated_parser.y:229
868		{
869			yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node)
870		}
871	case 27:
872		yyDollar = yyS[yypt-4 : yypt+1]
873//line promql/generated_parser.y:230
874		{
875			yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node)
876		}
877	case 28:
878		yyDollar = yyS[yypt-4 : yypt+1]
879//line promql/generated_parser.y:231
880		{
881			yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node)
882		}
883	case 29:
884		yyDollar = yyS[yypt-4 : yypt+1]
885//line promql/generated_parser.y:232
886		{
887			yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node)
888		}
889	case 30:
890		yyDollar = yyS[yypt-4 : yypt+1]
891//line promql/generated_parser.y:233
892		{
893			yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node)
894		}
895	case 31:
896		yyDollar = yyS[yypt-4 : yypt+1]
897//line promql/generated_parser.y:234
898		{
899			yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node)
900		}
901	case 32:
902		yyDollar = yyS[yypt-4 : yypt+1]
903//line promql/generated_parser.y:235
904		{
905			yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node)
906		}
907	case 33:
908		yyDollar = yyS[yypt-4 : yypt+1]
909//line promql/generated_parser.y:236
910		{
911			yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node)
912		}
913	case 34:
914		yyDollar = yyS[yypt-4 : yypt+1]
915//line promql/generated_parser.y:237
916		{
917			yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node)
918		}
919	case 35:
920		yyDollar = yyS[yypt-4 : yypt+1]
921//line promql/generated_parser.y:238
922		{
923			yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node)
924		}
925	case 36:
926		yyDollar = yyS[yypt-4 : yypt+1]
927//line promql/generated_parser.y:239
928		{
929			yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node)
930		}
931	case 37:
932		yyDollar = yyS[yypt-4 : yypt+1]
933//line promql/generated_parser.y:240
934		{
935			yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node)
936		}
937	case 38:
938		yyDollar = yyS[yypt-4 : yypt+1]
939//line promql/generated_parser.y:241
940		{
941			yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node)
942		}
943	case 39:
944		yyDollar = yyS[yypt-4 : yypt+1]
945//line promql/generated_parser.y:242
946		{
947			yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node)
948		}
949	case 41:
950		yyDollar = yyS[yypt-0 : yypt+1]
951//line promql/generated_parser.y:250
952		{
953			yyVAL.node = &BinaryExpr{
954				VectorMatching: &VectorMatching{Card: CardOneToOne},
955			}
956		}
957	case 42:
958		yyDollar = yyS[yypt-1 : yypt+1]
959//line promql/generated_parser.y:255
960		{
961			yyVAL.node = &BinaryExpr{
962				VectorMatching: &VectorMatching{Card: CardOneToOne},
963				ReturnBool:     true,
964			}
965		}
966	case 43:
967		yyDollar = yyS[yypt-3 : yypt+1]
968//line promql/generated_parser.y:263
969		{
970			yyVAL.node = yyDollar[1].node
971			yyVAL.node.(*BinaryExpr).VectorMatching.MatchingLabels = yyDollar[3].strings
972		}
973	case 44:
974		yyDollar = yyS[yypt-3 : yypt+1]
975//line promql/generated_parser.y:268
976		{
977			yyVAL.node = yyDollar[1].node
978			yyVAL.node.(*BinaryExpr).VectorMatching.MatchingLabels = yyDollar[3].strings
979			yyVAL.node.(*BinaryExpr).VectorMatching.On = true
980		}
981	case 47:
982		yyDollar = yyS[yypt-3 : yypt+1]
983//line promql/generated_parser.y:278
984		{
985			yyVAL.node = yyDollar[1].node
986			yyVAL.node.(*BinaryExpr).VectorMatching.Card = CardManyToOne
987			yyVAL.node.(*BinaryExpr).VectorMatching.Include = yyDollar[3].strings
988		}
989	case 48:
990		yyDollar = yyS[yypt-3 : yypt+1]
991//line promql/generated_parser.y:284
992		{
993			yyVAL.node = yyDollar[1].node
994			yyVAL.node.(*BinaryExpr).VectorMatching.Card = CardOneToMany
995			yyVAL.node.(*BinaryExpr).VectorMatching.Include = yyDollar[3].strings
996		}
997	case 49:
998		yyDollar = yyS[yypt-3 : yypt+1]
999//line promql/generated_parser.y:293
1000		{
1001			yyVAL.strings = yyDollar[2].strings
1002		}
1003	case 50:
1004		yyDollar = yyS[yypt-4 : yypt+1]
1005//line promql/generated_parser.y:295
1006		{
1007			yyVAL.strings = yyDollar[2].strings
1008		}
1009	case 51:
1010		yyDollar = yyS[yypt-2 : yypt+1]
1011//line promql/generated_parser.y:297
1012		{
1013			yyVAL.strings = []string{}
1014		}
1015	case 52:
1016		yyDollar = yyS[yypt-1 : yypt+1]
1017//line promql/generated_parser.y:299
1018		{
1019			yylex.(*parser).unexpected("grouping opts", "\"(\"")
1020		}
1021	case 53:
1022		yyDollar = yyS[yypt-3 : yypt+1]
1023//line promql/generated_parser.y:305
1024		{
1025			yyVAL.strings = append(yyDollar[1].strings, yyDollar[3].item.Val)
1026		}
1027	case 54:
1028		yyDollar = yyS[yypt-1 : yypt+1]
1029//line promql/generated_parser.y:307
1030		{
1031			yyVAL.strings = []string{yyDollar[1].item.Val}
1032		}
1033	case 55:
1034		yyDollar = yyS[yypt-2 : yypt+1]
1035//line promql/generated_parser.y:309
1036		{
1037			yylex.(*parser).unexpected("grouping opts", "\",\" or \")\"")
1038		}
1039	case 56:
1040		yyDollar = yyS[yypt-1 : yypt+1]
1041//line promql/generated_parser.y:313
1042		{
1043			if !isLabel(yyDollar[1].item.Val) {
1044				yylex.(*parser).unexpected("grouping opts", "label")
1045			}
1046			yyVAL.item = yyDollar[1].item
1047		}
1048	case 57:
1049		yyDollar = yyS[yypt-1 : yypt+1]
1050//line promql/generated_parser.y:320
1051		{
1052			yylex.(*parser).unexpected("grouping opts", "label")
1053		}
1054	case 58:
1055		yyDollar = yyS[yypt-2 : yypt+1]
1056//line promql/generated_parser.y:328
1057		{
1058			fn, exist := getFunction(yyDollar[1].item.Val)
1059			if !exist {
1060				yylex.(*parser).errorf("unknown function with name %q", yyDollar[1].item.Val)
1061			}
1062			yyVAL.node = &Call{
1063				Func: fn,
1064				Args: yyDollar[2].node.(Expressions),
1065			}
1066		}
1067	case 59:
1068		yyDollar = yyS[yypt-3 : yypt+1]
1069//line promql/generated_parser.y:341
1070		{
1071			yyVAL.node = yyDollar[2].node
1072		}
1073	case 60:
1074		yyDollar = yyS[yypt-2 : yypt+1]
1075//line promql/generated_parser.y:343
1076		{
1077			yyVAL.node = Expressions{}
1078		}
1079	case 61:
1080		yyDollar = yyS[yypt-3 : yypt+1]
1081//line promql/generated_parser.y:347
1082		{
1083			yyVAL.node = append(yyDollar[1].node.(Expressions), yyDollar[3].node.(Expr))
1084		}
1085	case 62:
1086		yyDollar = yyS[yypt-1 : yypt+1]
1087//line promql/generated_parser.y:349
1088		{
1089			yyVAL.node = Expressions{yyDollar[1].node.(Expr)}
1090		}
1091	case 63:
1092		yyDollar = yyS[yypt-3 : yypt+1]
1093//line promql/generated_parser.y:357
1094		{
1095			yyVAL.node = &ParenExpr{Expr: yyDollar[2].node.(Expr)}
1096		}
1097	case 64:
1098		yyDollar = yyS[yypt-3 : yypt+1]
1099//line promql/generated_parser.y:365
1100		{
1101			yylex.(*parser).addOffset(yyDollar[1].node, yyDollar[3].duration)
1102			yyVAL.node = yyDollar[1].node
1103		}
1104	case 65:
1105		yyDollar = yyS[yypt-3 : yypt+1]
1106//line promql/generated_parser.y:370
1107		{
1108			yylex.(*parser).unexpected("offset", "duration")
1109		}
1110	case 66:
1111		yyDollar = yyS[yypt-4 : yypt+1]
1112//line promql/generated_parser.y:378
1113		{
1114			vs, ok := yyDollar[1].node.(*VectorSelector)
1115			if !ok {
1116				yylex.(*parser).errorf("ranges only allowed for vector selectors")
1117			}
1118			if vs.Offset != 0 {
1119				yylex.(*parser).errorf("no offset modifiers allowed before range")
1120			}
1121			yyVAL.node = &MatrixSelector{
1122				Name:          vs.Name,
1123				Offset:        vs.Offset,
1124				LabelMatchers: vs.LabelMatchers,
1125				Range:         yyDollar[3].duration,
1126			}
1127		}
1128	case 67:
1129		yyDollar = yyS[yypt-6 : yypt+1]
1130//line promql/generated_parser.y:396
1131		{
1132			yyVAL.node = &SubqueryExpr{
1133				Expr:  yyDollar[1].node.(Expr),
1134				Range: yyDollar[3].duration,
1135				Step:  yyDollar[5].duration,
1136			}
1137		}
1138	case 68:
1139		yyDollar = yyS[yypt-6 : yypt+1]
1140//line promql/generated_parser.y:404
1141		{
1142			yylex.(*parser).unexpected("subquery selector", "\"]\"")
1143		}
1144	case 69:
1145		yyDollar = yyS[yypt-5 : yypt+1]
1146//line promql/generated_parser.y:406
1147		{
1148			yylex.(*parser).unexpected("subquery selector", "duration or \"]\"")
1149		}
1150	case 70:
1151		yyDollar = yyS[yypt-4 : yypt+1]
1152//line promql/generated_parser.y:408
1153		{
1154			yylex.(*parser).unexpected("subquery or range", "\":\" or \"]\"")
1155		}
1156	case 71:
1157		yyDollar = yyS[yypt-3 : yypt+1]
1158//line promql/generated_parser.y:410
1159		{
1160			yylex.(*parser).unexpected("subquery selector", "duration")
1161		}
1162	case 72:
1163		yyDollar = yyS[yypt-2 : yypt+1]
1164//line promql/generated_parser.y:420
1165		{
1166			if nl, ok := yyDollar[2].node.(*NumberLiteral); ok {
1167				if yyDollar[1].item.Typ == SUB {
1168					nl.Val *= -1
1169				}
1170				yyVAL.node = nl
1171			} else {
1172				yyVAL.node = &UnaryExpr{Op: yyDollar[1].item.Typ, Expr: yyDollar[2].node.(Expr)}
1173			}
1174		}
1175	case 73:
1176		yyDollar = yyS[yypt-2 : yypt+1]
1177//line promql/generated_parser.y:437
1178		{
1179			yyVAL.node = yylex.(*parser).newVectorSelector(yyDollar[1].item.Val, yyDollar[2].matchers)
1180		}
1181	case 74:
1182		yyDollar = yyS[yypt-1 : yypt+1]
1183//line promql/generated_parser.y:439
1184		{
1185			yyVAL.node = yylex.(*parser).newVectorSelector(yyDollar[1].item.Val, nil)
1186		}
1187	case 75:
1188		yyDollar = yyS[yypt-1 : yypt+1]
1189//line promql/generated_parser.y:441
1190		{
1191			yyVAL.node = yylex.(*parser).newVectorSelector("", yyDollar[1].matchers)
1192		}
1193	case 76:
1194		yyDollar = yyS[yypt-3 : yypt+1]
1195//line promql/generated_parser.y:445
1196		{
1197			yyVAL.matchers = yyDollar[2].matchers
1198		}
1199	case 77:
1200		yyDollar = yyS[yypt-4 : yypt+1]
1201//line promql/generated_parser.y:447
1202		{
1203			yyVAL.matchers = yyDollar[2].matchers
1204		}
1205	case 78:
1206		yyDollar = yyS[yypt-2 : yypt+1]
1207//line promql/generated_parser.y:449
1208		{
1209			yyVAL.matchers = []*labels.Matcher{}
1210		}
1211	case 79:
1212		yyDollar = yyS[yypt-3 : yypt+1]
1213//line promql/generated_parser.y:454
1214		{
1215			yyVAL.matchers = append(yyDollar[1].matchers, yyDollar[3].matcher)
1216		}
1217	case 80:
1218		yyDollar = yyS[yypt-1 : yypt+1]
1219//line promql/generated_parser.y:456
1220		{
1221			yyVAL.matchers = []*labels.Matcher{yyDollar[1].matcher}
1222		}
1223	case 81:
1224		yyDollar = yyS[yypt-2 : yypt+1]
1225//line promql/generated_parser.y:458
1226		{
1227			yylex.(*parser).unexpected("label matching", "\",\" or \"}\"")
1228		}
1229	case 82:
1230		yyDollar = yyS[yypt-3 : yypt+1]
1231//line promql/generated_parser.y:462
1232		{
1233			yyVAL.matcher = yylex.(*parser).newLabelMatcher(yyDollar[1].item, yyDollar[2].item, yyDollar[3].item)
1234		}
1235	case 83:
1236		yyDollar = yyS[yypt-3 : yypt+1]
1237//line promql/generated_parser.y:464
1238		{
1239			yylex.(*parser).unexpected("label matching", "string")
1240		}
1241	case 84:
1242		yyDollar = yyS[yypt-2 : yypt+1]
1243//line promql/generated_parser.y:466
1244		{
1245			yylex.(*parser).unexpected("label matching", "label matching operator")
1246		}
1247	case 85:
1248		yyDollar = yyS[yypt-1 : yypt+1]
1249//line promql/generated_parser.y:468
1250		{
1251			yylex.(*parser).unexpected("label matching", "identifier or \"}\"")
1252		}
1253	case 86:
1254		yyDollar = yyS[yypt-2 : yypt+1]
1255//line promql/generated_parser.y:476
1256		{
1257			yyVAL.labels = append(yyDollar[2].labels, labels.Label{Name: labels.MetricName, Value: yyDollar[1].item.Val})
1258			sort.Sort(yyVAL.labels)
1259		}
1260	case 87:
1261		yyDollar = yyS[yypt-1 : yypt+1]
1262//line promql/generated_parser.y:478
1263		{
1264			yyVAL.labels = yyDollar[1].labels
1265		}
1266	case 90:
1267		yyDollar = yyS[yypt-3 : yypt+1]
1268//line promql/generated_parser.y:485
1269		{
1270			yyVAL.labels = labels.New(yyDollar[2].labels...)
1271		}
1272	case 91:
1273		yyDollar = yyS[yypt-4 : yypt+1]
1274//line promql/generated_parser.y:487
1275		{
1276			yyVAL.labels = labels.New(yyDollar[2].labels...)
1277		}
1278	case 92:
1279		yyDollar = yyS[yypt-2 : yypt+1]
1280//line promql/generated_parser.y:489
1281		{
1282			yyVAL.labels = labels.New()
1283		}
1284	case 93:
1285		yyDollar = yyS[yypt-0 : yypt+1]
1286//line promql/generated_parser.y:491
1287		{
1288			yyVAL.labels = labels.New()
1289		}
1290	case 94:
1291		yyDollar = yyS[yypt-3 : yypt+1]
1292//line promql/generated_parser.y:495
1293		{
1294			yyVAL.labels = append(yyDollar[1].labels, yyDollar[3].label)
1295		}
1296	case 95:
1297		yyDollar = yyS[yypt-1 : yypt+1]
1298//line promql/generated_parser.y:497
1299		{
1300			yyVAL.labels = []labels.Label{yyDollar[1].label}
1301		}
1302	case 96:
1303		yyDollar = yyS[yypt-2 : yypt+1]
1304//line promql/generated_parser.y:499
1305		{
1306			yylex.(*parser).unexpected("label set", "\",\" or \"}\"")
1307		}
1308	case 97:
1309		yyDollar = yyS[yypt-3 : yypt+1]
1310//line promql/generated_parser.y:504
1311		{
1312			yyVAL.label = labels.Label{Name: yyDollar[1].item.Val, Value: yylex.(*parser).unquoteString(yyDollar[3].item.Val)}
1313		}
1314	case 98:
1315		yyDollar = yyS[yypt-3 : yypt+1]
1316//line promql/generated_parser.y:506
1317		{
1318			yylex.(*parser).unexpected("label set", "string")
1319		}
1320	case 99:
1321		yyDollar = yyS[yypt-2 : yypt+1]
1322//line promql/generated_parser.y:508
1323		{
1324			yylex.(*parser).unexpected("label set", "\"=\"")
1325		}
1326	case 100:
1327		yyDollar = yyS[yypt-1 : yypt+1]
1328//line promql/generated_parser.y:510
1329		{
1330			yylex.(*parser).unexpected("label set", "identifier or \"}\"")
1331		}
1332	case 101:
1333		yyDollar = yyS[yypt-2 : yypt+1]
1334//line promql/generated_parser.y:518
1335		{
1336			yylex.(*parser).generatedParserResult = &seriesDescription{
1337				labels: yyDollar[1].labels,
1338				values: yyDollar[2].series,
1339			}
1340		}
1341	case 102:
1342		yyDollar = yyS[yypt-0 : yypt+1]
1343//line promql/generated_parser.y:527
1344		{
1345			yyVAL.series = []sequenceValue{}
1346		}
1347	case 103:
1348		yyDollar = yyS[yypt-3 : yypt+1]
1349//line promql/generated_parser.y:529
1350		{
1351			yyVAL.series = append(yyDollar[1].series, yyDollar[3].series...)
1352		}
1353	case 104:
1354		yyDollar = yyS[yypt-2 : yypt+1]
1355//line promql/generated_parser.y:531
1356		{
1357			yyVAL.series = yyDollar[1].series
1358		}
1359	case 105:
1360		yyDollar = yyS[yypt-1 : yypt+1]
1361//line promql/generated_parser.y:533
1362		{
1363			yylex.(*parser).unexpected("series values", "")
1364		}
1365	case 106:
1366		yyDollar = yyS[yypt-1 : yypt+1]
1367//line promql/generated_parser.y:537
1368		{
1369			yyVAL.series = []sequenceValue{{omitted: true}}
1370		}
1371	case 107:
1372		yyDollar = yyS[yypt-3 : yypt+1]
1373//line promql/generated_parser.y:539
1374		{
1375			yyVAL.series = []sequenceValue{}
1376			for i := uint64(0); i < yyDollar[3].uint; i++ {
1377				yyVAL.series = append(yyVAL.series, sequenceValue{omitted: true})
1378			}
1379		}
1380	case 108:
1381		yyDollar = yyS[yypt-1 : yypt+1]
1382//line promql/generated_parser.y:546
1383		{
1384			yyVAL.series = []sequenceValue{{value: yyDollar[1].float}}
1385		}
1386	case 109:
1387		yyDollar = yyS[yypt-3 : yypt+1]
1388//line promql/generated_parser.y:548
1389		{
1390			yyVAL.series = []sequenceValue{}
1391			for i := uint64(0); i <= yyDollar[3].uint; i++ {
1392				yyVAL.series = append(yyVAL.series, sequenceValue{value: yyDollar[1].float})
1393			}
1394		}
1395	case 110:
1396		yyDollar = yyS[yypt-4 : yypt+1]
1397//line promql/generated_parser.y:555
1398		{
1399			yyVAL.series = []sequenceValue{}
1400			for i := uint64(0); i <= yyDollar[4].uint; i++ {
1401				yyVAL.series = append(yyVAL.series, sequenceValue{value: yyDollar[1].float})
1402				yyDollar[1].float += yyDollar[2].float
1403			}
1404		}
1405	case 111:
1406		yyDollar = yyS[yypt-1 : yypt+1]
1407//line promql/generated_parser.y:565
1408		{
1409			if yyDollar[1].item.Val != "stale" {
1410				yylex.(*parser).unexpected("series values", "number or \"stale\"")
1411			}
1412			yyVAL.float = math.Float64frombits(value.StaleNaN)
1413		}
1414	case 154:
1415		yyDollar = yyS[yypt-1 : yypt+1]
1416//line promql/generated_parser.y:595
1417		{
1418			yyVAL.node = &NumberLiteral{yyDollar[1].float}
1419		}
1420	case 155:
1421		yyDollar = yyS[yypt-1 : yypt+1]
1422//line promql/generated_parser.y:597
1423		{
1424			yyVAL.float = yylex.(*parser).number(yyDollar[1].item.Val)
1425		}
1426	case 156:
1427		yyDollar = yyS[yypt-2 : yypt+1]
1428//line promql/generated_parser.y:599
1429		{
1430			yyVAL.float = yyDollar[2].float
1431		}
1432	case 157:
1433		yyDollar = yyS[yypt-2 : yypt+1]
1434//line promql/generated_parser.y:600
1435		{
1436			yyVAL.float = -yyDollar[2].float
1437		}
1438	case 158:
1439		yyDollar = yyS[yypt-1 : yypt+1]
1440//line promql/generated_parser.y:604
1441		{
1442			var err error
1443			yyVAL.uint, err = strconv.ParseUint(yyDollar[1].item.Val, 10, 64)
1444			if err != nil {
1445				yylex.(*parser).errorf("invalid repetition in series values: %s", err)
1446			}
1447		}
1448	case 159:
1449		yyDollar = yyS[yypt-1 : yypt+1]
1450//line promql/generated_parser.y:614
1451		{
1452			var err error
1453			yyVAL.duration, err = parseDuration(yyDollar[1].item.Val)
1454			if err != nil {
1455				yylex.(*parser).error(err)
1456			}
1457		}
1458	case 160:
1459		yyDollar = yyS[yypt-1 : yypt+1]
1460//line promql/generated_parser.y:624
1461		{
1462			yyVAL.node = &StringLiteral{yyDollar[1].string}
1463		}
1464	case 161:
1465		yyDollar = yyS[yypt-1 : yypt+1]
1466//line promql/generated_parser.y:626
1467		{
1468			yyVAL.string = yylex.(*parser).unquoteString(yyDollar[1].item.Val)
1469		}
1470	case 162:
1471		yyDollar = yyS[yypt-0 : yypt+1]
1472//line promql/generated_parser.y:633
1473		{
1474			yyVAL.duration = 0
1475		}
1476	case 164:
1477		yyDollar = yyS[yypt-0 : yypt+1]
1478//line promql/generated_parser.y:637
1479		{
1480			yyVAL.strings = nil
1481		}
1482	}
1483	goto yystack /* stack new state and value */
1484}
1485