package main // Code generated by ./peg/peg delocate.peg DO NOT EDIT. import ( "fmt" "io" "os" "sort" "strconv" "strings" ) const endSymbol rune = 1114112 /* The rule types inferred from the grammar are below. */ type pegRule uint8 const ( ruleUnknown pegRule = iota ruleAsmFile ruleStatement ruleGlobalDirective ruleDirective ruleDirectiveName ruleLocationDirective ruleFileDirective ruleLocDirective ruleArgs ruleArg ruleQuotedArg ruleQuotedText ruleLabelContainingDirective ruleLabelContainingDirectiveName ruleSymbolArgs ruleSymbolArg ruleSymbolExpr ruleSymbolAtom ruleSymbolOperator ruleOpenParen ruleCloseParen ruleSymbolType ruleDot ruleTCMarker ruleEscapedChar ruleWS ruleComment ruleLabel ruleSymbolName ruleLocalSymbol ruleLocalLabel ruleLocalLabelRef ruleInstruction ruleInstructionName ruleInstructionArg ruleGOTLocation ruleGOTAddress ruleGOTSymbolOffset ruleAVX512Token ruleTOCRefHigh ruleTOCRefLow ruleIndirectionIndicator ruleRegisterOrConstant ruleARMConstantTweak ruleARMRegister ruleARMVectorRegister ruleSVE2PredicateRegister ruleSVE2SpecialValue ruleMemoryRef ruleSymbolRef ruleLow12BitsSymbolRef ruleARMBaseIndexScale ruleARMGOTLow12 ruleARMPostincrement ruleBaseIndexScale ruleOperator ruleOffset ruleSection ruleSegmentRegister ) var rul3s = [...]string{ "Unknown", "AsmFile", "Statement", "GlobalDirective", "Directive", "DirectiveName", "LocationDirective", "FileDirective", "LocDirective", "Args", "Arg", "QuotedArg", "QuotedText", "LabelContainingDirective", "LabelContainingDirectiveName", "SymbolArgs", "SymbolArg", "SymbolExpr", "SymbolAtom", "SymbolOperator", "OpenParen", "CloseParen", "SymbolType", "Dot", "TCMarker", "EscapedChar", "WS", "Comment", "Label", "SymbolName", "LocalSymbol", "LocalLabel", "LocalLabelRef", "Instruction", "InstructionName", "InstructionArg", "GOTLocation", "GOTAddress", "GOTSymbolOffset", "AVX512Token", "TOCRefHigh", "TOCRefLow", "IndirectionIndicator", "RegisterOrConstant", "ARMConstantTweak", "ARMRegister", "ARMVectorRegister", "SVE2PredicateRegister", "SVE2SpecialValue", "MemoryRef", "SymbolRef", "Low12BitsSymbolRef", "ARMBaseIndexScale", "ARMGOTLow12", "ARMPostincrement", "BaseIndexScale", "Operator", "Offset", "Section", "SegmentRegister", } type token32 struct { pegRule begin, end uint32 } func (t *token32) String() string { return fmt.Sprintf("\x1B[34m%v\x1B[m %v %v", rul3s[t.pegRule], t.begin, t.end) } type node32 struct { token32 up, next *node32 } func (node *node32) print(w io.Writer, pretty bool, buffer string) { var print func(node *node32, depth int) print = func(node *node32, depth int) { for node != nil { for c := 0; c < depth; c++ { fmt.Fprintf(w, " ") } rule := rul3s[node.pegRule] quote := strconv.Quote(string(([]rune(buffer)[node.begin:node.end]))) if !pretty { fmt.Fprintf(w, "%v %v\n", rule, quote) } else { fmt.Fprintf(w, "\x1B[36m%v\x1B[m %v\n", rule, quote) } if node.up != nil { print(node.up, depth+1) } node = node.next } } print(node, 0) } func (node *node32) Print(w io.Writer, buffer string) { node.print(w, false, buffer) } func (node *node32) PrettyPrint(w io.Writer, buffer string) { node.print(w, true, buffer) } type tokens32 struct { tree []token32 } func (t *tokens32) Trim(length uint32) { t.tree = t.tree[:length] } func (t *tokens32) Print() { for _, token := range t.tree { fmt.Println(token.String()) } } func (t *tokens32) AST() *node32 { type element struct { node *node32 down *element } tokens := t.Tokens() var stack *element for _, token := range tokens { if token.begin == token.end { continue } node := &node32{token32: token} for stack != nil && stack.node.begin >= token.begin && stack.node.end <= token.end { stack.node.next = node.up node.up = stack.node stack = stack.down } stack = &element{node: node, down: stack} } if stack != nil { return stack.node } return nil } func (t *tokens32) PrintSyntaxTree(buffer string) { t.AST().Print(os.Stdout, buffer) } func (t *tokens32) WriteSyntaxTree(w io.Writer, buffer string) { t.AST().Print(w, buffer) } func (t *tokens32) PrettyPrintSyntaxTree(buffer string) { t.AST().PrettyPrint(os.Stdout, buffer) } func (t *tokens32) Add(rule pegRule, begin, end, index uint32) { tree, i := t.tree, int(index) if i >= len(tree) { t.tree = append(tree, token32{pegRule: rule, begin: begin, end: end}) return } tree[i] = token32{pegRule: rule, begin: begin, end: end} } func (t *tokens32) Tokens() []token32 { return t.tree } type Asm struct { Buffer string buffer []rune rules [60]func() bool parse func(rule ...int) error reset func() Pretty bool tokens32 } func (p *Asm) Parse(rule ...int) error { return p.parse(rule...) } func (p *Asm) Reset() { p.reset() } type textPosition struct { line, symbol int } type textPositionMap map[int]textPosition func translatePositions(buffer []rune, positions []int) textPositionMap { length, translations, j, line, symbol := len(positions), make(textPositionMap, len(positions)), 0, 1, 0 sort.Ints(positions) search: for i, c := range buffer { if c == '\n' { line, symbol = line+1, 0 } else { symbol++ } if i == positions[j] { translations[positions[j]] = textPosition{line, symbol} for j++; j < length; j++ { if i != positions[j] { continue search } } break search } } return translations } type parseError struct { p *Asm max token32 } func (e *parseError) Error() string { tokens, err := []token32{e.max}, "\n" positions, p := make([]int, 2*len(tokens)), 0 for _, token := range tokens { positions[p], p = int(token.begin), p+1 positions[p], p = int(token.end), p+1 } translations := translatePositions(e.p.buffer, positions) format := "parse error near %v (line %v symbol %v - line %v symbol %v):\n%v\n" if e.p.Pretty { format = "parse error near \x1B[34m%v\x1B[m (line %v symbol %v - line %v symbol %v):\n%v\n" } for _, token := range tokens { begin, end := int(token.begin), int(token.end) err += fmt.Sprintf(format, rul3s[token.pegRule], translations[begin].line, translations[begin].symbol, translations[end].line, translations[end].symbol, strconv.Quote(string(e.p.buffer[begin:end]))) } return err } func (p *Asm) PrintSyntaxTree() { if p.Pretty { p.tokens32.PrettyPrintSyntaxTree(p.Buffer) } else { p.tokens32.PrintSyntaxTree(p.Buffer) } } func (p *Asm) WriteSyntaxTree(w io.Writer) { p.tokens32.WriteSyntaxTree(w, p.Buffer) } func (p *Asm) SprintSyntaxTree() string { var bldr strings.Builder p.WriteSyntaxTree(&bldr) return bldr.String() } func Pretty(pretty bool) func(*Asm) error { return func(p *Asm) error { p.Pretty = pretty return nil } } func Size(size int) func(*Asm) error { return func(p *Asm) error { p.tokens32 = tokens32{tree: make([]token32, 0, size)} return nil } } func (p *Asm) Init(options ...func(*Asm) error) error { var ( max token32 position, tokenIndex uint32 buffer []rune ) for _, option := range options { err := option(p) if err != nil { return err } } p.reset = func() { max = token32{} position, tokenIndex = 0, 0 p.buffer = []rune(p.Buffer) if len(p.buffer) == 0 || p.buffer[len(p.buffer)-1] != endSymbol { p.buffer = append(p.buffer, endSymbol) } buffer = p.buffer } p.reset() _rules := p.rules tree := p.tokens32 p.parse = func(rule ...int) error { r := 1 if len(rule) > 0 { r = rule[0] } matches := p.rules[r]() p.tokens32 = tree if matches { p.Trim(tokenIndex) return nil } return &parseError{p, max} } add := func(rule pegRule, begin uint32) { tree.Add(rule, begin, position, tokenIndex) tokenIndex++ if begin != position && position > max.end { max = token32{rule, begin, position} } } matchDot := func() bool { if buffer[position] != endSymbol { position++ return true } return false } /*matchChar := func(c byte) bool { if buffer[position] == c { position++ return true } return false }*/ /*matchRange := func(lower byte, upper byte) bool { if c := buffer[position]; c >= lower && c <= upper { position++ return true } return false }*/ _rules = [...]func() bool{ nil, /* 0 AsmFile <- <(Statement* !.)> */ func() bool { position0, tokenIndex0 := position, tokenIndex { position1 := position l2: { position3, tokenIndex3 := position, tokenIndex if !_rules[ruleStatement]() { goto l3 } goto l2 l3: position, tokenIndex = position3, tokenIndex3 } { position4, tokenIndex4 := position, tokenIndex if !matchDot() { goto l4 } goto l0 l4: position, tokenIndex = position4, tokenIndex4 } add(ruleAsmFile, position1) } return true l0: position, tokenIndex = position0, tokenIndex0 return false }, /* 1 Statement <- <(WS? (Label / ((GlobalDirective / LocationDirective / LabelContainingDirective / Instruction / Directive / Comment / ) WS? ((Comment? '\n') / ';'))))> */ func() bool { position5, tokenIndex5 := position, tokenIndex { position6 := position { position7, tokenIndex7 := position, tokenIndex if !_rules[ruleWS]() { goto l7 } goto l8 l7: position, tokenIndex = position7, tokenIndex7 } l8: { position9, tokenIndex9 := position, tokenIndex if !_rules[ruleLabel]() { goto l10 } goto l9 l10: position, tokenIndex = position9, tokenIndex9 { position11, tokenIndex11 := position, tokenIndex if !_rules[ruleGlobalDirective]() { goto l12 } goto l11 l12: position, tokenIndex = position11, tokenIndex11 if !_rules[ruleLocationDirective]() { goto l13 } goto l11 l13: position, tokenIndex = position11, tokenIndex11 if !_rules[ruleLabelContainingDirective]() { goto l14 } goto l11 l14: position, tokenIndex = position11, tokenIndex11 if !_rules[ruleInstruction]() { goto l15 } goto l11 l15: position, tokenIndex = position11, tokenIndex11 if !_rules[ruleDirective]() { goto l16 } goto l11 l16: position, tokenIndex = position11, tokenIndex11 if !_rules[ruleComment]() { goto l17 } goto l11 l17: position, tokenIndex = position11, tokenIndex11 } l11: { position18, tokenIndex18 := position, tokenIndex if !_rules[ruleWS]() { goto l18 } goto l19 l18: position, tokenIndex = position18, tokenIndex18 } l19: { position20, tokenIndex20 := position, tokenIndex { position22, tokenIndex22 := position, tokenIndex if !_rules[ruleComment]() { goto l22 } goto l23 l22: position, tokenIndex = position22, tokenIndex22 } l23: if buffer[position] != rune('\n') { goto l21 } position++ goto l20 l21: position, tokenIndex = position20, tokenIndex20 if buffer[position] != rune(';') { goto l5 } position++ } l20: } l9: add(ruleStatement, position6) } return true l5: position, tokenIndex = position5, tokenIndex5 return false }, /* 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)> */ func() bool { position24, tokenIndex24 := position, tokenIndex { position25 := position { position26, tokenIndex26 := position, tokenIndex if buffer[position] != rune('.') { goto l27 } position++ { position28, tokenIndex28 := position, tokenIndex if buffer[position] != rune('g') { goto l29 } position++ goto l28 l29: position, tokenIndex = position28, tokenIndex28 if buffer[position] != rune('G') { goto l27 } position++ } l28: { position30, tokenIndex30 := position, tokenIndex if buffer[position] != rune('l') { goto l31 } position++ goto l30 l31: position, tokenIndex = position30, tokenIndex30 if buffer[position] != rune('L') { goto l27 } position++ } l30: { position32, tokenIndex32 := position, tokenIndex if buffer[position] != rune('o') { goto l33 } position++ goto l32 l33: position, tokenIndex = position32, tokenIndex32 if buffer[position] != rune('O') { goto l27 } position++ } l32: { position34, tokenIndex34 := position, tokenIndex if buffer[position] != rune('b') { goto l35 } position++ goto l34 l35: position, tokenIndex = position34, tokenIndex34 if buffer[position] != rune('B') { goto l27 } position++ } l34: { position36, tokenIndex36 := position, tokenIndex if buffer[position] != rune('a') { goto l37 } position++ goto l36 l37: position, tokenIndex = position36, tokenIndex36 if buffer[position] != rune('A') { goto l27 } position++ } l36: { position38, tokenIndex38 := position, tokenIndex if buffer[position] != rune('l') { goto l39 } position++ goto l38 l39: position, tokenIndex = position38, tokenIndex38 if buffer[position] != rune('L') { goto l27 } position++ } l38: goto l26 l27: position, tokenIndex = position26, tokenIndex26 if buffer[position] != rune('.') { goto l24 } position++ { position40, tokenIndex40 := position, tokenIndex if buffer[position] != rune('g') { goto l41 } position++ goto l40 l41: position, tokenIndex = position40, tokenIndex40 if buffer[position] != rune('G') { goto l24 } position++ } l40: { position42, tokenIndex42 := position, tokenIndex if buffer[position] != rune('l') { goto l43 } position++ goto l42 l43: position, tokenIndex = position42, tokenIndex42 if buffer[position] != rune('L') { goto l24 } position++ } l42: { position44, tokenIndex44 := position, tokenIndex if buffer[position] != rune('o') { goto l45 } position++ goto l44 l45: position, tokenIndex = position44, tokenIndex44 if buffer[position] != rune('O') { goto l24 } position++ } l44: { position46, tokenIndex46 := position, tokenIndex if buffer[position] != rune('b') { goto l47 } position++ goto l46 l47: position, tokenIndex = position46, tokenIndex46 if buffer[position] != rune('B') { goto l24 } position++ } l46: { position48, tokenIndex48 := position, tokenIndex if buffer[position] != rune('l') { goto l49 } position++ goto l48 l49: position, tokenIndex = position48, tokenIndex48 if buffer[position] != rune('L') { goto l24 } position++ } l48: } l26: if !_rules[ruleWS]() { goto l24 } if !_rules[ruleSymbolName]() { goto l24 } add(ruleGlobalDirective, position25) } return true l24: position, tokenIndex = position24, tokenIndex24 return false }, /* 3 Directive <- <('.' DirectiveName (WS Args)?)> */ func() bool { position50, tokenIndex50 := position, tokenIndex { position51 := position if buffer[position] != rune('.') { goto l50 } position++ if !_rules[ruleDirectiveName]() { goto l50 } { position52, tokenIndex52 := position, tokenIndex if !_rules[ruleWS]() { goto l52 } if !_rules[ruleArgs]() { goto l52 } goto l53 l52: position, tokenIndex = position52, tokenIndex52 } l53: add(ruleDirective, position51) } return true l50: position, tokenIndex = position50, tokenIndex50 return false }, /* 4 DirectiveName <- <([a-z] / [A-Z] / ([0-9] / [0-9]) / '_')+> */ func() bool { position54, tokenIndex54 := position, tokenIndex { position55 := position { position58, tokenIndex58 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { goto l59 } position++ goto l58 l59: position, tokenIndex = position58, tokenIndex58 if c := buffer[position]; c < rune('A') || c > rune('Z') { goto l60 } position++ goto l58 l60: position, tokenIndex = position58, tokenIndex58 { position62, tokenIndex62 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l63 } position++ goto l62 l63: position, tokenIndex = position62, tokenIndex62 if c := buffer[position]; c < rune('0') || c > rune('9') { goto l61 } position++ } l62: goto l58 l61: position, tokenIndex = position58, tokenIndex58 if buffer[position] != rune('_') { goto l54 } position++ } l58: l56: { position57, tokenIndex57 := position, tokenIndex { position64, tokenIndex64 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { goto l65 } position++ goto l64 l65: position, tokenIndex = position64, tokenIndex64 if c := buffer[position]; c < rune('A') || c > rune('Z') { goto l66 } position++ goto l64 l66: position, tokenIndex = position64, tokenIndex64 { position68, tokenIndex68 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l69 } position++ goto l68 l69: position, tokenIndex = position68, tokenIndex68 if c := buffer[position]; c < rune('0') || c > rune('9') { goto l67 } position++ } l68: goto l64 l67: position, tokenIndex = position64, tokenIndex64 if buffer[position] != rune('_') { goto l57 } position++ } l64: goto l56 l57: position, tokenIndex = position57, tokenIndex57 } add(ruleDirectiveName, position55) } return true l54: position, tokenIndex = position54, tokenIndex54 return false }, /* 5 LocationDirective <- <(FileDirective / LocDirective)> */ func() bool { position70, tokenIndex70 := position, tokenIndex { position71 := position { position72, tokenIndex72 := position, tokenIndex if !_rules[ruleFileDirective]() { goto l73 } goto l72 l73: position, tokenIndex = position72, tokenIndex72 if !_rules[ruleLocDirective]() { goto l70 } } l72: add(ruleLocationDirective, position71) } return true l70: position, tokenIndex = position70, tokenIndex70 return false }, /* 6 FileDirective <- <('.' ('f' / 'F') ('i' / 'I') ('l' / 'L') ('e' / 'E') WS (!('#' / '\n') .)+)> */ func() bool { position74, tokenIndex74 := position, tokenIndex { position75 := position if buffer[position] != rune('.') { goto l74 } position++ { position76, tokenIndex76 := position, tokenIndex if buffer[position] != rune('f') { goto l77 } position++ goto l76 l77: position, tokenIndex = position76, tokenIndex76 if buffer[position] != rune('F') { goto l74 } position++ } l76: { position78, tokenIndex78 := position, tokenIndex if buffer[position] != rune('i') { goto l79 } position++ goto l78 l79: position, tokenIndex = position78, tokenIndex78 if buffer[position] != rune('I') { goto l74 } position++ } l78: { position80, tokenIndex80 := position, tokenIndex if buffer[position] != rune('l') { goto l81 } position++ goto l80 l81: position, tokenIndex = position80, tokenIndex80 if buffer[position] != rune('L') { goto l74 } position++ } l80: { position82, tokenIndex82 := position, tokenIndex if buffer[position] != rune('e') { goto l83 } position++ goto l82 l83: position, tokenIndex = position82, tokenIndex82 if buffer[position] != rune('E') { goto l74 } position++ } l82: if !_rules[ruleWS]() { goto l74 } { position86, tokenIndex86 := position, tokenIndex { position87, tokenIndex87 := position, tokenIndex if buffer[position] != rune('#') { goto l88 } position++ goto l87 l88: position, tokenIndex = position87, tokenIndex87 if buffer[position] != rune('\n') { goto l86 } position++ } l87: goto l74 l86: position, tokenIndex = position86, tokenIndex86 } if !matchDot() { goto l74 } l84: { position85, tokenIndex85 := position, tokenIndex { position89, tokenIndex89 := position, tokenIndex { position90, tokenIndex90 := position, tokenIndex if buffer[position] != rune('#') { goto l91 } position++ goto l90 l91: position, tokenIndex = position90, tokenIndex90 if buffer[position] != rune('\n') { goto l89 } position++ } l90: goto l85 l89: position, tokenIndex = position89, tokenIndex89 } if !matchDot() { goto l85 } goto l84 l85: position, tokenIndex = position85, tokenIndex85 } add(ruleFileDirective, position75) } return true l74: position, tokenIndex = position74, tokenIndex74 return false }, /* 7 LocDirective <- <('.' ('l' / 'L') ('o' / 'O') ('c' / 'C') WS (!('#' / '/' / '\n') .)+)> */ func() bool { position92, tokenIndex92 := position, tokenIndex { position93 := position if buffer[position] != rune('.') { goto l92 } position++ { position94, tokenIndex94 := position, tokenIndex if buffer[position] != rune('l') { goto l95 } position++ goto l94 l95: position, tokenIndex = position94, tokenIndex94 if buffer[position] != rune('L') { goto l92 } position++ } l94: { position96, tokenIndex96 := position, tokenIndex if buffer[position] != rune('o') { goto l97 } position++ goto l96 l97: position, tokenIndex = position96, tokenIndex96 if buffer[position] != rune('O') { goto l92 } position++ } l96: { position98, tokenIndex98 := position, tokenIndex if buffer[position] != rune('c') { goto l99 } position++ goto l98 l99: position, tokenIndex = position98, tokenIndex98 if buffer[position] != rune('C') { goto l92 } position++ } l98: if !_rules[ruleWS]() { goto l92 } { position102, tokenIndex102 := position, tokenIndex { position103, tokenIndex103 := position, tokenIndex if buffer[position] != rune('#') { goto l104 } position++ goto l103 l104: position, tokenIndex = position103, tokenIndex103 if buffer[position] != rune('/') { goto l105 } position++ goto l103 l105: position, tokenIndex = position103, tokenIndex103 if buffer[position] != rune('\n') { goto l102 } position++ } l103: goto l92 l102: position, tokenIndex = position102, tokenIndex102 } if !matchDot() { goto l92 } l100: { position101, tokenIndex101 := position, tokenIndex { position106, tokenIndex106 := position, tokenIndex { position107, tokenIndex107 := position, tokenIndex if buffer[position] != rune('#') { goto l108 } position++ goto l107 l108: position, tokenIndex = position107, tokenIndex107 if buffer[position] != rune('/') { goto l109 } position++ goto l107 l109: position, tokenIndex = position107, tokenIndex107 if buffer[position] != rune('\n') { goto l106 } position++ } l107: goto l101 l106: position, tokenIndex = position106, tokenIndex106 } if !matchDot() { goto l101 } goto l100 l101: position, tokenIndex = position101, tokenIndex101 } add(ruleLocDirective, position93) } return true l92: position, tokenIndex = position92, tokenIndex92 return false }, /* 8 Args <- <(Arg (WS? ',' WS? Arg)*)> */ func() bool { position110, tokenIndex110 := position, tokenIndex { position111 := position if !_rules[ruleArg]() { goto l110 } l112: { position113, tokenIndex113 := position, tokenIndex { position114, tokenIndex114 := position, tokenIndex if !_rules[ruleWS]() { goto l114 } goto l115 l114: position, tokenIndex = position114, tokenIndex114 } l115: if buffer[position] != rune(',') { goto l113 } position++ { position116, tokenIndex116 := position, tokenIndex if !_rules[ruleWS]() { goto l116 } goto l117 l116: position, tokenIndex = position116, tokenIndex116 } l117: if !_rules[ruleArg]() { goto l113 } goto l112 l113: position, tokenIndex = position113, tokenIndex113 } add(ruleArgs, position111) } return true l110: position, tokenIndex = position110, tokenIndex110 return false }, /* 9 Arg <- <(QuotedArg / ([0-9] / [0-9] / ([a-z] / [A-Z]) / '%' / '+' / '-' / '*' / '_' / '@' / '.')*)> */ func() bool { { position119 := position { position120, tokenIndex120 := position, tokenIndex if !_rules[ruleQuotedArg]() { goto l121 } goto l120 l121: position, tokenIndex = position120, tokenIndex120 l122: { position123, tokenIndex123 := position, tokenIndex { position124, tokenIndex124 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l125 } position++ goto l124 l125: position, tokenIndex = position124, tokenIndex124 if c := buffer[position]; c < rune('0') || c > rune('9') { goto l126 } position++ goto l124 l126: position, tokenIndex = position124, tokenIndex124 { position128, tokenIndex128 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { goto l129 } position++ goto l128 l129: position, tokenIndex = position128, tokenIndex128 if c := buffer[position]; c < rune('A') || c > rune('Z') { goto l127 } position++ } l128: goto l124 l127: position, tokenIndex = position124, tokenIndex124 if buffer[position] != rune('%') { goto l130 } position++ goto l124 l130: position, tokenIndex = position124, tokenIndex124 if buffer[position] != rune('+') { goto l131 } position++ goto l124 l131: position, tokenIndex = position124, tokenIndex124 if buffer[position] != rune('-') { goto l132 } position++ goto l124 l132: position, tokenIndex = position124, tokenIndex124 if buffer[position] != rune('*') { goto l133 } position++ goto l124 l133: position, tokenIndex = position124, tokenIndex124 if buffer[position] != rune('_') { goto l134 } position++ goto l124 l134: position, tokenIndex = position124, tokenIndex124 if buffer[position] != rune('@') { goto l135 } position++ goto l124 l135: position, tokenIndex = position124, tokenIndex124 if buffer[position] != rune('.') { goto l123 } position++ } l124: goto l122 l123: position, tokenIndex = position123, tokenIndex123 } } l120: add(ruleArg, position119) } return true }, /* 10 QuotedArg <- <('"' QuotedText '"')> */ func() bool { position136, tokenIndex136 := position, tokenIndex { position137 := position if buffer[position] != rune('"') { goto l136 } position++ if !_rules[ruleQuotedText]() { goto l136 } if buffer[position] != rune('"') { goto l136 } position++ add(ruleQuotedArg, position137) } return true l136: position, tokenIndex = position136, tokenIndex136 return false }, /* 11 QuotedText <- <(EscapedChar / (!'"' .))*> */ func() bool { { position139 := position l140: { position141, tokenIndex141 := position, tokenIndex { position142, tokenIndex142 := position, tokenIndex if !_rules[ruleEscapedChar]() { goto l143 } goto l142 l143: position, tokenIndex = position142, tokenIndex142 { position144, tokenIndex144 := position, tokenIndex if buffer[position] != rune('"') { goto l144 } position++ goto l141 l144: position, tokenIndex = position144, tokenIndex144 } if !matchDot() { goto l141 } } l142: goto l140 l141: position, tokenIndex = position141, tokenIndex141 } add(ruleQuotedText, position139) } return true }, /* 12 LabelContainingDirective <- <(LabelContainingDirectiveName WS SymbolArgs)> */ func() bool { position145, tokenIndex145 := position, tokenIndex { position146 := position if !_rules[ruleLabelContainingDirectiveName]() { goto l145 } if !_rules[ruleWS]() { goto l145 } if !_rules[ruleSymbolArgs]() { goto l145 } add(ruleLabelContainingDirective, position146) } return true l145: position, tokenIndex = position145, tokenIndex145 return false }, /* 13 LabelContainingDirectiveName <- <(('.' ('x' / 'X') ('w' / 'W') ('o' / 'O') ('r' / 'R') ('d' / 'D')) / ('.' ('w' / 'W') ('o' / 'O') ('r' / 'R') ('d' / 'D')) / ('.' ('h' / 'H') ('w' / 'W') ('o' / 'O') ('r' / 'R') ('d' / 'D')) / ('.' ('l' / 'L') ('o' / 'O') ('n' / 'N') ('g' / 'G')) / ('.' ('s' / 'S') ('e' / 'E') ('t' / 'T')) / ('.' ('b' / 'B') ('y' / 'Y') ('t' / 'T') ('e' / 'E')) / ('.' '8' ('b' / 'B') ('y' / 'Y') ('t' / 'T') ('e' / 'E')) / ('.' '4' ('b' / 'B') ('y' / 'Y') ('t' / 'T') ('e' / 'E')) / ('.' ('q' / 'Q') ('u' / 'U') ('a' / 'A') ('d' / 'D')) / ('.' ('t' / 'T') ('c' / 'C')) / ('.' ('l' / 'L') ('o' / 'O') ('c' / 'C') ('a' / 'A') ('l' / 'L') ('e' / 'E') ('n' / 'N') ('t' / 'T') ('r' / 'R') ('y' / 'Y')) / ('.' ('s' / 'S') ('i' / 'I') ('z' / 'Z') ('e' / 'E')) / ('.' ('t' / 'T') ('y' / 'Y') ('p' / 'P') ('e' / 'E')) / ('.' ('u' / 'U') ('l' / 'L') ('e' / 'E') ('b' / 'B') '1' '2' '8') / ('.' ('s' / 'S') ('l' / 'L') ('e' / 'E') ('b' / 'B') '1' '2' '8'))> */ func() bool { position147, tokenIndex147 := position, tokenIndex { position148 := position { position149, tokenIndex149 := position, tokenIndex if buffer[position] != rune('.') { goto l150 } position++ { position151, tokenIndex151 := position, tokenIndex if buffer[position] != rune('x') { goto l152 } position++ goto l151 l152: position, tokenIndex = position151, tokenIndex151 if buffer[position] != rune('X') { goto l150 } position++ } l151: { position153, tokenIndex153 := position, tokenIndex if buffer[position] != rune('w') { goto l154 } position++ goto l153 l154: position, tokenIndex = position153, tokenIndex153 if buffer[position] != rune('W') { goto l150 } position++ } l153: { position155, tokenIndex155 := position, tokenIndex if buffer[position] != rune('o') { goto l156 } position++ goto l155 l156: position, tokenIndex = position155, tokenIndex155 if buffer[position] != rune('O') { goto l150 } position++ } l155: { position157, tokenIndex157 := position, tokenIndex if buffer[position] != rune('r') { goto l158 } position++ goto l157 l158: position, tokenIndex = position157, tokenIndex157 if buffer[position] != rune('R') { goto l150 } position++ } l157: { position159, tokenIndex159 := position, tokenIndex if buffer[position] != rune('d') { goto l160 } position++ goto l159 l160: position, tokenIndex = position159, tokenIndex159 if buffer[position] != rune('D') { goto l150 } position++ } l159: goto l149 l150: position, tokenIndex = position149, tokenIndex149 if buffer[position] != rune('.') { goto l161 } position++ { position162, tokenIndex162 := position, tokenIndex if buffer[position] != rune('w') { goto l163 } position++ goto l162 l163: position, tokenIndex = position162, tokenIndex162 if buffer[position] != rune('W') { goto l161 } position++ } l162: { position164, tokenIndex164 := position, tokenIndex if buffer[position] != rune('o') { goto l165 } position++ goto l164 l165: position, tokenIndex = position164, tokenIndex164 if buffer[position] != rune('O') { goto l161 } position++ } l164: { position166, tokenIndex166 := position, tokenIndex if buffer[position] != rune('r') { goto l167 } position++ goto l166 l167: position, tokenIndex = position166, tokenIndex166 if buffer[position] != rune('R') { goto l161 } position++ } l166: { position168, tokenIndex168 := position, tokenIndex if buffer[position] != rune('d') { goto l169 } position++ goto l168 l169: position, tokenIndex = position168, tokenIndex168 if buffer[position] != rune('D') { goto l161 } position++ } l168: goto l149 l161: position, tokenIndex = position149, tokenIndex149 if buffer[position] != rune('.') { goto l170 } position++ { position171, tokenIndex171 := position, tokenIndex if buffer[position] != rune('h') { goto l172 } position++ goto l171 l172: position, tokenIndex = position171, tokenIndex171 if buffer[position] != rune('H') { goto l170 } position++ } l171: { position173, tokenIndex173 := position, tokenIndex if buffer[position] != rune('w') { goto l174 } position++ goto l173 l174: position, tokenIndex = position173, tokenIndex173 if buffer[position] != rune('W') { goto l170 } position++ } l173: { position175, tokenIndex175 := position, tokenIndex if buffer[position] != rune('o') { goto l176 } position++ goto l175 l176: position, tokenIndex = position175, tokenIndex175 if buffer[position] != rune('O') { goto l170 } position++ } l175: { position177, tokenIndex177 := position, tokenIndex if buffer[position] != rune('r') { goto l178 } position++ goto l177 l178: position, tokenIndex = position177, tokenIndex177 if buffer[position] != rune('R') { goto l170 } position++ } l177: { position179, tokenIndex179 := position, tokenIndex if buffer[position] != rune('d') { goto l180 } position++ goto l179 l180: position, tokenIndex = position179, tokenIndex179 if buffer[position] != rune('D') { goto l170 } position++ } l179: goto l149 l170: position, tokenIndex = position149, tokenIndex149 if buffer[position] != rune('.') { goto l181 } position++ { position182, tokenIndex182 := position, tokenIndex if buffer[position] != rune('l') { goto l183 } position++ goto l182 l183: position, tokenIndex = position182, tokenIndex182 if buffer[position] != rune('L') { goto l181 } position++ } l182: { position184, tokenIndex184 := position, tokenIndex if buffer[position] != rune('o') { goto l185 } position++ goto l184 l185: position, tokenIndex = position184, tokenIndex184 if buffer[position] != rune('O') { goto l181 } position++ } l184: { position186, tokenIndex186 := position, tokenIndex if buffer[position] != rune('n') { goto l187 } position++ goto l186 l187: position, tokenIndex = position186, tokenIndex186 if buffer[position] != rune('N') { goto l181 } position++ } l186: { position188, tokenIndex188 := position, tokenIndex if buffer[position] != rune('g') { goto l189 } position++ goto l188 l189: position, tokenIndex = position188, tokenIndex188 if buffer[position] != rune('G') { goto l181 } position++ } l188: goto l149 l181: position, tokenIndex = position149, tokenIndex149 if buffer[position] != rune('.') { goto l190 } position++ { position191, tokenIndex191 := position, tokenIndex if buffer[position] != rune('s') { goto l192 } position++ goto l191 l192: position, tokenIndex = position191, tokenIndex191 if buffer[position] != rune('S') { goto l190 } position++ } l191: { position193, tokenIndex193 := position, tokenIndex if buffer[position] != rune('e') { goto l194 } position++ goto l193 l194: position, tokenIndex = position193, tokenIndex193 if buffer[position] != rune('E') { goto l190 } position++ } l193: { position195, tokenIndex195 := position, tokenIndex if buffer[position] != rune('t') { goto l196 } position++ goto l195 l196: position, tokenIndex = position195, tokenIndex195 if buffer[position] != rune('T') { goto l190 } position++ } l195: goto l149 l190: position, tokenIndex = position149, tokenIndex149 if buffer[position] != rune('.') { goto l197 } position++ { position198, tokenIndex198 := position, tokenIndex if buffer[position] != rune('b') { goto l199 } position++ goto l198 l199: position, tokenIndex = position198, tokenIndex198 if buffer[position] != rune('B') { goto l197 } position++ } l198: { position200, tokenIndex200 := position, tokenIndex if buffer[position] != rune('y') { goto l201 } position++ goto l200 l201: position, tokenIndex = position200, tokenIndex200 if buffer[position] != rune('Y') { goto l197 } position++ } l200: { position202, tokenIndex202 := position, tokenIndex if buffer[position] != rune('t') { goto l203 } position++ goto l202 l203: position, tokenIndex = position202, tokenIndex202 if buffer[position] != rune('T') { goto l197 } position++ } l202: { position204, tokenIndex204 := position, tokenIndex if buffer[position] != rune('e') { goto l205 } position++ goto l204 l205: position, tokenIndex = position204, tokenIndex204 if buffer[position] != rune('E') { goto l197 } position++ } l204: goto l149 l197: position, tokenIndex = position149, tokenIndex149 if buffer[position] != rune('.') { goto l206 } position++ if buffer[position] != rune('8') { goto l206 } position++ { position207, tokenIndex207 := position, tokenIndex if buffer[position] != rune('b') { goto l208 } position++ goto l207 l208: position, tokenIndex = position207, tokenIndex207 if buffer[position] != rune('B') { goto l206 } position++ } l207: { position209, tokenIndex209 := position, tokenIndex if buffer[position] != rune('y') { goto l210 } position++ goto l209 l210: position, tokenIndex = position209, tokenIndex209 if buffer[position] != rune('Y') { goto l206 } position++ } l209: { position211, tokenIndex211 := position, tokenIndex if buffer[position] != rune('t') { goto l212 } position++ goto l211 l212: position, tokenIndex = position211, tokenIndex211 if buffer[position] != rune('T') { goto l206 } position++ } l211: { position213, tokenIndex213 := position, tokenIndex if buffer[position] != rune('e') { goto l214 } position++ goto l213 l214: position, tokenIndex = position213, tokenIndex213 if buffer[position] != rune('E') { goto l206 } position++ } l213: goto l149 l206: position, tokenIndex = position149, tokenIndex149 if buffer[position] != rune('.') { goto l215 } position++ if buffer[position] != rune('4') { goto l215 } position++ { position216, tokenIndex216 := position, tokenIndex if buffer[position] != rune('b') { goto l217 } position++ goto l216 l217: position, tokenIndex = position216, tokenIndex216 if buffer[position] != rune('B') { goto l215 } position++ } l216: { position218, tokenIndex218 := position, tokenIndex if buffer[position] != rune('y') { goto l219 } position++ goto l218 l219: position, tokenIndex = position218, tokenIndex218 if buffer[position] != rune('Y') { goto l215 } position++ } l218: { position220, tokenIndex220 := position, tokenIndex if buffer[position] != rune('t') { goto l221 } position++ goto l220 l221: position, tokenIndex = position220, tokenIndex220 if buffer[position] != rune('T') { goto l215 } position++ } l220: { position222, tokenIndex222 := position, tokenIndex if buffer[position] != rune('e') { goto l223 } position++ goto l222 l223: position, tokenIndex = position222, tokenIndex222 if buffer[position] != rune('E') { goto l215 } position++ } l222: goto l149 l215: position, tokenIndex = position149, tokenIndex149 if buffer[position] != rune('.') { goto l224 } position++ { position225, tokenIndex225 := position, tokenIndex if buffer[position] != rune('q') { goto l226 } position++ goto l225 l226: position, tokenIndex = position225, tokenIndex225 if buffer[position] != rune('Q') { goto l224 } position++ } l225: { position227, tokenIndex227 := position, tokenIndex if buffer[position] != rune('u') { goto l228 } position++ goto l227 l228: position, tokenIndex = position227, tokenIndex227 if buffer[position] != rune('U') { goto l224 } position++ } l227: { position229, tokenIndex229 := position, tokenIndex if buffer[position] != rune('a') { goto l230 } position++ goto l229 l230: position, tokenIndex = position229, tokenIndex229 if buffer[position] != rune('A') { goto l224 } position++ } l229: { position231, tokenIndex231 := position, tokenIndex if buffer[position] != rune('d') { goto l232 } position++ goto l231 l232: position, tokenIndex = position231, tokenIndex231 if buffer[position] != rune('D') { goto l224 } position++ } l231: goto l149 l224: position, tokenIndex = position149, tokenIndex149 if buffer[position] != rune('.') { goto l233 } position++ { position234, tokenIndex234 := position, tokenIndex if buffer[position] != rune('t') { goto l235 } position++ goto l234 l235: position, tokenIndex = position234, tokenIndex234 if buffer[position] != rune('T') { goto l233 } position++ } l234: { position236, tokenIndex236 := position, tokenIndex if buffer[position] != rune('c') { goto l237 } position++ goto l236 l237: position, tokenIndex = position236, tokenIndex236 if buffer[position] != rune('C') { goto l233 } position++ } l236: goto l149 l233: position, tokenIndex = position149, tokenIndex149 if buffer[position] != rune('.') { goto l238 } position++ { position239, tokenIndex239 := position, tokenIndex if buffer[position] != rune('l') { goto l240 } position++ goto l239 l240: position, tokenIndex = position239, tokenIndex239 if buffer[position] != rune('L') { goto l238 } position++ } l239: { position241, tokenIndex241 := position, tokenIndex if buffer[position] != rune('o') { goto l242 } position++ goto l241 l242: position, tokenIndex = position241, tokenIndex241 if buffer[position] != rune('O') { goto l238 } position++ } l241: { position243, tokenIndex243 := position, tokenIndex if buffer[position] != rune('c') { goto l244 } position++ goto l243 l244: position, tokenIndex = position243, tokenIndex243 if buffer[position] != rune('C') { goto l238 } position++ } l243: { position245, tokenIndex245 := position, tokenIndex if buffer[position] != rune('a') { goto l246 } position++ goto l245 l246: position, tokenIndex = position245, tokenIndex245 if buffer[position] != rune('A') { goto l238 } position++ } l245: { position247, tokenIndex247 := position, tokenIndex if buffer[position] != rune('l') { goto l248 } position++ goto l247 l248: position, tokenIndex = position247, tokenIndex247 if buffer[position] != rune('L') { goto l238 } position++ } l247: { position249, tokenIndex249 := position, tokenIndex if buffer[position] != rune('e') { goto l250 } position++ goto l249 l250: position, tokenIndex = position249, tokenIndex249 if buffer[position] != rune('E') { goto l238 } position++ } l249: { position251, tokenIndex251 := position, tokenIndex if buffer[position] != rune('n') { goto l252 } position++ goto l251 l252: position, tokenIndex = position251, tokenIndex251 if buffer[position] != rune('N') { goto l238 } position++ } l251: { position253, tokenIndex253 := position, tokenIndex if buffer[position] != rune('t') { goto l254 } position++ goto l253 l254: position, tokenIndex = position253, tokenIndex253 if buffer[position] != rune('T') { goto l238 } position++ } l253: { position255, tokenIndex255 := position, tokenIndex if buffer[position] != rune('r') { goto l256 } position++ goto l255 l256: position, tokenIndex = position255, tokenIndex255 if buffer[position] != rune('R') { goto l238 } position++ } l255: { position257, tokenIndex257 := position, tokenIndex if buffer[position] != rune('y') { goto l258 } position++ goto l257 l258: position, tokenIndex = position257, tokenIndex257 if buffer[position] != rune('Y') { goto l238 } position++ } l257: goto l149 l238: position, tokenIndex = position149, tokenIndex149 if buffer[position] != rune('.') { goto l259 } position++ { position260, tokenIndex260 := position, tokenIndex if buffer[position] != rune('s') { goto l261 } position++ goto l260 l261: position, tokenIndex = position260, tokenIndex260 if buffer[position] != rune('S') { goto l259 } position++ } l260: { position262, tokenIndex262 := position, tokenIndex if buffer[position] != rune('i') { goto l263 } position++ goto l262 l263: position, tokenIndex = position262, tokenIndex262 if buffer[position] != rune('I') { goto l259 } position++ } l262: { position264, tokenIndex264 := position, tokenIndex if buffer[position] != rune('z') { goto l265 } position++ goto l264 l265: position, tokenIndex = position264, tokenIndex264 if buffer[position] != rune('Z') { goto l259 } position++ } l264: { position266, tokenIndex266 := position, tokenIndex if buffer[position] != rune('e') { goto l267 } position++ goto l266 l267: position, tokenIndex = position266, tokenIndex266 if buffer[position] != rune('E') { goto l259 } position++ } l266: goto l149 l259: position, tokenIndex = position149, tokenIndex149 if buffer[position] != rune('.') { goto l268 } position++ { position269, tokenIndex269 := position, tokenIndex if buffer[position] != rune('t') { goto l270 } position++ goto l269 l270: position, tokenIndex = position269, tokenIndex269 if buffer[position] != rune('T') { goto l268 } position++ } l269: { position271, tokenIndex271 := position, tokenIndex if buffer[position] != rune('y') { goto l272 } position++ goto l271 l272: position, tokenIndex = position271, tokenIndex271 if buffer[position] != rune('Y') { goto l268 } position++ } l271: { position273, tokenIndex273 := position, tokenIndex if buffer[position] != rune('p') { goto l274 } position++ goto l273 l274: position, tokenIndex = position273, tokenIndex273 if buffer[position] != rune('P') { goto l268 } position++ } l273: { position275, tokenIndex275 := position, tokenIndex if buffer[position] != rune('e') { goto l276 } position++ goto l275 l276: position, tokenIndex = position275, tokenIndex275 if buffer[position] != rune('E') { goto l268 } position++ } l275: goto l149 l268: position, tokenIndex = position149, tokenIndex149 if buffer[position] != rune('.') { goto l277 } position++ { position278, tokenIndex278 := position, tokenIndex if buffer[position] != rune('u') { goto l279 } position++ goto l278 l279: position, tokenIndex = position278, tokenIndex278 if buffer[position] != rune('U') { goto l277 } position++ } l278: { position280, tokenIndex280 := position, tokenIndex if buffer[position] != rune('l') { goto l281 } position++ goto l280 l281: position, tokenIndex = position280, tokenIndex280 if buffer[position] != rune('L') { goto l277 } position++ } l280: { position282, tokenIndex282 := position, tokenIndex if buffer[position] != rune('e') { goto l283 } position++ goto l282 l283: position, tokenIndex = position282, tokenIndex282 if buffer[position] != rune('E') { goto l277 } position++ } l282: { position284, tokenIndex284 := position, tokenIndex if buffer[position] != rune('b') { goto l285 } position++ goto l284 l285: position, tokenIndex = position284, tokenIndex284 if buffer[position] != rune('B') { goto l277 } position++ } l284: if buffer[position] != rune('1') { goto l277 } position++ if buffer[position] != rune('2') { goto l277 } position++ if buffer[position] != rune('8') { goto l277 } position++ goto l149 l277: position, tokenIndex = position149, tokenIndex149 if buffer[position] != rune('.') { goto l147 } position++ { position286, tokenIndex286 := position, tokenIndex if buffer[position] != rune('s') { goto l287 } position++ goto l286 l287: position, tokenIndex = position286, tokenIndex286 if buffer[position] != rune('S') { goto l147 } position++ } l286: { position288, tokenIndex288 := position, tokenIndex if buffer[position] != rune('l') { goto l289 } position++ goto l288 l289: position, tokenIndex = position288, tokenIndex288 if buffer[position] != rune('L') { goto l147 } position++ } l288: { position290, tokenIndex290 := position, tokenIndex if buffer[position] != rune('e') { goto l291 } position++ goto l290 l291: position, tokenIndex = position290, tokenIndex290 if buffer[position] != rune('E') { goto l147 } position++ } l290: { position292, tokenIndex292 := position, tokenIndex if buffer[position] != rune('b') { goto l293 } position++ goto l292 l293: position, tokenIndex = position292, tokenIndex292 if buffer[position] != rune('B') { goto l147 } position++ } l292: if buffer[position] != rune('1') { goto l147 } position++ if buffer[position] != rune('2') { goto l147 } position++ if buffer[position] != rune('8') { goto l147 } position++ } l149: add(ruleLabelContainingDirectiveName, position148) } return true l147: position, tokenIndex = position147, tokenIndex147 return false }, /* 14 SymbolArgs <- <(SymbolArg (WS? ',' WS? SymbolArg)*)> */ func() bool { position294, tokenIndex294 := position, tokenIndex { position295 := position if !_rules[ruleSymbolArg]() { goto l294 } l296: { position297, tokenIndex297 := position, tokenIndex { position298, tokenIndex298 := position, tokenIndex if !_rules[ruleWS]() { goto l298 } goto l299 l298: position, tokenIndex = position298, tokenIndex298 } l299: if buffer[position] != rune(',') { goto l297 } position++ { position300, tokenIndex300 := position, tokenIndex if !_rules[ruleWS]() { goto l300 } goto l301 l300: position, tokenIndex = position300, tokenIndex300 } l301: if !_rules[ruleSymbolArg]() { goto l297 } goto l296 l297: position, tokenIndex = position297, tokenIndex297 } add(ruleSymbolArgs, position295) } return true l294: position, tokenIndex = position294, tokenIndex294 return false }, /* 15 SymbolArg <- */ func() bool { position302, tokenIndex302 := position, tokenIndex { position303 := position if !_rules[ruleSymbolExpr]() { goto l302 } add(ruleSymbolArg, position303) } return true l302: position, tokenIndex = position302, tokenIndex302 return false }, /* 16 SymbolExpr <- <(SymbolAtom (WS? SymbolOperator WS? SymbolExpr)?)> */ func() bool { position304, tokenIndex304 := position, tokenIndex { position305 := position if !_rules[ruleSymbolAtom]() { goto l304 } { position306, tokenIndex306 := position, tokenIndex { position308, tokenIndex308 := position, tokenIndex if !_rules[ruleWS]() { goto l308 } goto l309 l308: position, tokenIndex = position308, tokenIndex308 } l309: if !_rules[ruleSymbolOperator]() { goto l306 } { position310, tokenIndex310 := position, tokenIndex if !_rules[ruleWS]() { goto l310 } goto l311 l310: position, tokenIndex = position310, tokenIndex310 } l311: if !_rules[ruleSymbolExpr]() { goto l306 } goto l307 l306: position, tokenIndex = position306, tokenIndex306 } l307: add(ruleSymbolExpr, position305) } return true l304: position, tokenIndex = position304, tokenIndex304 return false }, /* 17 SymbolAtom <- <(Offset / SymbolType / (LocalSymbol TCMarker?) / (SymbolName Offset) / (SymbolName TCMarker?) / Dot / (OpenParen WS? SymbolExpr WS? CloseParen))> */ func() bool { position312, tokenIndex312 := position, tokenIndex { position313 := position { position314, tokenIndex314 := position, tokenIndex if !_rules[ruleOffset]() { goto l315 } goto l314 l315: position, tokenIndex = position314, tokenIndex314 if !_rules[ruleSymbolType]() { goto l316 } goto l314 l316: position, tokenIndex = position314, tokenIndex314 if !_rules[ruleLocalSymbol]() { goto l317 } { position318, tokenIndex318 := position, tokenIndex if !_rules[ruleTCMarker]() { goto l318 } goto l319 l318: position, tokenIndex = position318, tokenIndex318 } l319: goto l314 l317: position, tokenIndex = position314, tokenIndex314 if !_rules[ruleSymbolName]() { goto l320 } if !_rules[ruleOffset]() { goto l320 } goto l314 l320: position, tokenIndex = position314, tokenIndex314 if !_rules[ruleSymbolName]() { goto l321 } { position322, tokenIndex322 := position, tokenIndex if !_rules[ruleTCMarker]() { goto l322 } goto l323 l322: position, tokenIndex = position322, tokenIndex322 } l323: goto l314 l321: position, tokenIndex = position314, tokenIndex314 if !_rules[ruleDot]() { goto l324 } goto l314 l324: position, tokenIndex = position314, tokenIndex314 if !_rules[ruleOpenParen]() { goto l312 } { position325, tokenIndex325 := position, tokenIndex if !_rules[ruleWS]() { goto l325 } goto l326 l325: position, tokenIndex = position325, tokenIndex325 } l326: if !_rules[ruleSymbolExpr]() { goto l312 } { position327, tokenIndex327 := position, tokenIndex if !_rules[ruleWS]() { goto l327 } goto l328 l327: position, tokenIndex = position327, tokenIndex327 } l328: if !_rules[ruleCloseParen]() { goto l312 } } l314: add(ruleSymbolAtom, position313) } return true l312: position, tokenIndex = position312, tokenIndex312 return false }, /* 18 SymbolOperator <- <('+' / '-' / '|' / ('<' '<') / ('>' '>'))> */ func() bool { position329, tokenIndex329 := position, tokenIndex { position330 := position { position331, tokenIndex331 := position, tokenIndex if buffer[position] != rune('+') { goto l332 } position++ goto l331 l332: position, tokenIndex = position331, tokenIndex331 if buffer[position] != rune('-') { goto l333 } position++ goto l331 l333: position, tokenIndex = position331, tokenIndex331 if buffer[position] != rune('|') { goto l334 } position++ goto l331 l334: position, tokenIndex = position331, tokenIndex331 if buffer[position] != rune('<') { goto l335 } position++ if buffer[position] != rune('<') { goto l335 } position++ goto l331 l335: position, tokenIndex = position331, tokenIndex331 if buffer[position] != rune('>') { goto l329 } position++ if buffer[position] != rune('>') { goto l329 } position++ } l331: add(ruleSymbolOperator, position330) } return true l329: position, tokenIndex = position329, tokenIndex329 return false }, /* 19 OpenParen <- <'('> */ func() bool { position336, tokenIndex336 := position, tokenIndex { position337 := position if buffer[position] != rune('(') { goto l336 } position++ add(ruleOpenParen, position337) } return true l336: position, tokenIndex = position336, tokenIndex336 return false }, /* 20 CloseParen <- <')'> */ func() bool { position338, tokenIndex338 := position, tokenIndex { position339 := position if buffer[position] != rune(')') { goto l338 } position++ add(ruleCloseParen, position339) } return true l338: position, tokenIndex = position338, tokenIndex338 return false }, /* 21 SymbolType <- <(('@' / '%') (('f' 'u' 'n' 'c' 't' 'i' 'o' 'n') / ('o' 'b' 'j' 'e' 'c' 't')))> */ func() bool { position340, tokenIndex340 := position, tokenIndex { position341 := position { position342, tokenIndex342 := position, tokenIndex if buffer[position] != rune('@') { goto l343 } position++ goto l342 l343: position, tokenIndex = position342, tokenIndex342 if buffer[position] != rune('%') { goto l340 } position++ } l342: { position344, tokenIndex344 := position, tokenIndex if buffer[position] != rune('f') { goto l345 } position++ if buffer[position] != rune('u') { goto l345 } position++ if buffer[position] != rune('n') { goto l345 } position++ if buffer[position] != rune('c') { goto l345 } position++ if buffer[position] != rune('t') { goto l345 } position++ if buffer[position] != rune('i') { goto l345 } position++ if buffer[position] != rune('o') { goto l345 } position++ if buffer[position] != rune('n') { goto l345 } position++ goto l344 l345: position, tokenIndex = position344, tokenIndex344 if buffer[position] != rune('o') { goto l340 } position++ if buffer[position] != rune('b') { goto l340 } position++ if buffer[position] != rune('j') { goto l340 } position++ if buffer[position] != rune('e') { goto l340 } position++ if buffer[position] != rune('c') { goto l340 } position++ if buffer[position] != rune('t') { goto l340 } position++ } l344: add(ruleSymbolType, position341) } return true l340: position, tokenIndex = position340, tokenIndex340 return false }, /* 22 Dot <- <'.'> */ func() bool { position346, tokenIndex346 := position, tokenIndex { position347 := position if buffer[position] != rune('.') { goto l346 } position++ add(ruleDot, position347) } return true l346: position, tokenIndex = position346, tokenIndex346 return false }, /* 23 TCMarker <- <('[' 'T' 'C' ']')> */ func() bool { position348, tokenIndex348 := position, tokenIndex { position349 := position if buffer[position] != rune('[') { goto l348 } position++ if buffer[position] != rune('T') { goto l348 } position++ if buffer[position] != rune('C') { goto l348 } position++ if buffer[position] != rune(']') { goto l348 } position++ add(ruleTCMarker, position349) } return true l348: position, tokenIndex = position348, tokenIndex348 return false }, /* 24 EscapedChar <- <('\\' .)> */ func() bool { position350, tokenIndex350 := position, tokenIndex { position351 := position if buffer[position] != rune('\\') { goto l350 } position++ if !matchDot() { goto l350 } add(ruleEscapedChar, position351) } return true l350: position, tokenIndex = position350, tokenIndex350 return false }, /* 25 WS <- <(' ' / '\t')+> */ func() bool { position352, tokenIndex352 := position, tokenIndex { position353 := position { position356, tokenIndex356 := position, tokenIndex if buffer[position] != rune(' ') { goto l357 } position++ goto l356 l357: position, tokenIndex = position356, tokenIndex356 if buffer[position] != rune('\t') { goto l352 } position++ } l356: l354: { position355, tokenIndex355 := position, tokenIndex { position358, tokenIndex358 := position, tokenIndex if buffer[position] != rune(' ') { goto l359 } position++ goto l358 l359: position, tokenIndex = position358, tokenIndex358 if buffer[position] != rune('\t') { goto l355 } position++ } l358: goto l354 l355: position, tokenIndex = position355, tokenIndex355 } add(ruleWS, position353) } return true l352: position, tokenIndex = position352, tokenIndex352 return false }, /* 26 Comment <- <((('/' '/') / '#') (!'\n' .)*)> */ func() bool { position360, tokenIndex360 := position, tokenIndex { position361 := position { position362, tokenIndex362 := position, tokenIndex if buffer[position] != rune('/') { goto l363 } position++ if buffer[position] != rune('/') { goto l363 } position++ goto l362 l363: position, tokenIndex = position362, tokenIndex362 if buffer[position] != rune('#') { goto l360 } position++ } l362: l364: { position365, tokenIndex365 := position, tokenIndex { position366, tokenIndex366 := position, tokenIndex if buffer[position] != rune('\n') { goto l366 } position++ goto l365 l366: position, tokenIndex = position366, tokenIndex366 } if !matchDot() { goto l365 } goto l364 l365: position, tokenIndex = position365, tokenIndex365 } add(ruleComment, position361) } return true l360: position, tokenIndex = position360, tokenIndex360 return false }, /* 27 Label <- <((LocalSymbol / LocalLabel / SymbolName) ':')> */ func() bool { position367, tokenIndex367 := position, tokenIndex { position368 := position { position369, tokenIndex369 := position, tokenIndex if !_rules[ruleLocalSymbol]() { goto l370 } goto l369 l370: position, tokenIndex = position369, tokenIndex369 if !_rules[ruleLocalLabel]() { goto l371 } goto l369 l371: position, tokenIndex = position369, tokenIndex369 if !_rules[ruleSymbolName]() { goto l367 } } l369: if buffer[position] != rune(':') { goto l367 } position++ add(ruleLabel, position368) } return true l367: position, tokenIndex = position367, tokenIndex367 return false }, /* 28 SymbolName <- <(([a-z] / [A-Z] / '.' / '_') ([a-z] / [A-Z] / '.' / ([0-9] / [0-9]) / '$' / '_')*)> */ func() bool { position372, tokenIndex372 := position, tokenIndex { position373 := position { position374, tokenIndex374 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { goto l375 } position++ goto l374 l375: position, tokenIndex = position374, tokenIndex374 if c := buffer[position]; c < rune('A') || c > rune('Z') { goto l376 } position++ goto l374 l376: position, tokenIndex = position374, tokenIndex374 if buffer[position] != rune('.') { goto l377 } position++ goto l374 l377: position, tokenIndex = position374, tokenIndex374 if buffer[position] != rune('_') { goto l372 } position++ } l374: l378: { position379, tokenIndex379 := position, tokenIndex { position380, tokenIndex380 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { goto l381 } position++ goto l380 l381: position, tokenIndex = position380, tokenIndex380 if c := buffer[position]; c < rune('A') || c > rune('Z') { goto l382 } position++ goto l380 l382: position, tokenIndex = position380, tokenIndex380 if buffer[position] != rune('.') { goto l383 } position++ goto l380 l383: position, tokenIndex = position380, tokenIndex380 { position385, tokenIndex385 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l386 } position++ goto l385 l386: position, tokenIndex = position385, tokenIndex385 if c := buffer[position]; c < rune('0') || c > rune('9') { goto l384 } position++ } l385: goto l380 l384: position, tokenIndex = position380, tokenIndex380 if buffer[position] != rune('$') { goto l387 } position++ goto l380 l387: position, tokenIndex = position380, tokenIndex380 if buffer[position] != rune('_') { goto l379 } position++ } l380: goto l378 l379: position, tokenIndex = position379, tokenIndex379 } add(ruleSymbolName, position373) } return true l372: position, tokenIndex = position372, tokenIndex372 return false }, /* 29 LocalSymbol <- <('.' 'L' ([a-z] / [A-Z] / ([a-z] / [A-Z]) / '.' / ([0-9] / [0-9]) / '$' / '_')+)> */ func() bool { position388, tokenIndex388 := position, tokenIndex { position389 := position if buffer[position] != rune('.') { goto l388 } position++ if buffer[position] != rune('L') { goto l388 } position++ { position392, tokenIndex392 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { goto l393 } position++ goto l392 l393: position, tokenIndex = position392, tokenIndex392 if c := buffer[position]; c < rune('A') || c > rune('Z') { goto l394 } position++ goto l392 l394: position, tokenIndex = position392, tokenIndex392 { position396, tokenIndex396 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { goto l397 } position++ goto l396 l397: position, tokenIndex = position396, tokenIndex396 if c := buffer[position]; c < rune('A') || c > rune('Z') { goto l395 } position++ } l396: goto l392 l395: position, tokenIndex = position392, tokenIndex392 if buffer[position] != rune('.') { goto l398 } position++ goto l392 l398: position, tokenIndex = position392, tokenIndex392 { position400, tokenIndex400 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l401 } position++ goto l400 l401: position, tokenIndex = position400, tokenIndex400 if c := buffer[position]; c < rune('0') || c > rune('9') { goto l399 } position++ } l400: goto l392 l399: position, tokenIndex = position392, tokenIndex392 if buffer[position] != rune('$') { goto l402 } position++ goto l392 l402: position, tokenIndex = position392, tokenIndex392 if buffer[position] != rune('_') { goto l388 } position++ } l392: l390: { position391, tokenIndex391 := position, tokenIndex { position403, tokenIndex403 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { goto l404 } position++ goto l403 l404: position, tokenIndex = position403, tokenIndex403 if c := buffer[position]; c < rune('A') || c > rune('Z') { goto l405 } position++ goto l403 l405: position, tokenIndex = position403, tokenIndex403 { position407, tokenIndex407 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { goto l408 } position++ goto l407 l408: position, tokenIndex = position407, tokenIndex407 if c := buffer[position]; c < rune('A') || c > rune('Z') { goto l406 } position++ } l407: goto l403 l406: position, tokenIndex = position403, tokenIndex403 if buffer[position] != rune('.') { goto l409 } position++ goto l403 l409: position, tokenIndex = position403, tokenIndex403 { position411, tokenIndex411 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l412 } position++ goto l411 l412: position, tokenIndex = position411, tokenIndex411 if c := buffer[position]; c < rune('0') || c > rune('9') { goto l410 } position++ } l411: goto l403 l410: position, tokenIndex = position403, tokenIndex403 if buffer[position] != rune('$') { goto l413 } position++ goto l403 l413: position, tokenIndex = position403, tokenIndex403 if buffer[position] != rune('_') { goto l391 } position++ } l403: goto l390 l391: position, tokenIndex = position391, tokenIndex391 } add(ruleLocalSymbol, position389) } return true l388: position, tokenIndex = position388, tokenIndex388 return false }, /* 30 LocalLabel <- <([0-9] ([0-9] / '$')*)> */ func() bool { position414, tokenIndex414 := position, tokenIndex { position415 := position if c := buffer[position]; c < rune('0') || c > rune('9') { goto l414 } position++ l416: { position417, tokenIndex417 := position, tokenIndex { position418, tokenIndex418 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l419 } position++ goto l418 l419: position, tokenIndex = position418, tokenIndex418 if buffer[position] != rune('$') { goto l417 } position++ } l418: goto l416 l417: position, tokenIndex = position417, tokenIndex417 } add(ruleLocalLabel, position415) } return true l414: position, tokenIndex = position414, tokenIndex414 return false }, /* 31 LocalLabelRef <- <([0-9] ([0-9] / '$')* ('b' / 'f'))> */ func() bool { position420, tokenIndex420 := position, tokenIndex { position421 := position if c := buffer[position]; c < rune('0') || c > rune('9') { goto l420 } position++ l422: { position423, tokenIndex423 := position, tokenIndex { position424, tokenIndex424 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l425 } position++ goto l424 l425: position, tokenIndex = position424, tokenIndex424 if buffer[position] != rune('$') { goto l423 } position++ } l424: goto l422 l423: position, tokenIndex = position423, tokenIndex423 } { position426, tokenIndex426 := position, tokenIndex if buffer[position] != rune('b') { goto l427 } position++ goto l426 l427: position, tokenIndex = position426, tokenIndex426 if buffer[position] != rune('f') { goto l420 } position++ } l426: add(ruleLocalLabelRef, position421) } return true l420: position, tokenIndex = position420, tokenIndex420 return false }, /* 32 Instruction <- <(InstructionName (WS InstructionArg (WS? ',' WS? InstructionArg)*)?)> */ func() bool { position428, tokenIndex428 := position, tokenIndex { position429 := position if !_rules[ruleInstructionName]() { goto l428 } { position430, tokenIndex430 := position, tokenIndex if !_rules[ruleWS]() { goto l430 } if !_rules[ruleInstructionArg]() { goto l430 } l432: { position433, tokenIndex433 := position, tokenIndex { position434, tokenIndex434 := position, tokenIndex if !_rules[ruleWS]() { goto l434 } goto l435 l434: position, tokenIndex = position434, tokenIndex434 } l435: if buffer[position] != rune(',') { goto l433 } position++ { position436, tokenIndex436 := position, tokenIndex if !_rules[ruleWS]() { goto l436 } goto l437 l436: position, tokenIndex = position436, tokenIndex436 } l437: if !_rules[ruleInstructionArg]() { goto l433 } goto l432 l433: position, tokenIndex = position433, tokenIndex433 } goto l431 l430: position, tokenIndex = position430, tokenIndex430 } l431: add(ruleInstruction, position429) } return true l428: position, tokenIndex = position428, tokenIndex428 return false }, /* 33 InstructionName <- <(([a-z] / [A-Z]) ([a-z] / [A-Z] / '.' / ([0-9] / [0-9]))* ('.' / '+' / '-')?)> */ func() bool { position438, tokenIndex438 := position, tokenIndex { position439 := position { position440, tokenIndex440 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { goto l441 } position++ goto l440 l441: position, tokenIndex = position440, tokenIndex440 if c := buffer[position]; c < rune('A') || c > rune('Z') { goto l438 } position++ } l440: l442: { position443, tokenIndex443 := position, tokenIndex { position444, tokenIndex444 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { goto l445 } position++ goto l444 l445: position, tokenIndex = position444, tokenIndex444 if c := buffer[position]; c < rune('A') || c > rune('Z') { goto l446 } position++ goto l444 l446: position, tokenIndex = position444, tokenIndex444 if buffer[position] != rune('.') { goto l447 } position++ goto l444 l447: position, tokenIndex = position444, tokenIndex444 { position448, tokenIndex448 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l449 } position++ goto l448 l449: position, tokenIndex = position448, tokenIndex448 if c := buffer[position]; c < rune('0') || c > rune('9') { goto l443 } position++ } l448: } l444: goto l442 l443: position, tokenIndex = position443, tokenIndex443 } { position450, tokenIndex450 := position, tokenIndex { position452, tokenIndex452 := position, tokenIndex if buffer[position] != rune('.') { goto l453 } position++ goto l452 l453: position, tokenIndex = position452, tokenIndex452 if buffer[position] != rune('+') { goto l454 } position++ goto l452 l454: position, tokenIndex = position452, tokenIndex452 if buffer[position] != rune('-') { goto l450 } position++ } l452: goto l451 l450: position, tokenIndex = position450, tokenIndex450 } l451: add(ruleInstructionName, position439) } return true l438: position, tokenIndex = position438, tokenIndex438 return false }, /* 34 InstructionArg <- <(IndirectionIndicator? (ARMConstantTweak / RegisterOrConstant / LocalLabelRef / TOCRefHigh / TOCRefLow / GOTLocation / GOTAddress / GOTSymbolOffset / MemoryRef) AVX512Token*)> */ func() bool { position455, tokenIndex455 := position, tokenIndex { position456 := position { position457, tokenIndex457 := position, tokenIndex if !_rules[ruleIndirectionIndicator]() { goto l457 } goto l458 l457: position, tokenIndex = position457, tokenIndex457 } l458: { position459, tokenIndex459 := position, tokenIndex if !_rules[ruleARMConstantTweak]() { goto l460 } goto l459 l460: position, tokenIndex = position459, tokenIndex459 if !_rules[ruleRegisterOrConstant]() { goto l461 } goto l459 l461: position, tokenIndex = position459, tokenIndex459 if !_rules[ruleLocalLabelRef]() { goto l462 } goto l459 l462: position, tokenIndex = position459, tokenIndex459 if !_rules[ruleTOCRefHigh]() { goto l463 } goto l459 l463: position, tokenIndex = position459, tokenIndex459 if !_rules[ruleTOCRefLow]() { goto l464 } goto l459 l464: position, tokenIndex = position459, tokenIndex459 if !_rules[ruleGOTLocation]() { goto l465 } goto l459 l465: position, tokenIndex = position459, tokenIndex459 if !_rules[ruleGOTAddress]() { goto l466 } goto l459 l466: position, tokenIndex = position459, tokenIndex459 if !_rules[ruleGOTSymbolOffset]() { goto l467 } goto l459 l467: position, tokenIndex = position459, tokenIndex459 if !_rules[ruleMemoryRef]() { goto l455 } } l459: l468: { position469, tokenIndex469 := position, tokenIndex if !_rules[ruleAVX512Token]() { goto l469 } goto l468 l469: position, tokenIndex = position469, tokenIndex469 } add(ruleInstructionArg, position456) } return true l455: position, tokenIndex = position455, tokenIndex455 return false }, /* 35 GOTLocation <- <('$' '_' 'G' 'L' 'O' 'B' 'A' 'L' '_' 'O' 'F' 'F' 'S' 'E' 'T' '_' 'T' 'A' 'B' 'L' 'E' '_' '-' LocalSymbol)> */ func() bool { position470, tokenIndex470 := position, tokenIndex { position471 := position if buffer[position] != rune('$') { goto l470 } position++ if buffer[position] != rune('_') { goto l470 } position++ if buffer[position] != rune('G') { goto l470 } position++ if buffer[position] != rune('L') { goto l470 } position++ if buffer[position] != rune('O') { goto l470 } position++ if buffer[position] != rune('B') { goto l470 } position++ if buffer[position] != rune('A') { goto l470 } position++ if buffer[position] != rune('L') { goto l470 } position++ if buffer[position] != rune('_') { goto l470 } position++ if buffer[position] != rune('O') { goto l470 } position++ if buffer[position] != rune('F') { goto l470 } position++ if buffer[position] != rune('F') { goto l470 } position++ if buffer[position] != rune('S') { goto l470 } position++ if buffer[position] != rune('E') { goto l470 } position++ if buffer[position] != rune('T') { goto l470 } position++ if buffer[position] != rune('_') { goto l470 } position++ if buffer[position] != rune('T') { goto l470 } position++ if buffer[position] != rune('A') { goto l470 } position++ if buffer[position] != rune('B') { goto l470 } position++ if buffer[position] != rune('L') { goto l470 } position++ if buffer[position] != rune('E') { goto l470 } position++ if buffer[position] != rune('_') { goto l470 } position++ if buffer[position] != rune('-') { goto l470 } position++ if !_rules[ruleLocalSymbol]() { goto l470 } add(ruleGOTLocation, position471) } return true l470: position, tokenIndex = position470, tokenIndex470 return false }, /* 36 GOTAddress <- <('_' 'G' 'L' 'O' 'B' 'A' 'L' '_' 'O' 'F' 'F' 'S' 'E' 'T' '_' 'T' 'A' 'B' 'L' 'E' '_' '(' '%' 'r' 'i' 'p' ')')> */ func() bool { position472, tokenIndex472 := position, tokenIndex { position473 := position if buffer[position] != rune('_') { goto l472 } position++ if buffer[position] != rune('G') { goto l472 } position++ if buffer[position] != rune('L') { goto l472 } position++ if buffer[position] != rune('O') { goto l472 } position++ if buffer[position] != rune('B') { goto l472 } position++ if buffer[position] != rune('A') { goto l472 } position++ if buffer[position] != rune('L') { goto l472 } position++ if buffer[position] != rune('_') { goto l472 } position++ if buffer[position] != rune('O') { goto l472 } position++ if buffer[position] != rune('F') { goto l472 } position++ if buffer[position] != rune('F') { goto l472 } position++ if buffer[position] != rune('S') { goto l472 } position++ if buffer[position] != rune('E') { goto l472 } position++ if buffer[position] != rune('T') { goto l472 } position++ if buffer[position] != rune('_') { goto l472 } position++ if buffer[position] != rune('T') { goto l472 } position++ if buffer[position] != rune('A') { goto l472 } position++ if buffer[position] != rune('B') { goto l472 } position++ if buffer[position] != rune('L') { goto l472 } position++ if buffer[position] != rune('E') { goto l472 } position++ if buffer[position] != rune('_') { goto l472 } position++ if buffer[position] != rune('(') { goto l472 } position++ if buffer[position] != rune('%') { goto l472 } position++ if buffer[position] != rune('r') { goto l472 } position++ if buffer[position] != rune('i') { goto l472 } position++ if buffer[position] != rune('p') { goto l472 } position++ if buffer[position] != rune(')') { goto l472 } position++ add(ruleGOTAddress, position473) } return true l472: position, tokenIndex = position472, tokenIndex472 return false }, /* 37 GOTSymbolOffset <- <(('$' SymbolName ('@' 'G' 'O' 'T') ('O' 'F' 'F')?) / (':' ('g' / 'G') ('o' / 'O') ('t' / 'T') ':' SymbolName))> */ func() bool { position474, tokenIndex474 := position, tokenIndex { position475 := position { position476, tokenIndex476 := position, tokenIndex if buffer[position] != rune('$') { goto l477 } position++ if !_rules[ruleSymbolName]() { goto l477 } if buffer[position] != rune('@') { goto l477 } position++ if buffer[position] != rune('G') { goto l477 } position++ if buffer[position] != rune('O') { goto l477 } position++ if buffer[position] != rune('T') { goto l477 } position++ { position478, tokenIndex478 := position, tokenIndex if buffer[position] != rune('O') { goto l478 } position++ if buffer[position] != rune('F') { goto l478 } position++ if buffer[position] != rune('F') { goto l478 } position++ goto l479 l478: position, tokenIndex = position478, tokenIndex478 } l479: goto l476 l477: position, tokenIndex = position476, tokenIndex476 if buffer[position] != rune(':') { goto l474 } position++ { position480, tokenIndex480 := position, tokenIndex if buffer[position] != rune('g') { goto l481 } position++ goto l480 l481: position, tokenIndex = position480, tokenIndex480 if buffer[position] != rune('G') { goto l474 } position++ } l480: { position482, tokenIndex482 := position, tokenIndex if buffer[position] != rune('o') { goto l483 } position++ goto l482 l483: position, tokenIndex = position482, tokenIndex482 if buffer[position] != rune('O') { goto l474 } position++ } l482: { position484, tokenIndex484 := position, tokenIndex if buffer[position] != rune('t') { goto l485 } position++ goto l484 l485: position, tokenIndex = position484, tokenIndex484 if buffer[position] != rune('T') { goto l474 } position++ } l484: if buffer[position] != rune(':') { goto l474 } position++ if !_rules[ruleSymbolName]() { goto l474 } } l476: add(ruleGOTSymbolOffset, position475) } return true l474: position, tokenIndex = position474, tokenIndex474 return false }, /* 38 AVX512Token <- <(WS? '{' '%'? ([0-9] / [a-z])* '}')> */ func() bool { position486, tokenIndex486 := position, tokenIndex { position487 := position { position488, tokenIndex488 := position, tokenIndex if !_rules[ruleWS]() { goto l488 } goto l489 l488: position, tokenIndex = position488, tokenIndex488 } l489: if buffer[position] != rune('{') { goto l486 } position++ { position490, tokenIndex490 := position, tokenIndex if buffer[position] != rune('%') { goto l490 } position++ goto l491 l490: position, tokenIndex = position490, tokenIndex490 } l491: l492: { position493, tokenIndex493 := position, tokenIndex { position494, tokenIndex494 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l495 } position++ goto l494 l495: position, tokenIndex = position494, tokenIndex494 if c := buffer[position]; c < rune('a') || c > rune('z') { goto l493 } position++ } l494: goto l492 l493: position, tokenIndex = position493, tokenIndex493 } if buffer[position] != rune('}') { goto l486 } position++ add(ruleAVX512Token, position487) } return true l486: position, tokenIndex = position486, tokenIndex486 return false }, /* 39 TOCRefHigh <- <('.' 'T' 'O' 'C' '.' '-' (('0' 'b') / ('.' 'L' ([a-z] / [A-Z] / '_' / [0-9])+)) ('@' ('h' / 'H') ('a' / 'A')))> */ func() bool { position496, tokenIndex496 := position, tokenIndex { position497 := position if buffer[position] != rune('.') { goto l496 } position++ if buffer[position] != rune('T') { goto l496 } position++ if buffer[position] != rune('O') { goto l496 } position++ if buffer[position] != rune('C') { goto l496 } position++ if buffer[position] != rune('.') { goto l496 } position++ if buffer[position] != rune('-') { goto l496 } position++ { position498, tokenIndex498 := position, tokenIndex if buffer[position] != rune('0') { goto l499 } position++ if buffer[position] != rune('b') { goto l499 } position++ goto l498 l499: position, tokenIndex = position498, tokenIndex498 if buffer[position] != rune('.') { goto l496 } position++ if buffer[position] != rune('L') { goto l496 } position++ { position502, tokenIndex502 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { goto l503 } position++ goto l502 l503: position, tokenIndex = position502, tokenIndex502 if c := buffer[position]; c < rune('A') || c > rune('Z') { goto l504 } position++ goto l502 l504: position, tokenIndex = position502, tokenIndex502 if buffer[position] != rune('_') { goto l505 } position++ goto l502 l505: position, tokenIndex = position502, tokenIndex502 if c := buffer[position]; c < rune('0') || c > rune('9') { goto l496 } position++ } l502: l500: { position501, tokenIndex501 := position, tokenIndex { position506, tokenIndex506 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { goto l507 } position++ goto l506 l507: position, tokenIndex = position506, tokenIndex506 if c := buffer[position]; c < rune('A') || c > rune('Z') { goto l508 } position++ goto l506 l508: position, tokenIndex = position506, tokenIndex506 if buffer[position] != rune('_') { goto l509 } position++ goto l506 l509: position, tokenIndex = position506, tokenIndex506 if c := buffer[position]; c < rune('0') || c > rune('9') { goto l501 } position++ } l506: goto l500 l501: position, tokenIndex = position501, tokenIndex501 } } l498: if buffer[position] != rune('@') { goto l496 } position++ { position510, tokenIndex510 := position, tokenIndex if buffer[position] != rune('h') { goto l511 } position++ goto l510 l511: position, tokenIndex = position510, tokenIndex510 if buffer[position] != rune('H') { goto l496 } position++ } l510: { position512, tokenIndex512 := position, tokenIndex if buffer[position] != rune('a') { goto l513 } position++ goto l512 l513: position, tokenIndex = position512, tokenIndex512 if buffer[position] != rune('A') { goto l496 } position++ } l512: add(ruleTOCRefHigh, position497) } return true l496: position, tokenIndex = position496, tokenIndex496 return false }, /* 40 TOCRefLow <- <('.' 'T' 'O' 'C' '.' '-' (('0' 'b') / ('.' 'L' ([a-z] / [A-Z] / '_' / [0-9])+)) ('@' ('l' / 'L')))> */ func() bool { position514, tokenIndex514 := position, tokenIndex { position515 := position if buffer[position] != rune('.') { goto l514 } position++ if buffer[position] != rune('T') { goto l514 } position++ if buffer[position] != rune('O') { goto l514 } position++ if buffer[position] != rune('C') { goto l514 } position++ if buffer[position] != rune('.') { goto l514 } position++ if buffer[position] != rune('-') { goto l514 } position++ { position516, tokenIndex516 := position, tokenIndex if buffer[position] != rune('0') { goto l517 } position++ if buffer[position] != rune('b') { goto l517 } position++ goto l516 l517: position, tokenIndex = position516, tokenIndex516 if buffer[position] != rune('.') { goto l514 } position++ if buffer[position] != rune('L') { goto l514 } position++ { position520, tokenIndex520 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { goto l521 } position++ goto l520 l521: position, tokenIndex = position520, tokenIndex520 if c := buffer[position]; c < rune('A') || c > rune('Z') { goto l522 } position++ goto l520 l522: position, tokenIndex = position520, tokenIndex520 if buffer[position] != rune('_') { goto l523 } position++ goto l520 l523: position, tokenIndex = position520, tokenIndex520 if c := buffer[position]; c < rune('0') || c > rune('9') { goto l514 } position++ } l520: l518: { position519, tokenIndex519 := position, tokenIndex { position524, tokenIndex524 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { goto l525 } position++ goto l524 l525: position, tokenIndex = position524, tokenIndex524 if c := buffer[position]; c < rune('A') || c > rune('Z') { goto l526 } position++ goto l524 l526: position, tokenIndex = position524, tokenIndex524 if buffer[position] != rune('_') { goto l527 } position++ goto l524 l527: position, tokenIndex = position524, tokenIndex524 if c := buffer[position]; c < rune('0') || c > rune('9') { goto l519 } position++ } l524: goto l518 l519: position, tokenIndex = position519, tokenIndex519 } } l516: if buffer[position] != rune('@') { goto l514 } position++ { position528, tokenIndex528 := position, tokenIndex if buffer[position] != rune('l') { goto l529 } position++ goto l528 l529: position, tokenIndex = position528, tokenIndex528 if buffer[position] != rune('L') { goto l514 } position++ } l528: add(ruleTOCRefLow, position515) } return true l514: position, tokenIndex = position514, tokenIndex514 return false }, /* 41 IndirectionIndicator <- <'*'> */ func() bool { position530, tokenIndex530 := position, tokenIndex { position531 := position if buffer[position] != rune('*') { goto l530 } position++ add(ruleIndirectionIndicator, position531) } return true l530: position, tokenIndex = position530, tokenIndex530 return false }, /* 42 RegisterOrConstant <- <((('%' ([a-z] / [A-Z]) ([a-z] / [A-Z] / ([0-9] / [0-9]))*) / ('$'? ((Offset Offset) / Offset)) / ('#' Offset ('*' [0-9]+ ('-' [0-9] [0-9]*)?)?) / ('#' '~'? '(' [0-9] WS? ('<' '<') WS? [0-9] ')') / ARMRegister) !('f' / 'b' / ':' / '(' / '+' / '-'))> */ func() bool { position532, tokenIndex532 := position, tokenIndex { position533 := position { position534, tokenIndex534 := position, tokenIndex if buffer[position] != rune('%') { goto l535 } position++ { position536, tokenIndex536 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { goto l537 } position++ goto l536 l537: position, tokenIndex = position536, tokenIndex536 if c := buffer[position]; c < rune('A') || c > rune('Z') { goto l535 } position++ } l536: l538: { position539, tokenIndex539 := position, tokenIndex { position540, tokenIndex540 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { goto l541 } position++ goto l540 l541: position, tokenIndex = position540, tokenIndex540 if c := buffer[position]; c < rune('A') || c > rune('Z') { goto l542 } position++ goto l540 l542: position, tokenIndex = position540, tokenIndex540 { position543, tokenIndex543 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l544 } position++ goto l543 l544: position, tokenIndex = position543, tokenIndex543 if c := buffer[position]; c < rune('0') || c > rune('9') { goto l539 } position++ } l543: } l540: goto l538 l539: position, tokenIndex = position539, tokenIndex539 } goto l534 l535: position, tokenIndex = position534, tokenIndex534 { position546, tokenIndex546 := position, tokenIndex if buffer[position] != rune('$') { goto l546 } position++ goto l547 l546: position, tokenIndex = position546, tokenIndex546 } l547: { position548, tokenIndex548 := position, tokenIndex if !_rules[ruleOffset]() { goto l549 } if !_rules[ruleOffset]() { goto l549 } goto l548 l549: position, tokenIndex = position548, tokenIndex548 if !_rules[ruleOffset]() { goto l545 } } l548: goto l534 l545: position, tokenIndex = position534, tokenIndex534 if buffer[position] != rune('#') { goto l550 } position++ if !_rules[ruleOffset]() { goto l550 } { position551, tokenIndex551 := position, tokenIndex if buffer[position] != rune('*') { goto l551 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { goto l551 } position++ l553: { position554, tokenIndex554 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l554 } position++ goto l553 l554: position, tokenIndex = position554, tokenIndex554 } { position555, tokenIndex555 := position, tokenIndex if buffer[position] != rune('-') { goto l555 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { goto l555 } position++ l557: { position558, tokenIndex558 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l558 } position++ goto l557 l558: position, tokenIndex = position558, tokenIndex558 } goto l556 l555: position, tokenIndex = position555, tokenIndex555 } l556: goto l552 l551: position, tokenIndex = position551, tokenIndex551 } l552: goto l534 l550: position, tokenIndex = position534, tokenIndex534 if buffer[position] != rune('#') { goto l559 } position++ { position560, tokenIndex560 := position, tokenIndex if buffer[position] != rune('~') { goto l560 } position++ goto l561 l560: position, tokenIndex = position560, tokenIndex560 } l561: if buffer[position] != rune('(') { goto l559 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { goto l559 } position++ { position562, tokenIndex562 := position, tokenIndex if !_rules[ruleWS]() { goto l562 } goto l563 l562: position, tokenIndex = position562, tokenIndex562 } l563: if buffer[position] != rune('<') { goto l559 } position++ if buffer[position] != rune('<') { goto l559 } position++ { position564, tokenIndex564 := position, tokenIndex if !_rules[ruleWS]() { goto l564 } goto l565 l564: position, tokenIndex = position564, tokenIndex564 } l565: if c := buffer[position]; c < rune('0') || c > rune('9') { goto l559 } position++ if buffer[position] != rune(')') { goto l559 } position++ goto l534 l559: position, tokenIndex = position534, tokenIndex534 if !_rules[ruleARMRegister]() { goto l532 } } l534: { position566, tokenIndex566 := position, tokenIndex { position567, tokenIndex567 := position, tokenIndex if buffer[position] != rune('f') { goto l568 } position++ goto l567 l568: position, tokenIndex = position567, tokenIndex567 if buffer[position] != rune('b') { goto l569 } position++ goto l567 l569: position, tokenIndex = position567, tokenIndex567 if buffer[position] != rune(':') { goto l570 } position++ goto l567 l570: position, tokenIndex = position567, tokenIndex567 if buffer[position] != rune('(') { goto l571 } position++ goto l567 l571: position, tokenIndex = position567, tokenIndex567 if buffer[position] != rune('+') { goto l572 } position++ goto l567 l572: position, tokenIndex = position567, tokenIndex567 if buffer[position] != rune('-') { goto l566 } position++ } l567: goto l532 l566: position, tokenIndex = position566, tokenIndex566 } add(ruleRegisterOrConstant, position533) } return true l532: position, tokenIndex = position532, tokenIndex532 return false }, /* 43 ARMConstantTweak <- <((((('u' / 's') (('x' / 'X') ('t' / 'T')) ('x' / 'w' / 'h' / 'b')) / (('l' / 'L') ('s' / 'S') ('l' / 'L')) / (('l' / 'L') ('s' / 'S') ('r' / 'R')) / (('r' / 'R') ('o' / 'O') ('r' / 'R')) / (('a' / 'A') ('s' / 'S') ('r' / 'R'))) (WS '#' Offset)?) / (('m' / 'M') ('u' / 'U') ('l' / 'L') ' ' ('v' / 'V') ('l' / 'L')) / (('m' / 'M') ('u' / 'U') ('l' / 'L') ' ' '#' [0-9]))> */ func() bool { position573, tokenIndex573 := position, tokenIndex { position574 := position { position575, tokenIndex575 := position, tokenIndex { position577, tokenIndex577 := position, tokenIndex { position579, tokenIndex579 := position, tokenIndex if buffer[position] != rune('u') { goto l580 } position++ goto l579 l580: position, tokenIndex = position579, tokenIndex579 if buffer[position] != rune('s') { goto l578 } position++ } l579: { position581, tokenIndex581 := position, tokenIndex if buffer[position] != rune('x') { goto l582 } position++ goto l581 l582: position, tokenIndex = position581, tokenIndex581 if buffer[position] != rune('X') { goto l578 } position++ } l581: { position583, tokenIndex583 := position, tokenIndex if buffer[position] != rune('t') { goto l584 } position++ goto l583 l584: position, tokenIndex = position583, tokenIndex583 if buffer[position] != rune('T') { goto l578 } position++ } l583: { position585, tokenIndex585 := position, tokenIndex if buffer[position] != rune('x') { goto l586 } position++ goto l585 l586: position, tokenIndex = position585, tokenIndex585 if buffer[position] != rune('w') { goto l587 } position++ goto l585 l587: position, tokenIndex = position585, tokenIndex585 if buffer[position] != rune('h') { goto l588 } position++ goto l585 l588: position, tokenIndex = position585, tokenIndex585 if buffer[position] != rune('b') { goto l578 } position++ } l585: goto l577 l578: position, tokenIndex = position577, tokenIndex577 { position590, tokenIndex590 := position, tokenIndex if buffer[position] != rune('l') { goto l591 } position++ goto l590 l591: position, tokenIndex = position590, tokenIndex590 if buffer[position] != rune('L') { goto l589 } position++ } l590: { position592, tokenIndex592 := position, tokenIndex if buffer[position] != rune('s') { goto l593 } position++ goto l592 l593: position, tokenIndex = position592, tokenIndex592 if buffer[position] != rune('S') { goto l589 } position++ } l592: { position594, tokenIndex594 := position, tokenIndex if buffer[position] != rune('l') { goto l595 } position++ goto l594 l595: position, tokenIndex = position594, tokenIndex594 if buffer[position] != rune('L') { goto l589 } position++ } l594: goto l577 l589: position, tokenIndex = position577, tokenIndex577 { position597, tokenIndex597 := position, tokenIndex if buffer[position] != rune('l') { goto l598 } position++ goto l597 l598: position, tokenIndex = position597, tokenIndex597 if buffer[position] != rune('L') { goto l596 } position++ } l597: { position599, tokenIndex599 := position, tokenIndex if buffer[position] != rune('s') { goto l600 } position++ goto l599 l600: position, tokenIndex = position599, tokenIndex599 if buffer[position] != rune('S') { goto l596 } position++ } l599: { position601, tokenIndex601 := position, tokenIndex if buffer[position] != rune('r') { goto l602 } position++ goto l601 l602: position, tokenIndex = position601, tokenIndex601 if buffer[position] != rune('R') { goto l596 } position++ } l601: goto l577 l596: position, tokenIndex = position577, tokenIndex577 { position604, tokenIndex604 := position, tokenIndex if buffer[position] != rune('r') { goto l605 } position++ goto l604 l605: position, tokenIndex = position604, tokenIndex604 if buffer[position] != rune('R') { goto l603 } position++ } l604: { position606, tokenIndex606 := position, tokenIndex if buffer[position] != rune('o') { goto l607 } position++ goto l606 l607: position, tokenIndex = position606, tokenIndex606 if buffer[position] != rune('O') { goto l603 } position++ } l606: { position608, tokenIndex608 := position, tokenIndex if buffer[position] != rune('r') { goto l609 } position++ goto l608 l609: position, tokenIndex = position608, tokenIndex608 if buffer[position] != rune('R') { goto l603 } position++ } l608: goto l577 l603: position, tokenIndex = position577, tokenIndex577 { position610, tokenIndex610 := position, tokenIndex if buffer[position] != rune('a') { goto l611 } position++ goto l610 l611: position, tokenIndex = position610, tokenIndex610 if buffer[position] != rune('A') { goto l576 } position++ } l610: { position612, tokenIndex612 := position, tokenIndex if buffer[position] != rune('s') { goto l613 } position++ goto l612 l613: position, tokenIndex = position612, tokenIndex612 if buffer[position] != rune('S') { goto l576 } position++ } l612: { position614, tokenIndex614 := position, tokenIndex if buffer[position] != rune('r') { goto l615 } position++ goto l614 l615: position, tokenIndex = position614, tokenIndex614 if buffer[position] != rune('R') { goto l576 } position++ } l614: } l577: { position616, tokenIndex616 := position, tokenIndex if !_rules[ruleWS]() { goto l616 } if buffer[position] != rune('#') { goto l616 } position++ if !_rules[ruleOffset]() { goto l616 } goto l617 l616: position, tokenIndex = position616, tokenIndex616 } l617: goto l575 l576: position, tokenIndex = position575, tokenIndex575 { position619, tokenIndex619 := position, tokenIndex if buffer[position] != rune('m') { goto l620 } position++ goto l619 l620: position, tokenIndex = position619, tokenIndex619 if buffer[position] != rune('M') { goto l618 } position++ } l619: { position621, tokenIndex621 := position, tokenIndex if buffer[position] != rune('u') { goto l622 } position++ goto l621 l622: position, tokenIndex = position621, tokenIndex621 if buffer[position] != rune('U') { goto l618 } position++ } l621: { position623, tokenIndex623 := position, tokenIndex if buffer[position] != rune('l') { goto l624 } position++ goto l623 l624: position, tokenIndex = position623, tokenIndex623 if buffer[position] != rune('L') { goto l618 } position++ } l623: if buffer[position] != rune(' ') { goto l618 } position++ { position625, tokenIndex625 := position, tokenIndex if buffer[position] != rune('v') { goto l626 } position++ goto l625 l626: position, tokenIndex = position625, tokenIndex625 if buffer[position] != rune('V') { goto l618 } position++ } l625: { position627, tokenIndex627 := position, tokenIndex if buffer[position] != rune('l') { goto l628 } position++ goto l627 l628: position, tokenIndex = position627, tokenIndex627 if buffer[position] != rune('L') { goto l618 } position++ } l627: goto l575 l618: position, tokenIndex = position575, tokenIndex575 { position629, tokenIndex629 := position, tokenIndex if buffer[position] != rune('m') { goto l630 } position++ goto l629 l630: position, tokenIndex = position629, tokenIndex629 if buffer[position] != rune('M') { goto l573 } position++ } l629: { position631, tokenIndex631 := position, tokenIndex if buffer[position] != rune('u') { goto l632 } position++ goto l631 l632: position, tokenIndex = position631, tokenIndex631 if buffer[position] != rune('U') { goto l573 } position++ } l631: { position633, tokenIndex633 := position, tokenIndex if buffer[position] != rune('l') { goto l634 } position++ goto l633 l634: position, tokenIndex = position633, tokenIndex633 if buffer[position] != rune('L') { goto l573 } position++ } l633: if buffer[position] != rune(' ') { goto l573 } position++ if buffer[position] != rune('#') { goto l573 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { goto l573 } position++ } l575: add(ruleARMConstantTweak, position574) } return true l573: position, tokenIndex = position573, tokenIndex573 return false }, /* 44 ARMRegister <- <((('s' / 'S') ('p' / 'P')) / (('x' / 'w' / 'd' / 'q' / 's' / 'h' / 'b') [0-9] [0-9]?) / (('x' / 'X') ('z' / 'Z') ('r' / 'R')) / (('w' / 'W') ('z' / 'Z') ('r' / 'R')) / (('n' / 'N') ('z' / 'Z') ('c' / 'C') ('v' / 'V')) / SVE2PredicateRegister / ARMVectorRegister / SVE2SpecialValue / ('{' WS? ARMVectorRegister (',' WS? ARMVectorRegister)* WS? '}' ('[' [0-9] [0-9]? ']')?))> */ func() bool { position635, tokenIndex635 := position, tokenIndex { position636 := position { position637, tokenIndex637 := position, tokenIndex { position639, tokenIndex639 := position, tokenIndex if buffer[position] != rune('s') { goto l640 } position++ goto l639 l640: position, tokenIndex = position639, tokenIndex639 if buffer[position] != rune('S') { goto l638 } position++ } l639: { position641, tokenIndex641 := position, tokenIndex if buffer[position] != rune('p') { goto l642 } position++ goto l641 l642: position, tokenIndex = position641, tokenIndex641 if buffer[position] != rune('P') { goto l638 } position++ } l641: goto l637 l638: position, tokenIndex = position637, tokenIndex637 { position644, tokenIndex644 := position, tokenIndex if buffer[position] != rune('x') { goto l645 } position++ goto l644 l645: position, tokenIndex = position644, tokenIndex644 if buffer[position] != rune('w') { goto l646 } position++ goto l644 l646: position, tokenIndex = position644, tokenIndex644 if buffer[position] != rune('d') { goto l647 } position++ goto l644 l647: position, tokenIndex = position644, tokenIndex644 if buffer[position] != rune('q') { goto l648 } position++ goto l644 l648: position, tokenIndex = position644, tokenIndex644 if buffer[position] != rune('s') { goto l649 } position++ goto l644 l649: position, tokenIndex = position644, tokenIndex644 if buffer[position] != rune('h') { goto l650 } position++ goto l644 l650: position, tokenIndex = position644, tokenIndex644 if buffer[position] != rune('b') { goto l643 } position++ } l644: if c := buffer[position]; c < rune('0') || c > rune('9') { goto l643 } position++ { position651, tokenIndex651 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l651 } position++ goto l652 l651: position, tokenIndex = position651, tokenIndex651 } l652: goto l637 l643: position, tokenIndex = position637, tokenIndex637 { position654, tokenIndex654 := position, tokenIndex if buffer[position] != rune('x') { goto l655 } position++ goto l654 l655: position, tokenIndex = position654, tokenIndex654 if buffer[position] != rune('X') { goto l653 } position++ } l654: { position656, tokenIndex656 := position, tokenIndex if buffer[position] != rune('z') { goto l657 } position++ goto l656 l657: position, tokenIndex = position656, tokenIndex656 if buffer[position] != rune('Z') { goto l653 } position++ } l656: { position658, tokenIndex658 := position, tokenIndex if buffer[position] != rune('r') { goto l659 } position++ goto l658 l659: position, tokenIndex = position658, tokenIndex658 if buffer[position] != rune('R') { goto l653 } position++ } l658: goto l637 l653: position, tokenIndex = position637, tokenIndex637 { position661, tokenIndex661 := position, tokenIndex if buffer[position] != rune('w') { goto l662 } position++ goto l661 l662: position, tokenIndex = position661, tokenIndex661 if buffer[position] != rune('W') { goto l660 } position++ } l661: { position663, tokenIndex663 := position, tokenIndex if buffer[position] != rune('z') { goto l664 } position++ goto l663 l664: position, tokenIndex = position663, tokenIndex663 if buffer[position] != rune('Z') { goto l660 } position++ } l663: { position665, tokenIndex665 := position, tokenIndex if buffer[position] != rune('r') { goto l666 } position++ goto l665 l666: position, tokenIndex = position665, tokenIndex665 if buffer[position] != rune('R') { goto l660 } position++ } l665: goto l637 l660: position, tokenIndex = position637, tokenIndex637 { position668, tokenIndex668 := position, tokenIndex if buffer[position] != rune('n') { goto l669 } position++ goto l668 l669: position, tokenIndex = position668, tokenIndex668 if buffer[position] != rune('N') { goto l667 } position++ } l668: { position670, tokenIndex670 := position, tokenIndex if buffer[position] != rune('z') { goto l671 } position++ goto l670 l671: position, tokenIndex = position670, tokenIndex670 if buffer[position] != rune('Z') { goto l667 } position++ } l670: { position672, tokenIndex672 := position, tokenIndex if buffer[position] != rune('c') { goto l673 } position++ goto l672 l673: position, tokenIndex = position672, tokenIndex672 if buffer[position] != rune('C') { goto l667 } position++ } l672: { position674, tokenIndex674 := position, tokenIndex if buffer[position] != rune('v') { goto l675 } position++ goto l674 l675: position, tokenIndex = position674, tokenIndex674 if buffer[position] != rune('V') { goto l667 } position++ } l674: goto l637 l667: position, tokenIndex = position637, tokenIndex637 if !_rules[ruleSVE2PredicateRegister]() { goto l676 } goto l637 l676: position, tokenIndex = position637, tokenIndex637 if !_rules[ruleARMVectorRegister]() { goto l677 } goto l637 l677: position, tokenIndex = position637, tokenIndex637 if !_rules[ruleSVE2SpecialValue]() { goto l678 } goto l637 l678: position, tokenIndex = position637, tokenIndex637 if buffer[position] != rune('{') { goto l635 } position++ { position679, tokenIndex679 := position, tokenIndex if !_rules[ruleWS]() { goto l679 } goto l680 l679: position, tokenIndex = position679, tokenIndex679 } l680: if !_rules[ruleARMVectorRegister]() { goto l635 } l681: { position682, tokenIndex682 := position, tokenIndex if buffer[position] != rune(',') { goto l682 } position++ { position683, tokenIndex683 := position, tokenIndex if !_rules[ruleWS]() { goto l683 } goto l684 l683: position, tokenIndex = position683, tokenIndex683 } l684: if !_rules[ruleARMVectorRegister]() { goto l682 } goto l681 l682: position, tokenIndex = position682, tokenIndex682 } { position685, tokenIndex685 := position, tokenIndex if !_rules[ruleWS]() { goto l685 } goto l686 l685: position, tokenIndex = position685, tokenIndex685 } l686: if buffer[position] != rune('}') { goto l635 } position++ { position687, tokenIndex687 := position, tokenIndex if buffer[position] != rune('[') { goto l687 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { goto l687 } position++ { position689, tokenIndex689 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l689 } position++ goto l690 l689: position, tokenIndex = position689, tokenIndex689 } l690: if buffer[position] != rune(']') { goto l687 } position++ goto l688 l687: position, tokenIndex = position687, tokenIndex687 } l688: } l637: add(ruleARMRegister, position636) } return true l635: position, tokenIndex = position635, tokenIndex635 return false }, /* 45 ARMVectorRegister <- <(('p' / 'v' / 'z') [0-9] [0-9]? !([0-9] / [0-9] / ([a-z] / [A-Z]) / '_') ('.' [0-9]* ('b' / 's' / 'd' / 'h' / 'q') ('[' [0-9] [0-9]? ']')?)?)> */ func() bool { position691, tokenIndex691 := position, tokenIndex { position692 := position { position693, tokenIndex693 := position, tokenIndex if buffer[position] != rune('p') { goto l694 } position++ goto l693 l694: position, tokenIndex = position693, tokenIndex693 if buffer[position] != rune('v') { goto l695 } position++ goto l693 l695: position, tokenIndex = position693, tokenIndex693 if buffer[position] != rune('z') { goto l691 } position++ } l693: if c := buffer[position]; c < rune('0') || c > rune('9') { goto l691 } position++ { position696, tokenIndex696 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l696 } position++ goto l697 l696: position, tokenIndex = position696, tokenIndex696 } l697: { position698, tokenIndex698 := position, tokenIndex { position699, tokenIndex699 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l700 } position++ goto l699 l700: position, tokenIndex = position699, tokenIndex699 if c := buffer[position]; c < rune('0') || c > rune('9') { goto l701 } position++ goto l699 l701: position, tokenIndex = position699, tokenIndex699 { position703, tokenIndex703 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { goto l704 } position++ goto l703 l704: position, tokenIndex = position703, tokenIndex703 if c := buffer[position]; c < rune('A') || c > rune('Z') { goto l702 } position++ } l703: goto l699 l702: position, tokenIndex = position699, tokenIndex699 if buffer[position] != rune('_') { goto l698 } position++ } l699: goto l691 l698: position, tokenIndex = position698, tokenIndex698 } { position705, tokenIndex705 := position, tokenIndex if buffer[position] != rune('.') { goto l705 } position++ l707: { position708, tokenIndex708 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l708 } position++ goto l707 l708: position, tokenIndex = position708, tokenIndex708 } { position709, tokenIndex709 := position, tokenIndex if buffer[position] != rune('b') { goto l710 } position++ goto l709 l710: position, tokenIndex = position709, tokenIndex709 if buffer[position] != rune('s') { goto l711 } position++ goto l709 l711: position, tokenIndex = position709, tokenIndex709 if buffer[position] != rune('d') { goto l712 } position++ goto l709 l712: position, tokenIndex = position709, tokenIndex709 if buffer[position] != rune('h') { goto l713 } position++ goto l709 l713: position, tokenIndex = position709, tokenIndex709 if buffer[position] != rune('q') { goto l705 } position++ } l709: { position714, tokenIndex714 := position, tokenIndex if buffer[position] != rune('[') { goto l714 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { goto l714 } position++ { position716, tokenIndex716 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l716 } position++ goto l717 l716: position, tokenIndex = position716, tokenIndex716 } l717: if buffer[position] != rune(']') { goto l714 } position++ goto l715 l714: position, tokenIndex = position714, tokenIndex714 } l715: goto l706 l705: position, tokenIndex = position705, tokenIndex705 } l706: add(ruleARMVectorRegister, position692) } return true l691: position, tokenIndex = position691, tokenIndex691 return false }, /* 46 SVE2PredicateRegister <- <(('p' / 'P') [0-9] [0-9]? '/' ('m' / 'M' / ('z' / 'Z')))> */ func() bool { position718, tokenIndex718 := position, tokenIndex { position719 := position { position720, tokenIndex720 := position, tokenIndex if buffer[position] != rune('p') { goto l721 } position++ goto l720 l721: position, tokenIndex = position720, tokenIndex720 if buffer[position] != rune('P') { goto l718 } position++ } l720: if c := buffer[position]; c < rune('0') || c > rune('9') { goto l718 } position++ { position722, tokenIndex722 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l722 } position++ goto l723 l722: position, tokenIndex = position722, tokenIndex722 } l723: if buffer[position] != rune('/') { goto l718 } position++ { position724, tokenIndex724 := position, tokenIndex if buffer[position] != rune('m') { goto l725 } position++ goto l724 l725: position, tokenIndex = position724, tokenIndex724 if buffer[position] != rune('M') { goto l726 } position++ goto l724 l726: position, tokenIndex = position724, tokenIndex724 { position727, tokenIndex727 := position, tokenIndex if buffer[position] != rune('z') { goto l728 } position++ goto l727 l728: position, tokenIndex = position727, tokenIndex727 if buffer[position] != rune('Z') { goto l718 } position++ } l727: } l724: add(ruleSVE2PredicateRegister, position719) } return true l718: position, tokenIndex = position718, tokenIndex718 return false }, /* 47 SVE2SpecialValue <- <(((('p' / 'P') ('o' / 'O') ('w' / 'W') '2') / (('v' / 'V') ('l' / 'L') ('1' / '2' / '3' / '4' / '5' / '6' / '7' / '8') ![0-9]) / (('v' / 'V') ('l' / 'L') '1' '6') / (('v' / 'V') ('l' / 'L') '3' '2') / (('v' / 'V') ('l' / 'L') '6' '4') / (('v' / 'V') ('l' / 'L') '1' '2' '8') / (('v' / 'V') ('l' / 'L') '2' '5' '6') / (('m' / 'M') ('u' / 'U') ('l' / 'L') '3') / (('m' / 'M') ('u' / 'U') ('l' / 'L') '4') / (('a' / 'A') ('l' / 'L') ('l' / 'L'))) !([0-9] / [0-9] / ([a-z] / [A-Z]) / '_'))> */ func() bool { position729, tokenIndex729 := position, tokenIndex { position730 := position { position731, tokenIndex731 := position, tokenIndex { position733, tokenIndex733 := position, tokenIndex if buffer[position] != rune('p') { goto l734 } position++ goto l733 l734: position, tokenIndex = position733, tokenIndex733 if buffer[position] != rune('P') { goto l732 } position++ } l733: { position735, tokenIndex735 := position, tokenIndex if buffer[position] != rune('o') { goto l736 } position++ goto l735 l736: position, tokenIndex = position735, tokenIndex735 if buffer[position] != rune('O') { goto l732 } position++ } l735: { position737, tokenIndex737 := position, tokenIndex if buffer[position] != rune('w') { goto l738 } position++ goto l737 l738: position, tokenIndex = position737, tokenIndex737 if buffer[position] != rune('W') { goto l732 } position++ } l737: if buffer[position] != rune('2') { goto l732 } position++ goto l731 l732: position, tokenIndex = position731, tokenIndex731 { position740, tokenIndex740 := position, tokenIndex if buffer[position] != rune('v') { goto l741 } position++ goto l740 l741: position, tokenIndex = position740, tokenIndex740 if buffer[position] != rune('V') { goto l739 } position++ } l740: { position742, tokenIndex742 := position, tokenIndex if buffer[position] != rune('l') { goto l743 } position++ goto l742 l743: position, tokenIndex = position742, tokenIndex742 if buffer[position] != rune('L') { goto l739 } position++ } l742: { position744, tokenIndex744 := position, tokenIndex if buffer[position] != rune('1') { goto l745 } position++ goto l744 l745: position, tokenIndex = position744, tokenIndex744 if buffer[position] != rune('2') { goto l746 } position++ goto l744 l746: position, tokenIndex = position744, tokenIndex744 if buffer[position] != rune('3') { goto l747 } position++ goto l744 l747: position, tokenIndex = position744, tokenIndex744 if buffer[position] != rune('4') { goto l748 } position++ goto l744 l748: position, tokenIndex = position744, tokenIndex744 if buffer[position] != rune('5') { goto l749 } position++ goto l744 l749: position, tokenIndex = position744, tokenIndex744 if buffer[position] != rune('6') { goto l750 } position++ goto l744 l750: position, tokenIndex = position744, tokenIndex744 if buffer[position] != rune('7') { goto l751 } position++ goto l744 l751: position, tokenIndex = position744, tokenIndex744 if buffer[position] != rune('8') { goto l739 } position++ } l744: { position752, tokenIndex752 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l752 } position++ goto l739 l752: position, tokenIndex = position752, tokenIndex752 } goto l731 l739: position, tokenIndex = position731, tokenIndex731 { position754, tokenIndex754 := position, tokenIndex if buffer[position] != rune('v') { goto l755 } position++ goto l754 l755: position, tokenIndex = position754, tokenIndex754 if buffer[position] != rune('V') { goto l753 } position++ } l754: { position756, tokenIndex756 := position, tokenIndex if buffer[position] != rune('l') { goto l757 } position++ goto l756 l757: position, tokenIndex = position756, tokenIndex756 if buffer[position] != rune('L') { goto l753 } position++ } l756: if buffer[position] != rune('1') { goto l753 } position++ if buffer[position] != rune('6') { goto l753 } position++ goto l731 l753: position, tokenIndex = position731, tokenIndex731 { position759, tokenIndex759 := position, tokenIndex if buffer[position] != rune('v') { goto l760 } position++ goto l759 l760: position, tokenIndex = position759, tokenIndex759 if buffer[position] != rune('V') { goto l758 } position++ } l759: { position761, tokenIndex761 := position, tokenIndex if buffer[position] != rune('l') { goto l762 } position++ goto l761 l762: position, tokenIndex = position761, tokenIndex761 if buffer[position] != rune('L') { goto l758 } position++ } l761: if buffer[position] != rune('3') { goto l758 } position++ if buffer[position] != rune('2') { goto l758 } position++ goto l731 l758: position, tokenIndex = position731, tokenIndex731 { position764, tokenIndex764 := position, tokenIndex if buffer[position] != rune('v') { goto l765 } position++ goto l764 l765: position, tokenIndex = position764, tokenIndex764 if buffer[position] != rune('V') { goto l763 } position++ } l764: { position766, tokenIndex766 := position, tokenIndex if buffer[position] != rune('l') { goto l767 } position++ goto l766 l767: position, tokenIndex = position766, tokenIndex766 if buffer[position] != rune('L') { goto l763 } position++ } l766: if buffer[position] != rune('6') { goto l763 } position++ if buffer[position] != rune('4') { goto l763 } position++ goto l731 l763: position, tokenIndex = position731, tokenIndex731 { position769, tokenIndex769 := position, tokenIndex if buffer[position] != rune('v') { goto l770 } position++ goto l769 l770: position, tokenIndex = position769, tokenIndex769 if buffer[position] != rune('V') { goto l768 } position++ } l769: { position771, tokenIndex771 := position, tokenIndex if buffer[position] != rune('l') { goto l772 } position++ goto l771 l772: position, tokenIndex = position771, tokenIndex771 if buffer[position] != rune('L') { goto l768 } position++ } l771: if buffer[position] != rune('1') { goto l768 } position++ if buffer[position] != rune('2') { goto l768 } position++ if buffer[position] != rune('8') { goto l768 } position++ goto l731 l768: position, tokenIndex = position731, tokenIndex731 { position774, tokenIndex774 := position, tokenIndex if buffer[position] != rune('v') { goto l775 } position++ goto l774 l775: position, tokenIndex = position774, tokenIndex774 if buffer[position] != rune('V') { goto l773 } position++ } l774: { position776, tokenIndex776 := position, tokenIndex if buffer[position] != rune('l') { goto l777 } position++ goto l776 l777: position, tokenIndex = position776, tokenIndex776 if buffer[position] != rune('L') { goto l773 } position++ } l776: if buffer[position] != rune('2') { goto l773 } position++ if buffer[position] != rune('5') { goto l773 } position++ if buffer[position] != rune('6') { goto l773 } position++ goto l731 l773: position, tokenIndex = position731, tokenIndex731 { position779, tokenIndex779 := position, tokenIndex if buffer[position] != rune('m') { goto l780 } position++ goto l779 l780: position, tokenIndex = position779, tokenIndex779 if buffer[position] != rune('M') { goto l778 } position++ } l779: { position781, tokenIndex781 := position, tokenIndex if buffer[position] != rune('u') { goto l782 } position++ goto l781 l782: position, tokenIndex = position781, tokenIndex781 if buffer[position] != rune('U') { goto l778 } position++ } l781: { position783, tokenIndex783 := position, tokenIndex if buffer[position] != rune('l') { goto l784 } position++ goto l783 l784: position, tokenIndex = position783, tokenIndex783 if buffer[position] != rune('L') { goto l778 } position++ } l783: if buffer[position] != rune('3') { goto l778 } position++ goto l731 l778: position, tokenIndex = position731, tokenIndex731 { position786, tokenIndex786 := position, tokenIndex if buffer[position] != rune('m') { goto l787 } position++ goto l786 l787: position, tokenIndex = position786, tokenIndex786 if buffer[position] != rune('M') { goto l785 } position++ } l786: { position788, tokenIndex788 := position, tokenIndex if buffer[position] != rune('u') { goto l789 } position++ goto l788 l789: position, tokenIndex = position788, tokenIndex788 if buffer[position] != rune('U') { goto l785 } position++ } l788: { position790, tokenIndex790 := position, tokenIndex if buffer[position] != rune('l') { goto l791 } position++ goto l790 l791: position, tokenIndex = position790, tokenIndex790 if buffer[position] != rune('L') { goto l785 } position++ } l790: if buffer[position] != rune('4') { goto l785 } position++ goto l731 l785: position, tokenIndex = position731, tokenIndex731 { position792, tokenIndex792 := position, tokenIndex if buffer[position] != rune('a') { goto l793 } position++ goto l792 l793: position, tokenIndex = position792, tokenIndex792 if buffer[position] != rune('A') { goto l729 } position++ } l792: { position794, tokenIndex794 := position, tokenIndex if buffer[position] != rune('l') { goto l795 } position++ goto l794 l795: position, tokenIndex = position794, tokenIndex794 if buffer[position] != rune('L') { goto l729 } position++ } l794: { position796, tokenIndex796 := position, tokenIndex if buffer[position] != rune('l') { goto l797 } position++ goto l796 l797: position, tokenIndex = position796, tokenIndex796 if buffer[position] != rune('L') { goto l729 } position++ } l796: } l731: { position798, tokenIndex798 := position, tokenIndex { position799, tokenIndex799 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l800 } position++ goto l799 l800: position, tokenIndex = position799, tokenIndex799 if c := buffer[position]; c < rune('0') || c > rune('9') { goto l801 } position++ goto l799 l801: position, tokenIndex = position799, tokenIndex799 { position803, tokenIndex803 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { goto l804 } position++ goto l803 l804: position, tokenIndex = position803, tokenIndex803 if c := buffer[position]; c < rune('A') || c > rune('Z') { goto l802 } position++ } l803: goto l799 l802: position, tokenIndex = position799, tokenIndex799 if buffer[position] != rune('_') { goto l798 } position++ } l799: goto l729 l798: position, tokenIndex = position798, tokenIndex798 } add(ruleSVE2SpecialValue, position730) } return true l729: position, tokenIndex = position729, tokenIndex729 return false }, /* 48 MemoryRef <- <((SymbolRef BaseIndexScale) / SymbolRef / Low12BitsSymbolRef / (Offset* BaseIndexScale) / (SegmentRegister Offset BaseIndexScale) / (SegmentRegister BaseIndexScale) / (SegmentRegister Offset) / ARMBaseIndexScale / BaseIndexScale)> */ func() bool { position805, tokenIndex805 := position, tokenIndex { position806 := position { position807, tokenIndex807 := position, tokenIndex if !_rules[ruleSymbolRef]() { goto l808 } if !_rules[ruleBaseIndexScale]() { goto l808 } goto l807 l808: position, tokenIndex = position807, tokenIndex807 if !_rules[ruleSymbolRef]() { goto l809 } goto l807 l809: position, tokenIndex = position807, tokenIndex807 if !_rules[ruleLow12BitsSymbolRef]() { goto l810 } goto l807 l810: position, tokenIndex = position807, tokenIndex807 l812: { position813, tokenIndex813 := position, tokenIndex if !_rules[ruleOffset]() { goto l813 } goto l812 l813: position, tokenIndex = position813, tokenIndex813 } if !_rules[ruleBaseIndexScale]() { goto l811 } goto l807 l811: position, tokenIndex = position807, tokenIndex807 if !_rules[ruleSegmentRegister]() { goto l814 } if !_rules[ruleOffset]() { goto l814 } if !_rules[ruleBaseIndexScale]() { goto l814 } goto l807 l814: position, tokenIndex = position807, tokenIndex807 if !_rules[ruleSegmentRegister]() { goto l815 } if !_rules[ruleBaseIndexScale]() { goto l815 } goto l807 l815: position, tokenIndex = position807, tokenIndex807 if !_rules[ruleSegmentRegister]() { goto l816 } if !_rules[ruleOffset]() { goto l816 } goto l807 l816: position, tokenIndex = position807, tokenIndex807 if !_rules[ruleARMBaseIndexScale]() { goto l817 } goto l807 l817: position, tokenIndex = position807, tokenIndex807 if !_rules[ruleBaseIndexScale]() { goto l805 } } l807: add(ruleMemoryRef, position806) } return true l805: position, tokenIndex = position805, tokenIndex805 return false }, /* 49 SymbolRef <- <((Offset* '+')? (LocalSymbol / SymbolName) Offset* ('@' Section Offset*)?)> */ func() bool { position818, tokenIndex818 := position, tokenIndex { position819 := position { position820, tokenIndex820 := position, tokenIndex l822: { position823, tokenIndex823 := position, tokenIndex if !_rules[ruleOffset]() { goto l823 } goto l822 l823: position, tokenIndex = position823, tokenIndex823 } if buffer[position] != rune('+') { goto l820 } position++ goto l821 l820: position, tokenIndex = position820, tokenIndex820 } l821: { position824, tokenIndex824 := position, tokenIndex if !_rules[ruleLocalSymbol]() { goto l825 } goto l824 l825: position, tokenIndex = position824, tokenIndex824 if !_rules[ruleSymbolName]() { goto l818 } } l824: l826: { position827, tokenIndex827 := position, tokenIndex if !_rules[ruleOffset]() { goto l827 } goto l826 l827: position, tokenIndex = position827, tokenIndex827 } { position828, tokenIndex828 := position, tokenIndex if buffer[position] != rune('@') { goto l828 } position++ if !_rules[ruleSection]() { goto l828 } l830: { position831, tokenIndex831 := position, tokenIndex if !_rules[ruleOffset]() { goto l831 } goto l830 l831: position, tokenIndex = position831, tokenIndex831 } goto l829 l828: position, tokenIndex = position828, tokenIndex828 } l829: add(ruleSymbolRef, position819) } return true l818: position, tokenIndex = position818, tokenIndex818 return false }, /* 50 Low12BitsSymbolRef <- <(':' ('l' / 'L') ('o' / 'O') '1' '2' ':' (LocalSymbol / SymbolName) Offset?)> */ func() bool { position832, tokenIndex832 := position, tokenIndex { position833 := position if buffer[position] != rune(':') { goto l832 } position++ { position834, tokenIndex834 := position, tokenIndex if buffer[position] != rune('l') { goto l835 } position++ goto l834 l835: position, tokenIndex = position834, tokenIndex834 if buffer[position] != rune('L') { goto l832 } position++ } l834: { position836, tokenIndex836 := position, tokenIndex if buffer[position] != rune('o') { goto l837 } position++ goto l836 l837: position, tokenIndex = position836, tokenIndex836 if buffer[position] != rune('O') { goto l832 } position++ } l836: if buffer[position] != rune('1') { goto l832 } position++ if buffer[position] != rune('2') { goto l832 } position++ if buffer[position] != rune(':') { goto l832 } position++ { position838, tokenIndex838 := position, tokenIndex if !_rules[ruleLocalSymbol]() { goto l839 } goto l838 l839: position, tokenIndex = position838, tokenIndex838 if !_rules[ruleSymbolName]() { goto l832 } } l838: { position840, tokenIndex840 := position, tokenIndex if !_rules[ruleOffset]() { goto l840 } goto l841 l840: position, tokenIndex = position840, tokenIndex840 } l841: add(ruleLow12BitsSymbolRef, position833) } return true l832: position, tokenIndex = position832, tokenIndex832 return false }, /* 51 ARMBaseIndexScale <- <('[' ARMRegister (',' WS? (('#' Offset (('*' [0-9]+) / ('*' '(' [0-9]+ Operator [0-9]+ ')') / ('+' [0-9]+)*)?) / ARMGOTLow12 / Low12BitsSymbolRef / ARMRegister) (',' WS? ARMConstantTweak)?)? ']' ARMPostincrement?)> */ func() bool { position842, tokenIndex842 := position, tokenIndex { position843 := position if buffer[position] != rune('[') { goto l842 } position++ if !_rules[ruleARMRegister]() { goto l842 } { position844, tokenIndex844 := position, tokenIndex if buffer[position] != rune(',') { goto l844 } position++ { position846, tokenIndex846 := position, tokenIndex if !_rules[ruleWS]() { goto l846 } goto l847 l846: position, tokenIndex = position846, tokenIndex846 } l847: { position848, tokenIndex848 := position, tokenIndex if buffer[position] != rune('#') { goto l849 } position++ if !_rules[ruleOffset]() { goto l849 } { position850, tokenIndex850 := position, tokenIndex { position852, tokenIndex852 := position, tokenIndex if buffer[position] != rune('*') { goto l853 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { goto l853 } position++ l854: { position855, tokenIndex855 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l855 } position++ goto l854 l855: position, tokenIndex = position855, tokenIndex855 } goto l852 l853: position, tokenIndex = position852, tokenIndex852 if buffer[position] != rune('*') { goto l856 } position++ if buffer[position] != rune('(') { goto l856 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { goto l856 } position++ l857: { position858, tokenIndex858 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l858 } position++ goto l857 l858: position, tokenIndex = position858, tokenIndex858 } if !_rules[ruleOperator]() { goto l856 } if c := buffer[position]; c < rune('0') || c > rune('9') { goto l856 } position++ l859: { position860, tokenIndex860 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l860 } position++ goto l859 l860: position, tokenIndex = position860, tokenIndex860 } if buffer[position] != rune(')') { goto l856 } position++ goto l852 l856: position, tokenIndex = position852, tokenIndex852 l861: { position862, tokenIndex862 := position, tokenIndex if buffer[position] != rune('+') { goto l862 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { goto l862 } position++ l863: { position864, tokenIndex864 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l864 } position++ goto l863 l864: position, tokenIndex = position864, tokenIndex864 } goto l861 l862: position, tokenIndex = position862, tokenIndex862 } } l852: goto l851 position, tokenIndex = position850, tokenIndex850 } l851: goto l848 l849: position, tokenIndex = position848, tokenIndex848 if !_rules[ruleARMGOTLow12]() { goto l865 } goto l848 l865: position, tokenIndex = position848, tokenIndex848 if !_rules[ruleLow12BitsSymbolRef]() { goto l866 } goto l848 l866: position, tokenIndex = position848, tokenIndex848 if !_rules[ruleARMRegister]() { goto l844 } } l848: { position867, tokenIndex867 := position, tokenIndex if buffer[position] != rune(',') { goto l867 } position++ { position869, tokenIndex869 := position, tokenIndex if !_rules[ruleWS]() { goto l869 } goto l870 l869: position, tokenIndex = position869, tokenIndex869 } l870: if !_rules[ruleARMConstantTweak]() { goto l867 } goto l868 l867: position, tokenIndex = position867, tokenIndex867 } l868: goto l845 l844: position, tokenIndex = position844, tokenIndex844 } l845: if buffer[position] != rune(']') { goto l842 } position++ { position871, tokenIndex871 := position, tokenIndex if !_rules[ruleARMPostincrement]() { goto l871 } goto l872 l871: position, tokenIndex = position871, tokenIndex871 } l872: add(ruleARMBaseIndexScale, position843) } return true l842: position, tokenIndex = position842, tokenIndex842 return false }, /* 52 ARMGOTLow12 <- <(':' ('g' / 'G') ('o' / 'O') ('t' / 'T') '_' ('l' / 'L') ('o' / 'O') '1' '2' ':' SymbolName)> */ func() bool { position873, tokenIndex873 := position, tokenIndex { position874 := position if buffer[position] != rune(':') { goto l873 } position++ { position875, tokenIndex875 := position, tokenIndex if buffer[position] != rune('g') { goto l876 } position++ goto l875 l876: position, tokenIndex = position875, tokenIndex875 if buffer[position] != rune('G') { goto l873 } position++ } l875: { position877, tokenIndex877 := position, tokenIndex if buffer[position] != rune('o') { goto l878 } position++ goto l877 l878: position, tokenIndex = position877, tokenIndex877 if buffer[position] != rune('O') { goto l873 } position++ } l877: { position879, tokenIndex879 := position, tokenIndex if buffer[position] != rune('t') { goto l880 } position++ goto l879 l880: position, tokenIndex = position879, tokenIndex879 if buffer[position] != rune('T') { goto l873 } position++ } l879: if buffer[position] != rune('_') { goto l873 } position++ { position881, tokenIndex881 := position, tokenIndex if buffer[position] != rune('l') { goto l882 } position++ goto l881 l882: position, tokenIndex = position881, tokenIndex881 if buffer[position] != rune('L') { goto l873 } position++ } l881: { position883, tokenIndex883 := position, tokenIndex if buffer[position] != rune('o') { goto l884 } position++ goto l883 l884: position, tokenIndex = position883, tokenIndex883 if buffer[position] != rune('O') { goto l873 } position++ } l883: if buffer[position] != rune('1') { goto l873 } position++ if buffer[position] != rune('2') { goto l873 } position++ if buffer[position] != rune(':') { goto l873 } position++ if !_rules[ruleSymbolName]() { goto l873 } add(ruleARMGOTLow12, position874) } return true l873: position, tokenIndex = position873, tokenIndex873 return false }, /* 53 ARMPostincrement <- <'!'> */ func() bool { position885, tokenIndex885 := position, tokenIndex { position886 := position if buffer[position] != rune('!') { goto l885 } position++ add(ruleARMPostincrement, position886) } return true l885: position, tokenIndex = position885, tokenIndex885 return false }, /* 54 BaseIndexScale <- <('(' RegisterOrConstant? WS? (',' WS? RegisterOrConstant WS? (',' [0-9]+)?)? ')')> */ func() bool { position887, tokenIndex887 := position, tokenIndex { position888 := position if buffer[position] != rune('(') { goto l887 } position++ { position889, tokenIndex889 := position, tokenIndex if !_rules[ruleRegisterOrConstant]() { goto l889 } goto l890 l889: position, tokenIndex = position889, tokenIndex889 } l890: { position891, tokenIndex891 := position, tokenIndex if !_rules[ruleWS]() { goto l891 } goto l892 l891: position, tokenIndex = position891, tokenIndex891 } l892: { position893, tokenIndex893 := position, tokenIndex if buffer[position] != rune(',') { goto l893 } position++ { position895, tokenIndex895 := position, tokenIndex if !_rules[ruleWS]() { goto l895 } goto l896 l895: position, tokenIndex = position895, tokenIndex895 } l896: if !_rules[ruleRegisterOrConstant]() { goto l893 } { position897, tokenIndex897 := position, tokenIndex if !_rules[ruleWS]() { goto l897 } goto l898 l897: position, tokenIndex = position897, tokenIndex897 } l898: { position899, tokenIndex899 := position, tokenIndex if buffer[position] != rune(',') { goto l899 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { goto l899 } position++ l901: { position902, tokenIndex902 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l902 } position++ goto l901 l902: position, tokenIndex = position902, tokenIndex902 } goto l900 l899: position, tokenIndex = position899, tokenIndex899 } l900: goto l894 l893: position, tokenIndex = position893, tokenIndex893 } l894: if buffer[position] != rune(')') { goto l887 } position++ add(ruleBaseIndexScale, position888) } return true l887: position, tokenIndex = position887, tokenIndex887 return false }, /* 55 Operator <- <('+' / '-')> */ func() bool { position903, tokenIndex903 := position, tokenIndex { position904 := position { position905, tokenIndex905 := position, tokenIndex if buffer[position] != rune('+') { goto l906 } position++ goto l905 l906: position, tokenIndex = position905, tokenIndex905 if buffer[position] != rune('-') { goto l903 } position++ } l905: add(ruleOperator, position904) } return true l903: position, tokenIndex = position903, tokenIndex903 return false }, /* 56 Offset <- <('+'? '-'? (('0' ('b' / 'B') ('0' / '1')+) / ('0' ('x' / 'X') ([0-9] / [0-9] / ([a-f] / [A-F]))+) / [0-9]+))> */ func() bool { position907, tokenIndex907 := position, tokenIndex { position908 := position { position909, tokenIndex909 := position, tokenIndex if buffer[position] != rune('+') { goto l909 } position++ goto l910 l909: position, tokenIndex = position909, tokenIndex909 } l910: { position911, tokenIndex911 := position, tokenIndex if buffer[position] != rune('-') { goto l911 } position++ goto l912 l911: position, tokenIndex = position911, tokenIndex911 } l912: { position913, tokenIndex913 := position, tokenIndex if buffer[position] != rune('0') { goto l914 } position++ { position915, tokenIndex915 := position, tokenIndex if buffer[position] != rune('b') { goto l916 } position++ goto l915 l916: position, tokenIndex = position915, tokenIndex915 if buffer[position] != rune('B') { goto l914 } position++ } l915: { position919, tokenIndex919 := position, tokenIndex if buffer[position] != rune('0') { goto l920 } position++ goto l919 l920: position, tokenIndex = position919, tokenIndex919 if buffer[position] != rune('1') { goto l914 } position++ } l919: l917: { position918, tokenIndex918 := position, tokenIndex { position921, tokenIndex921 := position, tokenIndex if buffer[position] != rune('0') { goto l922 } position++ goto l921 l922: position, tokenIndex = position921, tokenIndex921 if buffer[position] != rune('1') { goto l918 } position++ } l921: goto l917 l918: position, tokenIndex = position918, tokenIndex918 } goto l913 l914: position, tokenIndex = position913, tokenIndex913 if buffer[position] != rune('0') { goto l923 } position++ { position924, tokenIndex924 := position, tokenIndex if buffer[position] != rune('x') { goto l925 } position++ goto l924 l925: position, tokenIndex = position924, tokenIndex924 if buffer[position] != rune('X') { goto l923 } position++ } l924: { position928, tokenIndex928 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l929 } position++ goto l928 l929: position, tokenIndex = position928, tokenIndex928 if c := buffer[position]; c < rune('0') || c > rune('9') { goto l930 } position++ goto l928 l930: position, tokenIndex = position928, tokenIndex928 { position931, tokenIndex931 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('f') { goto l932 } position++ goto l931 l932: position, tokenIndex = position931, tokenIndex931 if c := buffer[position]; c < rune('A') || c > rune('F') { goto l923 } position++ } l931: } l928: l926: { position927, tokenIndex927 := position, tokenIndex { position933, tokenIndex933 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l934 } position++ goto l933 l934: position, tokenIndex = position933, tokenIndex933 if c := buffer[position]; c < rune('0') || c > rune('9') { goto l935 } position++ goto l933 l935: position, tokenIndex = position933, tokenIndex933 { position936, tokenIndex936 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('f') { goto l937 } position++ goto l936 l937: position, tokenIndex = position936, tokenIndex936 if c := buffer[position]; c < rune('A') || c > rune('F') { goto l927 } position++ } l936: } l933: goto l926 l927: position, tokenIndex = position927, tokenIndex927 } goto l913 l923: position, tokenIndex = position913, tokenIndex913 if c := buffer[position]; c < rune('0') || c > rune('9') { goto l907 } position++ l938: { position939, tokenIndex939 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l939 } position++ goto l938 l939: position, tokenIndex = position939, tokenIndex939 } } l913: add(ruleOffset, position908) } return true l907: position, tokenIndex = position907, tokenIndex907 return false }, /* 57 Section <- <([a-z] / [A-Z] / '@')+> */ func() bool { position940, tokenIndex940 := position, tokenIndex { position941 := position { position944, tokenIndex944 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { goto l945 } position++ goto l944 l945: position, tokenIndex = position944, tokenIndex944 if c := buffer[position]; c < rune('A') || c > rune('Z') { goto l946 } position++ goto l944 l946: position, tokenIndex = position944, tokenIndex944 if buffer[position] != rune('@') { goto l940 } position++ } l944: l942: { position943, tokenIndex943 := position, tokenIndex { position947, tokenIndex947 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { goto l948 } position++ goto l947 l948: position, tokenIndex = position947, tokenIndex947 if c := buffer[position]; c < rune('A') || c > rune('Z') { goto l949 } position++ goto l947 l949: position, tokenIndex = position947, tokenIndex947 if buffer[position] != rune('@') { goto l943 } position++ } l947: goto l942 l943: position, tokenIndex = position943, tokenIndex943 } add(ruleSection, position941) } return true l940: position, tokenIndex = position940, tokenIndex940 return false }, /* 58 SegmentRegister <- <('%' ([c-g] / 's') ('s' ':'))> */ func() bool { position950, tokenIndex950 := position, tokenIndex { position951 := position if buffer[position] != rune('%') { goto l950 } position++ { position952, tokenIndex952 := position, tokenIndex if c := buffer[position]; c < rune('c') || c > rune('g') { goto l953 } position++ goto l952 l953: position, tokenIndex = position952, tokenIndex952 if buffer[position] != rune('s') { goto l950 } position++ } l952: if buffer[position] != rune('s') { goto l950 } position++ if buffer[position] != rune(':') { goto l950 } position++ add(ruleSegmentRegister, position951) } return true l950: position, tokenIndex = position950, tokenIndex950 return false }, } p.rules = _rules return nil }