@ -8,9 +8,10 @@ import __yyfmt__ "fmt"
clientmodel "github.com/prometheus/client_golang/model"
"github.com/prometheus/prometheus/rules/ast"
"github.com/prometheus/prometheus/storage/metric"
)
//line parser.y:24
//line parser.y:25
type yySymType struct {
yys int
num clientmodel . SampleValue
@ -20,6 +21,8 @@ type yySymType struct {
boolean bool
labelNameSlice clientmodel . LabelNames
labelSet clientmodel . LabelSet
labelMatcher * metric . LabelMatcher
labelMatchers metric . LabelMatchers
}
const START_RULES = 57346
@ -72,7 +75,7 @@ const yyEofCode = 1
const yyErrCode = 2
const yyMaxDepth = 200
//line parser.y:20 4
//line parser.y:242
//line yacctab:1
@ -85,79 +88,87 @@ var yyExca = []int{
- 2 , 10 ,
}
const yyNprod = 40
const yyNprod = 48
const yyPrivate = 57344
var yyTokenNames [ ] string
var yyStates [ ] string
const yyLast = 108
const yyLast = 121
var yyAct = [ ] int {
22 , 40 , 41 , 36 , 19 , 46 , 6 , 17 , 9 , 42 ,
21 , 12 , 11 , 72 , 23 , 71 , 10 , 17 , 20 , 18 ,
19 , 30 , 31 , 32 , 20 , 18 , 19 , 44 , 43 , 62 ,
7 , 39 , 52 , 17 , 65 , 20 , 18 , 19 , 25 , 17 ,
20 , 18 , 19 , 9 , 42 , 24 , 12 , 11 , 54 , 33 ,
17 , 10 , 55 , 57 , 9 , 17 , 60 , 12 , 11 , 18 ,
19 , 51 , 10 , 50 , 37 , 7 , 73 , 70 , 47 , 48 ,
53 , 49 , 76 , 17 , 66 , 45 , 7 , 8 , 16 , 64 ,
59 , 67 , 29 , 27 , 35 , 15 , 12 , 77 , 75 , 56 ,
74 , 69 , 26 , 37 , 28 , 2 , 3 , 13 , 5 , 4 ,
1 , 61 , 63 , 14 , 34 , 58 , 68 , 38 ,
44 , 59 , 41 , 40 , 36 , 47 , 6 , 17 , 9 , 42 ,
21 , 12 , 11 , 18 , 19 , 84 , 10 , 83 , 20 , 18 ,
19 , 30 , 31 , 32 , 20 , 18 , 19 , 17 , 43 , 72 ,
7 , 39 , 55 , 17 , 75 , 25 , 20 , 18 , 19 , 17 ,
20 , 18 , 19 , 24 , 9 , 42 , 70 , 12 , 11 , 61 ,
33 , 17 , 10 , 9 , 62 , 17 , 12 , 11 , 64 , 67 ,
19 , 10 , 54 , 60 , 53 , 37 , 7 , 68 , 69 , 45 ,
23 , 76 , 56 , 17 , 88 , 7 , 48 , 49 , 52 , 82 ,
85 , 78 , 16 , 58 , 46 , 34 , 8 , 51 , 74 , 15 ,
66 , 27 , 79 , 89 , 12 , 29 , 87 , 77 , 63 , 86 ,
81 , 26 , 60 , 37 , 28 , 2 , 3 , 13 , 5 , 4 ,
1 , 50 , 71 , 73 , 14 , 22 , 35 , 57 , 65 , 80 ,
38 ,
}
var yyPact = [ ] int {
91 , - 1000 , - 1000 , 48 , 67 , - 1000 , 25 , 48 , - 11 , 17 ,
10 , - 1000 , - 1000 , - 1000 , 77 , 88 , - 1000 , 74 , 48 , 48 ,
48 , 20 , - 1000 , 58 , 2 , 48 , - 11 , - 1000 , 56 , - 26 ,
- 13 , - 23 , 43 , - 1000 , 42 , - 1000 , - 1000 , 47 , 34 , - 1000 ,
- 1000 , 25 , - 1000 , 3 , 46 , 48 , - 1000 , - 1000 , 87 , 82 ,
- 1000 , 37 , 68 , 48 , 9 , - 1000 , - 1000 , - 1000 , 66 , 6 ,
25 , 53 , 73 , - 1000 , - 1000 , 85 , - 11 , - 1000 , - 14 , - 1000 ,
44 , - 1000 , 84 , 81 , - 1000 , 49 , 80 , - 1000 ,
101 , - 1000 , - 1000 , 47 , 71 , - 1000 , 25 , 47 , 45 , 15 ,
7 , - 1000 , - 1000 , - 1000 , 85 , 98 , - 1000 , 87 , 47 , 47 ,
47 , 21 , - 1000 , 59 , 2 , 47 , 44 , - 1000 , 65 , - 26 ,
43 , - 23 , - 3 , - 1000 , - 1000 , 50 , - 1000 , 63 , 35 , - 1000 ,
- 1000 , 25 , - 1000 , 3 , 48 , 57 , 47 , - 1000 , - 1000 , 97 ,
91 , - 1000 , - 1000 , - 1000 , 38 , 78 , 47 , 41 , - 1000 , - 1000 ,
22 , 9 , - 1000 , - 1000 , - 1000 , 75 , 6 , 25 , - 1000 , 96 ,
90 , 60 , 84 , - 1000 , - 1000 , 94 , - 1000 , - 1000 , 44 , - 1000 ,
- 12 , - 1000 , 58 , - 1000 , 93 , 89 , - 1000 , 51 , 86 , - 1000 ,
}
var yyPgo = [ ] int {
0 , 107 , 106 , 105 , 3 , 104 , 0 , 2 , 1 , 103 ,
102 , 101 , 77 , 100 , 99 , 98 , 97 ,
0 , 120 , 119 , 118 , 1 , 117 , 0 , 4 , 116 , 115 ,
2 , 3 , 114 , 113 , 112 , 86 , 111 , 110 , 109 , 108 ,
107 ,
}
var yyR1 = [ ] int {
0 , 13 , 13 , 14 , 14 , 15 , 16 , 16 , 11 , 11 ,
9 , 9 , 12 , 12 , 6 , 6 , 6 , 5 , 5 , 4 ,
7 , 7 , 7 , 7 , 7 , 7 , 7 , 7 , 7 , 7 ,
10 , 10 , 3 , 3 , 2 , 2 , 1 , 1 , 8 , 8 ,
0 , 17 , 17 , 18 , 18 , 19 , 20 , 20 , 14 , 14 ,
12 , 12 , 15 , 15 , 6 , 6 , 6 , 5 , 5 , 4 ,
9 , 9 , 9 , 8 , 8 , 7 , 16 , 16 , 10 , 10 ,
10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 13 , 13 ,
3 , 3 , 2 , 2 , 1 , 1 , 11 , 11 ,
}
var yyR2 = [ ] int {
0 , 2 , 2 , 0 , 2 , 1 , 5 , 11 , 0 , 2 ,
0 , 1 , 1 , 1 , 0 , 3 , 2 , 1 , 3 , 3 ,
3 , 2 , 4 , 3 , 4 , 6 , 3 , 3 , 3 , 1 ,
0 , 1 , 0 , 4 , 1 , 3 , 1 , 3 , 1 , 1 ,
0 , 2 , 3 , 1 , 3 , 3 , 1 , 1 , 3 , 2 ,
4 , 3 , 4 , 6 , 3 , 3 , 3 , 1 , 0 , 1 ,
0 , 4 , 1 , 3 , 1 , 3 , 1 , 1 ,
}
var yyChk = [ ] int {
- 1000 , - 13 , 4 , 5 , - 14 , - 15 , - 7 , 28 , - 12 , 6 ,
14 , 10 , 9 , - 16 , - 9 , 18 , 11 , 30 , 16 , 17 ,
15 , - 7 , - 6 , 25 , 28 , 28 , - 12 , 6 , 6 , 8 ,
- 7 , - 7 , - 7 , 29 , - 5 , 26 , - 4 , 6 , - 1 , 29 ,
- 8 , - 7 , 7 , - 7 , - 6 , 19 , 31 , 26 , 27 , 24 ,
29 , 27 , 29 , 24 , - 7 , - 4 , 7 , - 8 , - 3 , 12 ,
- 7 , - 11 , 20 , - 10 , 13 , 28 , 21 , 8 , - 2 , 6 ,
- 6 , 29 , 27 , 22 , 6 , 7 , 23 , 7 ,
- 1000 , - 17 , 4 , 5 , - 18 , - 19 , - 10 , 28 , - 15 , 6 ,
14 , 10 , 9 , - 20 , - 12 , 18 , 11 , 30 , 16 , 17 ,
15 , - 10 , - 9 , 25 , 28 , 28 , - 15 , 6 , 6 , 8 ,
- 10 , - 10 , - 10 , 29 , 26 , - 8 , - 7 , 6 , - 1 , 29 ,
- 11 , - 10 , 7 , - 10 , - 6 , 25 , 19 , 31 , 26 , 27 ,
- 16 , 24 , 15 , 29 , 27 , 29 , 24 , - 5 , 26 , - 4 ,
6 , - 10 , - 7 , 7 , - 11 , - 3 , 12 , - 10 , 26 , 27 ,
24 , - 14 , 20 , - 13 , 13 , 28 , - 4 , 7 , 21 , 8 ,
- 2 , 6 , - 6 , 29 , 27 , 22 , 6 , 7 , 23 , 7 ,
}
var yyDef = [ ] int {
0 , - 2 , 3 , 0 , - 2 , 2 , 5 , 0 , 14 , 13 ,
0 , 29 , 12 , 4 , 0 , 0 , 11 , 0 , 0 , 0 ,
0 , 0 , 21 , 0 , 0 , 0 , 14 , 13 , 0 , 0 ,
26 , 27 , 28 , 20 , 0 , 16 , 17 , 0 , 0 , 23 ,
36 , 38 , 39 , 0 , 0 , 0 , 24 , 15 , 0 , 0 ,
22 , 0 , 32 , 0 , 8 , 18 , 19 , 37 , 30 , 0 ,
6 , 0 , 0 , 25 , 31 , 0 , 14 , 9 , 0 , 34 ,
0 , 33 , 0 , 0 , 35 , 0 , 0 , 7 ,
0 , - 2 , 3 , 0 , - 2 , 2 , 5 , 0 , 20 , 13 ,
0 , 37 , 12 , 4 , 0 , 0 , 11 , 0 , 0 , 0 ,
0 , 0 , 29 , 0 , 0 , 0 , 14 , 13 , 0 , 0 ,
34 , 35 , 36 , 28 , 21 , 0 , 23 , 0 , 0 , 31 ,
44 , 46 , 47 , 0 , 0 , 0 , 0 , 32 , 22 , 0 ,
0 , 26 , 27 , 30 , 0 , 40 , 0 , 0 , 16 , 17 ,
0 , 8 , 24 , 25 , 45 , 38 , 0 , 6 , 15 , 0 ,
0 , 0 , 0 , 33 , 39 , 0 , 18 , 19 , 14 , 9 ,
0 , 42 , 0 , 41 , 0 , 0 , 43 , 0 , 0 , 7 ,
}
var yyTok1 = [ ] int {
@ -411,145 +422,179 @@ yydefault:
switch yynt {
case 5 :
//line parser.y:69
//line parser.y:74
{ yylex . ( * RulesLexer ) . parsedExpr = yyS [ yypt - 0 ] . ruleNode }
case 6 :
//line parser.y:74
//line parser.y:79
{
rule , err := CreateRecordingRule ( yyS [ yypt - 3 ] . str , yyS [ yypt - 2 ] . labelSet , yyS [ yypt - 0 ] . ruleNode , yyS [ yypt - 4 ] . boolean )
if err != nil { yylex . Error ( err . Error ( ) ) ; return 1 }
yylex . ( * RulesLexer ) . parsedRules = append ( yylex . ( * RulesLexer ) . parsedRules , rule )
}
case 7 :
//line parser.y:80
//line parser.y:85
{
rule , err := CreateAlertingRule ( yyS [ yypt - 9 ] . str , yyS [ yypt - 7 ] . ruleNode , yyS [ yypt - 6 ] . str , yyS [ yypt - 4 ] . labelSet , yyS [ yypt - 2 ] . str , yyS [ yypt - 0 ] . str )
if err != nil { yylex . Error ( err . Error ( ) ) ; return 1 }
yylex . ( * RulesLexer ) . parsedRules = append ( yylex . ( * RulesLexer ) . parsedRules , rule )
}
case 8 :
//line parser.y:88
//line parser.y:93
{ yyVAL . str = "0s" }
case 9 :
//line parser.y:90
//line parser.y:95
{ yyVAL . str = yyS [ yypt - 0 ] . str }
case 10 :
//line parser.y:94
//line parser.y:99
{ yyVAL . boolean = false }
case 11 :
//line parser.y:96
//line parser.y:101
{ yyVAL . boolean = true }
case 12 :
//line parser.y:100
//line parser.y:105
{ yyVAL . str = yyS [ yypt - 0 ] . str }
case 13 :
//line parser.y:102
//line parser.y:107
{ yyVAL . str = yyS [ yypt - 0 ] . str }
case 14 :
//line parser.y:106
//line parser.y:111
{ yyVAL . labelSet = clientmodel . LabelSet { } }
case 15 :
//line parser.y:108
//line parser.y:113
{ yyVAL . labelSet = yyS [ yypt - 1 ] . labelSet }
case 16 :
//line parser.y:110
//line parser.y:115
{ yyVAL . labelSet = clientmodel . LabelSet { } }
case 17 :
//line parser.y:113
//line parser.y:118
{ yyVAL . labelSet = yyS [ yypt - 0 ] . labelSet }
case 18 :
//line parser.y:115
//line parser.y:120
{ for k , v := range yyS [ yypt - 0 ] . labelSet { yyVAL . labelSet [ k ] = v } }
case 19 :
//line parser.y:119
//line parser.y:124
{ yyVAL . labelSet = clientmodel . LabelSet { clientmodel . LabelName ( yyS [ yypt - 2 ] . str ) : clientmodel . LabelValue ( yyS [ yypt - 0 ] . str ) } }
case 20 :
//line parser.y:124
{ yyVAL . ruleNode = yyS [ yypt - 1 ] . ruleNode }
//line parser.y:128
{ yyVAL . labelMatchers = metric . LabelMatchers { } }
case 21 :
//line parser.y:126
{ yyS [ yypt - 0 ] . labelSet [ clientmodel . MetricNameLabel ] = clientmodel . LabelValue ( yyS [ yypt - 1 ] . str ) ; yyVAL . ruleNode = ast . NewVectorSelector ( yyS [ yypt - 0 ] . labelSet ) }
//line parser.y:130
{ yyVAL . labelMatchers = metric . LabelMatchers { } }
case 22 :
//line parser.y:128
//line parser.y:132
{ yyVAL . labelMatchers = yyS [ yypt - 1 ] . labelMatchers }
case 23 :
//line parser.y:136
{ yyVAL . labelMatchers = metric . LabelMatchers { yyS [ yypt - 0 ] . labelMatcher } }
case 24 :
//line parser.y:138
{ yyVAL . labelMatchers = append ( yyVAL . labelMatchers , yyS [ yypt - 0 ] . labelMatcher ) }
case 25 :
//line parser.y:142
{
var err error
yyVAL . labelMatcher , err = newLabelMatcher ( yyS [ yypt - 1 ] . str , clientmodel . LabelName ( yyS [ yypt - 2 ] . str ) , clientmodel . LabelValue ( yyS [ yypt - 0 ] . str ) )
if err != nil { yylex . Error ( err . Error ( ) ) ; return 1 }
}
case 26 :
//line parser.y:150
{ yyVAL . str = "=" }
case 27 :
//line parser.y:152
{ yyVAL . str = yyS [ yypt - 0 ] . str }
case 28 :
//line parser.y:156
{ yyVAL . ruleNode = yyS [ yypt - 1 ] . ruleNode }
case 29 :
//line parser.y:158
{
var err error
m , err := metric . NewLabelMatcher ( metric . Equal , clientmodel . MetricNameLabel , clientmodel . LabelValue ( yyS [ yypt - 1 ] . str ) )
if err != nil { yylex . Error ( err . Error ( ) ) ; return 1 }
yyS [ yypt - 0 ] . labelMatchers = append ( yyS [ yypt - 0 ] . labelMatchers , m )
yyVAL . ruleNode = ast . NewVectorSelector ( yyS [ yypt - 0 ] . labelMatchers )
}
case 30 :
//line parser.y:166
{
var err error
yyVAL . ruleNode , err = NewFunctionCall ( yyS [ yypt - 3 ] . str , yyS [ yypt - 1 ] . ruleNodeSlice )
if err != nil { yylex . Error ( err . Error ( ) ) ; return 1 }
}
case 23 :
//line parser.y:134
case 31 :
//line parser.y:172
{
var err error
yyVAL . ruleNode , err = NewFunctionCall ( yyS [ yypt - 2 ] . str , [ ] ast . Node { } )
if err != nil { yylex . Error ( err . Error ( ) ) ; return 1 }
}
case 24 :
//line parser.y:140
case 3 2:
//line parser.y:178
{
var err error
yyVAL . ruleNode , err = NewMatrixSelector ( yyS [ yypt - 3 ] . ruleNode , yyS [ yypt - 1 ] . str )
if err != nil { yylex . Error ( err . Error ( ) ) ; return 1 }
}
case 25 :
//line parser.y:146
case 33 :
//line parser.y:18 4
{
var err error
yyVAL . ruleNode , err = NewVectorAggregation ( yyS [ yypt - 5 ] . str , yyS [ yypt - 3 ] . ruleNode , yyS [ yypt - 1 ] . labelNameSlice , yyS [ yypt - 0 ] . boolean )
if err != nil { yylex . Error ( err . Error ( ) ) ; return 1 }
}
case 26 :
//line parser.y:154
case 34 :
//line parser.y:192
{
var err error
yyVAL . ruleNode , err = NewArithExpr ( yyS [ yypt - 1 ] . str , yyS [ yypt - 2 ] . ruleNode , yyS [ yypt - 0 ] . ruleNode )
if err != nil { yylex . Error ( err . Error ( ) ) ; return 1 }
}
case 27 :
//line parser.y:160
case 35 :
//line parser.y:198
{
var err error
yyVAL . ruleNode , err = NewArithExpr ( yyS [ yypt - 1 ] . str , yyS [ yypt - 2 ] . ruleNode , yyS [ yypt - 0 ] . ruleNode )
if err != nil { yylex . Error ( err . Error ( ) ) ; return 1 }
}
case 28 :
//line parser.y:166
case 36 :
//line parser.y:204
{
var err error
yyVAL . ruleNode , err = NewArithExpr ( yyS [ yypt - 1 ] . str , yyS [ yypt - 2 ] . ruleNode , yyS [ yypt - 0 ] . ruleNode )
if err != nil { yylex . Error ( err . Error ( ) ) ; return 1 }
}
case 29 :
//line parser.y:17 2
case 37 :
//line parser.y:210
{ yyVAL . ruleNode = ast . NewScalarLiteral ( yyS [ yypt - 0 ] . num ) }
case 30 :
//line parser.y:176
case 38 :
//line parser.y:214
{ yyVAL . boolean = false }
case 31 :
//line parser.y:178
case 39 :
//line parser.y:216
{ yyVAL . boolean = true }
case 32 :
//line parser.y:18 2
case 40 :
//line parser.y:220
{ yyVAL . labelNameSlice = clientmodel . LabelNames { } }
case 33 :
//line parser.y:184
case 41 :
//line parser.y:222
{ yyVAL . labelNameSlice = yyS [ yypt - 1 ] . labelNameSlice }
case 3 4:
//line parser.y:188
case 42 :
//line parser.y:226
{ yyVAL . labelNameSlice = clientmodel . LabelNames { clientmodel . LabelName ( yyS [ yypt - 0 ] . str ) } }
case 35 :
//line parser.y:190
case 4 3:
//line parser.y:228
{ yyVAL . labelNameSlice = append ( yyVAL . labelNameSlice , clientmodel . LabelName ( yyS [ yypt - 0 ] . str ) ) }
case 36 :
//line parser.y:194
case 44 :
//line parser.y:232
{ yyVAL . ruleNodeSlice = [ ] ast . Node { yyS [ yypt - 0 ] . ruleNode } }
case 37 :
//line parser.y:196
case 45 :
//line parser.y:234
{ yyVAL . ruleNodeSlice = append ( yyVAL . ruleNodeSlice , yyS [ yypt - 0 ] . ruleNode ) }
case 38 :
//line parser.y:200
case 46 :
//line parser.y:238
{ yyVAL . ruleNode = yyS [ yypt - 0 ] . ruleNode }
case 39 :
//line parser.y:202
case 47 :
//line parser.y:24 0
{ yyVAL . ruleNode = ast . NewStringLiteral ( yyS [ yypt - 0 ] . str ) }
}
goto yystack /* stack new state and value */