mirror of
https://github.com/prometheus/prometheus.git
synced 2025-11-01 08:51:00 +01:00
This also removes the now obsolete scalar count() function and corrects the
expressions test naming (broken in
2202cd71c9 (L6R59))
so that the expression tests will actually run.
580 lines
13 KiB
Go
580 lines
13 KiB
Go
// Generated by golex
|
|
package rules
|
|
|
|
|
|
import (
|
|
"bufio"
|
|
"io"
|
|
"os"
|
|
"regexp"
|
|
"sort"
|
|
)
|
|
import (
|
|
"github.com/prometheus/prometheus/model"
|
|
"strconv"
|
|
"strings"
|
|
)
|
|
|
|
var yyin io.Reader = os.Stdin
|
|
var yyout io.Writer = os.Stdout
|
|
|
|
type yyrule struct {
|
|
regexp *regexp.Regexp
|
|
trailing *regexp.Regexp
|
|
startConds []yystartcondition
|
|
sol bool
|
|
action func() yyactionreturn
|
|
}
|
|
|
|
type yyactionreturn struct {
|
|
userReturn int
|
|
returnType yyactionreturntype
|
|
}
|
|
|
|
type yyactionreturntype int
|
|
const (
|
|
yyRT_FALLTHROUGH yyactionreturntype = iota
|
|
yyRT_USER_RETURN
|
|
yyRT_REJECT
|
|
)
|
|
|
|
var yydata string = ""
|
|
var yyorig string
|
|
var yyorigidx int
|
|
|
|
var yytext string = ""
|
|
var yytextrepl bool = true
|
|
func yymore() {
|
|
yytextrepl = false
|
|
}
|
|
|
|
func yyBEGIN(state yystartcondition) {
|
|
YY_START = state
|
|
}
|
|
|
|
func yyECHO() {
|
|
yyout.Write([]byte(yytext))
|
|
}
|
|
|
|
func yyREJECT() {
|
|
panic("yyREJECT")
|
|
}
|
|
|
|
var yylessed int
|
|
func yyless(n int) {
|
|
yylessed = len(yytext) - n
|
|
}
|
|
|
|
func unput(c uint8) {
|
|
yyorig = yyorig[:yyorigidx] + string(c) + yyorig[yyorigidx:]
|
|
yydata = yydata[:len(yytext)-yylessed] + string(c) + yydata[len(yytext)-yylessed:]
|
|
}
|
|
|
|
func input() int {
|
|
if len(yyorig) <= yyorigidx {
|
|
return EOF
|
|
}
|
|
c := yyorig[yyorigidx]
|
|
yyorig = yyorig[:yyorigidx] + yyorig[yyorigidx+1:]
|
|
yydata = yydata[:len(yytext)-yylessed] + yydata[len(yytext)-yylessed+1:]
|
|
return int(c)
|
|
}
|
|
|
|
var EOF int = -1
|
|
type yystartcondition int
|
|
|
|
var INITIAL yystartcondition = 0
|
|
var YY_START yystartcondition = INITIAL
|
|
|
|
type yylexMatch struct {
|
|
index int
|
|
matchFunc func() yyactionreturn
|
|
sortLen int
|
|
advLen int
|
|
}
|
|
|
|
type yylexMatchList []yylexMatch
|
|
|
|
func (ml yylexMatchList) Len() int {
|
|
return len(ml)
|
|
}
|
|
|
|
func (ml yylexMatchList) Less(i, j int) bool {
|
|
return ml[i].sortLen > ml[j].sortLen && ml[i].index > ml[j].index
|
|
}
|
|
|
|
func (ml yylexMatchList) Swap(i, j int) {
|
|
ml[i], ml[j] = ml[j], ml[i]
|
|
}
|
|
|
|
func yylex() int {
|
|
reader := bufio.NewReader(yyin)
|
|
|
|
for {
|
|
line, err := reader.ReadString('\n')
|
|
if len(line) == 0 && err == io.EOF {
|
|
break
|
|
}
|
|
|
|
yydata += line
|
|
}
|
|
|
|
yyorig = yydata
|
|
yyorigidx = 0
|
|
|
|
yyactioninline(yyBEGIN)
|
|
|
|
for len(yydata) > 0 {
|
|
matches := yylexMatchList(make([]yylexMatch, 0, 6))
|
|
excl := yystartconditionexclmap[YY_START]
|
|
|
|
for i, v := range yyrules {
|
|
sol := yyorigidx == 0 || yyorig[yyorigidx-1] == '\n'
|
|
|
|
if v.sol && !sol {
|
|
continue
|
|
}
|
|
|
|
// Check start conditions.
|
|
ok := false
|
|
|
|
// YY_START or '*' must feature in v.startConds
|
|
for _, c := range v.startConds {
|
|
if c == YY_START || c == -1 {
|
|
ok = true
|
|
break
|
|
}
|
|
}
|
|
|
|
if !excl {
|
|
// If v.startConds is empty, this is also acceptable.
|
|
if len(v.startConds) == 0 {
|
|
ok = true
|
|
}
|
|
}
|
|
|
|
if !ok {
|
|
continue
|
|
}
|
|
|
|
idxs := v.regexp.FindStringIndex(yydata)
|
|
if idxs != nil && idxs[0] == 0 {
|
|
// Check the trailing context, if any.
|
|
checksOk := true
|
|
sortLen := idxs[1]
|
|
advLen := idxs[1]
|
|
|
|
if v.trailing != nil {
|
|
tridxs := v.trailing.FindStringIndex(yydata[idxs[1]:])
|
|
if tridxs == nil || tridxs[0] != 0 {
|
|
checksOk = false
|
|
} else {
|
|
sortLen += tridxs[1]
|
|
}
|
|
}
|
|
|
|
if checksOk {
|
|
matches = append(matches, yylexMatch{i, v.action, sortLen, advLen})
|
|
}
|
|
}
|
|
}
|
|
|
|
if yytextrepl {
|
|
yytext = ""
|
|
}
|
|
|
|
sort.Sort(matches)
|
|
|
|
tryMatch:
|
|
if len(matches) == 0 {
|
|
yytext += yydata[:1]
|
|
yydata = yydata[1:]
|
|
yyorigidx += 1
|
|
|
|
yyout.Write([]byte(yytext))
|
|
} else {
|
|
m := matches[0]
|
|
yytext += yydata[:m.advLen]
|
|
yyorigidx += m.advLen
|
|
|
|
yytextrepl, yylessed = true, 0
|
|
ar := m.matchFunc()
|
|
|
|
if ar.returnType != yyRT_REJECT {
|
|
yydata = yydata[m.advLen-yylessed:]
|
|
yyorigidx -= yylessed
|
|
}
|
|
|
|
switch ar.returnType {
|
|
case yyRT_FALLTHROUGH:
|
|
// Do nothing.
|
|
case yyRT_USER_RETURN:
|
|
return ar.userReturn
|
|
case yyRT_REJECT:
|
|
matches = matches[1:]
|
|
yytext = yytext[:len(yytext)-m.advLen]
|
|
yyorigidx -= m.advLen
|
|
goto tryMatch
|
|
}
|
|
}
|
|
}
|
|
|
|
return 0
|
|
}
|
|
var S_COMMENTS yystartcondition = 1024
|
|
var yystartconditionexclmap = map[yystartcondition]bool{S_COMMENTS: true, }
|
|
var yyrules []yyrule = []yyrule{{regexp.MustCompile("[^\\n]"), nil, []yystartcondition{}, false, func() (yyar yyactionreturn) {
|
|
defer func() {
|
|
if r := recover(); r != nil {
|
|
if r != "yyREJECT" {
|
|
panic(r)
|
|
}
|
|
yyar.returnType = yyRT_REJECT
|
|
}
|
|
}()
|
|
{
|
|
yypos++
|
|
yyREJECT()
|
|
}
|
|
return yyactionreturn{0, yyRT_FALLTHROUGH}
|
|
}}, {regexp.MustCompile("\\n"), nil, []yystartcondition{}, false, func() (yyar yyactionreturn) {
|
|
defer func() {
|
|
if r := recover(); r != nil {
|
|
if r != "yyREJECT" {
|
|
panic(r)
|
|
}
|
|
yyar.returnType = yyRT_REJECT
|
|
}
|
|
}()
|
|
{
|
|
yyline++
|
|
yypos = 1
|
|
yyREJECT()
|
|
}
|
|
return yyactionreturn{0, yyRT_FALLTHROUGH}
|
|
}}, {regexp.MustCompile("/\\*"), nil, []yystartcondition{}, false, func() (yyar yyactionreturn) {
|
|
defer func() {
|
|
if r := recover(); r != nil {
|
|
if r != "yyREJECT" {
|
|
panic(r)
|
|
}
|
|
yyar.returnType = yyRT_REJECT
|
|
}
|
|
}()
|
|
{
|
|
yyBEGIN(S_COMMENTS)
|
|
}
|
|
return yyactionreturn{0, yyRT_FALLTHROUGH}
|
|
}}, {regexp.MustCompile("\\*/"), nil, []yystartcondition{S_COMMENTS, }, false, func() (yyar yyactionreturn) {
|
|
defer func() {
|
|
if r := recover(); r != nil {
|
|
if r != "yyREJECT" {
|
|
panic(r)
|
|
}
|
|
yyar.returnType = yyRT_REJECT
|
|
}
|
|
}()
|
|
{
|
|
yyBEGIN(0)
|
|
}
|
|
return yyactionreturn{0, yyRT_FALLTHROUGH}
|
|
}}, {regexp.MustCompile("[^\\n]"), nil, []yystartcondition{S_COMMENTS, }, false, func() (yyar yyactionreturn) {
|
|
defer func() {
|
|
if r := recover(); r != nil {
|
|
if r != "yyREJECT" {
|
|
panic(r)
|
|
}
|
|
yyar.returnType = yyRT_REJECT
|
|
}
|
|
}()
|
|
{
|
|
}
|
|
return yyactionreturn{0, yyRT_FALLTHROUGH}
|
|
}}, {regexp.MustCompile("\\/\\/[^\\r\\n]*\\n"), nil, []yystartcondition{}, false, func() (yyar yyactionreturn) {
|
|
defer func() {
|
|
if r := recover(); r != nil {
|
|
if r != "yyREJECT" {
|
|
panic(r)
|
|
}
|
|
yyar.returnType = yyRT_REJECT
|
|
}
|
|
}()
|
|
{
|
|
}
|
|
return yyactionreturn{0, yyRT_FALLTHROUGH}
|
|
}}, {regexp.MustCompile("ALERT|alert"), nil, []yystartcondition{}, false, func() (yyar yyactionreturn) {
|
|
defer func() {
|
|
if r := recover(); r != nil {
|
|
if r != "yyREJECT" {
|
|
panic(r)
|
|
}
|
|
yyar.returnType = yyRT_REJECT
|
|
}
|
|
}()
|
|
{
|
|
return yyactionreturn{ALERT, yyRT_USER_RETURN}
|
|
}
|
|
return yyactionreturn{0, yyRT_FALLTHROUGH}
|
|
}}, {regexp.MustCompile("IF|if"), nil, []yystartcondition{}, false, func() (yyar yyactionreturn) {
|
|
defer func() {
|
|
if r := recover(); r != nil {
|
|
if r != "yyREJECT" {
|
|
panic(r)
|
|
}
|
|
yyar.returnType = yyRT_REJECT
|
|
}
|
|
}()
|
|
{
|
|
return yyactionreturn{IF, yyRT_USER_RETURN}
|
|
}
|
|
return yyactionreturn{0, yyRT_FALLTHROUGH}
|
|
}}, {regexp.MustCompile("FOR|for"), nil, []yystartcondition{}, false, func() (yyar yyactionreturn) {
|
|
defer func() {
|
|
if r := recover(); r != nil {
|
|
if r != "yyREJECT" {
|
|
panic(r)
|
|
}
|
|
yyar.returnType = yyRT_REJECT
|
|
}
|
|
}()
|
|
{
|
|
return yyactionreturn{FOR, yyRT_USER_RETURN}
|
|
}
|
|
return yyactionreturn{0, yyRT_FALLTHROUGH}
|
|
}}, {regexp.MustCompile("WITH|with"), nil, []yystartcondition{}, false, func() (yyar yyactionreturn) {
|
|
defer func() {
|
|
if r := recover(); r != nil {
|
|
if r != "yyREJECT" {
|
|
panic(r)
|
|
}
|
|
yyar.returnType = yyRT_REJECT
|
|
}
|
|
}()
|
|
{
|
|
return yyactionreturn{WITH, yyRT_USER_RETURN}
|
|
}
|
|
return yyactionreturn{0, yyRT_FALLTHROUGH}
|
|
}}, {regexp.MustCompile("PERMANENT|permanent"), nil, []yystartcondition{}, false, func() (yyar yyactionreturn) {
|
|
defer func() {
|
|
if r := recover(); r != nil {
|
|
if r != "yyREJECT" {
|
|
panic(r)
|
|
}
|
|
yyar.returnType = yyRT_REJECT
|
|
}
|
|
}()
|
|
{
|
|
return yyactionreturn{PERMANENT, yyRT_USER_RETURN}
|
|
}
|
|
return yyactionreturn{0, yyRT_FALLTHROUGH}
|
|
}}, {regexp.MustCompile("BY|by"), nil, []yystartcondition{}, false, func() (yyar yyactionreturn) {
|
|
defer func() {
|
|
if r := recover(); r != nil {
|
|
if r != "yyREJECT" {
|
|
panic(r)
|
|
}
|
|
yyar.returnType = yyRT_REJECT
|
|
}
|
|
}()
|
|
{
|
|
return yyactionreturn{GROUP_OP, yyRT_USER_RETURN}
|
|
}
|
|
return yyactionreturn{0, yyRT_FALLTHROUGH}
|
|
}}, {regexp.MustCompile("AVG|SUM|MAX|MIN|COUNT"), nil, []yystartcondition{}, false, func() (yyar yyactionreturn) {
|
|
defer func() {
|
|
if r := recover(); r != nil {
|
|
if r != "yyREJECT" {
|
|
panic(r)
|
|
}
|
|
yyar.returnType = yyRT_REJECT
|
|
}
|
|
}()
|
|
{
|
|
yylval.str = yytext
|
|
return yyactionreturn{AGGR_OP, yyRT_USER_RETURN}
|
|
}
|
|
return yyactionreturn{0, yyRT_FALLTHROUGH}
|
|
}}, {regexp.MustCompile("avg|sum|max|min|count"), nil, []yystartcondition{}, false, func() (yyar yyactionreturn) {
|
|
defer func() {
|
|
if r := recover(); r != nil {
|
|
if r != "yyREJECT" {
|
|
panic(r)
|
|
}
|
|
yyar.returnType = yyRT_REJECT
|
|
}
|
|
}()
|
|
{
|
|
yylval.str = strings.ToUpper(yytext)
|
|
return yyactionreturn{AGGR_OP, yyRT_USER_RETURN}
|
|
}
|
|
return yyactionreturn{0, yyRT_FALLTHROUGH}
|
|
}}, {regexp.MustCompile("\\<|>|AND|OR|and|or"), nil, []yystartcondition{}, false, func() (yyar yyactionreturn) {
|
|
defer func() {
|
|
if r := recover(); r != nil {
|
|
if r != "yyREJECT" {
|
|
panic(r)
|
|
}
|
|
yyar.returnType = yyRT_REJECT
|
|
}
|
|
}()
|
|
{
|
|
yylval.str = strings.ToUpper(yytext)
|
|
return yyactionreturn{CMP_OP, yyRT_USER_RETURN}
|
|
}
|
|
return yyactionreturn{0, yyRT_FALLTHROUGH}
|
|
}}, {regexp.MustCompile("==|!=|>=|<="), nil, []yystartcondition{}, false, func() (yyar yyactionreturn) {
|
|
defer func() {
|
|
if r := recover(); r != nil {
|
|
if r != "yyREJECT" {
|
|
panic(r)
|
|
}
|
|
yyar.returnType = yyRT_REJECT
|
|
}
|
|
}()
|
|
{
|
|
yylval.str = yytext
|
|
return yyactionreturn{CMP_OP, yyRT_USER_RETURN}
|
|
}
|
|
return yyactionreturn{0, yyRT_FALLTHROUGH}
|
|
}}, {regexp.MustCompile("[+\\-]"), nil, []yystartcondition{}, false, func() (yyar yyactionreturn) {
|
|
defer func() {
|
|
if r := recover(); r != nil {
|
|
if r != "yyREJECT" {
|
|
panic(r)
|
|
}
|
|
yyar.returnType = yyRT_REJECT
|
|
}
|
|
}()
|
|
{
|
|
yylval.str = yytext
|
|
return yyactionreturn{ADDITIVE_OP, yyRT_USER_RETURN}
|
|
}
|
|
return yyactionreturn{0, yyRT_FALLTHROUGH}
|
|
}}, {regexp.MustCompile("[*/%]"), nil, []yystartcondition{}, false, func() (yyar yyactionreturn) {
|
|
defer func() {
|
|
if r := recover(); r != nil {
|
|
if r != "yyREJECT" {
|
|
panic(r)
|
|
}
|
|
yyar.returnType = yyRT_REJECT
|
|
}
|
|
}()
|
|
{
|
|
yylval.str = yytext
|
|
return yyactionreturn{MULT_OP, yyRT_USER_RETURN}
|
|
}
|
|
return yyactionreturn{0, yyRT_FALLTHROUGH}
|
|
}}, {regexp.MustCompile("([0-9])+([smhdwy])"), nil, []yystartcondition{}, false, func() (yyar yyactionreturn) {
|
|
defer func() {
|
|
if r := recover(); r != nil {
|
|
if r != "yyREJECT" {
|
|
panic(r)
|
|
}
|
|
yyar.returnType = yyRT_REJECT
|
|
}
|
|
}()
|
|
{
|
|
yylval.str = yytext
|
|
return yyactionreturn{DURATION, yyRT_USER_RETURN}
|
|
}
|
|
return yyactionreturn{0, yyRT_FALLTHROUGH}
|
|
}}, {regexp.MustCompile("([a-zA-Z_:])(([a-zA-Z_:])|([0-9]))*"), nil, []yystartcondition{}, false, func() (yyar yyactionreturn) {
|
|
defer func() {
|
|
if r := recover(); r != nil {
|
|
if r != "yyREJECT" {
|
|
panic(r)
|
|
}
|
|
yyar.returnType = yyRT_REJECT
|
|
}
|
|
}()
|
|
{
|
|
yylval.str = yytext
|
|
return yyactionreturn{IDENTIFIER, yyRT_USER_RETURN}
|
|
}
|
|
return yyactionreturn{0, yyRT_FALLTHROUGH}
|
|
}}, {regexp.MustCompile("\\-?([0-9])+(\\.([0-9])*)?"), nil, []yystartcondition{}, false, func() (yyar yyactionreturn) {
|
|
defer func() {
|
|
if r := recover(); r != nil {
|
|
if r != "yyREJECT" {
|
|
panic(r)
|
|
}
|
|
yyar.returnType = yyRT_REJECT
|
|
}
|
|
}()
|
|
{
|
|
num, err := strconv.ParseFloat(yytext, 64)
|
|
if err != nil && err.(*strconv.NumError).Err == strconv.ErrSyntax {
|
|
panic("Invalid float")
|
|
}
|
|
yylval.num = model.SampleValue(num)
|
|
return yyactionreturn{NUMBER, yyRT_USER_RETURN}
|
|
}
|
|
return yyactionreturn{0, yyRT_FALLTHROUGH}
|
|
}}, {regexp.MustCompile("\\\"(\\\\[^\\n]|[^\\\\\"])*\\\""), nil, []yystartcondition{}, false, func() (yyar yyactionreturn) {
|
|
defer func() {
|
|
if r := recover(); r != nil {
|
|
if r != "yyREJECT" {
|
|
panic(r)
|
|
}
|
|
yyar.returnType = yyRT_REJECT
|
|
}
|
|
}()
|
|
{
|
|
yylval.str = yytext[1 : len(yytext)-1]
|
|
return yyactionreturn{STRING, yyRT_USER_RETURN}
|
|
}
|
|
return yyactionreturn{0, yyRT_FALLTHROUGH}
|
|
}}, {regexp.MustCompile("\\'(\\\\[^\\n]|[^\\\\'])*\\'"), nil, []yystartcondition{}, false, func() (yyar yyactionreturn) {
|
|
defer func() {
|
|
if r := recover(); r != nil {
|
|
if r != "yyREJECT" {
|
|
panic(r)
|
|
}
|
|
yyar.returnType = yyRT_REJECT
|
|
}
|
|
}()
|
|
{
|
|
yylval.str = yytext[1 : len(yytext)-1]
|
|
return yyactionreturn{STRING, yyRT_USER_RETURN}
|
|
}
|
|
return yyactionreturn{0, yyRT_FALLTHROUGH}
|
|
}}, {regexp.MustCompile("[{}\\[\\]()=,]"), nil, []yystartcondition{}, false, func() (yyar yyactionreturn) {
|
|
defer func() {
|
|
if r := recover(); r != nil {
|
|
if r != "yyREJECT" {
|
|
panic(r)
|
|
}
|
|
yyar.returnType = yyRT_REJECT
|
|
}
|
|
}()
|
|
{
|
|
return yyactionreturn{int(yytext[0]), yyRT_USER_RETURN}
|
|
}
|
|
return yyactionreturn{0, yyRT_FALLTHROUGH}
|
|
}}, {regexp.MustCompile("[^\\n]"), nil, []yystartcondition{}, false, func() (yyar yyactionreturn) {
|
|
defer func() {
|
|
if r := recover(); r != nil {
|
|
if r != "yyREJECT" {
|
|
panic(r)
|
|
}
|
|
yyar.returnType = yyRT_REJECT
|
|
}
|
|
}()
|
|
{
|
|
}
|
|
return yyactionreturn{0, yyRT_FALLTHROUGH}
|
|
}}, {regexp.MustCompile("\\n"), nil, []yystartcondition{}, false, func() (yyar yyactionreturn) {
|
|
defer func() {
|
|
if r := recover(); r != nil {
|
|
if r != "yyREJECT" {
|
|
panic(r)
|
|
}
|
|
yyar.returnType = yyRT_REJECT
|
|
}
|
|
}()
|
|
{
|
|
}
|
|
return yyactionreturn{0, yyRT_FALLTHROUGH}
|
|
}}, }
|
|
func yyactioninline(BEGIN func(yystartcondition)) {}
|