prometheus/promql/parser/generated_parser.y.go
Julien Pivotto cec97e5948 promql/parser: extract helpers to reduce duplication in duration expression parsing
Add durationLiteralOutOfRange to centralise the int64 nanosecond overflow
check for numeric duration literals, replacing three identical inline
conditions in the grammar.

Add applyUnaryOpToDurationExpr to handle the unary +/- type-switch over
*DurationExpr/*NumberLiteral, collapsing two near-identical grammar
action blocks (offset_duration_expr and duration_expr) into single calls.

Regenerate generated_parser.y.go.

Signed-off-by: Julien Pivotto <291750+roidelapluie@users.noreply.github.com>
2026-05-22 17:29:46 +02:00

2553 lines
66 KiB
Go

// Code generated by goyacc -l -o promql/parser/generated_parser.y.go promql/parser/generated_parser.y. DO NOT EDIT.
package parser
import __yyfmt__ "fmt"
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"
"github.com/prometheus/common/model"
)
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
}
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 CUSTOM_VALUES_DESC = 57379
const COUNTER_RESET_HINT_DESC = 57380
const histogramDescEnd = 57381
const operatorsStart = 57382
const ADD = 57383
const DIV = 57384
const EQLC = 57385
const EQL_REGEX = 57386
const GTE = 57387
const GTR = 57388
const TRIM_UPPER = 57389
const TRIM_LOWER = 57390
const LAND = 57391
const LOR = 57392
const LSS = 57393
const LTE = 57394
const LUNLESS = 57395
const MOD = 57396
const MUL = 57397
const NEQ = 57398
const NEQ_REGEX = 57399
const POW = 57400
const SUB = 57401
const AT = 57402
const ATAN2 = 57403
const operatorsEnd = 57404
const aggregatorsStart = 57405
const AVG = 57406
const BOTTOMK = 57407
const COUNT = 57408
const COUNT_VALUES = 57409
const GROUP = 57410
const MAX = 57411
const MIN = 57412
const QUANTILE = 57413
const STDDEV = 57414
const STDVAR = 57415
const SUM = 57416
const TOPK = 57417
const LIMITK = 57418
const LIMIT_RATIO = 57419
const aggregatorsEnd = 57420
const keywordsStart = 57421
const BOOL = 57422
const BY = 57423
const GROUP_LEFT = 57424
const GROUP_RIGHT = 57425
const FILL = 57426
const FILL_LEFT = 57427
const FILL_RIGHT = 57428
const IGNORING = 57429
const OFFSET = 57430
const SMOOTHED = 57431
const ANCHORED = 57432
const ON = 57433
const WITHOUT = 57434
const keywordsEnd = 57435
const preprocessorStart = 57436
const START = 57437
const END = 57438
const STEP = 57439
const RANGE = 57440
const MAX_OF = 57441
const MIN_OF = 57442
const preprocessorEnd = 57443
const counterResetHintsStart = 57444
const UNKNOWN_COUNTER_RESET = 57445
const COUNTER_RESET = 57446
const NOT_COUNTER_RESET = 57447
const GAUGE_TYPE = 57448
const counterResetHintsEnd = 57449
const startSymbolsStart = 57450
const START_METRIC = 57451
const START_SERIES_DESCRIPTION = 57452
const START_EXPRESSION = 57453
const START_METRIC_SELECTOR = 57454
const startSymbolsEnd = 57455
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",
"CUSTOM_VALUES_DESC",
"COUNTER_RESET_HINT_DESC",
"histogramDescEnd",
"operatorsStart",
"ADD",
"DIV",
"EQLC",
"EQL_REGEX",
"GTE",
"GTR",
"TRIM_UPPER",
"TRIM_LOWER",
"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",
"LIMITK",
"LIMIT_RATIO",
"aggregatorsEnd",
"keywordsStart",
"BOOL",
"BY",
"GROUP_LEFT",
"GROUP_RIGHT",
"FILL",
"FILL_LEFT",
"FILL_RIGHT",
"IGNORING",
"OFFSET",
"SMOOTHED",
"ANCHORED",
"ON",
"WITHOUT",
"keywordsEnd",
"preprocessorStart",
"START",
"END",
"STEP",
"RANGE",
"MAX_OF",
"MIN_OF",
"preprocessorEnd",
"counterResetHintsStart",
"UNKNOWN_COUNTER_RESET",
"COUNTER_RESET",
"NOT_COUNTER_RESET",
"GAUGE_TYPE",
"counterResetHintsEnd",
"startSymbolsStart",
"START_METRIC",
"START_SERIES_DESCRIPTION",
"START_EXPRESSION",
"START_METRIC_SELECTOR",
"startSymbolsEnd",
}
var yyStatenames = [...]string{}
const yyEofCode = 1
const yyErrCode = 2
const yyInitialStackSize = 16
var yyExca = [...]int16{
-1, 1,
1, -1,
-2, 0,
-1, 46,
1, 169,
10, 169,
24, 169,
-2, 0,
-1, 78,
2, 212,
15, 212,
81, 212,
92, 212,
-2, 121,
-1, 79,
2, 213,
15, 213,
81, 213,
92, 213,
-2, 122,
-1, 80,
2, 214,
15, 214,
81, 214,
92, 214,
-2, 124,
-1, 81,
2, 215,
15, 215,
81, 215,
92, 215,
-2, 125,
-1, 82,
2, 216,
15, 216,
81, 216,
92, 216,
-2, 129,
-1, 83,
2, 217,
15, 217,
81, 217,
92, 217,
-2, 134,
-1, 84,
2, 218,
15, 218,
81, 218,
92, 218,
-2, 136,
-1, 85,
2, 219,
15, 219,
81, 219,
92, 219,
-2, 138,
-1, 86,
2, 220,
15, 220,
81, 220,
92, 220,
-2, 139,
-1, 87,
2, 221,
15, 221,
81, 221,
92, 221,
-2, 140,
-1, 88,
2, 222,
15, 222,
81, 222,
92, 222,
-2, 141,
-1, 89,
2, 223,
15, 223,
81, 223,
92, 223,
-2, 142,
-1, 90,
2, 224,
15, 224,
81, 224,
92, 224,
-2, 146,
-1, 91,
2, 225,
15, 225,
81, 225,
92, 225,
-2, 147,
-1, 92,
15, 93,
-2, 144,
-1, 93,
15, 94,
-2, 145,
-1, 94,
15, 295,
-2, 152,
-1, 95,
15, 296,
-2, 153,
-1, 156,
41, 298,
42, 298,
54, 298,
55, 298,
59, 298,
-2, 22,
-1, 274,
9, 283,
12, 283,
13, 283,
18, 283,
19, 283,
25, 283,
41, 283,
49, 283,
50, 283,
53, 283,
59, 283,
64, 283,
65, 283,
66, 283,
67, 283,
68, 283,
69, 283,
70, 283,
71, 283,
72, 283,
73, 283,
74, 283,
75, 283,
76, 283,
77, 283,
81, 283,
84, 283,
85, 283,
86, 283,
88, 283,
89, 283,
90, 283,
92, 283,
95, 283,
96, 283,
97, 283,
98, 283,
99, 283,
100, 283,
-2, 0,
-1, 275,
9, 283,
12, 283,
13, 283,
18, 283,
19, 283,
25, 283,
41, 283,
49, 283,
50, 283,
53, 283,
59, 283,
64, 283,
65, 283,
66, 283,
67, 283,
68, 283,
69, 283,
70, 283,
71, 283,
72, 283,
73, 283,
74, 283,
75, 283,
76, 283,
77, 283,
81, 283,
84, 283,
85, 283,
86, 283,
88, 283,
89, 283,
90, 283,
92, 283,
95, 283,
96, 283,
97, 283,
98, 283,
99, 283,
100, 283,
-2, 0,
}
const yyPrivate = 57344
const yyLast = 1439
var yyAct = [...]int16{
63, 386, 205, 455, 374, 457, 314, 208, 263, 216,
462, 53, 209, 105, 160, 6, 103, 438, 141, 439,
66, 392, 74, 247, 132, 140, 139, 469, 470, 471,
472, 144, 242, 207, 142, 69, 176, 393, 272, 132,
213, 415, 273, 132, 76, 143, 269, 270, 271, 138,
212, 110, 112, 113, 452, 114, 115, 116, 117, 118,
119, 120, 121, 122, 123, 124, 125, 112, 126, 127,
131, 111, 214, 154, 451, 156, 274, 275, 213, 123,
124, 456, 489, 126, 417, 131, 111, 126, 212, 131,
215, 145, 146, 147, 149, 151, 365, 142, 128, 130,
129, 488, 238, 170, 487, 484, 357, 48, 143, 364,
214, 473, 162, 128, 130, 129, 441, 128, 130, 129,
157, 356, 2, 3, 4, 5, 210, 211, 215, 201,
440, 362, 363, 218, 224, 225, 226, 227, 228, 229,
196, 407, 406, 259, 219, 219, 219, 219, 219, 219,
219, 197, 206, 241, 361, 220, 220, 220, 220, 220,
220, 220, 402, 415, 200, 230, 258, 231, 223, 223,
223, 223, 223, 223, 223, 153, 400, 155, 265, 71,
232, 235, 255, 266, 399, 204, 253, 257, 261, 70,
132, 136, 213, 267, 446, 264, 213, 423, 298, 267,
463, 424, 212, 137, 135, 302, 212, 138, 491, 293,
256, 96, 422, 445, 387, 397, 219, 110, 112, 421,
220, 298, 304, 305, 214, 490, 396, 220, 214, 97,
123, 124, 219, 296, 126, 127, 131, 111, 368, 71,
223, 213, 215, 220, 133, 136, 215, 98, 395, 70,
234, 212, 311, 369, 310, 309, 223, 137, 135, 162,
360, 138, 134, 233, 128, 130, 129, 221, 222, 202,
203, 370, 388, 389, 268, 367, 303, 301, 300, 299,
276, 277, 278, 279, 280, 281, 282, 283, 284, 285,
286, 287, 288, 289, 290, 291, 292, 394, 398, 249,
144, 152, 401, 366, 150, 148, 44, 7, 218, 219,
390, 391, 408, 219, 133, 136, 71, 403, 214, 219,
220, 486, 297, 219, 220, 308, 70, 137, 135, 307,
220, 138, 134, 223, 220, 71, 215, 223, 435, 251,
133, 136, 434, 223, 306, 70, 433, 223, 96, 477,
246, 250, 252, 137, 135, 245, 405, 138, 134, 413,
45, 432, 431, 71, 430, 429, 97, 96, 244, 204,
219, 414, 416, 70, 418, 404, 10, 428, 419, 420,
248, 220, 249, 133, 136, 97, 100, 427, 426, 425,
168, 169, 167, 163, 223, 96, 137, 135, 442, 436,
138, 134, 171, 161, 294, 295, 202, 203, 61, 219,
437, 359, 109, 97, 99, 1, 107, 448, 194, 411,
220, 8, 251, 450, 410, 46, 454, 77, 60, 458,
459, 460, 59, 223, 250, 252, 465, 461, 467, 409,
475, 476, 464, 75, 466, 478, 9, 9, 58, 474,
449, 221, 222, 202, 203, 57, 219, 479, 480, 358,
412, 106, 481, 175, 56, 55, 483, 220, 54, 133,
136, 104, 52, 173, 236, 51, 174, 50, 485, 254,
223, 163, 137, 135, 107, 317, 138, 134, 172, 219,
492, 161, 49, 133, 136, 330, 62, 262, 482, 159,
220, 336, 371, 108, 107, 447, 137, 135, 316, 260,
138, 134, 312, 223, 177, 178, 179, 180, 181, 182,
183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
193, 101, 332, 333, 468, 315, 334, 64, 158, 0,
0, 0, 444, 0, 347, 0, 0, 318, 320, 322,
323, 324, 335, 337, 340, 341, 342, 343, 344, 348,
349, 0, 0, 319, 321, 325, 326, 327, 328, 329,
331, 338, 353, 352, 339, 317, 133, 136, 345, 346,
350, 351, 354, 355, 443, 330, 0, 106, 0, 137,
135, 336, 243, 138, 134, 313, 166, 104, 316, 0,
0, 165, 0, 133, 136, 102, 0, 0, 0, 0,
107, 133, 136, 0, 164, 0, 137, 135, 0, 0,
138, 134, 332, 333, 137, 135, 334, 0, 138, 134,
0, 0, 0, 0, 347, 0, 0, 318, 320, 322,
323, 324, 335, 337, 340, 341, 342, 343, 344, 348,
349, 0, 0, 319, 321, 325, 326, 327, 328, 329,
331, 338, 353, 352, 339, 0, 0, 0, 345, 346,
350, 351, 354, 355, 71, 0, 0, 65, 98, 0,
72, 0, 0, 25, 70, 0, 0, 237, 217, 0,
73, 0, 0, 0, 0, 71, 0, 0, 0, 0,
0, 204, 0, 0, 0, 70, 96, 0, 0, 0,
0, 0, 0, 0, 21, 22, 0, 0, 23, 0,
0, 0, 0, 0, 97, 0, 0, 96, 0, 78,
79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
89, 90, 91, 0, 0, 97, 13, 0, 0, 16,
17, 18, 0, 27, 41, 40, 0, 33, 0, 0,
92, 93, 67, 68, 94, 95, 71, 0, 0, 65,
98, 0, 72, 0, 0, 25, 70, 0, 0, 240,
195, 0, 73, 221, 222, 202, 203, 71, 0, 0,
0, 0, 0, 204, 0, 0, 0, 70, 96, 0,
0, 0, 0, 0, 0, 0, 21, 22, 0, 0,
23, 0, 0, 0, 0, 0, 97, 0, 0, 96,
0, 78, 79, 80, 81, 82, 83, 84, 85, 86,
87, 88, 89, 90, 91, 0, 0, 97, 13, 0,
0, 16, 17, 18, 0, 27, 41, 40, 0, 33,
0, 0, 92, 93, 67, 68, 94, 95, 71, 0,
0, 65, 98, 0, 72, 0, 0, 25, 70, 0,
0, 239, 0, 0, 73, 198, 199, 202, 203, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
96, 0, 0, 0, 0, 0, 0, 0, 21, 22,
0, 0, 23, 0, 0, 0, 0, 0, 97, 0,
0, 0, 0, 78, 79, 80, 81, 82, 83, 84,
85, 86, 87, 88, 89, 90, 91, 0, 0, 0,
13, 0, 0, 16, 17, 18, 0, 27, 41, 40,
0, 33, 0, 0, 92, 93, 67, 68, 94, 95,
71, 47, 0, 65, 98, 0, 72, 373, 0, 25,
70, 0, 0, 0, 372, 0, 73, 0, 376, 377,
375, 382, 384, 381, 383, 378, 379, 380, 385, 0,
0, 0, 96, 0, 0, 0, 0, 0, 0, 0,
21, 22, 0, 0, 23, 0, 0, 0, 0, 0,
97, 0, 0, 0, 0, 78, 79, 80, 81, 82,
83, 84, 85, 86, 87, 88, 89, 90, 91, 0,
0, 0, 13, 0, 0, 16, 17, 18, 0, 27,
41, 40, 0, 33, 0, 0, 92, 93, 67, 68,
94, 95, 71, 0, 0, 65, 98, 0, 72, 453,
0, 25, 70, 0, 0, 0, 0, 0, 73, 0,
376, 377, 375, 382, 384, 381, 383, 378, 379, 380,
385, 0, 0, 0, 96, 0, 0, 0, 0, 0,
0, 0, 21, 22, 0, 0, 23, 0, 0, 0,
0, 0, 97, 0, 0, 0, 0, 78, 79, 80,
81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
91, 0, 0, 0, 13, 0, 0, 16, 17, 18,
0, 27, 41, 40, 0, 33, 0, 0, 92, 93,
67, 68, 94, 95, 20, 98, 0, 0, 0, 0,
25, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 21, 22, 0, 0, 23, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 11, 12, 14, 15,
19, 24, 26, 28, 29, 30, 31, 32, 36, 37,
0, 0, 0, 13, 0, 0, 16, 17, 18, 0,
27, 41, 40, 0, 33, 0, 0, 34, 35, 38,
39, 42, 43, 20, 44, 0, 0, 0, 0, 25,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
21, 22, 0, 0, 23, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 11, 12, 14, 15, 19,
24, 26, 28, 29, 30, 31, 32, 36, 37, 132,
0, 0, 13, 0, 0, 16, 17, 18, 0, 27,
41, 40, 0, 33, 0, 0, 34, 35, 38, 39,
42, 43, 132, 0, 0, 0, 110, 112, 113, 0,
114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
124, 125, 0, 126, 127, 131, 111, 0, 0, 110,
112, 113, 0, 114, 115, 116, 117, 118, 0, 120,
121, 122, 123, 124, 125, 0, 126, 127, 131, 111,
0, 0, 132, 128, 130, 129, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 128, 130, 129, 110,
112, 113, 0, 114, 115, 116, 117, 0, 0, 120,
121, 0, 123, 124, 125, 0, 126, 127, 131, 111,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 128, 130, 129,
}
var yyPact = [...]int16{
13, 297, 1211, 1211, 941, 1122, -1000, -1000, -1000, 293,
-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, -1000, -1000, 585, -1000, 410, -1000, 1275, -1000,
-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
-1000, -1000, -1000, 273, 16, 285, 285, 290, 289, 286,
-1000, -1000, 1033, -1000, 1033, 234, -1000, -1000, -1000, -1000,
-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 479, -1000,
-1000, 594, -1000, -1000, 388, 387, -1000, -1000, 79, -1000,
-44, -44, -44, -44, -44, -44, -44, -44, -44, -44,
-44, -44, -44, -44, -44, -44, -44, -44, 778, -1000,
-1000, 31, 686, 170, 170, 170, 170, 170, 170, 285,
-47, -1000, 248, 248, 665, -1000, -1000, -1000, 849, -1000,
757, -1000, 665, 10, 570, 29, -9, -1000, 348, -1000,
-1000, 378, 295, -1000, -1000, 459, -1000, 185, -1000, 141,
183, 1033, -1000, -38, -49, -6, -1000, 1033, 1033, 1033,
1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033,
1033, 1033, 1033, 1033, -1000, -1000, -1000, 307, 264, 263,
262, 273, -1000, -1000, 170, -1000, 261, -1000, -1000, -1000,
-1000, -1000, -1000, -1000, 232, 232, 323, -1000, 273, -1000,
170, 240, 239, 237, 149, 149, -9, -9, -9, -9,
-1000, -1000, -1000, 573, -1000, -1000, 99, -1000, 1275, -1000,
-1000, 452, -1000, -1000, -1000, 391, -1000, 129, -1000, -1000,
-1000, -1000, -1000, 107, -1000, -1000, -1000, -1000, -1000, -1000,
-1000, 70, 277, 212, -1000, -1000, -1000, 940, 25, 199,
199, 199, 248, 248, 248, 248, 29, 29, 176, 176,
176, 176, 176, 1348, 1298, 176, 176, 1348, 29, 29,
176, 29, 25, -1000, 233, 211, 200, 170, -9, 162,
154, 170, 570, 140, -1000, -1000, -1000, 354, -1000, 120,
119, 170, 417, -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, -1000, -1000, -1000, -1000, -1000,
-1000, -1000, -1000, -1000, -1000, -1000, -1000, 1033, 170, -1000,
-1000, -1000, -1000, -1000, -1000, 144, 144, 58, 144, 177,
177, 195, 184, -1000, -1000, 383, 382, 381, 371, 359,
358, 356, 355, 340, 336, 332, -1000, 326, -69, -66,
-1000, -1000, -1000, -1000, -1000, 108, 94, 170, 562, -1000,
-1000, 535, -1000, 192, -1000, -1000, -1000, -1000, 452, -1000,
483, -1000, 1275, 428, -1000, -1000, -1000, 144, -1000, 48,
28, 1032, -1000, -1000, -1000, 22, 69, 69, 69, 232,
186, 186, 22, 186, 22, -76, 89, 230, 199, 199,
-1000, -1000, 342, -1000, 170, -1000, -1000, -1000, -1000, -1000,
-1000, 144, 144, -1000, -1000, -1000, 144, -1000, -1000, -1000,
-1000, -1000, -1000, 69, -1000, -1000, -1000, -1000, -1000, -1000,
-1000, -1000, -1000, -1000, 83, -1000, -1000, 170, 299, -1000,
-1000, -1000, 80, -1000, -1000, 203, -1000, 187, -1000, -1000,
-1000, -1000, -1000,
}
var yyPgo = [...]int16{
0, 538, 14, 537, 6, 23, 535, 443, 22, 20,
13, 534, 35, 376, 421, 531, 16, 512, 37, 21,
509, 503, 8, 502, 4, 10, 498, 3, 5, 7,
497, 12, 2, 496, 492, 26, 402, 488, 477, 476,
102, 475, 474, 25, 473, 1, 44, 472, 11, 468,
465, 464, 463, 455, 448, 432, 428, 408, 0, 427,
9, 418, 415, 360,
}
var yyR1 = [...]int8{
0, 62, 62, 62, 62, 62, 62, 62, 40, 40,
40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
40, 40, 40, 34, 34, 34, 34, 35, 35, 38,
38, 38, 38, 38, 38, 38, 38, 38, 38, 38,
38, 38, 38, 38, 38, 38, 38, 36, 39, 39,
52, 52, 44, 44, 44, 44, 37, 37, 37, 37,
37, 37, 18, 18, 18, 18, 17, 17, 17, 4,
4, 4, 45, 45, 41, 41, 41, 41, 41, 43,
43, 42, 42, 42, 53, 60, 49, 49, 50, 51,
33, 33, 33, 9, 9, 47, 55, 55, 55, 55,
55, 55, 56, 57, 57, 57, 46, 46, 46, 1,
1, 1, 2, 2, 2, 2, 2, 2, 2, 14,
14, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 13, 13, 13, 13, 15, 15,
15, 16, 16, 16, 16, 16, 16, 16, 63, 21,
21, 21, 21, 20, 20, 20, 20, 20, 20, 20,
20, 20, 30, 30, 30, 22, 22, 22, 22, 23,
23, 23, 24, 24, 24, 24, 24, 24, 24, 24,
24, 24, 24, 25, 25, 26, 26, 26, 11, 11,
11, 11, 3, 3, 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, 6, 6, 6, 6, 6, 6, 6,
6, 6, 6, 6, 8, 8, 5, 5, 5, 5,
48, 48, 29, 29, 31, 31, 32, 32, 28, 27,
27, 54, 10, 19, 19, 61, 61, 61, 61, 61,
61, 61, 61, 61, 61, 12, 12, 58, 58, 58,
58, 58, 58, 58, 58, 58, 58, 58, 58, 59,
}
var yyR2 = [...]int8{
0, 2, 2, 2, 2, 2, 2, 1, 1, 1,
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, 4, 4, 1, 0, 1,
3, 3, 1, 1, 3, 3, 1, 3, 3, 3,
5, 5, 3, 4, 2, 1, 3, 1, 2, 1,
1, 1, 3, 4, 2, 2, 2, 2, 2, 3,
2, 3, 1, 2, 3, 1, 3, 3, 2, 2,
3, 5, 3, 1, 1, 4, 6, 5, 6, 5,
4, 3, 2, 2, 1, 1, 3, 4, 2, 3,
1, 2, 3, 3, 1, 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, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 3, 4, 2, 0, 3, 1,
2, 3, 3, 1, 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, 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, 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, 1, 2, 3, 3, 4,
4, 6, 7, 4, 1, 1, 1, 1, 2, 3,
3, 3, 3, 3, 3, 3, 3, 6, 1, 3,
}
var yyChk = [...]int16{
-1000, -62, 109, 110, 111, 112, 2, 10, -14, -7,
-13, 64, 65, 81, 66, 67, 84, 85, 86, 68,
12, 49, 50, 53, 69, 18, 70, 88, 71, 72,
73, 74, 75, 92, 95, 96, 76, 77, 97, 98,
90, 89, 99, 100, 13, -63, -14, 10, -40, -34,
-38, -41, -47, -48, -49, -50, -51, -53, -54, -55,
-56, -57, -33, -58, -3, 12, -9, 97, 98, -12,
19, 9, 15, 25, -8, -7, -46, -59, 64, 65,
66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
76, 77, 95, 96, 99, 100, 41, 59, 13, -57,
-13, -15, 20, -16, 12, -10, 2, 25, -21, 2,
41, 61, 42, 43, 45, 46, 47, 48, 49, 50,
51, 52, 53, 54, 55, 56, 58, 59, 88, 90,
89, 60, 14, 41, 59, 55, 42, 54, 58, -35,
-43, 2, 81, 92, 15, -43, -43, -43, 15, -43,
15, -43, 15, -40, -58, -40, -58, -46, -1, 20,
-2, 12, -10, 2, 20, 7, 2, 4, 2, 4,
24, -36, -37, -44, -39, -52, 80, -36, -36, -36,
-36, -36, -36, -36, -36, -36, -36, -36, -36, -36,
-36, -36, -36, -36, -61, 2, -48, -8, 97, 98,
-12, -58, 99, 100, 15, -32, -9, 2, -29, -31,
95, 96, 19, 9, 41, 59, -60, 2, -58, -48,
-8, 97, 98, -12, -58, -58, -58, -58, -58, -58,
-43, -35, -18, 15, 2, -18, -42, 22, -40, 22,
22, -58, 22, 22, 20, 7, 2, -5, 2, 4,
56, 44, 57, -5, 20, -16, 25, 2, 25, 2,
-20, 5, -30, -22, 12, -29, -31, 16, -40, 84,
85, 86, 87, 91, 82, 83, -40, -40, -40, -40,
-40, -40, -40, -40, -40, -40, -40, -40, -40, -40,
-40, -40, -40, -48, 97, 98, -12, 15, -58, 15,
15, 15, -58, 15, -29, -29, 21, 6, 2, 15,
15, 15, -17, 22, -4, -6, 25, 2, 64, 80,
65, 81, 66, 67, 68, 82, 83, 84, 85, 86,
12, 87, 49, 50, 53, 69, 18, 70, 88, 91,
71, 72, 73, 74, 75, 95, 96, 61, 76, 77,
97, 98, 90, 89, 99, 100, 22, 7, 7, 20,
-2, 25, 2, 25, 2, 26, 26, -31, 26, 41,
59, -23, 24, 17, -24, 30, 28, 29, 35, 36,
37, 33, 31, 34, 32, 38, -45, 15, -45, -45,
-18, -18, -19, -18, -19, 15, 15, 15, -58, 22,
22, -58, 22, -60, 21, 2, 22, 22, -58, 22,
7, 2, -40, -58, -28, 19, -28, 26, -28, -22,
-22, 24, 17, 2, 17, 6, 6, 6, 6, 6,
6, 6, 6, 6, 6, 6, -48, -8, 86, 85,
22, 22, -58, 22, 7, 21, 2, 22, -4, 22,
-28, 26, 26, 17, -24, -27, 59, -28, -32, -32,
-32, -29, -25, 14, -25, -27, -25, -27, -11, 103,
104, 105, 106, 22, -48, -45, -45, 7, -58, -28,
-28, -28, -26, -32, 22, -58, 22, 24, 21, 2,
22, 21, -32,
}
var yyDef = [...]int16{
0, -2, 157, 157, 0, 0, 7, 6, 1, 157,
120, 121, 122, 123, 124, 125, 126, 127, 128, 129,
130, 131, 132, 133, 134, 135, 136, 137, 138, 139,
140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
150, 151, 152, 153, 0, 2, -2, 3, 4, 8,
9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
19, 20, 21, 22, 0, 130, 0, 148, 149, 0,
270, 271, 0, 281, 0, 104, 105, 308, -2, -2,
-2, -2, -2, -2, -2, -2, -2, -2, -2, -2,
-2, -2, -2, -2, -2, -2, 264, 265, 0, 5,
119, 0, 156, 159, 0, 163, 167, 282, 168, 172,
48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 48, 0, 88,
89, 0, 0, 0, 0, 0, 0, 0, 0, 0,
25, 26, 0, 0, 0, 74, 75, 76, 0, 77,
0, 78, 0, 0, 22, 102, -2, 103, 0, 108,
110, 0, 114, 118, 154, 0, 160, 0, 166, 0,
171, 0, 47, 56, 52, 53, 49, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 86, 87, 285, 0, 0, 0,
0, 294, 295, 296, 0, 90, 0, 92, 276, 277,
93, 94, 272, 273, 0, 0, 0, 101, 85, 297,
0, 0, 0, 0, 299, 300, 301, 302, 303, 304,
23, 24, 27, 0, 65, 28, 0, 80, 82, 80,
80, 22, 84, 309, 106, 0, 111, 0, 117, 266,
267, 268, 269, 0, 155, 158, 161, 164, 162, 165,
170, 173, 175, 178, 182, 183, 184, 0, 29, 0,
0, 0, 0, 0, -2, -2, 30, 31, 32, 33,
34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
44, 45, 46, 286, 0, 0, 0, 0, 298, 0,
0, 0, 0, 0, 274, 275, 95, 0, 100, 0,
0, 0, 0, 64, 67, 69, 70, 71, 226, 227,
228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
248, 249, 250, 251, 252, 253, 254, 255, 256, 257,
258, 259, 260, 261, 262, 263, 79, 83, 0, 107,
109, 112, 116, 113, 115, 0, 0, 0, 0, 0,
0, 0, 0, 188, 190, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 57, 0, 58, 59,
50, 51, 54, 284, 55, 0, 0, 0, 0, 287,
288, 0, 91, 0, 97, 99, 305, 306, 0, 62,
0, 68, 81, 0, 174, 278, 176, 0, 179, 0,
0, 0, 186, 191, 187, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
289, 290, 0, 293, 0, 96, 98, 63, 66, 307,
177, 0, 0, 185, 189, 192, 0, 280, 193, 194,
195, 196, 197, 0, 198, 199, 200, 201, 202, 208,
209, 210, 211, 72, 0, 60, 61, 0, 0, 180,
181, 279, 0, 206, 73, 0, 291, 0, 204, 207,
292, 203, 205,
}
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, 93, 94, 95, 96, 97, 98, 99, 100, 101,
102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
112, 113,
}
var yyTok3 = [...]int8{
0,
}
var yyErrorMessages = [...]struct {
state int
token int
msg string
}{}
/* 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]
{
yylex.(*parser).generatedParserResult = yyDollar[2].labels
}
case 3:
yyDollar = yyS[yypt-2 : yypt+1]
{
yylex.(*parser).addParseErrf(posrange.PositionRange{}, "no expression found in input")
}
case 4:
yyDollar = yyS[yypt-2 : yypt+1]
{
yylex.(*parser).generatedParserResult = yyDollar[2].node
}
case 5:
yyDollar = yyS[yypt-2 : yypt+1]
{
yylex.(*parser).generatedParserResult = yyDollar[2].node
}
case 7:
yyDollar = yyS[yypt-1 : yypt+1]
{
yylex.(*parser).unexpected("", "")
}
case 23:
yyDollar = yyS[yypt-3 : yypt+1]
{
yyVAL.node = yylex.(*parser).newAggregateExpr(yyDollar[1].item, yyDollar[2].node, yyDollar[3].node, false)
}
case 24:
yyDollar = yyS[yypt-3 : yypt+1]
{
yyVAL.node = yylex.(*parser).newAggregateExpr(yyDollar[1].item, yyDollar[3].node, yyDollar[2].node, false)
}
case 25:
yyDollar = yyS[yypt-2 : yypt+1]
{
yyVAL.node = yylex.(*parser).newAggregateExpr(yyDollar[1].item, &AggregateExpr{}, yyDollar[2].node, true)
}
case 26:
yyDollar = yyS[yypt-2 : yypt+1]
{
yylex.(*parser).unexpected("aggregation", "")
yyVAL.node = yylex.(*parser).newAggregateExpr(yyDollar[1].item, &AggregateExpr{}, Expressions{}, false)
}
case 27:
yyDollar = yyS[yypt-2 : yypt+1]
{
yyVAL.node = &AggregateExpr{
Grouping: yyDollar[2].strings,
}
}
case 28:
yyDollar = yyS[yypt-2 : yypt+1]
{
yyVAL.node = &AggregateExpr{
Grouping: yyDollar[2].strings,
Without: true,
}
}
case 29:
yyDollar = yyS[yypt-4 : yypt+1]
{
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]
{
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]
{
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]
{
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]
{
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]
{
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]
{
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]
{
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]
{
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]
{
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]
{
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]
{
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]
{
yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node)
}
case 42:
yyDollar = yyS[yypt-4 : yypt+1]
{
yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node)
}
case 43:
yyDollar = yyS[yypt-4 : yypt+1]
{
yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node)
}
case 44:
yyDollar = yyS[yypt-4 : yypt+1]
{
yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node)
}
case 45:
yyDollar = yyS[yypt-4 : yypt+1]
{
yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node)
}
case 46:
yyDollar = yyS[yypt-4 : yypt+1]
{
yyVAL.node = yylex.(*parser).newBinaryExpression(yyDollar[1].node, yyDollar[2].item, yyDollar[3].node, yyDollar[4].node)
}
case 48:
yyDollar = yyS[yypt-0 : yypt+1]
{
yyVAL.node = &BinaryExpr{
VectorMatching: &VectorMatching{Card: CardOneToOne},
}
}
case 49:
yyDollar = yyS[yypt-1 : yypt+1]
{
yyVAL.node = &BinaryExpr{
VectorMatching: &VectorMatching{Card: CardOneToOne},
ReturnBool: true,
}
}
case 50:
yyDollar = yyS[yypt-3 : yypt+1]
{
yyVAL.node = yyDollar[1].node
yyVAL.node.(*BinaryExpr).VectorMatching.MatchingLabels = yyDollar[3].strings
}
case 51:
yyDollar = yyS[yypt-3 : yypt+1]
{
yyVAL.node = yyDollar[1].node
yyVAL.node.(*BinaryExpr).VectorMatching.MatchingLabels = yyDollar[3].strings
yyVAL.node.(*BinaryExpr).VectorMatching.On = true
}
case 54:
yyDollar = yyS[yypt-3 : yypt+1]
{
yyVAL.node = yyDollar[1].node
yyVAL.node.(*BinaryExpr).VectorMatching.Card = CardManyToOne
yyVAL.node.(*BinaryExpr).VectorMatching.Include = yyDollar[3].strings
}
case 55:
yyDollar = yyS[yypt-3 : yypt+1]
{
yyVAL.node = yyDollar[1].node
yyVAL.node.(*BinaryExpr).VectorMatching.Card = CardOneToMany
yyVAL.node.(*BinaryExpr).VectorMatching.Include = yyDollar[3].strings
}
case 57:
yyDollar = yyS[yypt-3 : yypt+1]
{
yyVAL.node = yyDollar[1].node
fill := yyDollar[3].node.(*NumberLiteral).Val
yyVAL.node.(*BinaryExpr).VectorMatching.FillValues.LHS = &fill
yyVAL.node.(*BinaryExpr).VectorMatching.FillValues.RHS = &fill
}
case 58:
yyDollar = yyS[yypt-3 : yypt+1]
{
yyVAL.node = yyDollar[1].node
fill := yyDollar[3].node.(*NumberLiteral).Val
yyVAL.node.(*BinaryExpr).VectorMatching.FillValues.LHS = &fill
}
case 59:
yyDollar = yyS[yypt-3 : yypt+1]
{
yyVAL.node = yyDollar[1].node
fill := yyDollar[3].node.(*NumberLiteral).Val
yyVAL.node.(*BinaryExpr).VectorMatching.FillValues.RHS = &fill
}
case 60:
yyDollar = yyS[yypt-5 : yypt+1]
{
yyVAL.node = yyDollar[1].node
fill_left := yyDollar[3].node.(*NumberLiteral).Val
fill_right := yyDollar[5].node.(*NumberLiteral).Val
yyVAL.node.(*BinaryExpr).VectorMatching.FillValues.LHS = &fill_left
yyVAL.node.(*BinaryExpr).VectorMatching.FillValues.RHS = &fill_right
}
case 61:
yyDollar = yyS[yypt-5 : yypt+1]
{
fill_right := yyDollar[3].node.(*NumberLiteral).Val
fill_left := yyDollar[5].node.(*NumberLiteral).Val
yyVAL.node.(*BinaryExpr).VectorMatching.FillValues.LHS = &fill_left
yyVAL.node.(*BinaryExpr).VectorMatching.FillValues.RHS = &fill_right
}
case 62:
yyDollar = yyS[yypt-3 : yypt+1]
{
yyVAL.strings = yyDollar[2].strings
}
case 63:
yyDollar = yyS[yypt-4 : yypt+1]
{
yyVAL.strings = yyDollar[2].strings
}
case 64:
yyDollar = yyS[yypt-2 : yypt+1]
{
yyVAL.strings = []string{}
}
case 65:
yyDollar = yyS[yypt-1 : yypt+1]
{
yylex.(*parser).unexpected("grouping opts", "\"(\"")
yyVAL.strings = nil
}
case 66:
yyDollar = yyS[yypt-3 : yypt+1]
{
yyVAL.strings = append(yyDollar[1].strings, yyDollar[3].item.Val)
}
case 67:
yyDollar = yyS[yypt-1 : yypt+1]
{
yyVAL.strings = []string{yyDollar[1].item.Val}
}
case 68:
yyDollar = yyS[yypt-2 : yypt+1]
{
yylex.(*parser).unexpected("grouping opts", "\",\" or \")\"")
yyVAL.strings = yyDollar[1].strings
}
case 69:
yyDollar = yyS[yypt-1 : yypt+1]
{
if !model.UTF8Validation.IsValidLabelName(yyDollar[1].item.Val) {
yylex.(*parser).addParseErrf(yyDollar[1].item.PositionRange(), "invalid label name for grouping: %q", yyDollar[1].item.Val)
}
yyVAL.item = yyDollar[1].item
}
case 70:
yyDollar = yyS[yypt-1 : yypt+1]
{
unquoted := yylex.(*parser).unquoteString(yyDollar[1].item.Val)
if !model.UTF8Validation.IsValidLabelName(unquoted) {
yylex.(*parser).addParseErrf(yyDollar[1].item.PositionRange(), "invalid label name for grouping: %q", unquoted)
}
yyVAL.item = yyDollar[1].item
yyVAL.item.Pos++
yyVAL.item.Val = unquoted
}
case 71:
yyDollar = yyS[yypt-1 : yypt+1]
{
yylex.(*parser).unexpected("grouping opts", "label")
yyVAL.item = Item{}
}
case 72:
yyDollar = yyS[yypt-3 : yypt+1]
{
yyVAL.node = yyDollar[2].node.(*NumberLiteral)
}
case 73:
yyDollar = yyS[yypt-4 : yypt+1]
{
nl := yyDollar[3].node.(*NumberLiteral)
if yyDollar[2].item.Typ == SUB {
nl.Val *= -1
}
nl.PosRange.Start = yyDollar[2].item.Pos
yyVAL.node = nl
}
case 74:
yyDollar = yyS[yypt-2 : yypt+1]
{
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)
}
if fn != nil && fn.Experimental && !yylex.(*parser).options.EnableExperimentalFunctions {
yylex.(*parser).addParseErrf(yyDollar[1].item.PositionRange(), "function %q is not enabled", 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 75:
yyDollar = yyS[yypt-2 : yypt+1]
{
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)
}
if fn != nil && fn.Experimental && !yylex.(*parser).options.EnableExperimentalFunctions {
yylex.(*parser).addParseErrf(yyDollar[1].item.PositionRange(), "function %q is not enabled", yyDollar[1].item.Val)
}
yyVAL.node = &Call{
Func: fn,
Args: yyDollar[2].node.(Expressions),
PosRange: posrange.PositionRange{
Start: yyDollar[1].item.PositionRange().Start,
End: yylex.(*parser).lastClosing,
},
}
}
case 76:
yyDollar = yyS[yypt-2 : yypt+1]
{
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)
}
if fn != nil && fn.Experimental && !yylex.(*parser).options.EnableExperimentalFunctions {
yylex.(*parser).addParseErrf(yyDollar[1].item.PositionRange(), "function %q is not enabled", yyDollar[1].item.Val)
}
yyVAL.node = &Call{
Func: fn,
Args: yyDollar[2].node.(Expressions),
PosRange: posrange.PositionRange{
Start: yyDollar[1].item.PositionRange().Start,
End: yylex.(*parser).lastClosing,
},
}
}
case 77:
yyDollar = yyS[yypt-2 : yypt+1]
{
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)
}
if fn != nil && fn.Experimental && !yylex.(*parser).options.EnableExperimentalFunctions {
yylex.(*parser).addParseErrf(yyDollar[1].item.PositionRange(), "function %q is not enabled", yyDollar[1].item.Val)
}
yyVAL.node = &Call{
Func: fn,
Args: yyDollar[2].node.(Expressions),
PosRange: posrange.PositionRange{
Start: yyDollar[1].item.PositionRange().Start,
End: yylex.(*parser).lastClosing,
},
}
}
case 78:
yyDollar = yyS[yypt-2 : yypt+1]
{
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)
}
if fn != nil && fn.Experimental && !yylex.(*parser).options.EnableExperimentalFunctions {
yylex.(*parser).addParseErrf(yyDollar[1].item.PositionRange(), "function %q is not enabled", yyDollar[1].item.Val)
}
yyVAL.node = &Call{
Func: fn,
Args: yyDollar[2].node.(Expressions),
PosRange: posrange.PositionRange{
Start: yyDollar[1].item.PositionRange().Start,
End: yylex.(*parser).lastClosing,
},
}
}
case 79:
yyDollar = yyS[yypt-3 : yypt+1]
{
yyVAL.node = yyDollar[2].node
}
case 80:
yyDollar = yyS[yypt-2 : yypt+1]
{
yyVAL.node = Expressions{}
}
case 81:
yyDollar = yyS[yypt-3 : yypt+1]
{
yyVAL.node = append(yyDollar[1].node.(Expressions), yyDollar[3].node.(Expr))
}
case 82:
yyDollar = yyS[yypt-1 : yypt+1]
{
yyVAL.node = Expressions{yyDollar[1].node.(Expr)}
}
case 83:
yyDollar = yyS[yypt-2 : yypt+1]
{
yylex.(*parser).addParseErrf(yyDollar[2].item.PositionRange(), "trailing commas not allowed in function call args")
yyVAL.node = yyDollar[1].node
}
case 84:
yyDollar = yyS[yypt-3 : yypt+1]
{
yyVAL.node = &ParenExpr{Expr: yyDollar[2].node.(Expr), PosRange: mergeRanges(&yyDollar[1].item, &yyDollar[3].item)}
}
case 85:
yyDollar = yyS[yypt-1 : yypt+1]
{
if numLit, ok := yyDollar[1].node.(*NumberLiteral); ok {
if numLit.Val <= 0 {
yylex.(*parser).addParseErrf(numLit.PositionRange(), "duration must be greater than 0")
yyVAL.node = &NumberLiteral{Val: 0} // Return 0 on error.
break
}
yyVAL.node = yyDollar[1].node
break
}
yyVAL.node = yyDollar[1].node
}
case 86:
yyDollar = yyS[yypt-3 : yypt+1]
{
if numLit, ok := yyDollar[3].node.(*NumberLiteral); ok {
yylex.(*parser).addOffset(yyDollar[1].node, time.Duration(math.Round(numLit.Val*float64(time.Second))))
yyVAL.node = yyDollar[1].node
break
}
yylex.(*parser).addOffsetExpr(yyDollar[1].node, yyDollar[3].node.(*DurationExpr))
yyVAL.node = yyDollar[1].node
}
case 87:
yyDollar = yyS[yypt-3 : yypt+1]
{
yylex.(*parser).unexpected("offset", "number, duration, step(), or range()")
yyVAL.node = yyDollar[1].node
}
case 88:
yyDollar = yyS[yypt-2 : yypt+1]
{
yylex.(*parser).setAnchored(yyDollar[1].node)
}
case 89:
yyDollar = yyS[yypt-2 : yypt+1]
{
yylex.(*parser).setSmoothed(yyDollar[1].node)
}
case 90:
yyDollar = yyS[yypt-3 : yypt+1]
{
yylex.(*parser).setTimestamp(yyDollar[1].node, yyDollar[3].float)
yyVAL.node = yyDollar[1].node
}
case 91:
yyDollar = yyS[yypt-5 : yypt+1]
{
yylex.(*parser).setAtModifierPreprocessor(yyDollar[1].node, yyDollar[3].item)
yyVAL.node = yyDollar[1].node
}
case 92:
yyDollar = yyS[yypt-3 : yypt+1]
{
yylex.(*parser).unexpected("@", "timestamp")
yyVAL.node = yyDollar[1].node
}
case 95:
yyDollar = yyS[yypt-4 : yypt+1]
{
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, "%s", errMsg)
}
var rangeNl time.Duration
if numLit, ok := yyDollar[3].node.(*NumberLiteral); ok {
rangeNl = time.Duration(math.Round(numLit.Val * float64(time.Second)))
}
rangeExpr, _ := yyDollar[3].node.(*DurationExpr)
yyVAL.node = &MatrixSelector{
VectorSelector: yyDollar[1].node.(Expr),
Range: rangeNl,
RangeExpr: rangeExpr,
EndPos: yylex.(*parser).lastClosing,
}
}
case 96:
yyDollar = yyS[yypt-6 : yypt+1]
{
var rangeNl time.Duration
var stepNl time.Duration
if numLit, ok := yyDollar[3].node.(*NumberLiteral); ok {
rangeNl = time.Duration(math.Round(numLit.Val * float64(time.Second)))
}
rangeExpr, _ := yyDollar[3].node.(*DurationExpr)
if numLit, ok := yyDollar[5].node.(*NumberLiteral); ok {
stepNl = time.Duration(math.Round(numLit.Val * float64(time.Second)))
}
stepExpr, _ := yyDollar[5].node.(*DurationExpr)
yyVAL.node = &SubqueryExpr{
Expr: yyDollar[1].node.(Expr),
Range: rangeNl,
RangeExpr: rangeExpr,
Step: stepNl,
StepExpr: stepExpr,
EndPos: yyDollar[6].item.Pos + 1,
}
}
case 97:
yyDollar = yyS[yypt-5 : yypt+1]
{
var rangeNl time.Duration
if numLit, ok := yyDollar[3].node.(*NumberLiteral); ok {
rangeNl = time.Duration(math.Round(numLit.Val * float64(time.Second)))
}
rangeExpr, _ := yyDollar[3].node.(*DurationExpr)
yyVAL.node = &SubqueryExpr{
Expr: yyDollar[1].node.(Expr),
Range: rangeNl,
RangeExpr: rangeExpr,
EndPos: yyDollar[5].item.Pos + 1,
}
}
case 98:
yyDollar = yyS[yypt-6 : yypt+1]
{
yylex.(*parser).unexpected("subquery selector", "\"]\"")
yyVAL.node = yyDollar[1].node
}
case 99:
yyDollar = yyS[yypt-5 : yypt+1]
{
yylex.(*parser).unexpected("subquery selector", "number, duration, step(), range(), or \"]\"")
yyVAL.node = yyDollar[1].node
}
case 100:
yyDollar = yyS[yypt-4 : yypt+1]
{
yylex.(*parser).unexpected("subquery or range", "\":\" or \"]\"")
yyVAL.node = yyDollar[1].node
}
case 101:
yyDollar = yyS[yypt-3 : yypt+1]
{
yylex.(*parser).unexpected("subquery or range selector", "number, duration, step(), or range()")
yyVAL.node = yyDollar[1].node
}
case 102:
yyDollar = yyS[yypt-2 : yypt+1]
{
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 103:
yyDollar = yyS[yypt-2 : yypt+1]
{
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 104:
yyDollar = yyS[yypt-1 : yypt+1]
{
vs := &VectorSelector{
Name: yyDollar[1].item.Val,
LabelMatchers: []*labels.Matcher{},
PosRange: yyDollar[1].item.PositionRange(),
}
yylex.(*parser).assembleVectorSelector(vs)
yyVAL.node = vs
}
case 105:
yyDollar = yyS[yypt-1 : yypt+1]
{
vs := yyDollar[1].node.(*VectorSelector)
yylex.(*parser).assembleVectorSelector(vs)
yyVAL.node = vs
}
case 106:
yyDollar = yyS[yypt-3 : yypt+1]
{
yyVAL.node = &VectorSelector{
LabelMatchers: yyDollar[2].matchers,
PosRange: mergeRanges(&yyDollar[1].item, &yyDollar[3].item),
}
}
case 107:
yyDollar = yyS[yypt-4 : yypt+1]
{
yyVAL.node = &VectorSelector{
LabelMatchers: yyDollar[2].matchers,
PosRange: mergeRanges(&yyDollar[1].item, &yyDollar[4].item),
}
}
case 108:
yyDollar = yyS[yypt-2 : yypt+1]
{
yyVAL.node = &VectorSelector{
LabelMatchers: []*labels.Matcher{},
PosRange: mergeRanges(&yyDollar[1].item, &yyDollar[2].item),
}
}
case 109:
yyDollar = yyS[yypt-3 : yypt+1]
{
if yyDollar[1].matchers != nil {
yyVAL.matchers = append(yyDollar[1].matchers, yyDollar[3].matcher)
} else {
yyVAL.matchers = yyDollar[1].matchers
}
}
case 110:
yyDollar = yyS[yypt-1 : yypt+1]
{
yyVAL.matchers = []*labels.Matcher{yyDollar[1].matcher}
}
case 111:
yyDollar = yyS[yypt-2 : yypt+1]
{
yylex.(*parser).unexpected("label matching", "\",\" or \"}\"")
yyVAL.matchers = yyDollar[1].matchers
}
case 112:
yyDollar = yyS[yypt-3 : yypt+1]
{
yyVAL.matcher = yylex.(*parser).newLabelMatcher(yyDollar[1].item, yyDollar[2].item, yyDollar[3].item)
}
case 113:
yyDollar = yyS[yypt-3 : yypt+1]
{
yyVAL.matcher = yylex.(*parser).newLabelMatcher(yyDollar[1].item, yyDollar[2].item, yyDollar[3].item)
}
case 114:
yyDollar = yyS[yypt-1 : yypt+1]
{
yyVAL.matcher = yylex.(*parser).newMetricNameMatcher(yyDollar[1].item)
}
case 115:
yyDollar = yyS[yypt-3 : yypt+1]
{
yylex.(*parser).unexpected("label matching", "string")
yyVAL.matcher = nil
}
case 116:
yyDollar = yyS[yypt-3 : yypt+1]
{
yylex.(*parser).unexpected("label matching", "string")
yyVAL.matcher = nil
}
case 117:
yyDollar = yyS[yypt-2 : yypt+1]
{
yylex.(*parser).unexpected("label matching", "label matching operator")
yyVAL.matcher = nil
}
case 118:
yyDollar = yyS[yypt-1 : yypt+1]
{
yylex.(*parser).unexpected("label matching", "identifier or \"}\"")
yyVAL.matcher = nil
}
case 119:
yyDollar = yyS[yypt-2 : yypt+1]
{
b := labels.NewBuilder(yyDollar[2].labels)
b.Set(labels.MetricName, yyDollar[1].item.Val)
yyVAL.labels = b.Labels()
}
case 120:
yyDollar = yyS[yypt-1 : yypt+1]
{
yyVAL.labels = yyDollar[1].labels
}
case 154:
yyDollar = yyS[yypt-3 : yypt+1]
{
yyVAL.labels = labels.New(yyDollar[2].lblList...)
}
case 155:
yyDollar = yyS[yypt-4 : yypt+1]
{
yyVAL.labels = labels.New(yyDollar[2].lblList...)
}
case 156:
yyDollar = yyS[yypt-2 : yypt+1]
{
yyVAL.labels = labels.New()
}
case 157:
yyDollar = yyS[yypt-0 : yypt+1]
{
yyVAL.labels = labels.New()
}
case 158:
yyDollar = yyS[yypt-3 : yypt+1]
{
yyVAL.lblList = append(yyDollar[1].lblList, yyDollar[3].label)
}
case 159:
yyDollar = yyS[yypt-1 : yypt+1]
{
yyVAL.lblList = []labels.Label{yyDollar[1].label}
}
case 160:
yyDollar = yyS[yypt-2 : yypt+1]
{
yylex.(*parser).unexpected("label set", "\",\" or \"}\"")
yyVAL.lblList = yyDollar[1].lblList
}
case 161:
yyDollar = yyS[yypt-3 : yypt+1]
{
yyVAL.label = labels.Label{Name: yyDollar[1].item.Val, Value: yylex.(*parser).unquoteString(yyDollar[3].item.Val)}
}
case 162:
yyDollar = yyS[yypt-3 : yypt+1]
{
yyVAL.label = labels.Label{Name: yyDollar[1].item.Val, Value: yylex.(*parser).unquoteString(yyDollar[3].item.Val)}
}
case 163:
yyDollar = yyS[yypt-1 : yypt+1]
{
yyVAL.label = labels.Label{Name: labels.MetricName, Value: yyDollar[1].item.Val}
}
case 164:
yyDollar = yyS[yypt-3 : yypt+1]
{
yylex.(*parser).unexpected("label set", "string")
yyVAL.label = labels.Label{}
}
case 165:
yyDollar = yyS[yypt-3 : yypt+1]
{
yylex.(*parser).unexpected("label set", "string")
yyVAL.label = labels.Label{}
}
case 166:
yyDollar = yyS[yypt-2 : yypt+1]
{
yylex.(*parser).unexpected("label set", "\"=\"")
yyVAL.label = labels.Label{}
}
case 167:
yyDollar = yyS[yypt-1 : yypt+1]
{
yylex.(*parser).unexpected("label set", "identifier or \"}\"")
yyVAL.label = labels.Label{}
}
case 168:
yyDollar = yyS[yypt-2 : yypt+1]
{
yylex.(*parser).generatedParserResult = &seriesDescription{
labels: yyDollar[1].labels,
values: yyDollar[2].series,
}
}
case 169:
yyDollar = yyS[yypt-0 : yypt+1]
{
yyVAL.series = []SequenceValue{}
}
case 170:
yyDollar = yyS[yypt-3 : yypt+1]
{
yyVAL.series = append(yyDollar[1].series, yyDollar[3].series...)
}
case 171:
yyDollar = yyS[yypt-2 : yypt+1]
{
yyVAL.series = yyDollar[1].series
}
case 172:
yyDollar = yyS[yypt-1 : yypt+1]
{
yylex.(*parser).unexpected("series values", "")
yyVAL.series = nil
}
case 173:
yyDollar = yyS[yypt-1 : yypt+1]
{
yyVAL.series = []SequenceValue{{Omitted: true}}
}
case 174:
yyDollar = yyS[yypt-3 : yypt+1]
{
yyVAL.series = []SequenceValue{}
for i := uint64(0); i < yyDollar[3].uint; i++ {
yyVAL.series = append(yyVAL.series, SequenceValue{Omitted: true})
}
}
case 175:
yyDollar = yyS[yypt-1 : yypt+1]
{
yyVAL.series = []SequenceValue{{Value: yyDollar[1].float}}
}
case 176:
yyDollar = yyS[yypt-3 : yypt+1]
{
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 177:
yyDollar = yyS[yypt-4 : yypt+1]
{
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 178:
yyDollar = yyS[yypt-1 : yypt+1]
{
yyVAL.series = []SequenceValue{yylex.(*parser).newHistogramSequenceValue(yyDollar[1].histogram)}
}
case 179:
yyDollar = yyS[yypt-3 : yypt+1]
{
yyVAL.series = []SequenceValue{}
// Add an additional value for time 0, which we ignore in tests.
sv := yylex.(*parser).newHistogramSequenceValue(yyDollar[1].histogram)
for i := uint64(0); i <= yyDollar[3].uint; i++ {
yyVAL.series = append(yyVAL.series, sv)
//$1 += $2
}
}
case 180:
yyDollar = yyS[yypt-5 : yypt+1]
{
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 181:
yyDollar = yyS[yypt-5 : yypt+1]
{
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 182:
yyDollar = yyS[yypt-1 : yypt+1]
{
if yyDollar[1].item.Val != "stale" {
yylex.(*parser).unexpected("series values", "number or \"stale\"")
}
yyVAL.float = math.Float64frombits(value.StaleNaN)
}
case 185:
yyDollar = yyS[yypt-4 : yypt+1]
{
yyVAL.histogram = yylex.(*parser).buildHistogramFromMap(&yyDollar[2].descriptors)
}
case 186:
yyDollar = yyS[yypt-3 : yypt+1]
{
yyVAL.histogram = yylex.(*parser).buildHistogramFromMap(&yyDollar[2].descriptors)
}
case 187:
yyDollar = yyS[yypt-3 : yypt+1]
{
m := yylex.(*parser).newMap()
yyVAL.histogram = yylex.(*parser).buildHistogramFromMap(&m)
}
case 188:
yyDollar = yyS[yypt-2 : yypt+1]
{
m := yylex.(*parser).newMap()
yyVAL.histogram = yylex.(*parser).buildHistogramFromMap(&m)
}
case 189:
yyDollar = yyS[yypt-3 : yypt+1]
{
yyVAL.descriptors = *(yylex.(*parser).mergeMaps(&yyDollar[1].descriptors, &yyDollar[3].descriptors))
}
case 190:
yyDollar = yyS[yypt-1 : yypt+1]
{
yyVAL.descriptors = yyDollar[1].descriptors
}
case 191:
yyDollar = yyS[yypt-2 : yypt+1]
{
yylex.(*parser).unexpected("histogram description", "histogram description key, e.g. buckets:[5 10 7]")
}
case 192:
yyDollar = yyS[yypt-3 : yypt+1]
{
yyVAL.descriptors = yylex.(*parser).newMap()
yyVAL.descriptors["schema"] = yyDollar[3].int
}
case 193:
yyDollar = yyS[yypt-3 : yypt+1]
{
yyVAL.descriptors = yylex.(*parser).newMap()
yyVAL.descriptors["sum"] = yyDollar[3].float
}
case 194:
yyDollar = yyS[yypt-3 : yypt+1]
{
yyVAL.descriptors = yylex.(*parser).newMap()
yyVAL.descriptors["count"] = yyDollar[3].float
}
case 195:
yyDollar = yyS[yypt-3 : yypt+1]
{
yyVAL.descriptors = yylex.(*parser).newMap()
yyVAL.descriptors["z_bucket"] = yyDollar[3].float
}
case 196:
yyDollar = yyS[yypt-3 : yypt+1]
{
yyVAL.descriptors = yylex.(*parser).newMap()
yyVAL.descriptors["z_bucket_w"] = yyDollar[3].float
}
case 197:
yyDollar = yyS[yypt-3 : yypt+1]
{
yyVAL.descriptors = yylex.(*parser).newMap()
yyVAL.descriptors["custom_values"] = yyDollar[3].bucket_set
}
case 198:
yyDollar = yyS[yypt-3 : yypt+1]
{
yyVAL.descriptors = yylex.(*parser).newMap()
yyVAL.descriptors["buckets"] = yyDollar[3].bucket_set
}
case 199:
yyDollar = yyS[yypt-3 : yypt+1]
{
yyVAL.descriptors = yylex.(*parser).newMap()
yyVAL.descriptors["offset"] = yyDollar[3].int
}
case 200:
yyDollar = yyS[yypt-3 : yypt+1]
{
yyVAL.descriptors = yylex.(*parser).newMap()
yyVAL.descriptors["n_buckets"] = yyDollar[3].bucket_set
}
case 201:
yyDollar = yyS[yypt-3 : yypt+1]
{
yyVAL.descriptors = yylex.(*parser).newMap()
yyVAL.descriptors["n_offset"] = yyDollar[3].int
}
case 202:
yyDollar = yyS[yypt-3 : yypt+1]
{
yyVAL.descriptors = yylex.(*parser).newMap()
yyVAL.descriptors["counter_reset_hint"] = yyDollar[3].item
}
case 203:
yyDollar = yyS[yypt-4 : yypt+1]
{
yyVAL.bucket_set = yyDollar[2].bucket_set
}
case 204:
yyDollar = yyS[yypt-3 : yypt+1]
{
yyVAL.bucket_set = yyDollar[2].bucket_set
}
case 205:
yyDollar = yyS[yypt-3 : yypt+1]
{
yyVAL.bucket_set = append(yyDollar[1].bucket_set, yyDollar[3].float)
}
case 206:
yyDollar = yyS[yypt-1 : yypt+1]
{
yyVAL.bucket_set = []float64{yyDollar[1].float}
}
case 270:
yyDollar = yyS[yypt-1 : yypt+1]
{
yyVAL.node = &NumberLiteral{
Val: yylex.(*parser).number(yyDollar[1].item.Val),
PosRange: yyDollar[1].item.PositionRange(),
}
}
case 271:
yyDollar = yyS[yypt-1 : yypt+1]
{
var err error
var dur time.Duration
dur, err = parseDuration(yyDollar[1].item.Val)
if err != nil {
yylex.(*parser).addParseErr(yyDollar[1].item.PositionRange(), err)
}
yyVAL.node = &NumberLiteral{
Val: dur.Seconds(),
PosRange: yyDollar[1].item.PositionRange(),
Duration: true,
}
}
case 272:
yyDollar = yyS[yypt-1 : yypt+1]
{
yyVAL.float = yylex.(*parser).number(yyDollar[1].item.Val)
}
case 273:
yyDollar = yyS[yypt-1 : yypt+1]
{
var err error
var dur time.Duration
dur, err = parseDuration(yyDollar[1].item.Val)
if err != nil {
yylex.(*parser).addParseErr(yyDollar[1].item.PositionRange(), err)
}
yyVAL.float = dur.Seconds()
}
case 274:
yyDollar = yyS[yypt-2 : yypt+1]
{
yyVAL.float = yyDollar[2].float
}
case 275:
yyDollar = yyS[yypt-2 : yypt+1]
{
yyVAL.float = -yyDollar[2].float
}
case 278:
yyDollar = yyS[yypt-1 : yypt+1]
{
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 279:
yyDollar = yyS[yypt-2 : yypt+1]
{
yyVAL.int = -int64(yyDollar[2].uint)
}
case 280:
yyDollar = yyS[yypt-1 : yypt+1]
{
yyVAL.int = int64(yyDollar[1].uint)
}
case 281:
yyDollar = yyS[yypt-1 : yypt+1]
{
yyVAL.node = &StringLiteral{
Val: yylex.(*parser).unquoteString(yyDollar[1].item.Val),
PosRange: yyDollar[1].item.PositionRange(),
}
}
case 282:
yyDollar = yyS[yypt-1 : yypt+1]
{
yyVAL.item = Item{
Typ: METRIC_IDENTIFIER,
Pos: yyDollar[1].item.PositionRange().Start,
Val: yylex.(*parser).unquoteString(yyDollar[1].item.Val),
}
}
case 283:
yyDollar = yyS[yypt-0 : yypt+1]
{
yyVAL.strings = nil
}
case 285:
yyDollar = yyS[yypt-1 : yypt+1]
{
nl := yyDollar[1].node.(*NumberLiteral)
if durationLiteralOutOfRange(nl.Val) {
yylex.(*parser).addParseErrf(nl.PosRange, "duration out of range")
yyVAL.node = &NumberLiteral{Val: 0}
break
}
yyVAL.node = nl
}
case 286:
yyDollar = yyS[yypt-2 : yypt+1]
{
nl := yyDollar[2].node.(*NumberLiteral)
if yyDollar[1].item.Typ == SUB {
nl.Val *= -1
}
if durationLiteralOutOfRange(nl.Val) {
yylex.(*parser).addParseErrf(yyDollar[1].item.PositionRange(), "duration out of range")
yyVAL.node = &NumberLiteral{Val: 0}
break
}
nl.PosRange.Start = yyDollar[1].item.Pos
yyVAL.node = nl
}
case 287:
yyDollar = yyS[yypt-3 : yypt+1]
{
de := &DurationExpr{
Op: STEP,
StartPos: yyDollar[1].item.PositionRange().Start,
EndPos: yyDollar[3].item.PositionRange().End,
}
yylex.(*parser).experimentalDurationExpr(de)
yyVAL.node = de
}
case 288:
yyDollar = yyS[yypt-3 : yypt+1]
{
de := &DurationExpr{
Op: RANGE,
StartPos: yyDollar[1].item.PositionRange().Start,
EndPos: yyDollar[3].item.PositionRange().End,
}
yylex.(*parser).experimentalDurationExpr(de)
yyVAL.node = de
}
case 289:
yyDollar = yyS[yypt-4 : yypt+1]
{
de := &DurationExpr{
Op: yyDollar[1].item.Typ,
RHS: &DurationExpr{
Op: STEP,
StartPos: yyDollar[2].item.PositionRange().Start,
EndPos: yyDollar[4].item.PositionRange().End,
},
StartPos: yyDollar[1].item.Pos,
}
yylex.(*parser).experimentalDurationExpr(de)
yyVAL.node = de
}
case 290:
yyDollar = yyS[yypt-4 : yypt+1]
{
de := &DurationExpr{
Op: yyDollar[1].item.Typ,
RHS: &DurationExpr{
Op: RANGE,
StartPos: yyDollar[2].item.PositionRange().Start,
EndPos: yyDollar[4].item.PositionRange().End,
},
StartPos: yyDollar[1].item.Pos,
}
yylex.(*parser).experimentalDurationExpr(de)
yyVAL.node = de
}
case 291:
yyDollar = yyS[yypt-6 : yypt+1]
{
de := &DurationExpr{
Op: yyDollar[1].item.Typ,
StartPos: yyDollar[1].item.PositionRange().Start,
EndPos: yyDollar[6].item.PositionRange().End,
LHS: yyDollar[3].node.(Expr),
RHS: yyDollar[5].node.(Expr),
}
yylex.(*parser).experimentalDurationExpr(de)
yyVAL.node = de
}
case 292:
yyDollar = yyS[yypt-7 : yypt+1]
{
de := &DurationExpr{
Op: yyDollar[1].item.Typ,
StartPos: yyDollar[1].item.Pos,
EndPos: yyDollar[6].node.PositionRange().End,
RHS: &DurationExpr{
Op: yyDollar[2].item.Typ,
StartPos: yyDollar[2].item.PositionRange().Start,
EndPos: yyDollar[6].node.PositionRange().End,
LHS: yyDollar[4].node.(Expr),
RHS: yyDollar[6].node.(Expr),
},
}
yylex.(*parser).experimentalDurationExpr(de)
yyVAL.node = de
}
case 293:
yyDollar = yyS[yypt-4 : yypt+1]
{
yyVAL.node = yylex.(*parser).applyUnaryOpToDurationExpr(yyDollar[1].item, yyDollar[3].node.(Node), true)
}
case 297:
yyDollar = yyS[yypt-1 : yypt+1]
{
nl := yyDollar[1].node.(*NumberLiteral)
if durationLiteralOutOfRange(nl.Val) {
yylex.(*parser).addParseErrf(nl.PosRange, "duration out of range")
yyVAL.node = &NumberLiteral{Val: 0}
break
}
yyVAL.node = nl
}
case 298:
yyDollar = yyS[yypt-2 : yypt+1]
{
yyVAL.node = yylex.(*parser).applyUnaryOpToDurationExpr(yyDollar[1].item, yyDollar[2].node.(Node), false)
}
case 299:
yyDollar = yyS[yypt-3 : yypt+1]
{
yylex.(*parser).experimentalDurationExpr(yyDollar[1].node.(Expr))
yyVAL.node = &DurationExpr{Op: ADD, LHS: yyDollar[1].node.(Expr), RHS: yyDollar[3].node.(Expr)}
}
case 300:
yyDollar = yyS[yypt-3 : yypt+1]
{
yylex.(*parser).experimentalDurationExpr(yyDollar[1].node.(Expr))
yyVAL.node = &DurationExpr{Op: SUB, LHS: yyDollar[1].node.(Expr), RHS: yyDollar[3].node.(Expr)}
}
case 301:
yyDollar = yyS[yypt-3 : yypt+1]
{
yylex.(*parser).experimentalDurationExpr(yyDollar[1].node.(Expr))
yyVAL.node = &DurationExpr{Op: MUL, LHS: yyDollar[1].node.(Expr), RHS: yyDollar[3].node.(Expr)}
}
case 302:
yyDollar = yyS[yypt-3 : yypt+1]
{
yylex.(*parser).experimentalDurationExpr(yyDollar[1].node.(Expr))
if nl, ok := yyDollar[3].node.(*NumberLiteral); ok && nl.Val == 0 {
yylex.(*parser).addParseErrf(yyDollar[2].item.PositionRange(), "division by zero")
yyVAL.node = &NumberLiteral{Val: 0}
break
}
yyVAL.node = &DurationExpr{Op: DIV, LHS: yyDollar[1].node.(Expr), RHS: yyDollar[3].node.(Expr)}
}
case 303:
yyDollar = yyS[yypt-3 : yypt+1]
{
yylex.(*parser).experimentalDurationExpr(yyDollar[1].node.(Expr))
if nl, ok := yyDollar[3].node.(*NumberLiteral); ok && nl.Val == 0 {
yylex.(*parser).addParseErrf(yyDollar[2].item.PositionRange(), "modulo by zero")
yyVAL.node = &NumberLiteral{Val: 0}
break
}
yyVAL.node = &DurationExpr{Op: MOD, LHS: yyDollar[1].node.(Expr), RHS: yyDollar[3].node.(Expr)}
}
case 304:
yyDollar = yyS[yypt-3 : yypt+1]
{
yylex.(*parser).experimentalDurationExpr(yyDollar[1].node.(Expr))
yyVAL.node = &DurationExpr{Op: POW, LHS: yyDollar[1].node.(Expr), RHS: yyDollar[3].node.(Expr)}
}
case 305:
yyDollar = yyS[yypt-3 : yypt+1]
{
de := &DurationExpr{
Op: STEP,
StartPos: yyDollar[1].item.PositionRange().Start,
EndPos: yyDollar[3].item.PositionRange().End,
}
yylex.(*parser).experimentalDurationExpr(de)
yyVAL.node = de
}
case 306:
yyDollar = yyS[yypt-3 : yypt+1]
{
de := &DurationExpr{
Op: RANGE,
StartPos: yyDollar[1].item.PositionRange().Start,
EndPos: yyDollar[3].item.PositionRange().End,
}
yylex.(*parser).experimentalDurationExpr(de)
yyVAL.node = de
}
case 307:
yyDollar = yyS[yypt-6 : yypt+1]
{
de := &DurationExpr{
Op: yyDollar[1].item.Typ,
StartPos: yyDollar[1].item.PositionRange().Start,
EndPos: yyDollar[6].item.PositionRange().End,
LHS: yyDollar[3].node.(Expr),
RHS: yyDollar[5].node.(Expr),
}
yylex.(*parser).experimentalDurationExpr(de)
yyVAL.node = de
}
case 309:
yyDollar = yyS[yypt-3 : yypt+1]
{
yylex.(*parser).experimentalDurationExpr(yyDollar[2].node.(Expr))
if durationExpr, ok := yyDollar[2].node.(*DurationExpr); ok {
durationExpr.Wrapped = true
yyVAL.node = durationExpr
break
}
yyVAL.node = yyDollar[2].node
}
}
goto yystack /* stack new state and value */
}