mirror of
https://github.com/prometheus/prometheus.git
synced 2024-12-25 13:44:05 -08:00
c7c0b33d0b
There are four label-matching ops for selecting timeseries now: - Equal: = - NotEqual: != - RegexMatch: =~ - RegexNoMatch: !~ Instead of looking up labels by a simple clientmodel.LabelSet (basically an equals op for every key/value pair in the set), timeseries fingerprint selection is now done via a list of metric.LabelMatchers. Change-Id: I510a83f761198e80946146770ebb64e4abc3bb96
2138 lines
40 KiB
Go
2138 lines
40 KiB
Go
/* Copyright 2013 Prometheus Team
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License. */
|
|
package rules
|
|
|
|
import (
|
|
"fmt"
|
|
"strconv"
|
|
"strings"
|
|
|
|
clientmodel "github.com/prometheus/client_golang/model"
|
|
)
|
|
|
|
// Lex is called by the parser generated by "go tool yacc" to obtain each
|
|
// token. The method is opened before the matching rules block and closed at
|
|
// the end of the file.
|
|
func (lexer *RulesLexer) Lex(lval *yySymType) int {
|
|
// Internal lexer states.
|
|
const (
|
|
S_INITIAL = iota
|
|
S_COMMENTS
|
|
)
|
|
|
|
// We simulate multiple start symbols for closely-related grammars via dummy tokens. See
|
|
// http://www.gnu.org/software/bison/manual/html_node/Multiple-start_002dsymbols.html
|
|
// Reason: we want to be able to parse lists of named rules as well as single expressions.
|
|
if lexer.startToken != 0 {
|
|
startToken := lexer.startToken
|
|
lexer.startToken = 0
|
|
return startToken
|
|
}
|
|
|
|
c := lexer.current
|
|
currentState := 0
|
|
|
|
if lexer.empty {
|
|
c, lexer.empty = lexer.getChar(), false
|
|
}
|
|
|
|
|
|
|
|
yystate0:
|
|
|
|
lexer.buf = lexer.buf[:0] // The code before the first rule executed before every scan cycle (rule #0 / state 0 action)
|
|
|
|
switch yyt := currentState; yyt {
|
|
default:
|
|
panic(fmt.Errorf(`invalid start condition %d`, yyt))
|
|
case 0: // start condition: INITIAL
|
|
goto yystart1
|
|
case 1: // start condition: S_COMMENTS
|
|
goto yystart153
|
|
}
|
|
|
|
goto yystate1 // silence unused label error
|
|
yystate1:
|
|
c = lexer.getChar()
|
|
yystart1:
|
|
switch {
|
|
default:
|
|
goto yyabort
|
|
case c == '!':
|
|
goto yystate3
|
|
case c == '"':
|
|
goto yystate5
|
|
case c == '%' || c == '*':
|
|
goto yystate8
|
|
case c == '(' || c == ')' || c == ',' || c == '[' || c == ']' || c == '{' || c == '}':
|
|
goto yystate12
|
|
case c == '+':
|
|
goto yystate13
|
|
case c == '-':
|
|
goto yystate14
|
|
case c == '/':
|
|
goto yystate17
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == '<' || c == '>':
|
|
goto yystate24
|
|
case c == '=':
|
|
goto yystate25
|
|
case c == 'A':
|
|
goto yystate26
|
|
case c == 'B':
|
|
goto yystate36
|
|
case c == 'C':
|
|
goto yystate38
|
|
case c == 'D':
|
|
goto yystate42
|
|
case c == 'E' || c == 'G' || c == 'H' || c == 'J' || c == 'L' || c == 'N' || c == 'Q' || c == 'R' || c >= 'T' && c <= 'V' || c >= 'X' && c <= 'Z' || c == '_' || c == 'e' || c == 'g' || c == 'h' || c == 'j' || c == 'l' || c == 'n' || c == 'q' || c == 'r' || c >= 't' && c <= 'v' || c >= 'x' && c <= 'z':
|
|
goto yystate27
|
|
case c == 'F':
|
|
goto yystate53
|
|
case c == 'I':
|
|
goto yystate56
|
|
case c == 'K':
|
|
goto yystate58
|
|
case c == 'M':
|
|
goto yystate71
|
|
case c == 'O':
|
|
goto yystate74
|
|
case c == 'P':
|
|
goto yystate75
|
|
case c == 'S':
|
|
goto yystate84
|
|
case c == 'W':
|
|
goto yystate91
|
|
case c == '\'':
|
|
goto yystate9
|
|
case c == '\t' || c == '\n' || c == '\r' || c == ' ':
|
|
goto yystate2
|
|
case c == 'a':
|
|
goto yystate95
|
|
case c == 'b':
|
|
goto yystate102
|
|
case c == 'c':
|
|
goto yystate103
|
|
case c == 'd':
|
|
goto yystate107
|
|
case c == 'f':
|
|
goto yystate117
|
|
case c == 'i':
|
|
goto yystate119
|
|
case c == 'k':
|
|
goto yystate120
|
|
case c == 'm':
|
|
goto yystate132
|
|
case c == 'o':
|
|
goto yystate135
|
|
case c == 'p':
|
|
goto yystate136
|
|
case c == 's':
|
|
goto yystate144
|
|
case c == 'w':
|
|
goto yystate150
|
|
case c >= '0' && c <= '9':
|
|
goto yystate21
|
|
}
|
|
|
|
yystate2:
|
|
c = lexer.getChar()
|
|
goto yyrule27
|
|
|
|
yystate3:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyabort
|
|
case c == '=' || c == '~':
|
|
goto yystate4
|
|
}
|
|
|
|
yystate4:
|
|
c = lexer.getChar()
|
|
goto yyrule17
|
|
|
|
yystate5:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyabort
|
|
case c == '"':
|
|
goto yystate6
|
|
case c == '\\':
|
|
goto yystate7
|
|
case c >= '\x01' && c <= '!' || c >= '#' && c <= '[' || c >= ']' && c <= 'ÿ':
|
|
goto yystate5
|
|
}
|
|
|
|
yystate6:
|
|
c = lexer.getChar()
|
|
goto yyrule24
|
|
|
|
yystate7:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyabort
|
|
case c >= '\x01' && c <= '\t' || c >= '\v' && c <= 'ÿ':
|
|
goto yystate5
|
|
}
|
|
|
|
yystate8:
|
|
c = lexer.getChar()
|
|
goto yyrule19
|
|
|
|
yystate9:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyabort
|
|
case c == '\'':
|
|
goto yystate10
|
|
case c == '\\':
|
|
goto yystate11
|
|
case c >= '\x01' && c <= '&' || c >= '(' && c <= '[' || c >= ']' && c <= 'ÿ':
|
|
goto yystate9
|
|
}
|
|
|
|
yystate10:
|
|
c = lexer.getChar()
|
|
goto yyrule25
|
|
|
|
yystate11:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyabort
|
|
case c >= '\x01' && c <= '\t' || c >= '\v' && c <= 'ÿ':
|
|
goto yystate9
|
|
}
|
|
|
|
yystate12:
|
|
c = lexer.getChar()
|
|
goto yyrule26
|
|
|
|
yystate13:
|
|
c = lexer.getChar()
|
|
goto yyrule18
|
|
|
|
yystate14:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule18
|
|
case c >= '0' && c <= '9':
|
|
goto yystate15
|
|
}
|
|
|
|
yystate15:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule23
|
|
case c == '.':
|
|
goto yystate16
|
|
case c >= '0' && c <= '9':
|
|
goto yystate15
|
|
}
|
|
|
|
yystate16:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule23
|
|
case c >= '0' && c <= '9':
|
|
goto yystate16
|
|
}
|
|
|
|
yystate17:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule19
|
|
case c == '*':
|
|
goto yystate18
|
|
case c == '/':
|
|
goto yystate19
|
|
}
|
|
|
|
yystate18:
|
|
c = lexer.getChar()
|
|
goto yyrule1
|
|
|
|
yystate19:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyabort
|
|
case c == '\n':
|
|
goto yystate20
|
|
case c >= '\x01' && c <= '\t' || c == '\v' || c == '\f' || c >= '\x0e' && c <= 'ÿ':
|
|
goto yystate19
|
|
}
|
|
|
|
yystate20:
|
|
c = lexer.getChar()
|
|
goto yyrule4
|
|
|
|
yystate21:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule23
|
|
case c == '.':
|
|
goto yystate16
|
|
case c == 'd' || c == 'h' || c == 'm' || c == 's' || c == 'w' || c == 'y':
|
|
goto yystate22
|
|
case c >= '0' && c <= '9':
|
|
goto yystate21
|
|
}
|
|
|
|
yystate22:
|
|
c = lexer.getChar()
|
|
goto yyrule20
|
|
|
|
yystate23:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule22
|
|
case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z':
|
|
goto yystate23
|
|
}
|
|
|
|
yystate24:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule16
|
|
case c == '=':
|
|
goto yystate4
|
|
}
|
|
|
|
yystate25:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule26
|
|
case c == '=' || c == '~':
|
|
goto yystate4
|
|
}
|
|
|
|
yystate26:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'L':
|
|
goto yystate28
|
|
case c == 'N':
|
|
goto yystate32
|
|
case c == 'V':
|
|
goto yystate34
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'K' || c == 'M' || c >= 'O' && c <= 'U' || c >= 'W' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate27:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate28:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'E':
|
|
goto yystate29
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'D' || c >= 'F' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate29:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'R':
|
|
goto yystate30
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Q' || c >= 'S' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate30:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'T':
|
|
goto yystate31
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'S' || c >= 'U' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate31:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule5
|
|
case c == ':':
|
|
goto yystate23
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate32:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'D':
|
|
goto yystate33
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'C' || c >= 'E' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate33:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule16
|
|
case c == ':':
|
|
goto yystate23
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate34:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'G':
|
|
goto yystate35
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'H' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate35:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule14
|
|
case c == ':':
|
|
goto yystate23
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate36:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'Y':
|
|
goto yystate37
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'X' || c == 'Z' || c == '_' || c >= 'a' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate37:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule12
|
|
case c == ':':
|
|
goto yystate23
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate38:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'O':
|
|
goto yystate39
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'N' || c >= 'P' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate39:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'U':
|
|
goto yystate40
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'T' || c >= 'V' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate40:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'N':
|
|
goto yystate41
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'M' || c >= 'O' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate41:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'T':
|
|
goto yystate35
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'S' || c >= 'U' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate42:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'E':
|
|
goto yystate43
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'D' || c >= 'F' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate43:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'S':
|
|
goto yystate44
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'R' || c >= 'T' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate44:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'C':
|
|
goto yystate45
|
|
case c >= '0' && c <= '9' || c == 'A' || c == 'B' || c >= 'D' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate45:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'R':
|
|
goto yystate46
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Q' || c >= 'S' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate46:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'I':
|
|
goto yystate47
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'H' || c >= 'J' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate47:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'P':
|
|
goto yystate48
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'O' || c >= 'Q' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate48:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'T':
|
|
goto yystate49
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'S' || c >= 'U' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate49:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'I':
|
|
goto yystate50
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'H' || c >= 'J' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate50:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'O':
|
|
goto yystate51
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'N' || c >= 'P' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate51:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'N':
|
|
goto yystate52
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'M' || c >= 'O' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate52:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule10
|
|
case c == ':':
|
|
goto yystate23
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate53:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'O':
|
|
goto yystate54
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'N' || c >= 'P' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate54:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'R':
|
|
goto yystate55
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Q' || c >= 'S' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate55:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule7
|
|
case c == ':':
|
|
goto yystate23
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate56:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'F':
|
|
goto yystate57
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'E' || c >= 'G' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate57:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule6
|
|
case c == ':':
|
|
goto yystate23
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate58:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'E':
|
|
goto yystate59
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'D' || c >= 'F' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate59:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'E':
|
|
goto yystate60
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'D' || c >= 'F' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate60:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'P':
|
|
goto yystate61
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'O' || c >= 'Q' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate61:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'I':
|
|
goto yystate62
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'H' || c >= 'J' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate62:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'N':
|
|
goto yystate63
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'M' || c >= 'O' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate63:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'G':
|
|
goto yystate64
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'H' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate64:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == '_':
|
|
goto yystate65
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c >= 'a' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate65:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'E':
|
|
goto yystate66
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'D' || c >= 'F' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate66:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'X':
|
|
goto yystate67
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'W' || c == 'Y' || c == 'Z' || c == '_' || c >= 'a' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate67:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'T':
|
|
goto yystate68
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'S' || c >= 'U' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate68:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'R':
|
|
goto yystate69
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Q' || c >= 'S' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate69:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'A':
|
|
goto yystate70
|
|
case c >= '0' && c <= '9' || c >= 'B' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate70:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule13
|
|
case c == ':':
|
|
goto yystate23
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate71:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'A':
|
|
goto yystate72
|
|
case c == 'I':
|
|
goto yystate73
|
|
case c >= '0' && c <= '9' || c >= 'B' && c <= 'H' || c >= 'J' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate72:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'X':
|
|
goto yystate35
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'W' || c == 'Y' || c == 'Z' || c == '_' || c >= 'a' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate73:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'N':
|
|
goto yystate35
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'M' || c >= 'O' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate74:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'R':
|
|
goto yystate33
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Q' || c >= 'S' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate75:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'E':
|
|
goto yystate76
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'D' || c >= 'F' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate76:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'R':
|
|
goto yystate77
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Q' || c >= 'S' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate77:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'M':
|
|
goto yystate78
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'L' || c >= 'N' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate78:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'A':
|
|
goto yystate79
|
|
case c >= '0' && c <= '9' || c >= 'B' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate79:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'N':
|
|
goto yystate80
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'M' || c >= 'O' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate80:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'E':
|
|
goto yystate81
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'D' || c >= 'F' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate81:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'N':
|
|
goto yystate82
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'M' || c >= 'O' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate82:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'T':
|
|
goto yystate83
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'S' || c >= 'U' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate83:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule11
|
|
case c == ':':
|
|
goto yystate23
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate84:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'U':
|
|
goto yystate85
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'T' || c >= 'V' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate85:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'M':
|
|
goto yystate86
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'L' || c >= 'N' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate86:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule14
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'M':
|
|
goto yystate87
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'L' || c >= 'N' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate87:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'A':
|
|
goto yystate88
|
|
case c >= '0' && c <= '9' || c >= 'B' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate88:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'R':
|
|
goto yystate89
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Q' || c >= 'S' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate89:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'Y':
|
|
goto yystate90
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'X' || c == 'Z' || c == '_' || c >= 'a' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate90:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule9
|
|
case c == ':':
|
|
goto yystate23
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate91:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'I':
|
|
goto yystate92
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'H' || c >= 'J' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate92:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'T':
|
|
goto yystate93
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'S' || c >= 'U' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate93:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'H':
|
|
goto yystate94
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'G' || c >= 'I' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate94:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule8
|
|
case c == ':':
|
|
goto yystate23
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate95:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'l':
|
|
goto yystate96
|
|
case c == 'n':
|
|
goto yystate99
|
|
case c == 'v':
|
|
goto yystate100
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'k' || c == 'm' || c >= 'o' && c <= 'u' || c >= 'w' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate96:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'e':
|
|
goto yystate97
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'd' || c >= 'f' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate97:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'r':
|
|
goto yystate98
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'q' || c >= 's' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate98:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 't':
|
|
goto yystate31
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 's' || c >= 'u' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate99:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'd':
|
|
goto yystate33
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'c' || c >= 'e' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate100:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'g':
|
|
goto yystate101
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'f' || c >= 'h' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate101:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule15
|
|
case c == ':':
|
|
goto yystate23
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate102:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'y':
|
|
goto yystate37
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'x' || c == 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate103:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'o':
|
|
goto yystate104
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'n' || c >= 'p' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate104:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'u':
|
|
goto yystate105
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 't' || c >= 'v' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate105:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'n':
|
|
goto yystate106
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'm' || c >= 'o' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate106:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 't':
|
|
goto yystate101
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 's' || c >= 'u' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate107:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'e':
|
|
goto yystate108
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'd' || c >= 'f' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate108:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 's':
|
|
goto yystate109
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'r' || c >= 't' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate109:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'c':
|
|
goto yystate110
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c == 'a' || c == 'b' || c >= 'd' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate110:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'r':
|
|
goto yystate111
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'q' || c >= 's' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate111:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'i':
|
|
goto yystate112
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'h' || c >= 'j' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate112:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'p':
|
|
goto yystate113
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'o' || c >= 'q' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate113:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 't':
|
|
goto yystate114
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 's' || c >= 'u' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate114:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'i':
|
|
goto yystate115
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'h' || c >= 'j' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate115:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'o':
|
|
goto yystate116
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'n' || c >= 'p' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate116:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'n':
|
|
goto yystate52
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'm' || c >= 'o' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate117:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'o':
|
|
goto yystate118
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'n' || c >= 'p' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate118:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'r':
|
|
goto yystate55
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'q' || c >= 's' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate119:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'f':
|
|
goto yystate57
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'e' || c >= 'g' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate120:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'e':
|
|
goto yystate121
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'd' || c >= 'f' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate121:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'e':
|
|
goto yystate122
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'd' || c >= 'f' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate122:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'p':
|
|
goto yystate123
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'o' || c >= 'q' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate123:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'i':
|
|
goto yystate124
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'h' || c >= 'j' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate124:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'n':
|
|
goto yystate125
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'm' || c >= 'o' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate125:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'g':
|
|
goto yystate126
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'f' || c >= 'h' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate126:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == '_':
|
|
goto yystate127
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c >= 'a' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate127:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'e':
|
|
goto yystate128
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'd' || c >= 'f' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate128:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'x':
|
|
goto yystate129
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'w' || c == 'y' || c == 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate129:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 't':
|
|
goto yystate130
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 's' || c >= 'u' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate130:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'r':
|
|
goto yystate131
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'q' || c >= 's' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate131:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'a':
|
|
goto yystate70
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'b' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate132:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'a':
|
|
goto yystate133
|
|
case c == 'i':
|
|
goto yystate134
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'b' && c <= 'h' || c >= 'j' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate133:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'x':
|
|
goto yystate101
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'w' || c == 'y' || c == 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate134:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'n':
|
|
goto yystate101
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'm' || c >= 'o' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate135:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'r':
|
|
goto yystate33
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'q' || c >= 's' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate136:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'e':
|
|
goto yystate137
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'd' || c >= 'f' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate137:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'r':
|
|
goto yystate138
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'q' || c >= 's' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate138:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'm':
|
|
goto yystate139
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'l' || c >= 'n' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate139:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'a':
|
|
goto yystate140
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'b' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate140:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'n':
|
|
goto yystate141
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'm' || c >= 'o' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate141:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'e':
|
|
goto yystate142
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'd' || c >= 'f' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate142:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'n':
|
|
goto yystate143
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'm' || c >= 'o' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate143:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 't':
|
|
goto yystate83
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 's' || c >= 'u' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate144:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'u':
|
|
goto yystate145
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 't' || c >= 'v' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate145:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'm':
|
|
goto yystate146
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'l' || c >= 'n' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate146:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule15
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'm':
|
|
goto yystate147
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'l' || c >= 'n' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate147:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'a':
|
|
goto yystate148
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'b' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate148:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'r':
|
|
goto yystate149
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'q' || c >= 's' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate149:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'y':
|
|
goto yystate90
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'x' || c == 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate150:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'i':
|
|
goto yystate151
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'h' || c >= 'j' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate151:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 't':
|
|
goto yystate152
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 's' || c >= 'u' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
yystate152:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule21
|
|
case c == ':':
|
|
goto yystate23
|
|
case c == 'h':
|
|
goto yystate94
|
|
case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'g' || c >= 'i' && c <= 'z':
|
|
goto yystate27
|
|
}
|
|
|
|
goto yystate153 // silence unused label error
|
|
yystate153:
|
|
c = lexer.getChar()
|
|
yystart153:
|
|
switch {
|
|
default:
|
|
goto yyabort
|
|
case c == '*':
|
|
goto yystate155
|
|
case c >= '\x01' && c <= ')' || c >= '+' && c <= 'ÿ':
|
|
goto yystate154
|
|
}
|
|
|
|
yystate154:
|
|
c = lexer.getChar()
|
|
goto yyrule3
|
|
|
|
yystate155:
|
|
c = lexer.getChar()
|
|
switch {
|
|
default:
|
|
goto yyrule3
|
|
case c == '/':
|
|
goto yystate156
|
|
}
|
|
|
|
yystate156:
|
|
c = lexer.getChar()
|
|
goto yyrule2
|
|
|
|
yyrule1: // "/*"
|
|
{
|
|
currentState = S_COMMENTS
|
|
goto yystate0
|
|
}
|
|
yyrule2: // "*/"
|
|
{
|
|
currentState = S_INITIAL
|
|
goto yystate0
|
|
}
|
|
yyrule3: // .|\n
|
|
{
|
|
/* ignore chars within multi-line comments */
|
|
goto yystate0
|
|
}
|
|
yyrule4: // \/\/[^\r\n]*\n
|
|
{
|
|
/* gobble up one-line comments */
|
|
goto yystate0
|
|
}
|
|
yyrule5: // ALERT|alert
|
|
{
|
|
return ALERT
|
|
}
|
|
yyrule6: // IF|if
|
|
{
|
|
return IF
|
|
}
|
|
yyrule7: // FOR|for
|
|
{
|
|
return FOR
|
|
}
|
|
yyrule8: // WITH|with
|
|
{
|
|
return WITH
|
|
}
|
|
yyrule9: // SUMMARY|summary
|
|
{
|
|
return SUMMARY
|
|
}
|
|
yyrule10: // DESCRIPTION|description
|
|
{
|
|
return DESCRIPTION
|
|
}
|
|
yyrule11: // PERMANENT|permanent
|
|
{
|
|
return PERMANENT
|
|
}
|
|
yyrule12: // BY|by
|
|
{
|
|
return GROUP_OP
|
|
}
|
|
yyrule13: // KEEPING_EXTRA|keeping_extra
|
|
{
|
|
return KEEPING_EXTRA
|
|
}
|
|
yyrule14: // AVG|SUM|MAX|MIN|COUNT
|
|
{
|
|
lval.str = lexer.token(); return AGGR_OP
|
|
goto yystate0
|
|
}
|
|
yyrule15: // avg|sum|max|min|count
|
|
{
|
|
lval.str = strings.ToUpper(lexer.token()); return AGGR_OP
|
|
goto yystate0
|
|
}
|
|
yyrule16: // \<|>|AND|OR|and|or
|
|
{
|
|
lval.str = strings.ToUpper(lexer.token()); return CMP_OP
|
|
goto yystate0
|
|
}
|
|
yyrule17: // ==|!=|>=|<=|=~|!~
|
|
{
|
|
lval.str = lexer.token(); return CMP_OP
|
|
goto yystate0
|
|
}
|
|
yyrule18: // [+\-]
|
|
{
|
|
lval.str = lexer.token(); return ADDITIVE_OP
|
|
goto yystate0
|
|
}
|
|
yyrule19: // [*/%]
|
|
{
|
|
lval.str = lexer.token(); return MULT_OP
|
|
goto yystate0
|
|
}
|
|
yyrule20: // {D}+{U}
|
|
{
|
|
lval.str = lexer.token(); return DURATION
|
|
goto yystate0
|
|
}
|
|
yyrule21: // {L}({L}|{D})*
|
|
{
|
|
lval.str = lexer.token(); return IDENTIFIER
|
|
goto yystate0
|
|
}
|
|
yyrule22: // {M}({M}|{D})*
|
|
{
|
|
lval.str = lexer.token(); return METRICNAME
|
|
goto yystate0
|
|
}
|
|
yyrule23: // \-?{D}+(\.{D}*)?
|
|
{
|
|
num, err := strconv.ParseFloat(lexer.token(), 64);
|
|
if (err != nil && err.(*strconv.NumError).Err == strconv.ErrSyntax) {
|
|
panic("Invalid float")
|
|
}
|
|
lval.num = clientmodel.SampleValue(num)
|
|
return NUMBER
|
|
}
|
|
yyrule24: // \"(\\.|[^\\"])*\"
|
|
{
|
|
lval.str = lexer.token()[1:len(lexer.token()) - 1]; return STRING
|
|
goto yystate0
|
|
}
|
|
yyrule25: // \'(\\.|[^\\'])*\'
|
|
{
|
|
lval.str = lexer.token()[1:len(lexer.token()) - 1]; return STRING
|
|
goto yystate0
|
|
}
|
|
yyrule26: // [{}\[\]()=,]
|
|
{
|
|
return int(lexer.buf[0])
|
|
}
|
|
yyrule27: // [\t\n\r ]
|
|
{
|
|
/* gobble up any whitespace */
|
|
goto yystate0
|
|
}
|
|
panic("unreachable")
|
|
|
|
goto yyabort // silence unused label error
|
|
|
|
yyabort: // no lexem recognized
|
|
|
|
lexer.empty = true
|
|
return int(c)
|
|
}
|