1package main 2 3// Code generated by ./peg/peg delocate.peg DO NOT EDIT. 4 5import ( 6 "fmt" 7 "io" 8 "os" 9 "sort" 10 "strconv" 11 "strings" 12) 13 14const endSymbol rune = 1114112 15 16/* The rule types inferred from the grammar are below. */ 17type pegRule uint8 18 19const ( 20 ruleUnknown pegRule = iota 21 ruleAsmFile 22 ruleStatement 23 ruleGlobalDirective 24 ruleDirective 25 ruleDirectiveName 26 ruleLocationDirective 27 ruleFileDirective 28 ruleLocDirective 29 ruleArgs 30 ruleArg 31 ruleQuotedArg 32 ruleQuotedText 33 ruleLabelContainingDirective 34 ruleLabelContainingDirectiveName 35 ruleSymbolArgs 36 ruleSymbolShift 37 ruleSymbolArg 38 ruleOpenParen 39 ruleCloseParen 40 ruleSymbolType 41 ruleDot 42 ruleTCMarker 43 ruleEscapedChar 44 ruleWS 45 ruleComment 46 ruleLabel 47 ruleSymbolName 48 ruleLocalSymbol 49 ruleLocalLabel 50 ruleLocalLabelRef 51 ruleInstruction 52 ruleInstructionName 53 ruleInstructionArg 54 ruleGOTLocation 55 ruleGOTSymbolOffset 56 ruleAVX512Token 57 ruleTOCRefHigh 58 ruleTOCRefLow 59 ruleIndirectionIndicator 60 ruleRegisterOrConstant 61 ruleARMConstantTweak 62 ruleARMRegister 63 ruleARMVectorRegister 64 ruleMemoryRef 65 ruleSymbolRef 66 ruleLow12BitsSymbolRef 67 ruleARMBaseIndexScale 68 ruleARMGOTLow12 69 ruleARMPostincrement 70 ruleBaseIndexScale 71 ruleOperator 72 ruleOffset 73 ruleSection 74 ruleSegmentRegister 75) 76 77var rul3s = [...]string{ 78 "Unknown", 79 "AsmFile", 80 "Statement", 81 "GlobalDirective", 82 "Directive", 83 "DirectiveName", 84 "LocationDirective", 85 "FileDirective", 86 "LocDirective", 87 "Args", 88 "Arg", 89 "QuotedArg", 90 "QuotedText", 91 "LabelContainingDirective", 92 "LabelContainingDirectiveName", 93 "SymbolArgs", 94 "SymbolShift", 95 "SymbolArg", 96 "OpenParen", 97 "CloseParen", 98 "SymbolType", 99 "Dot", 100 "TCMarker", 101 "EscapedChar", 102 "WS", 103 "Comment", 104 "Label", 105 "SymbolName", 106 "LocalSymbol", 107 "LocalLabel", 108 "LocalLabelRef", 109 "Instruction", 110 "InstructionName", 111 "InstructionArg", 112 "GOTLocation", 113 "GOTSymbolOffset", 114 "AVX512Token", 115 "TOCRefHigh", 116 "TOCRefLow", 117 "IndirectionIndicator", 118 "RegisterOrConstant", 119 "ARMConstantTweak", 120 "ARMRegister", 121 "ARMVectorRegister", 122 "MemoryRef", 123 "SymbolRef", 124 "Low12BitsSymbolRef", 125 "ARMBaseIndexScale", 126 "ARMGOTLow12", 127 "ARMPostincrement", 128 "BaseIndexScale", 129 "Operator", 130 "Offset", 131 "Section", 132 "SegmentRegister", 133} 134 135type token32 struct { 136 pegRule 137 begin, end uint32 138} 139 140func (t *token32) String() string { 141 return fmt.Sprintf("\x1B[34m%v\x1B[m %v %v", rul3s[t.pegRule], t.begin, t.end) 142} 143 144type node32 struct { 145 token32 146 up, next *node32 147} 148 149func (node *node32) print(w io.Writer, pretty bool, buffer string) { 150 var print func(node *node32, depth int) 151 print = func(node *node32, depth int) { 152 for node != nil { 153 for c := 0; c < depth; c++ { 154 fmt.Fprintf(w, " ") 155 } 156 rule := rul3s[node.pegRule] 157 quote := strconv.Quote(string(([]rune(buffer)[node.begin:node.end]))) 158 if !pretty { 159 fmt.Fprintf(w, "%v %v\n", rule, quote) 160 } else { 161 fmt.Fprintf(w, "\x1B[36m%v\x1B[m %v\n", rule, quote) 162 } 163 if node.up != nil { 164 print(node.up, depth+1) 165 } 166 node = node.next 167 } 168 } 169 print(node, 0) 170} 171 172func (node *node32) Print(w io.Writer, buffer string) { 173 node.print(w, false, buffer) 174} 175 176func (node *node32) PrettyPrint(w io.Writer, buffer string) { 177 node.print(w, true, buffer) 178} 179 180type tokens32 struct { 181 tree []token32 182} 183 184func (t *tokens32) Trim(length uint32) { 185 t.tree = t.tree[:length] 186} 187 188func (t *tokens32) Print() { 189 for _, token := range t.tree { 190 fmt.Println(token.String()) 191 } 192} 193 194func (t *tokens32) AST() *node32 { 195 type element struct { 196 node *node32 197 down *element 198 } 199 tokens := t.Tokens() 200 var stack *element 201 for _, token := range tokens { 202 if token.begin == token.end { 203 continue 204 } 205 node := &node32{token32: token} 206 for stack != nil && stack.node.begin >= token.begin && stack.node.end <= token.end { 207 stack.node.next = node.up 208 node.up = stack.node 209 stack = stack.down 210 } 211 stack = &element{node: node, down: stack} 212 } 213 if stack != nil { 214 return stack.node 215 } 216 return nil 217} 218 219func (t *tokens32) PrintSyntaxTree(buffer string) { 220 t.AST().Print(os.Stdout, buffer) 221} 222 223func (t *tokens32) WriteSyntaxTree(w io.Writer, buffer string) { 224 t.AST().Print(w, buffer) 225} 226 227func (t *tokens32) PrettyPrintSyntaxTree(buffer string) { 228 t.AST().PrettyPrint(os.Stdout, buffer) 229} 230 231func (t *tokens32) Add(rule pegRule, begin, end, index uint32) { 232 tree, i := t.tree, int(index) 233 if i >= len(tree) { 234 t.tree = append(tree, token32{pegRule: rule, begin: begin, end: end}) 235 return 236 } 237 tree[i] = token32{pegRule: rule, begin: begin, end: end} 238} 239 240func (t *tokens32) Tokens() []token32 { 241 return t.tree 242} 243 244type Asm struct { 245 Buffer string 246 buffer []rune 247 rules [55]func() bool 248 parse func(rule ...int) error 249 reset func() 250 Pretty bool 251 tokens32 252} 253 254func (p *Asm) Parse(rule ...int) error { 255 return p.parse(rule...) 256} 257 258func (p *Asm) Reset() { 259 p.reset() 260} 261 262type textPosition struct { 263 line, symbol int 264} 265 266type textPositionMap map[int]textPosition 267 268func translatePositions(buffer []rune, positions []int) textPositionMap { 269 length, translations, j, line, symbol := len(positions), make(textPositionMap, len(positions)), 0, 1, 0 270 sort.Ints(positions) 271 272search: 273 for i, c := range buffer { 274 if c == '\n' { 275 line, symbol = line+1, 0 276 } else { 277 symbol++ 278 } 279 if i == positions[j] { 280 translations[positions[j]] = textPosition{line, symbol} 281 for j++; j < length; j++ { 282 if i != positions[j] { 283 continue search 284 } 285 } 286 break search 287 } 288 } 289 290 return translations 291} 292 293type parseError struct { 294 p *Asm 295 max token32 296} 297 298func (e *parseError) Error() string { 299 tokens, err := []token32{e.max}, "\n" 300 positions, p := make([]int, 2*len(tokens)), 0 301 for _, token := range tokens { 302 positions[p], p = int(token.begin), p+1 303 positions[p], p = int(token.end), p+1 304 } 305 translations := translatePositions(e.p.buffer, positions) 306 format := "parse error near %v (line %v symbol %v - line %v symbol %v):\n%v\n" 307 if e.p.Pretty { 308 format = "parse error near \x1B[34m%v\x1B[m (line %v symbol %v - line %v symbol %v):\n%v\n" 309 } 310 for _, token := range tokens { 311 begin, end := int(token.begin), int(token.end) 312 err += fmt.Sprintf(format, 313 rul3s[token.pegRule], 314 translations[begin].line, translations[begin].symbol, 315 translations[end].line, translations[end].symbol, 316 strconv.Quote(string(e.p.buffer[begin:end]))) 317 } 318 319 return err 320} 321 322func (p *Asm) PrintSyntaxTree() { 323 if p.Pretty { 324 p.tokens32.PrettyPrintSyntaxTree(p.Buffer) 325 } else { 326 p.tokens32.PrintSyntaxTree(p.Buffer) 327 } 328} 329 330func (p *Asm) WriteSyntaxTree(w io.Writer) { 331 p.tokens32.WriteSyntaxTree(w, p.Buffer) 332} 333 334func (p *Asm) SprintSyntaxTree() string { 335 var bldr strings.Builder 336 p.WriteSyntaxTree(&bldr) 337 return bldr.String() 338} 339 340func Pretty(pretty bool) func(*Asm) error { 341 return func(p *Asm) error { 342 p.Pretty = pretty 343 return nil 344 } 345} 346 347func Size(size int) func(*Asm) error { 348 return func(p *Asm) error { 349 p.tokens32 = tokens32{tree: make([]token32, 0, size)} 350 return nil 351 } 352} 353func (p *Asm) Init(options ...func(*Asm) error) error { 354 var ( 355 max token32 356 position, tokenIndex uint32 357 buffer []rune 358 ) 359 for _, option := range options { 360 err := option(p) 361 if err != nil { 362 return err 363 } 364 } 365 p.reset = func() { 366 max = token32{} 367 position, tokenIndex = 0, 0 368 369 p.buffer = []rune(p.Buffer) 370 if len(p.buffer) == 0 || p.buffer[len(p.buffer)-1] != endSymbol { 371 p.buffer = append(p.buffer, endSymbol) 372 } 373 buffer = p.buffer 374 } 375 p.reset() 376 377 _rules := p.rules 378 tree := p.tokens32 379 p.parse = func(rule ...int) error { 380 r := 1 381 if len(rule) > 0 { 382 r = rule[0] 383 } 384 matches := p.rules[r]() 385 p.tokens32 = tree 386 if matches { 387 p.Trim(tokenIndex) 388 return nil 389 } 390 return &parseError{p, max} 391 } 392 393 add := func(rule pegRule, begin uint32) { 394 tree.Add(rule, begin, position, tokenIndex) 395 tokenIndex++ 396 if begin != position && position > max.end { 397 max = token32{rule, begin, position} 398 } 399 } 400 401 matchDot := func() bool { 402 if buffer[position] != endSymbol { 403 position++ 404 return true 405 } 406 return false 407 } 408 409 /*matchChar := func(c byte) bool { 410 if buffer[position] == c { 411 position++ 412 return true 413 } 414 return false 415 }*/ 416 417 /*matchRange := func(lower byte, upper byte) bool { 418 if c := buffer[position]; c >= lower && c <= upper { 419 position++ 420 return true 421 } 422 return false 423 }*/ 424 425 _rules = [...]func() bool{ 426 nil, 427 /* 0 AsmFile <- <(Statement* !.)> */ 428 func() bool { 429 position0, tokenIndex0 := position, tokenIndex 430 { 431 position1 := position 432 l2: 433 { 434 position3, tokenIndex3 := position, tokenIndex 435 if !_rules[ruleStatement]() { 436 goto l3 437 } 438 goto l2 439 l3: 440 position, tokenIndex = position3, tokenIndex3 441 } 442 { 443 position4, tokenIndex4 := position, tokenIndex 444 if !matchDot() { 445 goto l4 446 } 447 goto l0 448 l4: 449 position, tokenIndex = position4, tokenIndex4 450 } 451 add(ruleAsmFile, position1) 452 } 453 return true 454 l0: 455 position, tokenIndex = position0, tokenIndex0 456 return false 457 }, 458 /* 1 Statement <- <(WS? (Label / ((GlobalDirective / LocationDirective / LabelContainingDirective / Instruction / Directive / Comment / ) WS? ((Comment? '\n') / ';'))))> */ 459 func() bool { 460 position5, tokenIndex5 := position, tokenIndex 461 { 462 position6 := position 463 { 464 position7, tokenIndex7 := position, tokenIndex 465 if !_rules[ruleWS]() { 466 goto l7 467 } 468 goto l8 469 l7: 470 position, tokenIndex = position7, tokenIndex7 471 } 472 l8: 473 { 474 position9, tokenIndex9 := position, tokenIndex 475 if !_rules[ruleLabel]() { 476 goto l10 477 } 478 goto l9 479 l10: 480 position, tokenIndex = position9, tokenIndex9 481 { 482 position11, tokenIndex11 := position, tokenIndex 483 if !_rules[ruleGlobalDirective]() { 484 goto l12 485 } 486 goto l11 487 l12: 488 position, tokenIndex = position11, tokenIndex11 489 if !_rules[ruleLocationDirective]() { 490 goto l13 491 } 492 goto l11 493 l13: 494 position, tokenIndex = position11, tokenIndex11 495 if !_rules[ruleLabelContainingDirective]() { 496 goto l14 497 } 498 goto l11 499 l14: 500 position, tokenIndex = position11, tokenIndex11 501 if !_rules[ruleInstruction]() { 502 goto l15 503 } 504 goto l11 505 l15: 506 position, tokenIndex = position11, tokenIndex11 507 if !_rules[ruleDirective]() { 508 goto l16 509 } 510 goto l11 511 l16: 512 position, tokenIndex = position11, tokenIndex11 513 if !_rules[ruleComment]() { 514 goto l17 515 } 516 goto l11 517 l17: 518 position, tokenIndex = position11, tokenIndex11 519 } 520 l11: 521 { 522 position18, tokenIndex18 := position, tokenIndex 523 if !_rules[ruleWS]() { 524 goto l18 525 } 526 goto l19 527 l18: 528 position, tokenIndex = position18, tokenIndex18 529 } 530 l19: 531 { 532 position20, tokenIndex20 := position, tokenIndex 533 { 534 position22, tokenIndex22 := position, tokenIndex 535 if !_rules[ruleComment]() { 536 goto l22 537 } 538 goto l23 539 l22: 540 position, tokenIndex = position22, tokenIndex22 541 } 542 l23: 543 if buffer[position] != rune('\n') { 544 goto l21 545 } 546 position++ 547 goto l20 548 l21: 549 position, tokenIndex = position20, tokenIndex20 550 if buffer[position] != rune(';') { 551 goto l5 552 } 553 position++ 554 } 555 l20: 556 } 557 l9: 558 add(ruleStatement, position6) 559 } 560 return true 561 l5: 562 position, tokenIndex = position5, tokenIndex5 563 return false 564 }, 565 /* 2 GlobalDirective <- <((('.' ('g' / 'G') ('l' / 'L') ('o' / 'O') ('b' / 'B') ('a' / 'A') ('l' / 'L')) / ('.' ('g' / 'G') ('l' / 'L') ('o' / 'O') ('b' / 'B') ('l' / 'L'))) WS SymbolName)> */ 566 func() bool { 567 position24, tokenIndex24 := position, tokenIndex 568 { 569 position25 := position 570 { 571 position26, tokenIndex26 := position, tokenIndex 572 if buffer[position] != rune('.') { 573 goto l27 574 } 575 position++ 576 { 577 position28, tokenIndex28 := position, tokenIndex 578 if buffer[position] != rune('g') { 579 goto l29 580 } 581 position++ 582 goto l28 583 l29: 584 position, tokenIndex = position28, tokenIndex28 585 if buffer[position] != rune('G') { 586 goto l27 587 } 588 position++ 589 } 590 l28: 591 { 592 position30, tokenIndex30 := position, tokenIndex 593 if buffer[position] != rune('l') { 594 goto l31 595 } 596 position++ 597 goto l30 598 l31: 599 position, tokenIndex = position30, tokenIndex30 600 if buffer[position] != rune('L') { 601 goto l27 602 } 603 position++ 604 } 605 l30: 606 { 607 position32, tokenIndex32 := position, tokenIndex 608 if buffer[position] != rune('o') { 609 goto l33 610 } 611 position++ 612 goto l32 613 l33: 614 position, tokenIndex = position32, tokenIndex32 615 if buffer[position] != rune('O') { 616 goto l27 617 } 618 position++ 619 } 620 l32: 621 { 622 position34, tokenIndex34 := position, tokenIndex 623 if buffer[position] != rune('b') { 624 goto l35 625 } 626 position++ 627 goto l34 628 l35: 629 position, tokenIndex = position34, tokenIndex34 630 if buffer[position] != rune('B') { 631 goto l27 632 } 633 position++ 634 } 635 l34: 636 { 637 position36, tokenIndex36 := position, tokenIndex 638 if buffer[position] != rune('a') { 639 goto l37 640 } 641 position++ 642 goto l36 643 l37: 644 position, tokenIndex = position36, tokenIndex36 645 if buffer[position] != rune('A') { 646 goto l27 647 } 648 position++ 649 } 650 l36: 651 { 652 position38, tokenIndex38 := position, tokenIndex 653 if buffer[position] != rune('l') { 654 goto l39 655 } 656 position++ 657 goto l38 658 l39: 659 position, tokenIndex = position38, tokenIndex38 660 if buffer[position] != rune('L') { 661 goto l27 662 } 663 position++ 664 } 665 l38: 666 goto l26 667 l27: 668 position, tokenIndex = position26, tokenIndex26 669 if buffer[position] != rune('.') { 670 goto l24 671 } 672 position++ 673 { 674 position40, tokenIndex40 := position, tokenIndex 675 if buffer[position] != rune('g') { 676 goto l41 677 } 678 position++ 679 goto l40 680 l41: 681 position, tokenIndex = position40, tokenIndex40 682 if buffer[position] != rune('G') { 683 goto l24 684 } 685 position++ 686 } 687 l40: 688 { 689 position42, tokenIndex42 := position, tokenIndex 690 if buffer[position] != rune('l') { 691 goto l43 692 } 693 position++ 694 goto l42 695 l43: 696 position, tokenIndex = position42, tokenIndex42 697 if buffer[position] != rune('L') { 698 goto l24 699 } 700 position++ 701 } 702 l42: 703 { 704 position44, tokenIndex44 := position, tokenIndex 705 if buffer[position] != rune('o') { 706 goto l45 707 } 708 position++ 709 goto l44 710 l45: 711 position, tokenIndex = position44, tokenIndex44 712 if buffer[position] != rune('O') { 713 goto l24 714 } 715 position++ 716 } 717 l44: 718 { 719 position46, tokenIndex46 := position, tokenIndex 720 if buffer[position] != rune('b') { 721 goto l47 722 } 723 position++ 724 goto l46 725 l47: 726 position, tokenIndex = position46, tokenIndex46 727 if buffer[position] != rune('B') { 728 goto l24 729 } 730 position++ 731 } 732 l46: 733 { 734 position48, tokenIndex48 := position, tokenIndex 735 if buffer[position] != rune('l') { 736 goto l49 737 } 738 position++ 739 goto l48 740 l49: 741 position, tokenIndex = position48, tokenIndex48 742 if buffer[position] != rune('L') { 743 goto l24 744 } 745 position++ 746 } 747 l48: 748 } 749 l26: 750 if !_rules[ruleWS]() { 751 goto l24 752 } 753 if !_rules[ruleSymbolName]() { 754 goto l24 755 } 756 add(ruleGlobalDirective, position25) 757 } 758 return true 759 l24: 760 position, tokenIndex = position24, tokenIndex24 761 return false 762 }, 763 /* 3 Directive <- <('.' DirectiveName (WS Args)?)> */ 764 func() bool { 765 position50, tokenIndex50 := position, tokenIndex 766 { 767 position51 := position 768 if buffer[position] != rune('.') { 769 goto l50 770 } 771 position++ 772 if !_rules[ruleDirectiveName]() { 773 goto l50 774 } 775 { 776 position52, tokenIndex52 := position, tokenIndex 777 if !_rules[ruleWS]() { 778 goto l52 779 } 780 if !_rules[ruleArgs]() { 781 goto l52 782 } 783 goto l53 784 l52: 785 position, tokenIndex = position52, tokenIndex52 786 } 787 l53: 788 add(ruleDirective, position51) 789 } 790 return true 791 l50: 792 position, tokenIndex = position50, tokenIndex50 793 return false 794 }, 795 /* 4 DirectiveName <- <([a-z] / [A-Z] / ([0-9] / [0-9]) / '_')+> */ 796 func() bool { 797 position54, tokenIndex54 := position, tokenIndex 798 { 799 position55 := position 800 { 801 position58, tokenIndex58 := position, tokenIndex 802 if c := buffer[position]; c < rune('a') || c > rune('z') { 803 goto l59 804 } 805 position++ 806 goto l58 807 l59: 808 position, tokenIndex = position58, tokenIndex58 809 if c := buffer[position]; c < rune('A') || c > rune('Z') { 810 goto l60 811 } 812 position++ 813 goto l58 814 l60: 815 position, tokenIndex = position58, tokenIndex58 816 { 817 position62, tokenIndex62 := position, tokenIndex 818 if c := buffer[position]; c < rune('0') || c > rune('9') { 819 goto l63 820 } 821 position++ 822 goto l62 823 l63: 824 position, tokenIndex = position62, tokenIndex62 825 if c := buffer[position]; c < rune('0') || c > rune('9') { 826 goto l61 827 } 828 position++ 829 } 830 l62: 831 goto l58 832 l61: 833 position, tokenIndex = position58, tokenIndex58 834 if buffer[position] != rune('_') { 835 goto l54 836 } 837 position++ 838 } 839 l58: 840 l56: 841 { 842 position57, tokenIndex57 := position, tokenIndex 843 { 844 position64, tokenIndex64 := position, tokenIndex 845 if c := buffer[position]; c < rune('a') || c > rune('z') { 846 goto l65 847 } 848 position++ 849 goto l64 850 l65: 851 position, tokenIndex = position64, tokenIndex64 852 if c := buffer[position]; c < rune('A') || c > rune('Z') { 853 goto l66 854 } 855 position++ 856 goto l64 857 l66: 858 position, tokenIndex = position64, tokenIndex64 859 { 860 position68, tokenIndex68 := position, tokenIndex 861 if c := buffer[position]; c < rune('0') || c > rune('9') { 862 goto l69 863 } 864 position++ 865 goto l68 866 l69: 867 position, tokenIndex = position68, tokenIndex68 868 if c := buffer[position]; c < rune('0') || c > rune('9') { 869 goto l67 870 } 871 position++ 872 } 873 l68: 874 goto l64 875 l67: 876 position, tokenIndex = position64, tokenIndex64 877 if buffer[position] != rune('_') { 878 goto l57 879 } 880 position++ 881 } 882 l64: 883 goto l56 884 l57: 885 position, tokenIndex = position57, tokenIndex57 886 } 887 add(ruleDirectiveName, position55) 888 } 889 return true 890 l54: 891 position, tokenIndex = position54, tokenIndex54 892 return false 893 }, 894 /* 5 LocationDirective <- <(FileDirective / LocDirective)> */ 895 func() bool { 896 position70, tokenIndex70 := position, tokenIndex 897 { 898 position71 := position 899 { 900 position72, tokenIndex72 := position, tokenIndex 901 if !_rules[ruleFileDirective]() { 902 goto l73 903 } 904 goto l72 905 l73: 906 position, tokenIndex = position72, tokenIndex72 907 if !_rules[ruleLocDirective]() { 908 goto l70 909 } 910 } 911 l72: 912 add(ruleLocationDirective, position71) 913 } 914 return true 915 l70: 916 position, tokenIndex = position70, tokenIndex70 917 return false 918 }, 919 /* 6 FileDirective <- <('.' ('f' / 'F') ('i' / 'I') ('l' / 'L') ('e' / 'E') WS (!('#' / '\n') .)+)> */ 920 func() bool { 921 position74, tokenIndex74 := position, tokenIndex 922 { 923 position75 := position 924 if buffer[position] != rune('.') { 925 goto l74 926 } 927 position++ 928 { 929 position76, tokenIndex76 := position, tokenIndex 930 if buffer[position] != rune('f') { 931 goto l77 932 } 933 position++ 934 goto l76 935 l77: 936 position, tokenIndex = position76, tokenIndex76 937 if buffer[position] != rune('F') { 938 goto l74 939 } 940 position++ 941 } 942 l76: 943 { 944 position78, tokenIndex78 := position, tokenIndex 945 if buffer[position] != rune('i') { 946 goto l79 947 } 948 position++ 949 goto l78 950 l79: 951 position, tokenIndex = position78, tokenIndex78 952 if buffer[position] != rune('I') { 953 goto l74 954 } 955 position++ 956 } 957 l78: 958 { 959 position80, tokenIndex80 := position, tokenIndex 960 if buffer[position] != rune('l') { 961 goto l81 962 } 963 position++ 964 goto l80 965 l81: 966 position, tokenIndex = position80, tokenIndex80 967 if buffer[position] != rune('L') { 968 goto l74 969 } 970 position++ 971 } 972 l80: 973 { 974 position82, tokenIndex82 := position, tokenIndex 975 if buffer[position] != rune('e') { 976 goto l83 977 } 978 position++ 979 goto l82 980 l83: 981 position, tokenIndex = position82, tokenIndex82 982 if buffer[position] != rune('E') { 983 goto l74 984 } 985 position++ 986 } 987 l82: 988 if !_rules[ruleWS]() { 989 goto l74 990 } 991 { 992 position86, tokenIndex86 := position, tokenIndex 993 { 994 position87, tokenIndex87 := position, tokenIndex 995 if buffer[position] != rune('#') { 996 goto l88 997 } 998 position++ 999 goto l87 1000 l88: 1001 position, tokenIndex = position87, tokenIndex87 1002 if buffer[position] != rune('\n') { 1003 goto l86 1004 } 1005 position++ 1006 } 1007 l87: 1008 goto l74 1009 l86: 1010 position, tokenIndex = position86, tokenIndex86 1011 } 1012 if !matchDot() { 1013 goto l74 1014 } 1015 l84: 1016 { 1017 position85, tokenIndex85 := position, tokenIndex 1018 { 1019 position89, tokenIndex89 := position, tokenIndex 1020 { 1021 position90, tokenIndex90 := position, tokenIndex 1022 if buffer[position] != rune('#') { 1023 goto l91 1024 } 1025 position++ 1026 goto l90 1027 l91: 1028 position, tokenIndex = position90, tokenIndex90 1029 if buffer[position] != rune('\n') { 1030 goto l89 1031 } 1032 position++ 1033 } 1034 l90: 1035 goto l85 1036 l89: 1037 position, tokenIndex = position89, tokenIndex89 1038 } 1039 if !matchDot() { 1040 goto l85 1041 } 1042 goto l84 1043 l85: 1044 position, tokenIndex = position85, tokenIndex85 1045 } 1046 add(ruleFileDirective, position75) 1047 } 1048 return true 1049 l74: 1050 position, tokenIndex = position74, tokenIndex74 1051 return false 1052 }, 1053 /* 7 LocDirective <- <('.' ('l' / 'L') ('o' / 'O') ('c' / 'C') WS (!('#' / '/' / '\n') .)+)> */ 1054 func() bool { 1055 position92, tokenIndex92 := position, tokenIndex 1056 { 1057 position93 := position 1058 if buffer[position] != rune('.') { 1059 goto l92 1060 } 1061 position++ 1062 { 1063 position94, tokenIndex94 := position, tokenIndex 1064 if buffer[position] != rune('l') { 1065 goto l95 1066 } 1067 position++ 1068 goto l94 1069 l95: 1070 position, tokenIndex = position94, tokenIndex94 1071 if buffer[position] != rune('L') { 1072 goto l92 1073 } 1074 position++ 1075 } 1076 l94: 1077 { 1078 position96, tokenIndex96 := position, tokenIndex 1079 if buffer[position] != rune('o') { 1080 goto l97 1081 } 1082 position++ 1083 goto l96 1084 l97: 1085 position, tokenIndex = position96, tokenIndex96 1086 if buffer[position] != rune('O') { 1087 goto l92 1088 } 1089 position++ 1090 } 1091 l96: 1092 { 1093 position98, tokenIndex98 := position, tokenIndex 1094 if buffer[position] != rune('c') { 1095 goto l99 1096 } 1097 position++ 1098 goto l98 1099 l99: 1100 position, tokenIndex = position98, tokenIndex98 1101 if buffer[position] != rune('C') { 1102 goto l92 1103 } 1104 position++ 1105 } 1106 l98: 1107 if !_rules[ruleWS]() { 1108 goto l92 1109 } 1110 { 1111 position102, tokenIndex102 := position, tokenIndex 1112 { 1113 position103, tokenIndex103 := position, tokenIndex 1114 if buffer[position] != rune('#') { 1115 goto l104 1116 } 1117 position++ 1118 goto l103 1119 l104: 1120 position, tokenIndex = position103, tokenIndex103 1121 if buffer[position] != rune('/') { 1122 goto l105 1123 } 1124 position++ 1125 goto l103 1126 l105: 1127 position, tokenIndex = position103, tokenIndex103 1128 if buffer[position] != rune('\n') { 1129 goto l102 1130 } 1131 position++ 1132 } 1133 l103: 1134 goto l92 1135 l102: 1136 position, tokenIndex = position102, tokenIndex102 1137 } 1138 if !matchDot() { 1139 goto l92 1140 } 1141 l100: 1142 { 1143 position101, tokenIndex101 := position, tokenIndex 1144 { 1145 position106, tokenIndex106 := position, tokenIndex 1146 { 1147 position107, tokenIndex107 := position, tokenIndex 1148 if buffer[position] != rune('#') { 1149 goto l108 1150 } 1151 position++ 1152 goto l107 1153 l108: 1154 position, tokenIndex = position107, tokenIndex107 1155 if buffer[position] != rune('/') { 1156 goto l109 1157 } 1158 position++ 1159 goto l107 1160 l109: 1161 position, tokenIndex = position107, tokenIndex107 1162 if buffer[position] != rune('\n') { 1163 goto l106 1164 } 1165 position++ 1166 } 1167 l107: 1168 goto l101 1169 l106: 1170 position, tokenIndex = position106, tokenIndex106 1171 } 1172 if !matchDot() { 1173 goto l101 1174 } 1175 goto l100 1176 l101: 1177 position, tokenIndex = position101, tokenIndex101 1178 } 1179 add(ruleLocDirective, position93) 1180 } 1181 return true 1182 l92: 1183 position, tokenIndex = position92, tokenIndex92 1184 return false 1185 }, 1186 /* 8 Args <- <(Arg (WS? ',' WS? Arg)*)> */ 1187 func() bool { 1188 position110, tokenIndex110 := position, tokenIndex 1189 { 1190 position111 := position 1191 if !_rules[ruleArg]() { 1192 goto l110 1193 } 1194 l112: 1195 { 1196 position113, tokenIndex113 := position, tokenIndex 1197 { 1198 position114, tokenIndex114 := position, tokenIndex 1199 if !_rules[ruleWS]() { 1200 goto l114 1201 } 1202 goto l115 1203 l114: 1204 position, tokenIndex = position114, tokenIndex114 1205 } 1206 l115: 1207 if buffer[position] != rune(',') { 1208 goto l113 1209 } 1210 position++ 1211 { 1212 position116, tokenIndex116 := position, tokenIndex 1213 if !_rules[ruleWS]() { 1214 goto l116 1215 } 1216 goto l117 1217 l116: 1218 position, tokenIndex = position116, tokenIndex116 1219 } 1220 l117: 1221 if !_rules[ruleArg]() { 1222 goto l113 1223 } 1224 goto l112 1225 l113: 1226 position, tokenIndex = position113, tokenIndex113 1227 } 1228 add(ruleArgs, position111) 1229 } 1230 return true 1231 l110: 1232 position, tokenIndex = position110, tokenIndex110 1233 return false 1234 }, 1235 /* 9 Arg <- <(QuotedArg / ([0-9] / [0-9] / ([a-z] / [A-Z]) / '%' / '+' / '-' / '*' / '_' / '@' / '.')*)> */ 1236 func() bool { 1237 { 1238 position119 := position 1239 { 1240 position120, tokenIndex120 := position, tokenIndex 1241 if !_rules[ruleQuotedArg]() { 1242 goto l121 1243 } 1244 goto l120 1245 l121: 1246 position, tokenIndex = position120, tokenIndex120 1247 l122: 1248 { 1249 position123, tokenIndex123 := position, tokenIndex 1250 { 1251 position124, tokenIndex124 := position, tokenIndex 1252 if c := buffer[position]; c < rune('0') || c > rune('9') { 1253 goto l125 1254 } 1255 position++ 1256 goto l124 1257 l125: 1258 position, tokenIndex = position124, tokenIndex124 1259 if c := buffer[position]; c < rune('0') || c > rune('9') { 1260 goto l126 1261 } 1262 position++ 1263 goto l124 1264 l126: 1265 position, tokenIndex = position124, tokenIndex124 1266 { 1267 position128, tokenIndex128 := position, tokenIndex 1268 if c := buffer[position]; c < rune('a') || c > rune('z') { 1269 goto l129 1270 } 1271 position++ 1272 goto l128 1273 l129: 1274 position, tokenIndex = position128, tokenIndex128 1275 if c := buffer[position]; c < rune('A') || c > rune('Z') { 1276 goto l127 1277 } 1278 position++ 1279 } 1280 l128: 1281 goto l124 1282 l127: 1283 position, tokenIndex = position124, tokenIndex124 1284 if buffer[position] != rune('%') { 1285 goto l130 1286 } 1287 position++ 1288 goto l124 1289 l130: 1290 position, tokenIndex = position124, tokenIndex124 1291 if buffer[position] != rune('+') { 1292 goto l131 1293 } 1294 position++ 1295 goto l124 1296 l131: 1297 position, tokenIndex = position124, tokenIndex124 1298 if buffer[position] != rune('-') { 1299 goto l132 1300 } 1301 position++ 1302 goto l124 1303 l132: 1304 position, tokenIndex = position124, tokenIndex124 1305 if buffer[position] != rune('*') { 1306 goto l133 1307 } 1308 position++ 1309 goto l124 1310 l133: 1311 position, tokenIndex = position124, tokenIndex124 1312 if buffer[position] != rune('_') { 1313 goto l134 1314 } 1315 position++ 1316 goto l124 1317 l134: 1318 position, tokenIndex = position124, tokenIndex124 1319 if buffer[position] != rune('@') { 1320 goto l135 1321 } 1322 position++ 1323 goto l124 1324 l135: 1325 position, tokenIndex = position124, tokenIndex124 1326 if buffer[position] != rune('.') { 1327 goto l123 1328 } 1329 position++ 1330 } 1331 l124: 1332 goto l122 1333 l123: 1334 position, tokenIndex = position123, tokenIndex123 1335 } 1336 } 1337 l120: 1338 add(ruleArg, position119) 1339 } 1340 return true 1341 }, 1342 /* 10 QuotedArg <- <('"' QuotedText '"')> */ 1343 func() bool { 1344 position136, tokenIndex136 := position, tokenIndex 1345 { 1346 position137 := position 1347 if buffer[position] != rune('"') { 1348 goto l136 1349 } 1350 position++ 1351 if !_rules[ruleQuotedText]() { 1352 goto l136 1353 } 1354 if buffer[position] != rune('"') { 1355 goto l136 1356 } 1357 position++ 1358 add(ruleQuotedArg, position137) 1359 } 1360 return true 1361 l136: 1362 position, tokenIndex = position136, tokenIndex136 1363 return false 1364 }, 1365 /* 11 QuotedText <- <(EscapedChar / (!'"' .))*> */ 1366 func() bool { 1367 { 1368 position139 := position 1369 l140: 1370 { 1371 position141, tokenIndex141 := position, tokenIndex 1372 { 1373 position142, tokenIndex142 := position, tokenIndex 1374 if !_rules[ruleEscapedChar]() { 1375 goto l143 1376 } 1377 goto l142 1378 l143: 1379 position, tokenIndex = position142, tokenIndex142 1380 { 1381 position144, tokenIndex144 := position, tokenIndex 1382 if buffer[position] != rune('"') { 1383 goto l144 1384 } 1385 position++ 1386 goto l141 1387 l144: 1388 position, tokenIndex = position144, tokenIndex144 1389 } 1390 if !matchDot() { 1391 goto l141 1392 } 1393 } 1394 l142: 1395 goto l140 1396 l141: 1397 position, tokenIndex = position141, tokenIndex141 1398 } 1399 add(ruleQuotedText, position139) 1400 } 1401 return true 1402 }, 1403 /* 12 LabelContainingDirective <- <(LabelContainingDirectiveName WS SymbolArgs)> */ 1404 func() bool { 1405 position145, tokenIndex145 := position, tokenIndex 1406 { 1407 position146 := position 1408 if !_rules[ruleLabelContainingDirectiveName]() { 1409 goto l145 1410 } 1411 if !_rules[ruleWS]() { 1412 goto l145 1413 } 1414 if !_rules[ruleSymbolArgs]() { 1415 goto l145 1416 } 1417 add(ruleLabelContainingDirective, position146) 1418 } 1419 return true 1420 l145: 1421 position, tokenIndex = position145, tokenIndex145 1422 return false 1423 }, 1424 /* 13 LabelContainingDirectiveName <- <(('.' ('x' / 'X') ('w' / 'W') ('o' / 'O') ('r' / 'R') ('d' / 'D')) / ('.' ('w' / 'W') ('o' / 'O') ('r' / 'R') ('d' / 'D')) / ('.' ('l' / 'L') ('o' / 'O') ('n' / 'N') ('g' / 'G')) / ('.' ('s' / 'S') ('e' / 'E') ('t' / 'T')) / ('.' ('b' / 'B') ('y' / 'Y') ('t' / 'T') ('e' / 'E')) / ('.' '8' ('b' / 'B') ('y' / 'Y') ('t' / 'T') ('e' / 'E')) / ('.' '4' ('b' / 'B') ('y' / 'Y') ('t' / 'T') ('e' / 'E')) / ('.' ('q' / 'Q') ('u' / 'U') ('a' / 'A') ('d' / 'D')) / ('.' ('t' / 'T') ('c' / 'C')) / ('.' ('l' / 'L') ('o' / 'O') ('c' / 'C') ('a' / 'A') ('l' / 'L') ('e' / 'E') ('n' / 'N') ('t' / 'T') ('r' / 'R') ('y' / 'Y')) / ('.' ('s' / 'S') ('i' / 'I') ('z' / 'Z') ('e' / 'E')) / ('.' ('t' / 'T') ('y' / 'Y') ('p' / 'P') ('e' / 'E')) / ('.' ('u' / 'U') ('l' / 'L') ('e' / 'E') ('b' / 'B') '1' '2' '8') / ('.' ('s' / 'S') ('l' / 'L') ('e' / 'E') ('b' / 'B') '1' '2' '8'))> */ 1425 func() bool { 1426 position147, tokenIndex147 := position, tokenIndex 1427 { 1428 position148 := position 1429 { 1430 position149, tokenIndex149 := position, tokenIndex 1431 if buffer[position] != rune('.') { 1432 goto l150 1433 } 1434 position++ 1435 { 1436 position151, tokenIndex151 := position, tokenIndex 1437 if buffer[position] != rune('x') { 1438 goto l152 1439 } 1440 position++ 1441 goto l151 1442 l152: 1443 position, tokenIndex = position151, tokenIndex151 1444 if buffer[position] != rune('X') { 1445 goto l150 1446 } 1447 position++ 1448 } 1449 l151: 1450 { 1451 position153, tokenIndex153 := position, tokenIndex 1452 if buffer[position] != rune('w') { 1453 goto l154 1454 } 1455 position++ 1456 goto l153 1457 l154: 1458 position, tokenIndex = position153, tokenIndex153 1459 if buffer[position] != rune('W') { 1460 goto l150 1461 } 1462 position++ 1463 } 1464 l153: 1465 { 1466 position155, tokenIndex155 := position, tokenIndex 1467 if buffer[position] != rune('o') { 1468 goto l156 1469 } 1470 position++ 1471 goto l155 1472 l156: 1473 position, tokenIndex = position155, tokenIndex155 1474 if buffer[position] != rune('O') { 1475 goto l150 1476 } 1477 position++ 1478 } 1479 l155: 1480 { 1481 position157, tokenIndex157 := position, tokenIndex 1482 if buffer[position] != rune('r') { 1483 goto l158 1484 } 1485 position++ 1486 goto l157 1487 l158: 1488 position, tokenIndex = position157, tokenIndex157 1489 if buffer[position] != rune('R') { 1490 goto l150 1491 } 1492 position++ 1493 } 1494 l157: 1495 { 1496 position159, tokenIndex159 := position, tokenIndex 1497 if buffer[position] != rune('d') { 1498 goto l160 1499 } 1500 position++ 1501 goto l159 1502 l160: 1503 position, tokenIndex = position159, tokenIndex159 1504 if buffer[position] != rune('D') { 1505 goto l150 1506 } 1507 position++ 1508 } 1509 l159: 1510 goto l149 1511 l150: 1512 position, tokenIndex = position149, tokenIndex149 1513 if buffer[position] != rune('.') { 1514 goto l161 1515 } 1516 position++ 1517 { 1518 position162, tokenIndex162 := position, tokenIndex 1519 if buffer[position] != rune('w') { 1520 goto l163 1521 } 1522 position++ 1523 goto l162 1524 l163: 1525 position, tokenIndex = position162, tokenIndex162 1526 if buffer[position] != rune('W') { 1527 goto l161 1528 } 1529 position++ 1530 } 1531 l162: 1532 { 1533 position164, tokenIndex164 := position, tokenIndex 1534 if buffer[position] != rune('o') { 1535 goto l165 1536 } 1537 position++ 1538 goto l164 1539 l165: 1540 position, tokenIndex = position164, tokenIndex164 1541 if buffer[position] != rune('O') { 1542 goto l161 1543 } 1544 position++ 1545 } 1546 l164: 1547 { 1548 position166, tokenIndex166 := position, tokenIndex 1549 if buffer[position] != rune('r') { 1550 goto l167 1551 } 1552 position++ 1553 goto l166 1554 l167: 1555 position, tokenIndex = position166, tokenIndex166 1556 if buffer[position] != rune('R') { 1557 goto l161 1558 } 1559 position++ 1560 } 1561 l166: 1562 { 1563 position168, tokenIndex168 := position, tokenIndex 1564 if buffer[position] != rune('d') { 1565 goto l169 1566 } 1567 position++ 1568 goto l168 1569 l169: 1570 position, tokenIndex = position168, tokenIndex168 1571 if buffer[position] != rune('D') { 1572 goto l161 1573 } 1574 position++ 1575 } 1576 l168: 1577 goto l149 1578 l161: 1579 position, tokenIndex = position149, tokenIndex149 1580 if buffer[position] != rune('.') { 1581 goto l170 1582 } 1583 position++ 1584 { 1585 position171, tokenIndex171 := position, tokenIndex 1586 if buffer[position] != rune('l') { 1587 goto l172 1588 } 1589 position++ 1590 goto l171 1591 l172: 1592 position, tokenIndex = position171, tokenIndex171 1593 if buffer[position] != rune('L') { 1594 goto l170 1595 } 1596 position++ 1597 } 1598 l171: 1599 { 1600 position173, tokenIndex173 := position, tokenIndex 1601 if buffer[position] != rune('o') { 1602 goto l174 1603 } 1604 position++ 1605 goto l173 1606 l174: 1607 position, tokenIndex = position173, tokenIndex173 1608 if buffer[position] != rune('O') { 1609 goto l170 1610 } 1611 position++ 1612 } 1613 l173: 1614 { 1615 position175, tokenIndex175 := position, tokenIndex 1616 if buffer[position] != rune('n') { 1617 goto l176 1618 } 1619 position++ 1620 goto l175 1621 l176: 1622 position, tokenIndex = position175, tokenIndex175 1623 if buffer[position] != rune('N') { 1624 goto l170 1625 } 1626 position++ 1627 } 1628 l175: 1629 { 1630 position177, tokenIndex177 := position, tokenIndex 1631 if buffer[position] != rune('g') { 1632 goto l178 1633 } 1634 position++ 1635 goto l177 1636 l178: 1637 position, tokenIndex = position177, tokenIndex177 1638 if buffer[position] != rune('G') { 1639 goto l170 1640 } 1641 position++ 1642 } 1643 l177: 1644 goto l149 1645 l170: 1646 position, tokenIndex = position149, tokenIndex149 1647 if buffer[position] != rune('.') { 1648 goto l179 1649 } 1650 position++ 1651 { 1652 position180, tokenIndex180 := position, tokenIndex 1653 if buffer[position] != rune('s') { 1654 goto l181 1655 } 1656 position++ 1657 goto l180 1658 l181: 1659 position, tokenIndex = position180, tokenIndex180 1660 if buffer[position] != rune('S') { 1661 goto l179 1662 } 1663 position++ 1664 } 1665 l180: 1666 { 1667 position182, tokenIndex182 := position, tokenIndex 1668 if buffer[position] != rune('e') { 1669 goto l183 1670 } 1671 position++ 1672 goto l182 1673 l183: 1674 position, tokenIndex = position182, tokenIndex182 1675 if buffer[position] != rune('E') { 1676 goto l179 1677 } 1678 position++ 1679 } 1680 l182: 1681 { 1682 position184, tokenIndex184 := position, tokenIndex 1683 if buffer[position] != rune('t') { 1684 goto l185 1685 } 1686 position++ 1687 goto l184 1688 l185: 1689 position, tokenIndex = position184, tokenIndex184 1690 if buffer[position] != rune('T') { 1691 goto l179 1692 } 1693 position++ 1694 } 1695 l184: 1696 goto l149 1697 l179: 1698 position, tokenIndex = position149, tokenIndex149 1699 if buffer[position] != rune('.') { 1700 goto l186 1701 } 1702 position++ 1703 { 1704 position187, tokenIndex187 := position, tokenIndex 1705 if buffer[position] != rune('b') { 1706 goto l188 1707 } 1708 position++ 1709 goto l187 1710 l188: 1711 position, tokenIndex = position187, tokenIndex187 1712 if buffer[position] != rune('B') { 1713 goto l186 1714 } 1715 position++ 1716 } 1717 l187: 1718 { 1719 position189, tokenIndex189 := position, tokenIndex 1720 if buffer[position] != rune('y') { 1721 goto l190 1722 } 1723 position++ 1724 goto l189 1725 l190: 1726 position, tokenIndex = position189, tokenIndex189 1727 if buffer[position] != rune('Y') { 1728 goto l186 1729 } 1730 position++ 1731 } 1732 l189: 1733 { 1734 position191, tokenIndex191 := position, tokenIndex 1735 if buffer[position] != rune('t') { 1736 goto l192 1737 } 1738 position++ 1739 goto l191 1740 l192: 1741 position, tokenIndex = position191, tokenIndex191 1742 if buffer[position] != rune('T') { 1743 goto l186 1744 } 1745 position++ 1746 } 1747 l191: 1748 { 1749 position193, tokenIndex193 := position, tokenIndex 1750 if buffer[position] != rune('e') { 1751 goto l194 1752 } 1753 position++ 1754 goto l193 1755 l194: 1756 position, tokenIndex = position193, tokenIndex193 1757 if buffer[position] != rune('E') { 1758 goto l186 1759 } 1760 position++ 1761 } 1762 l193: 1763 goto l149 1764 l186: 1765 position, tokenIndex = position149, tokenIndex149 1766 if buffer[position] != rune('.') { 1767 goto l195 1768 } 1769 position++ 1770 if buffer[position] != rune('8') { 1771 goto l195 1772 } 1773 position++ 1774 { 1775 position196, tokenIndex196 := position, tokenIndex 1776 if buffer[position] != rune('b') { 1777 goto l197 1778 } 1779 position++ 1780 goto l196 1781 l197: 1782 position, tokenIndex = position196, tokenIndex196 1783 if buffer[position] != rune('B') { 1784 goto l195 1785 } 1786 position++ 1787 } 1788 l196: 1789 { 1790 position198, tokenIndex198 := position, tokenIndex 1791 if buffer[position] != rune('y') { 1792 goto l199 1793 } 1794 position++ 1795 goto l198 1796 l199: 1797 position, tokenIndex = position198, tokenIndex198 1798 if buffer[position] != rune('Y') { 1799 goto l195 1800 } 1801 position++ 1802 } 1803 l198: 1804 { 1805 position200, tokenIndex200 := position, tokenIndex 1806 if buffer[position] != rune('t') { 1807 goto l201 1808 } 1809 position++ 1810 goto l200 1811 l201: 1812 position, tokenIndex = position200, tokenIndex200 1813 if buffer[position] != rune('T') { 1814 goto l195 1815 } 1816 position++ 1817 } 1818 l200: 1819 { 1820 position202, tokenIndex202 := position, tokenIndex 1821 if buffer[position] != rune('e') { 1822 goto l203 1823 } 1824 position++ 1825 goto l202 1826 l203: 1827 position, tokenIndex = position202, tokenIndex202 1828 if buffer[position] != rune('E') { 1829 goto l195 1830 } 1831 position++ 1832 } 1833 l202: 1834 goto l149 1835 l195: 1836 position, tokenIndex = position149, tokenIndex149 1837 if buffer[position] != rune('.') { 1838 goto l204 1839 } 1840 position++ 1841 if buffer[position] != rune('4') { 1842 goto l204 1843 } 1844 position++ 1845 { 1846 position205, tokenIndex205 := position, tokenIndex 1847 if buffer[position] != rune('b') { 1848 goto l206 1849 } 1850 position++ 1851 goto l205 1852 l206: 1853 position, tokenIndex = position205, tokenIndex205 1854 if buffer[position] != rune('B') { 1855 goto l204 1856 } 1857 position++ 1858 } 1859 l205: 1860 { 1861 position207, tokenIndex207 := position, tokenIndex 1862 if buffer[position] != rune('y') { 1863 goto l208 1864 } 1865 position++ 1866 goto l207 1867 l208: 1868 position, tokenIndex = position207, tokenIndex207 1869 if buffer[position] != rune('Y') { 1870 goto l204 1871 } 1872 position++ 1873 } 1874 l207: 1875 { 1876 position209, tokenIndex209 := position, tokenIndex 1877 if buffer[position] != rune('t') { 1878 goto l210 1879 } 1880 position++ 1881 goto l209 1882 l210: 1883 position, tokenIndex = position209, tokenIndex209 1884 if buffer[position] != rune('T') { 1885 goto l204 1886 } 1887 position++ 1888 } 1889 l209: 1890 { 1891 position211, tokenIndex211 := position, tokenIndex 1892 if buffer[position] != rune('e') { 1893 goto l212 1894 } 1895 position++ 1896 goto l211 1897 l212: 1898 position, tokenIndex = position211, tokenIndex211 1899 if buffer[position] != rune('E') { 1900 goto l204 1901 } 1902 position++ 1903 } 1904 l211: 1905 goto l149 1906 l204: 1907 position, tokenIndex = position149, tokenIndex149 1908 if buffer[position] != rune('.') { 1909 goto l213 1910 } 1911 position++ 1912 { 1913 position214, tokenIndex214 := position, tokenIndex 1914 if buffer[position] != rune('q') { 1915 goto l215 1916 } 1917 position++ 1918 goto l214 1919 l215: 1920 position, tokenIndex = position214, tokenIndex214 1921 if buffer[position] != rune('Q') { 1922 goto l213 1923 } 1924 position++ 1925 } 1926 l214: 1927 { 1928 position216, tokenIndex216 := position, tokenIndex 1929 if buffer[position] != rune('u') { 1930 goto l217 1931 } 1932 position++ 1933 goto l216 1934 l217: 1935 position, tokenIndex = position216, tokenIndex216 1936 if buffer[position] != rune('U') { 1937 goto l213 1938 } 1939 position++ 1940 } 1941 l216: 1942 { 1943 position218, tokenIndex218 := position, tokenIndex 1944 if buffer[position] != rune('a') { 1945 goto l219 1946 } 1947 position++ 1948 goto l218 1949 l219: 1950 position, tokenIndex = position218, tokenIndex218 1951 if buffer[position] != rune('A') { 1952 goto l213 1953 } 1954 position++ 1955 } 1956 l218: 1957 { 1958 position220, tokenIndex220 := position, tokenIndex 1959 if buffer[position] != rune('d') { 1960 goto l221 1961 } 1962 position++ 1963 goto l220 1964 l221: 1965 position, tokenIndex = position220, tokenIndex220 1966 if buffer[position] != rune('D') { 1967 goto l213 1968 } 1969 position++ 1970 } 1971 l220: 1972 goto l149 1973 l213: 1974 position, tokenIndex = position149, tokenIndex149 1975 if buffer[position] != rune('.') { 1976 goto l222 1977 } 1978 position++ 1979 { 1980 position223, tokenIndex223 := position, tokenIndex 1981 if buffer[position] != rune('t') { 1982 goto l224 1983 } 1984 position++ 1985 goto l223 1986 l224: 1987 position, tokenIndex = position223, tokenIndex223 1988 if buffer[position] != rune('T') { 1989 goto l222 1990 } 1991 position++ 1992 } 1993 l223: 1994 { 1995 position225, tokenIndex225 := position, tokenIndex 1996 if buffer[position] != rune('c') { 1997 goto l226 1998 } 1999 position++ 2000 goto l225 2001 l226: 2002 position, tokenIndex = position225, tokenIndex225 2003 if buffer[position] != rune('C') { 2004 goto l222 2005 } 2006 position++ 2007 } 2008 l225: 2009 goto l149 2010 l222: 2011 position, tokenIndex = position149, tokenIndex149 2012 if buffer[position] != rune('.') { 2013 goto l227 2014 } 2015 position++ 2016 { 2017 position228, tokenIndex228 := position, tokenIndex 2018 if buffer[position] != rune('l') { 2019 goto l229 2020 } 2021 position++ 2022 goto l228 2023 l229: 2024 position, tokenIndex = position228, tokenIndex228 2025 if buffer[position] != rune('L') { 2026 goto l227 2027 } 2028 position++ 2029 } 2030 l228: 2031 { 2032 position230, tokenIndex230 := position, tokenIndex 2033 if buffer[position] != rune('o') { 2034 goto l231 2035 } 2036 position++ 2037 goto l230 2038 l231: 2039 position, tokenIndex = position230, tokenIndex230 2040 if buffer[position] != rune('O') { 2041 goto l227 2042 } 2043 position++ 2044 } 2045 l230: 2046 { 2047 position232, tokenIndex232 := position, tokenIndex 2048 if buffer[position] != rune('c') { 2049 goto l233 2050 } 2051 position++ 2052 goto l232 2053 l233: 2054 position, tokenIndex = position232, tokenIndex232 2055 if buffer[position] != rune('C') { 2056 goto l227 2057 } 2058 position++ 2059 } 2060 l232: 2061 { 2062 position234, tokenIndex234 := position, tokenIndex 2063 if buffer[position] != rune('a') { 2064 goto l235 2065 } 2066 position++ 2067 goto l234 2068 l235: 2069 position, tokenIndex = position234, tokenIndex234 2070 if buffer[position] != rune('A') { 2071 goto l227 2072 } 2073 position++ 2074 } 2075 l234: 2076 { 2077 position236, tokenIndex236 := position, tokenIndex 2078 if buffer[position] != rune('l') { 2079 goto l237 2080 } 2081 position++ 2082 goto l236 2083 l237: 2084 position, tokenIndex = position236, tokenIndex236 2085 if buffer[position] != rune('L') { 2086 goto l227 2087 } 2088 position++ 2089 } 2090 l236: 2091 { 2092 position238, tokenIndex238 := position, tokenIndex 2093 if buffer[position] != rune('e') { 2094 goto l239 2095 } 2096 position++ 2097 goto l238 2098 l239: 2099 position, tokenIndex = position238, tokenIndex238 2100 if buffer[position] != rune('E') { 2101 goto l227 2102 } 2103 position++ 2104 } 2105 l238: 2106 { 2107 position240, tokenIndex240 := position, tokenIndex 2108 if buffer[position] != rune('n') { 2109 goto l241 2110 } 2111 position++ 2112 goto l240 2113 l241: 2114 position, tokenIndex = position240, tokenIndex240 2115 if buffer[position] != rune('N') { 2116 goto l227 2117 } 2118 position++ 2119 } 2120 l240: 2121 { 2122 position242, tokenIndex242 := position, tokenIndex 2123 if buffer[position] != rune('t') { 2124 goto l243 2125 } 2126 position++ 2127 goto l242 2128 l243: 2129 position, tokenIndex = position242, tokenIndex242 2130 if buffer[position] != rune('T') { 2131 goto l227 2132 } 2133 position++ 2134 } 2135 l242: 2136 { 2137 position244, tokenIndex244 := position, tokenIndex 2138 if buffer[position] != rune('r') { 2139 goto l245 2140 } 2141 position++ 2142 goto l244 2143 l245: 2144 position, tokenIndex = position244, tokenIndex244 2145 if buffer[position] != rune('R') { 2146 goto l227 2147 } 2148 position++ 2149 } 2150 l244: 2151 { 2152 position246, tokenIndex246 := position, tokenIndex 2153 if buffer[position] != rune('y') { 2154 goto l247 2155 } 2156 position++ 2157 goto l246 2158 l247: 2159 position, tokenIndex = position246, tokenIndex246 2160 if buffer[position] != rune('Y') { 2161 goto l227 2162 } 2163 position++ 2164 } 2165 l246: 2166 goto l149 2167 l227: 2168 position, tokenIndex = position149, tokenIndex149 2169 if buffer[position] != rune('.') { 2170 goto l248 2171 } 2172 position++ 2173 { 2174 position249, tokenIndex249 := position, tokenIndex 2175 if buffer[position] != rune('s') { 2176 goto l250 2177 } 2178 position++ 2179 goto l249 2180 l250: 2181 position, tokenIndex = position249, tokenIndex249 2182 if buffer[position] != rune('S') { 2183 goto l248 2184 } 2185 position++ 2186 } 2187 l249: 2188 { 2189 position251, tokenIndex251 := position, tokenIndex 2190 if buffer[position] != rune('i') { 2191 goto l252 2192 } 2193 position++ 2194 goto l251 2195 l252: 2196 position, tokenIndex = position251, tokenIndex251 2197 if buffer[position] != rune('I') { 2198 goto l248 2199 } 2200 position++ 2201 } 2202 l251: 2203 { 2204 position253, tokenIndex253 := position, tokenIndex 2205 if buffer[position] != rune('z') { 2206 goto l254 2207 } 2208 position++ 2209 goto l253 2210 l254: 2211 position, tokenIndex = position253, tokenIndex253 2212 if buffer[position] != rune('Z') { 2213 goto l248 2214 } 2215 position++ 2216 } 2217 l253: 2218 { 2219 position255, tokenIndex255 := position, tokenIndex 2220 if buffer[position] != rune('e') { 2221 goto l256 2222 } 2223 position++ 2224 goto l255 2225 l256: 2226 position, tokenIndex = position255, tokenIndex255 2227 if buffer[position] != rune('E') { 2228 goto l248 2229 } 2230 position++ 2231 } 2232 l255: 2233 goto l149 2234 l248: 2235 position, tokenIndex = position149, tokenIndex149 2236 if buffer[position] != rune('.') { 2237 goto l257 2238 } 2239 position++ 2240 { 2241 position258, tokenIndex258 := position, tokenIndex 2242 if buffer[position] != rune('t') { 2243 goto l259 2244 } 2245 position++ 2246 goto l258 2247 l259: 2248 position, tokenIndex = position258, tokenIndex258 2249 if buffer[position] != rune('T') { 2250 goto l257 2251 } 2252 position++ 2253 } 2254 l258: 2255 { 2256 position260, tokenIndex260 := position, tokenIndex 2257 if buffer[position] != rune('y') { 2258 goto l261 2259 } 2260 position++ 2261 goto l260 2262 l261: 2263 position, tokenIndex = position260, tokenIndex260 2264 if buffer[position] != rune('Y') { 2265 goto l257 2266 } 2267 position++ 2268 } 2269 l260: 2270 { 2271 position262, tokenIndex262 := position, tokenIndex 2272 if buffer[position] != rune('p') { 2273 goto l263 2274 } 2275 position++ 2276 goto l262 2277 l263: 2278 position, tokenIndex = position262, tokenIndex262 2279 if buffer[position] != rune('P') { 2280 goto l257 2281 } 2282 position++ 2283 } 2284 l262: 2285 { 2286 position264, tokenIndex264 := position, tokenIndex 2287 if buffer[position] != rune('e') { 2288 goto l265 2289 } 2290 position++ 2291 goto l264 2292 l265: 2293 position, tokenIndex = position264, tokenIndex264 2294 if buffer[position] != rune('E') { 2295 goto l257 2296 } 2297 position++ 2298 } 2299 l264: 2300 goto l149 2301 l257: 2302 position, tokenIndex = position149, tokenIndex149 2303 if buffer[position] != rune('.') { 2304 goto l266 2305 } 2306 position++ 2307 { 2308 position267, tokenIndex267 := position, tokenIndex 2309 if buffer[position] != rune('u') { 2310 goto l268 2311 } 2312 position++ 2313 goto l267 2314 l268: 2315 position, tokenIndex = position267, tokenIndex267 2316 if buffer[position] != rune('U') { 2317 goto l266 2318 } 2319 position++ 2320 } 2321 l267: 2322 { 2323 position269, tokenIndex269 := position, tokenIndex 2324 if buffer[position] != rune('l') { 2325 goto l270 2326 } 2327 position++ 2328 goto l269 2329 l270: 2330 position, tokenIndex = position269, tokenIndex269 2331 if buffer[position] != rune('L') { 2332 goto l266 2333 } 2334 position++ 2335 } 2336 l269: 2337 { 2338 position271, tokenIndex271 := position, tokenIndex 2339 if buffer[position] != rune('e') { 2340 goto l272 2341 } 2342 position++ 2343 goto l271 2344 l272: 2345 position, tokenIndex = position271, tokenIndex271 2346 if buffer[position] != rune('E') { 2347 goto l266 2348 } 2349 position++ 2350 } 2351 l271: 2352 { 2353 position273, tokenIndex273 := position, tokenIndex 2354 if buffer[position] != rune('b') { 2355 goto l274 2356 } 2357 position++ 2358 goto l273 2359 l274: 2360 position, tokenIndex = position273, tokenIndex273 2361 if buffer[position] != rune('B') { 2362 goto l266 2363 } 2364 position++ 2365 } 2366 l273: 2367 if buffer[position] != rune('1') { 2368 goto l266 2369 } 2370 position++ 2371 if buffer[position] != rune('2') { 2372 goto l266 2373 } 2374 position++ 2375 if buffer[position] != rune('8') { 2376 goto l266 2377 } 2378 position++ 2379 goto l149 2380 l266: 2381 position, tokenIndex = position149, tokenIndex149 2382 if buffer[position] != rune('.') { 2383 goto l147 2384 } 2385 position++ 2386 { 2387 position275, tokenIndex275 := position, tokenIndex 2388 if buffer[position] != rune('s') { 2389 goto l276 2390 } 2391 position++ 2392 goto l275 2393 l276: 2394 position, tokenIndex = position275, tokenIndex275 2395 if buffer[position] != rune('S') { 2396 goto l147 2397 } 2398 position++ 2399 } 2400 l275: 2401 { 2402 position277, tokenIndex277 := position, tokenIndex 2403 if buffer[position] != rune('l') { 2404 goto l278 2405 } 2406 position++ 2407 goto l277 2408 l278: 2409 position, tokenIndex = position277, tokenIndex277 2410 if buffer[position] != rune('L') { 2411 goto l147 2412 } 2413 position++ 2414 } 2415 l277: 2416 { 2417 position279, tokenIndex279 := position, tokenIndex 2418 if buffer[position] != rune('e') { 2419 goto l280 2420 } 2421 position++ 2422 goto l279 2423 l280: 2424 position, tokenIndex = position279, tokenIndex279 2425 if buffer[position] != rune('E') { 2426 goto l147 2427 } 2428 position++ 2429 } 2430 l279: 2431 { 2432 position281, tokenIndex281 := position, tokenIndex 2433 if buffer[position] != rune('b') { 2434 goto l282 2435 } 2436 position++ 2437 goto l281 2438 l282: 2439 position, tokenIndex = position281, tokenIndex281 2440 if buffer[position] != rune('B') { 2441 goto l147 2442 } 2443 position++ 2444 } 2445 l281: 2446 if buffer[position] != rune('1') { 2447 goto l147 2448 } 2449 position++ 2450 if buffer[position] != rune('2') { 2451 goto l147 2452 } 2453 position++ 2454 if buffer[position] != rune('8') { 2455 goto l147 2456 } 2457 position++ 2458 } 2459 l149: 2460 add(ruleLabelContainingDirectiveName, position148) 2461 } 2462 return true 2463 l147: 2464 position, tokenIndex = position147, tokenIndex147 2465 return false 2466 }, 2467 /* 14 SymbolArgs <- <(SymbolArg (WS? ',' WS? SymbolArg)*)> */ 2468 func() bool { 2469 position283, tokenIndex283 := position, tokenIndex 2470 { 2471 position284 := position 2472 if !_rules[ruleSymbolArg]() { 2473 goto l283 2474 } 2475 l285: 2476 { 2477 position286, tokenIndex286 := position, tokenIndex 2478 { 2479 position287, tokenIndex287 := position, tokenIndex 2480 if !_rules[ruleWS]() { 2481 goto l287 2482 } 2483 goto l288 2484 l287: 2485 position, tokenIndex = position287, tokenIndex287 2486 } 2487 l288: 2488 if buffer[position] != rune(',') { 2489 goto l286 2490 } 2491 position++ 2492 { 2493 position289, tokenIndex289 := position, tokenIndex 2494 if !_rules[ruleWS]() { 2495 goto l289 2496 } 2497 goto l290 2498 l289: 2499 position, tokenIndex = position289, tokenIndex289 2500 } 2501 l290: 2502 if !_rules[ruleSymbolArg]() { 2503 goto l286 2504 } 2505 goto l285 2506 l286: 2507 position, tokenIndex = position286, tokenIndex286 2508 } 2509 add(ruleSymbolArgs, position284) 2510 } 2511 return true 2512 l283: 2513 position, tokenIndex = position283, tokenIndex283 2514 return false 2515 }, 2516 /* 15 SymbolShift <- <((('<' '<') / ('>' '>')) WS? [0-9]+)> */ 2517 func() bool { 2518 position291, tokenIndex291 := position, tokenIndex 2519 { 2520 position292 := position 2521 { 2522 position293, tokenIndex293 := position, tokenIndex 2523 if buffer[position] != rune('<') { 2524 goto l294 2525 } 2526 position++ 2527 if buffer[position] != rune('<') { 2528 goto l294 2529 } 2530 position++ 2531 goto l293 2532 l294: 2533 position, tokenIndex = position293, tokenIndex293 2534 if buffer[position] != rune('>') { 2535 goto l291 2536 } 2537 position++ 2538 if buffer[position] != rune('>') { 2539 goto l291 2540 } 2541 position++ 2542 } 2543 l293: 2544 { 2545 position295, tokenIndex295 := position, tokenIndex 2546 if !_rules[ruleWS]() { 2547 goto l295 2548 } 2549 goto l296 2550 l295: 2551 position, tokenIndex = position295, tokenIndex295 2552 } 2553 l296: 2554 if c := buffer[position]; c < rune('0') || c > rune('9') { 2555 goto l291 2556 } 2557 position++ 2558 l297: 2559 { 2560 position298, tokenIndex298 := position, tokenIndex 2561 if c := buffer[position]; c < rune('0') || c > rune('9') { 2562 goto l298 2563 } 2564 position++ 2565 goto l297 2566 l298: 2567 position, tokenIndex = position298, tokenIndex298 2568 } 2569 add(ruleSymbolShift, position292) 2570 } 2571 return true 2572 l291: 2573 position, tokenIndex = position291, tokenIndex291 2574 return false 2575 }, 2576 /* 16 SymbolArg <- <((OpenParen WS?)? (Offset / SymbolType / ((Offset / LocalSymbol / SymbolName / Dot) (WS? Operator WS? (Offset / LocalSymbol / SymbolName))*) / (LocalSymbol TCMarker?) / (SymbolName Offset) / (SymbolName TCMarker?)) (WS? CloseParen)? (WS? SymbolShift)?)> */ 2577 func() bool { 2578 position299, tokenIndex299 := position, tokenIndex 2579 { 2580 position300 := position 2581 { 2582 position301, tokenIndex301 := position, tokenIndex 2583 if !_rules[ruleOpenParen]() { 2584 goto l301 2585 } 2586 { 2587 position303, tokenIndex303 := position, tokenIndex 2588 if !_rules[ruleWS]() { 2589 goto l303 2590 } 2591 goto l304 2592 l303: 2593 position, tokenIndex = position303, tokenIndex303 2594 } 2595 l304: 2596 goto l302 2597 l301: 2598 position, tokenIndex = position301, tokenIndex301 2599 } 2600 l302: 2601 { 2602 position305, tokenIndex305 := position, tokenIndex 2603 if !_rules[ruleOffset]() { 2604 goto l306 2605 } 2606 goto l305 2607 l306: 2608 position, tokenIndex = position305, tokenIndex305 2609 if !_rules[ruleSymbolType]() { 2610 goto l307 2611 } 2612 goto l305 2613 l307: 2614 position, tokenIndex = position305, tokenIndex305 2615 { 2616 position309, tokenIndex309 := position, tokenIndex 2617 if !_rules[ruleOffset]() { 2618 goto l310 2619 } 2620 goto l309 2621 l310: 2622 position, tokenIndex = position309, tokenIndex309 2623 if !_rules[ruleLocalSymbol]() { 2624 goto l311 2625 } 2626 goto l309 2627 l311: 2628 position, tokenIndex = position309, tokenIndex309 2629 if !_rules[ruleSymbolName]() { 2630 goto l312 2631 } 2632 goto l309 2633 l312: 2634 position, tokenIndex = position309, tokenIndex309 2635 if !_rules[ruleDot]() { 2636 goto l308 2637 } 2638 } 2639 l309: 2640 l313: 2641 { 2642 position314, tokenIndex314 := position, tokenIndex 2643 { 2644 position315, tokenIndex315 := position, tokenIndex 2645 if !_rules[ruleWS]() { 2646 goto l315 2647 } 2648 goto l316 2649 l315: 2650 position, tokenIndex = position315, tokenIndex315 2651 } 2652 l316: 2653 if !_rules[ruleOperator]() { 2654 goto l314 2655 } 2656 { 2657 position317, tokenIndex317 := position, tokenIndex 2658 if !_rules[ruleWS]() { 2659 goto l317 2660 } 2661 goto l318 2662 l317: 2663 position, tokenIndex = position317, tokenIndex317 2664 } 2665 l318: 2666 { 2667 position319, tokenIndex319 := position, tokenIndex 2668 if !_rules[ruleOffset]() { 2669 goto l320 2670 } 2671 goto l319 2672 l320: 2673 position, tokenIndex = position319, tokenIndex319 2674 if !_rules[ruleLocalSymbol]() { 2675 goto l321 2676 } 2677 goto l319 2678 l321: 2679 position, tokenIndex = position319, tokenIndex319 2680 if !_rules[ruleSymbolName]() { 2681 goto l314 2682 } 2683 } 2684 l319: 2685 goto l313 2686 l314: 2687 position, tokenIndex = position314, tokenIndex314 2688 } 2689 goto l305 2690 l308: 2691 position, tokenIndex = position305, tokenIndex305 2692 if !_rules[ruleLocalSymbol]() { 2693 goto l322 2694 } 2695 { 2696 position323, tokenIndex323 := position, tokenIndex 2697 if !_rules[ruleTCMarker]() { 2698 goto l323 2699 } 2700 goto l324 2701 l323: 2702 position, tokenIndex = position323, tokenIndex323 2703 } 2704 l324: 2705 goto l305 2706 l322: 2707 position, tokenIndex = position305, tokenIndex305 2708 if !_rules[ruleSymbolName]() { 2709 goto l325 2710 } 2711 if !_rules[ruleOffset]() { 2712 goto l325 2713 } 2714 goto l305 2715 l325: 2716 position, tokenIndex = position305, tokenIndex305 2717 if !_rules[ruleSymbolName]() { 2718 goto l299 2719 } 2720 { 2721 position326, tokenIndex326 := position, tokenIndex 2722 if !_rules[ruleTCMarker]() { 2723 goto l326 2724 } 2725 goto l327 2726 l326: 2727 position, tokenIndex = position326, tokenIndex326 2728 } 2729 l327: 2730 } 2731 l305: 2732 { 2733 position328, tokenIndex328 := position, tokenIndex 2734 { 2735 position330, tokenIndex330 := position, tokenIndex 2736 if !_rules[ruleWS]() { 2737 goto l330 2738 } 2739 goto l331 2740 l330: 2741 position, tokenIndex = position330, tokenIndex330 2742 } 2743 l331: 2744 if !_rules[ruleCloseParen]() { 2745 goto l328 2746 } 2747 goto l329 2748 l328: 2749 position, tokenIndex = position328, tokenIndex328 2750 } 2751 l329: 2752 { 2753 position332, tokenIndex332 := position, tokenIndex 2754 { 2755 position334, tokenIndex334 := position, tokenIndex 2756 if !_rules[ruleWS]() { 2757 goto l334 2758 } 2759 goto l335 2760 l334: 2761 position, tokenIndex = position334, tokenIndex334 2762 } 2763 l335: 2764 if !_rules[ruleSymbolShift]() { 2765 goto l332 2766 } 2767 goto l333 2768 l332: 2769 position, tokenIndex = position332, tokenIndex332 2770 } 2771 l333: 2772 add(ruleSymbolArg, position300) 2773 } 2774 return true 2775 l299: 2776 position, tokenIndex = position299, tokenIndex299 2777 return false 2778 }, 2779 /* 17 OpenParen <- <'('> */ 2780 func() bool { 2781 position336, tokenIndex336 := position, tokenIndex 2782 { 2783 position337 := position 2784 if buffer[position] != rune('(') { 2785 goto l336 2786 } 2787 position++ 2788 add(ruleOpenParen, position337) 2789 } 2790 return true 2791 l336: 2792 position, tokenIndex = position336, tokenIndex336 2793 return false 2794 }, 2795 /* 18 CloseParen <- <')'> */ 2796 func() bool { 2797 position338, tokenIndex338 := position, tokenIndex 2798 { 2799 position339 := position 2800 if buffer[position] != rune(')') { 2801 goto l338 2802 } 2803 position++ 2804 add(ruleCloseParen, position339) 2805 } 2806 return true 2807 l338: 2808 position, tokenIndex = position338, tokenIndex338 2809 return false 2810 }, 2811 /* 19 SymbolType <- <(('@' / '%') (('f' 'u' 'n' 'c' 't' 'i' 'o' 'n') / ('o' 'b' 'j' 'e' 'c' 't')))> */ 2812 func() bool { 2813 position340, tokenIndex340 := position, tokenIndex 2814 { 2815 position341 := position 2816 { 2817 position342, tokenIndex342 := position, tokenIndex 2818 if buffer[position] != rune('@') { 2819 goto l343 2820 } 2821 position++ 2822 goto l342 2823 l343: 2824 position, tokenIndex = position342, tokenIndex342 2825 if buffer[position] != rune('%') { 2826 goto l340 2827 } 2828 position++ 2829 } 2830 l342: 2831 { 2832 position344, tokenIndex344 := position, tokenIndex 2833 if buffer[position] != rune('f') { 2834 goto l345 2835 } 2836 position++ 2837 if buffer[position] != rune('u') { 2838 goto l345 2839 } 2840 position++ 2841 if buffer[position] != rune('n') { 2842 goto l345 2843 } 2844 position++ 2845 if buffer[position] != rune('c') { 2846 goto l345 2847 } 2848 position++ 2849 if buffer[position] != rune('t') { 2850 goto l345 2851 } 2852 position++ 2853 if buffer[position] != rune('i') { 2854 goto l345 2855 } 2856 position++ 2857 if buffer[position] != rune('o') { 2858 goto l345 2859 } 2860 position++ 2861 if buffer[position] != rune('n') { 2862 goto l345 2863 } 2864 position++ 2865 goto l344 2866 l345: 2867 position, tokenIndex = position344, tokenIndex344 2868 if buffer[position] != rune('o') { 2869 goto l340 2870 } 2871 position++ 2872 if buffer[position] != rune('b') { 2873 goto l340 2874 } 2875 position++ 2876 if buffer[position] != rune('j') { 2877 goto l340 2878 } 2879 position++ 2880 if buffer[position] != rune('e') { 2881 goto l340 2882 } 2883 position++ 2884 if buffer[position] != rune('c') { 2885 goto l340 2886 } 2887 position++ 2888 if buffer[position] != rune('t') { 2889 goto l340 2890 } 2891 position++ 2892 } 2893 l344: 2894 add(ruleSymbolType, position341) 2895 } 2896 return true 2897 l340: 2898 position, tokenIndex = position340, tokenIndex340 2899 return false 2900 }, 2901 /* 20 Dot <- <'.'> */ 2902 func() bool { 2903 position346, tokenIndex346 := position, tokenIndex 2904 { 2905 position347 := position 2906 if buffer[position] != rune('.') { 2907 goto l346 2908 } 2909 position++ 2910 add(ruleDot, position347) 2911 } 2912 return true 2913 l346: 2914 position, tokenIndex = position346, tokenIndex346 2915 return false 2916 }, 2917 /* 21 TCMarker <- <('[' 'T' 'C' ']')> */ 2918 func() bool { 2919 position348, tokenIndex348 := position, tokenIndex 2920 { 2921 position349 := position 2922 if buffer[position] != rune('[') { 2923 goto l348 2924 } 2925 position++ 2926 if buffer[position] != rune('T') { 2927 goto l348 2928 } 2929 position++ 2930 if buffer[position] != rune('C') { 2931 goto l348 2932 } 2933 position++ 2934 if buffer[position] != rune(']') { 2935 goto l348 2936 } 2937 position++ 2938 add(ruleTCMarker, position349) 2939 } 2940 return true 2941 l348: 2942 position, tokenIndex = position348, tokenIndex348 2943 return false 2944 }, 2945 /* 22 EscapedChar <- <('\\' .)> */ 2946 func() bool { 2947 position350, tokenIndex350 := position, tokenIndex 2948 { 2949 position351 := position 2950 if buffer[position] != rune('\\') { 2951 goto l350 2952 } 2953 position++ 2954 if !matchDot() { 2955 goto l350 2956 } 2957 add(ruleEscapedChar, position351) 2958 } 2959 return true 2960 l350: 2961 position, tokenIndex = position350, tokenIndex350 2962 return false 2963 }, 2964 /* 23 WS <- <(' ' / '\t')+> */ 2965 func() bool { 2966 position352, tokenIndex352 := position, tokenIndex 2967 { 2968 position353 := position 2969 { 2970 position356, tokenIndex356 := position, tokenIndex 2971 if buffer[position] != rune(' ') { 2972 goto l357 2973 } 2974 position++ 2975 goto l356 2976 l357: 2977 position, tokenIndex = position356, tokenIndex356 2978 if buffer[position] != rune('\t') { 2979 goto l352 2980 } 2981 position++ 2982 } 2983 l356: 2984 l354: 2985 { 2986 position355, tokenIndex355 := position, tokenIndex 2987 { 2988 position358, tokenIndex358 := position, tokenIndex 2989 if buffer[position] != rune(' ') { 2990 goto l359 2991 } 2992 position++ 2993 goto l358 2994 l359: 2995 position, tokenIndex = position358, tokenIndex358 2996 if buffer[position] != rune('\t') { 2997 goto l355 2998 } 2999 position++ 3000 } 3001 l358: 3002 goto l354 3003 l355: 3004 position, tokenIndex = position355, tokenIndex355 3005 } 3006 add(ruleWS, position353) 3007 } 3008 return true 3009 l352: 3010 position, tokenIndex = position352, tokenIndex352 3011 return false 3012 }, 3013 /* 24 Comment <- <((('/' '/') / '#') (!'\n' .)*)> */ 3014 func() bool { 3015 position360, tokenIndex360 := position, tokenIndex 3016 { 3017 position361 := position 3018 { 3019 position362, tokenIndex362 := position, tokenIndex 3020 if buffer[position] != rune('/') { 3021 goto l363 3022 } 3023 position++ 3024 if buffer[position] != rune('/') { 3025 goto l363 3026 } 3027 position++ 3028 goto l362 3029 l363: 3030 position, tokenIndex = position362, tokenIndex362 3031 if buffer[position] != rune('#') { 3032 goto l360 3033 } 3034 position++ 3035 } 3036 l362: 3037 l364: 3038 { 3039 position365, tokenIndex365 := position, tokenIndex 3040 { 3041 position366, tokenIndex366 := position, tokenIndex 3042 if buffer[position] != rune('\n') { 3043 goto l366 3044 } 3045 position++ 3046 goto l365 3047 l366: 3048 position, tokenIndex = position366, tokenIndex366 3049 } 3050 if !matchDot() { 3051 goto l365 3052 } 3053 goto l364 3054 l365: 3055 position, tokenIndex = position365, tokenIndex365 3056 } 3057 add(ruleComment, position361) 3058 } 3059 return true 3060 l360: 3061 position, tokenIndex = position360, tokenIndex360 3062 return false 3063 }, 3064 /* 25 Label <- <((LocalSymbol / LocalLabel / SymbolName) ':')> */ 3065 func() bool { 3066 position367, tokenIndex367 := position, tokenIndex 3067 { 3068 position368 := position 3069 { 3070 position369, tokenIndex369 := position, tokenIndex 3071 if !_rules[ruleLocalSymbol]() { 3072 goto l370 3073 } 3074 goto l369 3075 l370: 3076 position, tokenIndex = position369, tokenIndex369 3077 if !_rules[ruleLocalLabel]() { 3078 goto l371 3079 } 3080 goto l369 3081 l371: 3082 position, tokenIndex = position369, tokenIndex369 3083 if !_rules[ruleSymbolName]() { 3084 goto l367 3085 } 3086 } 3087 l369: 3088 if buffer[position] != rune(':') { 3089 goto l367 3090 } 3091 position++ 3092 add(ruleLabel, position368) 3093 } 3094 return true 3095 l367: 3096 position, tokenIndex = position367, tokenIndex367 3097 return false 3098 }, 3099 /* 26 SymbolName <- <(([a-z] / [A-Z] / '.' / '_') ([a-z] / [A-Z] / '.' / ([0-9] / [0-9]) / '$' / '_')*)> */ 3100 func() bool { 3101 position372, tokenIndex372 := position, tokenIndex 3102 { 3103 position373 := position 3104 { 3105 position374, tokenIndex374 := position, tokenIndex 3106 if c := buffer[position]; c < rune('a') || c > rune('z') { 3107 goto l375 3108 } 3109 position++ 3110 goto l374 3111 l375: 3112 position, tokenIndex = position374, tokenIndex374 3113 if c := buffer[position]; c < rune('A') || c > rune('Z') { 3114 goto l376 3115 } 3116 position++ 3117 goto l374 3118 l376: 3119 position, tokenIndex = position374, tokenIndex374 3120 if buffer[position] != rune('.') { 3121 goto l377 3122 } 3123 position++ 3124 goto l374 3125 l377: 3126 position, tokenIndex = position374, tokenIndex374 3127 if buffer[position] != rune('_') { 3128 goto l372 3129 } 3130 position++ 3131 } 3132 l374: 3133 l378: 3134 { 3135 position379, tokenIndex379 := position, tokenIndex 3136 { 3137 position380, tokenIndex380 := position, tokenIndex 3138 if c := buffer[position]; c < rune('a') || c > rune('z') { 3139 goto l381 3140 } 3141 position++ 3142 goto l380 3143 l381: 3144 position, tokenIndex = position380, tokenIndex380 3145 if c := buffer[position]; c < rune('A') || c > rune('Z') { 3146 goto l382 3147 } 3148 position++ 3149 goto l380 3150 l382: 3151 position, tokenIndex = position380, tokenIndex380 3152 if buffer[position] != rune('.') { 3153 goto l383 3154 } 3155 position++ 3156 goto l380 3157 l383: 3158 position, tokenIndex = position380, tokenIndex380 3159 { 3160 position385, tokenIndex385 := position, tokenIndex 3161 if c := buffer[position]; c < rune('0') || c > rune('9') { 3162 goto l386 3163 } 3164 position++ 3165 goto l385 3166 l386: 3167 position, tokenIndex = position385, tokenIndex385 3168 if c := buffer[position]; c < rune('0') || c > rune('9') { 3169 goto l384 3170 } 3171 position++ 3172 } 3173 l385: 3174 goto l380 3175 l384: 3176 position, tokenIndex = position380, tokenIndex380 3177 if buffer[position] != rune('$') { 3178 goto l387 3179 } 3180 position++ 3181 goto l380 3182 l387: 3183 position, tokenIndex = position380, tokenIndex380 3184 if buffer[position] != rune('_') { 3185 goto l379 3186 } 3187 position++ 3188 } 3189 l380: 3190 goto l378 3191 l379: 3192 position, tokenIndex = position379, tokenIndex379 3193 } 3194 add(ruleSymbolName, position373) 3195 } 3196 return true 3197 l372: 3198 position, tokenIndex = position372, tokenIndex372 3199 return false 3200 }, 3201 /* 27 LocalSymbol <- <('.' 'L' ([a-z] / [A-Z] / ([a-z] / [A-Z]) / '.' / ([0-9] / [0-9]) / '$' / '_')+)> */ 3202 func() bool { 3203 position388, tokenIndex388 := position, tokenIndex 3204 { 3205 position389 := position 3206 if buffer[position] != rune('.') { 3207 goto l388 3208 } 3209 position++ 3210 if buffer[position] != rune('L') { 3211 goto l388 3212 } 3213 position++ 3214 { 3215 position392, tokenIndex392 := position, tokenIndex 3216 if c := buffer[position]; c < rune('a') || c > rune('z') { 3217 goto l393 3218 } 3219 position++ 3220 goto l392 3221 l393: 3222 position, tokenIndex = position392, tokenIndex392 3223 if c := buffer[position]; c < rune('A') || c > rune('Z') { 3224 goto l394 3225 } 3226 position++ 3227 goto l392 3228 l394: 3229 position, tokenIndex = position392, tokenIndex392 3230 { 3231 position396, tokenIndex396 := position, tokenIndex 3232 if c := buffer[position]; c < rune('a') || c > rune('z') { 3233 goto l397 3234 } 3235 position++ 3236 goto l396 3237 l397: 3238 position, tokenIndex = position396, tokenIndex396 3239 if c := buffer[position]; c < rune('A') || c > rune('Z') { 3240 goto l395 3241 } 3242 position++ 3243 } 3244 l396: 3245 goto l392 3246 l395: 3247 position, tokenIndex = position392, tokenIndex392 3248 if buffer[position] != rune('.') { 3249 goto l398 3250 } 3251 position++ 3252 goto l392 3253 l398: 3254 position, tokenIndex = position392, tokenIndex392 3255 { 3256 position400, tokenIndex400 := position, tokenIndex 3257 if c := buffer[position]; c < rune('0') || c > rune('9') { 3258 goto l401 3259 } 3260 position++ 3261 goto l400 3262 l401: 3263 position, tokenIndex = position400, tokenIndex400 3264 if c := buffer[position]; c < rune('0') || c > rune('9') { 3265 goto l399 3266 } 3267 position++ 3268 } 3269 l400: 3270 goto l392 3271 l399: 3272 position, tokenIndex = position392, tokenIndex392 3273 if buffer[position] != rune('$') { 3274 goto l402 3275 } 3276 position++ 3277 goto l392 3278 l402: 3279 position, tokenIndex = position392, tokenIndex392 3280 if buffer[position] != rune('_') { 3281 goto l388 3282 } 3283 position++ 3284 } 3285 l392: 3286 l390: 3287 { 3288 position391, tokenIndex391 := position, tokenIndex 3289 { 3290 position403, tokenIndex403 := position, tokenIndex 3291 if c := buffer[position]; c < rune('a') || c > rune('z') { 3292 goto l404 3293 } 3294 position++ 3295 goto l403 3296 l404: 3297 position, tokenIndex = position403, tokenIndex403 3298 if c := buffer[position]; c < rune('A') || c > rune('Z') { 3299 goto l405 3300 } 3301 position++ 3302 goto l403 3303 l405: 3304 position, tokenIndex = position403, tokenIndex403 3305 { 3306 position407, tokenIndex407 := position, tokenIndex 3307 if c := buffer[position]; c < rune('a') || c > rune('z') { 3308 goto l408 3309 } 3310 position++ 3311 goto l407 3312 l408: 3313 position, tokenIndex = position407, tokenIndex407 3314 if c := buffer[position]; c < rune('A') || c > rune('Z') { 3315 goto l406 3316 } 3317 position++ 3318 } 3319 l407: 3320 goto l403 3321 l406: 3322 position, tokenIndex = position403, tokenIndex403 3323 if buffer[position] != rune('.') { 3324 goto l409 3325 } 3326 position++ 3327 goto l403 3328 l409: 3329 position, tokenIndex = position403, tokenIndex403 3330 { 3331 position411, tokenIndex411 := position, tokenIndex 3332 if c := buffer[position]; c < rune('0') || c > rune('9') { 3333 goto l412 3334 } 3335 position++ 3336 goto l411 3337 l412: 3338 position, tokenIndex = position411, tokenIndex411 3339 if c := buffer[position]; c < rune('0') || c > rune('9') { 3340 goto l410 3341 } 3342 position++ 3343 } 3344 l411: 3345 goto l403 3346 l410: 3347 position, tokenIndex = position403, tokenIndex403 3348 if buffer[position] != rune('$') { 3349 goto l413 3350 } 3351 position++ 3352 goto l403 3353 l413: 3354 position, tokenIndex = position403, tokenIndex403 3355 if buffer[position] != rune('_') { 3356 goto l391 3357 } 3358 position++ 3359 } 3360 l403: 3361 goto l390 3362 l391: 3363 position, tokenIndex = position391, tokenIndex391 3364 } 3365 add(ruleLocalSymbol, position389) 3366 } 3367 return true 3368 l388: 3369 position, tokenIndex = position388, tokenIndex388 3370 return false 3371 }, 3372 /* 28 LocalLabel <- <([0-9] ([0-9] / '$')*)> */ 3373 func() bool { 3374 position414, tokenIndex414 := position, tokenIndex 3375 { 3376 position415 := position 3377 if c := buffer[position]; c < rune('0') || c > rune('9') { 3378 goto l414 3379 } 3380 position++ 3381 l416: 3382 { 3383 position417, tokenIndex417 := position, tokenIndex 3384 { 3385 position418, tokenIndex418 := position, tokenIndex 3386 if c := buffer[position]; c < rune('0') || c > rune('9') { 3387 goto l419 3388 } 3389 position++ 3390 goto l418 3391 l419: 3392 position, tokenIndex = position418, tokenIndex418 3393 if buffer[position] != rune('$') { 3394 goto l417 3395 } 3396 position++ 3397 } 3398 l418: 3399 goto l416 3400 l417: 3401 position, tokenIndex = position417, tokenIndex417 3402 } 3403 add(ruleLocalLabel, position415) 3404 } 3405 return true 3406 l414: 3407 position, tokenIndex = position414, tokenIndex414 3408 return false 3409 }, 3410 /* 29 LocalLabelRef <- <([0-9] ([0-9] / '$')* ('b' / 'f'))> */ 3411 func() bool { 3412 position420, tokenIndex420 := position, tokenIndex 3413 { 3414 position421 := position 3415 if c := buffer[position]; c < rune('0') || c > rune('9') { 3416 goto l420 3417 } 3418 position++ 3419 l422: 3420 { 3421 position423, tokenIndex423 := position, tokenIndex 3422 { 3423 position424, tokenIndex424 := position, tokenIndex 3424 if c := buffer[position]; c < rune('0') || c > rune('9') { 3425 goto l425 3426 } 3427 position++ 3428 goto l424 3429 l425: 3430 position, tokenIndex = position424, tokenIndex424 3431 if buffer[position] != rune('$') { 3432 goto l423 3433 } 3434 position++ 3435 } 3436 l424: 3437 goto l422 3438 l423: 3439 position, tokenIndex = position423, tokenIndex423 3440 } 3441 { 3442 position426, tokenIndex426 := position, tokenIndex 3443 if buffer[position] != rune('b') { 3444 goto l427 3445 } 3446 position++ 3447 goto l426 3448 l427: 3449 position, tokenIndex = position426, tokenIndex426 3450 if buffer[position] != rune('f') { 3451 goto l420 3452 } 3453 position++ 3454 } 3455 l426: 3456 add(ruleLocalLabelRef, position421) 3457 } 3458 return true 3459 l420: 3460 position, tokenIndex = position420, tokenIndex420 3461 return false 3462 }, 3463 /* 30 Instruction <- <(InstructionName (WS InstructionArg (WS? ',' WS? InstructionArg)*)?)> */ 3464 func() bool { 3465 position428, tokenIndex428 := position, tokenIndex 3466 { 3467 position429 := position 3468 if !_rules[ruleInstructionName]() { 3469 goto l428 3470 } 3471 { 3472 position430, tokenIndex430 := position, tokenIndex 3473 if !_rules[ruleWS]() { 3474 goto l430 3475 } 3476 if !_rules[ruleInstructionArg]() { 3477 goto l430 3478 } 3479 l432: 3480 { 3481 position433, tokenIndex433 := position, tokenIndex 3482 { 3483 position434, tokenIndex434 := position, tokenIndex 3484 if !_rules[ruleWS]() { 3485 goto l434 3486 } 3487 goto l435 3488 l434: 3489 position, tokenIndex = position434, tokenIndex434 3490 } 3491 l435: 3492 if buffer[position] != rune(',') { 3493 goto l433 3494 } 3495 position++ 3496 { 3497 position436, tokenIndex436 := position, tokenIndex 3498 if !_rules[ruleWS]() { 3499 goto l436 3500 } 3501 goto l437 3502 l436: 3503 position, tokenIndex = position436, tokenIndex436 3504 } 3505 l437: 3506 if !_rules[ruleInstructionArg]() { 3507 goto l433 3508 } 3509 goto l432 3510 l433: 3511 position, tokenIndex = position433, tokenIndex433 3512 } 3513 goto l431 3514 l430: 3515 position, tokenIndex = position430, tokenIndex430 3516 } 3517 l431: 3518 add(ruleInstruction, position429) 3519 } 3520 return true 3521 l428: 3522 position, tokenIndex = position428, tokenIndex428 3523 return false 3524 }, 3525 /* 31 InstructionName <- <(([a-z] / [A-Z]) ([a-z] / [A-Z] / '.' / ([0-9] / [0-9]))* ('.' / '+' / '-')?)> */ 3526 func() bool { 3527 position438, tokenIndex438 := position, tokenIndex 3528 { 3529 position439 := position 3530 { 3531 position440, tokenIndex440 := position, tokenIndex 3532 if c := buffer[position]; c < rune('a') || c > rune('z') { 3533 goto l441 3534 } 3535 position++ 3536 goto l440 3537 l441: 3538 position, tokenIndex = position440, tokenIndex440 3539 if c := buffer[position]; c < rune('A') || c > rune('Z') { 3540 goto l438 3541 } 3542 position++ 3543 } 3544 l440: 3545 l442: 3546 { 3547 position443, tokenIndex443 := position, tokenIndex 3548 { 3549 position444, tokenIndex444 := position, tokenIndex 3550 if c := buffer[position]; c < rune('a') || c > rune('z') { 3551 goto l445 3552 } 3553 position++ 3554 goto l444 3555 l445: 3556 position, tokenIndex = position444, tokenIndex444 3557 if c := buffer[position]; c < rune('A') || c > rune('Z') { 3558 goto l446 3559 } 3560 position++ 3561 goto l444 3562 l446: 3563 position, tokenIndex = position444, tokenIndex444 3564 if buffer[position] != rune('.') { 3565 goto l447 3566 } 3567 position++ 3568 goto l444 3569 l447: 3570 position, tokenIndex = position444, tokenIndex444 3571 { 3572 position448, tokenIndex448 := position, tokenIndex 3573 if c := buffer[position]; c < rune('0') || c > rune('9') { 3574 goto l449 3575 } 3576 position++ 3577 goto l448 3578 l449: 3579 position, tokenIndex = position448, tokenIndex448 3580 if c := buffer[position]; c < rune('0') || c > rune('9') { 3581 goto l443 3582 } 3583 position++ 3584 } 3585 l448: 3586 } 3587 l444: 3588 goto l442 3589 l443: 3590 position, tokenIndex = position443, tokenIndex443 3591 } 3592 { 3593 position450, tokenIndex450 := position, tokenIndex 3594 { 3595 position452, tokenIndex452 := position, tokenIndex 3596 if buffer[position] != rune('.') { 3597 goto l453 3598 } 3599 position++ 3600 goto l452 3601 l453: 3602 position, tokenIndex = position452, tokenIndex452 3603 if buffer[position] != rune('+') { 3604 goto l454 3605 } 3606 position++ 3607 goto l452 3608 l454: 3609 position, tokenIndex = position452, tokenIndex452 3610 if buffer[position] != rune('-') { 3611 goto l450 3612 } 3613 position++ 3614 } 3615 l452: 3616 goto l451 3617 l450: 3618 position, tokenIndex = position450, tokenIndex450 3619 } 3620 l451: 3621 add(ruleInstructionName, position439) 3622 } 3623 return true 3624 l438: 3625 position, tokenIndex = position438, tokenIndex438 3626 return false 3627 }, 3628 /* 32 InstructionArg <- <(IndirectionIndicator? (ARMConstantTweak / RegisterOrConstant / LocalLabelRef / TOCRefHigh / TOCRefLow / GOTLocation / GOTSymbolOffset / MemoryRef) AVX512Token*)> */ 3629 func() bool { 3630 position455, tokenIndex455 := position, tokenIndex 3631 { 3632 position456 := position 3633 { 3634 position457, tokenIndex457 := position, tokenIndex 3635 if !_rules[ruleIndirectionIndicator]() { 3636 goto l457 3637 } 3638 goto l458 3639 l457: 3640 position, tokenIndex = position457, tokenIndex457 3641 } 3642 l458: 3643 { 3644 position459, tokenIndex459 := position, tokenIndex 3645 if !_rules[ruleARMConstantTweak]() { 3646 goto l460 3647 } 3648 goto l459 3649 l460: 3650 position, tokenIndex = position459, tokenIndex459 3651 if !_rules[ruleRegisterOrConstant]() { 3652 goto l461 3653 } 3654 goto l459 3655 l461: 3656 position, tokenIndex = position459, tokenIndex459 3657 if !_rules[ruleLocalLabelRef]() { 3658 goto l462 3659 } 3660 goto l459 3661 l462: 3662 position, tokenIndex = position459, tokenIndex459 3663 if !_rules[ruleTOCRefHigh]() { 3664 goto l463 3665 } 3666 goto l459 3667 l463: 3668 position, tokenIndex = position459, tokenIndex459 3669 if !_rules[ruleTOCRefLow]() { 3670 goto l464 3671 } 3672 goto l459 3673 l464: 3674 position, tokenIndex = position459, tokenIndex459 3675 if !_rules[ruleGOTLocation]() { 3676 goto l465 3677 } 3678 goto l459 3679 l465: 3680 position, tokenIndex = position459, tokenIndex459 3681 if !_rules[ruleGOTSymbolOffset]() { 3682 goto l466 3683 } 3684 goto l459 3685 l466: 3686 position, tokenIndex = position459, tokenIndex459 3687 if !_rules[ruleMemoryRef]() { 3688 goto l455 3689 } 3690 } 3691 l459: 3692 l467: 3693 { 3694 position468, tokenIndex468 := position, tokenIndex 3695 if !_rules[ruleAVX512Token]() { 3696 goto l468 3697 } 3698 goto l467 3699 l468: 3700 position, tokenIndex = position468, tokenIndex468 3701 } 3702 add(ruleInstructionArg, position456) 3703 } 3704 return true 3705 l455: 3706 position, tokenIndex = position455, tokenIndex455 3707 return false 3708 }, 3709 /* 33 GOTLocation <- <('$' '_' 'G' 'L' 'O' 'B' 'A' 'L' '_' 'O' 'F' 'F' 'S' 'E' 'T' '_' 'T' 'A' 'B' 'L' 'E' '_' '-' LocalSymbol)> */ 3710 func() bool { 3711 position469, tokenIndex469 := position, tokenIndex 3712 { 3713 position470 := position 3714 if buffer[position] != rune('$') { 3715 goto l469 3716 } 3717 position++ 3718 if buffer[position] != rune('_') { 3719 goto l469 3720 } 3721 position++ 3722 if buffer[position] != rune('G') { 3723 goto l469 3724 } 3725 position++ 3726 if buffer[position] != rune('L') { 3727 goto l469 3728 } 3729 position++ 3730 if buffer[position] != rune('O') { 3731 goto l469 3732 } 3733 position++ 3734 if buffer[position] != rune('B') { 3735 goto l469 3736 } 3737 position++ 3738 if buffer[position] != rune('A') { 3739 goto l469 3740 } 3741 position++ 3742 if buffer[position] != rune('L') { 3743 goto l469 3744 } 3745 position++ 3746 if buffer[position] != rune('_') { 3747 goto l469 3748 } 3749 position++ 3750 if buffer[position] != rune('O') { 3751 goto l469 3752 } 3753 position++ 3754 if buffer[position] != rune('F') { 3755 goto l469 3756 } 3757 position++ 3758 if buffer[position] != rune('F') { 3759 goto l469 3760 } 3761 position++ 3762 if buffer[position] != rune('S') { 3763 goto l469 3764 } 3765 position++ 3766 if buffer[position] != rune('E') { 3767 goto l469 3768 } 3769 position++ 3770 if buffer[position] != rune('T') { 3771 goto l469 3772 } 3773 position++ 3774 if buffer[position] != rune('_') { 3775 goto l469 3776 } 3777 position++ 3778 if buffer[position] != rune('T') { 3779 goto l469 3780 } 3781 position++ 3782 if buffer[position] != rune('A') { 3783 goto l469 3784 } 3785 position++ 3786 if buffer[position] != rune('B') { 3787 goto l469 3788 } 3789 position++ 3790 if buffer[position] != rune('L') { 3791 goto l469 3792 } 3793 position++ 3794 if buffer[position] != rune('E') { 3795 goto l469 3796 } 3797 position++ 3798 if buffer[position] != rune('_') { 3799 goto l469 3800 } 3801 position++ 3802 if buffer[position] != rune('-') { 3803 goto l469 3804 } 3805 position++ 3806 if !_rules[ruleLocalSymbol]() { 3807 goto l469 3808 } 3809 add(ruleGOTLocation, position470) 3810 } 3811 return true 3812 l469: 3813 position, tokenIndex = position469, tokenIndex469 3814 return false 3815 }, 3816 /* 34 GOTSymbolOffset <- <(('$' SymbolName ('@' 'G' 'O' 'T') ('O' 'F' 'F')?) / (':' ('g' / 'G') ('o' / 'O') ('t' / 'T') ':' SymbolName))> */ 3817 func() bool { 3818 position471, tokenIndex471 := position, tokenIndex 3819 { 3820 position472 := position 3821 { 3822 position473, tokenIndex473 := position, tokenIndex 3823 if buffer[position] != rune('$') { 3824 goto l474 3825 } 3826 position++ 3827 if !_rules[ruleSymbolName]() { 3828 goto l474 3829 } 3830 if buffer[position] != rune('@') { 3831 goto l474 3832 } 3833 position++ 3834 if buffer[position] != rune('G') { 3835 goto l474 3836 } 3837 position++ 3838 if buffer[position] != rune('O') { 3839 goto l474 3840 } 3841 position++ 3842 if buffer[position] != rune('T') { 3843 goto l474 3844 } 3845 position++ 3846 { 3847 position475, tokenIndex475 := position, tokenIndex 3848 if buffer[position] != rune('O') { 3849 goto l475 3850 } 3851 position++ 3852 if buffer[position] != rune('F') { 3853 goto l475 3854 } 3855 position++ 3856 if buffer[position] != rune('F') { 3857 goto l475 3858 } 3859 position++ 3860 goto l476 3861 l475: 3862 position, tokenIndex = position475, tokenIndex475 3863 } 3864 l476: 3865 goto l473 3866 l474: 3867 position, tokenIndex = position473, tokenIndex473 3868 if buffer[position] != rune(':') { 3869 goto l471 3870 } 3871 position++ 3872 { 3873 position477, tokenIndex477 := position, tokenIndex 3874 if buffer[position] != rune('g') { 3875 goto l478 3876 } 3877 position++ 3878 goto l477 3879 l478: 3880 position, tokenIndex = position477, tokenIndex477 3881 if buffer[position] != rune('G') { 3882 goto l471 3883 } 3884 position++ 3885 } 3886 l477: 3887 { 3888 position479, tokenIndex479 := position, tokenIndex 3889 if buffer[position] != rune('o') { 3890 goto l480 3891 } 3892 position++ 3893 goto l479 3894 l480: 3895 position, tokenIndex = position479, tokenIndex479 3896 if buffer[position] != rune('O') { 3897 goto l471 3898 } 3899 position++ 3900 } 3901 l479: 3902 { 3903 position481, tokenIndex481 := position, tokenIndex 3904 if buffer[position] != rune('t') { 3905 goto l482 3906 } 3907 position++ 3908 goto l481 3909 l482: 3910 position, tokenIndex = position481, tokenIndex481 3911 if buffer[position] != rune('T') { 3912 goto l471 3913 } 3914 position++ 3915 } 3916 l481: 3917 if buffer[position] != rune(':') { 3918 goto l471 3919 } 3920 position++ 3921 if !_rules[ruleSymbolName]() { 3922 goto l471 3923 } 3924 } 3925 l473: 3926 add(ruleGOTSymbolOffset, position472) 3927 } 3928 return true 3929 l471: 3930 position, tokenIndex = position471, tokenIndex471 3931 return false 3932 }, 3933 /* 35 AVX512Token <- <(WS? '{' '%'? ([0-9] / [a-z])* '}')> */ 3934 func() bool { 3935 position483, tokenIndex483 := position, tokenIndex 3936 { 3937 position484 := position 3938 { 3939 position485, tokenIndex485 := position, tokenIndex 3940 if !_rules[ruleWS]() { 3941 goto l485 3942 } 3943 goto l486 3944 l485: 3945 position, tokenIndex = position485, tokenIndex485 3946 } 3947 l486: 3948 if buffer[position] != rune('{') { 3949 goto l483 3950 } 3951 position++ 3952 { 3953 position487, tokenIndex487 := position, tokenIndex 3954 if buffer[position] != rune('%') { 3955 goto l487 3956 } 3957 position++ 3958 goto l488 3959 l487: 3960 position, tokenIndex = position487, tokenIndex487 3961 } 3962 l488: 3963 l489: 3964 { 3965 position490, tokenIndex490 := position, tokenIndex 3966 { 3967 position491, tokenIndex491 := position, tokenIndex 3968 if c := buffer[position]; c < rune('0') || c > rune('9') { 3969 goto l492 3970 } 3971 position++ 3972 goto l491 3973 l492: 3974 position, tokenIndex = position491, tokenIndex491 3975 if c := buffer[position]; c < rune('a') || c > rune('z') { 3976 goto l490 3977 } 3978 position++ 3979 } 3980 l491: 3981 goto l489 3982 l490: 3983 position, tokenIndex = position490, tokenIndex490 3984 } 3985 if buffer[position] != rune('}') { 3986 goto l483 3987 } 3988 position++ 3989 add(ruleAVX512Token, position484) 3990 } 3991 return true 3992 l483: 3993 position, tokenIndex = position483, tokenIndex483 3994 return false 3995 }, 3996 /* 36 TOCRefHigh <- <('.' 'T' 'O' 'C' '.' '-' (('0' 'b') / ('.' 'L' ([a-z] / [A-Z] / '_' / [0-9])+)) ('@' ('h' / 'H') ('a' / 'A')))> */ 3997 func() bool { 3998 position493, tokenIndex493 := position, tokenIndex 3999 { 4000 position494 := position 4001 if buffer[position] != rune('.') { 4002 goto l493 4003 } 4004 position++ 4005 if buffer[position] != rune('T') { 4006 goto l493 4007 } 4008 position++ 4009 if buffer[position] != rune('O') { 4010 goto l493 4011 } 4012 position++ 4013 if buffer[position] != rune('C') { 4014 goto l493 4015 } 4016 position++ 4017 if buffer[position] != rune('.') { 4018 goto l493 4019 } 4020 position++ 4021 if buffer[position] != rune('-') { 4022 goto l493 4023 } 4024 position++ 4025 { 4026 position495, tokenIndex495 := position, tokenIndex 4027 if buffer[position] != rune('0') { 4028 goto l496 4029 } 4030 position++ 4031 if buffer[position] != rune('b') { 4032 goto l496 4033 } 4034 position++ 4035 goto l495 4036 l496: 4037 position, tokenIndex = position495, tokenIndex495 4038 if buffer[position] != rune('.') { 4039 goto l493 4040 } 4041 position++ 4042 if buffer[position] != rune('L') { 4043 goto l493 4044 } 4045 position++ 4046 { 4047 position499, tokenIndex499 := position, tokenIndex 4048 if c := buffer[position]; c < rune('a') || c > rune('z') { 4049 goto l500 4050 } 4051 position++ 4052 goto l499 4053 l500: 4054 position, tokenIndex = position499, tokenIndex499 4055 if c := buffer[position]; c < rune('A') || c > rune('Z') { 4056 goto l501 4057 } 4058 position++ 4059 goto l499 4060 l501: 4061 position, tokenIndex = position499, tokenIndex499 4062 if buffer[position] != rune('_') { 4063 goto l502 4064 } 4065 position++ 4066 goto l499 4067 l502: 4068 position, tokenIndex = position499, tokenIndex499 4069 if c := buffer[position]; c < rune('0') || c > rune('9') { 4070 goto l493 4071 } 4072 position++ 4073 } 4074 l499: 4075 l497: 4076 { 4077 position498, tokenIndex498 := position, tokenIndex 4078 { 4079 position503, tokenIndex503 := position, tokenIndex 4080 if c := buffer[position]; c < rune('a') || c > rune('z') { 4081 goto l504 4082 } 4083 position++ 4084 goto l503 4085 l504: 4086 position, tokenIndex = position503, tokenIndex503 4087 if c := buffer[position]; c < rune('A') || c > rune('Z') { 4088 goto l505 4089 } 4090 position++ 4091 goto l503 4092 l505: 4093 position, tokenIndex = position503, tokenIndex503 4094 if buffer[position] != rune('_') { 4095 goto l506 4096 } 4097 position++ 4098 goto l503 4099 l506: 4100 position, tokenIndex = position503, tokenIndex503 4101 if c := buffer[position]; c < rune('0') || c > rune('9') { 4102 goto l498 4103 } 4104 position++ 4105 } 4106 l503: 4107 goto l497 4108 l498: 4109 position, tokenIndex = position498, tokenIndex498 4110 } 4111 } 4112 l495: 4113 if buffer[position] != rune('@') { 4114 goto l493 4115 } 4116 position++ 4117 { 4118 position507, tokenIndex507 := position, tokenIndex 4119 if buffer[position] != rune('h') { 4120 goto l508 4121 } 4122 position++ 4123 goto l507 4124 l508: 4125 position, tokenIndex = position507, tokenIndex507 4126 if buffer[position] != rune('H') { 4127 goto l493 4128 } 4129 position++ 4130 } 4131 l507: 4132 { 4133 position509, tokenIndex509 := position, tokenIndex 4134 if buffer[position] != rune('a') { 4135 goto l510 4136 } 4137 position++ 4138 goto l509 4139 l510: 4140 position, tokenIndex = position509, tokenIndex509 4141 if buffer[position] != rune('A') { 4142 goto l493 4143 } 4144 position++ 4145 } 4146 l509: 4147 add(ruleTOCRefHigh, position494) 4148 } 4149 return true 4150 l493: 4151 position, tokenIndex = position493, tokenIndex493 4152 return false 4153 }, 4154 /* 37 TOCRefLow <- <('.' 'T' 'O' 'C' '.' '-' (('0' 'b') / ('.' 'L' ([a-z] / [A-Z] / '_' / [0-9])+)) ('@' ('l' / 'L')))> */ 4155 func() bool { 4156 position511, tokenIndex511 := position, tokenIndex 4157 { 4158 position512 := position 4159 if buffer[position] != rune('.') { 4160 goto l511 4161 } 4162 position++ 4163 if buffer[position] != rune('T') { 4164 goto l511 4165 } 4166 position++ 4167 if buffer[position] != rune('O') { 4168 goto l511 4169 } 4170 position++ 4171 if buffer[position] != rune('C') { 4172 goto l511 4173 } 4174 position++ 4175 if buffer[position] != rune('.') { 4176 goto l511 4177 } 4178 position++ 4179 if buffer[position] != rune('-') { 4180 goto l511 4181 } 4182 position++ 4183 { 4184 position513, tokenIndex513 := position, tokenIndex 4185 if buffer[position] != rune('0') { 4186 goto l514 4187 } 4188 position++ 4189 if buffer[position] != rune('b') { 4190 goto l514 4191 } 4192 position++ 4193 goto l513 4194 l514: 4195 position, tokenIndex = position513, tokenIndex513 4196 if buffer[position] != rune('.') { 4197 goto l511 4198 } 4199 position++ 4200 if buffer[position] != rune('L') { 4201 goto l511 4202 } 4203 position++ 4204 { 4205 position517, tokenIndex517 := position, tokenIndex 4206 if c := buffer[position]; c < rune('a') || c > rune('z') { 4207 goto l518 4208 } 4209 position++ 4210 goto l517 4211 l518: 4212 position, tokenIndex = position517, tokenIndex517 4213 if c := buffer[position]; c < rune('A') || c > rune('Z') { 4214 goto l519 4215 } 4216 position++ 4217 goto l517 4218 l519: 4219 position, tokenIndex = position517, tokenIndex517 4220 if buffer[position] != rune('_') { 4221 goto l520 4222 } 4223 position++ 4224 goto l517 4225 l520: 4226 position, tokenIndex = position517, tokenIndex517 4227 if c := buffer[position]; c < rune('0') || c > rune('9') { 4228 goto l511 4229 } 4230 position++ 4231 } 4232 l517: 4233 l515: 4234 { 4235 position516, tokenIndex516 := position, tokenIndex 4236 { 4237 position521, tokenIndex521 := position, tokenIndex 4238 if c := buffer[position]; c < rune('a') || c > rune('z') { 4239 goto l522 4240 } 4241 position++ 4242 goto l521 4243 l522: 4244 position, tokenIndex = position521, tokenIndex521 4245 if c := buffer[position]; c < rune('A') || c > rune('Z') { 4246 goto l523 4247 } 4248 position++ 4249 goto l521 4250 l523: 4251 position, tokenIndex = position521, tokenIndex521 4252 if buffer[position] != rune('_') { 4253 goto l524 4254 } 4255 position++ 4256 goto l521 4257 l524: 4258 position, tokenIndex = position521, tokenIndex521 4259 if c := buffer[position]; c < rune('0') || c > rune('9') { 4260 goto l516 4261 } 4262 position++ 4263 } 4264 l521: 4265 goto l515 4266 l516: 4267 position, tokenIndex = position516, tokenIndex516 4268 } 4269 } 4270 l513: 4271 if buffer[position] != rune('@') { 4272 goto l511 4273 } 4274 position++ 4275 { 4276 position525, tokenIndex525 := position, tokenIndex 4277 if buffer[position] != rune('l') { 4278 goto l526 4279 } 4280 position++ 4281 goto l525 4282 l526: 4283 position, tokenIndex = position525, tokenIndex525 4284 if buffer[position] != rune('L') { 4285 goto l511 4286 } 4287 position++ 4288 } 4289 l525: 4290 add(ruleTOCRefLow, position512) 4291 } 4292 return true 4293 l511: 4294 position, tokenIndex = position511, tokenIndex511 4295 return false 4296 }, 4297 /* 38 IndirectionIndicator <- <'*'> */ 4298 func() bool { 4299 position527, tokenIndex527 := position, tokenIndex 4300 { 4301 position528 := position 4302 if buffer[position] != rune('*') { 4303 goto l527 4304 } 4305 position++ 4306 add(ruleIndirectionIndicator, position528) 4307 } 4308 return true 4309 l527: 4310 position, tokenIndex = position527, tokenIndex527 4311 return false 4312 }, 4313 /* 39 RegisterOrConstant <- <((('%' ([a-z] / [A-Z]) ([a-z] / [A-Z] / ([0-9] / [0-9]))*) / ('$'? ((Offset Offset) / Offset)) / ('#' Offset ('*' [0-9]+ ('-' [0-9] [0-9]*)?)?) / ('#' '~'? '(' [0-9] WS? ('<' '<') WS? [0-9] ')') / ARMRegister) !('f' / 'b' / ':' / '(' / '+' / '-'))> */ 4314 func() bool { 4315 position529, tokenIndex529 := position, tokenIndex 4316 { 4317 position530 := position 4318 { 4319 position531, tokenIndex531 := position, tokenIndex 4320 if buffer[position] != rune('%') { 4321 goto l532 4322 } 4323 position++ 4324 { 4325 position533, tokenIndex533 := position, tokenIndex 4326 if c := buffer[position]; c < rune('a') || c > rune('z') { 4327 goto l534 4328 } 4329 position++ 4330 goto l533 4331 l534: 4332 position, tokenIndex = position533, tokenIndex533 4333 if c := buffer[position]; c < rune('A') || c > rune('Z') { 4334 goto l532 4335 } 4336 position++ 4337 } 4338 l533: 4339 l535: 4340 { 4341 position536, tokenIndex536 := position, tokenIndex 4342 { 4343 position537, tokenIndex537 := position, tokenIndex 4344 if c := buffer[position]; c < rune('a') || c > rune('z') { 4345 goto l538 4346 } 4347 position++ 4348 goto l537 4349 l538: 4350 position, tokenIndex = position537, tokenIndex537 4351 if c := buffer[position]; c < rune('A') || c > rune('Z') { 4352 goto l539 4353 } 4354 position++ 4355 goto l537 4356 l539: 4357 position, tokenIndex = position537, tokenIndex537 4358 { 4359 position540, tokenIndex540 := position, tokenIndex 4360 if c := buffer[position]; c < rune('0') || c > rune('9') { 4361 goto l541 4362 } 4363 position++ 4364 goto l540 4365 l541: 4366 position, tokenIndex = position540, tokenIndex540 4367 if c := buffer[position]; c < rune('0') || c > rune('9') { 4368 goto l536 4369 } 4370 position++ 4371 } 4372 l540: 4373 } 4374 l537: 4375 goto l535 4376 l536: 4377 position, tokenIndex = position536, tokenIndex536 4378 } 4379 goto l531 4380 l532: 4381 position, tokenIndex = position531, tokenIndex531 4382 { 4383 position543, tokenIndex543 := position, tokenIndex 4384 if buffer[position] != rune('$') { 4385 goto l543 4386 } 4387 position++ 4388 goto l544 4389 l543: 4390 position, tokenIndex = position543, tokenIndex543 4391 } 4392 l544: 4393 { 4394 position545, tokenIndex545 := position, tokenIndex 4395 if !_rules[ruleOffset]() { 4396 goto l546 4397 } 4398 if !_rules[ruleOffset]() { 4399 goto l546 4400 } 4401 goto l545 4402 l546: 4403 position, tokenIndex = position545, tokenIndex545 4404 if !_rules[ruleOffset]() { 4405 goto l542 4406 } 4407 } 4408 l545: 4409 goto l531 4410 l542: 4411 position, tokenIndex = position531, tokenIndex531 4412 if buffer[position] != rune('#') { 4413 goto l547 4414 } 4415 position++ 4416 if !_rules[ruleOffset]() { 4417 goto l547 4418 } 4419 { 4420 position548, tokenIndex548 := position, tokenIndex 4421 if buffer[position] != rune('*') { 4422 goto l548 4423 } 4424 position++ 4425 if c := buffer[position]; c < rune('0') || c > rune('9') { 4426 goto l548 4427 } 4428 position++ 4429 l550: 4430 { 4431 position551, tokenIndex551 := position, tokenIndex 4432 if c := buffer[position]; c < rune('0') || c > rune('9') { 4433 goto l551 4434 } 4435 position++ 4436 goto l550 4437 l551: 4438 position, tokenIndex = position551, tokenIndex551 4439 } 4440 { 4441 position552, tokenIndex552 := position, tokenIndex 4442 if buffer[position] != rune('-') { 4443 goto l552 4444 } 4445 position++ 4446 if c := buffer[position]; c < rune('0') || c > rune('9') { 4447 goto l552 4448 } 4449 position++ 4450 l554: 4451 { 4452 position555, tokenIndex555 := position, tokenIndex 4453 if c := buffer[position]; c < rune('0') || c > rune('9') { 4454 goto l555 4455 } 4456 position++ 4457 goto l554 4458 l555: 4459 position, tokenIndex = position555, tokenIndex555 4460 } 4461 goto l553 4462 l552: 4463 position, tokenIndex = position552, tokenIndex552 4464 } 4465 l553: 4466 goto l549 4467 l548: 4468 position, tokenIndex = position548, tokenIndex548 4469 } 4470 l549: 4471 goto l531 4472 l547: 4473 position, tokenIndex = position531, tokenIndex531 4474 if buffer[position] != rune('#') { 4475 goto l556 4476 } 4477 position++ 4478 { 4479 position557, tokenIndex557 := position, tokenIndex 4480 if buffer[position] != rune('~') { 4481 goto l557 4482 } 4483 position++ 4484 goto l558 4485 l557: 4486 position, tokenIndex = position557, tokenIndex557 4487 } 4488 l558: 4489 if buffer[position] != rune('(') { 4490 goto l556 4491 } 4492 position++ 4493 if c := buffer[position]; c < rune('0') || c > rune('9') { 4494 goto l556 4495 } 4496 position++ 4497 { 4498 position559, tokenIndex559 := position, tokenIndex 4499 if !_rules[ruleWS]() { 4500 goto l559 4501 } 4502 goto l560 4503 l559: 4504 position, tokenIndex = position559, tokenIndex559 4505 } 4506 l560: 4507 if buffer[position] != rune('<') { 4508 goto l556 4509 } 4510 position++ 4511 if buffer[position] != rune('<') { 4512 goto l556 4513 } 4514 position++ 4515 { 4516 position561, tokenIndex561 := position, tokenIndex 4517 if !_rules[ruleWS]() { 4518 goto l561 4519 } 4520 goto l562 4521 l561: 4522 position, tokenIndex = position561, tokenIndex561 4523 } 4524 l562: 4525 if c := buffer[position]; c < rune('0') || c > rune('9') { 4526 goto l556 4527 } 4528 position++ 4529 if buffer[position] != rune(')') { 4530 goto l556 4531 } 4532 position++ 4533 goto l531 4534 l556: 4535 position, tokenIndex = position531, tokenIndex531 4536 if !_rules[ruleARMRegister]() { 4537 goto l529 4538 } 4539 } 4540 l531: 4541 { 4542 position563, tokenIndex563 := position, tokenIndex 4543 { 4544 position564, tokenIndex564 := position, tokenIndex 4545 if buffer[position] != rune('f') { 4546 goto l565 4547 } 4548 position++ 4549 goto l564 4550 l565: 4551 position, tokenIndex = position564, tokenIndex564 4552 if buffer[position] != rune('b') { 4553 goto l566 4554 } 4555 position++ 4556 goto l564 4557 l566: 4558 position, tokenIndex = position564, tokenIndex564 4559 if buffer[position] != rune(':') { 4560 goto l567 4561 } 4562 position++ 4563 goto l564 4564 l567: 4565 position, tokenIndex = position564, tokenIndex564 4566 if buffer[position] != rune('(') { 4567 goto l568 4568 } 4569 position++ 4570 goto l564 4571 l568: 4572 position, tokenIndex = position564, tokenIndex564 4573 if buffer[position] != rune('+') { 4574 goto l569 4575 } 4576 position++ 4577 goto l564 4578 l569: 4579 position, tokenIndex = position564, tokenIndex564 4580 if buffer[position] != rune('-') { 4581 goto l563 4582 } 4583 position++ 4584 } 4585 l564: 4586 goto l529 4587 l563: 4588 position, tokenIndex = position563, tokenIndex563 4589 } 4590 add(ruleRegisterOrConstant, position530) 4591 } 4592 return true 4593 l529: 4594 position, tokenIndex = position529, tokenIndex529 4595 return false 4596 }, 4597 /* 40 ARMConstantTweak <- <(((('l' / 'L') ('s' / 'S') ('l' / 'L')) / (('s' / 'S') ('x' / 'X') ('t' / 'T') ('w' / 'W')) / (('s' / 'S') ('x' / 'X') ('t' / 'T') ('b' / 'B')) / (('u' / 'U') ('x' / 'X') ('t' / 'T') ('w' / 'W')) / (('u' / 'U') ('x' / 'X') ('t' / 'T') ('b' / 'B')) / (('l' / 'L') ('s' / 'S') ('r' / 'R')) / (('r' / 'R') ('o' / 'O') ('r' / 'R')) / (('a' / 'A') ('s' / 'S') ('r' / 'R'))) (WS '#' Offset)?)> */ 4598 func() bool { 4599 position570, tokenIndex570 := position, tokenIndex 4600 { 4601 position571 := position 4602 { 4603 position572, tokenIndex572 := position, tokenIndex 4604 { 4605 position574, tokenIndex574 := position, tokenIndex 4606 if buffer[position] != rune('l') { 4607 goto l575 4608 } 4609 position++ 4610 goto l574 4611 l575: 4612 position, tokenIndex = position574, tokenIndex574 4613 if buffer[position] != rune('L') { 4614 goto l573 4615 } 4616 position++ 4617 } 4618 l574: 4619 { 4620 position576, tokenIndex576 := position, tokenIndex 4621 if buffer[position] != rune('s') { 4622 goto l577 4623 } 4624 position++ 4625 goto l576 4626 l577: 4627 position, tokenIndex = position576, tokenIndex576 4628 if buffer[position] != rune('S') { 4629 goto l573 4630 } 4631 position++ 4632 } 4633 l576: 4634 { 4635 position578, tokenIndex578 := position, tokenIndex 4636 if buffer[position] != rune('l') { 4637 goto l579 4638 } 4639 position++ 4640 goto l578 4641 l579: 4642 position, tokenIndex = position578, tokenIndex578 4643 if buffer[position] != rune('L') { 4644 goto l573 4645 } 4646 position++ 4647 } 4648 l578: 4649 goto l572 4650 l573: 4651 position, tokenIndex = position572, tokenIndex572 4652 { 4653 position581, tokenIndex581 := position, tokenIndex 4654 if buffer[position] != rune('s') { 4655 goto l582 4656 } 4657 position++ 4658 goto l581 4659 l582: 4660 position, tokenIndex = position581, tokenIndex581 4661 if buffer[position] != rune('S') { 4662 goto l580 4663 } 4664 position++ 4665 } 4666 l581: 4667 { 4668 position583, tokenIndex583 := position, tokenIndex 4669 if buffer[position] != rune('x') { 4670 goto l584 4671 } 4672 position++ 4673 goto l583 4674 l584: 4675 position, tokenIndex = position583, tokenIndex583 4676 if buffer[position] != rune('X') { 4677 goto l580 4678 } 4679 position++ 4680 } 4681 l583: 4682 { 4683 position585, tokenIndex585 := position, tokenIndex 4684 if buffer[position] != rune('t') { 4685 goto l586 4686 } 4687 position++ 4688 goto l585 4689 l586: 4690 position, tokenIndex = position585, tokenIndex585 4691 if buffer[position] != rune('T') { 4692 goto l580 4693 } 4694 position++ 4695 } 4696 l585: 4697 { 4698 position587, tokenIndex587 := position, tokenIndex 4699 if buffer[position] != rune('w') { 4700 goto l588 4701 } 4702 position++ 4703 goto l587 4704 l588: 4705 position, tokenIndex = position587, tokenIndex587 4706 if buffer[position] != rune('W') { 4707 goto l580 4708 } 4709 position++ 4710 } 4711 l587: 4712 goto l572 4713 l580: 4714 position, tokenIndex = position572, tokenIndex572 4715 { 4716 position590, tokenIndex590 := position, tokenIndex 4717 if buffer[position] != rune('s') { 4718 goto l591 4719 } 4720 position++ 4721 goto l590 4722 l591: 4723 position, tokenIndex = position590, tokenIndex590 4724 if buffer[position] != rune('S') { 4725 goto l589 4726 } 4727 position++ 4728 } 4729 l590: 4730 { 4731 position592, tokenIndex592 := position, tokenIndex 4732 if buffer[position] != rune('x') { 4733 goto l593 4734 } 4735 position++ 4736 goto l592 4737 l593: 4738 position, tokenIndex = position592, tokenIndex592 4739 if buffer[position] != rune('X') { 4740 goto l589 4741 } 4742 position++ 4743 } 4744 l592: 4745 { 4746 position594, tokenIndex594 := position, tokenIndex 4747 if buffer[position] != rune('t') { 4748 goto l595 4749 } 4750 position++ 4751 goto l594 4752 l595: 4753 position, tokenIndex = position594, tokenIndex594 4754 if buffer[position] != rune('T') { 4755 goto l589 4756 } 4757 position++ 4758 } 4759 l594: 4760 { 4761 position596, tokenIndex596 := position, tokenIndex 4762 if buffer[position] != rune('b') { 4763 goto l597 4764 } 4765 position++ 4766 goto l596 4767 l597: 4768 position, tokenIndex = position596, tokenIndex596 4769 if buffer[position] != rune('B') { 4770 goto l589 4771 } 4772 position++ 4773 } 4774 l596: 4775 goto l572 4776 l589: 4777 position, tokenIndex = position572, tokenIndex572 4778 { 4779 position599, tokenIndex599 := position, tokenIndex 4780 if buffer[position] != rune('u') { 4781 goto l600 4782 } 4783 position++ 4784 goto l599 4785 l600: 4786 position, tokenIndex = position599, tokenIndex599 4787 if buffer[position] != rune('U') { 4788 goto l598 4789 } 4790 position++ 4791 } 4792 l599: 4793 { 4794 position601, tokenIndex601 := position, tokenIndex 4795 if buffer[position] != rune('x') { 4796 goto l602 4797 } 4798 position++ 4799 goto l601 4800 l602: 4801 position, tokenIndex = position601, tokenIndex601 4802 if buffer[position] != rune('X') { 4803 goto l598 4804 } 4805 position++ 4806 } 4807 l601: 4808 { 4809 position603, tokenIndex603 := position, tokenIndex 4810 if buffer[position] != rune('t') { 4811 goto l604 4812 } 4813 position++ 4814 goto l603 4815 l604: 4816 position, tokenIndex = position603, tokenIndex603 4817 if buffer[position] != rune('T') { 4818 goto l598 4819 } 4820 position++ 4821 } 4822 l603: 4823 { 4824 position605, tokenIndex605 := position, tokenIndex 4825 if buffer[position] != rune('w') { 4826 goto l606 4827 } 4828 position++ 4829 goto l605 4830 l606: 4831 position, tokenIndex = position605, tokenIndex605 4832 if buffer[position] != rune('W') { 4833 goto l598 4834 } 4835 position++ 4836 } 4837 l605: 4838 goto l572 4839 l598: 4840 position, tokenIndex = position572, tokenIndex572 4841 { 4842 position608, tokenIndex608 := position, tokenIndex 4843 if buffer[position] != rune('u') { 4844 goto l609 4845 } 4846 position++ 4847 goto l608 4848 l609: 4849 position, tokenIndex = position608, tokenIndex608 4850 if buffer[position] != rune('U') { 4851 goto l607 4852 } 4853 position++ 4854 } 4855 l608: 4856 { 4857 position610, tokenIndex610 := position, tokenIndex 4858 if buffer[position] != rune('x') { 4859 goto l611 4860 } 4861 position++ 4862 goto l610 4863 l611: 4864 position, tokenIndex = position610, tokenIndex610 4865 if buffer[position] != rune('X') { 4866 goto l607 4867 } 4868 position++ 4869 } 4870 l610: 4871 { 4872 position612, tokenIndex612 := position, tokenIndex 4873 if buffer[position] != rune('t') { 4874 goto l613 4875 } 4876 position++ 4877 goto l612 4878 l613: 4879 position, tokenIndex = position612, tokenIndex612 4880 if buffer[position] != rune('T') { 4881 goto l607 4882 } 4883 position++ 4884 } 4885 l612: 4886 { 4887 position614, tokenIndex614 := position, tokenIndex 4888 if buffer[position] != rune('b') { 4889 goto l615 4890 } 4891 position++ 4892 goto l614 4893 l615: 4894 position, tokenIndex = position614, tokenIndex614 4895 if buffer[position] != rune('B') { 4896 goto l607 4897 } 4898 position++ 4899 } 4900 l614: 4901 goto l572 4902 l607: 4903 position, tokenIndex = position572, tokenIndex572 4904 { 4905 position617, tokenIndex617 := position, tokenIndex 4906 if buffer[position] != rune('l') { 4907 goto l618 4908 } 4909 position++ 4910 goto l617 4911 l618: 4912 position, tokenIndex = position617, tokenIndex617 4913 if buffer[position] != rune('L') { 4914 goto l616 4915 } 4916 position++ 4917 } 4918 l617: 4919 { 4920 position619, tokenIndex619 := position, tokenIndex 4921 if buffer[position] != rune('s') { 4922 goto l620 4923 } 4924 position++ 4925 goto l619 4926 l620: 4927 position, tokenIndex = position619, tokenIndex619 4928 if buffer[position] != rune('S') { 4929 goto l616 4930 } 4931 position++ 4932 } 4933 l619: 4934 { 4935 position621, tokenIndex621 := position, tokenIndex 4936 if buffer[position] != rune('r') { 4937 goto l622 4938 } 4939 position++ 4940 goto l621 4941 l622: 4942 position, tokenIndex = position621, tokenIndex621 4943 if buffer[position] != rune('R') { 4944 goto l616 4945 } 4946 position++ 4947 } 4948 l621: 4949 goto l572 4950 l616: 4951 position, tokenIndex = position572, tokenIndex572 4952 { 4953 position624, tokenIndex624 := position, tokenIndex 4954 if buffer[position] != rune('r') { 4955 goto l625 4956 } 4957 position++ 4958 goto l624 4959 l625: 4960 position, tokenIndex = position624, tokenIndex624 4961 if buffer[position] != rune('R') { 4962 goto l623 4963 } 4964 position++ 4965 } 4966 l624: 4967 { 4968 position626, tokenIndex626 := position, tokenIndex 4969 if buffer[position] != rune('o') { 4970 goto l627 4971 } 4972 position++ 4973 goto l626 4974 l627: 4975 position, tokenIndex = position626, tokenIndex626 4976 if buffer[position] != rune('O') { 4977 goto l623 4978 } 4979 position++ 4980 } 4981 l626: 4982 { 4983 position628, tokenIndex628 := position, tokenIndex 4984 if buffer[position] != rune('r') { 4985 goto l629 4986 } 4987 position++ 4988 goto l628 4989 l629: 4990 position, tokenIndex = position628, tokenIndex628 4991 if buffer[position] != rune('R') { 4992 goto l623 4993 } 4994 position++ 4995 } 4996 l628: 4997 goto l572 4998 l623: 4999 position, tokenIndex = position572, tokenIndex572 5000 { 5001 position630, tokenIndex630 := position, tokenIndex 5002 if buffer[position] != rune('a') { 5003 goto l631 5004 } 5005 position++ 5006 goto l630 5007 l631: 5008 position, tokenIndex = position630, tokenIndex630 5009 if buffer[position] != rune('A') { 5010 goto l570 5011 } 5012 position++ 5013 } 5014 l630: 5015 { 5016 position632, tokenIndex632 := position, tokenIndex 5017 if buffer[position] != rune('s') { 5018 goto l633 5019 } 5020 position++ 5021 goto l632 5022 l633: 5023 position, tokenIndex = position632, tokenIndex632 5024 if buffer[position] != rune('S') { 5025 goto l570 5026 } 5027 position++ 5028 } 5029 l632: 5030 { 5031 position634, tokenIndex634 := position, tokenIndex 5032 if buffer[position] != rune('r') { 5033 goto l635 5034 } 5035 position++ 5036 goto l634 5037 l635: 5038 position, tokenIndex = position634, tokenIndex634 5039 if buffer[position] != rune('R') { 5040 goto l570 5041 } 5042 position++ 5043 } 5044 l634: 5045 } 5046 l572: 5047 { 5048 position636, tokenIndex636 := position, tokenIndex 5049 if !_rules[ruleWS]() { 5050 goto l636 5051 } 5052 if buffer[position] != rune('#') { 5053 goto l636 5054 } 5055 position++ 5056 if !_rules[ruleOffset]() { 5057 goto l636 5058 } 5059 goto l637 5060 l636: 5061 position, tokenIndex = position636, tokenIndex636 5062 } 5063 l637: 5064 add(ruleARMConstantTweak, position571) 5065 } 5066 return true 5067 l570: 5068 position, tokenIndex = position570, tokenIndex570 5069 return false 5070 }, 5071 /* 41 ARMRegister <- <((('s' / 'S') ('p' / 'P')) / (('x' / 'w' / 'd' / 'q' / 's') [0-9] [0-9]?) / (('x' / 'X') ('z' / 'Z') ('r' / 'R')) / (('w' / 'W') ('z' / 'Z') ('r' / 'R')) / ARMVectorRegister / ('{' WS? ARMVectorRegister (',' WS? ARMVectorRegister)* WS? '}' ('[' [0-9] [0-9]? ']')?))> */ 5072 func() bool { 5073 position638, tokenIndex638 := position, tokenIndex 5074 { 5075 position639 := position 5076 { 5077 position640, tokenIndex640 := position, tokenIndex 5078 { 5079 position642, tokenIndex642 := position, tokenIndex 5080 if buffer[position] != rune('s') { 5081 goto l643 5082 } 5083 position++ 5084 goto l642 5085 l643: 5086 position, tokenIndex = position642, tokenIndex642 5087 if buffer[position] != rune('S') { 5088 goto l641 5089 } 5090 position++ 5091 } 5092 l642: 5093 { 5094 position644, tokenIndex644 := position, tokenIndex 5095 if buffer[position] != rune('p') { 5096 goto l645 5097 } 5098 position++ 5099 goto l644 5100 l645: 5101 position, tokenIndex = position644, tokenIndex644 5102 if buffer[position] != rune('P') { 5103 goto l641 5104 } 5105 position++ 5106 } 5107 l644: 5108 goto l640 5109 l641: 5110 position, tokenIndex = position640, tokenIndex640 5111 { 5112 position647, tokenIndex647 := position, tokenIndex 5113 if buffer[position] != rune('x') { 5114 goto l648 5115 } 5116 position++ 5117 goto l647 5118 l648: 5119 position, tokenIndex = position647, tokenIndex647 5120 if buffer[position] != rune('w') { 5121 goto l649 5122 } 5123 position++ 5124 goto l647 5125 l649: 5126 position, tokenIndex = position647, tokenIndex647 5127 if buffer[position] != rune('d') { 5128 goto l650 5129 } 5130 position++ 5131 goto l647 5132 l650: 5133 position, tokenIndex = position647, tokenIndex647 5134 if buffer[position] != rune('q') { 5135 goto l651 5136 } 5137 position++ 5138 goto l647 5139 l651: 5140 position, tokenIndex = position647, tokenIndex647 5141 if buffer[position] != rune('s') { 5142 goto l646 5143 } 5144 position++ 5145 } 5146 l647: 5147 if c := buffer[position]; c < rune('0') || c > rune('9') { 5148 goto l646 5149 } 5150 position++ 5151 { 5152 position652, tokenIndex652 := position, tokenIndex 5153 if c := buffer[position]; c < rune('0') || c > rune('9') { 5154 goto l652 5155 } 5156 position++ 5157 goto l653 5158 l652: 5159 position, tokenIndex = position652, tokenIndex652 5160 } 5161 l653: 5162 goto l640 5163 l646: 5164 position, tokenIndex = position640, tokenIndex640 5165 { 5166 position655, tokenIndex655 := position, tokenIndex 5167 if buffer[position] != rune('x') { 5168 goto l656 5169 } 5170 position++ 5171 goto l655 5172 l656: 5173 position, tokenIndex = position655, tokenIndex655 5174 if buffer[position] != rune('X') { 5175 goto l654 5176 } 5177 position++ 5178 } 5179 l655: 5180 { 5181 position657, tokenIndex657 := position, tokenIndex 5182 if buffer[position] != rune('z') { 5183 goto l658 5184 } 5185 position++ 5186 goto l657 5187 l658: 5188 position, tokenIndex = position657, tokenIndex657 5189 if buffer[position] != rune('Z') { 5190 goto l654 5191 } 5192 position++ 5193 } 5194 l657: 5195 { 5196 position659, tokenIndex659 := position, tokenIndex 5197 if buffer[position] != rune('r') { 5198 goto l660 5199 } 5200 position++ 5201 goto l659 5202 l660: 5203 position, tokenIndex = position659, tokenIndex659 5204 if buffer[position] != rune('R') { 5205 goto l654 5206 } 5207 position++ 5208 } 5209 l659: 5210 goto l640 5211 l654: 5212 position, tokenIndex = position640, tokenIndex640 5213 { 5214 position662, tokenIndex662 := position, tokenIndex 5215 if buffer[position] != rune('w') { 5216 goto l663 5217 } 5218 position++ 5219 goto l662 5220 l663: 5221 position, tokenIndex = position662, tokenIndex662 5222 if buffer[position] != rune('W') { 5223 goto l661 5224 } 5225 position++ 5226 } 5227 l662: 5228 { 5229 position664, tokenIndex664 := position, tokenIndex 5230 if buffer[position] != rune('z') { 5231 goto l665 5232 } 5233 position++ 5234 goto l664 5235 l665: 5236 position, tokenIndex = position664, tokenIndex664 5237 if buffer[position] != rune('Z') { 5238 goto l661 5239 } 5240 position++ 5241 } 5242 l664: 5243 { 5244 position666, tokenIndex666 := position, tokenIndex 5245 if buffer[position] != rune('r') { 5246 goto l667 5247 } 5248 position++ 5249 goto l666 5250 l667: 5251 position, tokenIndex = position666, tokenIndex666 5252 if buffer[position] != rune('R') { 5253 goto l661 5254 } 5255 position++ 5256 } 5257 l666: 5258 goto l640 5259 l661: 5260 position, tokenIndex = position640, tokenIndex640 5261 if !_rules[ruleARMVectorRegister]() { 5262 goto l668 5263 } 5264 goto l640 5265 l668: 5266 position, tokenIndex = position640, tokenIndex640 5267 if buffer[position] != rune('{') { 5268 goto l638 5269 } 5270 position++ 5271 { 5272 position669, tokenIndex669 := position, tokenIndex 5273 if !_rules[ruleWS]() { 5274 goto l669 5275 } 5276 goto l670 5277 l669: 5278 position, tokenIndex = position669, tokenIndex669 5279 } 5280 l670: 5281 if !_rules[ruleARMVectorRegister]() { 5282 goto l638 5283 } 5284 l671: 5285 { 5286 position672, tokenIndex672 := position, tokenIndex 5287 if buffer[position] != rune(',') { 5288 goto l672 5289 } 5290 position++ 5291 { 5292 position673, tokenIndex673 := position, tokenIndex 5293 if !_rules[ruleWS]() { 5294 goto l673 5295 } 5296 goto l674 5297 l673: 5298 position, tokenIndex = position673, tokenIndex673 5299 } 5300 l674: 5301 if !_rules[ruleARMVectorRegister]() { 5302 goto l672 5303 } 5304 goto l671 5305 l672: 5306 position, tokenIndex = position672, tokenIndex672 5307 } 5308 { 5309 position675, tokenIndex675 := position, tokenIndex 5310 if !_rules[ruleWS]() { 5311 goto l675 5312 } 5313 goto l676 5314 l675: 5315 position, tokenIndex = position675, tokenIndex675 5316 } 5317 l676: 5318 if buffer[position] != rune('}') { 5319 goto l638 5320 } 5321 position++ 5322 { 5323 position677, tokenIndex677 := position, tokenIndex 5324 if buffer[position] != rune('[') { 5325 goto l677 5326 } 5327 position++ 5328 if c := buffer[position]; c < rune('0') || c > rune('9') { 5329 goto l677 5330 } 5331 position++ 5332 { 5333 position679, tokenIndex679 := position, tokenIndex 5334 if c := buffer[position]; c < rune('0') || c > rune('9') { 5335 goto l679 5336 } 5337 position++ 5338 goto l680 5339 l679: 5340 position, tokenIndex = position679, tokenIndex679 5341 } 5342 l680: 5343 if buffer[position] != rune(']') { 5344 goto l677 5345 } 5346 position++ 5347 goto l678 5348 l677: 5349 position, tokenIndex = position677, tokenIndex677 5350 } 5351 l678: 5352 } 5353 l640: 5354 add(ruleARMRegister, position639) 5355 } 5356 return true 5357 l638: 5358 position, tokenIndex = position638, tokenIndex638 5359 return false 5360 }, 5361 /* 42 ARMVectorRegister <- <(('v' / 'V') [0-9] [0-9]? ('.' [0-9]* ('b' / 's' / 'd' / 'h' / 'q') ('[' [0-9] [0-9]? ']')?)?)> */ 5362 func() bool { 5363 position681, tokenIndex681 := position, tokenIndex 5364 { 5365 position682 := position 5366 { 5367 position683, tokenIndex683 := position, tokenIndex 5368 if buffer[position] != rune('v') { 5369 goto l684 5370 } 5371 position++ 5372 goto l683 5373 l684: 5374 position, tokenIndex = position683, tokenIndex683 5375 if buffer[position] != rune('V') { 5376 goto l681 5377 } 5378 position++ 5379 } 5380 l683: 5381 if c := buffer[position]; c < rune('0') || c > rune('9') { 5382 goto l681 5383 } 5384 position++ 5385 { 5386 position685, tokenIndex685 := position, tokenIndex 5387 if c := buffer[position]; c < rune('0') || c > rune('9') { 5388 goto l685 5389 } 5390 position++ 5391 goto l686 5392 l685: 5393 position, tokenIndex = position685, tokenIndex685 5394 } 5395 l686: 5396 { 5397 position687, tokenIndex687 := position, tokenIndex 5398 if buffer[position] != rune('.') { 5399 goto l687 5400 } 5401 position++ 5402 l689: 5403 { 5404 position690, tokenIndex690 := position, tokenIndex 5405 if c := buffer[position]; c < rune('0') || c > rune('9') { 5406 goto l690 5407 } 5408 position++ 5409 goto l689 5410 l690: 5411 position, tokenIndex = position690, tokenIndex690 5412 } 5413 { 5414 position691, tokenIndex691 := position, tokenIndex 5415 if buffer[position] != rune('b') { 5416 goto l692 5417 } 5418 position++ 5419 goto l691 5420 l692: 5421 position, tokenIndex = position691, tokenIndex691 5422 if buffer[position] != rune('s') { 5423 goto l693 5424 } 5425 position++ 5426 goto l691 5427 l693: 5428 position, tokenIndex = position691, tokenIndex691 5429 if buffer[position] != rune('d') { 5430 goto l694 5431 } 5432 position++ 5433 goto l691 5434 l694: 5435 position, tokenIndex = position691, tokenIndex691 5436 if buffer[position] != rune('h') { 5437 goto l695 5438 } 5439 position++ 5440 goto l691 5441 l695: 5442 position, tokenIndex = position691, tokenIndex691 5443 if buffer[position] != rune('q') { 5444 goto l687 5445 } 5446 position++ 5447 } 5448 l691: 5449 { 5450 position696, tokenIndex696 := position, tokenIndex 5451 if buffer[position] != rune('[') { 5452 goto l696 5453 } 5454 position++ 5455 if c := buffer[position]; c < rune('0') || c > rune('9') { 5456 goto l696 5457 } 5458 position++ 5459 { 5460 position698, tokenIndex698 := position, tokenIndex 5461 if c := buffer[position]; c < rune('0') || c > rune('9') { 5462 goto l698 5463 } 5464 position++ 5465 goto l699 5466 l698: 5467 position, tokenIndex = position698, tokenIndex698 5468 } 5469 l699: 5470 if buffer[position] != rune(']') { 5471 goto l696 5472 } 5473 position++ 5474 goto l697 5475 l696: 5476 position, tokenIndex = position696, tokenIndex696 5477 } 5478 l697: 5479 goto l688 5480 l687: 5481 position, tokenIndex = position687, tokenIndex687 5482 } 5483 l688: 5484 add(ruleARMVectorRegister, position682) 5485 } 5486 return true 5487 l681: 5488 position, tokenIndex = position681, tokenIndex681 5489 return false 5490 }, 5491 /* 43 MemoryRef <- <((SymbolRef BaseIndexScale) / SymbolRef / Low12BitsSymbolRef / (Offset* BaseIndexScale) / (SegmentRegister Offset BaseIndexScale) / (SegmentRegister BaseIndexScale) / (SegmentRegister Offset) / ARMBaseIndexScale / BaseIndexScale)> */ 5492 func() bool { 5493 position700, tokenIndex700 := position, tokenIndex 5494 { 5495 position701 := position 5496 { 5497 position702, tokenIndex702 := position, tokenIndex 5498 if !_rules[ruleSymbolRef]() { 5499 goto l703 5500 } 5501 if !_rules[ruleBaseIndexScale]() { 5502 goto l703 5503 } 5504 goto l702 5505 l703: 5506 position, tokenIndex = position702, tokenIndex702 5507 if !_rules[ruleSymbolRef]() { 5508 goto l704 5509 } 5510 goto l702 5511 l704: 5512 position, tokenIndex = position702, tokenIndex702 5513 if !_rules[ruleLow12BitsSymbolRef]() { 5514 goto l705 5515 } 5516 goto l702 5517 l705: 5518 position, tokenIndex = position702, tokenIndex702 5519 l707: 5520 { 5521 position708, tokenIndex708 := position, tokenIndex 5522 if !_rules[ruleOffset]() { 5523 goto l708 5524 } 5525 goto l707 5526 l708: 5527 position, tokenIndex = position708, tokenIndex708 5528 } 5529 if !_rules[ruleBaseIndexScale]() { 5530 goto l706 5531 } 5532 goto l702 5533 l706: 5534 position, tokenIndex = position702, tokenIndex702 5535 if !_rules[ruleSegmentRegister]() { 5536 goto l709 5537 } 5538 if !_rules[ruleOffset]() { 5539 goto l709 5540 } 5541 if !_rules[ruleBaseIndexScale]() { 5542 goto l709 5543 } 5544 goto l702 5545 l709: 5546 position, tokenIndex = position702, tokenIndex702 5547 if !_rules[ruleSegmentRegister]() { 5548 goto l710 5549 } 5550 if !_rules[ruleBaseIndexScale]() { 5551 goto l710 5552 } 5553 goto l702 5554 l710: 5555 position, tokenIndex = position702, tokenIndex702 5556 if !_rules[ruleSegmentRegister]() { 5557 goto l711 5558 } 5559 if !_rules[ruleOffset]() { 5560 goto l711 5561 } 5562 goto l702 5563 l711: 5564 position, tokenIndex = position702, tokenIndex702 5565 if !_rules[ruleARMBaseIndexScale]() { 5566 goto l712 5567 } 5568 goto l702 5569 l712: 5570 position, tokenIndex = position702, tokenIndex702 5571 if !_rules[ruleBaseIndexScale]() { 5572 goto l700 5573 } 5574 } 5575 l702: 5576 add(ruleMemoryRef, position701) 5577 } 5578 return true 5579 l700: 5580 position, tokenIndex = position700, tokenIndex700 5581 return false 5582 }, 5583 /* 44 SymbolRef <- <((Offset* '+')? (LocalSymbol / SymbolName) Offset* ('@' Section Offset*)?)> */ 5584 func() bool { 5585 position713, tokenIndex713 := position, tokenIndex 5586 { 5587 position714 := position 5588 { 5589 position715, tokenIndex715 := position, tokenIndex 5590 l717: 5591 { 5592 position718, tokenIndex718 := position, tokenIndex 5593 if !_rules[ruleOffset]() { 5594 goto l718 5595 } 5596 goto l717 5597 l718: 5598 position, tokenIndex = position718, tokenIndex718 5599 } 5600 if buffer[position] != rune('+') { 5601 goto l715 5602 } 5603 position++ 5604 goto l716 5605 l715: 5606 position, tokenIndex = position715, tokenIndex715 5607 } 5608 l716: 5609 { 5610 position719, tokenIndex719 := position, tokenIndex 5611 if !_rules[ruleLocalSymbol]() { 5612 goto l720 5613 } 5614 goto l719 5615 l720: 5616 position, tokenIndex = position719, tokenIndex719 5617 if !_rules[ruleSymbolName]() { 5618 goto l713 5619 } 5620 } 5621 l719: 5622 l721: 5623 { 5624 position722, tokenIndex722 := position, tokenIndex 5625 if !_rules[ruleOffset]() { 5626 goto l722 5627 } 5628 goto l721 5629 l722: 5630 position, tokenIndex = position722, tokenIndex722 5631 } 5632 { 5633 position723, tokenIndex723 := position, tokenIndex 5634 if buffer[position] != rune('@') { 5635 goto l723 5636 } 5637 position++ 5638 if !_rules[ruleSection]() { 5639 goto l723 5640 } 5641 l725: 5642 { 5643 position726, tokenIndex726 := position, tokenIndex 5644 if !_rules[ruleOffset]() { 5645 goto l726 5646 } 5647 goto l725 5648 l726: 5649 position, tokenIndex = position726, tokenIndex726 5650 } 5651 goto l724 5652 l723: 5653 position, tokenIndex = position723, tokenIndex723 5654 } 5655 l724: 5656 add(ruleSymbolRef, position714) 5657 } 5658 return true 5659 l713: 5660 position, tokenIndex = position713, tokenIndex713 5661 return false 5662 }, 5663 /* 45 Low12BitsSymbolRef <- <(':' ('l' / 'L') ('o' / 'O') '1' '2' ':' (LocalSymbol / SymbolName) Offset?)> */ 5664 func() bool { 5665 position727, tokenIndex727 := position, tokenIndex 5666 { 5667 position728 := position 5668 if buffer[position] != rune(':') { 5669 goto l727 5670 } 5671 position++ 5672 { 5673 position729, tokenIndex729 := position, tokenIndex 5674 if buffer[position] != rune('l') { 5675 goto l730 5676 } 5677 position++ 5678 goto l729 5679 l730: 5680 position, tokenIndex = position729, tokenIndex729 5681 if buffer[position] != rune('L') { 5682 goto l727 5683 } 5684 position++ 5685 } 5686 l729: 5687 { 5688 position731, tokenIndex731 := position, tokenIndex 5689 if buffer[position] != rune('o') { 5690 goto l732 5691 } 5692 position++ 5693 goto l731 5694 l732: 5695 position, tokenIndex = position731, tokenIndex731 5696 if buffer[position] != rune('O') { 5697 goto l727 5698 } 5699 position++ 5700 } 5701 l731: 5702 if buffer[position] != rune('1') { 5703 goto l727 5704 } 5705 position++ 5706 if buffer[position] != rune('2') { 5707 goto l727 5708 } 5709 position++ 5710 if buffer[position] != rune(':') { 5711 goto l727 5712 } 5713 position++ 5714 { 5715 position733, tokenIndex733 := position, tokenIndex 5716 if !_rules[ruleLocalSymbol]() { 5717 goto l734 5718 } 5719 goto l733 5720 l734: 5721 position, tokenIndex = position733, tokenIndex733 5722 if !_rules[ruleSymbolName]() { 5723 goto l727 5724 } 5725 } 5726 l733: 5727 { 5728 position735, tokenIndex735 := position, tokenIndex 5729 if !_rules[ruleOffset]() { 5730 goto l735 5731 } 5732 goto l736 5733 l735: 5734 position, tokenIndex = position735, tokenIndex735 5735 } 5736 l736: 5737 add(ruleLow12BitsSymbolRef, position728) 5738 } 5739 return true 5740 l727: 5741 position, tokenIndex = position727, tokenIndex727 5742 return false 5743 }, 5744 /* 46 ARMBaseIndexScale <- <('[' ARMRegister (',' WS? (('#' Offset (('*' [0-9]+) / ('*' '(' [0-9]+ Operator [0-9]+ ')') / ('+' [0-9]+)*)?) / ARMGOTLow12 / Low12BitsSymbolRef / ARMRegister) (',' WS? ARMConstantTweak)?)? ']' ARMPostincrement?)> */ 5745 func() bool { 5746 position737, tokenIndex737 := position, tokenIndex 5747 { 5748 position738 := position 5749 if buffer[position] != rune('[') { 5750 goto l737 5751 } 5752 position++ 5753 if !_rules[ruleARMRegister]() { 5754 goto l737 5755 } 5756 { 5757 position739, tokenIndex739 := position, tokenIndex 5758 if buffer[position] != rune(',') { 5759 goto l739 5760 } 5761 position++ 5762 { 5763 position741, tokenIndex741 := position, tokenIndex 5764 if !_rules[ruleWS]() { 5765 goto l741 5766 } 5767 goto l742 5768 l741: 5769 position, tokenIndex = position741, tokenIndex741 5770 } 5771 l742: 5772 { 5773 position743, tokenIndex743 := position, tokenIndex 5774 if buffer[position] != rune('#') { 5775 goto l744 5776 } 5777 position++ 5778 if !_rules[ruleOffset]() { 5779 goto l744 5780 } 5781 { 5782 position745, tokenIndex745 := position, tokenIndex 5783 { 5784 position747, tokenIndex747 := position, tokenIndex 5785 if buffer[position] != rune('*') { 5786 goto l748 5787 } 5788 position++ 5789 if c := buffer[position]; c < rune('0') || c > rune('9') { 5790 goto l748 5791 } 5792 position++ 5793 l749: 5794 { 5795 position750, tokenIndex750 := position, tokenIndex 5796 if c := buffer[position]; c < rune('0') || c > rune('9') { 5797 goto l750 5798 } 5799 position++ 5800 goto l749 5801 l750: 5802 position, tokenIndex = position750, tokenIndex750 5803 } 5804 goto l747 5805 l748: 5806 position, tokenIndex = position747, tokenIndex747 5807 if buffer[position] != rune('*') { 5808 goto l751 5809 } 5810 position++ 5811 if buffer[position] != rune('(') { 5812 goto l751 5813 } 5814 position++ 5815 if c := buffer[position]; c < rune('0') || c > rune('9') { 5816 goto l751 5817 } 5818 position++ 5819 l752: 5820 { 5821 position753, tokenIndex753 := position, tokenIndex 5822 if c := buffer[position]; c < rune('0') || c > rune('9') { 5823 goto l753 5824 } 5825 position++ 5826 goto l752 5827 l753: 5828 position, tokenIndex = position753, tokenIndex753 5829 } 5830 if !_rules[ruleOperator]() { 5831 goto l751 5832 } 5833 if c := buffer[position]; c < rune('0') || c > rune('9') { 5834 goto l751 5835 } 5836 position++ 5837 l754: 5838 { 5839 position755, tokenIndex755 := position, tokenIndex 5840 if c := buffer[position]; c < rune('0') || c > rune('9') { 5841 goto l755 5842 } 5843 position++ 5844 goto l754 5845 l755: 5846 position, tokenIndex = position755, tokenIndex755 5847 } 5848 if buffer[position] != rune(')') { 5849 goto l751 5850 } 5851 position++ 5852 goto l747 5853 l751: 5854 position, tokenIndex = position747, tokenIndex747 5855 l756: 5856 { 5857 position757, tokenIndex757 := position, tokenIndex 5858 if buffer[position] != rune('+') { 5859 goto l757 5860 } 5861 position++ 5862 if c := buffer[position]; c < rune('0') || c > rune('9') { 5863 goto l757 5864 } 5865 position++ 5866 l758: 5867 { 5868 position759, tokenIndex759 := position, tokenIndex 5869 if c := buffer[position]; c < rune('0') || c > rune('9') { 5870 goto l759 5871 } 5872 position++ 5873 goto l758 5874 l759: 5875 position, tokenIndex = position759, tokenIndex759 5876 } 5877 goto l756 5878 l757: 5879 position, tokenIndex = position757, tokenIndex757 5880 } 5881 } 5882 l747: 5883 goto l746 5884 5885 position, tokenIndex = position745, tokenIndex745 5886 } 5887 l746: 5888 goto l743 5889 l744: 5890 position, tokenIndex = position743, tokenIndex743 5891 if !_rules[ruleARMGOTLow12]() { 5892 goto l760 5893 } 5894 goto l743 5895 l760: 5896 position, tokenIndex = position743, tokenIndex743 5897 if !_rules[ruleLow12BitsSymbolRef]() { 5898 goto l761 5899 } 5900 goto l743 5901 l761: 5902 position, tokenIndex = position743, tokenIndex743 5903 if !_rules[ruleARMRegister]() { 5904 goto l739 5905 } 5906 } 5907 l743: 5908 { 5909 position762, tokenIndex762 := position, tokenIndex 5910 if buffer[position] != rune(',') { 5911 goto l762 5912 } 5913 position++ 5914 { 5915 position764, tokenIndex764 := position, tokenIndex 5916 if !_rules[ruleWS]() { 5917 goto l764 5918 } 5919 goto l765 5920 l764: 5921 position, tokenIndex = position764, tokenIndex764 5922 } 5923 l765: 5924 if !_rules[ruleARMConstantTweak]() { 5925 goto l762 5926 } 5927 goto l763 5928 l762: 5929 position, tokenIndex = position762, tokenIndex762 5930 } 5931 l763: 5932 goto l740 5933 l739: 5934 position, tokenIndex = position739, tokenIndex739 5935 } 5936 l740: 5937 if buffer[position] != rune(']') { 5938 goto l737 5939 } 5940 position++ 5941 { 5942 position766, tokenIndex766 := position, tokenIndex 5943 if !_rules[ruleARMPostincrement]() { 5944 goto l766 5945 } 5946 goto l767 5947 l766: 5948 position, tokenIndex = position766, tokenIndex766 5949 } 5950 l767: 5951 add(ruleARMBaseIndexScale, position738) 5952 } 5953 return true 5954 l737: 5955 position, tokenIndex = position737, tokenIndex737 5956 return false 5957 }, 5958 /* 47 ARMGOTLow12 <- <(':' ('g' / 'G') ('o' / 'O') ('t' / 'T') '_' ('l' / 'L') ('o' / 'O') '1' '2' ':' SymbolName)> */ 5959 func() bool { 5960 position768, tokenIndex768 := position, tokenIndex 5961 { 5962 position769 := position 5963 if buffer[position] != rune(':') { 5964 goto l768 5965 } 5966 position++ 5967 { 5968 position770, tokenIndex770 := position, tokenIndex 5969 if buffer[position] != rune('g') { 5970 goto l771 5971 } 5972 position++ 5973 goto l770 5974 l771: 5975 position, tokenIndex = position770, tokenIndex770 5976 if buffer[position] != rune('G') { 5977 goto l768 5978 } 5979 position++ 5980 } 5981 l770: 5982 { 5983 position772, tokenIndex772 := position, tokenIndex 5984 if buffer[position] != rune('o') { 5985 goto l773 5986 } 5987 position++ 5988 goto l772 5989 l773: 5990 position, tokenIndex = position772, tokenIndex772 5991 if buffer[position] != rune('O') { 5992 goto l768 5993 } 5994 position++ 5995 } 5996 l772: 5997 { 5998 position774, tokenIndex774 := position, tokenIndex 5999 if buffer[position] != rune('t') { 6000 goto l775 6001 } 6002 position++ 6003 goto l774 6004 l775: 6005 position, tokenIndex = position774, tokenIndex774 6006 if buffer[position] != rune('T') { 6007 goto l768 6008 } 6009 position++ 6010 } 6011 l774: 6012 if buffer[position] != rune('_') { 6013 goto l768 6014 } 6015 position++ 6016 { 6017 position776, tokenIndex776 := position, tokenIndex 6018 if buffer[position] != rune('l') { 6019 goto l777 6020 } 6021 position++ 6022 goto l776 6023 l777: 6024 position, tokenIndex = position776, tokenIndex776 6025 if buffer[position] != rune('L') { 6026 goto l768 6027 } 6028 position++ 6029 } 6030 l776: 6031 { 6032 position778, tokenIndex778 := position, tokenIndex 6033 if buffer[position] != rune('o') { 6034 goto l779 6035 } 6036 position++ 6037 goto l778 6038 l779: 6039 position, tokenIndex = position778, tokenIndex778 6040 if buffer[position] != rune('O') { 6041 goto l768 6042 } 6043 position++ 6044 } 6045 l778: 6046 if buffer[position] != rune('1') { 6047 goto l768 6048 } 6049 position++ 6050 if buffer[position] != rune('2') { 6051 goto l768 6052 } 6053 position++ 6054 if buffer[position] != rune(':') { 6055 goto l768 6056 } 6057 position++ 6058 if !_rules[ruleSymbolName]() { 6059 goto l768 6060 } 6061 add(ruleARMGOTLow12, position769) 6062 } 6063 return true 6064 l768: 6065 position, tokenIndex = position768, tokenIndex768 6066 return false 6067 }, 6068 /* 48 ARMPostincrement <- <'!'> */ 6069 func() bool { 6070 position780, tokenIndex780 := position, tokenIndex 6071 { 6072 position781 := position 6073 if buffer[position] != rune('!') { 6074 goto l780 6075 } 6076 position++ 6077 add(ruleARMPostincrement, position781) 6078 } 6079 return true 6080 l780: 6081 position, tokenIndex = position780, tokenIndex780 6082 return false 6083 }, 6084 /* 49 BaseIndexScale <- <('(' RegisterOrConstant? WS? (',' WS? RegisterOrConstant WS? (',' [0-9]+)?)? ')')> */ 6085 func() bool { 6086 position782, tokenIndex782 := position, tokenIndex 6087 { 6088 position783 := position 6089 if buffer[position] != rune('(') { 6090 goto l782 6091 } 6092 position++ 6093 { 6094 position784, tokenIndex784 := position, tokenIndex 6095 if !_rules[ruleRegisterOrConstant]() { 6096 goto l784 6097 } 6098 goto l785 6099 l784: 6100 position, tokenIndex = position784, tokenIndex784 6101 } 6102 l785: 6103 { 6104 position786, tokenIndex786 := position, tokenIndex 6105 if !_rules[ruleWS]() { 6106 goto l786 6107 } 6108 goto l787 6109 l786: 6110 position, tokenIndex = position786, tokenIndex786 6111 } 6112 l787: 6113 { 6114 position788, tokenIndex788 := position, tokenIndex 6115 if buffer[position] != rune(',') { 6116 goto l788 6117 } 6118 position++ 6119 { 6120 position790, tokenIndex790 := position, tokenIndex 6121 if !_rules[ruleWS]() { 6122 goto l790 6123 } 6124 goto l791 6125 l790: 6126 position, tokenIndex = position790, tokenIndex790 6127 } 6128 l791: 6129 if !_rules[ruleRegisterOrConstant]() { 6130 goto l788 6131 } 6132 { 6133 position792, tokenIndex792 := position, tokenIndex 6134 if !_rules[ruleWS]() { 6135 goto l792 6136 } 6137 goto l793 6138 l792: 6139 position, tokenIndex = position792, tokenIndex792 6140 } 6141 l793: 6142 { 6143 position794, tokenIndex794 := position, tokenIndex 6144 if buffer[position] != rune(',') { 6145 goto l794 6146 } 6147 position++ 6148 if c := buffer[position]; c < rune('0') || c > rune('9') { 6149 goto l794 6150 } 6151 position++ 6152 l796: 6153 { 6154 position797, tokenIndex797 := position, tokenIndex 6155 if c := buffer[position]; c < rune('0') || c > rune('9') { 6156 goto l797 6157 } 6158 position++ 6159 goto l796 6160 l797: 6161 position, tokenIndex = position797, tokenIndex797 6162 } 6163 goto l795 6164 l794: 6165 position, tokenIndex = position794, tokenIndex794 6166 } 6167 l795: 6168 goto l789 6169 l788: 6170 position, tokenIndex = position788, tokenIndex788 6171 } 6172 l789: 6173 if buffer[position] != rune(')') { 6174 goto l782 6175 } 6176 position++ 6177 add(ruleBaseIndexScale, position783) 6178 } 6179 return true 6180 l782: 6181 position, tokenIndex = position782, tokenIndex782 6182 return false 6183 }, 6184 /* 50 Operator <- <('+' / '-')> */ 6185 func() bool { 6186 position798, tokenIndex798 := position, tokenIndex 6187 { 6188 position799 := position 6189 { 6190 position800, tokenIndex800 := position, tokenIndex 6191 if buffer[position] != rune('+') { 6192 goto l801 6193 } 6194 position++ 6195 goto l800 6196 l801: 6197 position, tokenIndex = position800, tokenIndex800 6198 if buffer[position] != rune('-') { 6199 goto l798 6200 } 6201 position++ 6202 } 6203 l800: 6204 add(ruleOperator, position799) 6205 } 6206 return true 6207 l798: 6208 position, tokenIndex = position798, tokenIndex798 6209 return false 6210 }, 6211 /* 51 Offset <- <('+'? '-'? (('0' ('b' / 'B') ('0' / '1')+) / ('0' ('x' / 'X') ([0-9] / [0-9] / ([a-f] / [A-F]))+) / [0-9]+))> */ 6212 func() bool { 6213 position802, tokenIndex802 := position, tokenIndex 6214 { 6215 position803 := position 6216 { 6217 position804, tokenIndex804 := position, tokenIndex 6218 if buffer[position] != rune('+') { 6219 goto l804 6220 } 6221 position++ 6222 goto l805 6223 l804: 6224 position, tokenIndex = position804, tokenIndex804 6225 } 6226 l805: 6227 { 6228 position806, tokenIndex806 := position, tokenIndex 6229 if buffer[position] != rune('-') { 6230 goto l806 6231 } 6232 position++ 6233 goto l807 6234 l806: 6235 position, tokenIndex = position806, tokenIndex806 6236 } 6237 l807: 6238 { 6239 position808, tokenIndex808 := position, tokenIndex 6240 if buffer[position] != rune('0') { 6241 goto l809 6242 } 6243 position++ 6244 { 6245 position810, tokenIndex810 := position, tokenIndex 6246 if buffer[position] != rune('b') { 6247 goto l811 6248 } 6249 position++ 6250 goto l810 6251 l811: 6252 position, tokenIndex = position810, tokenIndex810 6253 if buffer[position] != rune('B') { 6254 goto l809 6255 } 6256 position++ 6257 } 6258 l810: 6259 { 6260 position814, tokenIndex814 := position, tokenIndex 6261 if buffer[position] != rune('0') { 6262 goto l815 6263 } 6264 position++ 6265 goto l814 6266 l815: 6267 position, tokenIndex = position814, tokenIndex814 6268 if buffer[position] != rune('1') { 6269 goto l809 6270 } 6271 position++ 6272 } 6273 l814: 6274 l812: 6275 { 6276 position813, tokenIndex813 := position, tokenIndex 6277 { 6278 position816, tokenIndex816 := position, tokenIndex 6279 if buffer[position] != rune('0') { 6280 goto l817 6281 } 6282 position++ 6283 goto l816 6284 l817: 6285 position, tokenIndex = position816, tokenIndex816 6286 if buffer[position] != rune('1') { 6287 goto l813 6288 } 6289 position++ 6290 } 6291 l816: 6292 goto l812 6293 l813: 6294 position, tokenIndex = position813, tokenIndex813 6295 } 6296 goto l808 6297 l809: 6298 position, tokenIndex = position808, tokenIndex808 6299 if buffer[position] != rune('0') { 6300 goto l818 6301 } 6302 position++ 6303 { 6304 position819, tokenIndex819 := position, tokenIndex 6305 if buffer[position] != rune('x') { 6306 goto l820 6307 } 6308 position++ 6309 goto l819 6310 l820: 6311 position, tokenIndex = position819, tokenIndex819 6312 if buffer[position] != rune('X') { 6313 goto l818 6314 } 6315 position++ 6316 } 6317 l819: 6318 { 6319 position823, tokenIndex823 := position, tokenIndex 6320 if c := buffer[position]; c < rune('0') || c > rune('9') { 6321 goto l824 6322 } 6323 position++ 6324 goto l823 6325 l824: 6326 position, tokenIndex = position823, tokenIndex823 6327 if c := buffer[position]; c < rune('0') || c > rune('9') { 6328 goto l825 6329 } 6330 position++ 6331 goto l823 6332 l825: 6333 position, tokenIndex = position823, tokenIndex823 6334 { 6335 position826, tokenIndex826 := position, tokenIndex 6336 if c := buffer[position]; c < rune('a') || c > rune('f') { 6337 goto l827 6338 } 6339 position++ 6340 goto l826 6341 l827: 6342 position, tokenIndex = position826, tokenIndex826 6343 if c := buffer[position]; c < rune('A') || c > rune('F') { 6344 goto l818 6345 } 6346 position++ 6347 } 6348 l826: 6349 } 6350 l823: 6351 l821: 6352 { 6353 position822, tokenIndex822 := position, tokenIndex 6354 { 6355 position828, tokenIndex828 := position, tokenIndex 6356 if c := buffer[position]; c < rune('0') || c > rune('9') { 6357 goto l829 6358 } 6359 position++ 6360 goto l828 6361 l829: 6362 position, tokenIndex = position828, tokenIndex828 6363 if c := buffer[position]; c < rune('0') || c > rune('9') { 6364 goto l830 6365 } 6366 position++ 6367 goto l828 6368 l830: 6369 position, tokenIndex = position828, tokenIndex828 6370 { 6371 position831, tokenIndex831 := position, tokenIndex 6372 if c := buffer[position]; c < rune('a') || c > rune('f') { 6373 goto l832 6374 } 6375 position++ 6376 goto l831 6377 l832: 6378 position, tokenIndex = position831, tokenIndex831 6379 if c := buffer[position]; c < rune('A') || c > rune('F') { 6380 goto l822 6381 } 6382 position++ 6383 } 6384 l831: 6385 } 6386 l828: 6387 goto l821 6388 l822: 6389 position, tokenIndex = position822, tokenIndex822 6390 } 6391 goto l808 6392 l818: 6393 position, tokenIndex = position808, tokenIndex808 6394 if c := buffer[position]; c < rune('0') || c > rune('9') { 6395 goto l802 6396 } 6397 position++ 6398 l833: 6399 { 6400 position834, tokenIndex834 := position, tokenIndex 6401 if c := buffer[position]; c < rune('0') || c > rune('9') { 6402 goto l834 6403 } 6404 position++ 6405 goto l833 6406 l834: 6407 position, tokenIndex = position834, tokenIndex834 6408 } 6409 } 6410 l808: 6411 add(ruleOffset, position803) 6412 } 6413 return true 6414 l802: 6415 position, tokenIndex = position802, tokenIndex802 6416 return false 6417 }, 6418 /* 52 Section <- <([a-z] / [A-Z] / '@')+> */ 6419 func() bool { 6420 position835, tokenIndex835 := position, tokenIndex 6421 { 6422 position836 := position 6423 { 6424 position839, tokenIndex839 := position, tokenIndex 6425 if c := buffer[position]; c < rune('a') || c > rune('z') { 6426 goto l840 6427 } 6428 position++ 6429 goto l839 6430 l840: 6431 position, tokenIndex = position839, tokenIndex839 6432 if c := buffer[position]; c < rune('A') || c > rune('Z') { 6433 goto l841 6434 } 6435 position++ 6436 goto l839 6437 l841: 6438 position, tokenIndex = position839, tokenIndex839 6439 if buffer[position] != rune('@') { 6440 goto l835 6441 } 6442 position++ 6443 } 6444 l839: 6445 l837: 6446 { 6447 position838, tokenIndex838 := position, tokenIndex 6448 { 6449 position842, tokenIndex842 := position, tokenIndex 6450 if c := buffer[position]; c < rune('a') || c > rune('z') { 6451 goto l843 6452 } 6453 position++ 6454 goto l842 6455 l843: 6456 position, tokenIndex = position842, tokenIndex842 6457 if c := buffer[position]; c < rune('A') || c > rune('Z') { 6458 goto l844 6459 } 6460 position++ 6461 goto l842 6462 l844: 6463 position, tokenIndex = position842, tokenIndex842 6464 if buffer[position] != rune('@') { 6465 goto l838 6466 } 6467 position++ 6468 } 6469 l842: 6470 goto l837 6471 l838: 6472 position, tokenIndex = position838, tokenIndex838 6473 } 6474 add(ruleSection, position836) 6475 } 6476 return true 6477 l835: 6478 position, tokenIndex = position835, tokenIndex835 6479 return false 6480 }, 6481 /* 53 SegmentRegister <- <('%' ([c-g] / 's') ('s' ':'))> */ 6482 func() bool { 6483 position845, tokenIndex845 := position, tokenIndex 6484 { 6485 position846 := position 6486 if buffer[position] != rune('%') { 6487 goto l845 6488 } 6489 position++ 6490 { 6491 position847, tokenIndex847 := position, tokenIndex 6492 if c := buffer[position]; c < rune('c') || c > rune('g') { 6493 goto l848 6494 } 6495 position++ 6496 goto l847 6497 l848: 6498 position, tokenIndex = position847, tokenIndex847 6499 if buffer[position] != rune('s') { 6500 goto l845 6501 } 6502 position++ 6503 } 6504 l847: 6505 if buffer[position] != rune('s') { 6506 goto l845 6507 } 6508 position++ 6509 if buffer[position] != rune(':') { 6510 goto l845 6511 } 6512 position++ 6513 add(ruleSegmentRegister, position846) 6514 } 6515 return true 6516 l845: 6517 position, tokenIndex = position845, tokenIndex845 6518 return false 6519 }, 6520 } 6521 p.rules = _rules 6522 return nil 6523} 6524