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