github.com/apex/up@v1.7.1/internal/logs/parser/grammar.peg.go (about) 1 package parser 2 3 // Code generated by peg -inline -switch grammar.peg DO NOT EDIT 4 5 import ( 6 "fmt" 7 "github.com/apex/up/internal/logs/parser/ast" 8 "io" 9 "os" 10 "sort" 11 "strconv" 12 ) 13 14 const endSymbol rune = 1114112 15 16 /* The rule types inferred from the grammar are below. */ 17 type pegRule uint8 18 19 const ( 20 ruleUnknown pegRule = iota 21 ruleQuery 22 rulePrimaryExpr 23 ruleTupleExpr 24 ruleInExpr 25 ruleNotInExpr 26 rulePostfixExpr 27 ruleUnaryExpr 28 ruleRelationalExpr 29 ruleEqualityExpr 30 ruleLogicalAndExpr 31 ruleLogicalOrExpr 32 ruleLowNotExpr 33 ruleExpr 34 ruleString 35 ruleStringChar 36 ruleUnquotedString 37 ruleUnquotedStringStartChar 38 ruleUnquotedStringChar 39 ruleEscape 40 ruleSimpleEscape 41 ruleOctalEscape 42 ruleHexEscape 43 ruleUniversalCharacter 44 ruleHexQuad 45 ruleHexDigit 46 ruleNumbers 47 ruleNumber 48 ruleInteger 49 ruleFloat 50 ruleFraction 51 ruleExponent 52 ruleStage 53 ruleDEVELOPMENT 54 ruleSTAGING 55 rulePRODUCTION 56 ruleUnit 57 ruleDuration 58 ruleS 59 ruleMS 60 ruleBytes 61 ruleB 62 ruleKB 63 ruleMB 64 ruleGB 65 ruleId 66 ruleIdChar 67 ruleIdCharNoDigit 68 ruleSeverity 69 ruleIN 70 ruleOR 71 ruleAND 72 ruleNOT 73 ruleCONTAINS 74 ruleDEBUG 75 ruleINFO 76 ruleWARN 77 ruleERROR 78 ruleFATAL 79 ruleKeyword 80 ruleEQ 81 ruleLBRK 82 ruleRBRK 83 ruleLPAR 84 ruleRPAR 85 ruleDOT 86 ruleBANG 87 ruleLT 88 ruleGT 89 ruleLE 90 ruleEQEQ 91 ruleGE 92 ruleNE 93 ruleANDAND 94 ruleOROR 95 ruleCOMMA 96 rule_ 97 ruleWhitespace 98 ruleEOL 99 ruleEOF 100 ruleAction0 101 ruleAction1 102 ruleAction2 103 ruleAction3 104 ruleAction4 105 ruleAction5 106 ruleAction6 107 ruleAction7 108 ruleAction8 109 ruleAction9 110 ruleAction10 111 ruleAction11 112 ruleAction12 113 ruleAction13 114 ruleAction14 115 ruleAction15 116 ruleAction16 117 ruleAction17 118 ruleAction18 119 ruleAction19 120 ruleAction20 121 ruleAction21 122 ruleAction22 123 ruleAction23 124 ruleAction24 125 ruleAction25 126 ruleAction26 127 ruleAction27 128 ruleAction28 129 ruleAction29 130 ruleAction30 131 rulePegText 132 ruleAction31 133 ) 134 135 var rul3s = [...]string{ 136 "Unknown", 137 "Query", 138 "PrimaryExpr", 139 "TupleExpr", 140 "InExpr", 141 "NotInExpr", 142 "PostfixExpr", 143 "UnaryExpr", 144 "RelationalExpr", 145 "EqualityExpr", 146 "LogicalAndExpr", 147 "LogicalOrExpr", 148 "LowNotExpr", 149 "Expr", 150 "String", 151 "StringChar", 152 "UnquotedString", 153 "UnquotedStringStartChar", 154 "UnquotedStringChar", 155 "Escape", 156 "SimpleEscape", 157 "OctalEscape", 158 "HexEscape", 159 "UniversalCharacter", 160 "HexQuad", 161 "HexDigit", 162 "Numbers", 163 "Number", 164 "Integer", 165 "Float", 166 "Fraction", 167 "Exponent", 168 "Stage", 169 "DEVELOPMENT", 170 "STAGING", 171 "PRODUCTION", 172 "Unit", 173 "Duration", 174 "S", 175 "MS", 176 "Bytes", 177 "B", 178 "KB", 179 "MB", 180 "GB", 181 "Id", 182 "IdChar", 183 "IdCharNoDigit", 184 "Severity", 185 "IN", 186 "OR", 187 "AND", 188 "NOT", 189 "CONTAINS", 190 "DEBUG", 191 "INFO", 192 "WARN", 193 "ERROR", 194 "FATAL", 195 "Keyword", 196 "EQ", 197 "LBRK", 198 "RBRK", 199 "LPAR", 200 "RPAR", 201 "DOT", 202 "BANG", 203 "LT", 204 "GT", 205 "LE", 206 "EQEQ", 207 "GE", 208 "NE", 209 "ANDAND", 210 "OROR", 211 "COMMA", 212 "_", 213 "Whitespace", 214 "EOL", 215 "EOF", 216 "Action0", 217 "Action1", 218 "Action2", 219 "Action3", 220 "Action4", 221 "Action5", 222 "Action6", 223 "Action7", 224 "Action8", 225 "Action9", 226 "Action10", 227 "Action11", 228 "Action12", 229 "Action13", 230 "Action14", 231 "Action15", 232 "Action16", 233 "Action17", 234 "Action18", 235 "Action19", 236 "Action20", 237 "Action21", 238 "Action22", 239 "Action23", 240 "Action24", 241 "Action25", 242 "Action26", 243 "Action27", 244 "Action28", 245 "Action29", 246 "Action30", 247 "PegText", 248 "Action31", 249 } 250 251 type token32 struct { 252 pegRule 253 begin, end uint32 254 } 255 256 func (t *token32) String() string { 257 return fmt.Sprintf("\x1B[34m%v\x1B[m %v %v", rul3s[t.pegRule], t.begin, t.end) 258 } 259 260 type node32 struct { 261 token32 262 up, next *node32 263 } 264 265 func (node *node32) print(w io.Writer, pretty bool, buffer string) { 266 var print func(node *node32, depth int) 267 print = func(node *node32, depth int) { 268 for node != nil { 269 for c := 0; c < depth; c++ { 270 fmt.Fprintf(w, " ") 271 } 272 rule := rul3s[node.pegRule] 273 quote := strconv.Quote(string(([]rune(buffer)[node.begin:node.end]))) 274 if !pretty { 275 fmt.Fprintf(w, "%v %v\n", rule, quote) 276 } else { 277 fmt.Fprintf(w, "\x1B[34m%v\x1B[m %v\n", rule, quote) 278 } 279 if node.up != nil { 280 print(node.up, depth+1) 281 } 282 node = node.next 283 } 284 } 285 print(node, 0) 286 } 287 288 func (node *node32) Print(w io.Writer, buffer string) { 289 node.print(w, false, buffer) 290 } 291 292 func (node *node32) PrettyPrint(w io.Writer, buffer string) { 293 node.print(w, true, buffer) 294 } 295 296 type tokens32 struct { 297 tree []token32 298 } 299 300 func (t *tokens32) Trim(length uint32) { 301 t.tree = t.tree[:length] 302 } 303 304 func (t *tokens32) Print() { 305 for _, token := range t.tree { 306 fmt.Println(token.String()) 307 } 308 } 309 310 func (t *tokens32) AST() *node32 { 311 type element struct { 312 node *node32 313 down *element 314 } 315 tokens := t.Tokens() 316 var stack *element 317 for _, token := range tokens { 318 if token.begin == token.end { 319 continue 320 } 321 node := &node32{token32: token} 322 for stack != nil && stack.node.begin >= token.begin && stack.node.end <= token.end { 323 stack.node.next = node.up 324 node.up = stack.node 325 stack = stack.down 326 } 327 stack = &element{node: node, down: stack} 328 } 329 if stack != nil { 330 return stack.node 331 } 332 return nil 333 } 334 335 func (t *tokens32) PrintSyntaxTree(buffer string) { 336 t.AST().Print(os.Stdout, buffer) 337 } 338 339 func (t *tokens32) WriteSyntaxTree(w io.Writer, buffer string) { 340 t.AST().Print(w, buffer) 341 } 342 343 func (t *tokens32) PrettyPrintSyntaxTree(buffer string) { 344 t.AST().PrettyPrint(os.Stdout, buffer) 345 } 346 347 func (t *tokens32) Add(rule pegRule, begin, end, index uint32) { 348 tree, i := t.tree, int(index) 349 if i >= len(tree) { 350 t.tree = append(tree, token32{pegRule: rule, begin: begin, end: end}) 351 return 352 } 353 tree[i] = token32{pegRule: rule, begin: begin, end: end} 354 } 355 356 func (t *tokens32) Tokens() []token32 { 357 return t.tree 358 } 359 360 type parser struct { 361 stack []ast.Node 362 number string 363 364 Buffer string 365 buffer []rune 366 rules [113]func() bool 367 parse func(rule ...int) error 368 reset func() 369 Pretty bool 370 tokens32 371 } 372 373 func (p *parser) Parse(rule ...int) error { 374 return p.parse(rule...) 375 } 376 377 func (p *parser) Reset() { 378 p.reset() 379 } 380 381 type textPosition struct { 382 line, symbol int 383 } 384 385 type textPositionMap map[int]textPosition 386 387 func translatePositions(buffer []rune, positions []int) textPositionMap { 388 length, translations, j, line, symbol := len(positions), make(textPositionMap, len(positions)), 0, 1, 0 389 sort.Ints(positions) 390 391 search: 392 for i, c := range buffer { 393 if c == '\n' { 394 line, symbol = line+1, 0 395 } else { 396 symbol++ 397 } 398 if i == positions[j] { 399 translations[positions[j]] = textPosition{line, symbol} 400 for j++; j < length; j++ { 401 if i != positions[j] { 402 continue search 403 } 404 } 405 break search 406 } 407 } 408 409 return translations 410 } 411 412 type parseError struct { 413 p *parser 414 max token32 415 } 416 417 func (e *parseError) Error() string { 418 tokens, err := []token32{e.max}, "\n" 419 positions, p := make([]int, 2*len(tokens)), 0 420 for _, token := range tokens { 421 positions[p], p = int(token.begin), p+1 422 positions[p], p = int(token.end), p+1 423 } 424 translations := translatePositions(e.p.buffer, positions) 425 format := "parse error near %v (line %v symbol %v - line %v symbol %v):\n%v\n" 426 if e.p.Pretty { 427 format = "parse error near \x1B[34m%v\x1B[m (line %v symbol %v - line %v symbol %v):\n%v\n" 428 } 429 for _, token := range tokens { 430 begin, end := int(token.begin), int(token.end) 431 err += fmt.Sprintf(format, 432 rul3s[token.pegRule], 433 translations[begin].line, translations[begin].symbol, 434 translations[end].line, translations[end].symbol, 435 strconv.Quote(string(e.p.buffer[begin:end]))) 436 } 437 438 return err 439 } 440 441 func (p *parser) PrintSyntaxTree() { 442 if p.Pretty { 443 p.tokens32.PrettyPrintSyntaxTree(p.Buffer) 444 } else { 445 p.tokens32.PrintSyntaxTree(p.Buffer) 446 } 447 } 448 449 func (p *parser) WriteSyntaxTree(w io.Writer) { 450 p.tokens32.WriteSyntaxTree(w, p.Buffer) 451 } 452 453 func (p *parser) Execute() { 454 buffer, _buffer, text, begin, end := p.Buffer, p.buffer, "", 0, 0 455 for _, token := range p.Tokens() { 456 switch token.pegRule { 457 458 case rulePegText: 459 begin, end = int(token.begin), int(token.end) 460 text = string(_buffer[begin:end]) 461 462 case ruleAction0: 463 p.AddNumber(text) 464 case ruleAction1: 465 p.AddNumber("") 466 case ruleAction2: 467 p.AddLevel(text) 468 case ruleAction3: 469 p.AddStage(text) 470 case ruleAction4: 471 p.AddField(text) 472 case ruleAction5: 473 p.AddString(text) 474 case ruleAction6: 475 p.AddString(text) 476 case ruleAction7: 477 p.AddExpr() 478 case ruleAction8: 479 p.AddTupleValue() 480 case ruleAction9: 481 p.AddTupleValue() 482 case ruleAction10: 483 p.AddTuple() 484 case ruleAction11: 485 p.AddBinary(ast.IN) 486 case ruleAction12: 487 p.AddTuple() 488 case ruleAction13: 489 p.AddBinary(ast.IN) 490 p.AddUnary(ast.LNOT) 491 case ruleAction14: 492 p.AddMember(text) 493 case ruleAction15: 494 p.AddSubscript(text) 495 case ruleAction16: 496 p.AddUnary(ast.NOT) 497 case ruleAction17: 498 p.AddBinary(ast.GE) 499 case ruleAction18: 500 p.AddBinary(ast.GT) 501 case ruleAction19: 502 p.AddBinary(ast.LE) 503 case ruleAction20: 504 p.AddBinary(ast.LT) 505 case ruleAction21: 506 p.AddBinary(ast.EQ) 507 case ruleAction22: 508 p.AddBinary(ast.NE) 509 case ruleAction23: 510 p.AddBinary(ast.EQ) 511 case ruleAction24: 512 p.AddBinaryContains() 513 case ruleAction25: 514 p.AddBinary(ast.AND) 515 case ruleAction26: 516 p.AddBinary(ast.AND) 517 case ruleAction27: 518 p.AddBinary(ast.AND) 519 case ruleAction28: 520 p.AddBinary(ast.OR) 521 case ruleAction29: 522 p.AddBinary(ast.OR) 523 case ruleAction30: 524 p.AddUnary(ast.LNOT) 525 case ruleAction31: 526 p.SetNumber(text) 527 528 } 529 } 530 _, _, _, _, _ = buffer, _buffer, text, begin, end 531 } 532 533 func Pretty(pretty bool) func(*parser) error { 534 return func(p *parser) error { 535 p.Pretty = pretty 536 return nil 537 } 538 } 539 540 func Size(size int) func(*parser) error { 541 return func(p *parser) error { 542 p.tokens32 = tokens32{tree: make([]token32, 0, size)} 543 return nil 544 } 545 } 546 func (p *parser) Init(options ...func(*parser) error) error { 547 var ( 548 max token32 549 position, tokenIndex uint32 550 buffer []rune 551 ) 552 for _, option := range options { 553 err := option(p) 554 if err != nil { 555 return err 556 } 557 } 558 p.reset = func() { 559 max = token32{} 560 position, tokenIndex = 0, 0 561 562 p.buffer = []rune(p.Buffer) 563 if len(p.buffer) == 0 || p.buffer[len(p.buffer)-1] != endSymbol { 564 p.buffer = append(p.buffer, endSymbol) 565 } 566 buffer = p.buffer 567 } 568 p.reset() 569 570 _rules := p.rules 571 tree := p.tokens32 572 p.parse = func(rule ...int) error { 573 r := 1 574 if len(rule) > 0 { 575 r = rule[0] 576 } 577 matches := p.rules[r]() 578 p.tokens32 = tree 579 if matches { 580 p.Trim(tokenIndex) 581 return nil 582 } 583 return &parseError{p, max} 584 } 585 586 add := func(rule pegRule, begin uint32) { 587 tree.Add(rule, begin, position, tokenIndex) 588 tokenIndex++ 589 if begin != position && position > max.end { 590 max = token32{rule, begin, position} 591 } 592 } 593 594 matchDot := func() bool { 595 if buffer[position] != endSymbol { 596 position++ 597 return true 598 } 599 return false 600 } 601 602 /*matchChar := func(c byte) bool { 603 if buffer[position] == c { 604 position++ 605 return true 606 } 607 return false 608 }*/ 609 610 /*matchRange := func(lower byte, upper byte) bool { 611 if c := buffer[position]; c >= lower && c <= upper { 612 position++ 613 return true 614 } 615 return false 616 }*/ 617 618 _rules = [...]func() bool{ 619 nil, 620 /* 0 Query <- <(_ Expr _ EOF)> */ 621 func() bool { 622 position0, tokenIndex0 := position, tokenIndex 623 { 624 position1 := position 625 if !_rules[rule_]() { 626 goto l0 627 } 628 if !_rules[ruleExpr]() { 629 goto l0 630 } 631 if !_rules[rule_]() { 632 goto l0 633 } 634 { 635 position2 := position 636 { 637 position3, tokenIndex3 := position, tokenIndex 638 if !matchDot() { 639 goto l3 640 } 641 goto l0 642 l3: 643 position, tokenIndex = position3, tokenIndex3 644 } 645 add(ruleEOF, position2) 646 } 647 add(ruleQuery, position1) 648 } 649 return true 650 l0: 651 position, tokenIndex = position0, tokenIndex0 652 return false 653 }, 654 /* 1 PrimaryExpr <- <((Numbers Unit _ Action0) / (Severity Action2) / (Stage Action3) / (Id Action4) / ((&('(') (LPAR Expr RPAR Action7)) | (&('"') (String Action5)) | (&('\t' | '\n' | '\r' | ' ' | '.' | '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9') (Numbers _ Action1)) | (&('/' | 'A' | 'B' | 'C' | 'D' | 'E' | 'F' | 'G' | 'H' | 'I' | 'J' | 'K' | 'L' | 'M' | 'N' | 'O' | 'P' | 'Q' | 'R' | 'S' | 'T' | 'U' | 'V' | 'W' | 'X' | 'Y' | 'Z' | '_' | 'a' | 'b' | 'c' | 'd' | 'e' | 'f' | 'g' | 'h' | 'i' | 'j' | 'k' | 'l' | 'm' | 'n' | 'o' | 'p' | 'q' | 'r' | 's' | 't' | 'u' | 'v' | 'w' | 'x' | 'y' | 'z') (UnquotedString Action6))))> */ 655 nil, 656 /* 2 TupleExpr <- <(LPAR Expr Action8 (COMMA Expr Action9)* RPAR)> */ 657 func() bool { 658 position5, tokenIndex5 := position, tokenIndex 659 { 660 position6 := position 661 if !_rules[ruleLPAR]() { 662 goto l5 663 } 664 if !_rules[ruleExpr]() { 665 goto l5 666 } 667 { 668 add(ruleAction8, position) 669 } 670 l8: 671 { 672 position9, tokenIndex9 := position, tokenIndex 673 { 674 position10 := position 675 if buffer[position] != rune(',') { 676 goto l9 677 } 678 position++ 679 if !_rules[rule_]() { 680 goto l9 681 } 682 add(ruleCOMMA, position10) 683 } 684 if !_rules[ruleExpr]() { 685 goto l9 686 } 687 { 688 add(ruleAction9, position) 689 } 690 goto l8 691 l9: 692 position, tokenIndex = position9, tokenIndex9 693 } 694 if !_rules[ruleRPAR]() { 695 goto l5 696 } 697 add(ruleTupleExpr, position6) 698 } 699 return true 700 l5: 701 position, tokenIndex = position5, tokenIndex5 702 return false 703 }, 704 /* 3 InExpr <- <(IN Action10 TupleExpr Action11)> */ 705 nil, 706 /* 4 NotInExpr <- <(NOT IN Action12 TupleExpr Action13)> */ 707 nil, 708 /* 5 PostfixExpr <- <(PrimaryExpr ((&('n') NotInExpr) | (&('i') InExpr) | (&('[') (LBRK Number _ RBRK Action15)) | (&('.') (DOT Id Action14)))*)> */ 709 nil, 710 /* 6 UnaryExpr <- <(PostfixExpr / (BANG RelationalExpr Action16))> */ 711 func() bool { 712 position15, tokenIndex15 := position, tokenIndex 713 { 714 position16 := position 715 { 716 position17, tokenIndex17 := position, tokenIndex 717 { 718 position19 := position 719 { 720 position20 := position 721 { 722 position21, tokenIndex21 := position, tokenIndex 723 if !_rules[ruleNumbers]() { 724 goto l22 725 } 726 { 727 position23 := position 728 { 729 position24, tokenIndex24 := position, tokenIndex 730 { 731 position26 := position 732 { 733 switch buffer[position] { 734 case 'g': 735 { 736 position28 := position 737 { 738 position29 := position 739 if buffer[position] != rune('g') { 740 goto l25 741 } 742 position++ 743 if buffer[position] != rune('b') { 744 goto l25 745 } 746 position++ 747 add(rulePegText, position29) 748 } 749 { 750 position30, tokenIndex30 := position, tokenIndex 751 if !_rules[ruleIdChar]() { 752 goto l30 753 } 754 goto l25 755 l30: 756 position, tokenIndex = position30, tokenIndex30 757 } 758 if !_rules[rule_]() { 759 goto l25 760 } 761 add(ruleGB, position28) 762 } 763 break 764 case 'm': 765 { 766 position31 := position 767 { 768 position32 := position 769 if buffer[position] != rune('m') { 770 goto l25 771 } 772 position++ 773 if buffer[position] != rune('b') { 774 goto l25 775 } 776 position++ 777 add(rulePegText, position32) 778 } 779 { 780 position33, tokenIndex33 := position, tokenIndex 781 if !_rules[ruleIdChar]() { 782 goto l33 783 } 784 goto l25 785 l33: 786 position, tokenIndex = position33, tokenIndex33 787 } 788 if !_rules[rule_]() { 789 goto l25 790 } 791 add(ruleMB, position31) 792 } 793 break 794 case 'k': 795 { 796 position34 := position 797 { 798 position35 := position 799 if buffer[position] != rune('k') { 800 goto l25 801 } 802 position++ 803 if buffer[position] != rune('b') { 804 goto l25 805 } 806 position++ 807 add(rulePegText, position35) 808 } 809 { 810 position36, tokenIndex36 := position, tokenIndex 811 if !_rules[ruleIdChar]() { 812 goto l36 813 } 814 goto l25 815 l36: 816 position, tokenIndex = position36, tokenIndex36 817 } 818 if !_rules[rule_]() { 819 goto l25 820 } 821 add(ruleKB, position34) 822 } 823 break 824 default: 825 { 826 position37 := position 827 { 828 position38 := position 829 if buffer[position] != rune('b') { 830 goto l25 831 } 832 position++ 833 add(rulePegText, position38) 834 } 835 { 836 position39, tokenIndex39 := position, tokenIndex 837 if !_rules[ruleIdChar]() { 838 goto l39 839 } 840 goto l25 841 l39: 842 position, tokenIndex = position39, tokenIndex39 843 } 844 if !_rules[rule_]() { 845 goto l25 846 } 847 add(ruleB, position37) 848 } 849 break 850 } 851 } 852 853 add(ruleBytes, position26) 854 } 855 goto l24 856 l25: 857 position, tokenIndex = position24, tokenIndex24 858 { 859 position40 := position 860 { 861 position41, tokenIndex41 := position, tokenIndex 862 { 863 position43 := position 864 { 865 position44 := position 866 if buffer[position] != rune('s') { 867 goto l42 868 } 869 position++ 870 add(rulePegText, position44) 871 } 872 { 873 position45, tokenIndex45 := position, tokenIndex 874 if !_rules[ruleIdChar]() { 875 goto l45 876 } 877 goto l42 878 l45: 879 position, tokenIndex = position45, tokenIndex45 880 } 881 if !_rules[rule_]() { 882 goto l42 883 } 884 add(ruleS, position43) 885 } 886 goto l41 887 l42: 888 position, tokenIndex = position41, tokenIndex41 889 { 890 position46 := position 891 { 892 position47 := position 893 if buffer[position] != rune('m') { 894 goto l22 895 } 896 position++ 897 if buffer[position] != rune('s') { 898 goto l22 899 } 900 position++ 901 add(rulePegText, position47) 902 } 903 { 904 position48, tokenIndex48 := position, tokenIndex 905 if !_rules[ruleIdChar]() { 906 goto l48 907 } 908 goto l22 909 l48: 910 position, tokenIndex = position48, tokenIndex48 911 } 912 if !_rules[rule_]() { 913 goto l22 914 } 915 add(ruleMS, position46) 916 } 917 } 918 l41: 919 add(ruleDuration, position40) 920 } 921 } 922 l24: 923 add(ruleUnit, position23) 924 } 925 if !_rules[rule_]() { 926 goto l22 927 } 928 { 929 add(ruleAction0, position) 930 } 931 goto l21 932 l22: 933 position, tokenIndex = position21, tokenIndex21 934 { 935 position51 := position 936 { 937 switch buffer[position] { 938 case 'f': 939 { 940 position53 := position 941 { 942 position54 := position 943 if buffer[position] != rune('f') { 944 goto l50 945 } 946 position++ 947 if buffer[position] != rune('a') { 948 goto l50 949 } 950 position++ 951 if buffer[position] != rune('t') { 952 goto l50 953 } 954 position++ 955 if buffer[position] != rune('a') { 956 goto l50 957 } 958 position++ 959 if buffer[position] != rune('l') { 960 goto l50 961 } 962 position++ 963 add(rulePegText, position54) 964 } 965 { 966 position55, tokenIndex55 := position, tokenIndex 967 if !_rules[ruleIdChar]() { 968 goto l55 969 } 970 goto l50 971 l55: 972 position, tokenIndex = position55, tokenIndex55 973 } 974 if !_rules[rule_]() { 975 goto l50 976 } 977 add(ruleFATAL, position53) 978 } 979 break 980 case 'e': 981 { 982 position56 := position 983 { 984 position57 := position 985 if buffer[position] != rune('e') { 986 goto l50 987 } 988 position++ 989 if buffer[position] != rune('r') { 990 goto l50 991 } 992 position++ 993 if buffer[position] != rune('r') { 994 goto l50 995 } 996 position++ 997 if buffer[position] != rune('o') { 998 goto l50 999 } 1000 position++ 1001 if buffer[position] != rune('r') { 1002 goto l50 1003 } 1004 position++ 1005 add(rulePegText, position57) 1006 } 1007 { 1008 position58, tokenIndex58 := position, tokenIndex 1009 if !_rules[ruleIdChar]() { 1010 goto l58 1011 } 1012 goto l50 1013 l58: 1014 position, tokenIndex = position58, tokenIndex58 1015 } 1016 if !_rules[rule_]() { 1017 goto l50 1018 } 1019 add(ruleERROR, position56) 1020 } 1021 break 1022 case 'w': 1023 { 1024 position59 := position 1025 { 1026 position60 := position 1027 if buffer[position] != rune('w') { 1028 goto l50 1029 } 1030 position++ 1031 if buffer[position] != rune('a') { 1032 goto l50 1033 } 1034 position++ 1035 if buffer[position] != rune('r') { 1036 goto l50 1037 } 1038 position++ 1039 if buffer[position] != rune('n') { 1040 goto l50 1041 } 1042 position++ 1043 add(rulePegText, position60) 1044 } 1045 { 1046 position61, tokenIndex61 := position, tokenIndex 1047 if !_rules[ruleIdChar]() { 1048 goto l61 1049 } 1050 goto l50 1051 l61: 1052 position, tokenIndex = position61, tokenIndex61 1053 } 1054 if !_rules[rule_]() { 1055 goto l50 1056 } 1057 add(ruleWARN, position59) 1058 } 1059 break 1060 case 'i': 1061 { 1062 position62 := position 1063 { 1064 position63 := position 1065 if buffer[position] != rune('i') { 1066 goto l50 1067 } 1068 position++ 1069 if buffer[position] != rune('n') { 1070 goto l50 1071 } 1072 position++ 1073 if buffer[position] != rune('f') { 1074 goto l50 1075 } 1076 position++ 1077 if buffer[position] != rune('o') { 1078 goto l50 1079 } 1080 position++ 1081 add(rulePegText, position63) 1082 } 1083 { 1084 position64, tokenIndex64 := position, tokenIndex 1085 if !_rules[ruleIdChar]() { 1086 goto l64 1087 } 1088 goto l50 1089 l64: 1090 position, tokenIndex = position64, tokenIndex64 1091 } 1092 if !_rules[rule_]() { 1093 goto l50 1094 } 1095 add(ruleINFO, position62) 1096 } 1097 break 1098 default: 1099 { 1100 position65 := position 1101 { 1102 position66 := position 1103 if buffer[position] != rune('d') { 1104 goto l50 1105 } 1106 position++ 1107 if buffer[position] != rune('e') { 1108 goto l50 1109 } 1110 position++ 1111 if buffer[position] != rune('b') { 1112 goto l50 1113 } 1114 position++ 1115 if buffer[position] != rune('u') { 1116 goto l50 1117 } 1118 position++ 1119 if buffer[position] != rune('g') { 1120 goto l50 1121 } 1122 position++ 1123 add(rulePegText, position66) 1124 } 1125 { 1126 position67, tokenIndex67 := position, tokenIndex 1127 if !_rules[ruleIdChar]() { 1128 goto l67 1129 } 1130 goto l50 1131 l67: 1132 position, tokenIndex = position67, tokenIndex67 1133 } 1134 if !_rules[rule_]() { 1135 goto l50 1136 } 1137 add(ruleDEBUG, position65) 1138 } 1139 break 1140 } 1141 } 1142 1143 add(ruleSeverity, position51) 1144 } 1145 { 1146 add(ruleAction2, position) 1147 } 1148 goto l21 1149 l50: 1150 position, tokenIndex = position21, tokenIndex21 1151 { 1152 position70 := position 1153 { 1154 switch buffer[position] { 1155 case 'p': 1156 { 1157 position72 := position 1158 { 1159 position73 := position 1160 if buffer[position] != rune('p') { 1161 goto l69 1162 } 1163 position++ 1164 if buffer[position] != rune('r') { 1165 goto l69 1166 } 1167 position++ 1168 if buffer[position] != rune('o') { 1169 goto l69 1170 } 1171 position++ 1172 if buffer[position] != rune('d') { 1173 goto l69 1174 } 1175 position++ 1176 if buffer[position] != rune('u') { 1177 goto l69 1178 } 1179 position++ 1180 if buffer[position] != rune('c') { 1181 goto l69 1182 } 1183 position++ 1184 if buffer[position] != rune('t') { 1185 goto l69 1186 } 1187 position++ 1188 if buffer[position] != rune('i') { 1189 goto l69 1190 } 1191 position++ 1192 if buffer[position] != rune('o') { 1193 goto l69 1194 } 1195 position++ 1196 if buffer[position] != rune('n') { 1197 goto l69 1198 } 1199 position++ 1200 add(rulePegText, position73) 1201 } 1202 { 1203 position74, tokenIndex74 := position, tokenIndex 1204 if !_rules[ruleIdChar]() { 1205 goto l74 1206 } 1207 goto l69 1208 l74: 1209 position, tokenIndex = position74, tokenIndex74 1210 } 1211 if !_rules[rule_]() { 1212 goto l69 1213 } 1214 add(rulePRODUCTION, position72) 1215 } 1216 break 1217 case 's': 1218 { 1219 position75 := position 1220 { 1221 position76 := position 1222 if buffer[position] != rune('s') { 1223 goto l69 1224 } 1225 position++ 1226 if buffer[position] != rune('t') { 1227 goto l69 1228 } 1229 position++ 1230 if buffer[position] != rune('a') { 1231 goto l69 1232 } 1233 position++ 1234 if buffer[position] != rune('g') { 1235 goto l69 1236 } 1237 position++ 1238 if buffer[position] != rune('i') { 1239 goto l69 1240 } 1241 position++ 1242 if buffer[position] != rune('n') { 1243 goto l69 1244 } 1245 position++ 1246 if buffer[position] != rune('g') { 1247 goto l69 1248 } 1249 position++ 1250 add(rulePegText, position76) 1251 } 1252 { 1253 position77, tokenIndex77 := position, tokenIndex 1254 if !_rules[ruleIdChar]() { 1255 goto l77 1256 } 1257 goto l69 1258 l77: 1259 position, tokenIndex = position77, tokenIndex77 1260 } 1261 if !_rules[rule_]() { 1262 goto l69 1263 } 1264 add(ruleSTAGING, position75) 1265 } 1266 break 1267 default: 1268 { 1269 position78 := position 1270 { 1271 position79 := position 1272 if buffer[position] != rune('d') { 1273 goto l69 1274 } 1275 position++ 1276 if buffer[position] != rune('e') { 1277 goto l69 1278 } 1279 position++ 1280 if buffer[position] != rune('v') { 1281 goto l69 1282 } 1283 position++ 1284 if buffer[position] != rune('e') { 1285 goto l69 1286 } 1287 position++ 1288 if buffer[position] != rune('l') { 1289 goto l69 1290 } 1291 position++ 1292 if buffer[position] != rune('o') { 1293 goto l69 1294 } 1295 position++ 1296 if buffer[position] != rune('p') { 1297 goto l69 1298 } 1299 position++ 1300 if buffer[position] != rune('m') { 1301 goto l69 1302 } 1303 position++ 1304 if buffer[position] != rune('e') { 1305 goto l69 1306 } 1307 position++ 1308 if buffer[position] != rune('n') { 1309 goto l69 1310 } 1311 position++ 1312 if buffer[position] != rune('t') { 1313 goto l69 1314 } 1315 position++ 1316 add(rulePegText, position79) 1317 } 1318 { 1319 position80, tokenIndex80 := position, tokenIndex 1320 if !_rules[ruleIdChar]() { 1321 goto l80 1322 } 1323 goto l69 1324 l80: 1325 position, tokenIndex = position80, tokenIndex80 1326 } 1327 if !_rules[rule_]() { 1328 goto l69 1329 } 1330 add(ruleDEVELOPMENT, position78) 1331 } 1332 break 1333 } 1334 } 1335 1336 add(ruleStage, position70) 1337 } 1338 { 1339 add(ruleAction3, position) 1340 } 1341 goto l21 1342 l69: 1343 position, tokenIndex = position21, tokenIndex21 1344 if !_rules[ruleId]() { 1345 goto l82 1346 } 1347 { 1348 add(ruleAction4, position) 1349 } 1350 goto l21 1351 l82: 1352 position, tokenIndex = position21, tokenIndex21 1353 { 1354 switch buffer[position] { 1355 case '(': 1356 if !_rules[ruleLPAR]() { 1357 goto l18 1358 } 1359 if !_rules[ruleExpr]() { 1360 goto l18 1361 } 1362 if !_rules[ruleRPAR]() { 1363 goto l18 1364 } 1365 { 1366 add(ruleAction7, position) 1367 } 1368 break 1369 case '"': 1370 { 1371 position86 := position 1372 if buffer[position] != rune('"') { 1373 goto l18 1374 } 1375 position++ 1376 { 1377 position87 := position 1378 l88: 1379 { 1380 position89, tokenIndex89 := position, tokenIndex 1381 { 1382 position90 := position 1383 { 1384 position91, tokenIndex91 := position, tokenIndex 1385 { 1386 position93 := position 1387 { 1388 position94, tokenIndex94 := position, tokenIndex 1389 { 1390 position96 := position 1391 if buffer[position] != rune('\\') { 1392 goto l95 1393 } 1394 position++ 1395 { 1396 switch buffer[position] { 1397 case 'v': 1398 if buffer[position] != rune('v') { 1399 goto l95 1400 } 1401 position++ 1402 break 1403 case 't': 1404 if buffer[position] != rune('t') { 1405 goto l95 1406 } 1407 position++ 1408 break 1409 case 'r': 1410 if buffer[position] != rune('r') { 1411 goto l95 1412 } 1413 position++ 1414 break 1415 case 'n': 1416 if buffer[position] != rune('n') { 1417 goto l95 1418 } 1419 position++ 1420 break 1421 case 'f': 1422 if buffer[position] != rune('f') { 1423 goto l95 1424 } 1425 position++ 1426 break 1427 case 'b': 1428 if buffer[position] != rune('b') { 1429 goto l95 1430 } 1431 position++ 1432 break 1433 case 'a': 1434 if buffer[position] != rune('a') { 1435 goto l95 1436 } 1437 position++ 1438 break 1439 case '\\': 1440 if buffer[position] != rune('\\') { 1441 goto l95 1442 } 1443 position++ 1444 break 1445 case '?': 1446 if buffer[position] != rune('?') { 1447 goto l95 1448 } 1449 position++ 1450 break 1451 case '"': 1452 if buffer[position] != rune('"') { 1453 goto l95 1454 } 1455 position++ 1456 break 1457 default: 1458 if buffer[position] != rune('\'') { 1459 goto l95 1460 } 1461 position++ 1462 break 1463 } 1464 } 1465 1466 add(ruleSimpleEscape, position96) 1467 } 1468 goto l94 1469 l95: 1470 position, tokenIndex = position94, tokenIndex94 1471 { 1472 position99 := position 1473 if buffer[position] != rune('\\') { 1474 goto l98 1475 } 1476 position++ 1477 if c := buffer[position]; c < rune('0') || c > rune('7') { 1478 goto l98 1479 } 1480 position++ 1481 { 1482 position100, tokenIndex100 := position, tokenIndex 1483 if c := buffer[position]; c < rune('0') || c > rune('7') { 1484 goto l100 1485 } 1486 position++ 1487 goto l101 1488 l100: 1489 position, tokenIndex = position100, tokenIndex100 1490 } 1491 l101: 1492 { 1493 position102, tokenIndex102 := position, tokenIndex 1494 if c := buffer[position]; c < rune('0') || c > rune('7') { 1495 goto l102 1496 } 1497 position++ 1498 goto l103 1499 l102: 1500 position, tokenIndex = position102, tokenIndex102 1501 } 1502 l103: 1503 add(ruleOctalEscape, position99) 1504 } 1505 goto l94 1506 l98: 1507 position, tokenIndex = position94, tokenIndex94 1508 { 1509 position105 := position 1510 if buffer[position] != rune('\\') { 1511 goto l104 1512 } 1513 position++ 1514 if buffer[position] != rune('x') { 1515 goto l104 1516 } 1517 position++ 1518 if !_rules[ruleHexDigit]() { 1519 goto l104 1520 } 1521 l106: 1522 { 1523 position107, tokenIndex107 := position, tokenIndex 1524 if !_rules[ruleHexDigit]() { 1525 goto l107 1526 } 1527 goto l106 1528 l107: 1529 position, tokenIndex = position107, tokenIndex107 1530 } 1531 add(ruleHexEscape, position105) 1532 } 1533 goto l94 1534 l104: 1535 position, tokenIndex = position94, tokenIndex94 1536 { 1537 position108 := position 1538 { 1539 position109, tokenIndex109 := position, tokenIndex 1540 if buffer[position] != rune('\\') { 1541 goto l110 1542 } 1543 position++ 1544 if buffer[position] != rune('u') { 1545 goto l110 1546 } 1547 position++ 1548 if !_rules[ruleHexQuad]() { 1549 goto l110 1550 } 1551 goto l109 1552 l110: 1553 position, tokenIndex = position109, tokenIndex109 1554 if buffer[position] != rune('\\') { 1555 goto l92 1556 } 1557 position++ 1558 if buffer[position] != rune('U') { 1559 goto l92 1560 } 1561 position++ 1562 if !_rules[ruleHexQuad]() { 1563 goto l92 1564 } 1565 if !_rules[ruleHexQuad]() { 1566 goto l92 1567 } 1568 } 1569 l109: 1570 add(ruleUniversalCharacter, position108) 1571 } 1572 } 1573 l94: 1574 add(ruleEscape, position93) 1575 } 1576 goto l91 1577 l92: 1578 position, tokenIndex = position91, tokenIndex91 1579 { 1580 position111, tokenIndex111 := position, tokenIndex 1581 { 1582 switch buffer[position] { 1583 case '\\': 1584 if buffer[position] != rune('\\') { 1585 goto l111 1586 } 1587 position++ 1588 break 1589 case '\n': 1590 if buffer[position] != rune('\n') { 1591 goto l111 1592 } 1593 position++ 1594 break 1595 default: 1596 if buffer[position] != rune('"') { 1597 goto l111 1598 } 1599 position++ 1600 break 1601 } 1602 } 1603 1604 goto l89 1605 l111: 1606 position, tokenIndex = position111, tokenIndex111 1607 } 1608 if !matchDot() { 1609 goto l89 1610 } 1611 } 1612 l91: 1613 add(ruleStringChar, position90) 1614 } 1615 goto l88 1616 l89: 1617 position, tokenIndex = position89, tokenIndex89 1618 } 1619 add(rulePegText, position87) 1620 } 1621 if buffer[position] != rune('"') { 1622 goto l18 1623 } 1624 position++ 1625 if !_rules[rule_]() { 1626 goto l18 1627 } 1628 add(ruleString, position86) 1629 } 1630 { 1631 add(ruleAction5, position) 1632 } 1633 break 1634 case '\t', '\n', '\r', ' ', '.', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9': 1635 if !_rules[ruleNumbers]() { 1636 goto l18 1637 } 1638 if !_rules[rule_]() { 1639 goto l18 1640 } 1641 { 1642 add(ruleAction1, position) 1643 } 1644 break 1645 default: 1646 { 1647 position115 := position 1648 { 1649 position116, tokenIndex116 := position, tokenIndex 1650 if !_rules[ruleKeyword]() { 1651 goto l116 1652 } 1653 goto l18 1654 l116: 1655 position, tokenIndex = position116, tokenIndex116 1656 } 1657 { 1658 position117 := position 1659 { 1660 position118 := position 1661 { 1662 switch buffer[position] { 1663 case '/', '_': 1664 { 1665 position120, tokenIndex120 := position, tokenIndex 1666 if buffer[position] != rune('/') { 1667 goto l121 1668 } 1669 position++ 1670 goto l120 1671 l121: 1672 position, tokenIndex = position120, tokenIndex120 1673 if buffer[position] != rune('_') { 1674 goto l18 1675 } 1676 position++ 1677 } 1678 l120: 1679 break 1680 case 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z': 1681 if c := buffer[position]; c < rune('A') || c > rune('Z') { 1682 goto l18 1683 } 1684 position++ 1685 break 1686 default: 1687 if c := buffer[position]; c < rune('a') || c > rune('z') { 1688 goto l18 1689 } 1690 position++ 1691 break 1692 } 1693 } 1694 1695 add(ruleUnquotedStringStartChar, position118) 1696 } 1697 l122: 1698 { 1699 position123, tokenIndex123 := position, tokenIndex 1700 { 1701 position124 := position 1702 { 1703 switch buffer[position] { 1704 case '/', '_': 1705 { 1706 position126, tokenIndex126 := position, tokenIndex 1707 if buffer[position] != rune('/') { 1708 goto l127 1709 } 1710 position++ 1711 goto l126 1712 l127: 1713 position, tokenIndex = position126, tokenIndex126 1714 if buffer[position] != rune('_') { 1715 goto l123 1716 } 1717 position++ 1718 } 1719 l126: 1720 break 1721 case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9': 1722 if c := buffer[position]; c < rune('0') || c > rune('9') { 1723 goto l123 1724 } 1725 position++ 1726 break 1727 case 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z': 1728 if c := buffer[position]; c < rune('A') || c > rune('Z') { 1729 goto l123 1730 } 1731 position++ 1732 break 1733 default: 1734 if c := buffer[position]; c < rune('a') || c > rune('z') { 1735 goto l123 1736 } 1737 position++ 1738 break 1739 } 1740 } 1741 1742 add(ruleUnquotedStringChar, position124) 1743 } 1744 goto l122 1745 l123: 1746 position, tokenIndex = position123, tokenIndex123 1747 } 1748 add(rulePegText, position117) 1749 } 1750 if !_rules[rule_]() { 1751 goto l18 1752 } 1753 add(ruleUnquotedString, position115) 1754 } 1755 { 1756 add(ruleAction6, position) 1757 } 1758 break 1759 } 1760 } 1761 1762 } 1763 l21: 1764 add(rulePrimaryExpr, position20) 1765 } 1766 l129: 1767 { 1768 position130, tokenIndex130 := position, tokenIndex 1769 { 1770 switch buffer[position] { 1771 case 'n': 1772 { 1773 position132 := position 1774 if !_rules[ruleNOT]() { 1775 goto l130 1776 } 1777 if !_rules[ruleIN]() { 1778 goto l130 1779 } 1780 { 1781 add(ruleAction12, position) 1782 } 1783 if !_rules[ruleTupleExpr]() { 1784 goto l130 1785 } 1786 { 1787 add(ruleAction13, position) 1788 } 1789 add(ruleNotInExpr, position132) 1790 } 1791 break 1792 case 'i': 1793 { 1794 position135 := position 1795 if !_rules[ruleIN]() { 1796 goto l130 1797 } 1798 { 1799 add(ruleAction10, position) 1800 } 1801 if !_rules[ruleTupleExpr]() { 1802 goto l130 1803 } 1804 { 1805 add(ruleAction11, position) 1806 } 1807 add(ruleInExpr, position135) 1808 } 1809 break 1810 case '[': 1811 { 1812 position138 := position 1813 if buffer[position] != rune('[') { 1814 goto l130 1815 } 1816 position++ 1817 if !_rules[rule_]() { 1818 goto l130 1819 } 1820 add(ruleLBRK, position138) 1821 } 1822 if !_rules[ruleNumber]() { 1823 goto l130 1824 } 1825 if !_rules[rule_]() { 1826 goto l130 1827 } 1828 { 1829 position139 := position 1830 if buffer[position] != rune(']') { 1831 goto l130 1832 } 1833 position++ 1834 if !_rules[rule_]() { 1835 goto l130 1836 } 1837 add(ruleRBRK, position139) 1838 } 1839 { 1840 add(ruleAction15, position) 1841 } 1842 break 1843 default: 1844 { 1845 position141 := position 1846 if buffer[position] != rune('.') { 1847 goto l130 1848 } 1849 position++ 1850 if !_rules[rule_]() { 1851 goto l130 1852 } 1853 add(ruleDOT, position141) 1854 } 1855 if !_rules[ruleId]() { 1856 goto l130 1857 } 1858 { 1859 add(ruleAction14, position) 1860 } 1861 break 1862 } 1863 } 1864 1865 goto l129 1866 l130: 1867 position, tokenIndex = position130, tokenIndex130 1868 } 1869 add(rulePostfixExpr, position19) 1870 } 1871 goto l17 1872 l18: 1873 position, tokenIndex = position17, tokenIndex17 1874 { 1875 position143 := position 1876 if buffer[position] != rune('!') { 1877 goto l15 1878 } 1879 position++ 1880 { 1881 position144, tokenIndex144 := position, tokenIndex 1882 if buffer[position] != rune('=') { 1883 goto l144 1884 } 1885 position++ 1886 goto l15 1887 l144: 1888 position, tokenIndex = position144, tokenIndex144 1889 } 1890 if !_rules[rule_]() { 1891 goto l15 1892 } 1893 add(ruleBANG, position143) 1894 } 1895 if !_rules[ruleRelationalExpr]() { 1896 goto l15 1897 } 1898 { 1899 add(ruleAction16, position) 1900 } 1901 } 1902 l17: 1903 add(ruleUnaryExpr, position16) 1904 } 1905 return true 1906 l15: 1907 position, tokenIndex = position15, tokenIndex15 1908 return false 1909 }, 1910 /* 7 RelationalExpr <- <(UnaryExpr ((GE UnaryExpr Action17) / (GT UnaryExpr Action18) / (LE UnaryExpr Action19) / (LT UnaryExpr Action20))*)> */ 1911 func() bool { 1912 position146, tokenIndex146 := position, tokenIndex 1913 { 1914 position147 := position 1915 if !_rules[ruleUnaryExpr]() { 1916 goto l146 1917 } 1918 l148: 1919 { 1920 position149, tokenIndex149 := position, tokenIndex 1921 { 1922 position150, tokenIndex150 := position, tokenIndex 1923 { 1924 position152 := position 1925 if buffer[position] != rune('>') { 1926 goto l151 1927 } 1928 position++ 1929 if buffer[position] != rune('=') { 1930 goto l151 1931 } 1932 position++ 1933 if !_rules[rule_]() { 1934 goto l151 1935 } 1936 add(ruleGE, position152) 1937 } 1938 if !_rules[ruleUnaryExpr]() { 1939 goto l151 1940 } 1941 { 1942 add(ruleAction17, position) 1943 } 1944 goto l150 1945 l151: 1946 position, tokenIndex = position150, tokenIndex150 1947 { 1948 position155 := position 1949 if buffer[position] != rune('>') { 1950 goto l154 1951 } 1952 position++ 1953 { 1954 position156, tokenIndex156 := position, tokenIndex 1955 if buffer[position] != rune('=') { 1956 goto l156 1957 } 1958 position++ 1959 goto l154 1960 l156: 1961 position, tokenIndex = position156, tokenIndex156 1962 } 1963 if !_rules[rule_]() { 1964 goto l154 1965 } 1966 add(ruleGT, position155) 1967 } 1968 if !_rules[ruleUnaryExpr]() { 1969 goto l154 1970 } 1971 { 1972 add(ruleAction18, position) 1973 } 1974 goto l150 1975 l154: 1976 position, tokenIndex = position150, tokenIndex150 1977 { 1978 position159 := position 1979 if buffer[position] != rune('<') { 1980 goto l158 1981 } 1982 position++ 1983 if buffer[position] != rune('=') { 1984 goto l158 1985 } 1986 position++ 1987 if !_rules[rule_]() { 1988 goto l158 1989 } 1990 add(ruleLE, position159) 1991 } 1992 if !_rules[ruleUnaryExpr]() { 1993 goto l158 1994 } 1995 { 1996 add(ruleAction19, position) 1997 } 1998 goto l150 1999 l158: 2000 position, tokenIndex = position150, tokenIndex150 2001 { 2002 position161 := position 2003 if buffer[position] != rune('<') { 2004 goto l149 2005 } 2006 position++ 2007 { 2008 position162, tokenIndex162 := position, tokenIndex 2009 if buffer[position] != rune('=') { 2010 goto l162 2011 } 2012 position++ 2013 goto l149 2014 l162: 2015 position, tokenIndex = position162, tokenIndex162 2016 } 2017 if !_rules[rule_]() { 2018 goto l149 2019 } 2020 add(ruleLT, position161) 2021 } 2022 if !_rules[ruleUnaryExpr]() { 2023 goto l149 2024 } 2025 { 2026 add(ruleAction20, position) 2027 } 2028 } 2029 l150: 2030 goto l148 2031 l149: 2032 position, tokenIndex = position149, tokenIndex149 2033 } 2034 add(ruleRelationalExpr, position147) 2035 } 2036 return true 2037 l146: 2038 position, tokenIndex = position146, tokenIndex146 2039 return false 2040 }, 2041 /* 8 EqualityExpr <- <(RelationalExpr ((EQEQ RelationalExpr Action21) / ((&('c') (CONTAINS RelationalExpr Action24)) | (&('=') (EQ RelationalExpr Action23)) | (&('!') (NE RelationalExpr Action22))))*)> */ 2042 func() bool { 2043 position164, tokenIndex164 := position, tokenIndex 2044 { 2045 position165 := position 2046 if !_rules[ruleRelationalExpr]() { 2047 goto l164 2048 } 2049 l166: 2050 { 2051 position167, tokenIndex167 := position, tokenIndex 2052 { 2053 position168, tokenIndex168 := position, tokenIndex 2054 { 2055 position170 := position 2056 if buffer[position] != rune('=') { 2057 goto l169 2058 } 2059 position++ 2060 if buffer[position] != rune('=') { 2061 goto l169 2062 } 2063 position++ 2064 if !_rules[rule_]() { 2065 goto l169 2066 } 2067 add(ruleEQEQ, position170) 2068 } 2069 if !_rules[ruleRelationalExpr]() { 2070 goto l169 2071 } 2072 { 2073 add(ruleAction21, position) 2074 } 2075 goto l168 2076 l169: 2077 position, tokenIndex = position168, tokenIndex168 2078 { 2079 switch buffer[position] { 2080 case 'c': 2081 { 2082 position173 := position 2083 if buffer[position] != rune('c') { 2084 goto l167 2085 } 2086 position++ 2087 if buffer[position] != rune('o') { 2088 goto l167 2089 } 2090 position++ 2091 if buffer[position] != rune('n') { 2092 goto l167 2093 } 2094 position++ 2095 if buffer[position] != rune('t') { 2096 goto l167 2097 } 2098 position++ 2099 if buffer[position] != rune('a') { 2100 goto l167 2101 } 2102 position++ 2103 if buffer[position] != rune('i') { 2104 goto l167 2105 } 2106 position++ 2107 if buffer[position] != rune('n') { 2108 goto l167 2109 } 2110 position++ 2111 if buffer[position] != rune('s') { 2112 goto l167 2113 } 2114 position++ 2115 { 2116 position174, tokenIndex174 := position, tokenIndex 2117 if !_rules[ruleIdChar]() { 2118 goto l174 2119 } 2120 goto l167 2121 l174: 2122 position, tokenIndex = position174, tokenIndex174 2123 } 2124 if !_rules[rule_]() { 2125 goto l167 2126 } 2127 add(ruleCONTAINS, position173) 2128 } 2129 if !_rules[ruleRelationalExpr]() { 2130 goto l167 2131 } 2132 { 2133 add(ruleAction24, position) 2134 } 2135 break 2136 case '=': 2137 { 2138 position176 := position 2139 if buffer[position] != rune('=') { 2140 goto l167 2141 } 2142 position++ 2143 if !_rules[rule_]() { 2144 goto l167 2145 } 2146 add(ruleEQ, position176) 2147 } 2148 if !_rules[ruleRelationalExpr]() { 2149 goto l167 2150 } 2151 { 2152 add(ruleAction23, position) 2153 } 2154 break 2155 default: 2156 { 2157 position178 := position 2158 if buffer[position] != rune('!') { 2159 goto l167 2160 } 2161 position++ 2162 if buffer[position] != rune('=') { 2163 goto l167 2164 } 2165 position++ 2166 if !_rules[rule_]() { 2167 goto l167 2168 } 2169 add(ruleNE, position178) 2170 } 2171 if !_rules[ruleRelationalExpr]() { 2172 goto l167 2173 } 2174 { 2175 add(ruleAction22, position) 2176 } 2177 break 2178 } 2179 } 2180 2181 } 2182 l168: 2183 goto l166 2184 l167: 2185 position, tokenIndex = position167, tokenIndex167 2186 } 2187 add(ruleEqualityExpr, position165) 2188 } 2189 return true 2190 l164: 2191 position, tokenIndex = position164, tokenIndex164 2192 return false 2193 }, 2194 /* 9 LogicalAndExpr <- <(EqualityExpr ((AND EqualityExpr Action25) / (ANDAND EqualityExpr Action26) / (_ EqualityExpr Action27))*)> */ 2195 func() bool { 2196 position180, tokenIndex180 := position, tokenIndex 2197 { 2198 position181 := position 2199 if !_rules[ruleEqualityExpr]() { 2200 goto l180 2201 } 2202 l182: 2203 { 2204 position183, tokenIndex183 := position, tokenIndex 2205 { 2206 position184, tokenIndex184 := position, tokenIndex 2207 { 2208 position186 := position 2209 if buffer[position] != rune('a') { 2210 goto l185 2211 } 2212 position++ 2213 if buffer[position] != rune('n') { 2214 goto l185 2215 } 2216 position++ 2217 if buffer[position] != rune('d') { 2218 goto l185 2219 } 2220 position++ 2221 { 2222 position187, tokenIndex187 := position, tokenIndex 2223 if !_rules[ruleIdChar]() { 2224 goto l187 2225 } 2226 goto l185 2227 l187: 2228 position, tokenIndex = position187, tokenIndex187 2229 } 2230 if !_rules[rule_]() { 2231 goto l185 2232 } 2233 add(ruleAND, position186) 2234 } 2235 if !_rules[ruleEqualityExpr]() { 2236 goto l185 2237 } 2238 { 2239 add(ruleAction25, position) 2240 } 2241 goto l184 2242 l185: 2243 position, tokenIndex = position184, tokenIndex184 2244 { 2245 position190 := position 2246 if buffer[position] != rune('&') { 2247 goto l189 2248 } 2249 position++ 2250 if buffer[position] != rune('&') { 2251 goto l189 2252 } 2253 position++ 2254 if !_rules[rule_]() { 2255 goto l189 2256 } 2257 add(ruleANDAND, position190) 2258 } 2259 if !_rules[ruleEqualityExpr]() { 2260 goto l189 2261 } 2262 { 2263 add(ruleAction26, position) 2264 } 2265 goto l184 2266 l189: 2267 position, tokenIndex = position184, tokenIndex184 2268 if !_rules[rule_]() { 2269 goto l183 2270 } 2271 if !_rules[ruleEqualityExpr]() { 2272 goto l183 2273 } 2274 { 2275 add(ruleAction27, position) 2276 } 2277 } 2278 l184: 2279 goto l182 2280 l183: 2281 position, tokenIndex = position183, tokenIndex183 2282 } 2283 add(ruleLogicalAndExpr, position181) 2284 } 2285 return true 2286 l180: 2287 position, tokenIndex = position180, tokenIndex180 2288 return false 2289 }, 2290 /* 10 LogicalOrExpr <- <(LogicalAndExpr ((OR LogicalAndExpr Action28) / (OROR LogicalAndExpr Action29))*)> */ 2291 func() bool { 2292 position193, tokenIndex193 := position, tokenIndex 2293 { 2294 position194 := position 2295 if !_rules[ruleLogicalAndExpr]() { 2296 goto l193 2297 } 2298 l195: 2299 { 2300 position196, tokenIndex196 := position, tokenIndex 2301 { 2302 position197, tokenIndex197 := position, tokenIndex 2303 { 2304 position199 := position 2305 if buffer[position] != rune('o') { 2306 goto l198 2307 } 2308 position++ 2309 if buffer[position] != rune('r') { 2310 goto l198 2311 } 2312 position++ 2313 { 2314 position200, tokenIndex200 := position, tokenIndex 2315 if !_rules[ruleIdChar]() { 2316 goto l200 2317 } 2318 goto l198 2319 l200: 2320 position, tokenIndex = position200, tokenIndex200 2321 } 2322 if !_rules[rule_]() { 2323 goto l198 2324 } 2325 add(ruleOR, position199) 2326 } 2327 if !_rules[ruleLogicalAndExpr]() { 2328 goto l198 2329 } 2330 { 2331 add(ruleAction28, position) 2332 } 2333 goto l197 2334 l198: 2335 position, tokenIndex = position197, tokenIndex197 2336 { 2337 position202 := position 2338 if buffer[position] != rune('|') { 2339 goto l196 2340 } 2341 position++ 2342 if buffer[position] != rune('|') { 2343 goto l196 2344 } 2345 position++ 2346 if !_rules[rule_]() { 2347 goto l196 2348 } 2349 add(ruleOROR, position202) 2350 } 2351 if !_rules[ruleLogicalAndExpr]() { 2352 goto l196 2353 } 2354 { 2355 add(ruleAction29, position) 2356 } 2357 } 2358 l197: 2359 goto l195 2360 l196: 2361 position, tokenIndex = position196, tokenIndex196 2362 } 2363 add(ruleLogicalOrExpr, position194) 2364 } 2365 return true 2366 l193: 2367 position, tokenIndex = position193, tokenIndex193 2368 return false 2369 }, 2370 /* 11 LowNotExpr <- <(LogicalOrExpr / (NOT LogicalOrExpr Action30))> */ 2371 nil, 2372 /* 12 Expr <- <LowNotExpr> */ 2373 func() bool { 2374 position205, tokenIndex205 := position, tokenIndex 2375 { 2376 position206 := position 2377 { 2378 position207 := position 2379 { 2380 position208, tokenIndex208 := position, tokenIndex 2381 if !_rules[ruleLogicalOrExpr]() { 2382 goto l209 2383 } 2384 goto l208 2385 l209: 2386 position, tokenIndex = position208, tokenIndex208 2387 if !_rules[ruleNOT]() { 2388 goto l205 2389 } 2390 if !_rules[ruleLogicalOrExpr]() { 2391 goto l205 2392 } 2393 { 2394 add(ruleAction30, position) 2395 } 2396 } 2397 l208: 2398 add(ruleLowNotExpr, position207) 2399 } 2400 add(ruleExpr, position206) 2401 } 2402 return true 2403 l205: 2404 position, tokenIndex = position205, tokenIndex205 2405 return false 2406 }, 2407 /* 13 String <- <('"' <StringChar*> '"' _)> */ 2408 nil, 2409 /* 14 StringChar <- <(Escape / (!((&('\\') '\\') | (&('\n') '\n') | (&('"') '"')) .))> */ 2410 nil, 2411 /* 15 UnquotedString <- <(!Keyword <(UnquotedStringStartChar UnquotedStringChar*)> _)> */ 2412 nil, 2413 /* 16 UnquotedStringStartChar <- <((&('/' | '_') ('/' / '_')) | (&('A' | 'B' | 'C' | 'D' | 'E' | 'F' | 'G' | 'H' | 'I' | 'J' | 'K' | 'L' | 'M' | 'N' | 'O' | 'P' | 'Q' | 'R' | 'S' | 'T' | 'U' | 'V' | 'W' | 'X' | 'Y' | 'Z') [A-Z]) | (&('a' | 'b' | 'c' | 'd' | 'e' | 'f' | 'g' | 'h' | 'i' | 'j' | 'k' | 'l' | 'm' | 'n' | 'o' | 'p' | 'q' | 'r' | 's' | 't' | 'u' | 'v' | 'w' | 'x' | 'y' | 'z') [a-z]))> */ 2414 nil, 2415 /* 17 UnquotedStringChar <- <((&('/' | '_') ('/' / '_')) | (&('0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9') [0-9]) | (&('A' | 'B' | 'C' | 'D' | 'E' | 'F' | 'G' | 'H' | 'I' | 'J' | 'K' | 'L' | 'M' | 'N' | 'O' | 'P' | 'Q' | 'R' | 'S' | 'T' | 'U' | 'V' | 'W' | 'X' | 'Y' | 'Z') [A-Z]) | (&('a' | 'b' | 'c' | 'd' | 'e' | 'f' | 'g' | 'h' | 'i' | 'j' | 'k' | 'l' | 'm' | 'n' | 'o' | 'p' | 'q' | 'r' | 's' | 't' | 'u' | 'v' | 'w' | 'x' | 'y' | 'z') [a-z]))> */ 2416 nil, 2417 /* 18 Escape <- <(SimpleEscape / OctalEscape / HexEscape / UniversalCharacter)> */ 2418 nil, 2419 /* 19 SimpleEscape <- <('\\' ((&('v') 'v') | (&('t') 't') | (&('r') 'r') | (&('n') 'n') | (&('f') 'f') | (&('b') 'b') | (&('a') 'a') | (&('\\') '\\') | (&('?') '?') | (&('"') '"') | (&('\'') '\'')))> */ 2420 nil, 2421 /* 20 OctalEscape <- <('\\' [0-7] [0-7]? [0-7]?)> */ 2422 nil, 2423 /* 21 HexEscape <- <('\\' 'x' HexDigit+)> */ 2424 nil, 2425 /* 22 UniversalCharacter <- <(('\\' 'u' HexQuad) / ('\\' 'U' HexQuad HexQuad))> */ 2426 nil, 2427 /* 23 HexQuad <- <(HexDigit HexDigit HexDigit HexDigit)> */ 2428 func() bool { 2429 position221, tokenIndex221 := position, tokenIndex 2430 { 2431 position222 := position 2432 if !_rules[ruleHexDigit]() { 2433 goto l221 2434 } 2435 if !_rules[ruleHexDigit]() { 2436 goto l221 2437 } 2438 if !_rules[ruleHexDigit]() { 2439 goto l221 2440 } 2441 if !_rules[ruleHexDigit]() { 2442 goto l221 2443 } 2444 add(ruleHexQuad, position222) 2445 } 2446 return true 2447 l221: 2448 position, tokenIndex = position221, tokenIndex221 2449 return false 2450 }, 2451 /* 24 HexDigit <- <((&('A' | 'B' | 'C' | 'D' | 'E' | 'F') [A-F]) | (&('a' | 'b' | 'c' | 'd' | 'e' | 'f') [a-f]) | (&('0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9') [0-9]))> */ 2452 func() bool { 2453 position223, tokenIndex223 := position, tokenIndex 2454 { 2455 position224 := position 2456 { 2457 switch buffer[position] { 2458 case 'A', 'B', 'C', 'D', 'E', 'F': 2459 if c := buffer[position]; c < rune('A') || c > rune('F') { 2460 goto l223 2461 } 2462 position++ 2463 break 2464 case 'a', 'b', 'c', 'd', 'e', 'f': 2465 if c := buffer[position]; c < rune('a') || c > rune('f') { 2466 goto l223 2467 } 2468 position++ 2469 break 2470 default: 2471 if c := buffer[position]; c < rune('0') || c > rune('9') { 2472 goto l223 2473 } 2474 position++ 2475 break 2476 } 2477 } 2478 2479 add(ruleHexDigit, position224) 2480 } 2481 return true 2482 l223: 2483 position, tokenIndex = position223, tokenIndex223 2484 return false 2485 }, 2486 /* 25 Numbers <- <(Number Action31)> */ 2487 func() bool { 2488 position226, tokenIndex226 := position, tokenIndex 2489 { 2490 position227 := position 2491 if !_rules[ruleNumber]() { 2492 goto l226 2493 } 2494 { 2495 add(ruleAction31, position) 2496 } 2497 add(ruleNumbers, position227) 2498 } 2499 return true 2500 l226: 2501 position, tokenIndex = position226, tokenIndex226 2502 return false 2503 }, 2504 /* 26 Number <- <(<Float> / <Integer>)> */ 2505 func() bool { 2506 { 2507 position230 := position 2508 { 2509 position231, tokenIndex231 := position, tokenIndex 2510 { 2511 position233 := position 2512 { 2513 position234 := position 2514 { 2515 position235, tokenIndex235 := position, tokenIndex 2516 { 2517 position237 := position 2518 { 2519 position238, tokenIndex238 := position, tokenIndex 2520 l240: 2521 { 2522 position241, tokenIndex241 := position, tokenIndex 2523 if c := buffer[position]; c < rune('0') || c > rune('9') { 2524 goto l241 2525 } 2526 position++ 2527 goto l240 2528 l241: 2529 position, tokenIndex = position241, tokenIndex241 2530 } 2531 if buffer[position] != rune('.') { 2532 goto l239 2533 } 2534 position++ 2535 if c := buffer[position]; c < rune('0') || c > rune('9') { 2536 goto l239 2537 } 2538 position++ 2539 l242: 2540 { 2541 position243, tokenIndex243 := position, tokenIndex 2542 if c := buffer[position]; c < rune('0') || c > rune('9') { 2543 goto l243 2544 } 2545 position++ 2546 goto l242 2547 l243: 2548 position, tokenIndex = position243, tokenIndex243 2549 } 2550 goto l238 2551 l239: 2552 position, tokenIndex = position238, tokenIndex238 2553 if c := buffer[position]; c < rune('0') || c > rune('9') { 2554 goto l236 2555 } 2556 position++ 2557 l244: 2558 { 2559 position245, tokenIndex245 := position, tokenIndex 2560 if c := buffer[position]; c < rune('0') || c > rune('9') { 2561 goto l245 2562 } 2563 position++ 2564 goto l244 2565 l245: 2566 position, tokenIndex = position245, tokenIndex245 2567 } 2568 if buffer[position] != rune('.') { 2569 goto l236 2570 } 2571 position++ 2572 } 2573 l238: 2574 add(ruleFraction, position237) 2575 } 2576 { 2577 position246, tokenIndex246 := position, tokenIndex 2578 if !_rules[ruleExponent]() { 2579 goto l246 2580 } 2581 goto l247 2582 l246: 2583 position, tokenIndex = position246, tokenIndex246 2584 } 2585 l247: 2586 goto l235 2587 l236: 2588 position, tokenIndex = position235, tokenIndex235 2589 if c := buffer[position]; c < rune('0') || c > rune('9') { 2590 goto l232 2591 } 2592 position++ 2593 l248: 2594 { 2595 position249, tokenIndex249 := position, tokenIndex 2596 if c := buffer[position]; c < rune('0') || c > rune('9') { 2597 goto l249 2598 } 2599 position++ 2600 goto l248 2601 l249: 2602 position, tokenIndex = position249, tokenIndex249 2603 } 2604 if !_rules[ruleExponent]() { 2605 goto l232 2606 } 2607 } 2608 l235: 2609 add(ruleFloat, position234) 2610 } 2611 add(rulePegText, position233) 2612 } 2613 goto l231 2614 l232: 2615 position, tokenIndex = position231, tokenIndex231 2616 { 2617 position250 := position 2618 { 2619 position251 := position 2620 l252: 2621 { 2622 position253, tokenIndex253 := position, tokenIndex 2623 if c := buffer[position]; c < rune('0') || c > rune('9') { 2624 goto l253 2625 } 2626 position++ 2627 goto l252 2628 l253: 2629 position, tokenIndex = position253, tokenIndex253 2630 } 2631 add(ruleInteger, position251) 2632 } 2633 add(rulePegText, position250) 2634 } 2635 } 2636 l231: 2637 add(ruleNumber, position230) 2638 } 2639 return true 2640 }, 2641 /* 27 Integer <- <[0-9]*> */ 2642 nil, 2643 /* 28 Float <- <((Fraction Exponent?) / ([0-9]+ Exponent))> */ 2644 nil, 2645 /* 29 Fraction <- <(([0-9]* '.' [0-9]+) / ([0-9]+ '.'))> */ 2646 nil, 2647 /* 30 Exponent <- <(('e' / 'E') ('+' / '-')? [0-9]+)> */ 2648 func() bool { 2649 position257, tokenIndex257 := position, tokenIndex 2650 { 2651 position258 := position 2652 { 2653 position259, tokenIndex259 := position, tokenIndex 2654 if buffer[position] != rune('e') { 2655 goto l260 2656 } 2657 position++ 2658 goto l259 2659 l260: 2660 position, tokenIndex = position259, tokenIndex259 2661 if buffer[position] != rune('E') { 2662 goto l257 2663 } 2664 position++ 2665 } 2666 l259: 2667 { 2668 position261, tokenIndex261 := position, tokenIndex 2669 { 2670 position263, tokenIndex263 := position, tokenIndex 2671 if buffer[position] != rune('+') { 2672 goto l264 2673 } 2674 position++ 2675 goto l263 2676 l264: 2677 position, tokenIndex = position263, tokenIndex263 2678 if buffer[position] != rune('-') { 2679 goto l261 2680 } 2681 position++ 2682 } 2683 l263: 2684 goto l262 2685 l261: 2686 position, tokenIndex = position261, tokenIndex261 2687 } 2688 l262: 2689 if c := buffer[position]; c < rune('0') || c > rune('9') { 2690 goto l257 2691 } 2692 position++ 2693 l265: 2694 { 2695 position266, tokenIndex266 := position, tokenIndex 2696 if c := buffer[position]; c < rune('0') || c > rune('9') { 2697 goto l266 2698 } 2699 position++ 2700 goto l265 2701 l266: 2702 position, tokenIndex = position266, tokenIndex266 2703 } 2704 add(ruleExponent, position258) 2705 } 2706 return true 2707 l257: 2708 position, tokenIndex = position257, tokenIndex257 2709 return false 2710 }, 2711 /* 31 Stage <- <((&('p') PRODUCTION) | (&('s') STAGING) | (&('d') DEVELOPMENT))> */ 2712 nil, 2713 /* 32 DEVELOPMENT <- <(<('d' 'e' 'v' 'e' 'l' 'o' 'p' 'm' 'e' 'n' 't')> !IdChar _)> */ 2714 nil, 2715 /* 33 STAGING <- <(<('s' 't' 'a' 'g' 'i' 'n' 'g')> !IdChar _)> */ 2716 nil, 2717 /* 34 PRODUCTION <- <(<('p' 'r' 'o' 'd' 'u' 'c' 't' 'i' 'o' 'n')> !IdChar _)> */ 2718 nil, 2719 /* 35 Unit <- <(Bytes / Duration)> */ 2720 nil, 2721 /* 36 Duration <- <(S / MS)> */ 2722 nil, 2723 /* 37 S <- <(<'s'> !IdChar _)> */ 2724 nil, 2725 /* 38 MS <- <(<('m' 's')> !IdChar _)> */ 2726 nil, 2727 /* 39 Bytes <- <((&('g') GB) | (&('m') MB) | (&('k') KB) | (&('b') B))> */ 2728 nil, 2729 /* 40 B <- <(<'b'> !IdChar _)> */ 2730 nil, 2731 /* 41 KB <- <(<('k' 'b')> !IdChar _)> */ 2732 nil, 2733 /* 42 MB <- <(<('m' 'b')> !IdChar _)> */ 2734 nil, 2735 /* 43 GB <- <(<('g' 'b')> !IdChar _)> */ 2736 nil, 2737 /* 44 Id <- <(!Keyword <(IdCharNoDigit IdChar*)> _)> */ 2738 func() bool { 2739 position280, tokenIndex280 := position, tokenIndex 2740 { 2741 position281 := position 2742 { 2743 position282, tokenIndex282 := position, tokenIndex 2744 if !_rules[ruleKeyword]() { 2745 goto l282 2746 } 2747 goto l280 2748 l282: 2749 position, tokenIndex = position282, tokenIndex282 2750 } 2751 { 2752 position283 := position 2753 { 2754 position284 := position 2755 { 2756 switch buffer[position] { 2757 case '_': 2758 if buffer[position] != rune('_') { 2759 goto l280 2760 } 2761 position++ 2762 break 2763 case 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z': 2764 if c := buffer[position]; c < rune('A') || c > rune('Z') { 2765 goto l280 2766 } 2767 position++ 2768 break 2769 default: 2770 if c := buffer[position]; c < rune('a') || c > rune('z') { 2771 goto l280 2772 } 2773 position++ 2774 break 2775 } 2776 } 2777 2778 add(ruleIdCharNoDigit, position284) 2779 } 2780 l286: 2781 { 2782 position287, tokenIndex287 := position, tokenIndex 2783 if !_rules[ruleIdChar]() { 2784 goto l287 2785 } 2786 goto l286 2787 l287: 2788 position, tokenIndex = position287, tokenIndex287 2789 } 2790 add(rulePegText, position283) 2791 } 2792 if !_rules[rule_]() { 2793 goto l280 2794 } 2795 add(ruleId, position281) 2796 } 2797 return true 2798 l280: 2799 position, tokenIndex = position280, tokenIndex280 2800 return false 2801 }, 2802 /* 45 IdChar <- <((&('_') '_') | (&('0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9') [0-9]) | (&('A' | 'B' | 'C' | 'D' | 'E' | 'F' | 'G' | 'H' | 'I' | 'J' | 'K' | 'L' | 'M' | 'N' | 'O' | 'P' | 'Q' | 'R' | 'S' | 'T' | 'U' | 'V' | 'W' | 'X' | 'Y' | 'Z') [A-Z]) | (&('a' | 'b' | 'c' | 'd' | 'e' | 'f' | 'g' | 'h' | 'i' | 'j' | 'k' | 'l' | 'm' | 'n' | 'o' | 'p' | 'q' | 'r' | 's' | 't' | 'u' | 'v' | 'w' | 'x' | 'y' | 'z') [a-z]))> */ 2803 func() bool { 2804 position288, tokenIndex288 := position, tokenIndex 2805 { 2806 position289 := position 2807 { 2808 switch buffer[position] { 2809 case '_': 2810 if buffer[position] != rune('_') { 2811 goto l288 2812 } 2813 position++ 2814 break 2815 case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9': 2816 if c := buffer[position]; c < rune('0') || c > rune('9') { 2817 goto l288 2818 } 2819 position++ 2820 break 2821 case 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z': 2822 if c := buffer[position]; c < rune('A') || c > rune('Z') { 2823 goto l288 2824 } 2825 position++ 2826 break 2827 default: 2828 if c := buffer[position]; c < rune('a') || c > rune('z') { 2829 goto l288 2830 } 2831 position++ 2832 break 2833 } 2834 } 2835 2836 add(ruleIdChar, position289) 2837 } 2838 return true 2839 l288: 2840 position, tokenIndex = position288, tokenIndex288 2841 return false 2842 }, 2843 /* 46 IdCharNoDigit <- <((&('_') '_') | (&('A' | 'B' | 'C' | 'D' | 'E' | 'F' | 'G' | 'H' | 'I' | 'J' | 'K' | 'L' | 'M' | 'N' | 'O' | 'P' | 'Q' | 'R' | 'S' | 'T' | 'U' | 'V' | 'W' | 'X' | 'Y' | 'Z') [A-Z]) | (&('a' | 'b' | 'c' | 'd' | 'e' | 'f' | 'g' | 'h' | 'i' | 'j' | 'k' | 'l' | 'm' | 'n' | 'o' | 'p' | 'q' | 'r' | 's' | 't' | 'u' | 'v' | 'w' | 'x' | 'y' | 'z') [a-z]))> */ 2844 nil, 2845 /* 47 Severity <- <((&('f') FATAL) | (&('e') ERROR) | (&('w') WARN) | (&('i') INFO) | (&('d') DEBUG))> */ 2846 nil, 2847 /* 48 IN <- <('i' 'n' !IdChar _)> */ 2848 func() bool { 2849 position293, tokenIndex293 := position, tokenIndex 2850 { 2851 position294 := position 2852 if buffer[position] != rune('i') { 2853 goto l293 2854 } 2855 position++ 2856 if buffer[position] != rune('n') { 2857 goto l293 2858 } 2859 position++ 2860 { 2861 position295, tokenIndex295 := position, tokenIndex 2862 if !_rules[ruleIdChar]() { 2863 goto l295 2864 } 2865 goto l293 2866 l295: 2867 position, tokenIndex = position295, tokenIndex295 2868 } 2869 if !_rules[rule_]() { 2870 goto l293 2871 } 2872 add(ruleIN, position294) 2873 } 2874 return true 2875 l293: 2876 position, tokenIndex = position293, tokenIndex293 2877 return false 2878 }, 2879 /* 49 OR <- <('o' 'r' !IdChar _)> */ 2880 nil, 2881 /* 50 AND <- <('a' 'n' 'd' !IdChar _)> */ 2882 nil, 2883 /* 51 NOT <- <('n' 'o' 't' !IdChar _)> */ 2884 func() bool { 2885 position298, tokenIndex298 := position, tokenIndex 2886 { 2887 position299 := position 2888 if buffer[position] != rune('n') { 2889 goto l298 2890 } 2891 position++ 2892 if buffer[position] != rune('o') { 2893 goto l298 2894 } 2895 position++ 2896 if buffer[position] != rune('t') { 2897 goto l298 2898 } 2899 position++ 2900 { 2901 position300, tokenIndex300 := position, tokenIndex 2902 if !_rules[ruleIdChar]() { 2903 goto l300 2904 } 2905 goto l298 2906 l300: 2907 position, tokenIndex = position300, tokenIndex300 2908 } 2909 if !_rules[rule_]() { 2910 goto l298 2911 } 2912 add(ruleNOT, position299) 2913 } 2914 return true 2915 l298: 2916 position, tokenIndex = position298, tokenIndex298 2917 return false 2918 }, 2919 /* 52 CONTAINS <- <('c' 'o' 'n' 't' 'a' 'i' 'n' 's' !IdChar _)> */ 2920 nil, 2921 /* 53 DEBUG <- <(<('d' 'e' 'b' 'u' 'g')> !IdChar _)> */ 2922 nil, 2923 /* 54 INFO <- <(<('i' 'n' 'f' 'o')> !IdChar _)> */ 2924 nil, 2925 /* 55 WARN <- <(<('w' 'a' 'r' 'n')> !IdChar _)> */ 2926 nil, 2927 /* 56 ERROR <- <(<('e' 'r' 'r' 'o' 'r')> !IdChar _)> */ 2928 nil, 2929 /* 57 FATAL <- <(<('f' 'a' 't' 'a' 'l')> !IdChar _)> */ 2930 nil, 2931 /* 58 Keyword <- <((('s' 't' 'a' 'g' 'i' 'n' 'g') / ('d' 'e' 'v' 'e' 'l' 'o' 'p' 'm' 'e' 'n' 't') / ('i' 'n' 'f' 'o') / ('m' 'b') / ((&('s') 's') | (&('m') ('m' 's')) | (&('b') 'b') | (&('k') ('k' 'b')) | (&('g') ('g' 'b')) | (&('i') ('i' 'n')) | (&('f') ('f' 'a' 't' 'a' 'l')) | (&('e') ('e' 'r' 'r' 'o' 'r')) | (&('w') ('w' 'a' 'r' 'n')) | (&('d') ('d' 'e' 'b' 'u' 'g')) | (&('c') ('c' 'o' 'n' 't' 'a' 'i' 'n' 's')) | (&('n') ('n' 'o' 't')) | (&('a') ('a' 'n' 'd')) | (&('o') ('o' 'r')) | (&('p') ('p' 'r' 'o' 'd' 'u' 'c' 't' 'i' 'o' 'n')))) !IdChar)> */ 2932 func() bool { 2933 position307, tokenIndex307 := position, tokenIndex 2934 { 2935 position308 := position 2936 { 2937 position309, tokenIndex309 := position, tokenIndex 2938 if buffer[position] != rune('s') { 2939 goto l310 2940 } 2941 position++ 2942 if buffer[position] != rune('t') { 2943 goto l310 2944 } 2945 position++ 2946 if buffer[position] != rune('a') { 2947 goto l310 2948 } 2949 position++ 2950 if buffer[position] != rune('g') { 2951 goto l310 2952 } 2953 position++ 2954 if buffer[position] != rune('i') { 2955 goto l310 2956 } 2957 position++ 2958 if buffer[position] != rune('n') { 2959 goto l310 2960 } 2961 position++ 2962 if buffer[position] != rune('g') { 2963 goto l310 2964 } 2965 position++ 2966 goto l309 2967 l310: 2968 position, tokenIndex = position309, tokenIndex309 2969 if buffer[position] != rune('d') { 2970 goto l311 2971 } 2972 position++ 2973 if buffer[position] != rune('e') { 2974 goto l311 2975 } 2976 position++ 2977 if buffer[position] != rune('v') { 2978 goto l311 2979 } 2980 position++ 2981 if buffer[position] != rune('e') { 2982 goto l311 2983 } 2984 position++ 2985 if buffer[position] != rune('l') { 2986 goto l311 2987 } 2988 position++ 2989 if buffer[position] != rune('o') { 2990 goto l311 2991 } 2992 position++ 2993 if buffer[position] != rune('p') { 2994 goto l311 2995 } 2996 position++ 2997 if buffer[position] != rune('m') { 2998 goto l311 2999 } 3000 position++ 3001 if buffer[position] != rune('e') { 3002 goto l311 3003 } 3004 position++ 3005 if buffer[position] != rune('n') { 3006 goto l311 3007 } 3008 position++ 3009 if buffer[position] != rune('t') { 3010 goto l311 3011 } 3012 position++ 3013 goto l309 3014 l311: 3015 position, tokenIndex = position309, tokenIndex309 3016 if buffer[position] != rune('i') { 3017 goto l312 3018 } 3019 position++ 3020 if buffer[position] != rune('n') { 3021 goto l312 3022 } 3023 position++ 3024 if buffer[position] != rune('f') { 3025 goto l312 3026 } 3027 position++ 3028 if buffer[position] != rune('o') { 3029 goto l312 3030 } 3031 position++ 3032 goto l309 3033 l312: 3034 position, tokenIndex = position309, tokenIndex309 3035 if buffer[position] != rune('m') { 3036 goto l313 3037 } 3038 position++ 3039 if buffer[position] != rune('b') { 3040 goto l313 3041 } 3042 position++ 3043 goto l309 3044 l313: 3045 position, tokenIndex = position309, tokenIndex309 3046 { 3047 switch buffer[position] { 3048 case 's': 3049 if buffer[position] != rune('s') { 3050 goto l307 3051 } 3052 position++ 3053 break 3054 case 'm': 3055 if buffer[position] != rune('m') { 3056 goto l307 3057 } 3058 position++ 3059 if buffer[position] != rune('s') { 3060 goto l307 3061 } 3062 position++ 3063 break 3064 case 'b': 3065 if buffer[position] != rune('b') { 3066 goto l307 3067 } 3068 position++ 3069 break 3070 case 'k': 3071 if buffer[position] != rune('k') { 3072 goto l307 3073 } 3074 position++ 3075 if buffer[position] != rune('b') { 3076 goto l307 3077 } 3078 position++ 3079 break 3080 case 'g': 3081 if buffer[position] != rune('g') { 3082 goto l307 3083 } 3084 position++ 3085 if buffer[position] != rune('b') { 3086 goto l307 3087 } 3088 position++ 3089 break 3090 case 'i': 3091 if buffer[position] != rune('i') { 3092 goto l307 3093 } 3094 position++ 3095 if buffer[position] != rune('n') { 3096 goto l307 3097 } 3098 position++ 3099 break 3100 case 'f': 3101 if buffer[position] != rune('f') { 3102 goto l307 3103 } 3104 position++ 3105 if buffer[position] != rune('a') { 3106 goto l307 3107 } 3108 position++ 3109 if buffer[position] != rune('t') { 3110 goto l307 3111 } 3112 position++ 3113 if buffer[position] != rune('a') { 3114 goto l307 3115 } 3116 position++ 3117 if buffer[position] != rune('l') { 3118 goto l307 3119 } 3120 position++ 3121 break 3122 case 'e': 3123 if buffer[position] != rune('e') { 3124 goto l307 3125 } 3126 position++ 3127 if buffer[position] != rune('r') { 3128 goto l307 3129 } 3130 position++ 3131 if buffer[position] != rune('r') { 3132 goto l307 3133 } 3134 position++ 3135 if buffer[position] != rune('o') { 3136 goto l307 3137 } 3138 position++ 3139 if buffer[position] != rune('r') { 3140 goto l307 3141 } 3142 position++ 3143 break 3144 case 'w': 3145 if buffer[position] != rune('w') { 3146 goto l307 3147 } 3148 position++ 3149 if buffer[position] != rune('a') { 3150 goto l307 3151 } 3152 position++ 3153 if buffer[position] != rune('r') { 3154 goto l307 3155 } 3156 position++ 3157 if buffer[position] != rune('n') { 3158 goto l307 3159 } 3160 position++ 3161 break 3162 case 'd': 3163 if buffer[position] != rune('d') { 3164 goto l307 3165 } 3166 position++ 3167 if buffer[position] != rune('e') { 3168 goto l307 3169 } 3170 position++ 3171 if buffer[position] != rune('b') { 3172 goto l307 3173 } 3174 position++ 3175 if buffer[position] != rune('u') { 3176 goto l307 3177 } 3178 position++ 3179 if buffer[position] != rune('g') { 3180 goto l307 3181 } 3182 position++ 3183 break 3184 case 'c': 3185 if buffer[position] != rune('c') { 3186 goto l307 3187 } 3188 position++ 3189 if buffer[position] != rune('o') { 3190 goto l307 3191 } 3192 position++ 3193 if buffer[position] != rune('n') { 3194 goto l307 3195 } 3196 position++ 3197 if buffer[position] != rune('t') { 3198 goto l307 3199 } 3200 position++ 3201 if buffer[position] != rune('a') { 3202 goto l307 3203 } 3204 position++ 3205 if buffer[position] != rune('i') { 3206 goto l307 3207 } 3208 position++ 3209 if buffer[position] != rune('n') { 3210 goto l307 3211 } 3212 position++ 3213 if buffer[position] != rune('s') { 3214 goto l307 3215 } 3216 position++ 3217 break 3218 case 'n': 3219 if buffer[position] != rune('n') { 3220 goto l307 3221 } 3222 position++ 3223 if buffer[position] != rune('o') { 3224 goto l307 3225 } 3226 position++ 3227 if buffer[position] != rune('t') { 3228 goto l307 3229 } 3230 position++ 3231 break 3232 case 'a': 3233 if buffer[position] != rune('a') { 3234 goto l307 3235 } 3236 position++ 3237 if buffer[position] != rune('n') { 3238 goto l307 3239 } 3240 position++ 3241 if buffer[position] != rune('d') { 3242 goto l307 3243 } 3244 position++ 3245 break 3246 case 'o': 3247 if buffer[position] != rune('o') { 3248 goto l307 3249 } 3250 position++ 3251 if buffer[position] != rune('r') { 3252 goto l307 3253 } 3254 position++ 3255 break 3256 default: 3257 if buffer[position] != rune('p') { 3258 goto l307 3259 } 3260 position++ 3261 if buffer[position] != rune('r') { 3262 goto l307 3263 } 3264 position++ 3265 if buffer[position] != rune('o') { 3266 goto l307 3267 } 3268 position++ 3269 if buffer[position] != rune('d') { 3270 goto l307 3271 } 3272 position++ 3273 if buffer[position] != rune('u') { 3274 goto l307 3275 } 3276 position++ 3277 if buffer[position] != rune('c') { 3278 goto l307 3279 } 3280 position++ 3281 if buffer[position] != rune('t') { 3282 goto l307 3283 } 3284 position++ 3285 if buffer[position] != rune('i') { 3286 goto l307 3287 } 3288 position++ 3289 if buffer[position] != rune('o') { 3290 goto l307 3291 } 3292 position++ 3293 if buffer[position] != rune('n') { 3294 goto l307 3295 } 3296 position++ 3297 break 3298 } 3299 } 3300 3301 } 3302 l309: 3303 { 3304 position315, tokenIndex315 := position, tokenIndex 3305 if !_rules[ruleIdChar]() { 3306 goto l315 3307 } 3308 goto l307 3309 l315: 3310 position, tokenIndex = position315, tokenIndex315 3311 } 3312 add(ruleKeyword, position308) 3313 } 3314 return true 3315 l307: 3316 position, tokenIndex = position307, tokenIndex307 3317 return false 3318 }, 3319 /* 59 EQ <- <('=' _)> */ 3320 nil, 3321 /* 60 LBRK <- <('[' _)> */ 3322 nil, 3323 /* 61 RBRK <- <(']' _)> */ 3324 nil, 3325 /* 62 LPAR <- <('(' _)> */ 3326 func() bool { 3327 position319, tokenIndex319 := position, tokenIndex 3328 { 3329 position320 := position 3330 if buffer[position] != rune('(') { 3331 goto l319 3332 } 3333 position++ 3334 if !_rules[rule_]() { 3335 goto l319 3336 } 3337 add(ruleLPAR, position320) 3338 } 3339 return true 3340 l319: 3341 position, tokenIndex = position319, tokenIndex319 3342 return false 3343 }, 3344 /* 63 RPAR <- <(')' _)> */ 3345 func() bool { 3346 position321, tokenIndex321 := position, tokenIndex 3347 { 3348 position322 := position 3349 if buffer[position] != rune(')') { 3350 goto l321 3351 } 3352 position++ 3353 if !_rules[rule_]() { 3354 goto l321 3355 } 3356 add(ruleRPAR, position322) 3357 } 3358 return true 3359 l321: 3360 position, tokenIndex = position321, tokenIndex321 3361 return false 3362 }, 3363 /* 64 DOT <- <('.' _)> */ 3364 nil, 3365 /* 65 BANG <- <('!' !'=' _)> */ 3366 nil, 3367 /* 66 LT <- <('<' !'=' _)> */ 3368 nil, 3369 /* 67 GT <- <('>' !'=' _)> */ 3370 nil, 3371 /* 68 LE <- <('<' '=' _)> */ 3372 nil, 3373 /* 69 EQEQ <- <('=' '=' _)> */ 3374 nil, 3375 /* 70 GE <- <('>' '=' _)> */ 3376 nil, 3377 /* 71 NE <- <('!' '=' _)> */ 3378 nil, 3379 /* 72 ANDAND <- <('&' '&' _)> */ 3380 nil, 3381 /* 73 OROR <- <('|' '|' _)> */ 3382 nil, 3383 /* 74 COMMA <- <(',' _)> */ 3384 nil, 3385 /* 75 _ <- <Whitespace*> */ 3386 func() bool { 3387 { 3388 position335 := position 3389 l336: 3390 { 3391 position337, tokenIndex337 := position, tokenIndex 3392 { 3393 position338 := position 3394 { 3395 switch buffer[position] { 3396 case '\t': 3397 if buffer[position] != rune('\t') { 3398 goto l337 3399 } 3400 position++ 3401 break 3402 case ' ': 3403 if buffer[position] != rune(' ') { 3404 goto l337 3405 } 3406 position++ 3407 break 3408 default: 3409 { 3410 position340 := position 3411 { 3412 position341, tokenIndex341 := position, tokenIndex 3413 if buffer[position] != rune('\r') { 3414 goto l342 3415 } 3416 position++ 3417 if buffer[position] != rune('\n') { 3418 goto l342 3419 } 3420 position++ 3421 goto l341 3422 l342: 3423 position, tokenIndex = position341, tokenIndex341 3424 if buffer[position] != rune('\n') { 3425 goto l343 3426 } 3427 position++ 3428 goto l341 3429 l343: 3430 position, tokenIndex = position341, tokenIndex341 3431 if buffer[position] != rune('\r') { 3432 goto l337 3433 } 3434 position++ 3435 } 3436 l341: 3437 add(ruleEOL, position340) 3438 } 3439 break 3440 } 3441 } 3442 3443 add(ruleWhitespace, position338) 3444 } 3445 goto l336 3446 l337: 3447 position, tokenIndex = position337, tokenIndex337 3448 } 3449 add(rule_, position335) 3450 } 3451 return true 3452 }, 3453 /* 76 Whitespace <- <((&('\t') '\t') | (&(' ') ' ') | (&('\n' | '\r') EOL))> */ 3454 nil, 3455 /* 77 EOL <- <(('\r' '\n') / '\n' / '\r')> */ 3456 nil, 3457 /* 78 EOF <- <!.> */ 3458 nil, 3459 /* 80 Action0 <- <{ p.AddNumber(text) }> */ 3460 nil, 3461 /* 81 Action1 <- <{ p.AddNumber("") }> */ 3462 nil, 3463 /* 82 Action2 <- <{ p.AddLevel(text) }> */ 3464 nil, 3465 /* 83 Action3 <- <{ p.AddStage(text) }> */ 3466 nil, 3467 /* 84 Action4 <- <{ p.AddField(text) }> */ 3468 nil, 3469 /* 85 Action5 <- <{ p.AddString(text) }> */ 3470 nil, 3471 /* 86 Action6 <- <{ p.AddString(text) }> */ 3472 nil, 3473 /* 87 Action7 <- <{ p.AddExpr() }> */ 3474 nil, 3475 /* 88 Action8 <- <{ p.AddTupleValue() }> */ 3476 nil, 3477 /* 89 Action9 <- <{ p.AddTupleValue() }> */ 3478 nil, 3479 /* 90 Action10 <- <{ p.AddTuple() }> */ 3480 nil, 3481 /* 91 Action11 <- <{ p.AddBinary(ast.IN) }> */ 3482 nil, 3483 /* 92 Action12 <- <{ p.AddTuple() }> */ 3484 nil, 3485 /* 93 Action13 <- <{ p.AddBinary(ast.IN); p.AddUnary(ast.LNOT) }> */ 3486 nil, 3487 /* 94 Action14 <- <{ p.AddMember(text) }> */ 3488 nil, 3489 /* 95 Action15 <- <{ p.AddSubscript(text) }> */ 3490 nil, 3491 /* 96 Action16 <- <{ p.AddUnary(ast.NOT) }> */ 3492 nil, 3493 /* 97 Action17 <- <{ p.AddBinary(ast.GE) }> */ 3494 nil, 3495 /* 98 Action18 <- <{ p.AddBinary(ast.GT) }> */ 3496 nil, 3497 /* 99 Action19 <- <{ p.AddBinary(ast.LE) }> */ 3498 nil, 3499 /* 100 Action20 <- <{ p.AddBinary(ast.LT) }> */ 3500 nil, 3501 /* 101 Action21 <- <{ p.AddBinary(ast.EQ) }> */ 3502 nil, 3503 /* 102 Action22 <- <{ p.AddBinary(ast.NE) }> */ 3504 nil, 3505 /* 103 Action23 <- <{ p.AddBinary(ast.EQ) }> */ 3506 nil, 3507 /* 104 Action24 <- <{ p.AddBinaryContains() }> */ 3508 nil, 3509 /* 105 Action25 <- <{ p.AddBinary(ast.AND) }> */ 3510 nil, 3511 /* 106 Action26 <- <{ p.AddBinary(ast.AND) }> */ 3512 nil, 3513 /* 107 Action27 <- <{ p.AddBinary(ast.AND) }> */ 3514 nil, 3515 /* 108 Action28 <- <{ p.AddBinary(ast.OR) }> */ 3516 nil, 3517 /* 109 Action29 <- <{ p.AddBinary(ast.OR) }> */ 3518 nil, 3519 /* 110 Action30 <- <{ p.AddUnary(ast.LNOT) }> */ 3520 nil, 3521 nil, 3522 /* 112 Action31 <- <{ p.SetNumber(text) }> */ 3523 nil, 3524 } 3525 p.rules = _rules 3526 return nil 3527 }