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