mirror of
https://github.com/prometheus/prometheus.git
synced 2024-11-15 01:54:06 -08:00
69edd8709b
Return annotations (warnings and infos) from PromQL queries This generalizes the warnings we have already used before (but only for problems with remote read) as "annotations". Annotations can be warnings or infos (the latter could be false positives). We do not treat them different in the API for now and return them all as "warnings". It would be easy to distinguish them and return infos separately, should that appear useful in the future. The new annotations are then used to create a lot of warnings or infos during PromQL evaluations. Partially these are things we have wanted for a long time (e.g. inform the user that they have applied `rate` to a metric that doesn't look like a counter), but the new native histograms have created even more needs for those annotations (e.g. if a query tries to aggregate float numbers with histograms). The annotations added here are not yet complete. A prominent example would be a warning about a range too short for a rate calculation. But such a warnings is more tricky to create with good fidelity and we will tackle it later. Another TODO is to take annotations into account when evaluating recording rules. --------- Signed-off-by: Jeanette Tan <jeanette.tan@grafana.com>
1974 lines
50 KiB
Go
1974 lines
50 KiB
Go
// Code generated by goyacc -o promql/parser/generated_parser.y.go promql/parser/generated_parser.y. DO NOT EDIT.
|
|
|
|
//line promql/parser/generated_parser.y:15
|
|
package parser
|
|
|
|
import __yyfmt__ "fmt"
|
|
|
|
//line promql/parser/generated_parser.y:15
|
|
|
|
import (
|
|
"math"
|
|
"strconv"
|
|
"time"
|
|
|
|
"github.com/prometheus/prometheus/model/histogram"
|
|
"github.com/prometheus/prometheus/model/labels"
|
|
"github.com/prometheus/prometheus/model/value"
|
|
"github.com/prometheus/prometheus/promql/parser/posrange"
|
|
)
|
|
|
|
//line promql/parser/generated_parser.y:30
|
|
type yySymType struct {
|
|
yys int
|
|
node Node
|
|
item Item
|
|
matchers []*labels.Matcher
|
|
matcher *labels.Matcher
|
|
label labels.Label
|
|
labels labels.Labels
|
|
lblList []labels.Label
|
|
strings []string
|
|
series []SequenceValue
|
|
histogram *histogram.FloatHistogram
|
|
descriptors map[string]interface{}
|
|
bucket_set []float64
|
|
int int64
|
|
uint uint64
|
|
float float64
|
|
duration time.Duration
|
|
}
|
|
|
|
const EQL = 57346
|
|
const BLANK = 57347
|
|
const COLON = 57348
|
|
const COMMA = 57349
|
|
const COMMENT = 57350
|
|
const DURATION = 57351
|
|
const EOF = 57352
|
|
const ERROR = 57353
|
|
const IDENTIFIER = 57354
|
|
const LEFT_BRACE = 57355
|
|
const LEFT_BRACKET = 57356
|
|
const LEFT_PAREN = 57357
|
|
const OPEN_HIST = 57358
|
|
const CLOSE_HIST = 57359
|
|
const METRIC_IDENTIFIER = 57360
|
|
const NUMBER = 57361
|
|
const RIGHT_BRACE = 57362
|
|
const RIGHT_BRACKET = 57363
|
|
const RIGHT_PAREN = 57364
|
|
const SEMICOLON = 57365
|
|
const SPACE = 57366
|
|
const STRING = 57367
|
|
const TIMES = 57368
|
|
const histogramDescStart = 57369
|
|
const SUM_DESC = 57370
|
|
const COUNT_DESC = 57371
|
|
const SCHEMA_DESC = 57372
|
|
const OFFSET_DESC = 57373
|
|
const NEGATIVE_OFFSET_DESC = 57374
|
|
const BUCKETS_DESC = 57375
|
|
const NEGATIVE_BUCKETS_DESC = 57376
|
|
const ZERO_BUCKET_DESC = 57377
|
|
const ZERO_BUCKET_WIDTH_DESC = 57378
|
|
const histogramDescEnd = 57379
|
|
const operatorsStart = 57380
|
|
const ADD = 57381
|
|
const DIV = 57382
|
|
const EQLC = 57383
|
|
const EQL_REGEX = 57384
|
|
const GTE = 57385
|
|
const GTR = 57386
|
|
const LAND = 57387
|
|
const LOR = 57388
|
|
const LSS = 57389
|
|
const LTE = 57390
|
|
const LUNLESS = 57391
|
|
const MOD = 57392
|
|
const MUL = 57393
|
|
const NEQ = 57394
|
|
const NEQ_REGEX = 57395
|
|
const POW = 57396
|
|
const SUB = 57397
|
|
const AT = 57398
|
|
const ATAN2 = 57399
|
|
const operatorsEnd = 57400
|
|
const aggregatorsStart = 57401
|
|
const AVG = 57402
|
|
const BOTTOMK = 57403
|
|
const COUNT = 57404
|
|
const COUNT_VALUES = 57405
|
|
const GROUP = 57406
|
|
const MAX = 57407
|
|
const MIN = 57408
|
|
const QUANTILE = 57409
|
|
const STDDEV = 57410
|
|
const STDVAR = 57411
|
|
const SUM = 57412
|
|
const TOPK = 57413
|
|
const aggregatorsEnd = 57414
|
|
const keywordsStart = 57415
|
|
const BOOL = 57416
|
|
const BY = 57417
|
|
const GROUP_LEFT = 57418
|
|
const GROUP_RIGHT = 57419
|
|
const IGNORING = 57420
|
|
const OFFSET = 57421
|
|
const ON = 57422
|
|
const WITHOUT = 57423
|
|
const keywordsEnd = 57424
|
|
const preprocessorStart = 57425
|
|
const START = 57426
|
|
const END = 57427
|
|
const preprocessorEnd = 57428
|
|
const startSymbolsStart = 57429
|
|
const START_METRIC = 57430
|
|
const START_SERIES_DESCRIPTION = 57431
|
|
const START_EXPRESSION = 57432
|
|
const START_METRIC_SELECTOR = 57433
|
|
const startSymbolsEnd = 57434
|
|
|
|
var yyToknames = [...]string{
|
|
"$end",
|
|
"error",
|
|
"$unk",
|
|
"EQL",
|
|
"BLANK",
|
|
"COLON",
|
|
"COMMA",
|
|
"COMMENT",
|
|
"DURATION",
|
|
"EOF",
|
|
"ERROR",
|
|
"IDENTIFIER",
|
|
"LEFT_BRACE",
|
|
"LEFT_BRACKET",
|
|
"LEFT_PAREN",
|
|
"OPEN_HIST",
|
|
"CLOSE_HIST",
|
|
"METRIC_IDENTIFIER",
|
|
"NUMBER",
|
|
"RIGHT_BRACE",
|
|
"RIGHT_BRACKET",
|
|
"RIGHT_PAREN",
|
|
"SEMICOLON",
|
|
"SPACE",
|
|
"STRING",
|
|
"TIMES",
|
|
"histogramDescStart",
|
|
"SUM_DESC",
|
|
"COUNT_DESC",
|
|
"SCHEMA_DESC",
|
|
"OFFSET_DESC",
|
|
"NEGATIVE_OFFSET_DESC",
|
|
"BUCKETS_DESC",
|
|
"NEGATIVE_BUCKETS_DESC",
|
|
"ZERO_BUCKET_DESC",
|
|
"ZERO_BUCKET_WIDTH_DESC",
|
|
"histogramDescEnd",
|
|
"operatorsStart",
|
|
"ADD",
|
|
"DIV",
|
|
"EQLC",
|
|
"EQL_REGEX",
|
|
"GTE",
|
|
"GTR",
|
|
"LAND",
|
|
"LOR",
|
|
"LSS",
|
|
"LTE",
|
|
"LUNLESS",
|
|
"MOD",
|
|
"MUL",
|
|
"NEQ",
|
|
"NEQ_REGEX",
|
|
"POW",
|
|
"SUB",
|
|
"AT",
|
|
"ATAN2",
|
|
"operatorsEnd",
|
|
"aggregatorsStart",
|
|
"AVG",
|
|
"BOTTOMK",
|
|
"COUNT",
|
|
"COUNT_VALUES",
|
|
"GROUP",
|
|
"MAX",
|
|
"MIN",
|
|
"QUANTILE",
|
|
"STDDEV",
|
|
"STDVAR",
|
|
"SUM",
|
|
"TOPK",
|
|
"aggregatorsEnd",
|
|
"keywordsStart",
|
|
"BOOL",
|
|
"BY",
|
|
"GROUP_LEFT",
|
|
"GROUP_RIGHT",
|
|
"IGNORING",
|
|
"OFFSET",
|
|
"ON",
|
|
"WITHOUT",
|
|
"keywordsEnd",
|
|
"preprocessorStart",
|
|
"START",
|
|
"END",
|
|
"preprocessorEnd",
|
|
"startSymbolsStart",
|
|
"START_METRIC",
|
|
"START_SERIES_DESCRIPTION",
|
|
"START_EXPRESSION",
|
|
"START_METRIC_SELECTOR",
|
|
"startSymbolsEnd",
|
|
}
|
|
|
|
var yyStatenames = [...]string{}
|
|
|
|
const yyEofCode = 1
|
|
const yyErrCode = 2
|
|
const yyInitialStackSize = 16
|
|
|
|
//line promql/parser/generated_parser.y:916
|
|
|
|
//line yacctab:1
|
|
var yyExca = [...]int16{
|
|
-1, 1,
|
|
1, -1,
|
|
-2, 0,
|
|
-1, 35,
|
|
1, 131,
|
|
10, 131,
|
|
24, 131,
|
|
-2, 0,
|
|
-1, 58,
|
|
2, 168,
|
|
15, 168,
|
|
75, 168,
|
|
81, 168,
|
|
-2, 97,
|
|
-1, 59,
|
|
2, 169,
|
|
15, 169,
|
|
75, 169,
|
|
81, 169,
|
|
-2, 98,
|
|
-1, 60,
|
|
2, 170,
|
|
15, 170,
|
|
75, 170,
|
|
81, 170,
|
|
-2, 100,
|
|
-1, 61,
|
|
2, 171,
|
|
15, 171,
|
|
75, 171,
|
|
81, 171,
|
|
-2, 101,
|
|
-1, 62,
|
|
2, 172,
|
|
15, 172,
|
|
75, 172,
|
|
81, 172,
|
|
-2, 102,
|
|
-1, 63,
|
|
2, 173,
|
|
15, 173,
|
|
75, 173,
|
|
81, 173,
|
|
-2, 107,
|
|
-1, 64,
|
|
2, 174,
|
|
15, 174,
|
|
75, 174,
|
|
81, 174,
|
|
-2, 109,
|
|
-1, 65,
|
|
2, 175,
|
|
15, 175,
|
|
75, 175,
|
|
81, 175,
|
|
-2, 111,
|
|
-1, 66,
|
|
2, 176,
|
|
15, 176,
|
|
75, 176,
|
|
81, 176,
|
|
-2, 112,
|
|
-1, 67,
|
|
2, 177,
|
|
15, 177,
|
|
75, 177,
|
|
81, 177,
|
|
-2, 113,
|
|
-1, 68,
|
|
2, 178,
|
|
15, 178,
|
|
75, 178,
|
|
81, 178,
|
|
-2, 114,
|
|
-1, 69,
|
|
2, 179,
|
|
15, 179,
|
|
75, 179,
|
|
81, 179,
|
|
-2, 115,
|
|
-1, 192,
|
|
12, 226,
|
|
13, 226,
|
|
18, 226,
|
|
19, 226,
|
|
25, 226,
|
|
39, 226,
|
|
45, 226,
|
|
46, 226,
|
|
49, 226,
|
|
55, 226,
|
|
60, 226,
|
|
61, 226,
|
|
62, 226,
|
|
63, 226,
|
|
64, 226,
|
|
65, 226,
|
|
66, 226,
|
|
67, 226,
|
|
68, 226,
|
|
69, 226,
|
|
70, 226,
|
|
71, 226,
|
|
75, 226,
|
|
79, 226,
|
|
81, 226,
|
|
84, 226,
|
|
85, 226,
|
|
-2, 0,
|
|
-1, 193,
|
|
12, 226,
|
|
13, 226,
|
|
18, 226,
|
|
19, 226,
|
|
25, 226,
|
|
39, 226,
|
|
45, 226,
|
|
46, 226,
|
|
49, 226,
|
|
55, 226,
|
|
60, 226,
|
|
61, 226,
|
|
62, 226,
|
|
63, 226,
|
|
64, 226,
|
|
65, 226,
|
|
66, 226,
|
|
67, 226,
|
|
68, 226,
|
|
69, 226,
|
|
70, 226,
|
|
71, 226,
|
|
75, 226,
|
|
79, 226,
|
|
81, 226,
|
|
84, 226,
|
|
85, 226,
|
|
-2, 0,
|
|
-1, 214,
|
|
21, 224,
|
|
-2, 0,
|
|
-1, 280,
|
|
21, 225,
|
|
-2, 0,
|
|
}
|
|
|
|
const yyPrivate = 57344
|
|
|
|
const yyLast = 756
|
|
|
|
var yyAct = [...]int16{
|
|
149, 317, 315, 263, 322, 146, 218, 184, 37, 142,
|
|
275, 276, 150, 113, 77, 101, 220, 102, 6, 104,
|
|
148, 190, 103, 191, 126, 105, 230, 192, 193, 153,
|
|
287, 334, 236, 312, 311, 106, 308, 153, 257, 255,
|
|
249, 289, 153, 254, 335, 121, 172, 144, 173, 154,
|
|
333, 258, 154, 332, 145, 248, 278, 154, 306, 232,
|
|
233, 153, 108, 234, 109, 155, 316, 259, 155, 107,
|
|
287, 247, 296, 155, 221, 223, 225, 226, 227, 235,
|
|
237, 240, 241, 242, 243, 244, 175, 100, 222, 224,
|
|
228, 229, 231, 238, 239, 104, 174, 176, 245, 246,
|
|
143, 105, 151, 152, 2, 3, 4, 5, 188, 57,
|
|
156, 295, 82, 84, 210, 166, 160, 163, 159, 158,
|
|
106, 323, 186, 93, 94, 100, 294, 96, 97, 99,
|
|
83, 189, 178, 293, 187, 100, 194, 195, 196, 197,
|
|
198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
|
|
208, 84, 98, 209, 220, 211, 212, 122, 253, 180,
|
|
72, 93, 94, 33, 230, 96, 110, 99, 83, 215,
|
|
236, 284, 162, 214, 217, 96, 283, 99, 7, 281,
|
|
145, 252, 179, 251, 10, 161, 145, 170, 213, 115,
|
|
98, 282, 169, 307, 74, 305, 256, 232, 233, 114,
|
|
98, 234, 273, 274, 277, 168, 304, 250, 303, 247,
|
|
302, 301, 221, 223, 225, 226, 227, 235, 237, 240,
|
|
241, 242, 243, 244, 280, 300, 222, 224, 228, 229,
|
|
231, 238, 239, 157, 299, 298, 245, 246, 297, 81,
|
|
145, 127, 128, 129, 130, 131, 132, 133, 134, 135,
|
|
136, 137, 138, 139, 140, 141, 286, 288, 285, 290,
|
|
79, 182, 120, 34, 119, 48, 291, 292, 185, 262,
|
|
78, 73, 188, 8, 118, 153, 261, 35, 177, 117,
|
|
265, 266, 264, 270, 272, 269, 271, 267, 268, 115,
|
|
309, 310, 116, 1, 279, 154, 47, 314, 46, 114,
|
|
319, 320, 321, 45, 318, 44, 324, 112, 326, 325,
|
|
79, 155, 125, 327, 328, 43, 51, 72, 329, 53,
|
|
78, 42, 22, 52, 331, 41, 165, 56, 76, 54,
|
|
9, 9, 123, 336, 164, 40, 124, 39, 38, 49,
|
|
183, 330, 260, 70, 80, 181, 216, 75, 147, 18,
|
|
19, 55, 219, 20, 171, 50, 111, 0, 0, 71,
|
|
0, 0, 0, 0, 58, 59, 60, 61, 62, 63,
|
|
64, 65, 66, 67, 68, 69, 0, 0, 0, 13,
|
|
0, 0, 0, 24, 0, 30, 0, 0, 31, 32,
|
|
36, 0, 51, 72, 0, 53, 313, 0, 22, 52,
|
|
0, 0, 0, 0, 0, 54, 0, 265, 266, 264,
|
|
270, 272, 269, 271, 267, 268, 0, 0, 0, 70,
|
|
0, 0, 0, 0, 0, 18, 19, 0, 0, 20,
|
|
0, 0, 0, 0, 0, 71, 0, 0, 0, 0,
|
|
58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
|
|
68, 69, 0, 0, 0, 13, 0, 0, 0, 24,
|
|
0, 30, 0, 0, 31, 32, 51, 72, 0, 53,
|
|
0, 0, 22, 52, 0, 0, 0, 0, 0, 54,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 70, 0, 0, 0, 0, 0, 18,
|
|
19, 0, 0, 20, 0, 0, 0, 17, 72, 71,
|
|
0, 0, 0, 22, 58, 59, 60, 61, 62, 63,
|
|
64, 65, 66, 67, 68, 69, 0, 0, 0, 13,
|
|
0, 0, 0, 24, 0, 30, 0, 0, 31, 32,
|
|
18, 19, 0, 0, 20, 0, 0, 0, 17, 33,
|
|
0, 0, 0, 0, 22, 11, 12, 14, 15, 16,
|
|
21, 23, 25, 26, 27, 28, 29, 0, 0, 0,
|
|
13, 0, 0, 0, 24, 0, 30, 0, 0, 31,
|
|
32, 18, 19, 0, 0, 20, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 11, 12, 14, 15,
|
|
16, 21, 23, 25, 26, 27, 28, 29, 100, 0,
|
|
0, 13, 0, 0, 0, 24, 167, 30, 0, 0,
|
|
31, 32, 0, 0, 0, 0, 0, 100, 0, 0,
|
|
0, 0, 0, 82, 84, 85, 0, 86, 87, 88,
|
|
89, 90, 91, 92, 93, 94, 95, 0, 96, 97,
|
|
99, 83, 82, 84, 85, 0, 86, 87, 88, 89,
|
|
90, 91, 92, 93, 94, 95, 0, 96, 97, 99,
|
|
83, 100, 0, 98, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
100, 0, 98, 0, 0, 0, 82, 84, 85, 0,
|
|
86, 87, 88, 0, 90, 91, 92, 93, 94, 95,
|
|
0, 96, 97, 99, 83, 82, 84, 85, 0, 86,
|
|
87, 0, 0, 90, 91, 0, 93, 94, 95, 0,
|
|
96, 97, 99, 83, 0, 0, 98, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 98,
|
|
}
|
|
|
|
var yyPact = [...]int16{
|
|
16, 168, 536, 536, 380, 495, -1000, -1000, -1000, 150,
|
|
-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
|
|
-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
|
|
-1000, -1000, -1000, 308, -1000, 237, -1000, 613, -1000, -1000,
|
|
-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
|
|
20, 105, -1000, 454, -1000, 454, 147, -1000, -1000, -1000,
|
|
-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
|
|
-1000, -1000, 287, -1000, -1000, 272, -1000, -1000, 260, -1000,
|
|
21, -1000, -50, -50, -50, -50, -50, -50, -50, -50,
|
|
-50, -50, -50, -50, -50, -50, -50, -50, 45, 18,
|
|
231, 105, -56, -1000, 170, 170, 304, -1000, 594, 121,
|
|
-1000, 185, -1000, -1000, 44, -1000, -1000, 258, -1000, 157,
|
|
-1000, 256, 454, -1000, -57, -49, -1000, 454, 454, 454,
|
|
454, 454, 454, 454, 454, 454, 454, 454, 454, 454,
|
|
454, 454, -1000, 171, -1000, -1000, -1000, 99, -1000, -1000,
|
|
-1000, -1000, -1000, -1000, 42, 42, 167, -1000, -1000, -1000,
|
|
-1000, 152, -1000, -1000, 33, -1000, 613, -1000, -1000, 187,
|
|
-1000, 156, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
|
|
-1000, -1000, 17, 13, 12, -1000, -1000, -1000, 252, 111,
|
|
170, 170, 170, 170, 121, 121, 73, 73, 73, 676,
|
|
657, 73, 73, 676, 121, 121, 73, 121, 111, -1000,
|
|
34, -1000, -1000, -1000, 177, -1000, 169, -1000, -1000, -1000,
|
|
-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
|
|
-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
|
|
-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 454,
|
|
-1000, -1000, -1000, -1000, 51, 51, 15, 51, 92, 92,
|
|
109, 55, -1000, -1000, 232, 229, 228, 219, 205, 204,
|
|
202, 200, 189, -1000, -1000, -1000, -1000, -1000, -1000, 37,
|
|
191, -1000, -1000, 14, -1000, 613, -1000, -1000, -1000, 51,
|
|
-1000, 8, 7, 379, -1000, -1000, -1000, 11, 10, 42,
|
|
42, 42, 107, 11, 107, 11, -1000, -1000, -1000, -1000,
|
|
-1000, 51, 51, -1000, -1000, -1000, 51, -1000, -1000, -1000,
|
|
-1000, -1000, -1000, 42, -1000, -1000, -1000, -1000, -1000, -1000,
|
|
29, -1000, 23, -1000, -1000, -1000, -1000,
|
|
}
|
|
|
|
var yyPgo = [...]int16{
|
|
0, 356, 13, 355, 6, 354, 352, 327, 351, 348,
|
|
184, 273, 347, 14, 346, 11, 10, 345, 344, 7,
|
|
342, 3, 4, 341, 2, 1, 0, 340, 12, 5,
|
|
339, 338, 15, 157, 337, 336, 8, 335, 334, 17,
|
|
332, 109, 325, 321, 315, 312, 305, 303, 298, 296,
|
|
265, 9, 294, 293, 263,
|
|
}
|
|
|
|
var yyR1 = [...]int8{
|
|
0, 53, 53, 53, 53, 53, 53, 53, 36, 36,
|
|
36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
|
|
31, 31, 31, 31, 32, 32, 34, 34, 34, 34,
|
|
34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
|
|
34, 34, 33, 35, 35, 45, 45, 40, 40, 40,
|
|
40, 15, 15, 15, 15, 14, 14, 14, 4, 4,
|
|
37, 39, 39, 38, 38, 38, 46, 44, 44, 44,
|
|
30, 30, 30, 9, 9, 42, 48, 48, 48, 48,
|
|
48, 49, 50, 50, 50, 41, 41, 41, 1, 1,
|
|
1, 2, 2, 2, 2, 11, 11, 7, 7, 7,
|
|
7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
7, 7, 7, 7, 7, 7, 7, 7, 7, 10,
|
|
10, 10, 10, 12, 12, 12, 13, 13, 13, 13,
|
|
54, 18, 18, 18, 18, 17, 17, 17, 17, 17,
|
|
17, 17, 17, 17, 27, 27, 27, 19, 19, 19,
|
|
19, 20, 20, 20, 21, 21, 21, 21, 21, 21,
|
|
21, 21, 21, 22, 22, 23, 23, 23, 3, 3,
|
|
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
|
|
6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
|
|
6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
|
|
6, 6, 6, 6, 6, 6, 6, 8, 8, 5,
|
|
5, 5, 5, 43, 26, 28, 28, 29, 29, 25,
|
|
24, 24, 51, 47, 52, 52, 16, 16,
|
|
}
|
|
|
|
var yyR2 = [...]int8{
|
|
0, 2, 2, 2, 2, 2, 2, 1, 1, 1,
|
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
|
3, 3, 2, 2, 2, 2, 4, 4, 4, 4,
|
|
4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
|
|
4, 4, 1, 0, 1, 3, 3, 1, 1, 3,
|
|
3, 3, 4, 2, 1, 3, 1, 2, 1, 1,
|
|
2, 3, 2, 3, 1, 2, 3, 3, 4, 3,
|
|
3, 5, 3, 1, 1, 4, 6, 6, 5, 4,
|
|
3, 2, 2, 1, 1, 3, 4, 2, 3, 1,
|
|
2, 3, 3, 2, 1, 2, 1, 1, 1, 1,
|
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 3,
|
|
4, 2, 0, 3, 1, 2, 3, 3, 2, 1,
|
|
2, 0, 3, 2, 1, 1, 3, 1, 3, 4,
|
|
1, 3, 5, 5, 1, 1, 1, 4, 3, 3,
|
|
2, 3, 1, 2, 3, 3, 3, 3, 3, 3,
|
|
3, 3, 3, 4, 3, 3, 1, 2, 1, 1,
|
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
|
1, 1, 1, 1, 1, 2, 2, 1, 1, 1,
|
|
2, 1, 1, 1, 0, 1, 0, 1,
|
|
}
|
|
|
|
var yyChk = [...]int16{
|
|
-1000, -53, 88, 89, 90, 91, 2, 10, -11, -7,
|
|
-10, 60, 61, 75, 62, 63, 64, 12, 45, 46,
|
|
49, 65, 18, 66, 79, 67, 68, 69, 70, 71,
|
|
81, 84, 85, 13, -54, -11, 10, -36, -31, -34,
|
|
-37, -42, -43, -44, -46, -47, -48, -49, -50, -30,
|
|
-3, 12, 19, 15, 25, -8, -7, -41, 60, 61,
|
|
62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
|
|
39, 55, 13, -50, -10, -12, 20, -13, 12, 2,
|
|
-18, 2, 39, 57, 40, 41, 43, 44, 45, 46,
|
|
47, 48, 49, 50, 51, 52, 54, 55, 79, 56,
|
|
14, -32, -39, 2, 75, 81, 15, -39, -36, -36,
|
|
-41, -1, 20, -2, 12, 2, 20, 7, 2, 4,
|
|
2, 24, -33, -40, -35, -45, 74, -33, -33, -33,
|
|
-33, -33, -33, -33, -33, -33, -33, -33, -33, -33,
|
|
-33, -33, -51, 55, 2, 9, -29, -9, 2, -26,
|
|
-28, 84, 85, 19, 39, 55, -51, 2, -39, -32,
|
|
-15, 15, 2, -15, -38, 22, -36, 22, 20, 7,
|
|
2, -5, 2, 4, 52, 42, 53, 20, -13, 25,
|
|
2, -17, 5, -27, -19, 12, -26, -28, 16, -36,
|
|
78, 80, 76, 77, -36, -36, -36, -36, -36, -36,
|
|
-36, -36, -36, -36, -36, -36, -36, -36, -36, -51,
|
|
15, -26, -26, 21, 6, 2, -14, 22, -4, -6,
|
|
2, 60, 74, 61, 75, 62, 63, 64, 76, 77,
|
|
12, 78, 45, 46, 49, 65, 18, 66, 79, 80,
|
|
67, 68, 69, 70, 71, 84, 85, 57, 22, 7,
|
|
20, -2, 25, 2, 26, 26, -28, 26, 39, 55,
|
|
-20, 24, 17, -21, 30, 28, 29, 35, 36, 33,
|
|
31, 34, 32, -15, -15, -16, -15, -16, 22, -52,
|
|
-51, 2, 22, 7, 2, -36, -25, 19, -25, 26,
|
|
-25, -19, -19, 24, 17, 2, 17, 6, 6, 6,
|
|
6, 6, 6, 6, 6, 6, 21, 2, 22, -4,
|
|
-25, 26, 26, 17, -21, -24, 55, -25, -29, -26,
|
|
-26, -26, -22, 14, -24, -22, -24, -25, -25, -25,
|
|
-23, -26, 24, 21, 2, 21, -26,
|
|
}
|
|
|
|
var yyDef = [...]int16{
|
|
0, -2, 122, 122, 0, 0, 7, 6, 1, 122,
|
|
96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
|
|
106, 107, 108, 109, 110, 111, 112, 113, 114, 115,
|
|
116, 117, 118, 0, 2, -2, 3, 4, 8, 9,
|
|
10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
|
|
0, 103, 213, 0, 223, 0, 83, 84, -2, -2,
|
|
-2, -2, -2, -2, -2, -2, -2, -2, -2, -2,
|
|
207, 208, 0, 5, 95, 0, 121, 124, 0, 129,
|
|
130, 134, 43, 43, 43, 43, 43, 43, 43, 43,
|
|
43, 43, 43, 43, 43, 43, 43, 43, 0, 0,
|
|
0, 0, 22, 23, 0, 0, 0, 60, 0, 81,
|
|
82, 0, 87, 89, 0, 94, 119, 0, 125, 0,
|
|
128, 133, 0, 42, 47, 48, 44, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 67, 0, 69, 222, 70, 0, 72, 217,
|
|
218, 73, 74, 214, 0, 0, 0, 80, 20, 21,
|
|
24, 0, 54, 25, 0, 62, 64, 66, 85, 0,
|
|
90, 0, 93, 209, 210, 211, 212, 120, 123, 126,
|
|
127, 132, 135, 137, 140, 144, 145, 146, 0, 26,
|
|
0, 0, -2, -2, 27, 28, 29, 30, 31, 32,
|
|
33, 34, 35, 36, 37, 38, 39, 40, 41, 68,
|
|
0, 215, 216, 75, -2, 79, 0, 53, 56, 58,
|
|
59, 180, 181, 182, 183, 184, 185, 186, 187, 188,
|
|
189, 190, 191, 192, 193, 194, 195, 196, 197, 198,
|
|
199, 200, 201, 202, 203, 204, 205, 206, 61, 65,
|
|
86, 88, 91, 92, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 150, 152, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 45, 46, 49, 227, 50, 71, 0,
|
|
-2, 78, 51, 0, 57, 63, 136, 219, 138, 0,
|
|
141, 0, 0, 0, 148, 153, 149, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 76, 77, 52, 55,
|
|
139, 0, 0, 147, 151, 154, 0, 221, 155, 156,
|
|
157, 158, 159, 0, 160, 161, 162, 142, 143, 220,
|
|
0, 166, 0, 164, 167, 163, 165,
|
|
}
|
|
|
|
var yyTok1 = [...]int8{
|
|
1,
|
|
}
|
|
|
|
var yyTok2 = [...]int8{
|
|
2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
|
|
12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
|
|
22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
|
|
32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
|
|
42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
|
|
52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
|
|
62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
|
|
72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
|
|
82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
|
|
92,
|
|
}
|
|
|
|
var yyTok3 = [...]int8{
|
|
0,
|
|
}
|
|
|
|
var yyErrorMessages = [...]struct {
|
|
state int
|
|
token int
|
|
msg string
|
|
}{}
|
|
|
|
//line yaccpar:1
|
|
|
|
/* parser for yacc output */
|
|
|
|
var (
|
|
yyDebug = 0
|
|
yyErrorVerbose = false
|
|
)
|
|
|
|
type yyLexer interface {
|
|
Lex(lval *yySymType) int
|
|
Error(s string)
|
|
}
|
|
|
|
type yyParser interface {
|
|
Parse(yyLexer) int
|
|
Lookahead() int
|
|
}
|
|
|
|
type yyParserImpl struct {
|
|
lval yySymType
|
|
stack [yyInitialStackSize]yySymType
|
|
char int
|
|
}
|
|
|
|
func (p *yyParserImpl) Lookahead() int {
|
|
return p.char
|
|
}
|
|
|
|
func yyNewParser() yyParser {
|
|
return &yyParserImpl{}
|
|
}
|
|
|
|
const yyFlag = -1000
|
|
|
|
func yyTokname(c int) string {
|
|
if c >= 1 && c-1 < len(yyToknames) {
|
|
if yyToknames[c-1] != "" {
|
|
return yyToknames[c-1]
|
|
}
|
|
}
|
|
return __yyfmt__.Sprintf("tok-%v", c)
|
|
}
|
|
|
|
func yyStatname(s int) string {
|
|
if s >= 0 && s < len(yyStatenames) {
|
|
if yyStatenames[s] != "" {
|
|
return yyStatenames[s]
|
|
}
|
|
}
|
|
return __yyfmt__.Sprintf("state-%v", s)
|
|
}
|
|
|
|
func yyErrorMessage(state, lookAhead int) string {
|
|
const TOKSTART = 4
|
|
|
|
if !yyErrorVerbose {
|
|
return "syntax error"
|
|
}
|
|
|
|
for _, e := range yyErrorMessages {
|
|
if e.state == state && e.token == lookAhead {
|
|
return "syntax error: " + e.msg
|
|
}
|
|
}
|
|
|
|
res := "syntax error: unexpected " + yyTokname(lookAhead)
|
|
|
|
// To match Bison, suggest at most four expected tokens.
|
|
expected := make([]int, 0, 4)
|
|
|
|
// Look for shiftable tokens.
|
|
base := int(yyPact[state])
|
|
for tok := TOKSTART; tok-1 < len(yyToknames); tok++ {
|
|
if n := base + tok; n >= 0 && n < yyLast && int(yyChk[int(yyAct[n])]) == tok {
|
|
if len(expected) == cap(expected) {
|
|
return res
|
|
}
|
|
expected = append(expected, tok)
|
|
}
|
|
}
|
|
|
|
if yyDef[state] == -2 {
|
|
i := 0
|
|
for yyExca[i] != -1 || int(yyExca[i+1]) != state {
|
|
i += 2
|
|
}
|
|
|
|
// Look for tokens that we accept or reduce.
|
|
for i += 2; yyExca[i] >= 0; i += 2 {
|
|
tok := int(yyExca[i])
|
|
if tok < TOKSTART || yyExca[i+1] == 0 {
|
|
continue
|
|
}
|
|
if len(expected) == cap(expected) {
|
|
return res
|
|
}
|
|
expected = append(expected, tok)
|
|
}
|
|
|
|
// If the default action is to accept or reduce, give up.
|
|
if yyExca[i+1] != 0 {
|
|
return res
|
|
}
|
|
}
|
|
|
|
for i, tok := range expected {
|
|
if i == 0 {
|
|
res += ", expecting "
|
|
} else {
|
|
res += " or "
|
|
}
|
|
res += yyTokname(tok)
|
|
}
|
|
return res
|
|
}
|
|
|
|
func yylex1(lex yyLexer, lval *yySymType) (char, token int) {
|
|
token = 0
|
|
char = lex.Lex(lval)
|
|
if char <= 0 {
|
|
token = int(yyTok1[0])
|
|
goto out
|
|
}
|
|
if char < len(yyTok1) {
|
|
token = int(yyTok1[char])
|
|
goto out
|
|
}
|
|
if char >= yyPrivate {
|
|
if char < yyPrivate+len(yyTok2) {
|
|
token = int(yyTok2[char-yyPrivate])
|
|
goto out
|
|
}
|
|
}
|
|
for i := 0; i < len(yyTok3); i += 2 {
|
|
token = int(yyTok3[i+0])
|
|
if token == char {
|
|
token = int(yyTok3[i+1])
|
|
goto out
|
|
}
|
|
}
|
|
|
|
out:
|
|
if token == 0 {
|
|
token = int(yyTok2[1]) /* unknown char */
|
|
}
|
|
if yyDebug >= 3 {
|
|
__yyfmt__.Printf("lex %s(%d)\n", yyTokname(token), uint(char))
|
|
}
|
|
return char, token
|
|
}
|
|
|
|
func yyParse(yylex yyLexer) int {
|
|
return yyNewParser().Parse(yylex)
|
|
}
|
|
|
|
func (yyrcvr *yyParserImpl) Parse(yylex yyLexer) int {
|
|
var yyn int
|
|
var yyVAL yySymType
|
|
var yyDollar []yySymType
|
|
_ = yyDollar // silence set and not used
|
|
yyS := yyrcvr.stack[:]
|
|
|
|
Nerrs := 0 /* number of errors */
|
|
Errflag := 0 /* error recovery flag */
|
|
yystate := 0
|
|
yyrcvr.char = -1
|
|
yytoken := -1 // yyrcvr.char translated into internal numbering
|
|
defer func() {
|
|
// Make sure we report no lookahead when not parsing.
|
|
yystate = -1
|
|
yyrcvr.char = -1
|
|
yytoken = -1
|
|
}()
|
|
yyp := -1
|
|
goto yystack
|
|
|
|
ret0:
|
|
return 0
|
|
|
|
ret1:
|
|
return 1
|
|
|
|
yystack:
|
|
/* put a state and value onto the stack */
|
|
if yyDebug >= 4 {
|
|
__yyfmt__.Printf("char %v in %v\n", yyTokname(yytoken), yyStatname(yystate))
|
|
}
|
|
|
|
yyp++
|
|
if yyp >= len(yyS) {
|
|
nyys := make([]yySymType, len(yyS)*2)
|
|
copy(nyys, yyS)
|
|
yyS = nyys
|
|
}
|
|
yyS[yyp] = yyVAL
|
|
yyS[yyp].yys = yystate
|
|
|
|
yynewstate:
|
|
yyn = int(yyPact[yystate])
|
|
if yyn <= yyFlag {
|
|
goto yydefault /* simple state */
|
|
}
|
|
if yyrcvr.char < 0 {
|
|
yyrcvr.char, yytoken = yylex1(yylex, &yyrcvr.lval)
|
|
}
|
|
yyn += yytoken
|
|
if yyn < 0 || yyn >= yyLast {
|
|
goto yydefault
|
|
}
|
|
yyn = int(yyAct[yyn])
|
|
if int(yyChk[yyn]) == yytoken { /* valid shift */
|
|
yyrcvr.char = -1
|
|
yytoken = -1
|
|
yyVAL = yyrcvr.lval
|
|
yystate = yyn
|
|
if Errflag > 0 {
|
|
Errflag--
|
|
}
|
|
goto yystack
|
|
}
|
|
|
|
yydefault:
|
|
/* default state action */
|
|
yyn = int(yyDef[yystate])
|
|
if yyn == -2 {
|
|
if yyrcvr.char < 0 {
|
|
yyrcvr.char, yytoken = yylex1(yylex, &yyrcvr.lval)
|
|
}
|
|
|
|
/* look through exception table */
|
|
xi := 0
|
|
for {
|
|
if yyExca[xi+0] == -1 && int(yyExca[xi+1]) == yystate {
|
|
break
|
|
}
|
|
xi += 2
|
|
}
|
|
for xi += 2; ; xi += 2 {
|
|
yyn = int(yyExca[xi+0])
|
|
if yyn < 0 || yyn == yytoken {
|
|
break
|
|
}
|
|
}
|
|
yyn = int(yyExca[xi+1])
|
|
if yyn < 0 {
|
|
goto ret0
|
|
}
|
|
}
|
|
if yyn == 0 {
|
|
/* error ... attempt to resume parsing */
|
|
switch Errflag {
|
|
case 0: /* brand new error */
|
|
yylex.Error(yyErrorMessage(yystate, yytoken))
|
|
Nerrs++
|
|
if yyDebug >= 1 {
|
|
__yyfmt__.Printf("%s", yyStatname(yystate))
|
|
__yyfmt__.Printf(" saw %s\n", yyTokname(yytoken))
|
|
}
|
|
fallthrough
|
|
|
|
case 1, 2: /* incompletely recovered error ... try again */
|
|
Errflag = 3
|
|
|
|
/* find a state where "error" is a legal shift action */
|
|
for yyp >= 0 {
|
|
yyn = int(yyPact[yyS[yyp].yys]) + yyErrCode
|
|
if yyn >= 0 && yyn < yyLast {
|
|
yystate = int(yyAct[yyn]) /* simulate a shift of "error" */
|
|
if int(yyChk[yystate]) == yyErrCode {
|
|
goto yystack
|
|
}
|
|
}
|
|
|
|
/* the current p has no shift on "error", pop stack */
|
|
if yyDebug >= 2 {
|
|
__yyfmt__.Printf("error recovery pops state %d\n", yyS[yyp].yys)
|
|
}
|
|
yyp--
|
|
}
|
|
/* there is no state on the stack with an error shift ... abort */
|
|
goto ret1
|
|
|
|
case 3: /* no shift yet; clobber input char */
|
|
if yyDebug >= 2 {
|
|
__yyfmt__.Printf("error recovery discards %s\n", yyTokname(yytoken))
|
|
}
|
|
if yytoken == yyEofCode {
|
|
goto ret1
|
|
}
|
|
yyrcvr.char = -1
|
|
yytoken = -1
|
|
goto yynewstate /* try again in the same state */
|
|
}
|
|
}
|
|
|
|
/* reduction by production yyn */
|
|
if yyDebug >= 2 {
|
|
__yyfmt__.Printf("reduce %v in:\n\t%v\n", yyn, yyStatname(yystate))
|
|
}
|
|
|
|
yynt := yyn
|
|
yypt := yyp
|
|
_ = yypt // guard against "declared and not used"
|
|
|
|
yyp -= int(yyR2[yyn])
|
|
// yyp is now the index of $0. Perform the default action. Iff the
|
|
// reduced production is ε, $1 is possibly out of range.
|
|
if yyp+1 >= len(yyS) {
|
|
nyys := make([]yySymType, len(yyS)*2)
|
|
copy(nyys, yyS)
|
|
yyS = nyys
|
|
}
|
|
yyVAL = yyS[yyp+1]
|
|
|
|
/* consult goto table to find next state */
|
|
yyn = int(yyR1[yyn])
|
|
yyg := int(yyPgo[yyn])
|
|
yyj := yyg + yyS[yyp].yys + 1
|
|
|
|
if yyj >= yyLast {
|
|
yystate = int(yyAct[yyg])
|
|
} else {
|
|
yystate = int(yyAct[yyj])
|
|
if int(yyChk[yystate]) != -yyn {
|
|
yystate = int(yyAct[yyg])
|
|
}
|
|
}
|
|
// dummy call; replaced with literal code
|
|
switch yynt {
|
|
|
|
case 1:
|
|
yyDollar = yyS[yypt-2 : yypt+1]
|
|
//line promql/parser/generated_parser.y:200
|
|
{
|
|
yylex.(*parser).generatedParserResult = yyDollar[2].labels
|
|
}
|
|
case 3:
|
|
yyDollar = yyS[yypt-2 : yypt+1]
|
|
//line promql/parser/generated_parser.y:203
|
|
{
|
|
yylex.(*parser).addParseErrf(posrange.PositionRange{}, "no expression found in input")
|
|
}
|
|
case 4:
|
|
yyDollar = yyS[yypt-2 : yypt+1]
|
|
//line promql/parser/generated_parser.y:205
|
|
{
|
|
yylex.(*parser).generatedParserResult = yyDollar[2].node
|
|
}
|
|
case 5:
|
|
yyDollar = yyS[yypt-2 : yypt+1]
|
|
//line promql/parser/generated_parser.y:207
|
|
{
|
|
yylex.(*parser).generatedParserResult = yyDollar[2].node
|
|
}
|
|
case 7:
|
|
yyDollar = yyS[yypt-1 : yypt+1]
|
|
//line promql/parser/generated_parser.y:210
|
|
{
|
|
yylex.(*parser).unexpected("", "")
|
|
}
|
|
case 20:
|
|
yyDollar = yyS[yypt-3 : yypt+1]
|
|
//line promql/parser/generated_parser.y:233
|
|
{
|
|
yyVAL.node = yylex.(*parser).newAggregateExpr(yyDollar[1].item, yyDollar[2].node, yyDollar[3].node)
|
|
}
|
|
case 21:
|
|
yyDollar = yyS[yypt-3 : yypt+1]
|
|
//line promql/parser/generated_parser.y:235
|
|
{
|
|
yyVAL.node = yylex.(*parser).newAggregateExpr(yyDollar[1].item, yyDollar[3].node, yyDollar[2].node)
|
|
}
|
|
case 22:
|
|
yyDollar = yyS[yypt-2 : yypt+1]
|
|
//line promql/parser/generated_parser.y:237
|
|
{
|
|
yyVAL.node = yylex.(*parser).newAggregateExpr(yyDollar[1].item, &AggregateExpr{}, yyDollar[2].node)
|
|
}
|
|
case 23:
|
|
yyDollar = yyS[yypt-2 : yypt+1]
|
|
//line promql/parser/generated_parser.y:239
|
|
{
|
|
yylex.(*parser).unexpected("aggregation", "")
|
|
yyVAL.node = yylex.(*parser).newAggregateExpr(yyDollar[1].item, &AggregateExpr{}, Expressions{})
|
|
}
|
|
case 24:
|
|
yyDollar = yyS[yypt-2 : yypt+1]
|
|
//line promql/parser/generated_parser.y:247
|
|
{
|
|
yyVAL.node = &AggregateExpr{
|
|
Grouping: yyDollar[2].strings,
|
|
}
|
|
}
|
|
case 25:
|
|
yyDollar = yyS[yypt-2 : yypt+1]
|
|
//line promql/parser/generated_parser.y:253
|
|
{
|
|
yyVAL.node = &AggregateExpr{
|
|
Grouping: yyDollar[2].strings,
|
|
Without: true,
|
|
}
|
|
}
|
|
case 26:
|
|
yyDollar = yyS[yypt-4 : yypt+1]
|
|
//line promql/parser/generated_parser.y:266
|
|
{
|
|
yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node)
|
|
}
|
|
case 27:
|
|
yyDollar = yyS[yypt-4 : yypt+1]
|
|
//line promql/parser/generated_parser.y:267
|
|
{
|
|
yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node)
|
|
}
|
|
case 28:
|
|
yyDollar = yyS[yypt-4 : yypt+1]
|
|
//line promql/parser/generated_parser.y:268
|
|
{
|
|
yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node)
|
|
}
|
|
case 29:
|
|
yyDollar = yyS[yypt-4 : yypt+1]
|
|
//line promql/parser/generated_parser.y:269
|
|
{
|
|
yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node)
|
|
}
|
|
case 30:
|
|
yyDollar = yyS[yypt-4 : yypt+1]
|
|
//line promql/parser/generated_parser.y:270
|
|
{
|
|
yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node)
|
|
}
|
|
case 31:
|
|
yyDollar = yyS[yypt-4 : yypt+1]
|
|
//line promql/parser/generated_parser.y:271
|
|
{
|
|
yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node)
|
|
}
|
|
case 32:
|
|
yyDollar = yyS[yypt-4 : yypt+1]
|
|
//line promql/parser/generated_parser.y:272
|
|
{
|
|
yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node)
|
|
}
|
|
case 33:
|
|
yyDollar = yyS[yypt-4 : yypt+1]
|
|
//line promql/parser/generated_parser.y:273
|
|
{
|
|
yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node)
|
|
}
|
|
case 34:
|
|
yyDollar = yyS[yypt-4 : yypt+1]
|
|
//line promql/parser/generated_parser.y:274
|
|
{
|
|
yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node)
|
|
}
|
|
case 35:
|
|
yyDollar = yyS[yypt-4 : yypt+1]
|
|
//line promql/parser/generated_parser.y:275
|
|
{
|
|
yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node)
|
|
}
|
|
case 36:
|
|
yyDollar = yyS[yypt-4 : yypt+1]
|
|
//line promql/parser/generated_parser.y:276
|
|
{
|
|
yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node)
|
|
}
|
|
case 37:
|
|
yyDollar = yyS[yypt-4 : yypt+1]
|
|
//line promql/parser/generated_parser.y:277
|
|
{
|
|
yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node)
|
|
}
|
|
case 38:
|
|
yyDollar = yyS[yypt-4 : yypt+1]
|
|
//line promql/parser/generated_parser.y:278
|
|
{
|
|
yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node)
|
|
}
|
|
case 39:
|
|
yyDollar = yyS[yypt-4 : yypt+1]
|
|
//line promql/parser/generated_parser.y:279
|
|
{
|
|
yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node)
|
|
}
|
|
case 40:
|
|
yyDollar = yyS[yypt-4 : yypt+1]
|
|
//line promql/parser/generated_parser.y:280
|
|
{
|
|
yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node)
|
|
}
|
|
case 41:
|
|
yyDollar = yyS[yypt-4 : yypt+1]
|
|
//line promql/parser/generated_parser.y:281
|
|
{
|
|
yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node)
|
|
}
|
|
case 43:
|
|
yyDollar = yyS[yypt-0 : yypt+1]
|
|
//line promql/parser/generated_parser.y:289
|
|
{
|
|
yyVAL.node = &BinaryExpr{
|
|
VectorMatching: &VectorMatching{Card: CardOneToOne},
|
|
}
|
|
}
|
|
case 44:
|
|
yyDollar = yyS[yypt-1 : yypt+1]
|
|
//line promql/parser/generated_parser.y:294
|
|
{
|
|
yyVAL.node = &BinaryExpr{
|
|
VectorMatching: &VectorMatching{Card: CardOneToOne},
|
|
ReturnBool: true,
|
|
}
|
|
}
|
|
case 45:
|
|
yyDollar = yyS[yypt-3 : yypt+1]
|
|
//line promql/parser/generated_parser.y:302
|
|
{
|
|
yyVAL.node = yyDollar[1].node
|
|
yyVAL.node.(*BinaryExpr).VectorMatching.MatchingLabels = yyDollar[3].strings
|
|
}
|
|
case 46:
|
|
yyDollar = yyS[yypt-3 : yypt+1]
|
|
//line promql/parser/generated_parser.y:307
|
|
{
|
|
yyVAL.node = yyDollar[1].node
|
|
yyVAL.node.(*BinaryExpr).VectorMatching.MatchingLabels = yyDollar[3].strings
|
|
yyVAL.node.(*BinaryExpr).VectorMatching.On = true
|
|
}
|
|
case 49:
|
|
yyDollar = yyS[yypt-3 : yypt+1]
|
|
//line promql/parser/generated_parser.y:317
|
|
{
|
|
yyVAL.node = yyDollar[1].node
|
|
yyVAL.node.(*BinaryExpr).VectorMatching.Card = CardManyToOne
|
|
yyVAL.node.(*BinaryExpr).VectorMatching.Include = yyDollar[3].strings
|
|
}
|
|
case 50:
|
|
yyDollar = yyS[yypt-3 : yypt+1]
|
|
//line promql/parser/generated_parser.y:323
|
|
{
|
|
yyVAL.node = yyDollar[1].node
|
|
yyVAL.node.(*BinaryExpr).VectorMatching.Card = CardOneToMany
|
|
yyVAL.node.(*BinaryExpr).VectorMatching.Include = yyDollar[3].strings
|
|
}
|
|
case 51:
|
|
yyDollar = yyS[yypt-3 : yypt+1]
|
|
//line promql/parser/generated_parser.y:332
|
|
{
|
|
yyVAL.strings = yyDollar[2].strings
|
|
}
|
|
case 52:
|
|
yyDollar = yyS[yypt-4 : yypt+1]
|
|
//line promql/parser/generated_parser.y:334
|
|
{
|
|
yyVAL.strings = yyDollar[2].strings
|
|
}
|
|
case 53:
|
|
yyDollar = yyS[yypt-2 : yypt+1]
|
|
//line promql/parser/generated_parser.y:336
|
|
{
|
|
yyVAL.strings = []string{}
|
|
}
|
|
case 54:
|
|
yyDollar = yyS[yypt-1 : yypt+1]
|
|
//line promql/parser/generated_parser.y:338
|
|
{
|
|
yylex.(*parser).unexpected("grouping opts", "\"(\"")
|
|
yyVAL.strings = nil
|
|
}
|
|
case 55:
|
|
yyDollar = yyS[yypt-3 : yypt+1]
|
|
//line promql/parser/generated_parser.y:344
|
|
{
|
|
yyVAL.strings = append(yyDollar[1].strings, yyDollar[3].item.Val)
|
|
}
|
|
case 56:
|
|
yyDollar = yyS[yypt-1 : yypt+1]
|
|
//line promql/parser/generated_parser.y:346
|
|
{
|
|
yyVAL.strings = []string{yyDollar[1].item.Val}
|
|
}
|
|
case 57:
|
|
yyDollar = yyS[yypt-2 : yypt+1]
|
|
//line promql/parser/generated_parser.y:348
|
|
{
|
|
yylex.(*parser).unexpected("grouping opts", "\",\" or \")\"")
|
|
yyVAL.strings = yyDollar[1].strings
|
|
}
|
|
case 58:
|
|
yyDollar = yyS[yypt-1 : yypt+1]
|
|
//line promql/parser/generated_parser.y:352
|
|
{
|
|
if !isLabel(yyDollar[1].item.Val) {
|
|
yylex.(*parser).unexpected("grouping opts", "label")
|
|
}
|
|
yyVAL.item = yyDollar[1].item
|
|
}
|
|
case 59:
|
|
yyDollar = yyS[yypt-1 : yypt+1]
|
|
//line promql/parser/generated_parser.y:359
|
|
{
|
|
yylex.(*parser).unexpected("grouping opts", "label")
|
|
yyVAL.item = Item{}
|
|
}
|
|
case 60:
|
|
yyDollar = yyS[yypt-2 : yypt+1]
|
|
//line promql/parser/generated_parser.y:367
|
|
{
|
|
fn, exist := getFunction(yyDollar[1].item.Val, yylex.(*parser).functions)
|
|
if !exist {
|
|
yylex.(*parser).addParseErrf(yyDollar[1].item.PositionRange(), "unknown function with name %q", yyDollar[1].item.Val)
|
|
}
|
|
yyVAL.node = &Call{
|
|
Func: fn,
|
|
Args: yyDollar[2].node.(Expressions),
|
|
PosRange: posrange.PositionRange{
|
|
Start: yyDollar[1].item.Pos,
|
|
End: yylex.(*parser).lastClosing,
|
|
},
|
|
}
|
|
}
|
|
case 61:
|
|
yyDollar = yyS[yypt-3 : yypt+1]
|
|
//line promql/parser/generated_parser.y:384
|
|
{
|
|
yyVAL.node = yyDollar[2].node
|
|
}
|
|
case 62:
|
|
yyDollar = yyS[yypt-2 : yypt+1]
|
|
//line promql/parser/generated_parser.y:386
|
|
{
|
|
yyVAL.node = Expressions{}
|
|
}
|
|
case 63:
|
|
yyDollar = yyS[yypt-3 : yypt+1]
|
|
//line promql/parser/generated_parser.y:390
|
|
{
|
|
yyVAL.node = append(yyDollar[1].node.(Expressions), yyDollar[3].node.(Expr))
|
|
}
|
|
case 64:
|
|
yyDollar = yyS[yypt-1 : yypt+1]
|
|
//line promql/parser/generated_parser.y:392
|
|
{
|
|
yyVAL.node = Expressions{yyDollar[1].node.(Expr)}
|
|
}
|
|
case 65:
|
|
yyDollar = yyS[yypt-2 : yypt+1]
|
|
//line promql/parser/generated_parser.y:394
|
|
{
|
|
yylex.(*parser).addParseErrf(yyDollar[2].item.PositionRange(), "trailing commas not allowed in function call args")
|
|
yyVAL.node = yyDollar[1].node
|
|
}
|
|
case 66:
|
|
yyDollar = yyS[yypt-3 : yypt+1]
|
|
//line promql/parser/generated_parser.y:405
|
|
{
|
|
yyVAL.node = &ParenExpr{Expr: yyDollar[2].node.(Expr), PosRange: mergeRanges(&yyDollar[1].item, &yyDollar[3].item)}
|
|
}
|
|
case 67:
|
|
yyDollar = yyS[yypt-3 : yypt+1]
|
|
//line promql/parser/generated_parser.y:413
|
|
{
|
|
yylex.(*parser).addOffset(yyDollar[1].node, yyDollar[3].duration)
|
|
yyVAL.node = yyDollar[1].node
|
|
}
|
|
case 68:
|
|
yyDollar = yyS[yypt-4 : yypt+1]
|
|
//line promql/parser/generated_parser.y:418
|
|
{
|
|
yylex.(*parser).addOffset(yyDollar[1].node, -yyDollar[4].duration)
|
|
yyVAL.node = yyDollar[1].node
|
|
}
|
|
case 69:
|
|
yyDollar = yyS[yypt-3 : yypt+1]
|
|
//line promql/parser/generated_parser.y:423
|
|
{
|
|
yylex.(*parser).unexpected("offset", "duration")
|
|
yyVAL.node = yyDollar[1].node
|
|
}
|
|
case 70:
|
|
yyDollar = yyS[yypt-3 : yypt+1]
|
|
//line promql/parser/generated_parser.y:430
|
|
{
|
|
yylex.(*parser).setTimestamp(yyDollar[1].node, yyDollar[3].float)
|
|
yyVAL.node = yyDollar[1].node
|
|
}
|
|
case 71:
|
|
yyDollar = yyS[yypt-5 : yypt+1]
|
|
//line promql/parser/generated_parser.y:435
|
|
{
|
|
yylex.(*parser).setAtModifierPreprocessor(yyDollar[1].node, yyDollar[3].item)
|
|
yyVAL.node = yyDollar[1].node
|
|
}
|
|
case 72:
|
|
yyDollar = yyS[yypt-3 : yypt+1]
|
|
//line promql/parser/generated_parser.y:440
|
|
{
|
|
yylex.(*parser).unexpected("@", "timestamp")
|
|
yyVAL.node = yyDollar[1].node
|
|
}
|
|
case 75:
|
|
yyDollar = yyS[yypt-4 : yypt+1]
|
|
//line promql/parser/generated_parser.y:450
|
|
{
|
|
var errMsg string
|
|
vs, ok := yyDollar[1].node.(*VectorSelector)
|
|
if !ok {
|
|
errMsg = "ranges only allowed for vector selectors"
|
|
} else if vs.OriginalOffset != 0 {
|
|
errMsg = "no offset modifiers allowed before range"
|
|
} else if vs.Timestamp != nil {
|
|
errMsg = "no @ modifiers allowed before range"
|
|
}
|
|
|
|
if errMsg != "" {
|
|
errRange := mergeRanges(&yyDollar[2].item, &yyDollar[4].item)
|
|
yylex.(*parser).addParseErrf(errRange, errMsg)
|
|
}
|
|
|
|
yyVAL.node = &MatrixSelector{
|
|
VectorSelector: yyDollar[1].node.(Expr),
|
|
Range: yyDollar[3].duration,
|
|
EndPos: yylex.(*parser).lastClosing,
|
|
}
|
|
}
|
|
case 76:
|
|
yyDollar = yyS[yypt-6 : yypt+1]
|
|
//line promql/parser/generated_parser.y:475
|
|
{
|
|
yyVAL.node = &SubqueryExpr{
|
|
Expr: yyDollar[1].node.(Expr),
|
|
Range: yyDollar[3].duration,
|
|
Step: yyDollar[5].duration,
|
|
|
|
EndPos: yyDollar[6].item.Pos + 1,
|
|
}
|
|
}
|
|
case 77:
|
|
yyDollar = yyS[yypt-6 : yypt+1]
|
|
//line promql/parser/generated_parser.y:485
|
|
{
|
|
yylex.(*parser).unexpected("subquery selector", "\"]\"")
|
|
yyVAL.node = yyDollar[1].node
|
|
}
|
|
case 78:
|
|
yyDollar = yyS[yypt-5 : yypt+1]
|
|
//line promql/parser/generated_parser.y:487
|
|
{
|
|
yylex.(*parser).unexpected("subquery selector", "duration or \"]\"")
|
|
yyVAL.node = yyDollar[1].node
|
|
}
|
|
case 79:
|
|
yyDollar = yyS[yypt-4 : yypt+1]
|
|
//line promql/parser/generated_parser.y:489
|
|
{
|
|
yylex.(*parser).unexpected("subquery or range", "\":\" or \"]\"")
|
|
yyVAL.node = yyDollar[1].node
|
|
}
|
|
case 80:
|
|
yyDollar = yyS[yypt-3 : yypt+1]
|
|
//line promql/parser/generated_parser.y:491
|
|
{
|
|
yylex.(*parser).unexpected("subquery selector", "duration")
|
|
yyVAL.node = yyDollar[1].node
|
|
}
|
|
case 81:
|
|
yyDollar = yyS[yypt-2 : yypt+1]
|
|
//line promql/parser/generated_parser.y:501
|
|
{
|
|
if nl, ok := yyDollar[2].node.(*NumberLiteral); ok {
|
|
if yyDollar[1].item.Typ == SUB {
|
|
nl.Val *= -1
|
|
}
|
|
nl.PosRange.Start = yyDollar[1].item.Pos
|
|
yyVAL.node = nl
|
|
} else {
|
|
yyVAL.node = &UnaryExpr{Op: yyDollar[1].item.Typ, Expr: yyDollar[2].node.(Expr), StartPos: yyDollar[1].item.Pos}
|
|
}
|
|
}
|
|
case 82:
|
|
yyDollar = yyS[yypt-2 : yypt+1]
|
|
//line promql/parser/generated_parser.y:519
|
|
{
|
|
vs := yyDollar[2].node.(*VectorSelector)
|
|
vs.PosRange = mergeRanges(&yyDollar[1].item, vs)
|
|
vs.Name = yyDollar[1].item.Val
|
|
yylex.(*parser).assembleVectorSelector(vs)
|
|
yyVAL.node = vs
|
|
}
|
|
case 83:
|
|
yyDollar = yyS[yypt-1 : yypt+1]
|
|
//line promql/parser/generated_parser.y:527
|
|
{
|
|
vs := &VectorSelector{
|
|
Name: yyDollar[1].item.Val,
|
|
LabelMatchers: []*labels.Matcher{},
|
|
PosRange: yyDollar[1].item.PositionRange(),
|
|
}
|
|
yylex.(*parser).assembleVectorSelector(vs)
|
|
yyVAL.node = vs
|
|
}
|
|
case 84:
|
|
yyDollar = yyS[yypt-1 : yypt+1]
|
|
//line promql/parser/generated_parser.y:537
|
|
{
|
|
vs := yyDollar[1].node.(*VectorSelector)
|
|
yylex.(*parser).assembleVectorSelector(vs)
|
|
yyVAL.node = vs
|
|
}
|
|
case 85:
|
|
yyDollar = yyS[yypt-3 : yypt+1]
|
|
//line promql/parser/generated_parser.y:545
|
|
{
|
|
yyVAL.node = &VectorSelector{
|
|
LabelMatchers: yyDollar[2].matchers,
|
|
PosRange: mergeRanges(&yyDollar[1].item, &yyDollar[3].item),
|
|
}
|
|
}
|
|
case 86:
|
|
yyDollar = yyS[yypt-4 : yypt+1]
|
|
//line promql/parser/generated_parser.y:552
|
|
{
|
|
yyVAL.node = &VectorSelector{
|
|
LabelMatchers: yyDollar[2].matchers,
|
|
PosRange: mergeRanges(&yyDollar[1].item, &yyDollar[4].item),
|
|
}
|
|
}
|
|
case 87:
|
|
yyDollar = yyS[yypt-2 : yypt+1]
|
|
//line promql/parser/generated_parser.y:559
|
|
{
|
|
yyVAL.node = &VectorSelector{
|
|
LabelMatchers: []*labels.Matcher{},
|
|
PosRange: mergeRanges(&yyDollar[1].item, &yyDollar[2].item),
|
|
}
|
|
}
|
|
case 88:
|
|
yyDollar = yyS[yypt-3 : yypt+1]
|
|
//line promql/parser/generated_parser.y:568
|
|
{
|
|
if yyDollar[1].matchers != nil {
|
|
yyVAL.matchers = append(yyDollar[1].matchers, yyDollar[3].matcher)
|
|
} else {
|
|
yyVAL.matchers = yyDollar[1].matchers
|
|
}
|
|
}
|
|
case 89:
|
|
yyDollar = yyS[yypt-1 : yypt+1]
|
|
//line promql/parser/generated_parser.y:576
|
|
{
|
|
yyVAL.matchers = []*labels.Matcher{yyDollar[1].matcher}
|
|
}
|
|
case 90:
|
|
yyDollar = yyS[yypt-2 : yypt+1]
|
|
//line promql/parser/generated_parser.y:578
|
|
{
|
|
yylex.(*parser).unexpected("label matching", "\",\" or \"}\"")
|
|
yyVAL.matchers = yyDollar[1].matchers
|
|
}
|
|
case 91:
|
|
yyDollar = yyS[yypt-3 : yypt+1]
|
|
//line promql/parser/generated_parser.y:582
|
|
{
|
|
yyVAL.matcher = yylex.(*parser).newLabelMatcher(yyDollar[1].item, yyDollar[2].item, yyDollar[3].item)
|
|
}
|
|
case 92:
|
|
yyDollar = yyS[yypt-3 : yypt+1]
|
|
//line promql/parser/generated_parser.y:584
|
|
{
|
|
yylex.(*parser).unexpected("label matching", "string")
|
|
yyVAL.matcher = nil
|
|
}
|
|
case 93:
|
|
yyDollar = yyS[yypt-2 : yypt+1]
|
|
//line promql/parser/generated_parser.y:586
|
|
{
|
|
yylex.(*parser).unexpected("label matching", "label matching operator")
|
|
yyVAL.matcher = nil
|
|
}
|
|
case 94:
|
|
yyDollar = yyS[yypt-1 : yypt+1]
|
|
//line promql/parser/generated_parser.y:588
|
|
{
|
|
yylex.(*parser).unexpected("label matching", "identifier or \"}\"")
|
|
yyVAL.matcher = nil
|
|
}
|
|
case 95:
|
|
yyDollar = yyS[yypt-2 : yypt+1]
|
|
//line promql/parser/generated_parser.y:596
|
|
{
|
|
b := labels.NewBuilder(yyDollar[2].labels)
|
|
b.Set(labels.MetricName, yyDollar[1].item.Val)
|
|
yyVAL.labels = b.Labels()
|
|
}
|
|
case 96:
|
|
yyDollar = yyS[yypt-1 : yypt+1]
|
|
//line promql/parser/generated_parser.y:598
|
|
{
|
|
yyVAL.labels = yyDollar[1].labels
|
|
}
|
|
case 119:
|
|
yyDollar = yyS[yypt-3 : yypt+1]
|
|
//line promql/parser/generated_parser.y:605
|
|
{
|
|
yyVAL.labels = labels.New(yyDollar[2].lblList...)
|
|
}
|
|
case 120:
|
|
yyDollar = yyS[yypt-4 : yypt+1]
|
|
//line promql/parser/generated_parser.y:607
|
|
{
|
|
yyVAL.labels = labels.New(yyDollar[2].lblList...)
|
|
}
|
|
case 121:
|
|
yyDollar = yyS[yypt-2 : yypt+1]
|
|
//line promql/parser/generated_parser.y:609
|
|
{
|
|
yyVAL.labels = labels.New()
|
|
}
|
|
case 122:
|
|
yyDollar = yyS[yypt-0 : yypt+1]
|
|
//line promql/parser/generated_parser.y:611
|
|
{
|
|
yyVAL.labels = labels.New()
|
|
}
|
|
case 123:
|
|
yyDollar = yyS[yypt-3 : yypt+1]
|
|
//line promql/parser/generated_parser.y:615
|
|
{
|
|
yyVAL.lblList = append(yyDollar[1].lblList, yyDollar[3].label)
|
|
}
|
|
case 124:
|
|
yyDollar = yyS[yypt-1 : yypt+1]
|
|
//line promql/parser/generated_parser.y:617
|
|
{
|
|
yyVAL.lblList = []labels.Label{yyDollar[1].label}
|
|
}
|
|
case 125:
|
|
yyDollar = yyS[yypt-2 : yypt+1]
|
|
//line promql/parser/generated_parser.y:619
|
|
{
|
|
yylex.(*parser).unexpected("label set", "\",\" or \"}\"")
|
|
yyVAL.lblList = yyDollar[1].lblList
|
|
}
|
|
case 126:
|
|
yyDollar = yyS[yypt-3 : yypt+1]
|
|
//line promql/parser/generated_parser.y:624
|
|
{
|
|
yyVAL.label = labels.Label{Name: yyDollar[1].item.Val, Value: yylex.(*parser).unquoteString(yyDollar[3].item.Val)}
|
|
}
|
|
case 127:
|
|
yyDollar = yyS[yypt-3 : yypt+1]
|
|
//line promql/parser/generated_parser.y:626
|
|
{
|
|
yylex.(*parser).unexpected("label set", "string")
|
|
yyVAL.label = labels.Label{}
|
|
}
|
|
case 128:
|
|
yyDollar = yyS[yypt-2 : yypt+1]
|
|
//line promql/parser/generated_parser.y:628
|
|
{
|
|
yylex.(*parser).unexpected("label set", "\"=\"")
|
|
yyVAL.label = labels.Label{}
|
|
}
|
|
case 129:
|
|
yyDollar = yyS[yypt-1 : yypt+1]
|
|
//line promql/parser/generated_parser.y:630
|
|
{
|
|
yylex.(*parser).unexpected("label set", "identifier or \"}\"")
|
|
yyVAL.label = labels.Label{}
|
|
}
|
|
case 130:
|
|
yyDollar = yyS[yypt-2 : yypt+1]
|
|
//line promql/parser/generated_parser.y:641
|
|
{
|
|
yylex.(*parser).generatedParserResult = &seriesDescription{
|
|
labels: yyDollar[1].labels,
|
|
values: yyDollar[2].series,
|
|
}
|
|
}
|
|
case 131:
|
|
yyDollar = yyS[yypt-0 : yypt+1]
|
|
//line promql/parser/generated_parser.y:650
|
|
{
|
|
yyVAL.series = []SequenceValue{}
|
|
}
|
|
case 132:
|
|
yyDollar = yyS[yypt-3 : yypt+1]
|
|
//line promql/parser/generated_parser.y:652
|
|
{
|
|
yyVAL.series = append(yyDollar[1].series, yyDollar[3].series...)
|
|
}
|
|
case 133:
|
|
yyDollar = yyS[yypt-2 : yypt+1]
|
|
//line promql/parser/generated_parser.y:654
|
|
{
|
|
yyVAL.series = yyDollar[1].series
|
|
}
|
|
case 134:
|
|
yyDollar = yyS[yypt-1 : yypt+1]
|
|
//line promql/parser/generated_parser.y:656
|
|
{
|
|
yylex.(*parser).unexpected("series values", "")
|
|
yyVAL.series = nil
|
|
}
|
|
case 135:
|
|
yyDollar = yyS[yypt-1 : yypt+1]
|
|
//line promql/parser/generated_parser.y:660
|
|
{
|
|
yyVAL.series = []SequenceValue{{Omitted: true}}
|
|
}
|
|
case 136:
|
|
yyDollar = yyS[yypt-3 : yypt+1]
|
|
//line promql/parser/generated_parser.y:662
|
|
{
|
|
yyVAL.series = []SequenceValue{}
|
|
for i := uint64(0); i < yyDollar[3].uint; i++ {
|
|
yyVAL.series = append(yyVAL.series, SequenceValue{Omitted: true})
|
|
}
|
|
}
|
|
case 137:
|
|
yyDollar = yyS[yypt-1 : yypt+1]
|
|
//line promql/parser/generated_parser.y:669
|
|
{
|
|
yyVAL.series = []SequenceValue{{Value: yyDollar[1].float}}
|
|
}
|
|
case 138:
|
|
yyDollar = yyS[yypt-3 : yypt+1]
|
|
//line promql/parser/generated_parser.y:671
|
|
{
|
|
yyVAL.series = []SequenceValue{}
|
|
// Add an additional value for time 0, which we ignore in tests.
|
|
for i := uint64(0); i <= yyDollar[3].uint; i++ {
|
|
yyVAL.series = append(yyVAL.series, SequenceValue{Value: yyDollar[1].float})
|
|
}
|
|
}
|
|
case 139:
|
|
yyDollar = yyS[yypt-4 : yypt+1]
|
|
//line promql/parser/generated_parser.y:679
|
|
{
|
|
yyVAL.series = []SequenceValue{}
|
|
// Add an additional value for time 0, which we ignore in tests.
|
|
for i := uint64(0); i <= yyDollar[4].uint; i++ {
|
|
yyVAL.series = append(yyVAL.series, SequenceValue{Value: yyDollar[1].float})
|
|
yyDollar[1].float += yyDollar[2].float
|
|
}
|
|
}
|
|
case 140:
|
|
yyDollar = yyS[yypt-1 : yypt+1]
|
|
//line promql/parser/generated_parser.y:689
|
|
{
|
|
yyVAL.series = []SequenceValue{{Histogram: yyDollar[1].histogram}}
|
|
}
|
|
case 141:
|
|
yyDollar = yyS[yypt-3 : yypt+1]
|
|
//line promql/parser/generated_parser.y:693
|
|
{
|
|
yyVAL.series = []SequenceValue{}
|
|
// Add an additional value for time 0, which we ignore in tests.
|
|
for i := uint64(0); i <= yyDollar[3].uint; i++ {
|
|
yyVAL.series = append(yyVAL.series, SequenceValue{Histogram: yyDollar[1].histogram})
|
|
//$1 += $2
|
|
}
|
|
}
|
|
case 142:
|
|
yyDollar = yyS[yypt-5 : yypt+1]
|
|
//line promql/parser/generated_parser.y:702
|
|
{
|
|
val, err := yylex.(*parser).histogramsIncreaseSeries(yyDollar[1].histogram, yyDollar[3].histogram, yyDollar[5].uint)
|
|
if err != nil {
|
|
yylex.(*parser).addSemanticError(err)
|
|
}
|
|
yyVAL.series = val
|
|
}
|
|
case 143:
|
|
yyDollar = yyS[yypt-5 : yypt+1]
|
|
//line promql/parser/generated_parser.y:710
|
|
{
|
|
val, err := yylex.(*parser).histogramsDecreaseSeries(yyDollar[1].histogram, yyDollar[3].histogram, yyDollar[5].uint)
|
|
if err != nil {
|
|
yylex.(*parser).addSemanticError(err)
|
|
}
|
|
yyVAL.series = val
|
|
}
|
|
case 144:
|
|
yyDollar = yyS[yypt-1 : yypt+1]
|
|
//line promql/parser/generated_parser.y:720
|
|
{
|
|
if yyDollar[1].item.Val != "stale" {
|
|
yylex.(*parser).unexpected("series values", "number or \"stale\"")
|
|
}
|
|
yyVAL.float = math.Float64frombits(value.StaleNaN)
|
|
}
|
|
case 147:
|
|
yyDollar = yyS[yypt-4 : yypt+1]
|
|
//line promql/parser/generated_parser.y:732
|
|
{
|
|
yyVAL.histogram = yylex.(*parser).buildHistogramFromMap(&yyDollar[2].descriptors)
|
|
}
|
|
case 148:
|
|
yyDollar = yyS[yypt-3 : yypt+1]
|
|
//line promql/parser/generated_parser.y:736
|
|
{
|
|
yyVAL.histogram = yylex.(*parser).buildHistogramFromMap(&yyDollar[2].descriptors)
|
|
}
|
|
case 149:
|
|
yyDollar = yyS[yypt-3 : yypt+1]
|
|
//line promql/parser/generated_parser.y:740
|
|
{
|
|
m := yylex.(*parser).newMap()
|
|
yyVAL.histogram = yylex.(*parser).buildHistogramFromMap(&m)
|
|
}
|
|
case 150:
|
|
yyDollar = yyS[yypt-2 : yypt+1]
|
|
//line promql/parser/generated_parser.y:745
|
|
{
|
|
m := yylex.(*parser).newMap()
|
|
yyVAL.histogram = yylex.(*parser).buildHistogramFromMap(&m)
|
|
}
|
|
case 151:
|
|
yyDollar = yyS[yypt-3 : yypt+1]
|
|
//line promql/parser/generated_parser.y:753
|
|
{
|
|
yyVAL.descriptors = *(yylex.(*parser).mergeMaps(&yyDollar[1].descriptors, &yyDollar[3].descriptors))
|
|
}
|
|
case 152:
|
|
yyDollar = yyS[yypt-1 : yypt+1]
|
|
//line promql/parser/generated_parser.y:757
|
|
{
|
|
yyVAL.descriptors = yyDollar[1].descriptors
|
|
}
|
|
case 153:
|
|
yyDollar = yyS[yypt-2 : yypt+1]
|
|
//line promql/parser/generated_parser.y:760
|
|
{
|
|
yylex.(*parser).unexpected("histogram description", "histogram description key, e.g. buckets:[5 10 7]")
|
|
}
|
|
case 154:
|
|
yyDollar = yyS[yypt-3 : yypt+1]
|
|
//line promql/parser/generated_parser.y:767
|
|
{
|
|
yyVAL.descriptors = yylex.(*parser).newMap()
|
|
yyVAL.descriptors["schema"] = yyDollar[3].int
|
|
}
|
|
case 155:
|
|
yyDollar = yyS[yypt-3 : yypt+1]
|
|
//line promql/parser/generated_parser.y:772
|
|
{
|
|
yyVAL.descriptors = yylex.(*parser).newMap()
|
|
yyVAL.descriptors["sum"] = yyDollar[3].float
|
|
}
|
|
case 156:
|
|
yyDollar = yyS[yypt-3 : yypt+1]
|
|
//line promql/parser/generated_parser.y:777
|
|
{
|
|
yyVAL.descriptors = yylex.(*parser).newMap()
|
|
yyVAL.descriptors["count"] = yyDollar[3].float
|
|
}
|
|
case 157:
|
|
yyDollar = yyS[yypt-3 : yypt+1]
|
|
//line promql/parser/generated_parser.y:782
|
|
{
|
|
yyVAL.descriptors = yylex.(*parser).newMap()
|
|
yyVAL.descriptors["z_bucket"] = yyDollar[3].float
|
|
}
|
|
case 158:
|
|
yyDollar = yyS[yypt-3 : yypt+1]
|
|
//line promql/parser/generated_parser.y:787
|
|
{
|
|
yyVAL.descriptors = yylex.(*parser).newMap()
|
|
yyVAL.descriptors["z_bucket_w"] = yyDollar[3].float
|
|
}
|
|
case 159:
|
|
yyDollar = yyS[yypt-3 : yypt+1]
|
|
//line promql/parser/generated_parser.y:792
|
|
{
|
|
yyVAL.descriptors = yylex.(*parser).newMap()
|
|
yyVAL.descriptors["buckets"] = yyDollar[3].bucket_set
|
|
}
|
|
case 160:
|
|
yyDollar = yyS[yypt-3 : yypt+1]
|
|
//line promql/parser/generated_parser.y:797
|
|
{
|
|
yyVAL.descriptors = yylex.(*parser).newMap()
|
|
yyVAL.descriptors["offset"] = yyDollar[3].int
|
|
}
|
|
case 161:
|
|
yyDollar = yyS[yypt-3 : yypt+1]
|
|
//line promql/parser/generated_parser.y:802
|
|
{
|
|
yyVAL.descriptors = yylex.(*parser).newMap()
|
|
yyVAL.descriptors["n_buckets"] = yyDollar[3].bucket_set
|
|
}
|
|
case 162:
|
|
yyDollar = yyS[yypt-3 : yypt+1]
|
|
//line promql/parser/generated_parser.y:807
|
|
{
|
|
yyVAL.descriptors = yylex.(*parser).newMap()
|
|
yyVAL.descriptors["n_offset"] = yyDollar[3].int
|
|
}
|
|
case 163:
|
|
yyDollar = yyS[yypt-4 : yypt+1]
|
|
//line promql/parser/generated_parser.y:814
|
|
{
|
|
yyVAL.bucket_set = yyDollar[2].bucket_set
|
|
}
|
|
case 164:
|
|
yyDollar = yyS[yypt-3 : yypt+1]
|
|
//line promql/parser/generated_parser.y:818
|
|
{
|
|
yyVAL.bucket_set = yyDollar[2].bucket_set
|
|
}
|
|
case 165:
|
|
yyDollar = yyS[yypt-3 : yypt+1]
|
|
//line promql/parser/generated_parser.y:824
|
|
{
|
|
yyVAL.bucket_set = append(yyDollar[1].bucket_set, yyDollar[3].float)
|
|
}
|
|
case 166:
|
|
yyDollar = yyS[yypt-1 : yypt+1]
|
|
//line promql/parser/generated_parser.y:828
|
|
{
|
|
yyVAL.bucket_set = []float64{yyDollar[1].float}
|
|
}
|
|
case 213:
|
|
yyDollar = yyS[yypt-1 : yypt+1]
|
|
//line promql/parser/generated_parser.y:853
|
|
{
|
|
yyVAL.node = &NumberLiteral{
|
|
Val: yylex.(*parser).number(yyDollar[1].item.Val),
|
|
PosRange: yyDollar[1].item.PositionRange(),
|
|
}
|
|
}
|
|
case 214:
|
|
yyDollar = yyS[yypt-1 : yypt+1]
|
|
//line promql/parser/generated_parser.y:861
|
|
{
|
|
yyVAL.float = yylex.(*parser).number(yyDollar[1].item.Val)
|
|
}
|
|
case 215:
|
|
yyDollar = yyS[yypt-2 : yypt+1]
|
|
//line promql/parser/generated_parser.y:863
|
|
{
|
|
yyVAL.float = yyDollar[2].float
|
|
}
|
|
case 216:
|
|
yyDollar = yyS[yypt-2 : yypt+1]
|
|
//line promql/parser/generated_parser.y:864
|
|
{
|
|
yyVAL.float = -yyDollar[2].float
|
|
}
|
|
case 219:
|
|
yyDollar = yyS[yypt-1 : yypt+1]
|
|
//line promql/parser/generated_parser.y:870
|
|
{
|
|
var err error
|
|
yyVAL.uint, err = strconv.ParseUint(yyDollar[1].item.Val, 10, 64)
|
|
if err != nil {
|
|
yylex.(*parser).addParseErrf(yyDollar[1].item.PositionRange(), "invalid repetition in series values: %s", err)
|
|
}
|
|
}
|
|
case 220:
|
|
yyDollar = yyS[yypt-2 : yypt+1]
|
|
//line promql/parser/generated_parser.y:879
|
|
{
|
|
yyVAL.int = -int64(yyDollar[2].uint)
|
|
}
|
|
case 221:
|
|
yyDollar = yyS[yypt-1 : yypt+1]
|
|
//line promql/parser/generated_parser.y:880
|
|
{
|
|
yyVAL.int = int64(yyDollar[1].uint)
|
|
}
|
|
case 222:
|
|
yyDollar = yyS[yypt-1 : yypt+1]
|
|
//line promql/parser/generated_parser.y:884
|
|
{
|
|
var err error
|
|
yyVAL.duration, err = parseDuration(yyDollar[1].item.Val)
|
|
if err != nil {
|
|
yylex.(*parser).addParseErr(yyDollar[1].item.PositionRange(), err)
|
|
}
|
|
}
|
|
case 223:
|
|
yyDollar = yyS[yypt-1 : yypt+1]
|
|
//line promql/parser/generated_parser.y:895
|
|
{
|
|
yyVAL.node = &StringLiteral{
|
|
Val: yylex.(*parser).unquoteString(yyDollar[1].item.Val),
|
|
PosRange: yyDollar[1].item.PositionRange(),
|
|
}
|
|
}
|
|
case 224:
|
|
yyDollar = yyS[yypt-0 : yypt+1]
|
|
//line promql/parser/generated_parser.y:908
|
|
{
|
|
yyVAL.duration = 0
|
|
}
|
|
case 226:
|
|
yyDollar = yyS[yypt-0 : yypt+1]
|
|
//line promql/parser/generated_parser.y:912
|
|
{
|
|
yyVAL.strings = nil
|
|
}
|
|
}
|
|
goto yystack /* stack new state and value */
|
|
}
|