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