diff --git a/rules/lexer.l b/rules/lexer.l index c289bd7653..f4e3cfa184 100644 --- a/rules/lexer.l +++ b/rules/lexer.l @@ -51,7 +51,8 @@ func (lexer *RulesLexer) Lex(lval *yySymType) int { %} D [0-9] -L [a-zA-Z_:] +L [a-zA-Z_] +M [a-zA-Z_:] U [smhdwy] %x S_COMMENTS @@ -88,6 +89,7 @@ avg|sum|max|min|count lval.str = strings.ToUpper(lexer.token()); return AGGR_ {D}+{U} lval.str = lexer.token(); return DURATION {L}({L}|{D})* lval.str = lexer.token(); return IDENTIFIER +{M}({M}|{D})* lval.str = lexer.token(); return METRICNAME \-?{D}+(\.{D}*)? num, err := strconv.ParseFloat(lexer.token(), 64); if (err != nil && err.(*strconv.NumError).Err == strconv.ErrSyntax) { diff --git a/rules/lexer.l.go b/rules/lexer.l.go index af880e6adf..c58a11288c 100644 --- a/rules/lexer.l.go +++ b/rules/lexer.l.go @@ -58,7 +58,7 @@ panic(fmt.Errorf(`invalid start condition %d`, yyt)) case 0: // start condition: INITIAL goto yystart1 case 1: // start condition: S_COMMENTS -goto yystart152 +goto yystart153 } goto yystate1 // silence unused label error @@ -82,7 +82,7 @@ case c == '-': goto yystate14 case c == '/': goto yystate17 -case 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' || 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': +case c == ':': goto yystate23 case c == '<' || c == '>': goto yystate24 @@ -91,62 +91,64 @@ goto yystate25 case c == 'A': goto yystate26 case c == 'B': -goto yystate35 +goto yystate36 case c == 'C': -goto yystate37 +goto yystate38 case c == 'D': -goto yystate41 +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 yystate52 +goto yystate53 case c == 'I': -goto yystate55 +goto yystate56 case c == 'K': -goto yystate57 +goto yystate58 case c == 'M': -goto yystate70 +goto yystate71 case c == 'O': -goto yystate73 -case c == 'P': goto yystate74 +case c == 'P': +goto yystate75 case c == 'S': -goto yystate83 +goto yystate84 case c == 'W': -goto yystate90 +goto yystate91 case c == '\'': goto yystate9 case c == '\t' || c == '\n' || c == '\r' || c == ' ': goto yystate2 case c == 'a': -goto yystate94 +goto yystate95 case c == 'b': -goto yystate101 -case c == 'c': goto yystate102 +case c == 'c': +goto yystate103 case c == 'd': -goto yystate106 +goto yystate107 case c == 'f': -goto yystate116 +goto yystate117 case c == 'i': -goto yystate118 -case c == 'k': goto yystate119 +case c == 'k': +goto yystate120 case c == 'm': -goto yystate131 +goto yystate132 case c == 'o': -goto yystate134 -case c == 'p': goto yystate135 +case c == 'p': +goto yystate136 case c == 's': -goto yystate143 +goto yystate144 case c == 'w': -goto yystate149 +goto yystate150 case c >= '0' && c <= '9': goto yystate21 } yystate2: c = lexer.getChar() -goto yyrule26 +goto yyrule27 yystate3: c = lexer.getChar() @@ -176,7 +178,7 @@ goto yystate5 yystate6: c = lexer.getChar() -goto yyrule23 +goto yyrule24 yystate7: c = lexer.getChar() @@ -206,7 +208,7 @@ goto yystate9 yystate10: c = lexer.getChar() -goto yyrule24 +goto yyrule25 yystate11: c = lexer.getChar() @@ -219,7 +221,7 @@ goto yystate9 yystate12: c = lexer.getChar() -goto yyrule25 +goto yyrule26 yystate13: c = lexer.getChar() @@ -238,7 +240,7 @@ yystate15: c = lexer.getChar() switch { default: -goto yyrule22 +goto yyrule23 case c == '.': goto yystate16 case c >= '0' && c <= '9': @@ -249,7 +251,7 @@ yystate16: c = lexer.getChar() switch { default: -goto yyrule22 +goto yyrule23 case c >= '0' && c <= '9': goto yystate16 } @@ -288,7 +290,7 @@ yystate21: c = lexer.getChar() switch { default: -goto yyrule22 +goto yyrule23 case c == '.': goto yystate16 case c == 'd' || c == 'h' || c == 'm' || c == 's' || c == 'w' || c == 'y': @@ -305,7 +307,7 @@ yystate23: c = lexer.getChar() switch { default: -goto yyrule21 +goto yyrule22 case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': goto yystate23 } @@ -323,7 +325,7 @@ yystate25: c = lexer.getChar() switch { default: -goto yyrule25 +goto yyrule26 case c == '=': goto yystate4 } @@ -333,14 +335,16 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'L': -goto yystate27 -case c == 'N': -goto yystate31 -case c == 'V': -goto yystate33 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'K' || c == 'M' || c >= 'O' && c <= 'U' || c >= 'W' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +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: @@ -348,10 +352,10 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'E': -goto yystate28 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'D' || c >= 'F' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +case c == ':': goto yystate23 +case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +goto yystate27 } yystate28: @@ -359,10 +363,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'R': -goto yystate29 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Q' || c >= 'S' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +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: @@ -370,90 +376,108 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'T': -goto yystate30 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'S' || c >= 'U' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +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 yyrule5 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +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 yyrule21 -case c == 'D': -goto yystate32 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'C' || c >= 'E' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +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 yyrule16 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +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 yyrule21 -case c == 'G': -goto yystate34 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'F' || c >= 'H' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +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 yyrule14 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +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 yyrule21 -case c == 'Y': -goto yystate36 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'X' || c == 'Z' || c == '_' || c >= 'a' && c <= 'z': +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 yyrule12 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +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 yyrule21 -case c == 'O': -goto yystate38 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'N' || c >= 'P' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +goto yyrule12 +case c == ':': goto yystate23 +case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +goto yystate27 } yystate38: @@ -461,10 +485,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'U': -goto yystate39 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'T' || c >= 'V' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +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: @@ -472,10 +498,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'N': -goto yystate40 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'M' || c >= 'O' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +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: @@ -483,10 +511,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'T': -goto yystate34 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'S' || c >= 'U' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +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: @@ -494,10 +524,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'E': -goto yystate42 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'D' || c >= 'F' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +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: @@ -505,10 +537,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'S': -goto yystate43 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'R' || c >= 'T' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +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: @@ -516,10 +550,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'C': -goto yystate44 -case c >= '0' && c <= ':' || c == 'A' || c == 'B' || c >= 'D' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +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: @@ -527,10 +563,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'R': -goto yystate45 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Q' || c >= 'S' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +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: @@ -538,10 +576,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'I': -goto yystate46 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'H' || c >= 'J' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +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: @@ -549,10 +589,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'P': -goto yystate47 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'O' || c >= 'Q' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +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: @@ -560,10 +602,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'T': -goto yystate48 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'S' || c >= 'U' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +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: @@ -571,10 +615,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'I': -goto yystate49 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'H' || c >= 'J' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +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: @@ -582,10 +628,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'O': -goto yystate50 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'N' || c >= 'P' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +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: @@ -593,30 +641,36 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'N': -goto yystate51 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'M' || c >= 'O' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +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 yyrule10 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +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 yyrule21 -case c == 'O': -goto yystate53 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'N' || c >= 'P' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +goto yyrule10 +case c == ':': goto yystate23 +case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +goto yystate27 } yystate53: @@ -624,50 +678,60 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'R': -goto yystate54 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Q' || c >= 'S' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +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 yyrule7 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +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 yyrule21 -case c == 'F': -goto yystate56 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'E' || c >= 'G' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +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 yyrule6 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +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 yyrule21 -case c == 'E': -goto yystate58 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'D' || c >= 'F' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +goto yyrule6 +case c == ':': goto yystate23 +case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +goto yystate27 } yystate58: @@ -675,10 +739,12 @@ c = lexer.getChar() switch { default: goto yyrule21 +case c == ':': +goto yystate23 case c == 'E': goto yystate59 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'D' || c >= 'F' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': -goto yystate23 +case c >= '0' && c <= '9' || c >= 'A' && c <= 'D' || c >= 'F' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +goto yystate27 } yystate59: @@ -686,10 +752,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'P': -goto yystate60 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'O' || c >= 'Q' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +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: @@ -697,10 +765,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'I': -goto yystate61 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'H' || c >= 'J' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +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: @@ -708,10 +778,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'N': -goto yystate62 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'M' || c >= 'O' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +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: @@ -719,10 +791,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'G': -goto yystate63 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'F' || c >= 'H' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +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: @@ -730,10 +804,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == '_': -goto yystate64 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c >= 'a' && c <= 'z': +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: @@ -741,10 +817,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'E': -goto yystate65 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'D' || c >= 'F' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +case c == ':': goto yystate23 +case c == '_': +goto yystate65 +case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c >= 'a' && c <= 'z': +goto yystate27 } yystate65: @@ -752,10 +830,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'X': -goto yystate66 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'W' || c == 'Y' || c == 'Z' || c == '_' || c >= 'a' && c <= 'z': +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: @@ -763,10 +843,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'T': -goto yystate67 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'S' || c >= 'U' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +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: @@ -774,10 +856,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'R': -goto yystate68 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Q' || c >= 'S' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +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: @@ -785,32 +869,36 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'A': -goto yystate69 -case c >= '0' && c <= ':' || c >= 'B' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +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 yyrule13 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +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 yyrule21 -case c == 'A': -goto yystate71 -case c == 'I': -goto yystate72 -case c >= '0' && c <= ':' || c >= 'B' && c <= 'H' || c >= 'J' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +goto yyrule13 +case c == ':': goto yystate23 +case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +goto yystate27 } yystate71: @@ -818,10 +906,14 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'X': -goto yystate34 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'W' || c == 'Y' || c == 'Z' || c == '_' || c >= 'a' && c <= 'z': +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: @@ -829,10 +921,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'N': -goto yystate34 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'M' || c >= 'O' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +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: @@ -840,10 +934,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'R': -goto yystate32 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Q' || c >= 'S' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +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: @@ -851,10 +947,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'E': -goto yystate75 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'D' || c >= 'F' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +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: @@ -862,10 +960,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'R': -goto yystate76 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Q' || c >= 'S' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +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: @@ -873,10 +973,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'M': -goto yystate77 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'L' || c >= 'N' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +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: @@ -884,10 +986,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'A': -goto yystate78 -case c >= '0' && c <= ':' || c >= 'B' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +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: @@ -895,10 +999,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'N': -goto yystate79 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'M' || c >= 'O' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +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: @@ -906,10 +1012,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'E': -goto yystate80 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'D' || c >= 'F' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +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: @@ -917,10 +1025,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'N': -goto yystate81 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'M' || c >= 'O' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +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: @@ -928,30 +1038,36 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'T': -goto yystate82 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'S' || c >= 'U' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +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 yyrule11 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +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 yyrule21 -case c == 'U': -goto yystate84 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'T' || c >= 'V' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +goto yyrule11 +case c == ':': goto yystate23 +case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +goto yystate27 } yystate84: @@ -959,32 +1075,38 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'M': -goto yystate85 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'L' || c >= 'N' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +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 yyrule14 +goto yyrule21 +case c == ':': +goto yystate23 case c == 'M': goto yystate86 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'L' || c >= 'N' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': -goto yystate23 +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 yyrule21 -case c == 'A': -goto yystate87 -case c >= '0' && c <= ':' || c >= 'B' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +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: @@ -992,10 +1114,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'R': -goto yystate88 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Q' || c >= 'S' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +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: @@ -1003,30 +1127,36 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'Y': -goto yystate89 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'X' || c == 'Z' || c == '_' || c >= 'a' && c <= 'z': +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 yyrule9 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +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 yyrule21 -case c == 'I': -goto yystate91 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'H' || c >= 'J' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +goto yyrule9 +case c == ':': goto yystate23 +case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +goto yystate27 } yystate91: @@ -1034,10 +1164,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'T': -goto yystate92 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'S' || c >= 'U' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +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: @@ -1045,34 +1177,36 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'H': -goto yystate93 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'G' || c >= 'I' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +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 yyrule8 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +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 yyrule21 -case c == 'l': -goto yystate95 -case c == 'n': -goto yystate98 -case c == 'v': -goto yystate99 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'k' || c == 'm' || c >= 'o' && c <= 'u' || c >= 'w' && c <= 'z': +goto yyrule8 +case c == ':': goto yystate23 +case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +goto yystate27 } yystate95: @@ -1080,10 +1214,16 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'e': -goto yystate96 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'd' || c >= 'f' && c <= 'z': +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: @@ -1091,10 +1231,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'r': -goto yystate97 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'q' || c >= 's' && c <= 'z': +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: @@ -1102,10 +1244,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 't': -goto yystate30 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 's' || c >= 'u' && c <= 'z': +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: @@ -1113,10 +1257,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'd': -goto yystate32 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'c' || c >= 'e' && c <= 'z': +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: @@ -1124,30 +1270,36 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'g': -goto yystate100 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'f' || c >= 'h' && c <= 'z': +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 yyrule15 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +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 yyrule21 -case c == 'y': -goto yystate36 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'x' || c == 'z': +goto yyrule15 +case c == ':': goto yystate23 +case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z': +goto yystate27 } yystate102: @@ -1155,10 +1307,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'o': -goto yystate103 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'n' || c >= 'p' && c <= 'z': +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: @@ -1166,10 +1320,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'u': -goto yystate104 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 't' || c >= 'v' && c <= 'z': +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: @@ -1177,10 +1333,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'n': -goto yystate105 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'm' || c >= 'o' && c <= 'z': +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: @@ -1188,10 +1346,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 't': -goto yystate100 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 's' || c >= 'u' && c <= 'z': +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: @@ -1199,10 +1359,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'e': -goto yystate107 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'd' || c >= 'f' && c <= 'z': +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: @@ -1210,10 +1372,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 's': -goto yystate108 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'r' || c >= 't' && c <= 'z': +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: @@ -1221,10 +1385,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'c': -goto yystate109 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c == '_' || c == 'a' || c == 'b' || c >= 'd' && c <= 'z': +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: @@ -1232,10 +1398,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'r': -goto yystate110 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'q' || c >= 's' && c <= 'z': +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: @@ -1243,10 +1411,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'i': -goto yystate111 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'h' || c >= 'j' && c <= 'z': +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: @@ -1254,10 +1424,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'p': -goto yystate112 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'o' || c >= 'q' && c <= 'z': +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: @@ -1265,10 +1437,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 't': -goto yystate113 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 's' || c >= 'u' && c <= 'z': +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: @@ -1276,10 +1450,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'i': -goto yystate114 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'h' || c >= 'j' && c <= 'z': +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: @@ -1287,10 +1463,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'o': -goto yystate115 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'n' || c >= 'p' && c <= 'z': +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: @@ -1298,10 +1476,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'n': -goto yystate51 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'm' || c >= 'o' && c <= 'z': +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: @@ -1309,10 +1489,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'o': -goto yystate117 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'n' || c >= 'p' && c <= 'z': +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: @@ -1320,10 +1502,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'r': -goto yystate54 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'q' || c >= 's' && c <= 'z': +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: @@ -1331,10 +1515,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'f': -goto yystate56 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'e' || c >= 'g' && c <= 'z': +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: @@ -1342,10 +1528,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'e': -goto yystate120 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'd' || c >= 'f' && c <= 'z': +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: @@ -1353,10 +1541,12 @@ c = lexer.getChar() switch { default: goto yyrule21 +case c == ':': +goto yystate23 case c == 'e': goto yystate121 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'd' || c >= 'f' && c <= 'z': -goto yystate23 +case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'd' || c >= 'f' && c <= 'z': +goto yystate27 } yystate121: @@ -1364,10 +1554,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'p': -goto yystate122 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'o' || c >= 'q' && c <= 'z': +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: @@ -1375,10 +1567,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'i': -goto yystate123 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'h' || c >= 'j' && c <= 'z': +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: @@ -1386,10 +1580,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'n': -goto yystate124 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'm' || c >= 'o' && c <= 'z': +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: @@ -1397,10 +1593,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'g': -goto yystate125 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'f' || c >= 'h' && c <= 'z': +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: @@ -1408,10 +1606,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == '_': -goto yystate126 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c >= 'a' && c <= 'z': +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: @@ -1419,10 +1619,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'e': -goto yystate127 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'd' || c >= 'f' && c <= 'z': +case c == ':': goto yystate23 +case c == '_': +goto yystate127 +case c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c >= 'a' && c <= 'z': +goto yystate27 } yystate127: @@ -1430,10 +1632,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'x': -goto yystate128 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'w' || c == 'y' || c == 'z': +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: @@ -1441,10 +1645,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 't': -goto yystate129 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 's' || c >= 'u' && c <= 'z': +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: @@ -1452,10 +1658,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'r': -goto yystate130 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'q' || c >= 's' && c <= 'z': +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: @@ -1463,10 +1671,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'a': -goto yystate69 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'b' && c <= 'z': +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: @@ -1474,12 +1684,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'a': -goto yystate132 -case c == 'i': -goto yystate133 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'b' && c <= 'h' || c >= 'j' && c <= 'z': +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: @@ -1487,10 +1697,14 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'x': -goto yystate100 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'w' || c == 'y' || c == 'z': +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: @@ -1498,10 +1712,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'n': -goto yystate100 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'm' || c >= 'o' && c <= 'z': +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: @@ -1509,10 +1725,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'r': -goto yystate32 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'q' || c >= 's' && c <= 'z': +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: @@ -1520,10 +1738,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'e': -goto yystate136 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'd' || c >= 'f' && c <= 'z': +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: @@ -1531,10 +1751,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'r': -goto yystate137 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'q' || c >= 's' && c <= 'z': +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: @@ -1542,10 +1764,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'm': -goto yystate138 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'l' || c >= 'n' && c <= 'z': +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: @@ -1553,10 +1777,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'a': -goto yystate139 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'b' && c <= 'z': +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: @@ -1564,10 +1790,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'n': -goto yystate140 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'm' || c >= 'o' && c <= 'z': +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: @@ -1575,10 +1803,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'e': -goto yystate141 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'd' || c >= 'f' && c <= 'z': +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: @@ -1586,10 +1816,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'n': -goto yystate142 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'm' || c >= 'o' && c <= 'z': +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: @@ -1597,10 +1829,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 't': -goto yystate82 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 's' || c >= 'u' && c <= 'z': +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: @@ -1608,10 +1842,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'u': -goto yystate144 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 't' || c >= 'v' && c <= 'z': +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: @@ -1619,32 +1855,38 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'm': -goto yystate145 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'l' || c >= 'n' && c <= 'z': +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 yyrule15 +goto yyrule21 +case c == ':': +goto yystate23 case c == 'm': goto yystate146 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'l' || c >= 'n' && c <= 'z': -goto yystate23 +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 yyrule21 -case c == 'a': -goto yystate147 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'b' && c <= 'z': +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: @@ -1652,10 +1894,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'r': -goto yystate148 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'q' || c >= 's' && c <= 'z': +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: @@ -1663,10 +1907,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'y': -goto yystate89 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'x' || c == 'z': +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: @@ -1674,10 +1920,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'i': -goto yystate150 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'h' || c >= 'j' && c <= 'z': +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: @@ -1685,10 +1933,12 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 't': -goto yystate151 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 's' || c >= 'u' && c <= 'z': +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: @@ -1696,39 +1946,54 @@ c = lexer.getChar() switch { default: goto yyrule21 -case c == 'h': -goto yystate93 -case c >= '0' && c <= ':' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'g' || c >= 'i' && c <= 'z': +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 } -goto yystate152 // silence unused label error yystate152: c = lexer.getChar() -yystart152: +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 yystate154 +goto yystate155 case c >= '\x01' && c <= ')' || c >= '+' && c <= 'ΓΏ': -goto yystate153 +goto yystate154 } -yystate153: +yystate154: c = lexer.getChar() goto yyrule3 -yystate154: +yystate155: c = lexer.getChar() switch { default: goto yyrule3 case c == '/': -goto yystate155 +goto yystate156 } -yystate155: +yystate156: c = lexer.getChar() goto yyrule2 @@ -1828,7 +2093,12 @@ yyrule21: // {L}({L}|{D})* lval.str = lexer.token(); return IDENTIFIER goto yystate0 } -yyrule22: // \-?{D}+(\.{D}*)? +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) { @@ -1837,21 +2107,21 @@ yyrule22: // \-?{D}+(\.{D}*)? lval.num = clientmodel.SampleValue(num) return NUMBER } -yyrule23: // \"(\\.|[^\\"])*\" +yyrule24: // \"(\\.|[^\\"])*\" { lval.str = lexer.token()[1:len(lexer.token()) - 1]; return STRING goto yystate0 } -yyrule24: // \'(\\.|[^\\'])*\' +yyrule25: // \'(\\.|[^\\'])*\' { lval.str = lexer.token()[1:len(lexer.token()) - 1]; return STRING goto yystate0 } -yyrule25: // [{}\[\]()=,] +yyrule26: // [{}\[\]()=,] { return int(lexer.buf[0]) } -yyrule26: // [\t\n\r ] +yyrule27: // [\t\n\r ] { /* gobble up any whitespace */ goto yystate0 diff --git a/rules/parser.y b/rules/parser.y index 5c83cf22fa..78573d5ac4 100644 --- a/rules/parser.y +++ b/rules/parser.y @@ -37,7 +37,7 @@ */ %token START_RULES START_EXPRESSION -%token IDENTIFIER STRING DURATION +%token IDENTIFIER STRING DURATION METRICNAME %token NUMBER %token PERMANENT GROUP_OP KEEPING_EXTRA %token AGGR_OP CMP_OP ADDITIVE_OP MULT_OP @@ -48,7 +48,7 @@ %type label_assign label_assign_list rule_labels %type rule_expr func_arg %type qualifier extra_labels_opts -%type for_duration +%type for_duration metric_name %right '=' %left CMP_OP @@ -69,7 +69,8 @@ saved_rule_expr : rule_expr { yylex.(*RulesLexer).parsedExpr = $1 } ; -rules_stat : qualifier IDENTIFIER rule_labels '=' rule_expr + +rules_stat : qualifier metric_name rule_labels '=' rule_expr { rule, err := CreateRecordingRule($2, $3, $5, $1) if err != nil { yylex.Error(err.Error()); return 1 } @@ -95,6 +96,12 @@ qualifier : /* empty */ { $$ = true } ; +metric_name : METRICNAME + { $$ = $1 } + | IDENTIFIER + { $$ = $1 } + ; + rule_labels : /* empty */ { $$ = clientmodel.LabelSet{} } | '{' label_assign_list '}' @@ -115,7 +122,7 @@ label_assign : IDENTIFIER '=' STRING rule_expr : '(' rule_expr ')' { $$ = $2 } - | IDENTIFIER rule_labels + | metric_name rule_labels { $2[clientmodel.MetricNameLabel] = clientmodel.LabelValue($1); $$ = ast.NewVectorSelector($2) } | IDENTIFIER '(' func_arg_list ')' { diff --git a/rules/parser.y.go b/rules/parser.y.go index a87dc096da..355d8ddebb 100644 --- a/rules/parser.y.go +++ b/rules/parser.y.go @@ -27,20 +27,21 @@ const START_EXPRESSION = 57347 const IDENTIFIER = 57348 const STRING = 57349 const DURATION = 57350 -const NUMBER = 57351 -const PERMANENT = 57352 -const GROUP_OP = 57353 -const KEEPING_EXTRA = 57354 -const AGGR_OP = 57355 -const CMP_OP = 57356 -const ADDITIVE_OP = 57357 -const MULT_OP = 57358 -const ALERT = 57359 -const IF = 57360 -const FOR = 57361 -const WITH = 57362 -const SUMMARY = 57363 -const DESCRIPTION = 57364 +const METRICNAME = 57351 +const NUMBER = 57352 +const PERMANENT = 57353 +const GROUP_OP = 57354 +const KEEPING_EXTRA = 57355 +const AGGR_OP = 57356 +const CMP_OP = 57357 +const ADDITIVE_OP = 57358 +const MULT_OP = 57359 +const ALERT = 57360 +const IF = 57361 +const FOR = 57362 +const WITH = 57363 +const SUMMARY = 57364 +const DESCRIPTION = 57365 var yyToknames = []string{ "START_RULES", @@ -48,6 +49,7 @@ var yyToknames = []string{ "IDENTIFIER", "STRING", "DURATION", + "METRICNAME", "NUMBER", "PERMANENT", "GROUP_OP", @@ -70,7 +72,7 @@ const yyEofCode = 1 const yyErrCode = 2 const yyMaxDepth = 200 -//line parser.y:197 +//line parser.y:204 //line yacctab:1 @@ -79,83 +81,83 @@ var yyExca = []int{ 1, -1, -2, 0, -1, 4, - 6, 10, - -2, 1, + 1, 1, + -2, 10, } -const yyNprod = 38 +const yyNprod = 40 const yyPrivate = 57344 var yyTokenNames []string var yyStates []string -const yyLast = 103 +const yyLast = 108 var yyAct = []int{ - 20, 38, 34, 17, 33, 43, 6, 18, 16, 17, - 19, 15, 59, 18, 16, 17, 15, 62, 23, 27, - 28, 29, 15, 46, 47, 41, 40, 49, 15, 22, - 8, 35, 69, 10, 68, 50, 45, 9, 44, 39, - 18, 16, 17, 48, 73, 51, 18, 16, 17, 53, - 52, 7, 32, 57, 30, 15, 8, 35, 37, 10, - 70, 15, 8, 9, 67, 10, 16, 17, 22, 9, - 61, 21, 63, 42, 14, 64, 56, 7, 26, 74, - 15, 13, 72, 7, 54, 71, 66, 39, 25, 24, - 2, 3, 11, 5, 4, 1, 58, 60, 12, 36, - 55, 65, 31, + 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, } var yyPact = []int{ - 86, -1000, -1000, 56, 64, -1000, 32, 56, 44, -9, - -1000, -1000, 83, 82, -1000, 70, 56, 56, 56, 26, - -1000, 24, 33, 56, 5, 55, -25, -13, -18, 51, - -1000, 10, -1000, -1000, 32, -1000, -2, -1000, -1000, 20, - -1, 12, 56, -1000, -1000, 50, -1000, 81, 77, 65, - 56, -7, -1000, -1000, -1000, 58, -10, 32, 52, 67, - -1000, -1000, 80, 5, -1000, 6, -1000, 39, -1000, 79, - 75, -1000, 22, 72, -1000, + 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, } var yyPgo = []int{ - 0, 102, 101, 100, 1, 99, 0, 2, 4, 98, - 97, 96, 95, 94, 93, 92, + 0, 107, 106, 105, 3, 104, 0, 2, 1, 103, + 102, 101, 77, 100, 99, 98, 97, } var yyR1 = []int{ - 0, 12, 12, 13, 13, 14, 15, 15, 11, 11, - 9, 9, 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, 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, } var yyR2 = []int{ 0, 2, 2, 0, 2, 1, 5, 11, 0, 2, - 0, 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, 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, } var yyChk = []int{ - -1000, -12, 4, 5, -13, -14, -7, 27, 6, 13, - 9, -15, -9, 17, 10, 29, 15, 16, 14, -7, - -6, 27, 24, 27, 6, 6, 8, -7, -7, -7, - 28, -1, 28, -8, -7, 7, -5, 25, -4, 6, - -7, -6, 18, 30, 28, 26, 25, 26, 23, 28, - 23, -7, -8, -4, 7, -3, 11, -7, -11, 19, - -10, 12, 27, 20, 8, -2, 6, -6, 28, 26, - 21, 6, 7, 22, 7, + -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, } var yyDef = []int{ - 0, -2, 3, 0, -2, 2, 5, 0, 12, 0, - 27, 4, 0, 0, 11, 0, 0, 0, 0, 0, - 19, 0, 0, 0, 12, 0, 0, 24, 25, 26, - 18, 0, 21, 34, 36, 37, 0, 14, 15, 0, - 0, 0, 0, 22, 20, 0, 13, 0, 0, 30, - 0, 8, 35, 16, 17, 28, 0, 6, 0, 0, - 23, 29, 0, 12, 9, 0, 32, 0, 31, 0, - 0, 33, 0, 0, 7, + 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, } var yyTok1 = []int{ @@ -163,21 +165,21 @@ var yyTok1 = []int{ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 27, 28, 3, 3, 26, 3, 3, 3, 3, 3, + 28, 29, 3, 3, 27, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 23, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 24, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 29, 3, 30, 3, 3, 3, 3, 3, 3, + 3, 30, 3, 31, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 24, 3, 25, + 3, 3, 3, 25, 3, 26, } var yyTok2 = []int{ 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, + 22, 23, } var yyTok3 = []int{ 0, @@ -412,136 +414,142 @@ yydefault: //line parser.y:69 { yylex.(*RulesLexer).parsedExpr = yyS[yypt-0].ruleNode } case 6: - //line parser.y:73 + //line parser.y:74 { 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:79 + //line parser.y:80 { 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:87 + //line parser.y:88 { yyVAL.str = "0s" } case 9: - //line parser.y:89 + //line parser.y:90 { yyVAL.str = yyS[yypt-0].str } case 10: - //line parser.y:93 + //line parser.y:94 { yyVAL.boolean = false } case 11: - //line parser.y:95 + //line parser.y:96 { yyVAL.boolean = true } case 12: - //line parser.y:99 - { yyVAL.labelSet = clientmodel.LabelSet{} } + //line parser.y:100 + { yyVAL.str = yyS[yypt-0].str } case 13: - //line parser.y:101 - { yyVAL.labelSet = yyS[yypt-1].labelSet } + //line parser.y:102 + { yyVAL.str = yyS[yypt-0].str } case 14: - //line parser.y:103 + //line parser.y:106 { yyVAL.labelSet = clientmodel.LabelSet{} } case 15: - //line parser.y:106 - { yyVAL.labelSet = yyS[yypt-0].labelSet } - case 16: //line parser.y:108 - { for k, v := range yyS[yypt-0].labelSet { yyVAL.labelSet[k] = v } } + { yyVAL.labelSet = yyS[yypt-1].labelSet } + case 16: + //line parser.y:110 + { yyVAL.labelSet = clientmodel.LabelSet{} } case 17: - //line parser.y:112 - { yyVAL.labelSet = clientmodel.LabelSet{ clientmodel.LabelName(yyS[yypt-2].str): clientmodel.LabelValue(yyS[yypt-0].str) } } + //line parser.y:113 + { yyVAL.labelSet = yyS[yypt-0].labelSet } case 18: - //line parser.y:117 - { yyVAL.ruleNode = yyS[yypt-1].ruleNode } + //line parser.y:115 + { for k, v := range yyS[yypt-0].labelSet { yyVAL.labelSet[k] = v } } case 19: //line parser.y:119 - { yyS[yypt-0].labelSet[clientmodel.MetricNameLabel] = clientmodel.LabelValue(yyS[yypt-1].str); yyVAL.ruleNode = ast.NewVectorSelector(yyS[yypt-0].labelSet) } + { yyVAL.labelSet = clientmodel.LabelSet{ clientmodel.LabelName(yyS[yypt-2].str): clientmodel.LabelValue(yyS[yypt-0].str) } } case 20: - //line parser.y:121 + //line parser.y:124 + { yyVAL.ruleNode = yyS[yypt-1].ruleNode } + 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) } + case 22: + //line parser.y:128 { 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 21: - //line parser.y:127 + case 23: + //line parser.y:134 { var err error yyVAL.ruleNode, err = NewFunctionCall(yyS[yypt-2].str, []ast.Node{}) if err != nil { yylex.Error(err.Error()); return 1 } } - case 22: - //line parser.y:133 + case 24: + //line parser.y:140 { 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 23: - //line parser.y:139 + case 25: + //line parser.y:146 { 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 24: - //line parser.y:147 - { - 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 25: - //line parser.y:153 - { - 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 26: - //line parser.y:159 + //line parser.y:154 { 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:165 - { yyVAL.ruleNode = ast.NewScalarLiteral(yyS[yypt-0].num)} + //line parser.y:160 + { + 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:169 - { yyVAL.boolean = false } + //line parser.y:166 + { + 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:171 - { yyVAL.boolean = true } + //line parser.y:172 + { yyVAL.ruleNode = ast.NewScalarLiteral(yyS[yypt-0].num)} case 30: - //line parser.y:175 - { yyVAL.labelNameSlice = clientmodel.LabelNames{} } + //line parser.y:176 + { yyVAL.boolean = false } case 31: - //line parser.y:177 - { yyVAL.labelNameSlice = yyS[yypt-1].labelNameSlice } + //line parser.y:178 + { yyVAL.boolean = true } case 32: - //line parser.y:181 - { yyVAL.labelNameSlice = clientmodel.LabelNames{clientmodel.LabelName(yyS[yypt-0].str)} } + //line parser.y:182 + { yyVAL.labelNameSlice = clientmodel.LabelNames{} } case 33: - //line parser.y:183 - { yyVAL.labelNameSlice = append(yyVAL.labelNameSlice, clientmodel.LabelName(yyS[yypt-0].str)) } + //line parser.y:184 + { yyVAL.labelNameSlice = yyS[yypt-1].labelNameSlice } case 34: - //line parser.y:187 - { yyVAL.ruleNodeSlice = []ast.Node{yyS[yypt-0].ruleNode} } + //line parser.y:188 + { yyVAL.labelNameSlice = clientmodel.LabelNames{clientmodel.LabelName(yyS[yypt-0].str)} } case 35: - //line parser.y:189 - { yyVAL.ruleNodeSlice = append(yyVAL.ruleNodeSlice, yyS[yypt-0].ruleNode) } + //line parser.y:190 + { yyVAL.labelNameSlice = append(yyVAL.labelNameSlice, clientmodel.LabelName(yyS[yypt-0].str)) } case 36: - //line parser.y:193 - { yyVAL.ruleNode = yyS[yypt-0].ruleNode } + //line parser.y:194 + { yyVAL.ruleNodeSlice = []ast.Node{yyS[yypt-0].ruleNode} } case 37: - //line parser.y:195 + //line parser.y:196 + { yyVAL.ruleNodeSlice = append(yyVAL.ruleNodeSlice, yyS[yypt-0].ruleNode) } + case 38: + //line parser.y:200 + { yyVAL.ruleNode = yyS[yypt-0].ruleNode } + case 39: + //line parser.y:202 { yyVAL.ruleNode = ast.NewStringLiteral(yyS[yypt-0].str) } } goto yystack /* stack new state and value */