blob: 298f55c888a48e4ec19d5ed25721979aeb046e84 [file] [log] [blame]
Robert Sloan8ff03552017-06-14 12:40:58 -07001package main
2
Robert Sloan8542c082018-02-05 09:07:34 -08003//go:generate peg delocate.peg
4
Robert Sloan8ff03552017-06-14 12:40:58 -07005import (
6 "fmt"
7 "math"
8 "sort"
9 "strconv"
10)
11
12const endSymbol rune = 1114112
13
14/* The rule types inferred from the grammar are below. */
15type pegRule uint8
16
17const (
18 ruleUnknown pegRule = iota
19 ruleAsmFile
20 ruleStatement
21 ruleGlobalDirective
22 ruleDirective
23 ruleDirectiveName
24 ruleLocationDirective
25 ruleArgs
26 ruleArg
27 ruleQuotedArg
28 ruleQuotedText
29 ruleLabelContainingDirective
30 ruleLabelContainingDirectiveName
31 ruleSymbolArgs
32 ruleSymbolArg
33 ruleSymbolType
34 ruleDot
35 ruleTCMarker
36 ruleEscapedChar
37 ruleWS
38 ruleComment
39 ruleLabel
40 ruleSymbolName
41 ruleLocalSymbol
42 ruleLocalLabel
43 ruleLocalLabelRef
44 ruleInstruction
45 ruleInstructionName
46 ruleInstructionArg
Robert Sloan5bdaadb2018-10-30 16:00:26 -070047 ruleAVX512Token
Robert Sloan8ff03552017-06-14 12:40:58 -070048 ruleTOCRefHigh
49 ruleTOCRefLow
50 ruleIndirectionIndicator
51 ruleRegisterOrConstant
52 ruleMemoryRef
53 ruleSymbolRef
54 ruleBaseIndexScale
55 ruleOperator
56 ruleOffset
57 ruleSection
58 ruleSegmentRegister
59)
60
61var rul3s = [...]string{
62 "Unknown",
63 "AsmFile",
64 "Statement",
65 "GlobalDirective",
66 "Directive",
67 "DirectiveName",
68 "LocationDirective",
69 "Args",
70 "Arg",
71 "QuotedArg",
72 "QuotedText",
73 "LabelContainingDirective",
74 "LabelContainingDirectiveName",
75 "SymbolArgs",
76 "SymbolArg",
77 "SymbolType",
78 "Dot",
79 "TCMarker",
80 "EscapedChar",
81 "WS",
82 "Comment",
83 "Label",
84 "SymbolName",
85 "LocalSymbol",
86 "LocalLabel",
87 "LocalLabelRef",
88 "Instruction",
89 "InstructionName",
90 "InstructionArg",
Robert Sloan5bdaadb2018-10-30 16:00:26 -070091 "AVX512Token",
Robert Sloan8ff03552017-06-14 12:40:58 -070092 "TOCRefHigh",
93 "TOCRefLow",
94 "IndirectionIndicator",
95 "RegisterOrConstant",
96 "MemoryRef",
97 "SymbolRef",
98 "BaseIndexScale",
99 "Operator",
100 "Offset",
101 "Section",
102 "SegmentRegister",
103}
104
105type token32 struct {
106 pegRule
107 begin, end uint32
108}
109
110func (t *token32) String() string {
111 return fmt.Sprintf("\x1B[34m%v\x1B[m %v %v", rul3s[t.pegRule], t.begin, t.end)
112}
113
114type node32 struct {
115 token32
116 up, next *node32
117}
118
119func (node *node32) print(pretty bool, buffer string) {
120 var print func(node *node32, depth int)
121 print = func(node *node32, depth int) {
122 for node != nil {
123 for c := 0; c < depth; c++ {
124 fmt.Printf(" ")
125 }
126 rule := rul3s[node.pegRule]
127 quote := strconv.Quote(string(([]rune(buffer)[node.begin:node.end])))
128 if !pretty {
129 fmt.Printf("%v %v\n", rule, quote)
130 } else {
131 fmt.Printf("\x1B[34m%v\x1B[m %v\n", rule, quote)
132 }
133 if node.up != nil {
134 print(node.up, depth+1)
135 }
136 node = node.next
137 }
138 }
139 print(node, 0)
140}
141
142func (node *node32) Print(buffer string) {
143 node.print(false, buffer)
144}
145
146func (node *node32) PrettyPrint(buffer string) {
147 node.print(true, buffer)
148}
149
150type tokens32 struct {
151 tree []token32
152}
153
154func (t *tokens32) Trim(length uint32) {
155 t.tree = t.tree[:length]
156}
157
158func (t *tokens32) Print() {
159 for _, token := range t.tree {
160 fmt.Println(token.String())
161 }
162}
163
164func (t *tokens32) AST() *node32 {
165 type element struct {
166 node *node32
167 down *element
168 }
169 tokens := t.Tokens()
170 var stack *element
171 for _, token := range tokens {
172 if token.begin == token.end {
173 continue
174 }
175 node := &node32{token32: token}
176 for stack != nil && stack.node.begin >= token.begin && stack.node.end <= token.end {
177 stack.node.next = node.up
178 node.up = stack.node
179 stack = stack.down
180 }
181 stack = &element{node: node, down: stack}
182 }
183 if stack != nil {
184 return stack.node
185 }
186 return nil
187}
188
189func (t *tokens32) PrintSyntaxTree(buffer string) {
190 t.AST().Print(buffer)
191}
192
193func (t *tokens32) PrettyPrintSyntaxTree(buffer string) {
194 t.AST().PrettyPrint(buffer)
195}
196
197func (t *tokens32) Add(rule pegRule, begin, end, index uint32) {
198 if tree := t.tree; int(index) >= len(tree) {
199 expanded := make([]token32, 2*len(tree))
200 copy(expanded, tree)
201 t.tree = expanded
202 }
203 t.tree[index] = token32{
204 pegRule: rule,
205 begin: begin,
206 end: end,
207 }
208}
209
210func (t *tokens32) Tokens() []token32 {
211 return t.tree
212}
213
214type Asm struct {
215 Buffer string
216 buffer []rune
Robert Sloan5bdaadb2018-10-30 16:00:26 -0700217 rules [41]func() bool
Robert Sloan8ff03552017-06-14 12:40:58 -0700218 parse func(rule ...int) error
219 reset func()
220 Pretty bool
221 tokens32
222}
223
224func (p *Asm) Parse(rule ...int) error {
225 return p.parse(rule...)
226}
227
228func (p *Asm) Reset() {
229 p.reset()
230}
231
232type textPosition struct {
233 line, symbol int
234}
235
236type textPositionMap map[int]textPosition
237
238func translatePositions(buffer []rune, positions []int) textPositionMap {
239 length, translations, j, line, symbol := len(positions), make(textPositionMap, len(positions)), 0, 1, 0
240 sort.Ints(positions)
241
242search:
243 for i, c := range buffer {
244 if c == '\n' {
245 line, symbol = line+1, 0
246 } else {
247 symbol++
248 }
249 if i == positions[j] {
250 translations[positions[j]] = textPosition{line, symbol}
251 for j++; j < length; j++ {
252 if i != positions[j] {
253 continue search
254 }
255 }
256 break search
257 }
258 }
259
260 return translations
261}
262
263type parseError struct {
264 p *Asm
265 max token32
266}
267
268func (e *parseError) Error() string {
269 tokens, error := []token32{e.max}, "\n"
270 positions, p := make([]int, 2*len(tokens)), 0
271 for _, token := range tokens {
272 positions[p], p = int(token.begin), p+1
273 positions[p], p = int(token.end), p+1
274 }
275 translations := translatePositions(e.p.buffer, positions)
276 format := "parse error near %v (line %v symbol %v - line %v symbol %v):\n%v\n"
277 if e.p.Pretty {
278 format = "parse error near \x1B[34m%v\x1B[m (line %v symbol %v - line %v symbol %v):\n%v\n"
279 }
280 for _, token := range tokens {
281 begin, end := int(token.begin), int(token.end)
282 error += fmt.Sprintf(format,
283 rul3s[token.pegRule],
284 translations[begin].line, translations[begin].symbol,
285 translations[end].line, translations[end].symbol,
286 strconv.Quote(string(e.p.buffer[begin:end])))
287 }
288
289 return error
290}
291
292func (p *Asm) PrintSyntaxTree() {
293 if p.Pretty {
294 p.tokens32.PrettyPrintSyntaxTree(p.Buffer)
295 } else {
296 p.tokens32.PrintSyntaxTree(p.Buffer)
297 }
298}
299
300func (p *Asm) Init() {
301 var (
302 max token32
303 position, tokenIndex uint32
304 buffer []rune
305 )
306 p.reset = func() {
307 max = token32{}
308 position, tokenIndex = 0, 0
309
310 p.buffer = []rune(p.Buffer)
311 if len(p.buffer) == 0 || p.buffer[len(p.buffer)-1] != endSymbol {
312 p.buffer = append(p.buffer, endSymbol)
313 }
314 buffer = p.buffer
315 }
316 p.reset()
317
318 _rules := p.rules
319 tree := tokens32{tree: make([]token32, math.MaxInt16)}
320 p.parse = func(rule ...int) error {
321 r := 1
322 if len(rule) > 0 {
323 r = rule[0]
324 }
325 matches := p.rules[r]()
326 p.tokens32 = tree
327 if matches {
328 p.Trim(tokenIndex)
329 return nil
330 }
331 return &parseError{p, max}
332 }
333
334 add := func(rule pegRule, begin uint32) {
335 tree.Add(rule, begin, position, tokenIndex)
336 tokenIndex++
337 if begin != position && position > max.end {
338 max = token32{rule, begin, position}
339 }
340 }
341
342 matchDot := func() bool {
343 if buffer[position] != endSymbol {
344 position++
345 return true
346 }
347 return false
348 }
349
350 /*matchChar := func(c byte) bool {
351 if buffer[position] == c {
352 position++
353 return true
354 }
355 return false
356 }*/
357
358 /*matchRange := func(lower byte, upper byte) bool {
359 if c := buffer[position]; c >= lower && c <= upper {
360 position++
361 return true
362 }
363 return false
364 }*/
365
366 _rules = [...]func() bool{
367 nil,
368 /* 0 AsmFile <- <(Statement* !.)> */
369 func() bool {
370 position0, tokenIndex0 := position, tokenIndex
371 {
372 position1 := position
373 l2:
374 {
375 position3, tokenIndex3 := position, tokenIndex
376 if !_rules[ruleStatement]() {
377 goto l3
378 }
379 goto l2
380 l3:
381 position, tokenIndex = position3, tokenIndex3
382 }
383 {
384 position4, tokenIndex4 := position, tokenIndex
385 if !matchDot() {
386 goto l4
387 }
388 goto l0
389 l4:
390 position, tokenIndex = position4, tokenIndex4
391 }
392 add(ruleAsmFile, position1)
393 }
394 return true
395 l0:
396 position, tokenIndex = position0, tokenIndex0
397 return false
398 },
399 /* 1 Statement <- <(WS? (Label / ((GlobalDirective / LocationDirective / LabelContainingDirective / Instruction / Directive / Comment / ) WS? ((Comment? '\n') / ';'))))> */
400 func() bool {
401 position5, tokenIndex5 := position, tokenIndex
402 {
403 position6 := position
404 {
405 position7, tokenIndex7 := position, tokenIndex
406 if !_rules[ruleWS]() {
407 goto l7
408 }
409 goto l8
410 l7:
411 position, tokenIndex = position7, tokenIndex7
412 }
413 l8:
414 {
415 position9, tokenIndex9 := position, tokenIndex
416 if !_rules[ruleLabel]() {
417 goto l10
418 }
419 goto l9
420 l10:
421 position, tokenIndex = position9, tokenIndex9
422 {
423 position11, tokenIndex11 := position, tokenIndex
424 if !_rules[ruleGlobalDirective]() {
425 goto l12
426 }
427 goto l11
428 l12:
429 position, tokenIndex = position11, tokenIndex11
430 if !_rules[ruleLocationDirective]() {
431 goto l13
432 }
433 goto l11
434 l13:
435 position, tokenIndex = position11, tokenIndex11
436 if !_rules[ruleLabelContainingDirective]() {
437 goto l14
438 }
439 goto l11
440 l14:
441 position, tokenIndex = position11, tokenIndex11
442 if !_rules[ruleInstruction]() {
443 goto l15
444 }
445 goto l11
446 l15:
447 position, tokenIndex = position11, tokenIndex11
448 if !_rules[ruleDirective]() {
449 goto l16
450 }
451 goto l11
452 l16:
453 position, tokenIndex = position11, tokenIndex11
454 if !_rules[ruleComment]() {
455 goto l17
456 }
457 goto l11
458 l17:
459 position, tokenIndex = position11, tokenIndex11
460 }
461 l11:
462 {
463 position18, tokenIndex18 := position, tokenIndex
464 if !_rules[ruleWS]() {
465 goto l18
466 }
467 goto l19
468 l18:
469 position, tokenIndex = position18, tokenIndex18
470 }
471 l19:
472 {
473 position20, tokenIndex20 := position, tokenIndex
474 {
475 position22, tokenIndex22 := position, tokenIndex
476 if !_rules[ruleComment]() {
477 goto l22
478 }
479 goto l23
480 l22:
481 position, tokenIndex = position22, tokenIndex22
482 }
483 l23:
484 if buffer[position] != rune('\n') {
485 goto l21
486 }
487 position++
488 goto l20
489 l21:
490 position, tokenIndex = position20, tokenIndex20
491 if buffer[position] != rune(';') {
492 goto l5
493 }
494 position++
495 }
496 l20:
497 }
498 l9:
499 add(ruleStatement, position6)
500 }
501 return true
502 l5:
503 position, tokenIndex = position5, tokenIndex5
504 return false
505 },
506 /* 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)> */
507 func() bool {
508 position24, tokenIndex24 := position, tokenIndex
509 {
510 position25 := position
511 {
512 position26, tokenIndex26 := position, tokenIndex
513 if buffer[position] != rune('.') {
514 goto l27
515 }
516 position++
517 {
518 position28, tokenIndex28 := position, tokenIndex
519 if buffer[position] != rune('g') {
520 goto l29
521 }
522 position++
523 goto l28
524 l29:
525 position, tokenIndex = position28, tokenIndex28
526 if buffer[position] != rune('G') {
527 goto l27
528 }
529 position++
530 }
531 l28:
532 {
533 position30, tokenIndex30 := position, tokenIndex
534 if buffer[position] != rune('l') {
535 goto l31
536 }
537 position++
538 goto l30
539 l31:
540 position, tokenIndex = position30, tokenIndex30
541 if buffer[position] != rune('L') {
542 goto l27
543 }
544 position++
545 }
546 l30:
547 {
548 position32, tokenIndex32 := position, tokenIndex
549 if buffer[position] != rune('o') {
550 goto l33
551 }
552 position++
553 goto l32
554 l33:
555 position, tokenIndex = position32, tokenIndex32
556 if buffer[position] != rune('O') {
557 goto l27
558 }
559 position++
560 }
561 l32:
562 {
563 position34, tokenIndex34 := position, tokenIndex
564 if buffer[position] != rune('b') {
565 goto l35
566 }
567 position++
568 goto l34
569 l35:
570 position, tokenIndex = position34, tokenIndex34
571 if buffer[position] != rune('B') {
572 goto l27
573 }
574 position++
575 }
576 l34:
577 {
578 position36, tokenIndex36 := position, tokenIndex
579 if buffer[position] != rune('a') {
580 goto l37
581 }
582 position++
583 goto l36
584 l37:
585 position, tokenIndex = position36, tokenIndex36
586 if buffer[position] != rune('A') {
587 goto l27
588 }
589 position++
590 }
591 l36:
592 {
593 position38, tokenIndex38 := position, tokenIndex
594 if buffer[position] != rune('l') {
595 goto l39
596 }
597 position++
598 goto l38
599 l39:
600 position, tokenIndex = position38, tokenIndex38
601 if buffer[position] != rune('L') {
602 goto l27
603 }
604 position++
605 }
606 l38:
607 goto l26
608 l27:
609 position, tokenIndex = position26, tokenIndex26
610 if buffer[position] != rune('.') {
611 goto l24
612 }
613 position++
614 {
615 position40, tokenIndex40 := position, tokenIndex
616 if buffer[position] != rune('g') {
617 goto l41
618 }
619 position++
620 goto l40
621 l41:
622 position, tokenIndex = position40, tokenIndex40
623 if buffer[position] != rune('G') {
624 goto l24
625 }
626 position++
627 }
628 l40:
629 {
630 position42, tokenIndex42 := position, tokenIndex
631 if buffer[position] != rune('l') {
632 goto l43
633 }
634 position++
635 goto l42
636 l43:
637 position, tokenIndex = position42, tokenIndex42
638 if buffer[position] != rune('L') {
639 goto l24
640 }
641 position++
642 }
643 l42:
644 {
645 position44, tokenIndex44 := position, tokenIndex
646 if buffer[position] != rune('o') {
647 goto l45
648 }
649 position++
650 goto l44
651 l45:
652 position, tokenIndex = position44, tokenIndex44
653 if buffer[position] != rune('O') {
654 goto l24
655 }
656 position++
657 }
658 l44:
659 {
660 position46, tokenIndex46 := position, tokenIndex
661 if buffer[position] != rune('b') {
662 goto l47
663 }
664 position++
665 goto l46
666 l47:
667 position, tokenIndex = position46, tokenIndex46
668 if buffer[position] != rune('B') {
669 goto l24
670 }
671 position++
672 }
673 l46:
674 {
675 position48, tokenIndex48 := position, tokenIndex
676 if buffer[position] != rune('l') {
677 goto l49
678 }
679 position++
680 goto l48
681 l49:
682 position, tokenIndex = position48, tokenIndex48
683 if buffer[position] != rune('L') {
684 goto l24
685 }
686 position++
687 }
688 l48:
689 }
690 l26:
691 if !_rules[ruleWS]() {
692 goto l24
693 }
694 if !_rules[ruleSymbolName]() {
695 goto l24
696 }
697 add(ruleGlobalDirective, position25)
698 }
699 return true
700 l24:
701 position, tokenIndex = position24, tokenIndex24
702 return false
703 },
704 /* 3 Directive <- <('.' DirectiveName (WS Args)?)> */
705 func() bool {
706 position50, tokenIndex50 := position, tokenIndex
707 {
708 position51 := position
709 if buffer[position] != rune('.') {
710 goto l50
711 }
712 position++
713 if !_rules[ruleDirectiveName]() {
714 goto l50
715 }
716 {
717 position52, tokenIndex52 := position, tokenIndex
718 if !_rules[ruleWS]() {
719 goto l52
720 }
721 if !_rules[ruleArgs]() {
722 goto l52
723 }
724 goto l53
725 l52:
726 position, tokenIndex = position52, tokenIndex52
727 }
728 l53:
729 add(ruleDirective, position51)
730 }
731 return true
732 l50:
733 position, tokenIndex = position50, tokenIndex50
734 return false
735 },
736 /* 4 DirectiveName <- <([a-z] / [A-Z] / ([0-9] / [0-9]) / '_')+> */
737 func() bool {
738 position54, tokenIndex54 := position, tokenIndex
739 {
740 position55 := position
741 {
742 position58, tokenIndex58 := position, tokenIndex
743 if c := buffer[position]; c < rune('a') || c > rune('z') {
744 goto l59
745 }
746 position++
747 goto l58
748 l59:
749 position, tokenIndex = position58, tokenIndex58
750 if c := buffer[position]; c < rune('A') || c > rune('Z') {
751 goto l60
752 }
753 position++
754 goto l58
755 l60:
756 position, tokenIndex = position58, tokenIndex58
757 {
758 position62, tokenIndex62 := position, tokenIndex
759 if c := buffer[position]; c < rune('0') || c > rune('9') {
760 goto l63
761 }
762 position++
763 goto l62
764 l63:
765 position, tokenIndex = position62, tokenIndex62
766 if c := buffer[position]; c < rune('0') || c > rune('9') {
767 goto l61
768 }
769 position++
770 }
771 l62:
772 goto l58
773 l61:
774 position, tokenIndex = position58, tokenIndex58
775 if buffer[position] != rune('_') {
776 goto l54
777 }
778 position++
779 }
780 l58:
781 l56:
782 {
783 position57, tokenIndex57 := position, tokenIndex
784 {
785 position64, tokenIndex64 := position, tokenIndex
786 if c := buffer[position]; c < rune('a') || c > rune('z') {
787 goto l65
788 }
789 position++
790 goto l64
791 l65:
792 position, tokenIndex = position64, tokenIndex64
793 if c := buffer[position]; c < rune('A') || c > rune('Z') {
794 goto l66
795 }
796 position++
797 goto l64
798 l66:
799 position, tokenIndex = position64, tokenIndex64
800 {
801 position68, tokenIndex68 := position, tokenIndex
802 if c := buffer[position]; c < rune('0') || c > rune('9') {
803 goto l69
804 }
805 position++
806 goto l68
807 l69:
808 position, tokenIndex = position68, tokenIndex68
809 if c := buffer[position]; c < rune('0') || c > rune('9') {
810 goto l67
811 }
812 position++
813 }
814 l68:
815 goto l64
816 l67:
817 position, tokenIndex = position64, tokenIndex64
818 if buffer[position] != rune('_') {
819 goto l57
820 }
821 position++
822 }
823 l64:
824 goto l56
825 l57:
826 position, tokenIndex = position57, tokenIndex57
827 }
828 add(ruleDirectiveName, position55)
829 }
830 return true
831 l54:
832 position, tokenIndex = position54, tokenIndex54
833 return false
834 },
835 /* 5 LocationDirective <- <((('.' ('f' / 'F') ('i' / 'I') ('l' / 'L') ('e' / 'E')) / ('.' ('l' / 'L') ('o' / 'O') ('c' / 'C'))) WS (!('#' / '\n') .)+)> */
836 func() bool {
837 position70, tokenIndex70 := position, tokenIndex
838 {
839 position71 := position
840 {
841 position72, tokenIndex72 := position, tokenIndex
842 if buffer[position] != rune('.') {
843 goto l73
844 }
845 position++
846 {
847 position74, tokenIndex74 := position, tokenIndex
848 if buffer[position] != rune('f') {
849 goto l75
850 }
851 position++
852 goto l74
853 l75:
854 position, tokenIndex = position74, tokenIndex74
855 if buffer[position] != rune('F') {
856 goto l73
857 }
858 position++
859 }
860 l74:
861 {
862 position76, tokenIndex76 := position, tokenIndex
863 if buffer[position] != rune('i') {
864 goto l77
865 }
866 position++
867 goto l76
868 l77:
869 position, tokenIndex = position76, tokenIndex76
870 if buffer[position] != rune('I') {
871 goto l73
872 }
873 position++
874 }
875 l76:
876 {
877 position78, tokenIndex78 := position, tokenIndex
878 if buffer[position] != rune('l') {
879 goto l79
880 }
881 position++
882 goto l78
883 l79:
884 position, tokenIndex = position78, tokenIndex78
885 if buffer[position] != rune('L') {
886 goto l73
887 }
888 position++
889 }
890 l78:
891 {
892 position80, tokenIndex80 := position, tokenIndex
893 if buffer[position] != rune('e') {
894 goto l81
895 }
896 position++
897 goto l80
898 l81:
899 position, tokenIndex = position80, tokenIndex80
900 if buffer[position] != rune('E') {
901 goto l73
902 }
903 position++
904 }
905 l80:
906 goto l72
907 l73:
908 position, tokenIndex = position72, tokenIndex72
909 if buffer[position] != rune('.') {
910 goto l70
911 }
912 position++
913 {
914 position82, tokenIndex82 := position, tokenIndex
915 if buffer[position] != rune('l') {
916 goto l83
917 }
918 position++
919 goto l82
920 l83:
921 position, tokenIndex = position82, tokenIndex82
922 if buffer[position] != rune('L') {
923 goto l70
924 }
925 position++
926 }
927 l82:
928 {
929 position84, tokenIndex84 := position, tokenIndex
930 if buffer[position] != rune('o') {
931 goto l85
932 }
933 position++
934 goto l84
935 l85:
936 position, tokenIndex = position84, tokenIndex84
937 if buffer[position] != rune('O') {
938 goto l70
939 }
940 position++
941 }
942 l84:
943 {
944 position86, tokenIndex86 := position, tokenIndex
945 if buffer[position] != rune('c') {
946 goto l87
947 }
948 position++
949 goto l86
950 l87:
951 position, tokenIndex = position86, tokenIndex86
952 if buffer[position] != rune('C') {
953 goto l70
954 }
955 position++
956 }
957 l86:
958 }
959 l72:
960 if !_rules[ruleWS]() {
961 goto l70
962 }
963 {
964 position90, tokenIndex90 := position, tokenIndex
965 {
966 position91, tokenIndex91 := position, tokenIndex
967 if buffer[position] != rune('#') {
968 goto l92
969 }
970 position++
971 goto l91
972 l92:
973 position, tokenIndex = position91, tokenIndex91
974 if buffer[position] != rune('\n') {
975 goto l90
976 }
977 position++
978 }
979 l91:
980 goto l70
981 l90:
982 position, tokenIndex = position90, tokenIndex90
983 }
984 if !matchDot() {
985 goto l70
986 }
987 l88:
988 {
989 position89, tokenIndex89 := position, tokenIndex
990 {
991 position93, tokenIndex93 := position, tokenIndex
992 {
993 position94, tokenIndex94 := position, tokenIndex
994 if buffer[position] != rune('#') {
995 goto l95
996 }
997 position++
998 goto l94
999 l95:
1000 position, tokenIndex = position94, tokenIndex94
1001 if buffer[position] != rune('\n') {
1002 goto l93
1003 }
1004 position++
1005 }
1006 l94:
1007 goto l89
1008 l93:
1009 position, tokenIndex = position93, tokenIndex93
1010 }
1011 if !matchDot() {
1012 goto l89
1013 }
1014 goto l88
1015 l89:
1016 position, tokenIndex = position89, tokenIndex89
1017 }
1018 add(ruleLocationDirective, position71)
1019 }
1020 return true
1021 l70:
1022 position, tokenIndex = position70, tokenIndex70
1023 return false
1024 },
1025 /* 6 Args <- <(Arg (WS? ',' WS? Arg)*)> */
1026 func() bool {
1027 position96, tokenIndex96 := position, tokenIndex
1028 {
1029 position97 := position
1030 if !_rules[ruleArg]() {
1031 goto l96
1032 }
1033 l98:
1034 {
1035 position99, tokenIndex99 := position, tokenIndex
1036 {
1037 position100, tokenIndex100 := position, tokenIndex
1038 if !_rules[ruleWS]() {
1039 goto l100
1040 }
1041 goto l101
1042 l100:
1043 position, tokenIndex = position100, tokenIndex100
1044 }
1045 l101:
1046 if buffer[position] != rune(',') {
1047 goto l99
1048 }
1049 position++
1050 {
1051 position102, tokenIndex102 := position, tokenIndex
1052 if !_rules[ruleWS]() {
1053 goto l102
1054 }
1055 goto l103
1056 l102:
1057 position, tokenIndex = position102, tokenIndex102
1058 }
1059 l103:
1060 if !_rules[ruleArg]() {
1061 goto l99
1062 }
1063 goto l98
1064 l99:
1065 position, tokenIndex = position99, tokenIndex99
1066 }
1067 add(ruleArgs, position97)
1068 }
1069 return true
1070 l96:
1071 position, tokenIndex = position96, tokenIndex96
1072 return false
1073 },
Robert Sloan8542c082018-02-05 09:07:34 -08001074 /* 7 Arg <- <(QuotedArg / ([0-9] / [0-9] / ([a-z] / [A-Z]) / '%' / '+' / '-' / '*' / '_' / '@' / '.')*)> */
Robert Sloan8ff03552017-06-14 12:40:58 -07001075 func() bool {
1076 {
1077 position105 := position
1078 {
1079 position106, tokenIndex106 := position, tokenIndex
1080 if !_rules[ruleQuotedArg]() {
1081 goto l107
1082 }
1083 goto l106
1084 l107:
1085 position, tokenIndex = position106, tokenIndex106
1086 l108:
1087 {
1088 position109, tokenIndex109 := position, tokenIndex
1089 {
1090 position110, tokenIndex110 := position, tokenIndex
1091 if c := buffer[position]; c < rune('0') || c > rune('9') {
1092 goto l111
1093 }
1094 position++
1095 goto l110
1096 l111:
1097 position, tokenIndex = position110, tokenIndex110
1098 if c := buffer[position]; c < rune('0') || c > rune('9') {
1099 goto l112
1100 }
1101 position++
1102 goto l110
1103 l112:
1104 position, tokenIndex = position110, tokenIndex110
1105 {
1106 position114, tokenIndex114 := position, tokenIndex
1107 if c := buffer[position]; c < rune('a') || c > rune('z') {
1108 goto l115
1109 }
1110 position++
1111 goto l114
1112 l115:
1113 position, tokenIndex = position114, tokenIndex114
1114 if c := buffer[position]; c < rune('A') || c > rune('Z') {
1115 goto l113
1116 }
1117 position++
1118 }
1119 l114:
1120 goto l110
1121 l113:
1122 position, tokenIndex = position110, tokenIndex110
1123 if buffer[position] != rune('%') {
1124 goto l116
1125 }
1126 position++
1127 goto l110
1128 l116:
1129 position, tokenIndex = position110, tokenIndex110
1130 if buffer[position] != rune('+') {
1131 goto l117
1132 }
1133 position++
1134 goto l110
1135 l117:
1136 position, tokenIndex = position110, tokenIndex110
1137 if buffer[position] != rune('-') {
1138 goto l118
1139 }
1140 position++
1141 goto l110
1142 l118:
1143 position, tokenIndex = position110, tokenIndex110
Robert Sloan8542c082018-02-05 09:07:34 -08001144 if buffer[position] != rune('*') {
Robert Sloan8ff03552017-06-14 12:40:58 -07001145 goto l119
1146 }
1147 position++
1148 goto l110
1149 l119:
1150 position, tokenIndex = position110, tokenIndex110
Robert Sloan8542c082018-02-05 09:07:34 -08001151 if buffer[position] != rune('_') {
Robert Sloan8ff03552017-06-14 12:40:58 -07001152 goto l120
1153 }
1154 position++
1155 goto l110
1156 l120:
1157 position, tokenIndex = position110, tokenIndex110
Robert Sloan8542c082018-02-05 09:07:34 -08001158 if buffer[position] != rune('@') {
1159 goto l121
1160 }
1161 position++
1162 goto l110
1163 l121:
1164 position, tokenIndex = position110, tokenIndex110
Robert Sloan8ff03552017-06-14 12:40:58 -07001165 if buffer[position] != rune('.') {
1166 goto l109
1167 }
1168 position++
1169 }
1170 l110:
1171 goto l108
1172 l109:
1173 position, tokenIndex = position109, tokenIndex109
1174 }
1175 }
1176 l106:
1177 add(ruleArg, position105)
1178 }
1179 return true
1180 },
1181 /* 8 QuotedArg <- <('"' QuotedText '"')> */
1182 func() bool {
Robert Sloan8542c082018-02-05 09:07:34 -08001183 position122, tokenIndex122 := position, tokenIndex
Robert Sloan8ff03552017-06-14 12:40:58 -07001184 {
Robert Sloan8542c082018-02-05 09:07:34 -08001185 position123 := position
Robert Sloan8ff03552017-06-14 12:40:58 -07001186 if buffer[position] != rune('"') {
Robert Sloan8542c082018-02-05 09:07:34 -08001187 goto l122
Robert Sloan8ff03552017-06-14 12:40:58 -07001188 }
1189 position++
1190 if !_rules[ruleQuotedText]() {
Robert Sloan8542c082018-02-05 09:07:34 -08001191 goto l122
Robert Sloan8ff03552017-06-14 12:40:58 -07001192 }
1193 if buffer[position] != rune('"') {
Robert Sloan8542c082018-02-05 09:07:34 -08001194 goto l122
Robert Sloan8ff03552017-06-14 12:40:58 -07001195 }
1196 position++
Robert Sloan8542c082018-02-05 09:07:34 -08001197 add(ruleQuotedArg, position123)
Robert Sloan8ff03552017-06-14 12:40:58 -07001198 }
1199 return true
Robert Sloan8542c082018-02-05 09:07:34 -08001200 l122:
1201 position, tokenIndex = position122, tokenIndex122
Robert Sloan8ff03552017-06-14 12:40:58 -07001202 return false
1203 },
1204 /* 9 QuotedText <- <(EscapedChar / (!'"' .))*> */
1205 func() bool {
1206 {
Robert Sloan8542c082018-02-05 09:07:34 -08001207 position125 := position
1208 l126:
Robert Sloan8ff03552017-06-14 12:40:58 -07001209 {
Robert Sloan8542c082018-02-05 09:07:34 -08001210 position127, tokenIndex127 := position, tokenIndex
Robert Sloan8ff03552017-06-14 12:40:58 -07001211 {
Robert Sloan8542c082018-02-05 09:07:34 -08001212 position128, tokenIndex128 := position, tokenIndex
Robert Sloan8ff03552017-06-14 12:40:58 -07001213 if !_rules[ruleEscapedChar]() {
Robert Sloan8542c082018-02-05 09:07:34 -08001214 goto l129
Robert Sloan8ff03552017-06-14 12:40:58 -07001215 }
Robert Sloan8542c082018-02-05 09:07:34 -08001216 goto l128
1217 l129:
1218 position, tokenIndex = position128, tokenIndex128
Robert Sloan8ff03552017-06-14 12:40:58 -07001219 {
Robert Sloan8542c082018-02-05 09:07:34 -08001220 position130, tokenIndex130 := position, tokenIndex
Robert Sloan8ff03552017-06-14 12:40:58 -07001221 if buffer[position] != rune('"') {
Robert Sloan8542c082018-02-05 09:07:34 -08001222 goto l130
Robert Sloan8ff03552017-06-14 12:40:58 -07001223 }
1224 position++
Robert Sloan8542c082018-02-05 09:07:34 -08001225 goto l127
1226 l130:
1227 position, tokenIndex = position130, tokenIndex130
Robert Sloan8ff03552017-06-14 12:40:58 -07001228 }
1229 if !matchDot() {
Robert Sloan8542c082018-02-05 09:07:34 -08001230 goto l127
Robert Sloan8ff03552017-06-14 12:40:58 -07001231 }
1232 }
Robert Sloan8542c082018-02-05 09:07:34 -08001233 l128:
1234 goto l126
Robert Sloan8ff03552017-06-14 12:40:58 -07001235 l127:
Robert Sloan8542c082018-02-05 09:07:34 -08001236 position, tokenIndex = position127, tokenIndex127
Robert Sloan8ff03552017-06-14 12:40:58 -07001237 }
Robert Sloan8542c082018-02-05 09:07:34 -08001238 add(ruleQuotedText, position125)
Robert Sloan8ff03552017-06-14 12:40:58 -07001239 }
1240 return true
1241 },
1242 /* 10 LabelContainingDirective <- <(LabelContainingDirectiveName WS SymbolArgs)> */
1243 func() bool {
Robert Sloan8542c082018-02-05 09:07:34 -08001244 position131, tokenIndex131 := position, tokenIndex
Robert Sloan8ff03552017-06-14 12:40:58 -07001245 {
Robert Sloan8542c082018-02-05 09:07:34 -08001246 position132 := position
Robert Sloan8ff03552017-06-14 12:40:58 -07001247 if !_rules[ruleLabelContainingDirectiveName]() {
Robert Sloan8542c082018-02-05 09:07:34 -08001248 goto l131
Robert Sloan8ff03552017-06-14 12:40:58 -07001249 }
1250 if !_rules[ruleWS]() {
Robert Sloan8542c082018-02-05 09:07:34 -08001251 goto l131
Robert Sloan8ff03552017-06-14 12:40:58 -07001252 }
1253 if !_rules[ruleSymbolArgs]() {
Robert Sloan8542c082018-02-05 09:07:34 -08001254 goto l131
Robert Sloan8ff03552017-06-14 12:40:58 -07001255 }
Robert Sloan8542c082018-02-05 09:07:34 -08001256 add(ruleLabelContainingDirective, position132)
Robert Sloan8ff03552017-06-14 12:40:58 -07001257 }
1258 return true
Robert Sloan8542c082018-02-05 09:07:34 -08001259 l131:
1260 position, tokenIndex = position131, tokenIndex131
Robert Sloan8ff03552017-06-14 12:40:58 -07001261 return false
1262 },
Pete Bentley0c61efe2019-08-13 09:32:23 +01001263 /* 11 LabelContainingDirectiveName <- <(('.' ('l' / 'L') ('o' / 'O') ('n' / 'N') ('g' / 'G')) / ('.' ('s' / 'S') ('e' / 'E') ('t' / 'T')) / ('.' '8' ('b' / 'B') ('y' / 'Y') ('t' / 'T') ('e' / 'E')) / ('.' '4' ('b' / 'B') ('y' / 'Y') ('t' / 'T') ('e' / 'E')) / ('.' ('q' / 'Q') ('u' / 'U') ('a' / 'A') ('d' / 'D')) / ('.' ('t' / 'T') ('c' / 'C')) / ('.' ('l' / 'L') ('o' / 'O') ('c' / 'C') ('a' / 'A') ('l' / 'L') ('e' / 'E') ('n' / 'N') ('t' / 'T') ('r' / 'R') ('y' / 'Y')) / ('.' ('s' / 'S') ('i' / 'I') ('z' / 'Z') ('e' / 'E')) / ('.' ('t' / 'T') ('y' / 'Y') ('p' / 'P') ('e' / 'E')) / ('.' ('u' / 'U') ('l' / 'L') ('e' / 'E') ('b' / 'B') '1' '2' '8') / ('.' ('s' / 'S') ('l' / 'L') ('e' / 'E') ('b' / 'B') '1' '2' '8'))> */
Robert Sloan8ff03552017-06-14 12:40:58 -07001264 func() bool {
Robert Sloan8542c082018-02-05 09:07:34 -08001265 position133, tokenIndex133 := position, tokenIndex
Robert Sloan8ff03552017-06-14 12:40:58 -07001266 {
Robert Sloan8542c082018-02-05 09:07:34 -08001267 position134 := position
Robert Sloan8ff03552017-06-14 12:40:58 -07001268 {
Robert Sloan8542c082018-02-05 09:07:34 -08001269 position135, tokenIndex135 := position, tokenIndex
Robert Sloan8ff03552017-06-14 12:40:58 -07001270 if buffer[position] != rune('.') {
Robert Sloan8ff03552017-06-14 12:40:58 -07001271 goto l136
Robert Sloan8ff03552017-06-14 12:40:58 -07001272 }
1273 position++
1274 {
Robert Sloan8542c082018-02-05 09:07:34 -08001275 position137, tokenIndex137 := position, tokenIndex
1276 if buffer[position] != rune('l') {
1277 goto l138
Robert Sloan8ff03552017-06-14 12:40:58 -07001278 }
1279 position++
Robert Sloan8542c082018-02-05 09:07:34 -08001280 goto l137
1281 l138:
1282 position, tokenIndex = position137, tokenIndex137
1283 if buffer[position] != rune('L') {
1284 goto l136
Robert Sloan8ff03552017-06-14 12:40:58 -07001285 }
1286 position++
1287 }
Robert Sloan8542c082018-02-05 09:07:34 -08001288 l137:
Robert Sloan8ff03552017-06-14 12:40:58 -07001289 {
Robert Sloan8542c082018-02-05 09:07:34 -08001290 position139, tokenIndex139 := position, tokenIndex
1291 if buffer[position] != rune('o') {
1292 goto l140
Robert Sloan8ff03552017-06-14 12:40:58 -07001293 }
1294 position++
Robert Sloan8542c082018-02-05 09:07:34 -08001295 goto l139
1296 l140:
1297 position, tokenIndex = position139, tokenIndex139
1298 if buffer[position] != rune('O') {
1299 goto l136
Robert Sloan8ff03552017-06-14 12:40:58 -07001300 }
1301 position++
1302 }
Robert Sloan8542c082018-02-05 09:07:34 -08001303 l139:
Robert Sloan8ff03552017-06-14 12:40:58 -07001304 {
Robert Sloan8542c082018-02-05 09:07:34 -08001305 position141, tokenIndex141 := position, tokenIndex
1306 if buffer[position] != rune('n') {
1307 goto l142
Robert Sloan8ff03552017-06-14 12:40:58 -07001308 }
1309 position++
Robert Sloan8542c082018-02-05 09:07:34 -08001310 goto l141
1311 l142:
1312 position, tokenIndex = position141, tokenIndex141
1313 if buffer[position] != rune('N') {
1314 goto l136
Robert Sloan8ff03552017-06-14 12:40:58 -07001315 }
1316 position++
1317 }
Robert Sloan8542c082018-02-05 09:07:34 -08001318 l141:
1319 {
1320 position143, tokenIndex143 := position, tokenIndex
1321 if buffer[position] != rune('g') {
1322 goto l144
1323 }
1324 position++
1325 goto l143
1326 l144:
1327 position, tokenIndex = position143, tokenIndex143
1328 if buffer[position] != rune('G') {
1329 goto l136
1330 }
1331 position++
1332 }
1333 l143:
1334 goto l135
1335 l136:
1336 position, tokenIndex = position135, tokenIndex135
Robert Sloan8ff03552017-06-14 12:40:58 -07001337 if buffer[position] != rune('.') {
Robert Sloan8542c082018-02-05 09:07:34 -08001338 goto l145
1339 }
1340 position++
1341 {
1342 position146, tokenIndex146 := position, tokenIndex
1343 if buffer[position] != rune('s') {
1344 goto l147
1345 }
1346 position++
1347 goto l146
1348 l147:
1349 position, tokenIndex = position146, tokenIndex146
1350 if buffer[position] != rune('S') {
1351 goto l145
1352 }
1353 position++
1354 }
1355 l146:
1356 {
1357 position148, tokenIndex148 := position, tokenIndex
1358 if buffer[position] != rune('e') {
1359 goto l149
1360 }
1361 position++
1362 goto l148
1363 l149:
1364 position, tokenIndex = position148, tokenIndex148
1365 if buffer[position] != rune('E') {
1366 goto l145
1367 }
1368 position++
1369 }
1370 l148:
1371 {
1372 position150, tokenIndex150 := position, tokenIndex
1373 if buffer[position] != rune('t') {
1374 goto l151
1375 }
1376 position++
1377 goto l150
1378 l151:
1379 position, tokenIndex = position150, tokenIndex150
1380 if buffer[position] != rune('T') {
1381 goto l145
1382 }
1383 position++
1384 }
1385 l150:
1386 goto l135
1387 l145:
1388 position, tokenIndex = position135, tokenIndex135
1389 if buffer[position] != rune('.') {
1390 goto l152
Robert Sloan8ff03552017-06-14 12:40:58 -07001391 }
1392 position++
1393 if buffer[position] != rune('8') {
Robert Sloan8542c082018-02-05 09:07:34 -08001394 goto l152
Robert Sloan8ff03552017-06-14 12:40:58 -07001395 }
1396 position++
1397 {
Robert Sloan8542c082018-02-05 09:07:34 -08001398 position153, tokenIndex153 := position, tokenIndex
Robert Sloan8ff03552017-06-14 12:40:58 -07001399 if buffer[position] != rune('b') {
Robert Sloan8542c082018-02-05 09:07:34 -08001400 goto l154
Robert Sloan8ff03552017-06-14 12:40:58 -07001401 }
1402 position++
Robert Sloan8542c082018-02-05 09:07:34 -08001403 goto l153
1404 l154:
1405 position, tokenIndex = position153, tokenIndex153
Robert Sloan8ff03552017-06-14 12:40:58 -07001406 if buffer[position] != rune('B') {
Robert Sloan8542c082018-02-05 09:07:34 -08001407 goto l152
Robert Sloan8ff03552017-06-14 12:40:58 -07001408 }
1409 position++
1410 }
Robert Sloan8542c082018-02-05 09:07:34 -08001411 l153:
Robert Sloan8ff03552017-06-14 12:40:58 -07001412 {
Robert Sloan8542c082018-02-05 09:07:34 -08001413 position155, tokenIndex155 := position, tokenIndex
Robert Sloan8ff03552017-06-14 12:40:58 -07001414 if buffer[position] != rune('y') {
Robert Sloan8542c082018-02-05 09:07:34 -08001415 goto l156
Robert Sloan8ff03552017-06-14 12:40:58 -07001416 }
1417 position++
Robert Sloan8542c082018-02-05 09:07:34 -08001418 goto l155
1419 l156:
1420 position, tokenIndex = position155, tokenIndex155
Robert Sloan8ff03552017-06-14 12:40:58 -07001421 if buffer[position] != rune('Y') {
Robert Sloan8542c082018-02-05 09:07:34 -08001422 goto l152
Robert Sloan8ff03552017-06-14 12:40:58 -07001423 }
1424 position++
1425 }
Robert Sloan8542c082018-02-05 09:07:34 -08001426 l155:
Robert Sloan8ff03552017-06-14 12:40:58 -07001427 {
Robert Sloan8542c082018-02-05 09:07:34 -08001428 position157, tokenIndex157 := position, tokenIndex
Robert Sloan8ff03552017-06-14 12:40:58 -07001429 if buffer[position] != rune('t') {
Robert Sloan8542c082018-02-05 09:07:34 -08001430 goto l158
Robert Sloan8ff03552017-06-14 12:40:58 -07001431 }
1432 position++
Robert Sloan8542c082018-02-05 09:07:34 -08001433 goto l157
1434 l158:
1435 position, tokenIndex = position157, tokenIndex157
Robert Sloan8ff03552017-06-14 12:40:58 -07001436 if buffer[position] != rune('T') {
Robert Sloan8542c082018-02-05 09:07:34 -08001437 goto l152
Robert Sloan8ff03552017-06-14 12:40:58 -07001438 }
1439 position++
1440 }
Robert Sloan8542c082018-02-05 09:07:34 -08001441 l157:
Robert Sloan8ff03552017-06-14 12:40:58 -07001442 {
Robert Sloan8542c082018-02-05 09:07:34 -08001443 position159, tokenIndex159 := position, tokenIndex
Robert Sloan8ff03552017-06-14 12:40:58 -07001444 if buffer[position] != rune('e') {
Robert Sloan8542c082018-02-05 09:07:34 -08001445 goto l160
Robert Sloan8ff03552017-06-14 12:40:58 -07001446 }
1447 position++
Robert Sloan8542c082018-02-05 09:07:34 -08001448 goto l159
1449 l160:
1450 position, tokenIndex = position159, tokenIndex159
Robert Sloan8ff03552017-06-14 12:40:58 -07001451 if buffer[position] != rune('E') {
Robert Sloan8542c082018-02-05 09:07:34 -08001452 goto l152
Robert Sloan8ff03552017-06-14 12:40:58 -07001453 }
1454 position++
1455 }
Robert Sloan8542c082018-02-05 09:07:34 -08001456 l159:
1457 goto l135
1458 l152:
1459 position, tokenIndex = position135, tokenIndex135
Robert Sloan8ff03552017-06-14 12:40:58 -07001460 if buffer[position] != rune('.') {
Robert Sloan8542c082018-02-05 09:07:34 -08001461 goto l161
Robert Sloan8ff03552017-06-14 12:40:58 -07001462 }
1463 position++
1464 if buffer[position] != rune('4') {
Robert Sloan8ff03552017-06-14 12:40:58 -07001465 goto l161
Robert Sloan8542c082018-02-05 09:07:34 -08001466 }
1467 position++
1468 {
1469 position162, tokenIndex162 := position, tokenIndex
1470 if buffer[position] != rune('b') {
1471 goto l163
1472 }
1473 position++
1474 goto l162
1475 l163:
1476 position, tokenIndex = position162, tokenIndex162
Robert Sloan8ff03552017-06-14 12:40:58 -07001477 if buffer[position] != rune('B') {
Robert Sloan8542c082018-02-05 09:07:34 -08001478 goto l161
Robert Sloan8ff03552017-06-14 12:40:58 -07001479 }
1480 position++
1481 }
Robert Sloan8542c082018-02-05 09:07:34 -08001482 l162:
1483 {
1484 position164, tokenIndex164 := position, tokenIndex
1485 if buffer[position] != rune('y') {
1486 goto l165
1487 }
1488 position++
1489 goto l164
1490 l165:
1491 position, tokenIndex = position164, tokenIndex164
1492 if buffer[position] != rune('Y') {
1493 goto l161
1494 }
1495 position++
1496 }
1497 l164:
1498 {
1499 position166, tokenIndex166 := position, tokenIndex
1500 if buffer[position] != rune('t') {
1501 goto l167
1502 }
1503 position++
1504 goto l166
1505 l167:
1506 position, tokenIndex = position166, tokenIndex166
1507 if buffer[position] != rune('T') {
1508 goto l161
1509 }
1510 position++
1511 }
1512 l166:
1513 {
1514 position168, tokenIndex168 := position, tokenIndex
1515 if buffer[position] != rune('e') {
1516 goto l169
1517 }
1518 position++
1519 goto l168
1520 l169:
1521 position, tokenIndex = position168, tokenIndex168
1522 if buffer[position] != rune('E') {
1523 goto l161
1524 }
1525 position++
1526 }
1527 l168:
1528 goto l135
Robert Sloan8ff03552017-06-14 12:40:58 -07001529 l161:
Robert Sloan8542c082018-02-05 09:07:34 -08001530 position, tokenIndex = position135, tokenIndex135
Robert Sloan8ff03552017-06-14 12:40:58 -07001531 if buffer[position] != rune('.') {
Robert Sloan8ff03552017-06-14 12:40:58 -07001532 goto l170
Robert Sloan8542c082018-02-05 09:07:34 -08001533 }
1534 position++
1535 {
1536 position171, tokenIndex171 := position, tokenIndex
1537 if buffer[position] != rune('q') {
1538 goto l172
1539 }
1540 position++
1541 goto l171
1542 l172:
1543 position, tokenIndex = position171, tokenIndex171
Robert Sloan8ff03552017-06-14 12:40:58 -07001544 if buffer[position] != rune('Q') {
Robert Sloan8542c082018-02-05 09:07:34 -08001545 goto l170
Robert Sloan8ff03552017-06-14 12:40:58 -07001546 }
1547 position++
1548 }
Robert Sloan8542c082018-02-05 09:07:34 -08001549 l171:
Robert Sloan8ff03552017-06-14 12:40:58 -07001550 {
Robert Sloan8542c082018-02-05 09:07:34 -08001551 position173, tokenIndex173 := position, tokenIndex
Robert Sloan8ff03552017-06-14 12:40:58 -07001552 if buffer[position] != rune('u') {
Robert Sloan8542c082018-02-05 09:07:34 -08001553 goto l174
Robert Sloan8ff03552017-06-14 12:40:58 -07001554 }
1555 position++
Robert Sloan8542c082018-02-05 09:07:34 -08001556 goto l173
1557 l174:
1558 position, tokenIndex = position173, tokenIndex173
Robert Sloan8ff03552017-06-14 12:40:58 -07001559 if buffer[position] != rune('U') {
Robert Sloan8542c082018-02-05 09:07:34 -08001560 goto l170
Robert Sloan8ff03552017-06-14 12:40:58 -07001561 }
1562 position++
1563 }
Robert Sloan8542c082018-02-05 09:07:34 -08001564 l173:
Robert Sloan8ff03552017-06-14 12:40:58 -07001565 {
Robert Sloan8542c082018-02-05 09:07:34 -08001566 position175, tokenIndex175 := position, tokenIndex
Robert Sloan8ff03552017-06-14 12:40:58 -07001567 if buffer[position] != rune('a') {
Robert Sloan8542c082018-02-05 09:07:34 -08001568 goto l176
Robert Sloan8ff03552017-06-14 12:40:58 -07001569 }
1570 position++
Robert Sloan8542c082018-02-05 09:07:34 -08001571 goto l175
1572 l176:
1573 position, tokenIndex = position175, tokenIndex175
Robert Sloan8ff03552017-06-14 12:40:58 -07001574 if buffer[position] != rune('A') {
Robert Sloan8542c082018-02-05 09:07:34 -08001575 goto l170
Robert Sloan8ff03552017-06-14 12:40:58 -07001576 }
1577 position++
1578 }
Robert Sloan8542c082018-02-05 09:07:34 -08001579 l175:
Robert Sloan8ff03552017-06-14 12:40:58 -07001580 {
Robert Sloan8542c082018-02-05 09:07:34 -08001581 position177, tokenIndex177 := position, tokenIndex
Robert Sloan8ff03552017-06-14 12:40:58 -07001582 if buffer[position] != rune('d') {
Robert Sloan8542c082018-02-05 09:07:34 -08001583 goto l178
Robert Sloan8ff03552017-06-14 12:40:58 -07001584 }
1585 position++
Robert Sloan8542c082018-02-05 09:07:34 -08001586 goto l177
1587 l178:
1588 position, tokenIndex = position177, tokenIndex177
Robert Sloan8ff03552017-06-14 12:40:58 -07001589 if buffer[position] != rune('D') {
Robert Sloan8542c082018-02-05 09:07:34 -08001590 goto l170
Robert Sloan8ff03552017-06-14 12:40:58 -07001591 }
1592 position++
1593 }
Robert Sloan8542c082018-02-05 09:07:34 -08001594 l177:
1595 goto l135
1596 l170:
1597 position, tokenIndex = position135, tokenIndex135
Robert Sloan8ff03552017-06-14 12:40:58 -07001598 if buffer[position] != rune('.') {
Robert Sloan8ff03552017-06-14 12:40:58 -07001599 goto l179
Robert Sloan8542c082018-02-05 09:07:34 -08001600 }
1601 position++
1602 {
1603 position180, tokenIndex180 := position, tokenIndex
1604 if buffer[position] != rune('t') {
1605 goto l181
1606 }
1607 position++
1608 goto l180
1609 l181:
1610 position, tokenIndex = position180, tokenIndex180
Robert Sloan8ff03552017-06-14 12:40:58 -07001611 if buffer[position] != rune('T') {
Robert Sloan8542c082018-02-05 09:07:34 -08001612 goto l179
Robert Sloan8ff03552017-06-14 12:40:58 -07001613 }
1614 position++
1615 }
Robert Sloan8542c082018-02-05 09:07:34 -08001616 l180:
1617 {
1618 position182, tokenIndex182 := position, tokenIndex
1619 if buffer[position] != rune('c') {
1620 goto l183
1621 }
1622 position++
1623 goto l182
1624 l183:
1625 position, tokenIndex = position182, tokenIndex182
1626 if buffer[position] != rune('C') {
1627 goto l179
1628 }
1629 position++
1630 }
1631 l182:
1632 goto l135
Robert Sloan8ff03552017-06-14 12:40:58 -07001633 l179:
Robert Sloan8542c082018-02-05 09:07:34 -08001634 position, tokenIndex = position135, tokenIndex135
Robert Sloan8ff03552017-06-14 12:40:58 -07001635 if buffer[position] != rune('.') {
Robert Sloan8ff03552017-06-14 12:40:58 -07001636 goto l184
Robert Sloan8ff03552017-06-14 12:40:58 -07001637 }
Robert Sloan8542c082018-02-05 09:07:34 -08001638 position++
Robert Sloan8ff03552017-06-14 12:40:58 -07001639 {
Robert Sloan8542c082018-02-05 09:07:34 -08001640 position185, tokenIndex185 := position, tokenIndex
Robert Sloan8ff03552017-06-14 12:40:58 -07001641 if buffer[position] != rune('l') {
Robert Sloan8542c082018-02-05 09:07:34 -08001642 goto l186
Robert Sloan8ff03552017-06-14 12:40:58 -07001643 }
1644 position++
Robert Sloan8542c082018-02-05 09:07:34 -08001645 goto l185
1646 l186:
1647 position, tokenIndex = position185, tokenIndex185
Robert Sloan8ff03552017-06-14 12:40:58 -07001648 if buffer[position] != rune('L') {
Robert Sloan8542c082018-02-05 09:07:34 -08001649 goto l184
Robert Sloan8ff03552017-06-14 12:40:58 -07001650 }
1651 position++
1652 }
Robert Sloan8542c082018-02-05 09:07:34 -08001653 l185:
Robert Sloan8ff03552017-06-14 12:40:58 -07001654 {
Robert Sloan8542c082018-02-05 09:07:34 -08001655 position187, tokenIndex187 := position, tokenIndex
1656 if buffer[position] != rune('o') {
1657 goto l188
1658 }
1659 position++
1660 goto l187
1661 l188:
1662 position, tokenIndex = position187, tokenIndex187
1663 if buffer[position] != rune('O') {
1664 goto l184
1665 }
1666 position++
1667 }
1668 l187:
1669 {
1670 position189, tokenIndex189 := position, tokenIndex
1671 if buffer[position] != rune('c') {
1672 goto l190
1673 }
1674 position++
1675 goto l189
1676 l190:
1677 position, tokenIndex = position189, tokenIndex189
1678 if buffer[position] != rune('C') {
1679 goto l184
1680 }
1681 position++
1682 }
1683 l189:
1684 {
1685 position191, tokenIndex191 := position, tokenIndex
1686 if buffer[position] != rune('a') {
1687 goto l192
1688 }
1689 position++
1690 goto l191
1691 l192:
1692 position, tokenIndex = position191, tokenIndex191
1693 if buffer[position] != rune('A') {
1694 goto l184
1695 }
1696 position++
1697 }
1698 l191:
1699 {
1700 position193, tokenIndex193 := position, tokenIndex
1701 if buffer[position] != rune('l') {
1702 goto l194
1703 }
1704 position++
1705 goto l193
1706 l194:
1707 position, tokenIndex = position193, tokenIndex193
1708 if buffer[position] != rune('L') {
1709 goto l184
1710 }
1711 position++
1712 }
1713 l193:
1714 {
1715 position195, tokenIndex195 := position, tokenIndex
Robert Sloan8ff03552017-06-14 12:40:58 -07001716 if buffer[position] != rune('e') {
Robert Sloan8542c082018-02-05 09:07:34 -08001717 goto l196
Robert Sloan8ff03552017-06-14 12:40:58 -07001718 }
1719 position++
Robert Sloan8542c082018-02-05 09:07:34 -08001720 goto l195
1721 l196:
1722 position, tokenIndex = position195, tokenIndex195
Robert Sloan8ff03552017-06-14 12:40:58 -07001723 if buffer[position] != rune('E') {
Robert Sloan8542c082018-02-05 09:07:34 -08001724 goto l184
Robert Sloan8ff03552017-06-14 12:40:58 -07001725 }
1726 position++
1727 }
Robert Sloan8542c082018-02-05 09:07:34 -08001728 l195:
Robert Sloan8ff03552017-06-14 12:40:58 -07001729 {
Robert Sloan8542c082018-02-05 09:07:34 -08001730 position197, tokenIndex197 := position, tokenIndex
Robert Sloan8ff03552017-06-14 12:40:58 -07001731 if buffer[position] != rune('n') {
Robert Sloan8542c082018-02-05 09:07:34 -08001732 goto l198
Robert Sloan8ff03552017-06-14 12:40:58 -07001733 }
1734 position++
Robert Sloan8542c082018-02-05 09:07:34 -08001735 goto l197
1736 l198:
1737 position, tokenIndex = position197, tokenIndex197
Robert Sloan8ff03552017-06-14 12:40:58 -07001738 if buffer[position] != rune('N') {
Robert Sloan8542c082018-02-05 09:07:34 -08001739 goto l184
Robert Sloan8ff03552017-06-14 12:40:58 -07001740 }
1741 position++
1742 }
Robert Sloan8542c082018-02-05 09:07:34 -08001743 l197:
Robert Sloan8ff03552017-06-14 12:40:58 -07001744 {
Robert Sloan8542c082018-02-05 09:07:34 -08001745 position199, tokenIndex199 := position, tokenIndex
Robert Sloan8ff03552017-06-14 12:40:58 -07001746 if buffer[position] != rune('t') {
Robert Sloan8542c082018-02-05 09:07:34 -08001747 goto l200
Robert Sloan8ff03552017-06-14 12:40:58 -07001748 }
1749 position++
Robert Sloan8542c082018-02-05 09:07:34 -08001750 goto l199
1751 l200:
1752 position, tokenIndex = position199, tokenIndex199
Robert Sloan8ff03552017-06-14 12:40:58 -07001753 if buffer[position] != rune('T') {
Robert Sloan8542c082018-02-05 09:07:34 -08001754 goto l184
Robert Sloan8ff03552017-06-14 12:40:58 -07001755 }
1756 position++
1757 }
Robert Sloan8542c082018-02-05 09:07:34 -08001758 l199:
Robert Sloan8ff03552017-06-14 12:40:58 -07001759 {
Robert Sloan8542c082018-02-05 09:07:34 -08001760 position201, tokenIndex201 := position, tokenIndex
Robert Sloan8ff03552017-06-14 12:40:58 -07001761 if buffer[position] != rune('r') {
Robert Sloan8542c082018-02-05 09:07:34 -08001762 goto l202
Robert Sloan8ff03552017-06-14 12:40:58 -07001763 }
1764 position++
Robert Sloan8542c082018-02-05 09:07:34 -08001765 goto l201
1766 l202:
1767 position, tokenIndex = position201, tokenIndex201
Robert Sloan8ff03552017-06-14 12:40:58 -07001768 if buffer[position] != rune('R') {
Robert Sloan8542c082018-02-05 09:07:34 -08001769 goto l184
Robert Sloan8ff03552017-06-14 12:40:58 -07001770 }
1771 position++
1772 }
Robert Sloan8542c082018-02-05 09:07:34 -08001773 l201:
Robert Sloan8ff03552017-06-14 12:40:58 -07001774 {
Robert Sloan8542c082018-02-05 09:07:34 -08001775 position203, tokenIndex203 := position, tokenIndex
Robert Sloan8ff03552017-06-14 12:40:58 -07001776 if buffer[position] != rune('y') {
Robert Sloan8542c082018-02-05 09:07:34 -08001777 goto l204
Robert Sloan8ff03552017-06-14 12:40:58 -07001778 }
1779 position++
Robert Sloan8542c082018-02-05 09:07:34 -08001780 goto l203
1781 l204:
1782 position, tokenIndex = position203, tokenIndex203
Robert Sloan8ff03552017-06-14 12:40:58 -07001783 if buffer[position] != rune('Y') {
Robert Sloan8542c082018-02-05 09:07:34 -08001784 goto l184
Robert Sloan8ff03552017-06-14 12:40:58 -07001785 }
1786 position++
1787 }
Robert Sloan8542c082018-02-05 09:07:34 -08001788 l203:
1789 goto l135
1790 l184:
1791 position, tokenIndex = position135, tokenIndex135
Robert Sloan8ff03552017-06-14 12:40:58 -07001792 if buffer[position] != rune('.') {
Robert Sloan8ff03552017-06-14 12:40:58 -07001793 goto l205
Robert Sloan8ff03552017-06-14 12:40:58 -07001794 }
1795 position++
1796 {
Robert Sloan8542c082018-02-05 09:07:34 -08001797 position206, tokenIndex206 := position, tokenIndex
1798 if buffer[position] != rune('s') {
1799 goto l207
Robert Sloan8ff03552017-06-14 12:40:58 -07001800 }
1801 position++
Robert Sloan8542c082018-02-05 09:07:34 -08001802 goto l206
1803 l207:
1804 position, tokenIndex = position206, tokenIndex206
1805 if buffer[position] != rune('S') {
1806 goto l205
Robert Sloan8ff03552017-06-14 12:40:58 -07001807 }
1808 position++
1809 }
Robert Sloan8542c082018-02-05 09:07:34 -08001810 l206:
Robert Sloan8ff03552017-06-14 12:40:58 -07001811 {
Robert Sloan8542c082018-02-05 09:07:34 -08001812 position208, tokenIndex208 := position, tokenIndex
1813 if buffer[position] != rune('i') {
1814 goto l209
Robert Sloan8ff03552017-06-14 12:40:58 -07001815 }
1816 position++
Robert Sloan8542c082018-02-05 09:07:34 -08001817 goto l208
1818 l209:
1819 position, tokenIndex = position208, tokenIndex208
1820 if buffer[position] != rune('I') {
1821 goto l205
Robert Sloan8ff03552017-06-14 12:40:58 -07001822 }
1823 position++
1824 }
Robert Sloan8542c082018-02-05 09:07:34 -08001825 l208:
Robert Sloan8ff03552017-06-14 12:40:58 -07001826 {
Robert Sloan8542c082018-02-05 09:07:34 -08001827 position210, tokenIndex210 := position, tokenIndex
1828 if buffer[position] != rune('z') {
1829 goto l211
Robert Sloan8ff03552017-06-14 12:40:58 -07001830 }
1831 position++
Robert Sloan8542c082018-02-05 09:07:34 -08001832 goto l210
1833 l211:
1834 position, tokenIndex = position210, tokenIndex210
1835 if buffer[position] != rune('Z') {
1836 goto l205
Robert Sloan8ff03552017-06-14 12:40:58 -07001837 }
1838 position++
1839 }
Robert Sloan8542c082018-02-05 09:07:34 -08001840 l210:
Robert Sloan8ff03552017-06-14 12:40:58 -07001841 {
Robert Sloan8542c082018-02-05 09:07:34 -08001842 position212, tokenIndex212 := position, tokenIndex
Robert Sloan8ff03552017-06-14 12:40:58 -07001843 if buffer[position] != rune('e') {
Robert Sloan8542c082018-02-05 09:07:34 -08001844 goto l213
Robert Sloan8ff03552017-06-14 12:40:58 -07001845 }
1846 position++
Robert Sloan8542c082018-02-05 09:07:34 -08001847 goto l212
1848 l213:
1849 position, tokenIndex = position212, tokenIndex212
Robert Sloan8ff03552017-06-14 12:40:58 -07001850 if buffer[position] != rune('E') {
Robert Sloan8542c082018-02-05 09:07:34 -08001851 goto l205
Robert Sloan8ff03552017-06-14 12:40:58 -07001852 }
1853 position++
1854 }
Robert Sloan8542c082018-02-05 09:07:34 -08001855 l212:
1856 goto l135
1857 l205:
1858 position, tokenIndex = position135, tokenIndex135
1859 if buffer[position] != rune('.') {
Pete Bentley0c61efe2019-08-13 09:32:23 +01001860 goto l214
1861 }
1862 position++
1863 {
1864 position215, tokenIndex215 := position, tokenIndex
1865 if buffer[position] != rune('t') {
1866 goto l216
1867 }
1868 position++
1869 goto l215
1870 l216:
1871 position, tokenIndex = position215, tokenIndex215
1872 if buffer[position] != rune('T') {
1873 goto l214
1874 }
1875 position++
1876 }
1877 l215:
1878 {
1879 position217, tokenIndex217 := position, tokenIndex
1880 if buffer[position] != rune('y') {
1881 goto l218
1882 }
1883 position++
1884 goto l217
1885 l218:
1886 position, tokenIndex = position217, tokenIndex217
1887 if buffer[position] != rune('Y') {
1888 goto l214
1889 }
1890 position++
1891 }
1892 l217:
1893 {
1894 position219, tokenIndex219 := position, tokenIndex
1895 if buffer[position] != rune('p') {
1896 goto l220
1897 }
1898 position++
1899 goto l219
1900 l220:
1901 position, tokenIndex = position219, tokenIndex219
1902 if buffer[position] != rune('P') {
1903 goto l214
1904 }
1905 position++
1906 }
1907 l219:
1908 {
1909 position221, tokenIndex221 := position, tokenIndex
1910 if buffer[position] != rune('e') {
1911 goto l222
1912 }
1913 position++
1914 goto l221
1915 l222:
1916 position, tokenIndex = position221, tokenIndex221
1917 if buffer[position] != rune('E') {
1918 goto l214
1919 }
1920 position++
1921 }
1922 l221:
1923 goto l135
1924 l214:
1925 position, tokenIndex = position135, tokenIndex135
1926 if buffer[position] != rune('.') {
1927 goto l223
1928 }
1929 position++
1930 {
1931 position224, tokenIndex224 := position, tokenIndex
1932 if buffer[position] != rune('u') {
1933 goto l225
1934 }
1935 position++
1936 goto l224
1937 l225:
1938 position, tokenIndex = position224, tokenIndex224
1939 if buffer[position] != rune('U') {
1940 goto l223
1941 }
1942 position++
1943 }
1944 l224:
1945 {
1946 position226, tokenIndex226 := position, tokenIndex
1947 if buffer[position] != rune('l') {
1948 goto l227
1949 }
1950 position++
1951 goto l226
1952 l227:
1953 position, tokenIndex = position226, tokenIndex226
1954 if buffer[position] != rune('L') {
1955 goto l223
1956 }
1957 position++
1958 }
1959 l226:
1960 {
1961 position228, tokenIndex228 := position, tokenIndex
1962 if buffer[position] != rune('e') {
1963 goto l229
1964 }
1965 position++
1966 goto l228
1967 l229:
1968 position, tokenIndex = position228, tokenIndex228
1969 if buffer[position] != rune('E') {
1970 goto l223
1971 }
1972 position++
1973 }
1974 l228:
1975 {
1976 position230, tokenIndex230 := position, tokenIndex
1977 if buffer[position] != rune('b') {
1978 goto l231
1979 }
1980 position++
1981 goto l230
1982 l231:
1983 position, tokenIndex = position230, tokenIndex230
1984 if buffer[position] != rune('B') {
1985 goto l223
1986 }
1987 position++
1988 }
1989 l230:
1990 if buffer[position] != rune('1') {
1991 goto l223
1992 }
1993 position++
1994 if buffer[position] != rune('2') {
1995 goto l223
1996 }
1997 position++
1998 if buffer[position] != rune('8') {
1999 goto l223
2000 }
2001 position++
2002 goto l135
2003 l223:
2004 position, tokenIndex = position135, tokenIndex135
2005 if buffer[position] != rune('.') {
Srinivas Paladugudd42a612019-08-09 19:30:39 +00002006 goto l133
Pete Bentleya5c947b2019-08-09 14:24:27 +00002007 }
2008 position++
2009 {
Pete Bentley0c61efe2019-08-13 09:32:23 +01002010 position232, tokenIndex232 := position, tokenIndex
2011 if buffer[position] != rune('s') {
2012 goto l233
Pete Bentleya5c947b2019-08-09 14:24:27 +00002013 }
2014 position++
Pete Bentley0c61efe2019-08-13 09:32:23 +01002015 goto l232
2016 l233:
2017 position, tokenIndex = position232, tokenIndex232
2018 if buffer[position] != rune('S') {
Srinivas Paladugudd42a612019-08-09 19:30:39 +00002019 goto l133
Pete Bentleya5c947b2019-08-09 14:24:27 +00002020 }
2021 position++
2022 }
Pete Bentley0c61efe2019-08-13 09:32:23 +01002023 l232:
Pete Bentleya5c947b2019-08-09 14:24:27 +00002024 {
Pete Bentley0c61efe2019-08-13 09:32:23 +01002025 position234, tokenIndex234 := position, tokenIndex
2026 if buffer[position] != rune('l') {
2027 goto l235
Pete Bentleya5c947b2019-08-09 14:24:27 +00002028 }
2029 position++
Pete Bentley0c61efe2019-08-13 09:32:23 +01002030 goto l234
2031 l235:
2032 position, tokenIndex = position234, tokenIndex234
2033 if buffer[position] != rune('L') {
Pete Bentley228bd622019-08-08 14:53:19 +00002034 goto l133
Pete Bentleyf8d8b732019-08-08 12:52:37 +01002035 }
2036 position++
2037 }
Pete Bentley0c61efe2019-08-13 09:32:23 +01002038 l234:
Pete Bentleyf8d8b732019-08-08 12:52:37 +01002039 {
Pete Bentley0c61efe2019-08-13 09:32:23 +01002040 position236, tokenIndex236 := position, tokenIndex
Robert Sloan8542c082018-02-05 09:07:34 -08002041 if buffer[position] != rune('e') {
Pete Bentley0c61efe2019-08-13 09:32:23 +01002042 goto l237
Robert Sloan8542c082018-02-05 09:07:34 -08002043 }
2044 position++
Pete Bentley0c61efe2019-08-13 09:32:23 +01002045 goto l236
2046 l237:
2047 position, tokenIndex = position236, tokenIndex236
Robert Sloan8542c082018-02-05 09:07:34 -08002048 if buffer[position] != rune('E') {
2049 goto l133
2050 }
2051 position++
2052 }
Pete Bentley0c61efe2019-08-13 09:32:23 +01002053 l236:
2054 {
2055 position238, tokenIndex238 := position, tokenIndex
2056 if buffer[position] != rune('b') {
2057 goto l239
2058 }
2059 position++
2060 goto l238
2061 l239:
2062 position, tokenIndex = position238, tokenIndex238
2063 if buffer[position] != rune('B') {
2064 goto l133
2065 }
2066 position++
2067 }
2068 l238:
2069 if buffer[position] != rune('1') {
2070 goto l133
2071 }
2072 position++
2073 if buffer[position] != rune('2') {
2074 goto l133
2075 }
2076 position++
2077 if buffer[position] != rune('8') {
2078 goto l133
2079 }
2080 position++
Robert Sloan8ff03552017-06-14 12:40:58 -07002081 }
Robert Sloan8542c082018-02-05 09:07:34 -08002082 l135:
2083 add(ruleLabelContainingDirectiveName, position134)
Robert Sloan8ff03552017-06-14 12:40:58 -07002084 }
2085 return true
Robert Sloan8542c082018-02-05 09:07:34 -08002086 l133:
2087 position, tokenIndex = position133, tokenIndex133
Robert Sloan8ff03552017-06-14 12:40:58 -07002088 return false
2089 },
2090 /* 12 SymbolArgs <- <(SymbolArg (WS? ',' WS? SymbolArg)*)> */
2091 func() bool {
Pete Bentley0c61efe2019-08-13 09:32:23 +01002092 position240, tokenIndex240 := position, tokenIndex
Robert Sloan8ff03552017-06-14 12:40:58 -07002093 {
Pete Bentley0c61efe2019-08-13 09:32:23 +01002094 position241 := position
Robert Sloan8ff03552017-06-14 12:40:58 -07002095 if !_rules[ruleSymbolArg]() {
Pete Bentley0c61efe2019-08-13 09:32:23 +01002096 goto l240
Robert Sloan8ff03552017-06-14 12:40:58 -07002097 }
Pete Bentley0c61efe2019-08-13 09:32:23 +01002098 l242:
Robert Sloan8ff03552017-06-14 12:40:58 -07002099 {
Pete Bentley0c61efe2019-08-13 09:32:23 +01002100 position243, tokenIndex243 := position, tokenIndex
Robert Sloan8ff03552017-06-14 12:40:58 -07002101 {
Pete Bentley0c61efe2019-08-13 09:32:23 +01002102 position244, tokenIndex244 := position, tokenIndex
Robert Sloan8ff03552017-06-14 12:40:58 -07002103 if !_rules[ruleWS]() {
Pete Bentley0c61efe2019-08-13 09:32:23 +01002104 goto l244
Robert Sloan8ff03552017-06-14 12:40:58 -07002105 }
Pete Bentley0c61efe2019-08-13 09:32:23 +01002106 goto l245
2107 l244:
2108 position, tokenIndex = position244, tokenIndex244
Robert Sloan8ff03552017-06-14 12:40:58 -07002109 }
Pete Bentley0c61efe2019-08-13 09:32:23 +01002110 l245:
Robert Sloan8ff03552017-06-14 12:40:58 -07002111 if buffer[position] != rune(',') {
Pete Bentley0c61efe2019-08-13 09:32:23 +01002112 goto l243
Robert Sloan8ff03552017-06-14 12:40:58 -07002113 }
2114 position++
2115 {
Pete Bentley0c61efe2019-08-13 09:32:23 +01002116 position246, tokenIndex246 := position, tokenIndex
Robert Sloan8ff03552017-06-14 12:40:58 -07002117 if !_rules[ruleWS]() {
Pete Bentley0c61efe2019-08-13 09:32:23 +01002118 goto l246
Robert Sloan8ff03552017-06-14 12:40:58 -07002119 }
Pete Bentley0c61efe2019-08-13 09:32:23 +01002120 goto l247
2121 l246:
2122 position, tokenIndex = position246, tokenIndex246
Robert Sloan8ff03552017-06-14 12:40:58 -07002123 }
Pete Bentley0c61efe2019-08-13 09:32:23 +01002124 l247:
Robert Sloan8ff03552017-06-14 12:40:58 -07002125 if !_rules[ruleSymbolArg]() {
Pete Bentley0c61efe2019-08-13 09:32:23 +01002126 goto l243
Robert Sloan8ff03552017-06-14 12:40:58 -07002127 }
Pete Bentley0c61efe2019-08-13 09:32:23 +01002128 goto l242
2129 l243:
2130 position, tokenIndex = position243, tokenIndex243
Robert Sloan8ff03552017-06-14 12:40:58 -07002131 }
Pete Bentley0c61efe2019-08-13 09:32:23 +01002132 add(ruleSymbolArgs, position241)
Robert Sloan8ff03552017-06-14 12:40:58 -07002133 }
2134 return true
Pete Bentley0c61efe2019-08-13 09:32:23 +01002135 l240:
2136 position, tokenIndex = position240, tokenIndex240
Robert Sloan8ff03552017-06-14 12:40:58 -07002137 return false
2138 },
2139 /* 13 SymbolArg <- <(Offset / SymbolType / ((Offset / LocalSymbol / SymbolName / Dot) WS? Operator WS? (Offset / LocalSymbol / SymbolName)) / (LocalSymbol TCMarker?) / (SymbolName Offset) / (SymbolName TCMarker?))> */
2140 func() bool {
Pete Bentley0c61efe2019-08-13 09:32:23 +01002141 position248, tokenIndex248 := position, tokenIndex
Robert Sloan8ff03552017-06-14 12:40:58 -07002142 {
Pete Bentley0c61efe2019-08-13 09:32:23 +01002143 position249 := position
Robert Sloan8ff03552017-06-14 12:40:58 -07002144 {
Pete Bentley0c61efe2019-08-13 09:32:23 +01002145 position250, tokenIndex250 := position, tokenIndex
Robert Sloan8ff03552017-06-14 12:40:58 -07002146 if !_rules[ruleOffset]() {
Pete Bentley0c61efe2019-08-13 09:32:23 +01002147 goto l251
Robert Sloan8ff03552017-06-14 12:40:58 -07002148 }
Pete Bentley0c61efe2019-08-13 09:32:23 +01002149 goto l250
2150 l251:
2151 position, tokenIndex = position250, tokenIndex250
Robert Sloan8542c082018-02-05 09:07:34 -08002152 if !_rules[ruleSymbolType]() {
Pete Bentley0c61efe2019-08-13 09:32:23 +01002153 goto l252
Robert Sloan8ff03552017-06-14 12:40:58 -07002154 }
Pete Bentley0c61efe2019-08-13 09:32:23 +01002155 goto l250
2156 l252:
2157 position, tokenIndex = position250, tokenIndex250
Robert Sloan8ff03552017-06-14 12:40:58 -07002158 {
Pete Bentley0c61efe2019-08-13 09:32:23 +01002159 position254, tokenIndex254 := position, tokenIndex
Robert Sloan8ff03552017-06-14 12:40:58 -07002160 if !_rules[ruleOffset]() {
Pete Bentley0c61efe2019-08-13 09:32:23 +01002161 goto l255
Robert Sloan8ff03552017-06-14 12:40:58 -07002162 }
Pete Bentley0c61efe2019-08-13 09:32:23 +01002163 goto l254
2164 l255:
2165 position, tokenIndex = position254, tokenIndex254
Robert Sloan8ff03552017-06-14 12:40:58 -07002166 if !_rules[ruleLocalSymbol]() {
Pete Bentley0c61efe2019-08-13 09:32:23 +01002167 goto l256
Robert Sloan8542c082018-02-05 09:07:34 -08002168 }
Pete Bentley0c61efe2019-08-13 09:32:23 +01002169 goto l254
2170 l256:
2171 position, tokenIndex = position254, tokenIndex254
Robert Sloan8542c082018-02-05 09:07:34 -08002172 if !_rules[ruleSymbolName]() {
Pete Bentley0c61efe2019-08-13 09:32:23 +01002173 goto l257
Robert Sloan8542c082018-02-05 09:07:34 -08002174 }
Pete Bentley0c61efe2019-08-13 09:32:23 +01002175 goto l254
2176 l257:
2177 position, tokenIndex = position254, tokenIndex254
Robert Sloan8542c082018-02-05 09:07:34 -08002178 if !_rules[ruleDot]() {
Pete Bentley0c61efe2019-08-13 09:32:23 +01002179 goto l253
Robert Sloan8542c082018-02-05 09:07:34 -08002180 }
2181 }
Pete Bentley0c61efe2019-08-13 09:32:23 +01002182 l254:
Robert Sloan8542c082018-02-05 09:07:34 -08002183 {
Pete Bentley0c61efe2019-08-13 09:32:23 +01002184 position258, tokenIndex258 := position, tokenIndex
Robert Sloan8542c082018-02-05 09:07:34 -08002185 if !_rules[ruleWS]() {
Pete Bentley0c61efe2019-08-13 09:32:23 +01002186 goto l258
Robert Sloan8542c082018-02-05 09:07:34 -08002187 }
Pete Bentley0c61efe2019-08-13 09:32:23 +01002188 goto l259
2189 l258:
2190 position, tokenIndex = position258, tokenIndex258
Robert Sloan8542c082018-02-05 09:07:34 -08002191 }
Pete Bentley0c61efe2019-08-13 09:32:23 +01002192 l259:
Robert Sloan8542c082018-02-05 09:07:34 -08002193 if !_rules[ruleOperator]() {
Pete Bentley0c61efe2019-08-13 09:32:23 +01002194 goto l253
Robert Sloan8542c082018-02-05 09:07:34 -08002195 }
2196 {
Pete Bentley0c61efe2019-08-13 09:32:23 +01002197 position260, tokenIndex260 := position, tokenIndex
Robert Sloan8542c082018-02-05 09:07:34 -08002198 if !_rules[ruleWS]() {
Pete Bentley0c61efe2019-08-13 09:32:23 +01002199 goto l260
Robert Sloan8ff03552017-06-14 12:40:58 -07002200 }
Pete Bentley0c61efe2019-08-13 09:32:23 +01002201 goto l261
2202 l260:
2203 position, tokenIndex = position260, tokenIndex260
Robert Sloan8ff03552017-06-14 12:40:58 -07002204 }
Pete Bentley0c61efe2019-08-13 09:32:23 +01002205 l261:
Robert Sloan8542c082018-02-05 09:07:34 -08002206 {
Pete Bentley0c61efe2019-08-13 09:32:23 +01002207 position262, tokenIndex262 := position, tokenIndex
Robert Sloan8542c082018-02-05 09:07:34 -08002208 if !_rules[ruleOffset]() {
Pete Bentley0c61efe2019-08-13 09:32:23 +01002209 goto l263
Robert Sloan8542c082018-02-05 09:07:34 -08002210 }
Pete Bentley0c61efe2019-08-13 09:32:23 +01002211 goto l262
2212 l263:
2213 position, tokenIndex = position262, tokenIndex262
Robert Sloan8542c082018-02-05 09:07:34 -08002214 if !_rules[ruleLocalSymbol]() {
Pete Bentley0c61efe2019-08-13 09:32:23 +01002215 goto l264
Robert Sloan8542c082018-02-05 09:07:34 -08002216 }
Pete Bentley0c61efe2019-08-13 09:32:23 +01002217 goto l262
2218 l264:
2219 position, tokenIndex = position262, tokenIndex262
Robert Sloan8542c082018-02-05 09:07:34 -08002220 if !_rules[ruleSymbolName]() {
Pete Bentley0c61efe2019-08-13 09:32:23 +01002221 goto l253
Robert Sloan8542c082018-02-05 09:07:34 -08002222 }
2223 }
Pete Bentley0c61efe2019-08-13 09:32:23 +01002224 l262:
2225 goto l250
2226 l253:
2227 position, tokenIndex = position250, tokenIndex250
Robert Sloan8ff03552017-06-14 12:40:58 -07002228 if !_rules[ruleLocalSymbol]() {
Pete Bentley0c61efe2019-08-13 09:32:23 +01002229 goto l265
Robert Sloan8ff03552017-06-14 12:40:58 -07002230 }
2231 {
Pete Bentley0c61efe2019-08-13 09:32:23 +01002232 position266, tokenIndex266 := position, tokenIndex
Robert Sloan8ff03552017-06-14 12:40:58 -07002233 if !_rules[ruleTCMarker]() {
Pete Bentley0c61efe2019-08-13 09:32:23 +01002234 goto l266
Robert Sloan8ff03552017-06-14 12:40:58 -07002235 }
Pete Bentley0c61efe2019-08-13 09:32:23 +01002236 goto l267
2237 l266:
2238 position, tokenIndex = position266, tokenIndex266
Robert Sloan8542c082018-02-05 09:07:34 -08002239 }
Pete Bentley0c61efe2019-08-13 09:32:23 +01002240 l267:
2241 goto l250
2242 l265:
2243 position, tokenIndex = position250, tokenIndex250
Robert Sloan8542c082018-02-05 09:07:34 -08002244 if !_rules[ruleSymbolName]() {
Pete Bentley0c61efe2019-08-13 09:32:23 +01002245 goto l268
Robert Sloan8ff03552017-06-14 12:40:58 -07002246 }
2247 if !_rules[ruleOffset]() {
Pete Bentley0c61efe2019-08-13 09:32:23 +01002248 goto l268
Robert Sloan8ff03552017-06-14 12:40:58 -07002249 }
Pete Bentley0c61efe2019-08-13 09:32:23 +01002250 goto l250
2251 l268:
2252 position, tokenIndex = position250, tokenIndex250
Robert Sloan8ff03552017-06-14 12:40:58 -07002253 if !_rules[ruleSymbolName]() {
Pete Bentley0c61efe2019-08-13 09:32:23 +01002254 goto l248
Robert Sloan8ff03552017-06-14 12:40:58 -07002255 }
2256 {
Pete Bentley0c61efe2019-08-13 09:32:23 +01002257 position269, tokenIndex269 := position, tokenIndex
Robert Sloan8ff03552017-06-14 12:40:58 -07002258 if !_rules[ruleTCMarker]() {
Pete Bentley0c61efe2019-08-13 09:32:23 +01002259 goto l269
Robert Sloan8ff03552017-06-14 12:40:58 -07002260 }
Pete Bentley0c61efe2019-08-13 09:32:23 +01002261 goto l270
2262 l269:
2263 position, tokenIndex = position269, tokenIndex269
Robert Sloan8ff03552017-06-14 12:40:58 -07002264 }
Pete Bentley0c61efe2019-08-13 09:32:23 +01002265 l270:
Robert Sloan8ff03552017-06-14 12:40:58 -07002266 }
Pete Bentley0c61efe2019-08-13 09:32:23 +01002267 l250:
2268 add(ruleSymbolArg, position249)
Robert Sloan8ff03552017-06-14 12:40:58 -07002269 }
2270 return true
Pete Bentley0c61efe2019-08-13 09:32:23 +01002271 l248:
2272 position, tokenIndex = position248, tokenIndex248
Robert Sloan8ff03552017-06-14 12:40:58 -07002273 return false
2274 },
2275 /* 14 SymbolType <- <(('@' 'f' 'u' 'n' 'c' 't' 'i' 'o' 'n') / ('@' 'o' 'b' 'j' 'e' 'c' 't'))> */
2276 func() bool {
Srinivas Paladugudd42a612019-08-09 19:30:39 +00002277 position271, tokenIndex271 := position, tokenIndex
2278 {
2279 position272 := position
Srinivas Paladugudd42a612019-08-09 19:30:39 +00002280 {
Pete Bentley0c61efe2019-08-13 09:32:23 +01002281 position273, tokenIndex273 := position, tokenIndex
2282 if buffer[position] != rune('@') {
Srinivas Paladugudd42a612019-08-09 19:30:39 +00002283 goto l274
2284 }
Pete Bentley0c61efe2019-08-13 09:32:23 +01002285 position++
2286 if buffer[position] != rune('f') {
2287 goto l274
2288 }
2289 position++
2290 if buffer[position] != rune('u') {
2291 goto l274
2292 }
2293 position++
2294 if buffer[position] != rune('n') {
2295 goto l274
2296 }
2297 position++
2298 if buffer[position] != rune('c') {
2299 goto l274
2300 }
2301 position++
2302 if buffer[position] != rune('t') {
2303 goto l274
2304 }
2305 position++
2306 if buffer[position] != rune('i') {
2307 goto l274
2308 }
2309 position++
2310 if buffer[position] != rune('o') {
2311 goto l274
2312 }
2313 position++
2314 if buffer[position] != rune('n') {
2315 goto l274
2316 }
2317 position++
Srinivas Paladugudd42a612019-08-09 19:30:39 +00002318 goto l273
2319 l274:
Pete Bentley0c61efe2019-08-13 09:32:23 +01002320 position, tokenIndex = position273, tokenIndex273
2321 if buffer[position] != rune('@') {
2322 goto l271
2323 }
2324 position++
2325 if buffer[position] != rune('o') {
2326 goto l271
2327 }
2328 position++
2329 if buffer[position] != rune('b') {
2330 goto l271
2331 }
2332 position++
2333 if buffer[position] != rune('j') {
2334 goto l271
2335 }
2336 position++
2337 if buffer[position] != rune('e') {
2338 goto l271
2339 }
2340 position++
2341 if buffer[position] != rune('c') {
2342 goto l271
2343 }
2344 position++
2345 if buffer[position] != rune('t') {
2346 goto l271
2347 }
2348 position++
Srinivas Paladugudd42a612019-08-09 19:30:39 +00002349 }
Pete Bentley0c61efe2019-08-13 09:32:23 +01002350 l273:
2351 add(ruleSymbolType, position272)
Robert Sloan8ff03552017-06-14 12:40:58 -07002352 }
2353 return true
Robert Sloan8542c082018-02-05 09:07:34 -08002354 l271:
2355 position, tokenIndex = position271, tokenIndex271
Robert Sloan8ff03552017-06-14 12:40:58 -07002356 return false
2357 },
Pete Bentley0c61efe2019-08-13 09:32:23 +01002358 /* 15 Dot <- <'.'> */
Robert Sloan8ff03552017-06-14 12:40:58 -07002359 func() bool {
Pete Bentley0c61efe2019-08-13 09:32:23 +01002360 position275, tokenIndex275 := position, tokenIndex
Robert Sloan8ff03552017-06-14 12:40:58 -07002361 {
Pete Bentley0c61efe2019-08-13 09:32:23 +01002362 position276 := position
2363 if buffer[position] != rune('.') {
2364 goto l275
Robert Sloan8ff03552017-06-14 12:40:58 -07002365 }
2366 position++
Pete Bentley0c61efe2019-08-13 09:32:23 +01002367 add(ruleDot, position276)
Robert Sloan8ff03552017-06-14 12:40:58 -07002368 }
2369 return true
Pete Bentley0c61efe2019-08-13 09:32:23 +01002370 l275:
2371 position, tokenIndex = position275, tokenIndex275
Robert Sloan8ff03552017-06-14 12:40:58 -07002372 return false
2373 },
Pete Bentley0c61efe2019-08-13 09:32:23 +01002374 /* 16 TCMarker <- <('[' 'T' 'C' ']')> */
2375 func() bool {
2376 position277, tokenIndex277 := position, tokenIndex
2377 {
2378 position278 := position
2379 if buffer[position] != rune('[') {
2380 goto l277
2381 }
2382 position++
2383 if buffer[position] != rune('T') {
2384 goto l277
2385 }
2386 position++
2387 if buffer[position] != rune('C') {
2388 goto l277
2389 }
2390 position++
2391 if buffer[position] != rune(']') {
2392 goto l277
2393 }
2394 position++
2395 add(ruleTCMarker, position278)
2396 }
2397 return true
2398 l277:
2399 position, tokenIndex = position277, tokenIndex277
2400 return false
2401 },
2402 /* 17 EscapedChar <- <('\\' .)> */
2403 func() bool {
2404 position279, tokenIndex279 := position, tokenIndex
2405 {
2406 position280 := position
2407 if buffer[position] != rune('\\') {
2408 goto l279
2409 }
2410 position++
2411 if !matchDot() {
2412 goto l279
2413 }
2414 add(ruleEscapedChar, position280)
2415 }
2416 return true
2417 l279:
2418 position, tokenIndex = position279, tokenIndex279
2419 return false
2420 },
2421 /* 18 WS <- <(' ' / '\t')+> */
Robert Sloan8ff03552017-06-14 12:40:58 -07002422 func() bool {
Robert Sloan8542c082018-02-05 09:07:34 -08002423 position281, tokenIndex281 := position, tokenIndex
Robert Sloan8ff03552017-06-14 12:40:58 -07002424 {
Robert Sloan8542c082018-02-05 09:07:34 -08002425 position282 := position
Robert Sloan8ff03552017-06-14 12:40:58 -07002426 {
Pete Bentley0c61efe2019-08-13 09:32:23 +01002427 position285, tokenIndex285 := position, tokenIndex
2428 if buffer[position] != rune(' ') {
Robert Sloan8542c082018-02-05 09:07:34 -08002429 goto l286
2430 }
2431 position++
Pete Bentley0c61efe2019-08-13 09:32:23 +01002432 goto l285
Robert Sloan8542c082018-02-05 09:07:34 -08002433 l286:
Pete Bentley0c61efe2019-08-13 09:32:23 +01002434 position, tokenIndex = position285, tokenIndex285
2435 if buffer[position] != rune('\t') {
Robert Sloan8542c082018-02-05 09:07:34 -08002436 goto l281
Robert Sloan8ff03552017-06-14 12:40:58 -07002437 }
2438 position++
2439 }
Pete Bentley0c61efe2019-08-13 09:32:23 +01002440 l285:
Robert Sloan8542c082018-02-05 09:07:34 -08002441 l283:
Robert Sloan8ff03552017-06-14 12:40:58 -07002442 {
Pete Bentley0c61efe2019-08-13 09:32:23 +01002443 position284, tokenIndex284 := position, tokenIndex
Robert Sloan8ff03552017-06-14 12:40:58 -07002444 {
Pete Bentley0c61efe2019-08-13 09:32:23 +01002445 position287, tokenIndex287 := position, tokenIndex
2446 if buffer[position] != rune(' ') {
Robert Sloan8542c082018-02-05 09:07:34 -08002447 goto l288
Robert Sloan8ff03552017-06-14 12:40:58 -07002448 }
2449 position++
Pete Bentley0c61efe2019-08-13 09:32:23 +01002450 goto l287
2451 l288:
2452 position, tokenIndex = position287, tokenIndex287
2453 if buffer[position] != rune('\t') {
2454 goto l284
2455 }
2456 position++
Robert Sloan8ff03552017-06-14 12:40:58 -07002457 }
Pete Bentley0c61efe2019-08-13 09:32:23 +01002458 l287:
2459 goto l283
2460 l284:
2461 position, tokenIndex = position284, tokenIndex284
Robert Sloan8ff03552017-06-14 12:40:58 -07002462 }
Pete Bentley0c61efe2019-08-13 09:32:23 +01002463 add(ruleWS, position282)
Robert Sloan8ff03552017-06-14 12:40:58 -07002464 }
2465 return true
Robert Sloan8542c082018-02-05 09:07:34 -08002466 l281:
2467 position, tokenIndex = position281, tokenIndex281
Robert Sloan8ff03552017-06-14 12:40:58 -07002468 return false
2469 },
Pete Bentley0c61efe2019-08-13 09:32:23 +01002470 /* 19 Comment <- <('#' (!'\n' .)*)> */
Robert Sloan8ff03552017-06-14 12:40:58 -07002471 func() bool {
Pete Bentley0c61efe2019-08-13 09:32:23 +01002472 position289, tokenIndex289 := position, tokenIndex
Robert Sloan8ff03552017-06-14 12:40:58 -07002473 {
Pete Bentley0c61efe2019-08-13 09:32:23 +01002474 position290 := position
2475 if buffer[position] != rune('#') {
2476 goto l289
Robert Sloan8ff03552017-06-14 12:40:58 -07002477 }
2478 position++
Pete Bentley0c61efe2019-08-13 09:32:23 +01002479 l291:
2480 {
2481 position292, tokenIndex292 := position, tokenIndex
2482 {
2483 position293, tokenIndex293 := position, tokenIndex
2484 if buffer[position] != rune('\n') {
2485 goto l293
2486 }
2487 position++
2488 goto l292
2489 l293:
2490 position, tokenIndex = position293, tokenIndex293
2491 }
2492 if !matchDot() {
2493 goto l292
2494 }
2495 goto l291
2496 l292:
2497 position, tokenIndex = position292, tokenIndex292
2498 }
2499 add(ruleComment, position290)
2500 }
2501 return true
2502 l289:
2503 position, tokenIndex = position289, tokenIndex289
2504 return false
2505 },
2506 /* 20 Label <- <((LocalSymbol / LocalLabel / SymbolName) ':')> */
2507 func() bool {
2508 position294, tokenIndex294 := position, tokenIndex
2509 {
2510 position295 := position
2511 {
2512 position296, tokenIndex296 := position, tokenIndex
2513 if !_rules[ruleLocalSymbol]() {
2514 goto l297
2515 }
2516 goto l296
2517 l297:
2518 position, tokenIndex = position296, tokenIndex296
2519 if !_rules[ruleLocalLabel]() {
2520 goto l298
2521 }
2522 goto l296
2523 l298:
2524 position, tokenIndex = position296, tokenIndex296
2525 if !_rules[ruleSymbolName]() {
2526 goto l294
2527 }
2528 }
2529 l296:
2530 if buffer[position] != rune(':') {
2531 goto l294
Robert Sloan8ff03552017-06-14 12:40:58 -07002532 }
2533 position++
Pete Bentley0c61efe2019-08-13 09:32:23 +01002534 add(ruleLabel, position295)
2535 }
2536 return true
2537 l294:
2538 position, tokenIndex = position294, tokenIndex294
2539 return false
2540 },
2541 /* 21 SymbolName <- <(([a-z] / [A-Z] / '.' / '_') ([a-z] / [A-Z] / '.' / ([0-9] / [0-9]) / '$' / '_')*)> */
2542 func() bool {
2543 position299, tokenIndex299 := position, tokenIndex
2544 {
2545 position300 := position
Robert Sloan8ff03552017-06-14 12:40:58 -07002546 {
Robert Sloan8542c082018-02-05 09:07:34 -08002547 position301, tokenIndex301 := position, tokenIndex
Robert Sloan8ff03552017-06-14 12:40:58 -07002548 if c := buffer[position]; c < rune('a') || c > rune('z') {
Robert Sloan8ff03552017-06-14 12:40:58 -07002549 goto l302
2550 }
2551 position++
Robert Sloan8542c082018-02-05 09:07:34 -08002552 goto l301
Robert Sloan8ff03552017-06-14 12:40:58 -07002553 l302:
Robert Sloan8542c082018-02-05 09:07:34 -08002554 position, tokenIndex = position301, tokenIndex301
2555 if c := buffer[position]; c < rune('A') || c > rune('Z') {
Robert Sloan8ff03552017-06-14 12:40:58 -07002556 goto l303
2557 }
2558 position++
Robert Sloan8542c082018-02-05 09:07:34 -08002559 goto l301
Robert Sloan8ff03552017-06-14 12:40:58 -07002560 l303:
Robert Sloan8542c082018-02-05 09:07:34 -08002561 position, tokenIndex = position301, tokenIndex301
2562 if buffer[position] != rune('.') {
2563 goto l304
Robert Sloan8ff03552017-06-14 12:40:58 -07002564 }
2565 position++
Robert Sloan8542c082018-02-05 09:07:34 -08002566 goto l301
2567 l304:
2568 position, tokenIndex = position301, tokenIndex301
Robert Sloan8ff03552017-06-14 12:40:58 -07002569 if buffer[position] != rune('_') {
Pete Bentley0c61efe2019-08-13 09:32:23 +01002570 goto l299
Robert Sloan8ff03552017-06-14 12:40:58 -07002571 }
2572 position++
2573 }
Robert Sloan8542c082018-02-05 09:07:34 -08002574 l301:
Pete Bentley0c61efe2019-08-13 09:32:23 +01002575 l305:
Robert Sloan8ff03552017-06-14 12:40:58 -07002576 {
Pete Bentley0c61efe2019-08-13 09:32:23 +01002577 position306, tokenIndex306 := position, tokenIndex
Robert Sloan8ff03552017-06-14 12:40:58 -07002578 {
Pete Bentley0c61efe2019-08-13 09:32:23 +01002579 position307, tokenIndex307 := position, tokenIndex
Robert Sloan8ff03552017-06-14 12:40:58 -07002580 if c := buffer[position]; c < rune('a') || c > rune('z') {
Pete Bentley0c61efe2019-08-13 09:32:23 +01002581 goto l308
2582 }
2583 position++
2584 goto l307
2585 l308:
2586 position, tokenIndex = position307, tokenIndex307
2587 if c := buffer[position]; c < rune('A') || c > rune('Z') {
2588 goto l309
2589 }
2590 position++
2591 goto l307
2592 l309:
2593 position, tokenIndex = position307, tokenIndex307
2594 if buffer[position] != rune('.') {
Robert Sloan8ff03552017-06-14 12:40:58 -07002595 goto l310
2596 }
2597 position++
Pete Bentley0c61efe2019-08-13 09:32:23 +01002598 goto l307
Robert Sloan8ff03552017-06-14 12:40:58 -07002599 l310:
Pete Bentley0c61efe2019-08-13 09:32:23 +01002600 position, tokenIndex = position307, tokenIndex307
Robert Sloan8542c082018-02-05 09:07:34 -08002601 {
Pete Bentley0c61efe2019-08-13 09:32:23 +01002602 position312, tokenIndex312 := position, tokenIndex
Robert Sloan8542c082018-02-05 09:07:34 -08002603 if c := buffer[position]; c < rune('0') || c > rune('9') {
2604 goto l313
2605 }
2606 position++
Pete Bentley0c61efe2019-08-13 09:32:23 +01002607 goto l312
2608 l313:
2609 position, tokenIndex = position312, tokenIndex312
2610 if c := buffer[position]; c < rune('0') || c > rune('9') {
2611 goto l311
2612 }
2613 position++
Robert Sloan8542c082018-02-05 09:07:34 -08002614 }
Pete Bentley0c61efe2019-08-13 09:32:23 +01002615 l312:
2616 goto l307
2617 l311:
2618 position, tokenIndex = position307, tokenIndex307
Robert Sloan8542c082018-02-05 09:07:34 -08002619 if buffer[position] != rune('$') {
Pete Bentley0c61efe2019-08-13 09:32:23 +01002620 goto l314
Robert Sloan8542c082018-02-05 09:07:34 -08002621 }
2622 position++
Pete Bentley0c61efe2019-08-13 09:32:23 +01002623 goto l307
2624 l314:
2625 position, tokenIndex = position307, tokenIndex307
Robert Sloan8ff03552017-06-14 12:40:58 -07002626 if buffer[position] != rune('_') {
Pete Bentley0c61efe2019-08-13 09:32:23 +01002627 goto l306
Robert Sloan8ff03552017-06-14 12:40:58 -07002628 }
2629 position++
2630 }
Pete Bentley0c61efe2019-08-13 09:32:23 +01002631 l307:
2632 goto l305
2633 l306:
2634 position, tokenIndex = position306, tokenIndex306
Robert Sloan8ff03552017-06-14 12:40:58 -07002635 }
Pete Bentley0c61efe2019-08-13 09:32:23 +01002636 add(ruleSymbolName, position300)
Robert Sloan8ff03552017-06-14 12:40:58 -07002637 }
2638 return true
Pete Bentley0c61efe2019-08-13 09:32:23 +01002639 l299:
2640 position, tokenIndex = position299, tokenIndex299
Robert Sloan8ff03552017-06-14 12:40:58 -07002641 return false
2642 },
Pete Bentley0c61efe2019-08-13 09:32:23 +01002643 /* 22 LocalSymbol <- <('.' 'L' ([a-z] / [A-Z] / '.' / ([0-9] / [0-9]) / '$' / '_')+)> */
Robert Sloan8ff03552017-06-14 12:40:58 -07002644 func() bool {
Pete Bentley0c61efe2019-08-13 09:32:23 +01002645 position315, tokenIndex315 := position, tokenIndex
Robert Sloan8ff03552017-06-14 12:40:58 -07002646 {
Pete Bentley0c61efe2019-08-13 09:32:23 +01002647 position316 := position
2648 if buffer[position] != rune('.') {
2649 goto l315
Robert Sloan8ff03552017-06-14 12:40:58 -07002650 }
2651 position++
Pete Bentley0c61efe2019-08-13 09:32:23 +01002652 if buffer[position] != rune('L') {
2653 goto l315
2654 }
2655 position++
Robert Sloan8ff03552017-06-14 12:40:58 -07002656 {
Pete Bentley0c61efe2019-08-13 09:32:23 +01002657 position319, tokenIndex319 := position, tokenIndex
2658 if c := buffer[position]; c < rune('a') || c > rune('z') {
2659 goto l320
Robert Sloan8ff03552017-06-14 12:40:58 -07002660 }
Pete Bentley0c61efe2019-08-13 09:32:23 +01002661 position++
Robert Sloan8542c082018-02-05 09:07:34 -08002662 goto l319
Robert Sloan8ff03552017-06-14 12:40:58 -07002663 l320:
Pete Bentley0c61efe2019-08-13 09:32:23 +01002664 position, tokenIndex = position319, tokenIndex319
2665 if c := buffer[position]; c < rune('A') || c > rune('Z') {
2666 goto l321
2667 }
2668 position++
2669 goto l319
2670 l321:
2671 position, tokenIndex = position319, tokenIndex319
2672 if buffer[position] != rune('.') {
2673 goto l322
2674 }
2675 position++
2676 goto l319
2677 l322:
2678 position, tokenIndex = position319, tokenIndex319
2679 {
2680 position324, tokenIndex324 := position, tokenIndex
2681 if c := buffer[position]; c < rune('0') || c > rune('9') {
2682 goto l325
2683 }
2684 position++
2685 goto l324
2686 l325:
2687 position, tokenIndex = position324, tokenIndex324
2688 if c := buffer[position]; c < rune('0') || c > rune('9') {
2689 goto l323
2690 }
2691 position++
2692 }
2693 l324:
2694 goto l319
2695 l323:
2696 position, tokenIndex = position319, tokenIndex319
2697 if buffer[position] != rune('$') {
2698 goto l326
2699 }
2700 position++
2701 goto l319
2702 l326:
2703 position, tokenIndex = position319, tokenIndex319
2704 if buffer[position] != rune('_') {
2705 goto l315
2706 }
2707 position++
Robert Sloan8ff03552017-06-14 12:40:58 -07002708 }
Pete Bentley0c61efe2019-08-13 09:32:23 +01002709 l319:
2710 l317:
Robert Sloan8ff03552017-06-14 12:40:58 -07002711 {
Pete Bentley0c61efe2019-08-13 09:32:23 +01002712 position318, tokenIndex318 := position, tokenIndex
Robert Sloan8ff03552017-06-14 12:40:58 -07002713 {
Robert Sloan8542c082018-02-05 09:07:34 -08002714 position327, tokenIndex327 := position, tokenIndex
Pete Bentley0c61efe2019-08-13 09:32:23 +01002715 if c := buffer[position]; c < rune('a') || c > rune('z') {
Robert Sloan8542c082018-02-05 09:07:34 -08002716 goto l328
Robert Sloan8ff03552017-06-14 12:40:58 -07002717 }
2718 position++
Robert Sloan8542c082018-02-05 09:07:34 -08002719 goto l327
2720 l328:
2721 position, tokenIndex = position327, tokenIndex327
Pete Bentley0c61efe2019-08-13 09:32:23 +01002722 if c := buffer[position]; c < rune('A') || c > rune('Z') {
2723 goto l329
2724 }
2725 position++
2726 goto l327
2727 l329:
2728 position, tokenIndex = position327, tokenIndex327
2729 if buffer[position] != rune('.') {
2730 goto l330
2731 }
2732 position++
2733 goto l327
2734 l330:
2735 position, tokenIndex = position327, tokenIndex327
2736 {
2737 position332, tokenIndex332 := position, tokenIndex
2738 if c := buffer[position]; c < rune('0') || c > rune('9') {
2739 goto l333
2740 }
2741 position++
2742 goto l332
2743 l333:
2744 position, tokenIndex = position332, tokenIndex332
2745 if c := buffer[position]; c < rune('0') || c > rune('9') {
2746 goto l331
2747 }
2748 position++
2749 }
2750 l332:
2751 goto l327
2752 l331:
2753 position, tokenIndex = position327, tokenIndex327
Robert Sloan8ff03552017-06-14 12:40:58 -07002754 if buffer[position] != rune('$') {
Pete Bentley0c61efe2019-08-13 09:32:23 +01002755 goto l334
2756 }
2757 position++
2758 goto l327
2759 l334:
2760 position, tokenIndex = position327, tokenIndex327
2761 if buffer[position] != rune('_') {
2762 goto l318
Robert Sloan8ff03552017-06-14 12:40:58 -07002763 }
2764 position++
2765 }
Robert Sloan8542c082018-02-05 09:07:34 -08002766 l327:
Pete Bentley0c61efe2019-08-13 09:32:23 +01002767 goto l317
2768 l318:
2769 position, tokenIndex = position318, tokenIndex318
Robert Sloan8ff03552017-06-14 12:40:58 -07002770 }
Pete Bentley0c61efe2019-08-13 09:32:23 +01002771 add(ruleLocalSymbol, position316)
Pete Bentley228bd622019-08-08 14:53:19 +00002772 }
2773 return true
Pete Bentley0c61efe2019-08-13 09:32:23 +01002774 l315:
2775 position, tokenIndex = position315, tokenIndex315
Pete Bentley228bd622019-08-08 14:53:19 +00002776 return false
2777 },
Pete Bentley0c61efe2019-08-13 09:32:23 +01002778 /* 23 LocalLabel <- <([0-9] ([0-9] / '$')*)> */
Srinivas Paladugudd42a612019-08-09 19:30:39 +00002779 func() bool {
Pete Bentley0c61efe2019-08-13 09:32:23 +01002780 position335, tokenIndex335 := position, tokenIndex
Srinivas Paladugudd42a612019-08-09 19:30:39 +00002781 {
Pete Bentley0c61efe2019-08-13 09:32:23 +01002782 position336 := position
2783 if c := buffer[position]; c < rune('0') || c > rune('9') {
2784 goto l335
Srinivas Paladugudd42a612019-08-09 19:30:39 +00002785 }
Pete Bentley0c61efe2019-08-13 09:32:23 +01002786 position++
2787 l337:
Srinivas Paladugudd42a612019-08-09 19:30:39 +00002788 {
Pete Bentley0c61efe2019-08-13 09:32:23 +01002789 position338, tokenIndex338 := position, tokenIndex
Srinivas Paladugudd42a612019-08-09 19:30:39 +00002790 {
Pete Bentley0c61efe2019-08-13 09:32:23 +01002791 position339, tokenIndex339 := position, tokenIndex
2792 if c := buffer[position]; c < rune('0') || c > rune('9') {
2793 goto l340
Srinivas Paladugudd42a612019-08-09 19:30:39 +00002794 }
2795 position++
Pete Bentley0c61efe2019-08-13 09:32:23 +01002796 goto l339
Srinivas Paladugudd42a612019-08-09 19:30:39 +00002797 l340:
Pete Bentley0c61efe2019-08-13 09:32:23 +01002798 position, tokenIndex = position339, tokenIndex339
2799 if buffer[position] != rune('$') {
2800 goto l338
Srinivas Paladugudd42a612019-08-09 19:30:39 +00002801 }
Pete Bentley0c61efe2019-08-13 09:32:23 +01002802 position++
Srinivas Paladugudd42a612019-08-09 19:30:39 +00002803 }
Pete Bentley0c61efe2019-08-13 09:32:23 +01002804 l339:
2805 goto l337
2806 l338:
2807 position, tokenIndex = position338, tokenIndex338
Srinivas Paladugudd42a612019-08-09 19:30:39 +00002808 }
Pete Bentley0c61efe2019-08-13 09:32:23 +01002809 add(ruleLocalLabel, position336)
Srinivas Paladugudd42a612019-08-09 19:30:39 +00002810 }
2811 return true
Pete Bentley0c61efe2019-08-13 09:32:23 +01002812 l335:
2813 position, tokenIndex = position335, tokenIndex335
Srinivas Paladugudd42a612019-08-09 19:30:39 +00002814 return false
2815 },
Pete Bentley0c61efe2019-08-13 09:32:23 +01002816 /* 24 LocalLabelRef <- <([0-9] ([0-9] / '$')* ('b' / 'f'))> */
Robert Sloan8ff03552017-06-14 12:40:58 -07002817 func() bool {
Robert Sloan5bdaadb2018-10-30 16:00:26 -07002818 position341, tokenIndex341 := position, tokenIndex
Robert Sloan8ff03552017-06-14 12:40:58 -07002819 {
Robert Sloan5bdaadb2018-10-30 16:00:26 -07002820 position342 := position
Pete Bentley0c61efe2019-08-13 09:32:23 +01002821 if c := buffer[position]; c < rune('0') || c > rune('9') {
2822 goto l341
2823 }
2824 position++
2825 l343:
Robert Sloan8ff03552017-06-14 12:40:58 -07002826 {
Pete Bentley0c61efe2019-08-13 09:32:23 +01002827 position344, tokenIndex344 := position, tokenIndex
2828 {
2829 position345, tokenIndex345 := position, tokenIndex
2830 if c := buffer[position]; c < rune('0') || c > rune('9') {
2831 goto l346
2832 }
2833 position++
2834 goto l345
2835 l346:
2836 position, tokenIndex = position345, tokenIndex345
2837 if buffer[position] != rune('$') {
2838 goto l344
2839 }
2840 position++
Pete Bentleya5c947b2019-08-09 14:24:27 +00002841 }
Pete Bentley0c61efe2019-08-13 09:32:23 +01002842 l345:
Srinivas Paladugudd42a612019-08-09 19:30:39 +00002843 goto l343
2844 l344:
Pete Bentley0c61efe2019-08-13 09:32:23 +01002845 position, tokenIndex = position344, tokenIndex344
2846 }
2847 {
2848 position347, tokenIndex347 := position, tokenIndex
2849 if buffer[position] != rune('b') {
2850 goto l348
2851 }
2852 position++
2853 goto l347
2854 l348:
2855 position, tokenIndex = position347, tokenIndex347
2856 if buffer[position] != rune('f') {
Robert Sloan5bdaadb2018-10-30 16:00:26 -07002857 goto l341
Robert Sloan8ff03552017-06-14 12:40:58 -07002858 }
2859 position++
2860 }
Pete Bentley0c61efe2019-08-13 09:32:23 +01002861 l347:
2862 add(ruleLocalLabelRef, position342)
Robert Sloan8ff03552017-06-14 12:40:58 -07002863 }
2864 return true
Robert Sloan5bdaadb2018-10-30 16:00:26 -07002865 l341:
2866 position, tokenIndex = position341, tokenIndex341
Robert Sloan8ff03552017-06-14 12:40:58 -07002867 return false
2868 },
Pete Bentley0c61efe2019-08-13 09:32:23 +01002869 /* 25 Instruction <- <(InstructionName (WS InstructionArg (WS? ',' WS? InstructionArg)*)?)> */
Robert Sloan8ff03552017-06-14 12:40:58 -07002870 func() bool {
Pete Bentley0c61efe2019-08-13 09:32:23 +01002871 position349, tokenIndex349 := position, tokenIndex
Robert Sloan8ff03552017-06-14 12:40:58 -07002872 {
Pete Bentley0c61efe2019-08-13 09:32:23 +01002873 position350 := position
2874 if !_rules[ruleInstructionName]() {
2875 goto l349
Pete Bentleya5c947b2019-08-09 14:24:27 +00002876 }
Pete Bentley0c61efe2019-08-13 09:32:23 +01002877 {
2878 position351, tokenIndex351 := position, tokenIndex
2879 if !_rules[ruleWS]() {
2880 goto l351
2881 }
2882 if !_rules[ruleInstructionArg]() {
2883 goto l351
2884 }
2885 l353:
2886 {
2887 position354, tokenIndex354 := position, tokenIndex
2888 {
2889 position355, tokenIndex355 := position, tokenIndex
2890 if !_rules[ruleWS]() {
2891 goto l355
2892 }
2893 goto l356
2894 l355:
2895 position, tokenIndex = position355, tokenIndex355
2896 }
2897 l356:
2898 if buffer[position] != rune(',') {
2899 goto l354
2900 }
2901 position++
2902 {
2903 position357, tokenIndex357 := position, tokenIndex
2904 if !_rules[ruleWS]() {
2905 goto l357
2906 }
2907 goto l358
2908 l357:
2909 position, tokenIndex = position357, tokenIndex357
2910 }
2911 l358:
2912 if !_rules[ruleInstructionArg]() {
2913 goto l354
2914 }
2915 goto l353
2916 l354:
2917 position, tokenIndex = position354, tokenIndex354
2918 }
2919 goto l352
2920 l351:
2921 position, tokenIndex = position351, tokenIndex351
2922 }
2923 l352:
2924 add(ruleInstruction, position350)
2925 }
2926 return true
2927 l349:
2928 position, tokenIndex = position349, tokenIndex349
2929 return false
2930 },
2931 /* 26 InstructionName <- <(([a-z] / [A-Z]) ([a-z] / [A-Z] / ([0-9] / [0-9]))* ('.' / '+' / '-')?)> */
2932 func() bool {
2933 position359, tokenIndex359 := position, tokenIndex
2934 {
2935 position360 := position
Robert Sloan5bdaadb2018-10-30 16:00:26 -07002936 {
2937 position361, tokenIndex361 := position, tokenIndex
Pete Bentley0c61efe2019-08-13 09:32:23 +01002938 if c := buffer[position]; c < rune('a') || c > rune('z') {
Robert Sloan5bdaadb2018-10-30 16:00:26 -07002939 goto l362
2940 }
Pete Bentley0c61efe2019-08-13 09:32:23 +01002941 position++
Robert Sloan5bdaadb2018-10-30 16:00:26 -07002942 goto l361
2943 l362:
2944 position, tokenIndex = position361, tokenIndex361
Pete Bentley0c61efe2019-08-13 09:32:23 +01002945 if c := buffer[position]; c < rune('A') || c > rune('Z') {
2946 goto l359
Robert Sloan978112c2018-01-22 12:53:01 -08002947 }
Pete Bentley0c61efe2019-08-13 09:32:23 +01002948 position++
Robert Sloan5bdaadb2018-10-30 16:00:26 -07002949 }
2950 l361:
Pete Bentley0c61efe2019-08-13 09:32:23 +01002951 l363:
Robert Sloan5bdaadb2018-10-30 16:00:26 -07002952 {
Pete Bentley0c61efe2019-08-13 09:32:23 +01002953 position364, tokenIndex364 := position, tokenIndex
2954 {
2955 position365, tokenIndex365 := position, tokenIndex
2956 if c := buffer[position]; c < rune('a') || c > rune('z') {
2957 goto l366
2958 }
2959 position++
2960 goto l365
2961 l366:
2962 position, tokenIndex = position365, tokenIndex365
2963 if c := buffer[position]; c < rune('A') || c > rune('Z') {
2964 goto l367
2965 }
2966 position++
2967 goto l365
2968 l367:
2969 position, tokenIndex = position365, tokenIndex365
2970 {
2971 position368, tokenIndex368 := position, tokenIndex
2972 if c := buffer[position]; c < rune('0') || c > rune('9') {
2973 goto l369
2974 }
2975 position++
2976 goto l368
2977 l369:
2978 position, tokenIndex = position368, tokenIndex368
2979 if c := buffer[position]; c < rune('0') || c > rune('9') {
2980 goto l364
2981 }
2982 position++
2983 }
2984 l368:
Robert Sloan8542c082018-02-05 09:07:34 -08002985 }
Pete Bentley0c61efe2019-08-13 09:32:23 +01002986 l365:
2987 goto l363
2988 l364:
2989 position, tokenIndex = position364, tokenIndex364
Robert Sloan8542c082018-02-05 09:07:34 -08002990 }
Robert Sloan5bdaadb2018-10-30 16:00:26 -07002991 {
2992 position370, tokenIndex370 := position, tokenIndex
Pete Bentley0c61efe2019-08-13 09:32:23 +01002993 {
2994 position372, tokenIndex372 := position, tokenIndex
2995 if buffer[position] != rune('.') {
2996 goto l373
2997 }
2998 position++
2999 goto l372
3000 l373:
3001 position, tokenIndex = position372, tokenIndex372
3002 if buffer[position] != rune('+') {
3003 goto l374
3004 }
3005 position++
3006 goto l372
3007 l374:
3008 position, tokenIndex = position372, tokenIndex372
3009 if buffer[position] != rune('-') {
3010 goto l370
3011 }
3012 position++
Robert Sloan5bdaadb2018-10-30 16:00:26 -07003013 }
Pete Bentley0c61efe2019-08-13 09:32:23 +01003014 l372:
Robert Sloan5bdaadb2018-10-30 16:00:26 -07003015 goto l371
3016 l370:
3017 position, tokenIndex = position370, tokenIndex370
Robert Sloan8ff03552017-06-14 12:40:58 -07003018 }
Robert Sloan5bdaadb2018-10-30 16:00:26 -07003019 l371:
Pete Bentley0c61efe2019-08-13 09:32:23 +01003020 add(ruleInstructionName, position360)
Pete Bentleya5c947b2019-08-09 14:24:27 +00003021 }
3022 return true
Pete Bentley0c61efe2019-08-13 09:32:23 +01003023 l359:
3024 position, tokenIndex = position359, tokenIndex359
3025 return false
3026 },
3027 /* 27 InstructionArg <- <(IndirectionIndicator? (RegisterOrConstant / LocalLabelRef / TOCRefHigh / TOCRefLow / MemoryRef) AVX512Token*)> */
3028 func() bool {
3029 position375, tokenIndex375 := position, tokenIndex
3030 {
3031 position376 := position
3032 {
3033 position377, tokenIndex377 := position, tokenIndex
3034 if !_rules[ruleIndirectionIndicator]() {
3035 goto l377
3036 }
3037 goto l378
3038 l377:
3039 position, tokenIndex = position377, tokenIndex377
3040 }
3041 l378:
3042 {
3043 position379, tokenIndex379 := position, tokenIndex
3044 if !_rules[ruleRegisterOrConstant]() {
3045 goto l380
3046 }
3047 goto l379
3048 l380:
3049 position, tokenIndex = position379, tokenIndex379
3050 if !_rules[ruleLocalLabelRef]() {
3051 goto l381
3052 }
3053 goto l379
3054 l381:
3055 position, tokenIndex = position379, tokenIndex379
3056 if !_rules[ruleTOCRefHigh]() {
3057 goto l382
3058 }
3059 goto l379
3060 l382:
3061 position, tokenIndex = position379, tokenIndex379
3062 if !_rules[ruleTOCRefLow]() {
3063 goto l383
3064 }
3065 goto l379
3066 l383:
3067 position, tokenIndex = position379, tokenIndex379
3068 if !_rules[ruleMemoryRef]() {
3069 goto l375
3070 }
3071 }
3072 l379:
3073 l384:
3074 {
3075 position385, tokenIndex385 := position, tokenIndex
3076 if !_rules[ruleAVX512Token]() {
3077 goto l385
3078 }
3079 goto l384
3080 l385:
3081 position, tokenIndex = position385, tokenIndex385
3082 }
3083 add(ruleInstructionArg, position376)
3084 }
3085 return true
3086 l375:
3087 position, tokenIndex = position375, tokenIndex375
3088 return false
3089 },
3090 /* 28 AVX512Token <- <(WS? '{' '%'? ([0-9] / [a-z])* '}')> */
3091 func() bool {
3092 position386, tokenIndex386 := position, tokenIndex
3093 {
3094 position387 := position
3095 {
3096 position388, tokenIndex388 := position, tokenIndex
3097 if !_rules[ruleWS]() {
3098 goto l388
3099 }
3100 goto l389
3101 l388:
3102 position, tokenIndex = position388, tokenIndex388
3103 }
3104 l389:
3105 if buffer[position] != rune('{') {
3106 goto l386
3107 }
3108 position++
3109 {
3110 position390, tokenIndex390 := position, tokenIndex
3111 if buffer[position] != rune('%') {
3112 goto l390
3113 }
3114 position++
3115 goto l391
3116 l390:
3117 position, tokenIndex = position390, tokenIndex390
3118 }
3119 l391:
3120 l392:
3121 {
3122 position393, tokenIndex393 := position, tokenIndex
3123 {
3124 position394, tokenIndex394 := position, tokenIndex
3125 if c := buffer[position]; c < rune('0') || c > rune('9') {
3126 goto l395
3127 }
3128 position++
3129 goto l394
3130 l395:
3131 position, tokenIndex = position394, tokenIndex394
3132 if c := buffer[position]; c < rune('a') || c > rune('z') {
3133 goto l393
3134 }
3135 position++
3136 }
3137 l394:
3138 goto l392
3139 l393:
3140 position, tokenIndex = position393, tokenIndex393
3141 }
3142 if buffer[position] != rune('}') {
3143 goto l386
3144 }
3145 position++
3146 add(ruleAVX512Token, position387)
3147 }
3148 return true
3149 l386:
3150 position, tokenIndex = position386, tokenIndex386
Robert Sloan978112c2018-01-22 12:53:01 -08003151 return false
3152 },
Robert Sloan5bdaadb2018-10-30 16:00:26 -07003153 /* 29 TOCRefHigh <- <('.' 'T' 'O' 'C' '.' '-' (('0' 'b') / ('.' 'L' ([a-z] / [A-Z] / '_' / [0-9])+)) ('@' ('h' / 'H') ('a' / 'A')))> */
Robert Sloan978112c2018-01-22 12:53:01 -08003154 func() bool {
Robert Sloan5bdaadb2018-10-30 16:00:26 -07003155 position396, tokenIndex396 := position, tokenIndex
3156 {
3157 position397 := position
3158 if buffer[position] != rune('.') {
3159 goto l396
3160 }
3161 position++
3162 if buffer[position] != rune('T') {
3163 goto l396
3164 }
3165 position++
3166 if buffer[position] != rune('O') {
3167 goto l396
3168 }
3169 position++
3170 if buffer[position] != rune('C') {
3171 goto l396
3172 }
3173 position++
3174 if buffer[position] != rune('.') {
3175 goto l396
3176 }
3177 position++
3178 if buffer[position] != rune('-') {
3179 goto l396
3180 }
3181 position++
3182 {
3183 position398, tokenIndex398 := position, tokenIndex
3184 if buffer[position] != rune('0') {
3185 goto l399
3186 }
3187 position++
3188 if buffer[position] != rune('b') {
3189 goto l399
3190 }
3191 position++
3192 goto l398
3193 l399:
3194 position, tokenIndex = position398, tokenIndex398
3195 if buffer[position] != rune('.') {
3196 goto l396
3197 }
3198 position++
3199 if buffer[position] != rune('L') {
3200 goto l396
3201 }
3202 position++
3203 {
3204 position402, tokenIndex402 := position, tokenIndex
3205 if c := buffer[position]; c < rune('a') || c > rune('z') {
3206 goto l403
3207 }
3208 position++
3209 goto l402
3210 l403:
3211 position, tokenIndex = position402, tokenIndex402
3212 if c := buffer[position]; c < rune('A') || c > rune('Z') {
3213 goto l404
3214 }
3215 position++
3216 goto l402
3217 l404:
3218 position, tokenIndex = position402, tokenIndex402
3219 if buffer[position] != rune('_') {
3220 goto l405
3221 }
3222 position++
3223 goto l402
3224 l405:
3225 position, tokenIndex = position402, tokenIndex402
3226 if c := buffer[position]; c < rune('0') || c > rune('9') {
Robert Sloan978112c2018-01-22 12:53:01 -08003227 goto l396
3228 }
3229 position++
Robert Sloan978112c2018-01-22 12:53:01 -08003230 }
Robert Sloan5bdaadb2018-10-30 16:00:26 -07003231 l402:
3232 l400:
Robert Sloan978112c2018-01-22 12:53:01 -08003233 {
Robert Sloan5bdaadb2018-10-30 16:00:26 -07003234 position401, tokenIndex401 := position, tokenIndex
Robert Sloan978112c2018-01-22 12:53:01 -08003235 {
Robert Sloan5bdaadb2018-10-30 16:00:26 -07003236 position406, tokenIndex406 := position, tokenIndex
Robert Sloan978112c2018-01-22 12:53:01 -08003237 if c := buffer[position]; c < rune('a') || c > rune('z') {
Robert Sloan5bdaadb2018-10-30 16:00:26 -07003238 goto l407
Robert Sloan978112c2018-01-22 12:53:01 -08003239 }
3240 position++
Robert Sloan5bdaadb2018-10-30 16:00:26 -07003241 goto l406
3242 l407:
3243 position, tokenIndex = position406, tokenIndex406
Robert Sloan8542c082018-02-05 09:07:34 -08003244 if c := buffer[position]; c < rune('A') || c > rune('Z') {
Robert Sloan5bdaadb2018-10-30 16:00:26 -07003245 goto l408
Robert Sloan978112c2018-01-22 12:53:01 -08003246 }
3247 position++
Robert Sloan5bdaadb2018-10-30 16:00:26 -07003248 goto l406
3249 l408:
3250 position, tokenIndex = position406, tokenIndex406
Robert Sloan8542c082018-02-05 09:07:34 -08003251 if buffer[position] != rune('_') {
Robert Sloan5bdaadb2018-10-30 16:00:26 -07003252 goto l409
3253 }
3254 position++
3255 goto l406
3256 l409:
3257 position, tokenIndex = position406, tokenIndex406
3258 if c := buffer[position]; c < rune('0') || c > rune('9') {
Robert Sloan8542c082018-02-05 09:07:34 -08003259 goto l401
3260 }
3261 position++
Robert Sloan978112c2018-01-22 12:53:01 -08003262 }
Robert Sloan5bdaadb2018-10-30 16:00:26 -07003263 l406:
3264 goto l400
3265 l401:
3266 position, tokenIndex = position401, tokenIndex401
Robert Sloan978112c2018-01-22 12:53:01 -08003267 }
3268 }
Robert Sloan5bdaadb2018-10-30 16:00:26 -07003269 l398:
Robert Sloan978112c2018-01-22 12:53:01 -08003270 if buffer[position] != rune('@') {
Robert Sloan5bdaadb2018-10-30 16:00:26 -07003271 goto l396
Robert Sloan978112c2018-01-22 12:53:01 -08003272 }
3273 position++
3274 {
Robert Sloan5bdaadb2018-10-30 16:00:26 -07003275 position410, tokenIndex410 := position, tokenIndex
Pete Bentley0c61efe2019-08-13 09:32:23 +01003276 if buffer[position] != rune('h') {
Robert Sloan5bdaadb2018-10-30 16:00:26 -07003277 goto l411
Robert Sloan978112c2018-01-22 12:53:01 -08003278 }
3279 position++
Robert Sloan5bdaadb2018-10-30 16:00:26 -07003280 goto l410
3281 l411:
3282 position, tokenIndex = position410, tokenIndex410
Pete Bentley0c61efe2019-08-13 09:32:23 +01003283 if buffer[position] != rune('H') {
Robert Sloan5bdaadb2018-10-30 16:00:26 -07003284 goto l396
Robert Sloan8ff03552017-06-14 12:40:58 -07003285 }
3286 position++
3287 }
Robert Sloan5bdaadb2018-10-30 16:00:26 -07003288 l410:
Pete Bentley0c61efe2019-08-13 09:32:23 +01003289 {
3290 position412, tokenIndex412 := position, tokenIndex
3291 if buffer[position] != rune('a') {
3292 goto l413
3293 }
3294 position++
3295 goto l412
3296 l413:
3297 position, tokenIndex = position412, tokenIndex412
3298 if buffer[position] != rune('A') {
3299 goto l396
3300 }
3301 position++
3302 }
3303 l412:
3304 add(ruleTOCRefHigh, position397)
Robert Sloan8ff03552017-06-14 12:40:58 -07003305 }
3306 return true
Robert Sloan5bdaadb2018-10-30 16:00:26 -07003307 l396:
3308 position, tokenIndex = position396, tokenIndex396
Robert Sloan8ff03552017-06-14 12:40:58 -07003309 return false
3310 },
Pete Bentley0c61efe2019-08-13 09:32:23 +01003311 /* 30 TOCRefLow <- <('.' 'T' 'O' 'C' '.' '-' (('0' 'b') / ('.' 'L' ([a-z] / [A-Z] / '_' / [0-9])+)) ('@' ('l' / 'L')))> */
Robert Sloan8ff03552017-06-14 12:40:58 -07003312 func() bool {
Robert Sloan5bdaadb2018-10-30 16:00:26 -07003313 position414, tokenIndex414 := position, tokenIndex
Robert Sloan8ff03552017-06-14 12:40:58 -07003314 {
Robert Sloan5bdaadb2018-10-30 16:00:26 -07003315 position415 := position
Pete Bentley0c61efe2019-08-13 09:32:23 +01003316 if buffer[position] != rune('.') {
3317 goto l414
3318 }
3319 position++
3320 if buffer[position] != rune('T') {
3321 goto l414
3322 }
3323 position++
3324 if buffer[position] != rune('O') {
3325 goto l414
3326 }
3327 position++
3328 if buffer[position] != rune('C') {
3329 goto l414
3330 }
3331 position++
3332 if buffer[position] != rune('.') {
3333 goto l414
3334 }
3335 position++
3336 if buffer[position] != rune('-') {
3337 goto l414
3338 }
3339 position++
Robert Sloan8ff03552017-06-14 12:40:58 -07003340 {
Robert Sloan5bdaadb2018-10-30 16:00:26 -07003341 position416, tokenIndex416 := position, tokenIndex
Pete Bentley0c61efe2019-08-13 09:32:23 +01003342 if buffer[position] != rune('0') {
Robert Sloan5bdaadb2018-10-30 16:00:26 -07003343 goto l417
Robert Sloan8ff03552017-06-14 12:40:58 -07003344 }
3345 position++
Pete Bentley0c61efe2019-08-13 09:32:23 +01003346 if buffer[position] != rune('b') {
3347 goto l417
Robert Sloan978112c2018-01-22 12:53:01 -08003348 }
Pete Bentley0c61efe2019-08-13 09:32:23 +01003349 position++
Robert Sloan5bdaadb2018-10-30 16:00:26 -07003350 goto l416
3351 l417:
3352 position, tokenIndex = position416, tokenIndex416
Pete Bentley0c61efe2019-08-13 09:32:23 +01003353 if buffer[position] != rune('.') {
3354 goto l414
3355 }
3356 position++
3357 if buffer[position] != rune('L') {
3358 goto l414
3359 }
3360 position++
Robert Sloan8542c082018-02-05 09:07:34 -08003361 {
Pete Bentley0c61efe2019-08-13 09:32:23 +01003362 position420, tokenIndex420 := position, tokenIndex
3363 if c := buffer[position]; c < rune('a') || c > rune('z') {
3364 goto l421
Robert Sloan978112c2018-01-22 12:53:01 -08003365 }
3366 position++
Pete Bentley0c61efe2019-08-13 09:32:23 +01003367 goto l420
3368 l421:
3369 position, tokenIndex = position420, tokenIndex420
3370 if c := buffer[position]; c < rune('A') || c > rune('Z') {
3371 goto l422
Robert Sloan5bdaadb2018-10-30 16:00:26 -07003372 }
Pete Bentley0c61efe2019-08-13 09:32:23 +01003373 position++
3374 goto l420
3375 l422:
3376 position, tokenIndex = position420, tokenIndex420
3377 if buffer[position] != rune('_') {
3378 goto l423
Robert Sloan5bdaadb2018-10-30 16:00:26 -07003379 }
Pete Bentley0c61efe2019-08-13 09:32:23 +01003380 position++
3381 goto l420
3382 l423:
3383 position, tokenIndex = position420, tokenIndex420
3384 if c := buffer[position]; c < rune('0') || c > rune('9') {
Robert Sloan5bdaadb2018-10-30 16:00:26 -07003385 goto l414
3386 }
Pete Bentley0c61efe2019-08-13 09:32:23 +01003387 position++
Robert Sloan5bdaadb2018-10-30 16:00:26 -07003388 }
Pete Bentley0c61efe2019-08-13 09:32:23 +01003389 l420:
3390 l418:
3391 {
3392 position419, tokenIndex419 := position, tokenIndex
3393 {
3394 position424, tokenIndex424 := position, tokenIndex
3395 if c := buffer[position]; c < rune('a') || c > rune('z') {
3396 goto l425
3397 }
3398 position++
3399 goto l424
3400 l425:
3401 position, tokenIndex = position424, tokenIndex424
3402 if c := buffer[position]; c < rune('A') || c > rune('Z') {
3403 goto l426
3404 }
3405 position++
3406 goto l424
3407 l426:
3408 position, tokenIndex = position424, tokenIndex424
3409 if buffer[position] != rune('_') {
3410 goto l427
3411 }
3412 position++
3413 goto l424
3414 l427:
3415 position, tokenIndex = position424, tokenIndex424
3416 if c := buffer[position]; c < rune('0') || c > rune('9') {
3417 goto l419
3418 }
3419 position++
3420 }
3421 l424:
3422 goto l418
3423 l419:
3424 position, tokenIndex = position419, tokenIndex419
3425 }
Robert Sloan5bdaadb2018-10-30 16:00:26 -07003426 }
3427 l416:
Pete Bentley0c61efe2019-08-13 09:32:23 +01003428 if buffer[position] != rune('@') {
Srinivas Paladugudd42a612019-08-09 19:30:39 +00003429 goto l414
Pete Bentleya5c947b2019-08-09 14:24:27 +00003430 }
Pete Bentley0c61efe2019-08-13 09:32:23 +01003431 position++
3432 {
3433 position428, tokenIndex428 := position, tokenIndex
3434 if buffer[position] != rune('l') {
3435 goto l429
3436 }
3437 position++
3438 goto l428
3439 l429:
3440 position, tokenIndex = position428, tokenIndex428
3441 if buffer[position] != rune('L') {
3442 goto l414
3443 }
3444 position++
3445 }
3446 l428:
3447 add(ruleTOCRefLow, position415)
Robert Sloan8ff03552017-06-14 12:40:58 -07003448 }
3449 return true
Robert Sloan5bdaadb2018-10-30 16:00:26 -07003450 l414:
3451 position, tokenIndex = position414, tokenIndex414
Robert Sloan8ff03552017-06-14 12:40:58 -07003452 return false
3453 },
Pete Bentley0c61efe2019-08-13 09:32:23 +01003454 /* 31 IndirectionIndicator <- <'*'> */
Robert Sloan8ff03552017-06-14 12:40:58 -07003455 func() bool {
Pete Bentley0c61efe2019-08-13 09:32:23 +01003456 position430, tokenIndex430 := position, tokenIndex
Robert Sloan8ff03552017-06-14 12:40:58 -07003457 {
Pete Bentley0c61efe2019-08-13 09:32:23 +01003458 position431 := position
3459 if buffer[position] != rune('*') {
3460 goto l430
3461 }
3462 position++
3463 add(ruleIndirectionIndicator, position431)
3464 }
3465 return true
3466 l430:
3467 position, tokenIndex = position430, tokenIndex430
3468 return false
3469 },
3470 /* 32 RegisterOrConstant <- <((('%' ([a-z] / [A-Z]) ([a-z] / [A-Z] / ([0-9] / [0-9]))*) / ('$'? ((Offset Offset) / Offset))) !('f' / 'b' / ':' / '(' / '+' / '-'))> */
3471 func() bool {
3472 position432, tokenIndex432 := position, tokenIndex
3473 {
3474 position433 := position
Robert Sloan8ff03552017-06-14 12:40:58 -07003475 {
Pete Bentley0c61efe2019-08-13 09:32:23 +01003476 position434, tokenIndex434 := position, tokenIndex
3477 if buffer[position] != rune('%') {
3478 goto l435
Robert Sloan978112c2018-01-22 12:53:01 -08003479 }
Pete Bentley0c61efe2019-08-13 09:32:23 +01003480 position++
3481 {
3482 position436, tokenIndex436 := position, tokenIndex
3483 if c := buffer[position]; c < rune('a') || c > rune('z') {
3484 goto l437
3485 }
3486 position++
3487 goto l436
3488 l437:
3489 position, tokenIndex = position436, tokenIndex436
3490 if c := buffer[position]; c < rune('A') || c > rune('Z') {
3491 goto l435
3492 }
3493 position++
Robert Sloan8ff03552017-06-14 12:40:58 -07003494 }
Pete Bentley0c61efe2019-08-13 09:32:23 +01003495 l436:
3496 l438:
3497 {
3498 position439, tokenIndex439 := position, tokenIndex
3499 {
3500 position440, tokenIndex440 := position, tokenIndex
3501 if c := buffer[position]; c < rune('a') || c > rune('z') {
3502 goto l441
3503 }
3504 position++
3505 goto l440
3506 l441:
3507 position, tokenIndex = position440, tokenIndex440
3508 if c := buffer[position]; c < rune('A') || c > rune('Z') {
3509 goto l442
3510 }
3511 position++
3512 goto l440
3513 l442:
3514 position, tokenIndex = position440, tokenIndex440
3515 {
3516 position443, tokenIndex443 := position, tokenIndex
3517 if c := buffer[position]; c < rune('0') || c > rune('9') {
3518 goto l444
3519 }
3520 position++
3521 goto l443
3522 l444:
3523 position, tokenIndex = position443, tokenIndex443
3524 if c := buffer[position]; c < rune('0') || c > rune('9') {
3525 goto l439
3526 }
3527 position++
3528 }
3529 l443:
3530 }
3531 l440:
3532 goto l438
3533 l439:
3534 position, tokenIndex = position439, tokenIndex439
Robert Sloan5bdaadb2018-10-30 16:00:26 -07003535 }
Pete Bentley0c61efe2019-08-13 09:32:23 +01003536 goto l434
3537 l435:
3538 position, tokenIndex = position434, tokenIndex434
Robert Sloan5bdaadb2018-10-30 16:00:26 -07003539 {
3540 position445, tokenIndex445 := position, tokenIndex
Pete Bentley0c61efe2019-08-13 09:32:23 +01003541 if buffer[position] != rune('$') {
Robert Sloan5bdaadb2018-10-30 16:00:26 -07003542 goto l445
3543 }
Pete Bentley0c61efe2019-08-13 09:32:23 +01003544 position++
3545 goto l446
Robert Sloan5bdaadb2018-10-30 16:00:26 -07003546 l445:
3547 position, tokenIndex = position445, tokenIndex445
3548 }
Robert Sloan5bdaadb2018-10-30 16:00:26 -07003549 l446:
Pete Bentley0c61efe2019-08-13 09:32:23 +01003550 {
3551 position447, tokenIndex447 := position, tokenIndex
3552 if !_rules[ruleOffset]() {
3553 goto l448
3554 }
3555 if !_rules[ruleOffset]() {
3556 goto l448
3557 }
Robert Sloan5bdaadb2018-10-30 16:00:26 -07003558 goto l447
Pete Bentley0c61efe2019-08-13 09:32:23 +01003559 l448:
3560 position, tokenIndex = position447, tokenIndex447
3561 if !_rules[ruleOffset]() {
3562 goto l432
3563 }
Robert Sloan5bdaadb2018-10-30 16:00:26 -07003564 }
Robert Sloan5bdaadb2018-10-30 16:00:26 -07003565 l447:
Pete Bentleya5c947b2019-08-09 14:24:27 +00003566 }
Pete Bentley0c61efe2019-08-13 09:32:23 +01003567 l434:
3568 {
3569 position449, tokenIndex449 := position, tokenIndex
3570 {
3571 position450, tokenIndex450 := position, tokenIndex
3572 if buffer[position] != rune('f') {
3573 goto l451
3574 }
3575 position++
3576 goto l450
3577 l451:
3578 position, tokenIndex = position450, tokenIndex450
3579 if buffer[position] != rune('b') {
3580 goto l452
3581 }
3582 position++
3583 goto l450
3584 l452:
3585 position, tokenIndex = position450, tokenIndex450
3586 if buffer[position] != rune(':') {
3587 goto l453
3588 }
3589 position++
3590 goto l450
3591 l453:
3592 position, tokenIndex = position450, tokenIndex450
3593 if buffer[position] != rune('(') {
3594 goto l454
3595 }
3596 position++
3597 goto l450
3598 l454:
3599 position, tokenIndex = position450, tokenIndex450
3600 if buffer[position] != rune('+') {
3601 goto l455
3602 }
3603 position++
3604 goto l450
3605 l455:
3606 position, tokenIndex = position450, tokenIndex450
3607 if buffer[position] != rune('-') {
3608 goto l449
3609 }
3610 position++
3611 }
3612 l450:
3613 goto l432
3614 l449:
3615 position, tokenIndex = position449, tokenIndex449
3616 }
3617 add(ruleRegisterOrConstant, position433)
Pete Bentleya5c947b2019-08-09 14:24:27 +00003618 }
3619 return true
Pete Bentley0c61efe2019-08-13 09:32:23 +01003620 l432:
3621 position, tokenIndex = position432, tokenIndex432
3622 return false
3623 },
3624 /* 33 MemoryRef <- <((SymbolRef BaseIndexScale) / SymbolRef / (Offset* BaseIndexScale) / (SegmentRegister Offset BaseIndexScale) / (SegmentRegister BaseIndexScale) / (SegmentRegister Offset) / BaseIndexScale)> */
3625 func() bool {
3626 position456, tokenIndex456 := position, tokenIndex
3627 {
3628 position457 := position
3629 {
3630 position458, tokenIndex458 := position, tokenIndex
3631 if !_rules[ruleSymbolRef]() {
3632 goto l459
3633 }
3634 if !_rules[ruleBaseIndexScale]() {
3635 goto l459
3636 }
3637 goto l458
3638 l459:
3639 position, tokenIndex = position458, tokenIndex458
3640 if !_rules[ruleSymbolRef]() {
3641 goto l460
3642 }
3643 goto l458
3644 l460:
3645 position, tokenIndex = position458, tokenIndex458
3646 l462:
3647 {
3648 position463, tokenIndex463 := position, tokenIndex
3649 if !_rules[ruleOffset]() {
3650 goto l463
3651 }
3652 goto l462
3653 l463:
3654 position, tokenIndex = position463, tokenIndex463
3655 }
3656 if !_rules[ruleBaseIndexScale]() {
3657 goto l461
3658 }
3659 goto l458
3660 l461:
3661 position, tokenIndex = position458, tokenIndex458
3662 if !_rules[ruleSegmentRegister]() {
3663 goto l464
3664 }
3665 if !_rules[ruleOffset]() {
3666 goto l464
3667 }
3668 if !_rules[ruleBaseIndexScale]() {
3669 goto l464
3670 }
3671 goto l458
3672 l464:
3673 position, tokenIndex = position458, tokenIndex458
3674 if !_rules[ruleSegmentRegister]() {
3675 goto l465
3676 }
3677 if !_rules[ruleBaseIndexScale]() {
3678 goto l465
3679 }
3680 goto l458
3681 l465:
3682 position, tokenIndex = position458, tokenIndex458
3683 if !_rules[ruleSegmentRegister]() {
3684 goto l466
3685 }
3686 if !_rules[ruleOffset]() {
3687 goto l466
3688 }
3689 goto l458
3690 l466:
3691 position, tokenIndex = position458, tokenIndex458
3692 if !_rules[ruleBaseIndexScale]() {
3693 goto l456
3694 }
3695 }
3696 l458:
3697 add(ruleMemoryRef, position457)
3698 }
3699 return true
3700 l456:
3701 position, tokenIndex = position456, tokenIndex456
Robert Sloan5bdaadb2018-10-30 16:00:26 -07003702 return false
3703 },
3704 /* 34 SymbolRef <- <((Offset* '+')? (LocalSymbol / SymbolName) Offset* ('@' Section Offset*)?)> */
3705 func() bool {
Pete Bentley0c61efe2019-08-13 09:32:23 +01003706 position467, tokenIndex467 := position, tokenIndex
Robert Sloan5bdaadb2018-10-30 16:00:26 -07003707 {
Pete Bentley0c61efe2019-08-13 09:32:23 +01003708 position468 := position
Srinivas Paladugudd42a612019-08-09 19:30:39 +00003709 {
3710 position469, tokenIndex469 := position, tokenIndex
Pete Bentley0c61efe2019-08-13 09:32:23 +01003711 l471:
3712 {
3713 position472, tokenIndex472 := position, tokenIndex
3714 if !_rules[ruleOffset]() {
3715 goto l472
3716 }
3717 goto l471
3718 l472:
3719 position, tokenIndex = position472, tokenIndex472
3720 }
3721 if buffer[position] != rune('+') {
Robert Sloan5bdaadb2018-10-30 16:00:26 -07003722 goto l469
Robert Sloan978112c2018-01-22 12:53:01 -08003723 }
Robert Sloan8ff03552017-06-14 12:40:58 -07003724 position++
Robert Sloan5bdaadb2018-10-30 16:00:26 -07003725 goto l470
3726 l469:
3727 position, tokenIndex = position469, tokenIndex469
Robert Sloan8ff03552017-06-14 12:40:58 -07003728 }
Robert Sloan5bdaadb2018-10-30 16:00:26 -07003729 l470:
Pete Bentley0c61efe2019-08-13 09:32:23 +01003730 {
3731 position473, tokenIndex473 := position, tokenIndex
3732 if !_rules[ruleLocalSymbol]() {
3733 goto l474
3734 }
3735 goto l473
3736 l474:
3737 position, tokenIndex = position473, tokenIndex473
3738 if !_rules[ruleSymbolName]() {
3739 goto l467
3740 }
3741 }
3742 l473:
3743 l475:
3744 {
3745 position476, tokenIndex476 := position, tokenIndex
3746 if !_rules[ruleOffset]() {
3747 goto l476
3748 }
3749 goto l475
3750 l476:
3751 position, tokenIndex = position476, tokenIndex476
3752 }
3753 {
3754 position477, tokenIndex477 := position, tokenIndex
3755 if buffer[position] != rune('@') {
3756 goto l477
3757 }
3758 position++
3759 if !_rules[ruleSection]() {
3760 goto l477
3761 }
3762 l479:
3763 {
3764 position480, tokenIndex480 := position, tokenIndex
3765 if !_rules[ruleOffset]() {
3766 goto l480
3767 }
3768 goto l479
3769 l480:
3770 position, tokenIndex = position480, tokenIndex480
3771 }
3772 goto l478
3773 l477:
3774 position, tokenIndex = position477, tokenIndex477
3775 }
3776 l478:
3777 add(ruleSymbolRef, position468)
3778 }
3779 return true
3780 l467:
3781 position, tokenIndex = position467, tokenIndex467
3782 return false
3783 },
3784 /* 35 BaseIndexScale <- <('(' RegisterOrConstant? WS? (',' WS? RegisterOrConstant WS? (',' [0-9]+)?)? ')')> */
3785 func() bool {
3786 position481, tokenIndex481 := position, tokenIndex
3787 {
3788 position482 := position
3789 if buffer[position] != rune('(') {
3790 goto l481
Robert Sloan8ff03552017-06-14 12:40:58 -07003791 }
3792 position++
Robert Sloan8ff03552017-06-14 12:40:58 -07003793 {
Pete Bentley0c61efe2019-08-13 09:32:23 +01003794 position483, tokenIndex483 := position, tokenIndex
3795 if !_rules[ruleRegisterOrConstant]() {
3796 goto l483
Robert Sloan8ff03552017-06-14 12:40:58 -07003797 }
Pete Bentley0c61efe2019-08-13 09:32:23 +01003798 goto l484
3799 l483:
3800 position, tokenIndex = position483, tokenIndex483
Robert Sloan8ff03552017-06-14 12:40:58 -07003801 }
Pete Bentley0c61efe2019-08-13 09:32:23 +01003802 l484:
Robert Sloan978112c2018-01-22 12:53:01 -08003803 {
Robert Sloan5bdaadb2018-10-30 16:00:26 -07003804 position485, tokenIndex485 := position, tokenIndex
Pete Bentley0c61efe2019-08-13 09:32:23 +01003805 if !_rules[ruleWS]() {
Robert Sloan5bdaadb2018-10-30 16:00:26 -07003806 goto l485
Robert Sloan978112c2018-01-22 12:53:01 -08003807 }
Robert Sloan5bdaadb2018-10-30 16:00:26 -07003808 goto l486
3809 l485:
3810 position, tokenIndex = position485, tokenIndex485
Robert Sloan978112c2018-01-22 12:53:01 -08003811 }
Robert Sloan5bdaadb2018-10-30 16:00:26 -07003812 l486:
Robert Sloan978112c2018-01-22 12:53:01 -08003813 {
Robert Sloan5bdaadb2018-10-30 16:00:26 -07003814 position487, tokenIndex487 := position, tokenIndex
Pete Bentley0c61efe2019-08-13 09:32:23 +01003815 if buffer[position] != rune(',') {
Robert Sloan5bdaadb2018-10-30 16:00:26 -07003816 goto l487
3817 }
3818 position++
Pete Bentley0c61efe2019-08-13 09:32:23 +01003819 {
3820 position489, tokenIndex489 := position, tokenIndex
3821 if !_rules[ruleWS]() {
3822 goto l489
3823 }
3824 goto l490
3825 l489:
3826 position, tokenIndex = position489, tokenIndex489
3827 }
3828 l490:
3829 if !_rules[ruleRegisterOrConstant]() {
3830 goto l487
3831 }
3832 {
3833 position491, tokenIndex491 := position, tokenIndex
3834 if !_rules[ruleWS]() {
3835 goto l491
3836 }
3837 goto l492
3838 l491:
3839 position, tokenIndex = position491, tokenIndex491
3840 }
3841 l492:
3842 {
3843 position493, tokenIndex493 := position, tokenIndex
3844 if buffer[position] != rune(',') {
3845 goto l493
3846 }
3847 position++
3848 if c := buffer[position]; c < rune('0') || c > rune('9') {
3849 goto l493
3850 }
3851 position++
3852 l495:
3853 {
3854 position496, tokenIndex496 := position, tokenIndex
3855 if c := buffer[position]; c < rune('0') || c > rune('9') {
3856 goto l496
3857 }
3858 position++
3859 goto l495
3860 l496:
3861 position, tokenIndex = position496, tokenIndex496
3862 }
3863 goto l494
3864 l493:
3865 position, tokenIndex = position493, tokenIndex493
3866 }
3867 l494:
Robert Sloan5bdaadb2018-10-30 16:00:26 -07003868 goto l488
3869 l487:
3870 position, tokenIndex = position487, tokenIndex487
3871 }
3872 l488:
Pete Bentley0c61efe2019-08-13 09:32:23 +01003873 if buffer[position] != rune(')') {
3874 goto l481
Pete Bentleya5c947b2019-08-09 14:24:27 +00003875 }
Pete Bentley0c61efe2019-08-13 09:32:23 +01003876 position++
3877 add(ruleBaseIndexScale, position482)
Pete Bentleya5c947b2019-08-09 14:24:27 +00003878 }
3879 return true
Pete Bentley0c61efe2019-08-13 09:32:23 +01003880 l481:
3881 position, tokenIndex = position481, tokenIndex481
3882 return false
3883 },
3884 /* 36 Operator <- <('+' / '-')> */
3885 func() bool {
3886 position497, tokenIndex497 := position, tokenIndex
3887 {
3888 position498 := position
3889 {
3890 position499, tokenIndex499 := position, tokenIndex
3891 if buffer[position] != rune('+') {
3892 goto l500
3893 }
3894 position++
3895 goto l499
3896 l500:
3897 position, tokenIndex = position499, tokenIndex499
3898 if buffer[position] != rune('-') {
3899 goto l497
3900 }
3901 position++
3902 }
3903 l499:
3904 add(ruleOperator, position498)
3905 }
3906 return true
3907 l497:
3908 position, tokenIndex = position497, tokenIndex497
3909 return false
3910 },
3911 /* 37 Offset <- <('+'? '-'? (('0' ('b' / 'B') ('0' / '1')+) / ('0' ('x' / 'X') ([0-9] / [0-9] / ([a-f] / [A-F]))+) / [0-9]+))> */
3912 func() bool {
3913 position501, tokenIndex501 := position, tokenIndex
3914 {
3915 position502 := position
3916 {
3917 position503, tokenIndex503 := position, tokenIndex
3918 if buffer[position] != rune('+') {
3919 goto l503
3920 }
3921 position++
3922 goto l504
3923 l503:
3924 position, tokenIndex = position503, tokenIndex503
3925 }
3926 l504:
3927 {
3928 position505, tokenIndex505 := position, tokenIndex
3929 if buffer[position] != rune('-') {
3930 goto l505
3931 }
3932 position++
3933 goto l506
3934 l505:
3935 position, tokenIndex = position505, tokenIndex505
3936 }
3937 l506:
3938 {
3939 position507, tokenIndex507 := position, tokenIndex
3940 if buffer[position] != rune('0') {
3941 goto l508
3942 }
3943 position++
3944 {
3945 position509, tokenIndex509 := position, tokenIndex
3946 if buffer[position] != rune('b') {
3947 goto l510
3948 }
3949 position++
3950 goto l509
3951 l510:
3952 position, tokenIndex = position509, tokenIndex509
3953 if buffer[position] != rune('B') {
3954 goto l508
3955 }
3956 position++
3957 }
3958 l509:
3959 {
3960 position513, tokenIndex513 := position, tokenIndex
3961 if buffer[position] != rune('0') {
3962 goto l514
3963 }
3964 position++
3965 goto l513
3966 l514:
3967 position, tokenIndex = position513, tokenIndex513
3968 if buffer[position] != rune('1') {
3969 goto l508
3970 }
3971 position++
3972 }
3973 l513:
3974 l511:
3975 {
3976 position512, tokenIndex512 := position, tokenIndex
3977 {
3978 position515, tokenIndex515 := position, tokenIndex
3979 if buffer[position] != rune('0') {
3980 goto l516
3981 }
3982 position++
3983 goto l515
3984 l516:
3985 position, tokenIndex = position515, tokenIndex515
3986 if buffer[position] != rune('1') {
3987 goto l512
3988 }
3989 position++
3990 }
3991 l515:
3992 goto l511
3993 l512:
3994 position, tokenIndex = position512, tokenIndex512
3995 }
3996 goto l507
3997 l508:
3998 position, tokenIndex = position507, tokenIndex507
3999 if buffer[position] != rune('0') {
4000 goto l517
4001 }
4002 position++
4003 {
4004 position518, tokenIndex518 := position, tokenIndex
4005 if buffer[position] != rune('x') {
4006 goto l519
4007 }
4008 position++
4009 goto l518
4010 l519:
4011 position, tokenIndex = position518, tokenIndex518
4012 if buffer[position] != rune('X') {
4013 goto l517
4014 }
4015 position++
4016 }
4017 l518:
4018 {
4019 position522, tokenIndex522 := position, tokenIndex
4020 if c := buffer[position]; c < rune('0') || c > rune('9') {
4021 goto l523
4022 }
4023 position++
4024 goto l522
4025 l523:
4026 position, tokenIndex = position522, tokenIndex522
4027 if c := buffer[position]; c < rune('0') || c > rune('9') {
4028 goto l524
4029 }
4030 position++
4031 goto l522
4032 l524:
4033 position, tokenIndex = position522, tokenIndex522
4034 {
4035 position525, tokenIndex525 := position, tokenIndex
4036 if c := buffer[position]; c < rune('a') || c > rune('f') {
4037 goto l526
4038 }
4039 position++
4040 goto l525
4041 l526:
4042 position, tokenIndex = position525, tokenIndex525
4043 if c := buffer[position]; c < rune('A') || c > rune('F') {
4044 goto l517
4045 }
4046 position++
4047 }
4048 l525:
4049 }
4050 l522:
4051 l520:
4052 {
4053 position521, tokenIndex521 := position, tokenIndex
4054 {
4055 position527, tokenIndex527 := position, tokenIndex
4056 if c := buffer[position]; c < rune('0') || c > rune('9') {
4057 goto l528
4058 }
4059 position++
4060 goto l527
4061 l528:
4062 position, tokenIndex = position527, tokenIndex527
4063 if c := buffer[position]; c < rune('0') || c > rune('9') {
4064 goto l529
4065 }
4066 position++
4067 goto l527
4068 l529:
4069 position, tokenIndex = position527, tokenIndex527
4070 {
4071 position530, tokenIndex530 := position, tokenIndex
4072 if c := buffer[position]; c < rune('a') || c > rune('f') {
4073 goto l531
4074 }
4075 position++
4076 goto l530
4077 l531:
4078 position, tokenIndex = position530, tokenIndex530
4079 if c := buffer[position]; c < rune('A') || c > rune('F') {
4080 goto l521
4081 }
4082 position++
4083 }
4084 l530:
4085 }
4086 l527:
4087 goto l520
4088 l521:
4089 position, tokenIndex = position521, tokenIndex521
4090 }
4091 goto l507
4092 l517:
4093 position, tokenIndex = position507, tokenIndex507
4094 if c := buffer[position]; c < rune('0') || c > rune('9') {
4095 goto l501
4096 }
4097 position++
4098 l532:
4099 {
4100 position533, tokenIndex533 := position, tokenIndex
4101 if c := buffer[position]; c < rune('0') || c > rune('9') {
4102 goto l533
4103 }
4104 position++
4105 goto l532
4106 l533:
4107 position, tokenIndex = position533, tokenIndex533
4108 }
4109 }
4110 l507:
4111 add(ruleOffset, position502)
4112 }
4113 return true
4114 l501:
4115 position, tokenIndex = position501, tokenIndex501
Robert Sloan8ff03552017-06-14 12:40:58 -07004116 return false
4117 },
Robert Sloan5bdaadb2018-10-30 16:00:26 -07004118 /* 38 Section <- <([a-z] / [A-Z] / '@')+> */
Robert Sloan8ff03552017-06-14 12:40:58 -07004119 func() bool {
Pete Bentley0c61efe2019-08-13 09:32:23 +01004120 position534, tokenIndex534 := position, tokenIndex
Robert Sloan8ff03552017-06-14 12:40:58 -07004121 {
Pete Bentley0c61efe2019-08-13 09:32:23 +01004122 position535 := position
Robert Sloan8ff03552017-06-14 12:40:58 -07004123 {
Pete Bentley0c61efe2019-08-13 09:32:23 +01004124 position538, tokenIndex538 := position, tokenIndex
Robert Sloan5bdaadb2018-10-30 16:00:26 -07004125 if c := buffer[position]; c < rune('a') || c > rune('z') {
Pete Bentley0c61efe2019-08-13 09:32:23 +01004126 goto l539
Robert Sloan8ff03552017-06-14 12:40:58 -07004127 }
4128 position++
Pete Bentley0c61efe2019-08-13 09:32:23 +01004129 goto l538
4130 l539:
4131 position, tokenIndex = position538, tokenIndex538
Robert Sloan5bdaadb2018-10-30 16:00:26 -07004132 if c := buffer[position]; c < rune('A') || c > rune('Z') {
Pete Bentley0c61efe2019-08-13 09:32:23 +01004133 goto l540
Robert Sloan5bdaadb2018-10-30 16:00:26 -07004134 }
4135 position++
Pete Bentley0c61efe2019-08-13 09:32:23 +01004136 goto l538
4137 l540:
4138 position, tokenIndex = position538, tokenIndex538
Robert Sloan5bdaadb2018-10-30 16:00:26 -07004139 if buffer[position] != rune('@') {
Pete Bentley0c61efe2019-08-13 09:32:23 +01004140 goto l534
Robert Sloan8ff03552017-06-14 12:40:58 -07004141 }
4142 position++
4143 }
Pete Bentley0c61efe2019-08-13 09:32:23 +01004144 l538:
4145 l536:
Robert Sloan5bdaadb2018-10-30 16:00:26 -07004146 {
Pete Bentley0c61efe2019-08-13 09:32:23 +01004147 position537, tokenIndex537 := position, tokenIndex
Robert Sloan5bdaadb2018-10-30 16:00:26 -07004148 {
Pete Bentley0c61efe2019-08-13 09:32:23 +01004149 position541, tokenIndex541 := position, tokenIndex
Robert Sloan5bdaadb2018-10-30 16:00:26 -07004150 if c := buffer[position]; c < rune('a') || c > rune('z') {
Pete Bentley0c61efe2019-08-13 09:32:23 +01004151 goto l542
Robert Sloan5bdaadb2018-10-30 16:00:26 -07004152 }
4153 position++
Pete Bentley0c61efe2019-08-13 09:32:23 +01004154 goto l541
4155 l542:
4156 position, tokenIndex = position541, tokenIndex541
Robert Sloan5bdaadb2018-10-30 16:00:26 -07004157 if c := buffer[position]; c < rune('A') || c > rune('Z') {
Pete Bentley0c61efe2019-08-13 09:32:23 +01004158 goto l543
Robert Sloan5bdaadb2018-10-30 16:00:26 -07004159 }
4160 position++
Pete Bentley0c61efe2019-08-13 09:32:23 +01004161 goto l541
4162 l543:
4163 position, tokenIndex = position541, tokenIndex541
Robert Sloan5bdaadb2018-10-30 16:00:26 -07004164 if buffer[position] != rune('@') {
Pete Bentley0c61efe2019-08-13 09:32:23 +01004165 goto l537
Robert Sloan5bdaadb2018-10-30 16:00:26 -07004166 }
4167 position++
4168 }
Pete Bentley0c61efe2019-08-13 09:32:23 +01004169 l541:
4170 goto l536
4171 l537:
4172 position, tokenIndex = position537, tokenIndex537
Robert Sloan5bdaadb2018-10-30 16:00:26 -07004173 }
Pete Bentley0c61efe2019-08-13 09:32:23 +01004174 add(ruleSection, position535)
Robert Sloan5bdaadb2018-10-30 16:00:26 -07004175 }
4176 return true
Pete Bentley0c61efe2019-08-13 09:32:23 +01004177 l534:
4178 position, tokenIndex = position534, tokenIndex534
Robert Sloan5bdaadb2018-10-30 16:00:26 -07004179 return false
4180 },
4181 /* 39 SegmentRegister <- <('%' ([c-g] / 's') ('s' ':'))> */
4182 func() bool {
Pete Bentley0c61efe2019-08-13 09:32:23 +01004183 position544, tokenIndex544 := position, tokenIndex
Robert Sloan5bdaadb2018-10-30 16:00:26 -07004184 {
Pete Bentley0c61efe2019-08-13 09:32:23 +01004185 position545 := position
Robert Sloan5bdaadb2018-10-30 16:00:26 -07004186 if buffer[position] != rune('%') {
Pete Bentley0c61efe2019-08-13 09:32:23 +01004187 goto l544
Robert Sloan5bdaadb2018-10-30 16:00:26 -07004188 }
4189 position++
4190 {
Pete Bentley0c61efe2019-08-13 09:32:23 +01004191 position546, tokenIndex546 := position, tokenIndex
Robert Sloan5bdaadb2018-10-30 16:00:26 -07004192 if c := buffer[position]; c < rune('c') || c > rune('g') {
Pete Bentley0c61efe2019-08-13 09:32:23 +01004193 goto l547
Robert Sloan5bdaadb2018-10-30 16:00:26 -07004194 }
4195 position++
Pete Bentley0c61efe2019-08-13 09:32:23 +01004196 goto l546
4197 l547:
4198 position, tokenIndex = position546, tokenIndex546
Robert Sloan5bdaadb2018-10-30 16:00:26 -07004199 if buffer[position] != rune('s') {
Pete Bentley0c61efe2019-08-13 09:32:23 +01004200 goto l544
Robert Sloan5bdaadb2018-10-30 16:00:26 -07004201 }
4202 position++
4203 }
Pete Bentley0c61efe2019-08-13 09:32:23 +01004204 l546:
Robert Sloan5bdaadb2018-10-30 16:00:26 -07004205 if buffer[position] != rune('s') {
Pete Bentley0c61efe2019-08-13 09:32:23 +01004206 goto l544
Robert Sloan8ff03552017-06-14 12:40:58 -07004207 }
4208 position++
4209 if buffer[position] != rune(':') {
Pete Bentley0c61efe2019-08-13 09:32:23 +01004210 goto l544
Robert Sloan8ff03552017-06-14 12:40:58 -07004211 }
4212 position++
Pete Bentley0c61efe2019-08-13 09:32:23 +01004213 add(ruleSegmentRegister, position545)
Robert Sloan8ff03552017-06-14 12:40:58 -07004214 }
4215 return true
Pete Bentley0c61efe2019-08-13 09:32:23 +01004216 l544:
4217 position, tokenIndex = position544, tokenIndex544
Robert Sloan8ff03552017-06-14 12:40:58 -07004218 return false
4219 },
4220 }
4221 p.rules = _rules
4222}