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