github.com/supragya/TendermintConnector@v0.0.0-20210619045051-113e32b84fb1/_deprecated_chains/cosmos/libs/pubsub/query/query.peg.go (about) 1 // nolint 2 package query 3 4 //go:generate peg -inline -switch query.peg 5 6 import ( 7 "fmt" 8 "math" 9 "sort" 10 "strconv" 11 ) 12 13 const endSymbol rune = 1114112 14 15 /* The rule types inferred from the grammar are below. */ 16 type pegRule uint8 17 18 const ( 19 ruleUnknown pegRule = iota 20 rulee 21 rulecondition 22 ruletag 23 rulevalue 24 rulenumber 25 ruledigit 26 ruletime 27 ruledate 28 ruleyear 29 rulemonth 30 ruleday 31 ruleand 32 ruleequal 33 rulecontains 34 rulele 35 rulege 36 rulel 37 ruleg 38 rulePegText 39 ) 40 41 var rul3s = [...]string{ 42 "Unknown", 43 "e", 44 "condition", 45 "tag", 46 "value", 47 "number", 48 "digit", 49 "time", 50 "date", 51 "year", 52 "month", 53 "day", 54 "and", 55 "equal", 56 "contains", 57 "le", 58 "ge", 59 "l", 60 "g", 61 "PegText", 62 } 63 64 type token32 struct { 65 pegRule 66 begin, end uint32 67 } 68 69 func (t *token32) String() string { 70 return fmt.Sprintf("\x1B[34m%v\x1B[m %v %v", rul3s[t.pegRule], t.begin, t.end) 71 } 72 73 type node32 struct { 74 token32 75 up, next *node32 76 } 77 78 func (node *node32) print(pretty bool, buffer string) { 79 var print func(node *node32, depth int) 80 print = func(node *node32, depth int) { 81 for node != nil { 82 for c := 0; c < depth; c++ { 83 fmt.Printf(" ") 84 } 85 rule := rul3s[node.pegRule] 86 quote := strconv.Quote(string(([]rune(buffer)[node.begin:node.end]))) 87 if !pretty { 88 fmt.Printf("%v %v\n", rule, quote) 89 } else { 90 fmt.Printf("\x1B[34m%v\x1B[m %v\n", rule, quote) 91 } 92 if node.up != nil { 93 print(node.up, depth+1) 94 } 95 node = node.next 96 } 97 } 98 print(node, 0) 99 } 100 101 func (node *node32) Print(buffer string) { 102 node.print(false, buffer) 103 } 104 105 func (node *node32) PrettyPrint(buffer string) { 106 node.print(true, buffer) 107 } 108 109 type tokens32 struct { 110 tree []token32 111 } 112 113 func (t *tokens32) Trim(length uint32) { 114 t.tree = t.tree[:length] 115 } 116 117 func (t *tokens32) Print() { 118 for _, token := range t.tree { 119 fmt.Println(token.String()) 120 } 121 } 122 123 func (t *tokens32) AST() *node32 { 124 type element struct { 125 node *node32 126 down *element 127 } 128 tokens := t.Tokens() 129 var stack *element 130 for _, token := range tokens { 131 if token.begin == token.end { 132 continue 133 } 134 node := &node32{token32: token} 135 for stack != nil && stack.node.begin >= token.begin && stack.node.end <= token.end { 136 stack.node.next = node.up 137 node.up = stack.node 138 stack = stack.down 139 } 140 stack = &element{node: node, down: stack} 141 } 142 if stack != nil { 143 return stack.node 144 } 145 return nil 146 } 147 148 func (t *tokens32) PrintSyntaxTree(buffer string) { 149 t.AST().Print(buffer) 150 } 151 152 func (t *tokens32) PrettyPrintSyntaxTree(buffer string) { 153 t.AST().PrettyPrint(buffer) 154 } 155 156 func (t *tokens32) Add(rule pegRule, begin, end, index uint32) { 157 if tree := t.tree; int(index) >= len(tree) { 158 expanded := make([]token32, 2*len(tree)) 159 copy(expanded, tree) 160 t.tree = expanded 161 } 162 t.tree[index] = token32{ 163 pegRule: rule, 164 begin: begin, 165 end: end, 166 } 167 } 168 169 func (t *tokens32) Tokens() []token32 { 170 return t.tree 171 } 172 173 type QueryParser struct { 174 Buffer string 175 buffer []rune 176 rules [20]func() bool 177 parse func(rule ...int) error 178 reset func() 179 Pretty bool 180 tokens32 181 } 182 183 func (p *QueryParser) Parse(rule ...int) error { 184 return p.parse(rule...) 185 } 186 187 func (p *QueryParser) Reset() { 188 p.reset() 189 } 190 191 type textPosition struct { 192 line, symbol int 193 } 194 195 type textPositionMap map[int]textPosition 196 197 func translatePositions(buffer []rune, positions []int) textPositionMap { 198 length, translations, j, line, symbol := len(positions), make(textPositionMap, len(positions)), 0, 1, 0 199 sort.Ints(positions) 200 201 search: 202 for i, c := range buffer { 203 if c == '\n' { 204 line, symbol = line+1, 0 205 } else { 206 symbol++ 207 } 208 if i == positions[j] { 209 translations[positions[j]] = textPosition{line, symbol} 210 for j++; j < length; j++ { 211 if i != positions[j] { 212 continue search 213 } 214 } 215 break search 216 } 217 } 218 219 return translations 220 } 221 222 type parseError struct { 223 p *QueryParser 224 max token32 225 } 226 227 func (e *parseError) Error() string { 228 tokens, error := []token32{e.max}, "\n" 229 positions, p := make([]int, 2*len(tokens)), 0 230 for _, token := range tokens { 231 positions[p], p = int(token.begin), p+1 232 positions[p], p = int(token.end), p+1 233 } 234 translations := translatePositions(e.p.buffer, positions) 235 format := "parse error near %v (line %v symbol %v - line %v symbol %v):\n%v\n" 236 if e.p.Pretty { 237 format = "parse error near \x1B[34m%v\x1B[m (line %v symbol %v - line %v symbol %v):\n%v\n" 238 } 239 for _, token := range tokens { 240 begin, end := int(token.begin), int(token.end) 241 error += fmt.Sprintf(format, 242 rul3s[token.pegRule], 243 translations[begin].line, translations[begin].symbol, 244 translations[end].line, translations[end].symbol, 245 strconv.Quote(string(e.p.buffer[begin:end]))) 246 } 247 248 return error 249 } 250 251 func (p *QueryParser) PrintSyntaxTree() { 252 if p.Pretty { 253 p.tokens32.PrettyPrintSyntaxTree(p.Buffer) 254 } else { 255 p.tokens32.PrintSyntaxTree(p.Buffer) 256 } 257 } 258 259 func (p *QueryParser) Init() { 260 var ( 261 max token32 262 position, tokenIndex uint32 263 buffer []rune 264 ) 265 p.reset = func() { 266 max = token32{} 267 position, tokenIndex = 0, 0 268 269 p.buffer = []rune(p.Buffer) 270 if len(p.buffer) == 0 || p.buffer[len(p.buffer)-1] != endSymbol { 271 p.buffer = append(p.buffer, endSymbol) 272 } 273 buffer = p.buffer 274 } 275 p.reset() 276 277 _rules := p.rules 278 tree := tokens32{tree: make([]token32, math.MaxInt16)} 279 p.parse = func(rule ...int) error { 280 r := 1 281 if len(rule) > 0 { 282 r = rule[0] 283 } 284 matches := p.rules[r]() 285 p.tokens32 = tree 286 if matches { 287 p.Trim(tokenIndex) 288 return nil 289 } 290 return &parseError{p, max} 291 } 292 293 add := func(rule pegRule, begin uint32) { 294 tree.Add(rule, begin, position, tokenIndex) 295 tokenIndex++ 296 if begin != position && position > max.end { 297 max = token32{rule, begin, position} 298 } 299 } 300 301 matchDot := func() bool { 302 if buffer[position] != endSymbol { 303 position++ 304 return true 305 } 306 return false 307 } 308 309 /*matchChar := func(c byte) bool { 310 if buffer[position] == c { 311 position++ 312 return true 313 } 314 return false 315 }*/ 316 317 /*matchRange := func(lower byte, upper byte) bool { 318 if c := buffer[position]; c >= lower && c <= upper { 319 position++ 320 return true 321 } 322 return false 323 }*/ 324 325 _rules = [...]func() bool{ 326 nil, 327 /* 0 e <- <('"' condition (' '+ and ' '+ condition)* '"' !.)> */ 328 func() bool { 329 position0, tokenIndex0 := position, tokenIndex 330 { 331 position1 := position 332 if buffer[position] != rune('"') { 333 goto l0 334 } 335 position++ 336 if !_rules[rulecondition]() { 337 goto l0 338 } 339 l2: 340 { 341 position3, tokenIndex3 := position, tokenIndex 342 if buffer[position] != rune(' ') { 343 goto l3 344 } 345 position++ 346 l4: 347 { 348 position5, tokenIndex5 := position, tokenIndex 349 if buffer[position] != rune(' ') { 350 goto l5 351 } 352 position++ 353 goto l4 354 l5: 355 position, tokenIndex = position5, tokenIndex5 356 } 357 { 358 position6 := position 359 { 360 position7, tokenIndex7 := position, tokenIndex 361 if buffer[position] != rune('a') { 362 goto l8 363 } 364 position++ 365 goto l7 366 l8: 367 position, tokenIndex = position7, tokenIndex7 368 if buffer[position] != rune('A') { 369 goto l3 370 } 371 position++ 372 } 373 l7: 374 { 375 position9, tokenIndex9 := position, tokenIndex 376 if buffer[position] != rune('n') { 377 goto l10 378 } 379 position++ 380 goto l9 381 l10: 382 position, tokenIndex = position9, tokenIndex9 383 if buffer[position] != rune('N') { 384 goto l3 385 } 386 position++ 387 } 388 l9: 389 { 390 position11, tokenIndex11 := position, tokenIndex 391 if buffer[position] != rune('d') { 392 goto l12 393 } 394 position++ 395 goto l11 396 l12: 397 position, tokenIndex = position11, tokenIndex11 398 if buffer[position] != rune('D') { 399 goto l3 400 } 401 position++ 402 } 403 l11: 404 add(ruleand, position6) 405 } 406 if buffer[position] != rune(' ') { 407 goto l3 408 } 409 position++ 410 l13: 411 { 412 position14, tokenIndex14 := position, tokenIndex 413 if buffer[position] != rune(' ') { 414 goto l14 415 } 416 position++ 417 goto l13 418 l14: 419 position, tokenIndex = position14, tokenIndex14 420 } 421 if !_rules[rulecondition]() { 422 goto l3 423 } 424 goto l2 425 l3: 426 position, tokenIndex = position3, tokenIndex3 427 } 428 if buffer[position] != rune('"') { 429 goto l0 430 } 431 position++ 432 { 433 position15, tokenIndex15 := position, tokenIndex 434 if !matchDot() { 435 goto l15 436 } 437 goto l0 438 l15: 439 position, tokenIndex = position15, tokenIndex15 440 } 441 add(rulee, position1) 442 } 443 return true 444 l0: 445 position, tokenIndex = position0, tokenIndex0 446 return false 447 }, 448 /* 1 condition <- <(tag ' '* ((le ' '* ((&('D' | 'd') date) | (&('T' | 't') time) | (&('0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9') number))) / (ge ' '* ((&('D' | 'd') date) | (&('T' | 't') time) | (&('0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9') number))) / ((&('=') (equal ' '* ((&('\'') value) | (&('D' | 'd') date) | (&('T' | 't') time) | (&('0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9') number)))) | (&('>') (g ' '* ((&('D' | 'd') date) | (&('T' | 't') time) | (&('0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9') number)))) | (&('<') (l ' '* ((&('D' | 'd') date) | (&('T' | 't') time) | (&('0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9') number)))) | (&('C' | 'c') (contains ' '* value)))))> */ 449 func() bool { 450 position16, tokenIndex16 := position, tokenIndex 451 { 452 position17 := position 453 { 454 position18 := position 455 { 456 position19 := position 457 { 458 position22, tokenIndex22 := position, tokenIndex 459 { 460 switch buffer[position] { 461 case '<': 462 if buffer[position] != rune('<') { 463 goto l22 464 } 465 position++ 466 break 467 case '>': 468 if buffer[position] != rune('>') { 469 goto l22 470 } 471 position++ 472 break 473 case '=': 474 if buffer[position] != rune('=') { 475 goto l22 476 } 477 position++ 478 break 479 case '\'': 480 if buffer[position] != rune('\'') { 481 goto l22 482 } 483 position++ 484 break 485 case '"': 486 if buffer[position] != rune('"') { 487 goto l22 488 } 489 position++ 490 break 491 case ')': 492 if buffer[position] != rune(')') { 493 goto l22 494 } 495 position++ 496 break 497 case '(': 498 if buffer[position] != rune('(') { 499 goto l22 500 } 501 position++ 502 break 503 case '\\': 504 if buffer[position] != rune('\\') { 505 goto l22 506 } 507 position++ 508 break 509 case '\r': 510 if buffer[position] != rune('\r') { 511 goto l22 512 } 513 position++ 514 break 515 case '\n': 516 if buffer[position] != rune('\n') { 517 goto l22 518 } 519 position++ 520 break 521 case '\t': 522 if buffer[position] != rune('\t') { 523 goto l22 524 } 525 position++ 526 break 527 default: 528 if buffer[position] != rune(' ') { 529 goto l22 530 } 531 position++ 532 break 533 } 534 } 535 536 goto l16 537 l22: 538 position, tokenIndex = position22, tokenIndex22 539 } 540 if !matchDot() { 541 goto l16 542 } 543 l20: 544 { 545 position21, tokenIndex21 := position, tokenIndex 546 { 547 position24, tokenIndex24 := position, tokenIndex 548 { 549 switch buffer[position] { 550 case '<': 551 if buffer[position] != rune('<') { 552 goto l24 553 } 554 position++ 555 break 556 case '>': 557 if buffer[position] != rune('>') { 558 goto l24 559 } 560 position++ 561 break 562 case '=': 563 if buffer[position] != rune('=') { 564 goto l24 565 } 566 position++ 567 break 568 case '\'': 569 if buffer[position] != rune('\'') { 570 goto l24 571 } 572 position++ 573 break 574 case '"': 575 if buffer[position] != rune('"') { 576 goto l24 577 } 578 position++ 579 break 580 case ')': 581 if buffer[position] != rune(')') { 582 goto l24 583 } 584 position++ 585 break 586 case '(': 587 if buffer[position] != rune('(') { 588 goto l24 589 } 590 position++ 591 break 592 case '\\': 593 if buffer[position] != rune('\\') { 594 goto l24 595 } 596 position++ 597 break 598 case '\r': 599 if buffer[position] != rune('\r') { 600 goto l24 601 } 602 position++ 603 break 604 case '\n': 605 if buffer[position] != rune('\n') { 606 goto l24 607 } 608 position++ 609 break 610 case '\t': 611 if buffer[position] != rune('\t') { 612 goto l24 613 } 614 position++ 615 break 616 default: 617 if buffer[position] != rune(' ') { 618 goto l24 619 } 620 position++ 621 break 622 } 623 } 624 625 goto l21 626 l24: 627 position, tokenIndex = position24, tokenIndex24 628 } 629 if !matchDot() { 630 goto l21 631 } 632 goto l20 633 l21: 634 position, tokenIndex = position21, tokenIndex21 635 } 636 add(rulePegText, position19) 637 } 638 add(ruletag, position18) 639 } 640 l26: 641 { 642 position27, tokenIndex27 := position, tokenIndex 643 if buffer[position] != rune(' ') { 644 goto l27 645 } 646 position++ 647 goto l26 648 l27: 649 position, tokenIndex = position27, tokenIndex27 650 } 651 { 652 position28, tokenIndex28 := position, tokenIndex 653 { 654 position30 := position 655 if buffer[position] != rune('<') { 656 goto l29 657 } 658 position++ 659 if buffer[position] != rune('=') { 660 goto l29 661 } 662 position++ 663 add(rulele, position30) 664 } 665 l31: 666 { 667 position32, tokenIndex32 := position, tokenIndex 668 if buffer[position] != rune(' ') { 669 goto l32 670 } 671 position++ 672 goto l31 673 l32: 674 position, tokenIndex = position32, tokenIndex32 675 } 676 { 677 switch buffer[position] { 678 case 'D', 'd': 679 if !_rules[ruledate]() { 680 goto l29 681 } 682 break 683 case 'T', 't': 684 if !_rules[ruletime]() { 685 goto l29 686 } 687 break 688 default: 689 if !_rules[rulenumber]() { 690 goto l29 691 } 692 break 693 } 694 } 695 696 goto l28 697 l29: 698 position, tokenIndex = position28, tokenIndex28 699 { 700 position35 := position 701 if buffer[position] != rune('>') { 702 goto l34 703 } 704 position++ 705 if buffer[position] != rune('=') { 706 goto l34 707 } 708 position++ 709 add(rulege, position35) 710 } 711 l36: 712 { 713 position37, tokenIndex37 := position, tokenIndex 714 if buffer[position] != rune(' ') { 715 goto l37 716 } 717 position++ 718 goto l36 719 l37: 720 position, tokenIndex = position37, tokenIndex37 721 } 722 { 723 switch buffer[position] { 724 case 'D', 'd': 725 if !_rules[ruledate]() { 726 goto l34 727 } 728 break 729 case 'T', 't': 730 if !_rules[ruletime]() { 731 goto l34 732 } 733 break 734 default: 735 if !_rules[rulenumber]() { 736 goto l34 737 } 738 break 739 } 740 } 741 742 goto l28 743 l34: 744 position, tokenIndex = position28, tokenIndex28 745 { 746 switch buffer[position] { 747 case '=': 748 { 749 position40 := position 750 if buffer[position] != rune('=') { 751 goto l16 752 } 753 position++ 754 add(ruleequal, position40) 755 } 756 l41: 757 { 758 position42, tokenIndex42 := position, tokenIndex 759 if buffer[position] != rune(' ') { 760 goto l42 761 } 762 position++ 763 goto l41 764 l42: 765 position, tokenIndex = position42, tokenIndex42 766 } 767 { 768 switch buffer[position] { 769 case '\'': 770 if !_rules[rulevalue]() { 771 goto l16 772 } 773 break 774 case 'D', 'd': 775 if !_rules[ruledate]() { 776 goto l16 777 } 778 break 779 case 'T', 't': 780 if !_rules[ruletime]() { 781 goto l16 782 } 783 break 784 default: 785 if !_rules[rulenumber]() { 786 goto l16 787 } 788 break 789 } 790 } 791 792 break 793 case '>': 794 { 795 position44 := position 796 if buffer[position] != rune('>') { 797 goto l16 798 } 799 position++ 800 add(ruleg, position44) 801 } 802 l45: 803 { 804 position46, tokenIndex46 := position, tokenIndex 805 if buffer[position] != rune(' ') { 806 goto l46 807 } 808 position++ 809 goto l45 810 l46: 811 position, tokenIndex = position46, tokenIndex46 812 } 813 { 814 switch buffer[position] { 815 case 'D', 'd': 816 if !_rules[ruledate]() { 817 goto l16 818 } 819 break 820 case 'T', 't': 821 if !_rules[ruletime]() { 822 goto l16 823 } 824 break 825 default: 826 if !_rules[rulenumber]() { 827 goto l16 828 } 829 break 830 } 831 } 832 833 break 834 case '<': 835 { 836 position48 := position 837 if buffer[position] != rune('<') { 838 goto l16 839 } 840 position++ 841 add(rulel, position48) 842 } 843 l49: 844 { 845 position50, tokenIndex50 := position, tokenIndex 846 if buffer[position] != rune(' ') { 847 goto l50 848 } 849 position++ 850 goto l49 851 l50: 852 position, tokenIndex = position50, tokenIndex50 853 } 854 { 855 switch buffer[position] { 856 case 'D', 'd': 857 if !_rules[ruledate]() { 858 goto l16 859 } 860 break 861 case 'T', 't': 862 if !_rules[ruletime]() { 863 goto l16 864 } 865 break 866 default: 867 if !_rules[rulenumber]() { 868 goto l16 869 } 870 break 871 } 872 } 873 874 break 875 default: 876 { 877 position52 := position 878 { 879 position53, tokenIndex53 := position, tokenIndex 880 if buffer[position] != rune('c') { 881 goto l54 882 } 883 position++ 884 goto l53 885 l54: 886 position, tokenIndex = position53, tokenIndex53 887 if buffer[position] != rune('C') { 888 goto l16 889 } 890 position++ 891 } 892 l53: 893 { 894 position55, tokenIndex55 := position, tokenIndex 895 if buffer[position] != rune('o') { 896 goto l56 897 } 898 position++ 899 goto l55 900 l56: 901 position, tokenIndex = position55, tokenIndex55 902 if buffer[position] != rune('O') { 903 goto l16 904 } 905 position++ 906 } 907 l55: 908 { 909 position57, tokenIndex57 := position, tokenIndex 910 if buffer[position] != rune('n') { 911 goto l58 912 } 913 position++ 914 goto l57 915 l58: 916 position, tokenIndex = position57, tokenIndex57 917 if buffer[position] != rune('N') { 918 goto l16 919 } 920 position++ 921 } 922 l57: 923 { 924 position59, tokenIndex59 := position, tokenIndex 925 if buffer[position] != rune('t') { 926 goto l60 927 } 928 position++ 929 goto l59 930 l60: 931 position, tokenIndex = position59, tokenIndex59 932 if buffer[position] != rune('T') { 933 goto l16 934 } 935 position++ 936 } 937 l59: 938 { 939 position61, tokenIndex61 := position, tokenIndex 940 if buffer[position] != rune('a') { 941 goto l62 942 } 943 position++ 944 goto l61 945 l62: 946 position, tokenIndex = position61, tokenIndex61 947 if buffer[position] != rune('A') { 948 goto l16 949 } 950 position++ 951 } 952 l61: 953 { 954 position63, tokenIndex63 := position, tokenIndex 955 if buffer[position] != rune('i') { 956 goto l64 957 } 958 position++ 959 goto l63 960 l64: 961 position, tokenIndex = position63, tokenIndex63 962 if buffer[position] != rune('I') { 963 goto l16 964 } 965 position++ 966 } 967 l63: 968 { 969 position65, tokenIndex65 := position, tokenIndex 970 if buffer[position] != rune('n') { 971 goto l66 972 } 973 position++ 974 goto l65 975 l66: 976 position, tokenIndex = position65, tokenIndex65 977 if buffer[position] != rune('N') { 978 goto l16 979 } 980 position++ 981 } 982 l65: 983 { 984 position67, tokenIndex67 := position, tokenIndex 985 if buffer[position] != rune('s') { 986 goto l68 987 } 988 position++ 989 goto l67 990 l68: 991 position, tokenIndex = position67, tokenIndex67 992 if buffer[position] != rune('S') { 993 goto l16 994 } 995 position++ 996 } 997 l67: 998 add(rulecontains, position52) 999 } 1000 l69: 1001 { 1002 position70, tokenIndex70 := position, tokenIndex 1003 if buffer[position] != rune(' ') { 1004 goto l70 1005 } 1006 position++ 1007 goto l69 1008 l70: 1009 position, tokenIndex = position70, tokenIndex70 1010 } 1011 if !_rules[rulevalue]() { 1012 goto l16 1013 } 1014 break 1015 } 1016 } 1017 1018 } 1019 l28: 1020 add(rulecondition, position17) 1021 } 1022 return true 1023 l16: 1024 position, tokenIndex = position16, tokenIndex16 1025 return false 1026 }, 1027 /* 2 tag <- <<(!((&('<') '<') | (&('>') '>') | (&('=') '=') | (&('\'') '\'') | (&('"') '"') | (&(')') ')') | (&('(') '(') | (&('\\') '\\') | (&('\r') '\r') | (&('\n') '\n') | (&('\t') '\t') | (&(' ') ' ')) .)+>> */ 1028 nil, 1029 /* 3 value <- <<('\'' (!('"' / '\'') .)* '\'')>> */ 1030 func() bool { 1031 position72, tokenIndex72 := position, tokenIndex 1032 { 1033 position73 := position 1034 { 1035 position74 := position 1036 if buffer[position] != rune('\'') { 1037 goto l72 1038 } 1039 position++ 1040 l75: 1041 { 1042 position76, tokenIndex76 := position, tokenIndex 1043 { 1044 position77, tokenIndex77 := position, tokenIndex 1045 { 1046 position78, tokenIndex78 := position, tokenIndex 1047 if buffer[position] != rune('"') { 1048 goto l79 1049 } 1050 position++ 1051 goto l78 1052 l79: 1053 position, tokenIndex = position78, tokenIndex78 1054 if buffer[position] != rune('\'') { 1055 goto l77 1056 } 1057 position++ 1058 } 1059 l78: 1060 goto l76 1061 l77: 1062 position, tokenIndex = position77, tokenIndex77 1063 } 1064 if !matchDot() { 1065 goto l76 1066 } 1067 goto l75 1068 l76: 1069 position, tokenIndex = position76, tokenIndex76 1070 } 1071 if buffer[position] != rune('\'') { 1072 goto l72 1073 } 1074 position++ 1075 add(rulePegText, position74) 1076 } 1077 add(rulevalue, position73) 1078 } 1079 return true 1080 l72: 1081 position, tokenIndex = position72, tokenIndex72 1082 return false 1083 }, 1084 /* 4 number <- <<('0' / ([1-9] digit* ('.' digit*)?))>> */ 1085 func() bool { 1086 position80, tokenIndex80 := position, tokenIndex 1087 { 1088 position81 := position 1089 { 1090 position82 := position 1091 { 1092 position83, tokenIndex83 := position, tokenIndex 1093 if buffer[position] != rune('0') { 1094 goto l84 1095 } 1096 position++ 1097 goto l83 1098 l84: 1099 position, tokenIndex = position83, tokenIndex83 1100 if c := buffer[position]; c < rune('1') || c > rune('9') { 1101 goto l80 1102 } 1103 position++ 1104 l85: 1105 { 1106 position86, tokenIndex86 := position, tokenIndex 1107 if !_rules[ruledigit]() { 1108 goto l86 1109 } 1110 goto l85 1111 l86: 1112 position, tokenIndex = position86, tokenIndex86 1113 } 1114 { 1115 position87, tokenIndex87 := position, tokenIndex 1116 if buffer[position] != rune('.') { 1117 goto l87 1118 } 1119 position++ 1120 l89: 1121 { 1122 position90, tokenIndex90 := position, tokenIndex 1123 if !_rules[ruledigit]() { 1124 goto l90 1125 } 1126 goto l89 1127 l90: 1128 position, tokenIndex = position90, tokenIndex90 1129 } 1130 goto l88 1131 l87: 1132 position, tokenIndex = position87, tokenIndex87 1133 } 1134 l88: 1135 } 1136 l83: 1137 add(rulePegText, position82) 1138 } 1139 add(rulenumber, position81) 1140 } 1141 return true 1142 l80: 1143 position, tokenIndex = position80, tokenIndex80 1144 return false 1145 }, 1146 /* 5 digit <- <[0-9]> */ 1147 func() bool { 1148 position91, tokenIndex91 := position, tokenIndex 1149 { 1150 position92 := position 1151 if c := buffer[position]; c < rune('0') || c > rune('9') { 1152 goto l91 1153 } 1154 position++ 1155 add(ruledigit, position92) 1156 } 1157 return true 1158 l91: 1159 position, tokenIndex = position91, tokenIndex91 1160 return false 1161 }, 1162 /* 6 time <- <(('t' / 'T') ('i' / 'I') ('m' / 'M') ('e' / 'E') ' ' <(year '-' month '-' day 'T' digit digit ':' digit digit ':' digit digit ((('-' / '+') digit digit ':' digit digit) / 'Z'))>)> */ 1163 func() bool { 1164 position93, tokenIndex93 := position, tokenIndex 1165 { 1166 position94 := position 1167 { 1168 position95, tokenIndex95 := position, tokenIndex 1169 if buffer[position] != rune('t') { 1170 goto l96 1171 } 1172 position++ 1173 goto l95 1174 l96: 1175 position, tokenIndex = position95, tokenIndex95 1176 if buffer[position] != rune('T') { 1177 goto l93 1178 } 1179 position++ 1180 } 1181 l95: 1182 { 1183 position97, tokenIndex97 := position, tokenIndex 1184 if buffer[position] != rune('i') { 1185 goto l98 1186 } 1187 position++ 1188 goto l97 1189 l98: 1190 position, tokenIndex = position97, tokenIndex97 1191 if buffer[position] != rune('I') { 1192 goto l93 1193 } 1194 position++ 1195 } 1196 l97: 1197 { 1198 position99, tokenIndex99 := position, tokenIndex 1199 if buffer[position] != rune('m') { 1200 goto l100 1201 } 1202 position++ 1203 goto l99 1204 l100: 1205 position, tokenIndex = position99, tokenIndex99 1206 if buffer[position] != rune('M') { 1207 goto l93 1208 } 1209 position++ 1210 } 1211 l99: 1212 { 1213 position101, tokenIndex101 := position, tokenIndex 1214 if buffer[position] != rune('e') { 1215 goto l102 1216 } 1217 position++ 1218 goto l101 1219 l102: 1220 position, tokenIndex = position101, tokenIndex101 1221 if buffer[position] != rune('E') { 1222 goto l93 1223 } 1224 position++ 1225 } 1226 l101: 1227 if buffer[position] != rune(' ') { 1228 goto l93 1229 } 1230 position++ 1231 { 1232 position103 := position 1233 if !_rules[ruleyear]() { 1234 goto l93 1235 } 1236 if buffer[position] != rune('-') { 1237 goto l93 1238 } 1239 position++ 1240 if !_rules[rulemonth]() { 1241 goto l93 1242 } 1243 if buffer[position] != rune('-') { 1244 goto l93 1245 } 1246 position++ 1247 if !_rules[ruleday]() { 1248 goto l93 1249 } 1250 if buffer[position] != rune('T') { 1251 goto l93 1252 } 1253 position++ 1254 if !_rules[ruledigit]() { 1255 goto l93 1256 } 1257 if !_rules[ruledigit]() { 1258 goto l93 1259 } 1260 if buffer[position] != rune(':') { 1261 goto l93 1262 } 1263 position++ 1264 if !_rules[ruledigit]() { 1265 goto l93 1266 } 1267 if !_rules[ruledigit]() { 1268 goto l93 1269 } 1270 if buffer[position] != rune(':') { 1271 goto l93 1272 } 1273 position++ 1274 if !_rules[ruledigit]() { 1275 goto l93 1276 } 1277 if !_rules[ruledigit]() { 1278 goto l93 1279 } 1280 { 1281 position104, tokenIndex104 := position, tokenIndex 1282 { 1283 position106, tokenIndex106 := position, tokenIndex 1284 if buffer[position] != rune('-') { 1285 goto l107 1286 } 1287 position++ 1288 goto l106 1289 l107: 1290 position, tokenIndex = position106, tokenIndex106 1291 if buffer[position] != rune('+') { 1292 goto l105 1293 } 1294 position++ 1295 } 1296 l106: 1297 if !_rules[ruledigit]() { 1298 goto l105 1299 } 1300 if !_rules[ruledigit]() { 1301 goto l105 1302 } 1303 if buffer[position] != rune(':') { 1304 goto l105 1305 } 1306 position++ 1307 if !_rules[ruledigit]() { 1308 goto l105 1309 } 1310 if !_rules[ruledigit]() { 1311 goto l105 1312 } 1313 goto l104 1314 l105: 1315 position, tokenIndex = position104, tokenIndex104 1316 if buffer[position] != rune('Z') { 1317 goto l93 1318 } 1319 position++ 1320 } 1321 l104: 1322 add(rulePegText, position103) 1323 } 1324 add(ruletime, position94) 1325 } 1326 return true 1327 l93: 1328 position, tokenIndex = position93, tokenIndex93 1329 return false 1330 }, 1331 /* 7 date <- <(('d' / 'D') ('a' / 'A') ('t' / 'T') ('e' / 'E') ' ' <(year '-' month '-' day)>)> */ 1332 func() bool { 1333 position108, tokenIndex108 := position, tokenIndex 1334 { 1335 position109 := position 1336 { 1337 position110, tokenIndex110 := position, tokenIndex 1338 if buffer[position] != rune('d') { 1339 goto l111 1340 } 1341 position++ 1342 goto l110 1343 l111: 1344 position, tokenIndex = position110, tokenIndex110 1345 if buffer[position] != rune('D') { 1346 goto l108 1347 } 1348 position++ 1349 } 1350 l110: 1351 { 1352 position112, tokenIndex112 := position, tokenIndex 1353 if buffer[position] != rune('a') { 1354 goto l113 1355 } 1356 position++ 1357 goto l112 1358 l113: 1359 position, tokenIndex = position112, tokenIndex112 1360 if buffer[position] != rune('A') { 1361 goto l108 1362 } 1363 position++ 1364 } 1365 l112: 1366 { 1367 position114, tokenIndex114 := position, tokenIndex 1368 if buffer[position] != rune('t') { 1369 goto l115 1370 } 1371 position++ 1372 goto l114 1373 l115: 1374 position, tokenIndex = position114, tokenIndex114 1375 if buffer[position] != rune('T') { 1376 goto l108 1377 } 1378 position++ 1379 } 1380 l114: 1381 { 1382 position116, tokenIndex116 := position, tokenIndex 1383 if buffer[position] != rune('e') { 1384 goto l117 1385 } 1386 position++ 1387 goto l116 1388 l117: 1389 position, tokenIndex = position116, tokenIndex116 1390 if buffer[position] != rune('E') { 1391 goto l108 1392 } 1393 position++ 1394 } 1395 l116: 1396 if buffer[position] != rune(' ') { 1397 goto l108 1398 } 1399 position++ 1400 { 1401 position118 := position 1402 if !_rules[ruleyear]() { 1403 goto l108 1404 } 1405 if buffer[position] != rune('-') { 1406 goto l108 1407 } 1408 position++ 1409 if !_rules[rulemonth]() { 1410 goto l108 1411 } 1412 if buffer[position] != rune('-') { 1413 goto l108 1414 } 1415 position++ 1416 if !_rules[ruleday]() { 1417 goto l108 1418 } 1419 add(rulePegText, position118) 1420 } 1421 add(ruledate, position109) 1422 } 1423 return true 1424 l108: 1425 position, tokenIndex = position108, tokenIndex108 1426 return false 1427 }, 1428 /* 8 year <- <(('1' / '2') digit digit digit)> */ 1429 func() bool { 1430 position119, tokenIndex119 := position, tokenIndex 1431 { 1432 position120 := position 1433 { 1434 position121, tokenIndex121 := position, tokenIndex 1435 if buffer[position] != rune('1') { 1436 goto l122 1437 } 1438 position++ 1439 goto l121 1440 l122: 1441 position, tokenIndex = position121, tokenIndex121 1442 if buffer[position] != rune('2') { 1443 goto l119 1444 } 1445 position++ 1446 } 1447 l121: 1448 if !_rules[ruledigit]() { 1449 goto l119 1450 } 1451 if !_rules[ruledigit]() { 1452 goto l119 1453 } 1454 if !_rules[ruledigit]() { 1455 goto l119 1456 } 1457 add(ruleyear, position120) 1458 } 1459 return true 1460 l119: 1461 position, tokenIndex = position119, tokenIndex119 1462 return false 1463 }, 1464 /* 9 month <- <(('0' / '1') digit)> */ 1465 func() bool { 1466 position123, tokenIndex123 := position, tokenIndex 1467 { 1468 position124 := position 1469 { 1470 position125, tokenIndex125 := position, tokenIndex 1471 if buffer[position] != rune('0') { 1472 goto l126 1473 } 1474 position++ 1475 goto l125 1476 l126: 1477 position, tokenIndex = position125, tokenIndex125 1478 if buffer[position] != rune('1') { 1479 goto l123 1480 } 1481 position++ 1482 } 1483 l125: 1484 if !_rules[ruledigit]() { 1485 goto l123 1486 } 1487 add(rulemonth, position124) 1488 } 1489 return true 1490 l123: 1491 position, tokenIndex = position123, tokenIndex123 1492 return false 1493 }, 1494 /* 10 day <- <(((&('3') '3') | (&('2') '2') | (&('1') '1') | (&('0') '0')) digit)> */ 1495 func() bool { 1496 position127, tokenIndex127 := position, tokenIndex 1497 { 1498 position128 := position 1499 { 1500 switch buffer[position] { 1501 case '3': 1502 if buffer[position] != rune('3') { 1503 goto l127 1504 } 1505 position++ 1506 break 1507 case '2': 1508 if buffer[position] != rune('2') { 1509 goto l127 1510 } 1511 position++ 1512 break 1513 case '1': 1514 if buffer[position] != rune('1') { 1515 goto l127 1516 } 1517 position++ 1518 break 1519 default: 1520 if buffer[position] != rune('0') { 1521 goto l127 1522 } 1523 position++ 1524 break 1525 } 1526 } 1527 1528 if !_rules[ruledigit]() { 1529 goto l127 1530 } 1531 add(ruleday, position128) 1532 } 1533 return true 1534 l127: 1535 position, tokenIndex = position127, tokenIndex127 1536 return false 1537 }, 1538 /* 11 and <- <(('a' / 'A') ('n' / 'N') ('d' / 'D'))> */ 1539 nil, 1540 /* 12 equal <- <'='> */ 1541 nil, 1542 /* 13 contains <- <(('c' / 'C') ('o' / 'O') ('n' / 'N') ('t' / 'T') ('a' / 'A') ('i' / 'I') ('n' / 'N') ('s' / 'S'))> */ 1543 nil, 1544 /* 14 le <- <('<' '=')> */ 1545 nil, 1546 /* 15 ge <- <('>' '=')> */ 1547 nil, 1548 /* 16 l <- <'<'> */ 1549 nil, 1550 /* 17 g <- <'>'> */ 1551 nil, 1552 nil, 1553 } 1554 p.rules = _rules 1555 }