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