github.com/orteth01/up@v0.2.0/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 ruleEscape 34 ruleSimpleEscape 35 ruleOctalEscape 36 ruleHexEscape 37 ruleUniversalCharacter 38 ruleHexQuad 39 ruleHexDigit 40 ruleNumber 41 ruleInteger 42 ruleFloat 43 ruleFraction 44 ruleExponent 45 ruleId 46 ruleIdChar 47 ruleIdCharNoDigit 48 ruleSeverity 49 ruleIN 50 ruleOR 51 ruleAND 52 ruleNOT 53 ruleCONTAINS 54 ruleDEBUG 55 ruleINFO 56 ruleWARN 57 ruleERROR 58 ruleFATAL 59 ruleKeyword 60 ruleEQ 61 ruleLBRK 62 ruleRBRK 63 ruleLPAR 64 ruleRPAR 65 ruleDOT 66 ruleBANG 67 ruleLT 68 ruleGT 69 ruleLE 70 ruleEQEQ 71 ruleGE 72 ruleNE 73 ruleANDAND 74 ruleOROR 75 ruleCOMMA 76 rule_ 77 ruleWhitespace 78 ruleEOL 79 ruleEOF 80 ruleAction0 81 ruleAction1 82 ruleAction2 83 ruleAction3 84 ruleAction4 85 ruleAction5 86 ruleAction6 87 ruleAction7 88 ruleAction8 89 ruleAction9 90 ruleAction10 91 ruleAction11 92 ruleAction12 93 ruleAction13 94 ruleAction14 95 ruleAction15 96 ruleAction16 97 ruleAction17 98 ruleAction18 99 ruleAction19 100 ruleAction20 101 ruleAction21 102 ruleAction22 103 ruleAction23 104 ruleAction24 105 ruleAction25 106 ruleAction26 107 ruleAction27 108 rulePegText 109 ) 110 111 var rul3s = [...]string{ 112 "Unknown", 113 "Query", 114 "PrimaryExpr", 115 "TupleExpr", 116 "InExpr", 117 "NotInExpr", 118 "PostfixExpr", 119 "UnaryExpr", 120 "RelationalExpr", 121 "EqualityExpr", 122 "LogicalAndExpr", 123 "LogicalOrExpr", 124 "LowNotExpr", 125 "Expr", 126 "String", 127 "StringChar", 128 "Escape", 129 "SimpleEscape", 130 "OctalEscape", 131 "HexEscape", 132 "UniversalCharacter", 133 "HexQuad", 134 "HexDigit", 135 "Number", 136 "Integer", 137 "Float", 138 "Fraction", 139 "Exponent", 140 "Id", 141 "IdChar", 142 "IdCharNoDigit", 143 "Severity", 144 "IN", 145 "OR", 146 "AND", 147 "NOT", 148 "CONTAINS", 149 "DEBUG", 150 "INFO", 151 "WARN", 152 "ERROR", 153 "FATAL", 154 "Keyword", 155 "EQ", 156 "LBRK", 157 "RBRK", 158 "LPAR", 159 "RPAR", 160 "DOT", 161 "BANG", 162 "LT", 163 "GT", 164 "LE", 165 "EQEQ", 166 "GE", 167 "NE", 168 "ANDAND", 169 "OROR", 170 "COMMA", 171 "_", 172 "Whitespace", 173 "EOL", 174 "EOF", 175 "Action0", 176 "Action1", 177 "Action2", 178 "Action3", 179 "Action4", 180 "Action5", 181 "Action6", 182 "Action7", 183 "Action8", 184 "Action9", 185 "Action10", 186 "Action11", 187 "Action12", 188 "Action13", 189 "Action14", 190 "Action15", 191 "Action16", 192 "Action17", 193 "Action18", 194 "Action19", 195 "Action20", 196 "Action21", 197 "Action22", 198 "Action23", 199 "Action24", 200 "Action25", 201 "Action26", 202 "Action27", 203 "PegText", 204 } 205 206 type token32 struct { 207 pegRule 208 begin, end uint32 209 } 210 211 func (t *token32) String() string { 212 return fmt.Sprintf("\x1B[34m%v\x1B[m %v %v", rul3s[t.pegRule], t.begin, t.end) 213 } 214 215 type node32 struct { 216 token32 217 up, next *node32 218 } 219 220 func (node *node32) print(pretty bool, buffer string) { 221 var print func(node *node32, depth int) 222 print = func(node *node32, depth int) { 223 for node != nil { 224 for c := 0; c < depth; c++ { 225 fmt.Printf(" ") 226 } 227 rule := rul3s[node.pegRule] 228 quote := strconv.Quote(string(([]rune(buffer)[node.begin:node.end]))) 229 if !pretty { 230 fmt.Printf("%v %v\n", rule, quote) 231 } else { 232 fmt.Printf("\x1B[34m%v\x1B[m %v\n", rule, quote) 233 } 234 if node.up != nil { 235 print(node.up, depth+1) 236 } 237 node = node.next 238 } 239 } 240 print(node, 0) 241 } 242 243 func (node *node32) Print(buffer string) { 244 node.print(false, buffer) 245 } 246 247 func (node *node32) PrettyPrint(buffer string) { 248 node.print(true, buffer) 249 } 250 251 type tokens32 struct { 252 tree []token32 253 } 254 255 func (t *tokens32) Trim(length uint32) { 256 t.tree = t.tree[:length] 257 } 258 259 func (t *tokens32) Print() { 260 for _, token := range t.tree { 261 fmt.Println(token.String()) 262 } 263 } 264 265 func (t *tokens32) AST() *node32 { 266 type element struct { 267 node *node32 268 down *element 269 } 270 tokens := t.Tokens() 271 var stack *element 272 for _, token := range tokens { 273 if token.begin == token.end { 274 continue 275 } 276 node := &node32{token32: token} 277 for stack != nil && stack.node.begin >= token.begin && stack.node.end <= token.end { 278 stack.node.next = node.up 279 node.up = stack.node 280 stack = stack.down 281 } 282 stack = &element{node: node, down: stack} 283 } 284 if stack != nil { 285 return stack.node 286 } 287 return nil 288 } 289 290 func (t *tokens32) PrintSyntaxTree(buffer string) { 291 t.AST().Print(buffer) 292 } 293 294 func (t *tokens32) PrettyPrintSyntaxTree(buffer string) { 295 t.AST().PrettyPrint(buffer) 296 } 297 298 func (t *tokens32) Add(rule pegRule, begin, end, index uint32) { 299 if tree := t.tree; int(index) >= len(tree) { 300 expanded := make([]token32, 2*len(tree)) 301 copy(expanded, tree) 302 t.tree = expanded 303 } 304 t.tree[index] = token32{ 305 pegRule: rule, 306 begin: begin, 307 end: end, 308 } 309 } 310 311 func (t *tokens32) Tokens() []token32 { 312 return t.tree 313 } 314 315 type parser struct { 316 stack []ast.Node 317 318 Buffer string 319 buffer []rune 320 rules [92]func() bool 321 parse func(rule ...int) error 322 reset func() 323 Pretty bool 324 tokens32 325 } 326 327 func (p *parser) Parse(rule ...int) error { 328 return p.parse(rule...) 329 } 330 331 func (p *parser) Reset() { 332 p.reset() 333 } 334 335 type textPosition struct { 336 line, symbol int 337 } 338 339 type textPositionMap map[int]textPosition 340 341 func translatePositions(buffer []rune, positions []int) textPositionMap { 342 length, translations, j, line, symbol := len(positions), make(textPositionMap, len(positions)), 0, 1, 0 343 sort.Ints(positions) 344 345 search: 346 for i, c := range buffer { 347 if c == '\n' { 348 line, symbol = line+1, 0 349 } else { 350 symbol++ 351 } 352 if i == positions[j] { 353 translations[positions[j]] = textPosition{line, symbol} 354 for j++; j < length; j++ { 355 if i != positions[j] { 356 continue search 357 } 358 } 359 break search 360 } 361 } 362 363 return translations 364 } 365 366 type parseError struct { 367 p *parser 368 max token32 369 } 370 371 func (e *parseError) Error() string { 372 tokens, error := []token32{e.max}, "\n" 373 positions, p := make([]int, 2*len(tokens)), 0 374 for _, token := range tokens { 375 positions[p], p = int(token.begin), p+1 376 positions[p], p = int(token.end), p+1 377 } 378 translations := translatePositions(e.p.buffer, positions) 379 format := "parse error near %v (line %v symbol %v - line %v symbol %v):\n%v\n" 380 if e.p.Pretty { 381 format = "parse error near \x1B[34m%v\x1B[m (line %v symbol %v - line %v symbol %v):\n%v\n" 382 } 383 for _, token := range tokens { 384 begin, end := int(token.begin), int(token.end) 385 error += fmt.Sprintf(format, 386 rul3s[token.pegRule], 387 translations[begin].line, translations[begin].symbol, 388 translations[end].line, translations[end].symbol, 389 strconv.Quote(string(e.p.buffer[begin:end]))) 390 } 391 392 return error 393 } 394 395 func (p *parser) PrintSyntaxTree() { 396 if p.Pretty { 397 p.tokens32.PrettyPrintSyntaxTree(p.Buffer) 398 } else { 399 p.tokens32.PrintSyntaxTree(p.Buffer) 400 } 401 } 402 403 func (p *parser) Execute() { 404 buffer, _buffer, text, begin, end := p.Buffer, p.buffer, "", 0, 0 405 for _, token := range p.Tokens() { 406 switch token.pegRule { 407 408 case rulePegText: 409 begin, end = int(token.begin), int(token.end) 410 text = string(_buffer[begin:end]) 411 412 case ruleAction0: 413 p.AddNumber(text) 414 case ruleAction1: 415 p.AddLevel(text) 416 case ruleAction2: 417 p.AddField(text) 418 case ruleAction3: 419 p.AddString(text) 420 case ruleAction4: 421 p.AddExpr() 422 case ruleAction5: 423 p.AddTupleValue() 424 case ruleAction6: 425 p.AddTupleValue() 426 case ruleAction7: 427 p.AddTuple() 428 case ruleAction8: 429 p.AddBinary(ast.IN) 430 case ruleAction9: 431 p.AddTuple() 432 case ruleAction10: 433 p.AddBinary(ast.IN) 434 p.AddUnary(ast.LNOT) 435 case ruleAction11: 436 p.AddMember(text) 437 case ruleAction12: 438 p.AddSubscript(text) 439 case ruleAction13: 440 p.AddUnary(ast.NOT) 441 case ruleAction14: 442 p.AddBinary(ast.GE) 443 case ruleAction15: 444 p.AddBinary(ast.GT) 445 case ruleAction16: 446 p.AddBinary(ast.LE) 447 case ruleAction17: 448 p.AddBinary(ast.LT) 449 case ruleAction18: 450 p.AddBinary(ast.EQ) 451 case ruleAction19: 452 p.AddBinary(ast.NE) 453 case ruleAction20: 454 p.AddBinary(ast.EQ) 455 case ruleAction21: 456 p.AddBinaryContains() 457 case ruleAction22: 458 p.AddBinary(ast.AND) 459 case ruleAction23: 460 p.AddBinary(ast.AND) 461 case ruleAction24: 462 p.AddBinary(ast.AND) 463 case ruleAction25: 464 p.AddBinary(ast.OR) 465 case ruleAction26: 466 p.AddBinary(ast.OR) 467 case ruleAction27: 468 p.AddUnary(ast.LNOT) 469 470 } 471 } 472 _, _, _, _, _ = buffer, _buffer, text, begin, end 473 } 474 475 func (p *parser) Init() { 476 var ( 477 max token32 478 position, tokenIndex uint32 479 buffer []rune 480 ) 481 p.reset = func() { 482 max = token32{} 483 position, tokenIndex = 0, 0 484 485 p.buffer = []rune(p.Buffer) 486 if len(p.buffer) == 0 || p.buffer[len(p.buffer)-1] != endSymbol { 487 p.buffer = append(p.buffer, endSymbol) 488 } 489 buffer = p.buffer 490 } 491 p.reset() 492 493 _rules := p.rules 494 tree := tokens32{tree: make([]token32, math.MaxInt16)} 495 p.parse = func(rule ...int) error { 496 r := 1 497 if len(rule) > 0 { 498 r = rule[0] 499 } 500 matches := p.rules[r]() 501 p.tokens32 = tree 502 if matches { 503 p.Trim(tokenIndex) 504 return nil 505 } 506 return &parseError{p, max} 507 } 508 509 add := func(rule pegRule, begin uint32) { 510 tree.Add(rule, begin, position, tokenIndex) 511 tokenIndex++ 512 if begin != position && position > max.end { 513 max = token32{rule, begin, position} 514 } 515 } 516 517 matchDot := func() bool { 518 if buffer[position] != endSymbol { 519 position++ 520 return true 521 } 522 return false 523 } 524 525 /*matchChar := func(c byte) bool { 526 if buffer[position] == c { 527 position++ 528 return true 529 } 530 return false 531 }*/ 532 533 /*matchRange := func(lower byte, upper byte) bool { 534 if c := buffer[position]; c >= lower && c <= upper { 535 position++ 536 return true 537 } 538 return false 539 }*/ 540 541 _rules = [...]func() bool{ 542 nil, 543 /* 0 Query <- <(_ Expr _ EOF)> */ 544 func() bool { 545 position0, tokenIndex0 := position, tokenIndex 546 { 547 position1 := position 548 if !_rules[rule_]() { 549 goto l0 550 } 551 if !_rules[ruleExpr]() { 552 goto l0 553 } 554 if !_rules[rule_]() { 555 goto l0 556 } 557 { 558 position2 := position 559 { 560 position3, tokenIndex3 := position, tokenIndex 561 if !matchDot() { 562 goto l3 563 } 564 goto l0 565 l3: 566 position, tokenIndex = position3, tokenIndex3 567 } 568 add(ruleEOF, position2) 569 } 570 add(ruleQuery, position1) 571 } 572 return true 573 l0: 574 position, tokenIndex = position0, tokenIndex0 575 return false 576 }, 577 /* 1 PrimaryExpr <- <((Severity Action1) / ((&('(') (LPAR Expr RPAR Action4)) | (&('"') (String Action3)) | (&('\t' | '\n' | '\r' | ' ' | '.' | '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9') (Number Action0)) | (&('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') (Id Action2))))> */ 578 nil, 579 /* 2 TupleExpr <- <(LPAR Expr Action5 (COMMA Expr Action6)* RPAR)> */ 580 func() bool { 581 position5, tokenIndex5 := position, tokenIndex 582 { 583 position6 := position 584 if !_rules[ruleLPAR]() { 585 goto l5 586 } 587 if !_rules[ruleExpr]() { 588 goto l5 589 } 590 { 591 add(ruleAction5, position) 592 } 593 l8: 594 { 595 position9, tokenIndex9 := position, tokenIndex 596 { 597 position10 := position 598 if buffer[position] != rune(',') { 599 goto l9 600 } 601 position++ 602 if !_rules[rule_]() { 603 goto l9 604 } 605 add(ruleCOMMA, position10) 606 } 607 if !_rules[ruleExpr]() { 608 goto l9 609 } 610 { 611 add(ruleAction6, position) 612 } 613 goto l8 614 l9: 615 position, tokenIndex = position9, tokenIndex9 616 } 617 if !_rules[ruleRPAR]() { 618 goto l5 619 } 620 add(ruleTupleExpr, position6) 621 } 622 return true 623 l5: 624 position, tokenIndex = position5, tokenIndex5 625 return false 626 }, 627 /* 3 InExpr <- <(IN Action7 TupleExpr Action8)> */ 628 nil, 629 /* 4 NotInExpr <- <(NOT IN Action9 TupleExpr Action10)> */ 630 nil, 631 /* 5 PostfixExpr <- <(PrimaryExpr ((&('n') NotInExpr) | (&('i') InExpr) | (&('[') (LBRK Number RBRK Action12)) | (&('.') (DOT Id Action11)))*)> */ 632 nil, 633 /* 6 UnaryExpr <- <(PostfixExpr / (BANG RelationalExpr Action13))> */ 634 func() bool { 635 position15, tokenIndex15 := position, tokenIndex 636 { 637 position16 := position 638 { 639 position17, tokenIndex17 := position, tokenIndex 640 { 641 position19 := position 642 { 643 position20 := position 644 { 645 position21, tokenIndex21 := position, tokenIndex 646 { 647 position23 := position 648 { 649 switch buffer[position] { 650 case 'f': 651 { 652 position25 := position 653 { 654 position26 := position 655 if buffer[position] != rune('f') { 656 goto l22 657 } 658 position++ 659 if buffer[position] != rune('a') { 660 goto l22 661 } 662 position++ 663 if buffer[position] != rune('t') { 664 goto l22 665 } 666 position++ 667 if buffer[position] != rune('a') { 668 goto l22 669 } 670 position++ 671 if buffer[position] != rune('l') { 672 goto l22 673 } 674 position++ 675 add(rulePegText, position26) 676 } 677 { 678 position27, tokenIndex27 := position, tokenIndex 679 if !_rules[ruleIdChar]() { 680 goto l27 681 } 682 goto l22 683 l27: 684 position, tokenIndex = position27, tokenIndex27 685 } 686 if !_rules[rule_]() { 687 goto l22 688 } 689 add(ruleFATAL, position25) 690 } 691 break 692 case 'e': 693 { 694 position28 := position 695 { 696 position29 := position 697 if buffer[position] != rune('e') { 698 goto l22 699 } 700 position++ 701 if buffer[position] != rune('r') { 702 goto l22 703 } 704 position++ 705 if buffer[position] != rune('r') { 706 goto l22 707 } 708 position++ 709 if buffer[position] != rune('o') { 710 goto l22 711 } 712 position++ 713 if buffer[position] != rune('r') { 714 goto l22 715 } 716 position++ 717 add(rulePegText, position29) 718 } 719 { 720 position30, tokenIndex30 := position, tokenIndex 721 if !_rules[ruleIdChar]() { 722 goto l30 723 } 724 goto l22 725 l30: 726 position, tokenIndex = position30, tokenIndex30 727 } 728 if !_rules[rule_]() { 729 goto l22 730 } 731 add(ruleERROR, position28) 732 } 733 break 734 case 'w': 735 { 736 position31 := position 737 { 738 position32 := position 739 if buffer[position] != rune('w') { 740 goto l22 741 } 742 position++ 743 if buffer[position] != rune('a') { 744 goto l22 745 } 746 position++ 747 if buffer[position] != rune('r') { 748 goto l22 749 } 750 position++ 751 if buffer[position] != rune('n') { 752 goto l22 753 } 754 position++ 755 add(rulePegText, position32) 756 } 757 { 758 position33, tokenIndex33 := position, tokenIndex 759 if !_rules[ruleIdChar]() { 760 goto l33 761 } 762 goto l22 763 l33: 764 position, tokenIndex = position33, tokenIndex33 765 } 766 if !_rules[rule_]() { 767 goto l22 768 } 769 add(ruleWARN, position31) 770 } 771 break 772 case 'i': 773 { 774 position34 := position 775 { 776 position35 := position 777 if buffer[position] != rune('i') { 778 goto l22 779 } 780 position++ 781 if buffer[position] != rune('n') { 782 goto l22 783 } 784 position++ 785 if buffer[position] != rune('f') { 786 goto l22 787 } 788 position++ 789 if buffer[position] != rune('o') { 790 goto l22 791 } 792 position++ 793 add(rulePegText, position35) 794 } 795 { 796 position36, tokenIndex36 := position, tokenIndex 797 if !_rules[ruleIdChar]() { 798 goto l36 799 } 800 goto l22 801 l36: 802 position, tokenIndex = position36, tokenIndex36 803 } 804 if !_rules[rule_]() { 805 goto l22 806 } 807 add(ruleINFO, position34) 808 } 809 break 810 default: 811 { 812 position37 := position 813 { 814 position38 := position 815 if buffer[position] != rune('d') { 816 goto l22 817 } 818 position++ 819 if buffer[position] != rune('e') { 820 goto l22 821 } 822 position++ 823 if buffer[position] != rune('b') { 824 goto l22 825 } 826 position++ 827 if buffer[position] != rune('u') { 828 goto l22 829 } 830 position++ 831 if buffer[position] != rune('g') { 832 goto l22 833 } 834 position++ 835 add(rulePegText, position38) 836 } 837 { 838 position39, tokenIndex39 := position, tokenIndex 839 if !_rules[ruleIdChar]() { 840 goto l39 841 } 842 goto l22 843 l39: 844 position, tokenIndex = position39, tokenIndex39 845 } 846 if !_rules[rule_]() { 847 goto l22 848 } 849 add(ruleDEBUG, position37) 850 } 851 break 852 } 853 } 854 855 add(ruleSeverity, position23) 856 } 857 { 858 add(ruleAction1, position) 859 } 860 goto l21 861 l22: 862 position, tokenIndex = position21, tokenIndex21 863 { 864 switch buffer[position] { 865 case '(': 866 if !_rules[ruleLPAR]() { 867 goto l18 868 } 869 if !_rules[ruleExpr]() { 870 goto l18 871 } 872 if !_rules[ruleRPAR]() { 873 goto l18 874 } 875 { 876 add(ruleAction4, position) 877 } 878 break 879 case '"': 880 { 881 position43 := position 882 if buffer[position] != rune('"') { 883 goto l18 884 } 885 position++ 886 { 887 position46 := position 888 l47: 889 { 890 position48, tokenIndex48 := position, tokenIndex 891 { 892 position49 := position 893 { 894 position50, tokenIndex50 := position, tokenIndex 895 { 896 position52 := position 897 { 898 position53, tokenIndex53 := position, tokenIndex 899 { 900 position55 := position 901 if buffer[position] != rune('\\') { 902 goto l54 903 } 904 position++ 905 { 906 switch buffer[position] { 907 case 'v': 908 if buffer[position] != rune('v') { 909 goto l54 910 } 911 position++ 912 break 913 case 't': 914 if buffer[position] != rune('t') { 915 goto l54 916 } 917 position++ 918 break 919 case 'r': 920 if buffer[position] != rune('r') { 921 goto l54 922 } 923 position++ 924 break 925 case 'n': 926 if buffer[position] != rune('n') { 927 goto l54 928 } 929 position++ 930 break 931 case 'f': 932 if buffer[position] != rune('f') { 933 goto l54 934 } 935 position++ 936 break 937 case 'b': 938 if buffer[position] != rune('b') { 939 goto l54 940 } 941 position++ 942 break 943 case 'a': 944 if buffer[position] != rune('a') { 945 goto l54 946 } 947 position++ 948 break 949 case '\\': 950 if buffer[position] != rune('\\') { 951 goto l54 952 } 953 position++ 954 break 955 case '?': 956 if buffer[position] != rune('?') { 957 goto l54 958 } 959 position++ 960 break 961 case '"': 962 if buffer[position] != rune('"') { 963 goto l54 964 } 965 position++ 966 break 967 default: 968 if buffer[position] != rune('\'') { 969 goto l54 970 } 971 position++ 972 break 973 } 974 } 975 976 add(ruleSimpleEscape, position55) 977 } 978 goto l53 979 l54: 980 position, tokenIndex = position53, tokenIndex53 981 { 982 position58 := position 983 if buffer[position] != rune('\\') { 984 goto l57 985 } 986 position++ 987 if c := buffer[position]; c < rune('0') || c > rune('7') { 988 goto l57 989 } 990 position++ 991 { 992 position59, tokenIndex59 := position, tokenIndex 993 if c := buffer[position]; c < rune('0') || c > rune('7') { 994 goto l59 995 } 996 position++ 997 goto l60 998 l59: 999 position, tokenIndex = position59, tokenIndex59 1000 } 1001 l60: 1002 { 1003 position61, tokenIndex61 := position, tokenIndex 1004 if c := buffer[position]; c < rune('0') || c > rune('7') { 1005 goto l61 1006 } 1007 position++ 1008 goto l62 1009 l61: 1010 position, tokenIndex = position61, tokenIndex61 1011 } 1012 l62: 1013 add(ruleOctalEscape, position58) 1014 } 1015 goto l53 1016 l57: 1017 position, tokenIndex = position53, tokenIndex53 1018 { 1019 position64 := position 1020 if buffer[position] != rune('\\') { 1021 goto l63 1022 } 1023 position++ 1024 if buffer[position] != rune('x') { 1025 goto l63 1026 } 1027 position++ 1028 if !_rules[ruleHexDigit]() { 1029 goto l63 1030 } 1031 l65: 1032 { 1033 position66, tokenIndex66 := position, tokenIndex 1034 if !_rules[ruleHexDigit]() { 1035 goto l66 1036 } 1037 goto l65 1038 l66: 1039 position, tokenIndex = position66, tokenIndex66 1040 } 1041 add(ruleHexEscape, position64) 1042 } 1043 goto l53 1044 l63: 1045 position, tokenIndex = position53, tokenIndex53 1046 { 1047 position67 := position 1048 { 1049 position68, tokenIndex68 := position, tokenIndex 1050 if buffer[position] != rune('\\') { 1051 goto l69 1052 } 1053 position++ 1054 if buffer[position] != rune('u') { 1055 goto l69 1056 } 1057 position++ 1058 if !_rules[ruleHexQuad]() { 1059 goto l69 1060 } 1061 goto l68 1062 l69: 1063 position, tokenIndex = position68, tokenIndex68 1064 if buffer[position] != rune('\\') { 1065 goto l51 1066 } 1067 position++ 1068 if buffer[position] != rune('U') { 1069 goto l51 1070 } 1071 position++ 1072 if !_rules[ruleHexQuad]() { 1073 goto l51 1074 } 1075 if !_rules[ruleHexQuad]() { 1076 goto l51 1077 } 1078 } 1079 l68: 1080 add(ruleUniversalCharacter, position67) 1081 } 1082 } 1083 l53: 1084 add(ruleEscape, position52) 1085 } 1086 goto l50 1087 l51: 1088 position, tokenIndex = position50, tokenIndex50 1089 { 1090 position70, tokenIndex70 := position, tokenIndex 1091 { 1092 switch buffer[position] { 1093 case '\\': 1094 if buffer[position] != rune('\\') { 1095 goto l70 1096 } 1097 position++ 1098 break 1099 case '\n': 1100 if buffer[position] != rune('\n') { 1101 goto l70 1102 } 1103 position++ 1104 break 1105 default: 1106 if buffer[position] != rune('"') { 1107 goto l70 1108 } 1109 position++ 1110 break 1111 } 1112 } 1113 1114 goto l48 1115 l70: 1116 position, tokenIndex = position70, tokenIndex70 1117 } 1118 if !matchDot() { 1119 goto l48 1120 } 1121 } 1122 l50: 1123 add(ruleStringChar, position49) 1124 } 1125 goto l47 1126 l48: 1127 position, tokenIndex = position48, tokenIndex48 1128 } 1129 add(rulePegText, position46) 1130 } 1131 if buffer[position] != rune('"') { 1132 goto l18 1133 } 1134 position++ 1135 if !_rules[rule_]() { 1136 goto l18 1137 } 1138 l44: 1139 { 1140 position45, tokenIndex45 := position, tokenIndex 1141 if buffer[position] != rune('"') { 1142 goto l45 1143 } 1144 position++ 1145 { 1146 position72 := position 1147 l73: 1148 { 1149 position74, tokenIndex74 := position, tokenIndex 1150 { 1151 position75 := position 1152 { 1153 position76, tokenIndex76 := position, tokenIndex 1154 { 1155 position78 := position 1156 { 1157 position79, tokenIndex79 := position, tokenIndex 1158 { 1159 position81 := position 1160 if buffer[position] != rune('\\') { 1161 goto l80 1162 } 1163 position++ 1164 { 1165 switch buffer[position] { 1166 case 'v': 1167 if buffer[position] != rune('v') { 1168 goto l80 1169 } 1170 position++ 1171 break 1172 case 't': 1173 if buffer[position] != rune('t') { 1174 goto l80 1175 } 1176 position++ 1177 break 1178 case 'r': 1179 if buffer[position] != rune('r') { 1180 goto l80 1181 } 1182 position++ 1183 break 1184 case 'n': 1185 if buffer[position] != rune('n') { 1186 goto l80 1187 } 1188 position++ 1189 break 1190 case 'f': 1191 if buffer[position] != rune('f') { 1192 goto l80 1193 } 1194 position++ 1195 break 1196 case 'b': 1197 if buffer[position] != rune('b') { 1198 goto l80 1199 } 1200 position++ 1201 break 1202 case 'a': 1203 if buffer[position] != rune('a') { 1204 goto l80 1205 } 1206 position++ 1207 break 1208 case '\\': 1209 if buffer[position] != rune('\\') { 1210 goto l80 1211 } 1212 position++ 1213 break 1214 case '?': 1215 if buffer[position] != rune('?') { 1216 goto l80 1217 } 1218 position++ 1219 break 1220 case '"': 1221 if buffer[position] != rune('"') { 1222 goto l80 1223 } 1224 position++ 1225 break 1226 default: 1227 if buffer[position] != rune('\'') { 1228 goto l80 1229 } 1230 position++ 1231 break 1232 } 1233 } 1234 1235 add(ruleSimpleEscape, position81) 1236 } 1237 goto l79 1238 l80: 1239 position, tokenIndex = position79, tokenIndex79 1240 { 1241 position84 := position 1242 if buffer[position] != rune('\\') { 1243 goto l83 1244 } 1245 position++ 1246 if c := buffer[position]; c < rune('0') || c > rune('7') { 1247 goto l83 1248 } 1249 position++ 1250 { 1251 position85, tokenIndex85 := position, tokenIndex 1252 if c := buffer[position]; c < rune('0') || c > rune('7') { 1253 goto l85 1254 } 1255 position++ 1256 goto l86 1257 l85: 1258 position, tokenIndex = position85, tokenIndex85 1259 } 1260 l86: 1261 { 1262 position87, tokenIndex87 := position, tokenIndex 1263 if c := buffer[position]; c < rune('0') || c > rune('7') { 1264 goto l87 1265 } 1266 position++ 1267 goto l88 1268 l87: 1269 position, tokenIndex = position87, tokenIndex87 1270 } 1271 l88: 1272 add(ruleOctalEscape, position84) 1273 } 1274 goto l79 1275 l83: 1276 position, tokenIndex = position79, tokenIndex79 1277 { 1278 position90 := position 1279 if buffer[position] != rune('\\') { 1280 goto l89 1281 } 1282 position++ 1283 if buffer[position] != rune('x') { 1284 goto l89 1285 } 1286 position++ 1287 if !_rules[ruleHexDigit]() { 1288 goto l89 1289 } 1290 l91: 1291 { 1292 position92, tokenIndex92 := position, tokenIndex 1293 if !_rules[ruleHexDigit]() { 1294 goto l92 1295 } 1296 goto l91 1297 l92: 1298 position, tokenIndex = position92, tokenIndex92 1299 } 1300 add(ruleHexEscape, position90) 1301 } 1302 goto l79 1303 l89: 1304 position, tokenIndex = position79, tokenIndex79 1305 { 1306 position93 := position 1307 { 1308 position94, tokenIndex94 := position, tokenIndex 1309 if buffer[position] != rune('\\') { 1310 goto l95 1311 } 1312 position++ 1313 if buffer[position] != rune('u') { 1314 goto l95 1315 } 1316 position++ 1317 if !_rules[ruleHexQuad]() { 1318 goto l95 1319 } 1320 goto l94 1321 l95: 1322 position, tokenIndex = position94, tokenIndex94 1323 if buffer[position] != rune('\\') { 1324 goto l77 1325 } 1326 position++ 1327 if buffer[position] != rune('U') { 1328 goto l77 1329 } 1330 position++ 1331 if !_rules[ruleHexQuad]() { 1332 goto l77 1333 } 1334 if !_rules[ruleHexQuad]() { 1335 goto l77 1336 } 1337 } 1338 l94: 1339 add(ruleUniversalCharacter, position93) 1340 } 1341 } 1342 l79: 1343 add(ruleEscape, position78) 1344 } 1345 goto l76 1346 l77: 1347 position, tokenIndex = position76, tokenIndex76 1348 { 1349 position96, tokenIndex96 := position, tokenIndex 1350 { 1351 switch buffer[position] { 1352 case '\\': 1353 if buffer[position] != rune('\\') { 1354 goto l96 1355 } 1356 position++ 1357 break 1358 case '\n': 1359 if buffer[position] != rune('\n') { 1360 goto l96 1361 } 1362 position++ 1363 break 1364 default: 1365 if buffer[position] != rune('"') { 1366 goto l96 1367 } 1368 position++ 1369 break 1370 } 1371 } 1372 1373 goto l74 1374 l96: 1375 position, tokenIndex = position96, tokenIndex96 1376 } 1377 if !matchDot() { 1378 goto l74 1379 } 1380 } 1381 l76: 1382 add(ruleStringChar, position75) 1383 } 1384 goto l73 1385 l74: 1386 position, tokenIndex = position74, tokenIndex74 1387 } 1388 add(rulePegText, position72) 1389 } 1390 if buffer[position] != rune('"') { 1391 goto l45 1392 } 1393 position++ 1394 if !_rules[rule_]() { 1395 goto l45 1396 } 1397 goto l44 1398 l45: 1399 position, tokenIndex = position45, tokenIndex45 1400 } 1401 add(ruleString, position43) 1402 } 1403 { 1404 add(ruleAction3, position) 1405 } 1406 break 1407 case '\t', '\n', '\r', ' ', '.', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9': 1408 if !_rules[ruleNumber]() { 1409 goto l18 1410 } 1411 { 1412 add(ruleAction0, position) 1413 } 1414 break 1415 default: 1416 if !_rules[ruleId]() { 1417 goto l18 1418 } 1419 { 1420 add(ruleAction2, position) 1421 } 1422 break 1423 } 1424 } 1425 1426 } 1427 l21: 1428 add(rulePrimaryExpr, position20) 1429 } 1430 l101: 1431 { 1432 position102, tokenIndex102 := position, tokenIndex 1433 { 1434 switch buffer[position] { 1435 case 'n': 1436 { 1437 position104 := position 1438 if !_rules[ruleNOT]() { 1439 goto l102 1440 } 1441 if !_rules[ruleIN]() { 1442 goto l102 1443 } 1444 { 1445 add(ruleAction9, position) 1446 } 1447 if !_rules[ruleTupleExpr]() { 1448 goto l102 1449 } 1450 { 1451 add(ruleAction10, position) 1452 } 1453 add(ruleNotInExpr, position104) 1454 } 1455 break 1456 case 'i': 1457 { 1458 position107 := position 1459 if !_rules[ruleIN]() { 1460 goto l102 1461 } 1462 { 1463 add(ruleAction7, position) 1464 } 1465 if !_rules[ruleTupleExpr]() { 1466 goto l102 1467 } 1468 { 1469 add(ruleAction8, position) 1470 } 1471 add(ruleInExpr, position107) 1472 } 1473 break 1474 case '[': 1475 { 1476 position110 := position 1477 if buffer[position] != rune('[') { 1478 goto l102 1479 } 1480 position++ 1481 if !_rules[rule_]() { 1482 goto l102 1483 } 1484 add(ruleLBRK, position110) 1485 } 1486 if !_rules[ruleNumber]() { 1487 goto l102 1488 } 1489 { 1490 position111 := position 1491 if buffer[position] != rune(']') { 1492 goto l102 1493 } 1494 position++ 1495 if !_rules[rule_]() { 1496 goto l102 1497 } 1498 add(ruleRBRK, position111) 1499 } 1500 { 1501 add(ruleAction12, position) 1502 } 1503 break 1504 default: 1505 { 1506 position113 := position 1507 if buffer[position] != rune('.') { 1508 goto l102 1509 } 1510 position++ 1511 if !_rules[rule_]() { 1512 goto l102 1513 } 1514 add(ruleDOT, position113) 1515 } 1516 if !_rules[ruleId]() { 1517 goto l102 1518 } 1519 { 1520 add(ruleAction11, position) 1521 } 1522 break 1523 } 1524 } 1525 1526 goto l101 1527 l102: 1528 position, tokenIndex = position102, tokenIndex102 1529 } 1530 add(rulePostfixExpr, position19) 1531 } 1532 goto l17 1533 l18: 1534 position, tokenIndex = position17, tokenIndex17 1535 { 1536 position115 := position 1537 if buffer[position] != rune('!') { 1538 goto l15 1539 } 1540 position++ 1541 { 1542 position116, tokenIndex116 := position, tokenIndex 1543 if buffer[position] != rune('=') { 1544 goto l116 1545 } 1546 position++ 1547 goto l15 1548 l116: 1549 position, tokenIndex = position116, tokenIndex116 1550 } 1551 if !_rules[rule_]() { 1552 goto l15 1553 } 1554 add(ruleBANG, position115) 1555 } 1556 if !_rules[ruleRelationalExpr]() { 1557 goto l15 1558 } 1559 { 1560 add(ruleAction13, position) 1561 } 1562 } 1563 l17: 1564 add(ruleUnaryExpr, position16) 1565 } 1566 return true 1567 l15: 1568 position, tokenIndex = position15, tokenIndex15 1569 return false 1570 }, 1571 /* 7 RelationalExpr <- <(UnaryExpr ((GE UnaryExpr Action14) / (GT UnaryExpr Action15) / (LE UnaryExpr Action16) / (LT UnaryExpr Action17))*)> */ 1572 func() bool { 1573 position118, tokenIndex118 := position, tokenIndex 1574 { 1575 position119 := position 1576 if !_rules[ruleUnaryExpr]() { 1577 goto l118 1578 } 1579 l120: 1580 { 1581 position121, tokenIndex121 := position, tokenIndex 1582 { 1583 position122, tokenIndex122 := position, tokenIndex 1584 { 1585 position124 := position 1586 if buffer[position] != rune('>') { 1587 goto l123 1588 } 1589 position++ 1590 if buffer[position] != rune('=') { 1591 goto l123 1592 } 1593 position++ 1594 if !_rules[rule_]() { 1595 goto l123 1596 } 1597 add(ruleGE, position124) 1598 } 1599 if !_rules[ruleUnaryExpr]() { 1600 goto l123 1601 } 1602 { 1603 add(ruleAction14, position) 1604 } 1605 goto l122 1606 l123: 1607 position, tokenIndex = position122, tokenIndex122 1608 { 1609 position127 := position 1610 if buffer[position] != rune('>') { 1611 goto l126 1612 } 1613 position++ 1614 { 1615 position128, tokenIndex128 := position, tokenIndex 1616 if buffer[position] != rune('=') { 1617 goto l128 1618 } 1619 position++ 1620 goto l126 1621 l128: 1622 position, tokenIndex = position128, tokenIndex128 1623 } 1624 if !_rules[rule_]() { 1625 goto l126 1626 } 1627 add(ruleGT, position127) 1628 } 1629 if !_rules[ruleUnaryExpr]() { 1630 goto l126 1631 } 1632 { 1633 add(ruleAction15, position) 1634 } 1635 goto l122 1636 l126: 1637 position, tokenIndex = position122, tokenIndex122 1638 { 1639 position131 := position 1640 if buffer[position] != rune('<') { 1641 goto l130 1642 } 1643 position++ 1644 if buffer[position] != rune('=') { 1645 goto l130 1646 } 1647 position++ 1648 if !_rules[rule_]() { 1649 goto l130 1650 } 1651 add(ruleLE, position131) 1652 } 1653 if !_rules[ruleUnaryExpr]() { 1654 goto l130 1655 } 1656 { 1657 add(ruleAction16, position) 1658 } 1659 goto l122 1660 l130: 1661 position, tokenIndex = position122, tokenIndex122 1662 { 1663 position133 := position 1664 if buffer[position] != rune('<') { 1665 goto l121 1666 } 1667 position++ 1668 { 1669 position134, tokenIndex134 := position, tokenIndex 1670 if buffer[position] != rune('=') { 1671 goto l134 1672 } 1673 position++ 1674 goto l121 1675 l134: 1676 position, tokenIndex = position134, tokenIndex134 1677 } 1678 if !_rules[rule_]() { 1679 goto l121 1680 } 1681 add(ruleLT, position133) 1682 } 1683 if !_rules[ruleUnaryExpr]() { 1684 goto l121 1685 } 1686 { 1687 add(ruleAction17, position) 1688 } 1689 } 1690 l122: 1691 goto l120 1692 l121: 1693 position, tokenIndex = position121, tokenIndex121 1694 } 1695 add(ruleRelationalExpr, position119) 1696 } 1697 return true 1698 l118: 1699 position, tokenIndex = position118, tokenIndex118 1700 return false 1701 }, 1702 /* 8 EqualityExpr <- <(RelationalExpr ((EQEQ RelationalExpr Action18) / ((&('c') (CONTAINS RelationalExpr Action21)) | (&('=') (EQ RelationalExpr Action20)) | (&('!') (NE RelationalExpr Action19))))*)> */ 1703 func() bool { 1704 position136, tokenIndex136 := position, tokenIndex 1705 { 1706 position137 := position 1707 if !_rules[ruleRelationalExpr]() { 1708 goto l136 1709 } 1710 l138: 1711 { 1712 position139, tokenIndex139 := position, tokenIndex 1713 { 1714 position140, tokenIndex140 := position, tokenIndex 1715 { 1716 position142 := position 1717 if buffer[position] != rune('=') { 1718 goto l141 1719 } 1720 position++ 1721 if buffer[position] != rune('=') { 1722 goto l141 1723 } 1724 position++ 1725 if !_rules[rule_]() { 1726 goto l141 1727 } 1728 add(ruleEQEQ, position142) 1729 } 1730 if !_rules[ruleRelationalExpr]() { 1731 goto l141 1732 } 1733 { 1734 add(ruleAction18, position) 1735 } 1736 goto l140 1737 l141: 1738 position, tokenIndex = position140, tokenIndex140 1739 { 1740 switch buffer[position] { 1741 case 'c': 1742 { 1743 position145 := position 1744 if buffer[position] != rune('c') { 1745 goto l139 1746 } 1747 position++ 1748 if buffer[position] != rune('o') { 1749 goto l139 1750 } 1751 position++ 1752 if buffer[position] != rune('n') { 1753 goto l139 1754 } 1755 position++ 1756 if buffer[position] != rune('t') { 1757 goto l139 1758 } 1759 position++ 1760 if buffer[position] != rune('a') { 1761 goto l139 1762 } 1763 position++ 1764 if buffer[position] != rune('i') { 1765 goto l139 1766 } 1767 position++ 1768 if buffer[position] != rune('n') { 1769 goto l139 1770 } 1771 position++ 1772 if buffer[position] != rune('s') { 1773 goto l139 1774 } 1775 position++ 1776 { 1777 position146, tokenIndex146 := position, tokenIndex 1778 if !_rules[ruleIdChar]() { 1779 goto l146 1780 } 1781 goto l139 1782 l146: 1783 position, tokenIndex = position146, tokenIndex146 1784 } 1785 if !_rules[rule_]() { 1786 goto l139 1787 } 1788 add(ruleCONTAINS, position145) 1789 } 1790 if !_rules[ruleRelationalExpr]() { 1791 goto l139 1792 } 1793 { 1794 add(ruleAction21, position) 1795 } 1796 break 1797 case '=': 1798 { 1799 position148 := position 1800 if buffer[position] != rune('=') { 1801 goto l139 1802 } 1803 position++ 1804 if !_rules[rule_]() { 1805 goto l139 1806 } 1807 add(ruleEQ, position148) 1808 } 1809 if !_rules[ruleRelationalExpr]() { 1810 goto l139 1811 } 1812 { 1813 add(ruleAction20, position) 1814 } 1815 break 1816 default: 1817 { 1818 position150 := position 1819 if buffer[position] != rune('!') { 1820 goto l139 1821 } 1822 position++ 1823 if buffer[position] != rune('=') { 1824 goto l139 1825 } 1826 position++ 1827 if !_rules[rule_]() { 1828 goto l139 1829 } 1830 add(ruleNE, position150) 1831 } 1832 if !_rules[ruleRelationalExpr]() { 1833 goto l139 1834 } 1835 { 1836 add(ruleAction19, position) 1837 } 1838 break 1839 } 1840 } 1841 1842 } 1843 l140: 1844 goto l138 1845 l139: 1846 position, tokenIndex = position139, tokenIndex139 1847 } 1848 add(ruleEqualityExpr, position137) 1849 } 1850 return true 1851 l136: 1852 position, tokenIndex = position136, tokenIndex136 1853 return false 1854 }, 1855 /* 9 LogicalAndExpr <- <(EqualityExpr ((AND EqualityExpr Action22) / (ANDAND EqualityExpr Action23) / (_ EqualityExpr Action24))*)> */ 1856 func() bool { 1857 position152, tokenIndex152 := position, tokenIndex 1858 { 1859 position153 := position 1860 if !_rules[ruleEqualityExpr]() { 1861 goto l152 1862 } 1863 l154: 1864 { 1865 position155, tokenIndex155 := position, tokenIndex 1866 { 1867 position156, tokenIndex156 := position, tokenIndex 1868 { 1869 position158 := position 1870 if buffer[position] != rune('a') { 1871 goto l157 1872 } 1873 position++ 1874 if buffer[position] != rune('n') { 1875 goto l157 1876 } 1877 position++ 1878 if buffer[position] != rune('d') { 1879 goto l157 1880 } 1881 position++ 1882 { 1883 position159, tokenIndex159 := position, tokenIndex 1884 if !_rules[ruleIdChar]() { 1885 goto l159 1886 } 1887 goto l157 1888 l159: 1889 position, tokenIndex = position159, tokenIndex159 1890 } 1891 if !_rules[rule_]() { 1892 goto l157 1893 } 1894 add(ruleAND, position158) 1895 } 1896 if !_rules[ruleEqualityExpr]() { 1897 goto l157 1898 } 1899 { 1900 add(ruleAction22, position) 1901 } 1902 goto l156 1903 l157: 1904 position, tokenIndex = position156, tokenIndex156 1905 { 1906 position162 := position 1907 if buffer[position] != rune('&') { 1908 goto l161 1909 } 1910 position++ 1911 if buffer[position] != rune('&') { 1912 goto l161 1913 } 1914 position++ 1915 if !_rules[rule_]() { 1916 goto l161 1917 } 1918 add(ruleANDAND, position162) 1919 } 1920 if !_rules[ruleEqualityExpr]() { 1921 goto l161 1922 } 1923 { 1924 add(ruleAction23, position) 1925 } 1926 goto l156 1927 l161: 1928 position, tokenIndex = position156, tokenIndex156 1929 if !_rules[rule_]() { 1930 goto l155 1931 } 1932 if !_rules[ruleEqualityExpr]() { 1933 goto l155 1934 } 1935 { 1936 add(ruleAction24, position) 1937 } 1938 } 1939 l156: 1940 goto l154 1941 l155: 1942 position, tokenIndex = position155, tokenIndex155 1943 } 1944 add(ruleLogicalAndExpr, position153) 1945 } 1946 return true 1947 l152: 1948 position, tokenIndex = position152, tokenIndex152 1949 return false 1950 }, 1951 /* 10 LogicalOrExpr <- <(LogicalAndExpr ((OR LogicalAndExpr Action25) / (OROR LogicalAndExpr Action26))*)> */ 1952 func() bool { 1953 position165, tokenIndex165 := position, tokenIndex 1954 { 1955 position166 := position 1956 if !_rules[ruleLogicalAndExpr]() { 1957 goto l165 1958 } 1959 l167: 1960 { 1961 position168, tokenIndex168 := position, tokenIndex 1962 { 1963 position169, tokenIndex169 := position, tokenIndex 1964 { 1965 position171 := position 1966 if buffer[position] != rune('o') { 1967 goto l170 1968 } 1969 position++ 1970 if buffer[position] != rune('r') { 1971 goto l170 1972 } 1973 position++ 1974 { 1975 position172, tokenIndex172 := position, tokenIndex 1976 if !_rules[ruleIdChar]() { 1977 goto l172 1978 } 1979 goto l170 1980 l172: 1981 position, tokenIndex = position172, tokenIndex172 1982 } 1983 if !_rules[rule_]() { 1984 goto l170 1985 } 1986 add(ruleOR, position171) 1987 } 1988 if !_rules[ruleLogicalAndExpr]() { 1989 goto l170 1990 } 1991 { 1992 add(ruleAction25, position) 1993 } 1994 goto l169 1995 l170: 1996 position, tokenIndex = position169, tokenIndex169 1997 { 1998 position174 := position 1999 if buffer[position] != rune('|') { 2000 goto l168 2001 } 2002 position++ 2003 if buffer[position] != rune('|') { 2004 goto l168 2005 } 2006 position++ 2007 if !_rules[rule_]() { 2008 goto l168 2009 } 2010 add(ruleOROR, position174) 2011 } 2012 if !_rules[ruleLogicalAndExpr]() { 2013 goto l168 2014 } 2015 { 2016 add(ruleAction26, position) 2017 } 2018 } 2019 l169: 2020 goto l167 2021 l168: 2022 position, tokenIndex = position168, tokenIndex168 2023 } 2024 add(ruleLogicalOrExpr, position166) 2025 } 2026 return true 2027 l165: 2028 position, tokenIndex = position165, tokenIndex165 2029 return false 2030 }, 2031 /* 11 LowNotExpr <- <(LogicalOrExpr / (NOT LogicalOrExpr Action27))> */ 2032 nil, 2033 /* 12 Expr <- <LowNotExpr> */ 2034 func() bool { 2035 position177, tokenIndex177 := position, tokenIndex 2036 { 2037 position178 := position 2038 { 2039 position179 := position 2040 { 2041 position180, tokenIndex180 := position, tokenIndex 2042 if !_rules[ruleLogicalOrExpr]() { 2043 goto l181 2044 } 2045 goto l180 2046 l181: 2047 position, tokenIndex = position180, tokenIndex180 2048 if !_rules[ruleNOT]() { 2049 goto l177 2050 } 2051 if !_rules[ruleLogicalOrExpr]() { 2052 goto l177 2053 } 2054 { 2055 add(ruleAction27, position) 2056 } 2057 } 2058 l180: 2059 add(ruleLowNotExpr, position179) 2060 } 2061 add(ruleExpr, position178) 2062 } 2063 return true 2064 l177: 2065 position, tokenIndex = position177, tokenIndex177 2066 return false 2067 }, 2068 /* 13 String <- <('"' <StringChar*> '"' _)+> */ 2069 nil, 2070 /* 14 StringChar <- <(Escape / (!((&('\\') '\\') | (&('\n') '\n') | (&('"') '"')) .))> */ 2071 nil, 2072 /* 15 Escape <- <(SimpleEscape / OctalEscape / HexEscape / UniversalCharacter)> */ 2073 nil, 2074 /* 16 SimpleEscape <- <('\\' ((&('v') 'v') | (&('t') 't') | (&('r') 'r') | (&('n') 'n') | (&('f') 'f') | (&('b') 'b') | (&('a') 'a') | (&('\\') '\\') | (&('?') '?') | (&('"') '"') | (&('\'') '\'')))> */ 2075 nil, 2076 /* 17 OctalEscape <- <('\\' [0-7] [0-7]? [0-7]?)> */ 2077 nil, 2078 /* 18 HexEscape <- <('\\' 'x' HexDigit+)> */ 2079 nil, 2080 /* 19 UniversalCharacter <- <(('\\' 'u' HexQuad) / ('\\' 'U' HexQuad HexQuad))> */ 2081 nil, 2082 /* 20 HexQuad <- <(HexDigit HexDigit HexDigit HexDigit)> */ 2083 func() bool { 2084 position190, tokenIndex190 := position, tokenIndex 2085 { 2086 position191 := position 2087 if !_rules[ruleHexDigit]() { 2088 goto l190 2089 } 2090 if !_rules[ruleHexDigit]() { 2091 goto l190 2092 } 2093 if !_rules[ruleHexDigit]() { 2094 goto l190 2095 } 2096 if !_rules[ruleHexDigit]() { 2097 goto l190 2098 } 2099 add(ruleHexQuad, position191) 2100 } 2101 return true 2102 l190: 2103 position, tokenIndex = position190, tokenIndex190 2104 return false 2105 }, 2106 /* 21 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]))> */ 2107 func() bool { 2108 position192, tokenIndex192 := position, tokenIndex 2109 { 2110 position193 := position 2111 { 2112 switch buffer[position] { 2113 case 'A', 'B', 'C', 'D', 'E', 'F': 2114 if c := buffer[position]; c < rune('A') || c > rune('F') { 2115 goto l192 2116 } 2117 position++ 2118 break 2119 case 'a', 'b', 'c', 'd', 'e', 'f': 2120 if c := buffer[position]; c < rune('a') || c > rune('f') { 2121 goto l192 2122 } 2123 position++ 2124 break 2125 default: 2126 if c := buffer[position]; c < rune('0') || c > rune('9') { 2127 goto l192 2128 } 2129 position++ 2130 break 2131 } 2132 } 2133 2134 add(ruleHexDigit, position193) 2135 } 2136 return true 2137 l192: 2138 position, tokenIndex = position192, tokenIndex192 2139 return false 2140 }, 2141 /* 22 Number <- <((<Float> _) / (<Integer> _))> */ 2142 func() bool { 2143 position195, tokenIndex195 := position, tokenIndex 2144 { 2145 position196 := position 2146 { 2147 position197, tokenIndex197 := position, tokenIndex 2148 { 2149 position199 := position 2150 { 2151 position200 := position 2152 { 2153 position201, tokenIndex201 := position, tokenIndex 2154 { 2155 position203 := position 2156 { 2157 position204, tokenIndex204 := position, tokenIndex 2158 l206: 2159 { 2160 position207, tokenIndex207 := position, tokenIndex 2161 if c := buffer[position]; c < rune('0') || c > rune('9') { 2162 goto l207 2163 } 2164 position++ 2165 goto l206 2166 l207: 2167 position, tokenIndex = position207, tokenIndex207 2168 } 2169 if buffer[position] != rune('.') { 2170 goto l205 2171 } 2172 position++ 2173 if c := buffer[position]; c < rune('0') || c > rune('9') { 2174 goto l205 2175 } 2176 position++ 2177 l208: 2178 { 2179 position209, tokenIndex209 := position, tokenIndex 2180 if c := buffer[position]; c < rune('0') || c > rune('9') { 2181 goto l209 2182 } 2183 position++ 2184 goto l208 2185 l209: 2186 position, tokenIndex = position209, tokenIndex209 2187 } 2188 goto l204 2189 l205: 2190 position, tokenIndex = position204, tokenIndex204 2191 if c := buffer[position]; c < rune('0') || c > rune('9') { 2192 goto l202 2193 } 2194 position++ 2195 l210: 2196 { 2197 position211, tokenIndex211 := position, tokenIndex 2198 if c := buffer[position]; c < rune('0') || c > rune('9') { 2199 goto l211 2200 } 2201 position++ 2202 goto l210 2203 l211: 2204 position, tokenIndex = position211, tokenIndex211 2205 } 2206 if buffer[position] != rune('.') { 2207 goto l202 2208 } 2209 position++ 2210 } 2211 l204: 2212 add(ruleFraction, position203) 2213 } 2214 { 2215 position212, tokenIndex212 := position, tokenIndex 2216 if !_rules[ruleExponent]() { 2217 goto l212 2218 } 2219 goto l213 2220 l212: 2221 position, tokenIndex = position212, tokenIndex212 2222 } 2223 l213: 2224 goto l201 2225 l202: 2226 position, tokenIndex = position201, tokenIndex201 2227 if c := buffer[position]; c < rune('0') || c > rune('9') { 2228 goto l198 2229 } 2230 position++ 2231 l214: 2232 { 2233 position215, tokenIndex215 := position, tokenIndex 2234 if c := buffer[position]; c < rune('0') || c > rune('9') { 2235 goto l215 2236 } 2237 position++ 2238 goto l214 2239 l215: 2240 position, tokenIndex = position215, tokenIndex215 2241 } 2242 if !_rules[ruleExponent]() { 2243 goto l198 2244 } 2245 } 2246 l201: 2247 add(ruleFloat, position200) 2248 } 2249 add(rulePegText, position199) 2250 } 2251 if !_rules[rule_]() { 2252 goto l198 2253 } 2254 goto l197 2255 l198: 2256 position, tokenIndex = position197, tokenIndex197 2257 { 2258 position216 := position 2259 { 2260 position217 := position 2261 l218: 2262 { 2263 position219, tokenIndex219 := position, tokenIndex 2264 if c := buffer[position]; c < rune('0') || c > rune('9') { 2265 goto l219 2266 } 2267 position++ 2268 goto l218 2269 l219: 2270 position, tokenIndex = position219, tokenIndex219 2271 } 2272 add(ruleInteger, position217) 2273 } 2274 add(rulePegText, position216) 2275 } 2276 if !_rules[rule_]() { 2277 goto l195 2278 } 2279 } 2280 l197: 2281 add(ruleNumber, position196) 2282 } 2283 return true 2284 l195: 2285 position, tokenIndex = position195, tokenIndex195 2286 return false 2287 }, 2288 /* 23 Integer <- <[0-9]*> */ 2289 nil, 2290 /* 24 Float <- <((Fraction Exponent?) / ([0-9]+ Exponent))> */ 2291 nil, 2292 /* 25 Fraction <- <(([0-9]* '.' [0-9]+) / ([0-9]+ '.'))> */ 2293 nil, 2294 /* 26 Exponent <- <(('e' / 'E') ('+' / '-')? [0-9]+)> */ 2295 func() bool { 2296 position223, tokenIndex223 := position, tokenIndex 2297 { 2298 position224 := position 2299 { 2300 position225, tokenIndex225 := position, tokenIndex 2301 if buffer[position] != rune('e') { 2302 goto l226 2303 } 2304 position++ 2305 goto l225 2306 l226: 2307 position, tokenIndex = position225, tokenIndex225 2308 if buffer[position] != rune('E') { 2309 goto l223 2310 } 2311 position++ 2312 } 2313 l225: 2314 { 2315 position227, tokenIndex227 := position, tokenIndex 2316 { 2317 position229, tokenIndex229 := position, tokenIndex 2318 if buffer[position] != rune('+') { 2319 goto l230 2320 } 2321 position++ 2322 goto l229 2323 l230: 2324 position, tokenIndex = position229, tokenIndex229 2325 if buffer[position] != rune('-') { 2326 goto l227 2327 } 2328 position++ 2329 } 2330 l229: 2331 goto l228 2332 l227: 2333 position, tokenIndex = position227, tokenIndex227 2334 } 2335 l228: 2336 if c := buffer[position]; c < rune('0') || c > rune('9') { 2337 goto l223 2338 } 2339 position++ 2340 l231: 2341 { 2342 position232, tokenIndex232 := position, tokenIndex 2343 if c := buffer[position]; c < rune('0') || c > rune('9') { 2344 goto l232 2345 } 2346 position++ 2347 goto l231 2348 l232: 2349 position, tokenIndex = position232, tokenIndex232 2350 } 2351 add(ruleExponent, position224) 2352 } 2353 return true 2354 l223: 2355 position, tokenIndex = position223, tokenIndex223 2356 return false 2357 }, 2358 /* 27 Id <- <(!Keyword <(IdCharNoDigit IdChar*)> _)> */ 2359 func() bool { 2360 position233, tokenIndex233 := position, tokenIndex 2361 { 2362 position234 := position 2363 { 2364 position235, tokenIndex235 := position, tokenIndex 2365 { 2366 position236 := position 2367 { 2368 position237, tokenIndex237 := position, tokenIndex 2369 if buffer[position] != rune('i') { 2370 goto l238 2371 } 2372 position++ 2373 if buffer[position] != rune('n') { 2374 goto l238 2375 } 2376 position++ 2377 if buffer[position] != rune('f') { 2378 goto l238 2379 } 2380 position++ 2381 if buffer[position] != rune('o') { 2382 goto l238 2383 } 2384 position++ 2385 goto l237 2386 l238: 2387 position, tokenIndex = position237, tokenIndex237 2388 { 2389 switch buffer[position] { 2390 case 'i': 2391 if buffer[position] != rune('i') { 2392 goto l235 2393 } 2394 position++ 2395 if buffer[position] != rune('n') { 2396 goto l235 2397 } 2398 position++ 2399 break 2400 case 'f': 2401 if buffer[position] != rune('f') { 2402 goto l235 2403 } 2404 position++ 2405 if buffer[position] != rune('a') { 2406 goto l235 2407 } 2408 position++ 2409 if buffer[position] != rune('t') { 2410 goto l235 2411 } 2412 position++ 2413 if buffer[position] != rune('a') { 2414 goto l235 2415 } 2416 position++ 2417 if buffer[position] != rune('l') { 2418 goto l235 2419 } 2420 position++ 2421 break 2422 case 'e': 2423 if buffer[position] != rune('e') { 2424 goto l235 2425 } 2426 position++ 2427 if buffer[position] != rune('r') { 2428 goto l235 2429 } 2430 position++ 2431 if buffer[position] != rune('r') { 2432 goto l235 2433 } 2434 position++ 2435 if buffer[position] != rune('o') { 2436 goto l235 2437 } 2438 position++ 2439 if buffer[position] != rune('r') { 2440 goto l235 2441 } 2442 position++ 2443 break 2444 case 'w': 2445 if buffer[position] != rune('w') { 2446 goto l235 2447 } 2448 position++ 2449 if buffer[position] != rune('a') { 2450 goto l235 2451 } 2452 position++ 2453 if buffer[position] != rune('r') { 2454 goto l235 2455 } 2456 position++ 2457 if buffer[position] != rune('n') { 2458 goto l235 2459 } 2460 position++ 2461 break 2462 case 'd': 2463 if buffer[position] != rune('d') { 2464 goto l235 2465 } 2466 position++ 2467 if buffer[position] != rune('e') { 2468 goto l235 2469 } 2470 position++ 2471 if buffer[position] != rune('b') { 2472 goto l235 2473 } 2474 position++ 2475 if buffer[position] != rune('u') { 2476 goto l235 2477 } 2478 position++ 2479 if buffer[position] != rune('g') { 2480 goto l235 2481 } 2482 position++ 2483 break 2484 case 'c': 2485 if buffer[position] != rune('c') { 2486 goto l235 2487 } 2488 position++ 2489 if buffer[position] != rune('o') { 2490 goto l235 2491 } 2492 position++ 2493 if buffer[position] != rune('n') { 2494 goto l235 2495 } 2496 position++ 2497 if buffer[position] != rune('t') { 2498 goto l235 2499 } 2500 position++ 2501 if buffer[position] != rune('a') { 2502 goto l235 2503 } 2504 position++ 2505 if buffer[position] != rune('i') { 2506 goto l235 2507 } 2508 position++ 2509 if buffer[position] != rune('n') { 2510 goto l235 2511 } 2512 position++ 2513 if buffer[position] != rune('s') { 2514 goto l235 2515 } 2516 position++ 2517 break 2518 case 'n': 2519 if buffer[position] != rune('n') { 2520 goto l235 2521 } 2522 position++ 2523 if buffer[position] != rune('o') { 2524 goto l235 2525 } 2526 position++ 2527 if buffer[position] != rune('t') { 2528 goto l235 2529 } 2530 position++ 2531 break 2532 case 'a': 2533 if buffer[position] != rune('a') { 2534 goto l235 2535 } 2536 position++ 2537 if buffer[position] != rune('n') { 2538 goto l235 2539 } 2540 position++ 2541 if buffer[position] != rune('d') { 2542 goto l235 2543 } 2544 position++ 2545 break 2546 default: 2547 if buffer[position] != rune('o') { 2548 goto l235 2549 } 2550 position++ 2551 if buffer[position] != rune('r') { 2552 goto l235 2553 } 2554 position++ 2555 break 2556 } 2557 } 2558 2559 } 2560 l237: 2561 { 2562 position240, tokenIndex240 := position, tokenIndex 2563 if !_rules[ruleIdChar]() { 2564 goto l240 2565 } 2566 goto l235 2567 l240: 2568 position, tokenIndex = position240, tokenIndex240 2569 } 2570 add(ruleKeyword, position236) 2571 } 2572 goto l233 2573 l235: 2574 position, tokenIndex = position235, tokenIndex235 2575 } 2576 { 2577 position241 := position 2578 { 2579 position242 := position 2580 { 2581 switch buffer[position] { 2582 case '_': 2583 if buffer[position] != rune('_') { 2584 goto l233 2585 } 2586 position++ 2587 break 2588 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': 2589 if c := buffer[position]; c < rune('A') || c > rune('Z') { 2590 goto l233 2591 } 2592 position++ 2593 break 2594 default: 2595 if c := buffer[position]; c < rune('a') || c > rune('z') { 2596 goto l233 2597 } 2598 position++ 2599 break 2600 } 2601 } 2602 2603 add(ruleIdCharNoDigit, position242) 2604 } 2605 l244: 2606 { 2607 position245, tokenIndex245 := position, tokenIndex 2608 if !_rules[ruleIdChar]() { 2609 goto l245 2610 } 2611 goto l244 2612 l245: 2613 position, tokenIndex = position245, tokenIndex245 2614 } 2615 add(rulePegText, position241) 2616 } 2617 if !_rules[rule_]() { 2618 goto l233 2619 } 2620 add(ruleId, position234) 2621 } 2622 return true 2623 l233: 2624 position, tokenIndex = position233, tokenIndex233 2625 return false 2626 }, 2627 /* 28 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]))> */ 2628 func() bool { 2629 position246, tokenIndex246 := position, tokenIndex 2630 { 2631 position247 := position 2632 { 2633 switch buffer[position] { 2634 case '_': 2635 if buffer[position] != rune('_') { 2636 goto l246 2637 } 2638 position++ 2639 break 2640 case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9': 2641 if c := buffer[position]; c < rune('0') || c > rune('9') { 2642 goto l246 2643 } 2644 position++ 2645 break 2646 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': 2647 if c := buffer[position]; c < rune('A') || c > rune('Z') { 2648 goto l246 2649 } 2650 position++ 2651 break 2652 default: 2653 if c := buffer[position]; c < rune('a') || c > rune('z') { 2654 goto l246 2655 } 2656 position++ 2657 break 2658 } 2659 } 2660 2661 add(ruleIdChar, position247) 2662 } 2663 return true 2664 l246: 2665 position, tokenIndex = position246, tokenIndex246 2666 return false 2667 }, 2668 /* 29 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]))> */ 2669 nil, 2670 /* 30 Severity <- <((&('f') FATAL) | (&('e') ERROR) | (&('w') WARN) | (&('i') INFO) | (&('d') DEBUG))> */ 2671 nil, 2672 /* 31 IN <- <('i' 'n' !IdChar _)> */ 2673 func() bool { 2674 position251, tokenIndex251 := position, tokenIndex 2675 { 2676 position252 := position 2677 if buffer[position] != rune('i') { 2678 goto l251 2679 } 2680 position++ 2681 if buffer[position] != rune('n') { 2682 goto l251 2683 } 2684 position++ 2685 { 2686 position253, tokenIndex253 := position, tokenIndex 2687 if !_rules[ruleIdChar]() { 2688 goto l253 2689 } 2690 goto l251 2691 l253: 2692 position, tokenIndex = position253, tokenIndex253 2693 } 2694 if !_rules[rule_]() { 2695 goto l251 2696 } 2697 add(ruleIN, position252) 2698 } 2699 return true 2700 l251: 2701 position, tokenIndex = position251, tokenIndex251 2702 return false 2703 }, 2704 /* 32 OR <- <('o' 'r' !IdChar _)> */ 2705 nil, 2706 /* 33 AND <- <('a' 'n' 'd' !IdChar _)> */ 2707 nil, 2708 /* 34 NOT <- <('n' 'o' 't' !IdChar _)> */ 2709 func() bool { 2710 position256, tokenIndex256 := position, tokenIndex 2711 { 2712 position257 := position 2713 if buffer[position] != rune('n') { 2714 goto l256 2715 } 2716 position++ 2717 if buffer[position] != rune('o') { 2718 goto l256 2719 } 2720 position++ 2721 if buffer[position] != rune('t') { 2722 goto l256 2723 } 2724 position++ 2725 { 2726 position258, tokenIndex258 := position, tokenIndex 2727 if !_rules[ruleIdChar]() { 2728 goto l258 2729 } 2730 goto l256 2731 l258: 2732 position, tokenIndex = position258, tokenIndex258 2733 } 2734 if !_rules[rule_]() { 2735 goto l256 2736 } 2737 add(ruleNOT, position257) 2738 } 2739 return true 2740 l256: 2741 position, tokenIndex = position256, tokenIndex256 2742 return false 2743 }, 2744 /* 35 CONTAINS <- <('c' 'o' 'n' 't' 'a' 'i' 'n' 's' !IdChar _)> */ 2745 nil, 2746 /* 36 DEBUG <- <(<('d' 'e' 'b' 'u' 'g')> !IdChar _)> */ 2747 nil, 2748 /* 37 INFO <- <(<('i' 'n' 'f' 'o')> !IdChar _)> */ 2749 nil, 2750 /* 38 WARN <- <(<('w' 'a' 'r' 'n')> !IdChar _)> */ 2751 nil, 2752 /* 39 ERROR <- <(<('e' 'r' 'r' 'o' 'r')> !IdChar _)> */ 2753 nil, 2754 /* 40 FATAL <- <(<('f' 'a' 't' 'a' 'l')> !IdChar _)> */ 2755 nil, 2756 /* 41 Keyword <- <((('i' 'n' 'f' 'o') / ((&('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')))) !IdChar)> */ 2757 nil, 2758 /* 42 EQ <- <('=' _)> */ 2759 nil, 2760 /* 43 LBRK <- <('[' _)> */ 2761 nil, 2762 /* 44 RBRK <- <(']' _)> */ 2763 nil, 2764 /* 45 LPAR <- <('(' _)> */ 2765 func() bool { 2766 position269, tokenIndex269 := position, tokenIndex 2767 { 2768 position270 := position 2769 if buffer[position] != rune('(') { 2770 goto l269 2771 } 2772 position++ 2773 if !_rules[rule_]() { 2774 goto l269 2775 } 2776 add(ruleLPAR, position270) 2777 } 2778 return true 2779 l269: 2780 position, tokenIndex = position269, tokenIndex269 2781 return false 2782 }, 2783 /* 46 RPAR <- <(')' _)> */ 2784 func() bool { 2785 position271, tokenIndex271 := position, tokenIndex 2786 { 2787 position272 := position 2788 if buffer[position] != rune(')') { 2789 goto l271 2790 } 2791 position++ 2792 if !_rules[rule_]() { 2793 goto l271 2794 } 2795 add(ruleRPAR, position272) 2796 } 2797 return true 2798 l271: 2799 position, tokenIndex = position271, tokenIndex271 2800 return false 2801 }, 2802 /* 47 DOT <- <('.' _)> */ 2803 nil, 2804 /* 48 BANG <- <('!' !'=' _)> */ 2805 nil, 2806 /* 49 LT <- <('<' !'=' _)> */ 2807 nil, 2808 /* 50 GT <- <('>' !'=' _)> */ 2809 nil, 2810 /* 51 LE <- <('<' '=' _)> */ 2811 nil, 2812 /* 52 EQEQ <- <('=' '=' _)> */ 2813 nil, 2814 /* 53 GE <- <('>' '=' _)> */ 2815 nil, 2816 /* 54 NE <- <('!' '=' _)> */ 2817 nil, 2818 /* 55 ANDAND <- <('&' '&' _)> */ 2819 nil, 2820 /* 56 OROR <- <('|' '|' _)> */ 2821 nil, 2822 /* 57 COMMA <- <(',' _)> */ 2823 nil, 2824 /* 58 _ <- <Whitespace*> */ 2825 func() bool { 2826 { 2827 position285 := position 2828 l286: 2829 { 2830 position287, tokenIndex287 := position, tokenIndex 2831 { 2832 position288 := position 2833 { 2834 switch buffer[position] { 2835 case '\t': 2836 if buffer[position] != rune('\t') { 2837 goto l287 2838 } 2839 position++ 2840 break 2841 case ' ': 2842 if buffer[position] != rune(' ') { 2843 goto l287 2844 } 2845 position++ 2846 break 2847 default: 2848 { 2849 position290 := position 2850 { 2851 position291, tokenIndex291 := position, tokenIndex 2852 if buffer[position] != rune('\r') { 2853 goto l292 2854 } 2855 position++ 2856 if buffer[position] != rune('\n') { 2857 goto l292 2858 } 2859 position++ 2860 goto l291 2861 l292: 2862 position, tokenIndex = position291, tokenIndex291 2863 if buffer[position] != rune('\n') { 2864 goto l293 2865 } 2866 position++ 2867 goto l291 2868 l293: 2869 position, tokenIndex = position291, tokenIndex291 2870 if buffer[position] != rune('\r') { 2871 goto l287 2872 } 2873 position++ 2874 } 2875 l291: 2876 add(ruleEOL, position290) 2877 } 2878 break 2879 } 2880 } 2881 2882 add(ruleWhitespace, position288) 2883 } 2884 goto l286 2885 l287: 2886 position, tokenIndex = position287, tokenIndex287 2887 } 2888 add(rule_, position285) 2889 } 2890 return true 2891 }, 2892 /* 59 Whitespace <- <((&('\t') '\t') | (&(' ') ' ') | (&('\n' | '\r') EOL))> */ 2893 nil, 2894 /* 60 EOL <- <(('\r' '\n') / '\n' / '\r')> */ 2895 nil, 2896 /* 61 EOF <- <!.> */ 2897 nil, 2898 /* 63 Action0 <- <{ p.AddNumber(text) }> */ 2899 nil, 2900 /* 64 Action1 <- <{ p.AddLevel(text) }> */ 2901 nil, 2902 /* 65 Action2 <- <{ p.AddField(text) }> */ 2903 nil, 2904 /* 66 Action3 <- <{ p.AddString(text) }> */ 2905 nil, 2906 /* 67 Action4 <- <{ p.AddExpr() }> */ 2907 nil, 2908 /* 68 Action5 <- <{ p.AddTupleValue() }> */ 2909 nil, 2910 /* 69 Action6 <- <{ p.AddTupleValue() }> */ 2911 nil, 2912 /* 70 Action7 <- <{ p.AddTuple() }> */ 2913 nil, 2914 /* 71 Action8 <- <{ p.AddBinary(ast.IN) }> */ 2915 nil, 2916 /* 72 Action9 <- <{ p.AddTuple() }> */ 2917 nil, 2918 /* 73 Action10 <- <{ p.AddBinary(ast.IN); p.AddUnary(ast.LNOT) }> */ 2919 nil, 2920 /* 74 Action11 <- <{ p.AddMember(text) }> */ 2921 nil, 2922 /* 75 Action12 <- <{ p.AddSubscript(text) }> */ 2923 nil, 2924 /* 76 Action13 <- <{ p.AddUnary(ast.NOT) }> */ 2925 nil, 2926 /* 77 Action14 <- <{ p.AddBinary(ast.GE) }> */ 2927 nil, 2928 /* 78 Action15 <- <{ p.AddBinary(ast.GT) }> */ 2929 nil, 2930 /* 79 Action16 <- <{ p.AddBinary(ast.LE) }> */ 2931 nil, 2932 /* 80 Action17 <- <{ p.AddBinary(ast.LT) }> */ 2933 nil, 2934 /* 81 Action18 <- <{ p.AddBinary(ast.EQ) }> */ 2935 nil, 2936 /* 82 Action19 <- <{ p.AddBinary(ast.NE) }> */ 2937 nil, 2938 /* 83 Action20 <- <{ p.AddBinary(ast.EQ) }> */ 2939 nil, 2940 /* 84 Action21 <- <{ p.AddBinaryContains() }> */ 2941 nil, 2942 /* 85 Action22 <- <{ p.AddBinary(ast.AND) }> */ 2943 nil, 2944 /* 86 Action23 <- <{ p.AddBinary(ast.AND) }> */ 2945 nil, 2946 /* 87 Action24 <- <{ p.AddBinary(ast.AND) }> */ 2947 nil, 2948 /* 88 Action25 <- <{ p.AddBinary(ast.OR) }> */ 2949 nil, 2950 /* 89 Action26 <- <{ p.AddBinary(ast.OR) }> */ 2951 nil, 2952 /* 90 Action27 <- <{ p.AddUnary(ast.LNOT) }> */ 2953 nil, 2954 nil, 2955 } 2956 p.rules = _rules 2957 }