package main // Code generated by ./peg/peg delocate.peg DO NOT EDIT. import ( "bytes" "fmt" "io" "os" "sort" "strconv" ) 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 ruleSymbolShift ruleSymbolArg ruleOpenParen ruleCloseParen ruleSymbolType ruleDot ruleTCMarker ruleEscapedChar ruleWS ruleComment ruleLabel ruleSymbolName ruleLocalSymbol ruleLocalLabel ruleLocalLabelRef ruleInstruction ruleInstructionName ruleInstructionArg ruleGOTLocation ruleGOTSymbolOffset ruleAVX512Token ruleTOCRefHigh ruleTOCRefLow ruleIndirectionIndicator ruleRegisterOrConstant ruleARMConstantTweak ruleARMRegister ruleARMVectorRegister ruleMemoryRef ruleSymbolRef ruleLow12BitsSymbolRef ruleARMBaseIndexScale ruleARMGOTLow12 ruleARMPostincrement ruleBaseIndexScale ruleOperator ruleOffsetOperator ruleOffset ruleSection ruleSegmentRegister ) var rul3s = [...]string{ "Unknown", "AsmFile", "Statement", "GlobalDirective", "Directive", "DirectiveName", "LocationDirective", "FileDirective", "LocDirective", "Args", "Arg", "QuotedArg", "QuotedText", "LabelContainingDirective", "LabelContainingDirectiveName", "SymbolArgs", "SymbolShift", "SymbolArg", "OpenParen", "CloseParen", "SymbolType", "Dot", "TCMarker", "EscapedChar", "WS", "Comment", "Label", "SymbolName", "LocalSymbol", "LocalLabel", "LocalLabelRef", "Instruction", "InstructionName", "InstructionArg", "GOTLocation", "GOTSymbolOffset", "AVX512Token", "TOCRefHigh", "TOCRefLow", "IndirectionIndicator", "RegisterOrConstant", "ARMConstantTweak", "ARMRegister", "ARMVectorRegister", "MemoryRef", "SymbolRef", "Low12BitsSymbolRef", "ARMBaseIndexScale", "ARMGOTLow12", "ARMPostincrement", "BaseIndexScale", "Operator", "OffsetOperator", "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 [56]func() bool parse func(rule ...int) error reset func() Pretty bool disableMemoize 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 b bytes.Buffer p.WriteSyntaxTree(&b) return b.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 DisableMemoize() func(*Asm) error { return func(p *Asm) error { p.disableMemoize = true return nil } } type memo struct { Matched bool Partial []token32 } type memoKey struct { Rule uint32 Position uint32 } func (p *Asm) Init(options ...func(*Asm) error) error { var ( max token32 position, tokenIndex uint32 buffer []rune memoization map[memoKey]memo ) for _, option := range options { err := option(p) if err != nil { return err } } p.reset = func() { max = token32{} position, tokenIndex = 0, 0 memoization = make(map[memoKey]memo) 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} } } memoize := func(rule uint32, begin uint32, tokenIndexStart uint32, matched bool) { if p.disableMemoize { return } key := memoKey{rule, begin} if !matched { memoization[key] = memo{Matched: false} } else { t := tree.tree[tokenIndexStart:tokenIndex] tokenCopy := make([]token32, len(t)) copy(tokenCopy, t) memoization[key] = memo{Matched: true, Partial: tokenCopy} } } memoizedResult := func(m memo) bool { if !m.Matched { return false } tree.tree = append(tree.tree[:tokenIndex], m.Partial...) tokenIndex += uint32(len(m.Partial)) position = m.Partial[len(m.Partial)-1].end if tree.tree[tokenIndex-1].begin != position && position > max.end { max = tree.tree[tokenIndex-1] } return true } 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 { if memoized, ok := memoization[memoKey{0, position}]; ok { return memoizedResult(memoized) } 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) } memoize(0, position0, tokenIndex0, true) return true l0: memoize(0, position0, tokenIndex0, false) position, tokenIndex = position0, tokenIndex0 return false }, /* 1 Statement <- <(WS? (Label / ((GlobalDirective / LocationDirective / LabelContainingDirective / Instruction / Directive / Comment / ) WS? ((Comment? '\n') / ';'))))> */ func() bool { if memoized, ok := memoization[memoKey{1, position}]; ok { return memoizedResult(memoized) } 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) } memoize(1, position5, tokenIndex5, true) return true l5: memoize(1, position5, tokenIndex5, false) 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 { if memoized, ok := memoization[memoKey{2, position}]; ok { return memoizedResult(memoized) } 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) } memoize(2, position24, tokenIndex24, true) return true l24: memoize(2, position24, tokenIndex24, false) position, tokenIndex = position24, tokenIndex24 return false }, /* 3 Directive <- <('.' DirectiveName (WS Args)?)> */ func() bool { if memoized, ok := memoization[memoKey{3, position}]; ok { return memoizedResult(memoized) } 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) } memoize(3, position50, tokenIndex50, true) return true l50: memoize(3, position50, tokenIndex50, false) position, tokenIndex = position50, tokenIndex50 return false }, /* 4 DirectiveName <- <([a-z] / [A-Z] / ([0-9] / [0-9]) / '_')+> */ func() bool { if memoized, ok := memoization[memoKey{4, position}]; ok { return memoizedResult(memoized) } 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) } memoize(4, position54, tokenIndex54, true) return true l54: memoize(4, position54, tokenIndex54, false) position, tokenIndex = position54, tokenIndex54 return false }, /* 5 LocationDirective <- <(FileDirective / LocDirective)> */ func() bool { if memoized, ok := memoization[memoKey{5, position}]; ok { return memoizedResult(memoized) } 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) } memoize(5, position70, tokenIndex70, true) return true l70: memoize(5, position70, tokenIndex70, false) position, tokenIndex = position70, tokenIndex70 return false }, /* 6 FileDirective <- <('.' ('f' / 'F') ('i' / 'I') ('l' / 'L') ('e' / 'E') WS (!('#' / '\n') .)+)> */ func() bool { if memoized, ok := memoization[memoKey{6, position}]; ok { return memoizedResult(memoized) } 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) } memoize(6, position74, tokenIndex74, true) return true l74: memoize(6, position74, tokenIndex74, false) position, tokenIndex = position74, tokenIndex74 return false }, /* 7 LocDirective <- <('.' ('l' / 'L') ('o' / 'O') ('c' / 'C') WS (!('#' / '/' / '\n') .)+)> */ func() bool { if memoized, ok := memoization[memoKey{7, position}]; ok { return memoizedResult(memoized) } 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) } memoize(7, position92, tokenIndex92, true) return true l92: memoize(7, position92, tokenIndex92, false) position, tokenIndex = position92, tokenIndex92 return false }, /* 8 Args <- <(Arg (WS? ',' WS? Arg)*)> */ func() bool { if memoized, ok := memoization[memoKey{8, position}]; ok { return memoizedResult(memoized) } 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) } memoize(8, position110, tokenIndex110, true) return true l110: memoize(8, position110, tokenIndex110, false) position, tokenIndex = position110, tokenIndex110 return false }, /* 9 Arg <- <(QuotedArg / ([0-9] / [0-9] / ([a-z] / [A-Z]) / '%' / '+' / '-' / '*' / '_' / '@' / '.')*)> */ func() bool { if memoized, ok := memoization[memoKey{9, position}]; ok { return memoizedResult(memoized) } position118, tokenIndex118 := position, tokenIndex { 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) } memoize(9, position118, tokenIndex118, true) return true }, /* 10 QuotedArg <- <('"' QuotedText '"')> */ func() bool { if memoized, ok := memoization[memoKey{10, position}]; ok { return memoizedResult(memoized) } 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) } memoize(10, position136, tokenIndex136, true) return true l136: memoize(10, position136, tokenIndex136, false) position, tokenIndex = position136, tokenIndex136 return false }, /* 11 QuotedText <- <(EscapedChar / (!'"' .))*> */ func() bool { if memoized, ok := memoization[memoKey{11, position}]; ok { return memoizedResult(memoized) } position138, tokenIndex138 := position, tokenIndex { 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) } memoize(11, position138, tokenIndex138, true) return true }, /* 12 LabelContainingDirective <- <(LabelContainingDirectiveName WS SymbolArgs)> */ func() bool { if memoized, ok := memoization[memoKey{12, position}]; ok { return memoizedResult(memoized) } position145, tokenIndex145 := position, tokenIndex { position146 := position if !_rules[ruleLabelContainingDirectiveName]() { goto l145 } if !_rules[ruleWS]() { goto l145 } if !_rules[ruleSymbolArgs]() { goto l145 } add(ruleLabelContainingDirective, position146) } memoize(12, position145, tokenIndex145, true) return true l145: memoize(12, position145, tokenIndex145, false) 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')) / ('.' ('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 { if memoized, ok := memoization[memoKey{13, position}]; ok { return memoizedResult(memoized) } 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('l') { goto l172 } position++ goto l171 l172: position, tokenIndex = position171, tokenIndex171 if buffer[position] != rune('L') { goto l170 } position++ } l171: { position173, tokenIndex173 := position, tokenIndex if buffer[position] != rune('o') { goto l174 } position++ goto l173 l174: position, tokenIndex = position173, tokenIndex173 if buffer[position] != rune('O') { goto l170 } position++ } l173: { position175, tokenIndex175 := position, tokenIndex if buffer[position] != rune('n') { goto l176 } position++ goto l175 l176: position, tokenIndex = position175, tokenIndex175 if buffer[position] != rune('N') { goto l170 } position++ } l175: { position177, tokenIndex177 := position, tokenIndex if buffer[position] != rune('g') { goto l178 } position++ goto l177 l178: position, tokenIndex = position177, tokenIndex177 if buffer[position] != rune('G') { goto l170 } position++ } l177: goto l149 l170: position, tokenIndex = position149, tokenIndex149 if buffer[position] != rune('.') { goto l179 } position++ { position180, tokenIndex180 := position, tokenIndex if buffer[position] != rune('s') { goto l181 } position++ goto l180 l181: position, tokenIndex = position180, tokenIndex180 if buffer[position] != rune('S') { goto l179 } position++ } l180: { position182, tokenIndex182 := position, tokenIndex if buffer[position] != rune('e') { goto l183 } position++ goto l182 l183: position, tokenIndex = position182, tokenIndex182 if buffer[position] != rune('E') { goto l179 } position++ } l182: { position184, tokenIndex184 := position, tokenIndex if buffer[position] != rune('t') { goto l185 } position++ goto l184 l185: position, tokenIndex = position184, tokenIndex184 if buffer[position] != rune('T') { goto l179 } position++ } l184: goto l149 l179: position, tokenIndex = position149, tokenIndex149 if buffer[position] != rune('.') { goto l186 } position++ { position187, tokenIndex187 := position, tokenIndex if buffer[position] != rune('b') { goto l188 } position++ goto l187 l188: position, tokenIndex = position187, tokenIndex187 if buffer[position] != rune('B') { goto l186 } position++ } l187: { position189, tokenIndex189 := position, tokenIndex if buffer[position] != rune('y') { goto l190 } position++ goto l189 l190: position, tokenIndex = position189, tokenIndex189 if buffer[position] != rune('Y') { goto l186 } position++ } l189: { position191, tokenIndex191 := position, tokenIndex if buffer[position] != rune('t') { goto l192 } position++ goto l191 l192: position, tokenIndex = position191, tokenIndex191 if buffer[position] != rune('T') { goto l186 } 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 l186 } position++ } l193: goto l149 l186: position, tokenIndex = position149, tokenIndex149 if buffer[position] != rune('.') { goto l195 } position++ if buffer[position] != rune('8') { goto l195 } position++ { position196, tokenIndex196 := position, tokenIndex if buffer[position] != rune('b') { goto l197 } position++ goto l196 l197: position, tokenIndex = position196, tokenIndex196 if buffer[position] != rune('B') { goto l195 } position++ } l196: { position198, tokenIndex198 := position, tokenIndex if buffer[position] != rune('y') { goto l199 } position++ goto l198 l199: position, tokenIndex = position198, tokenIndex198 if buffer[position] != rune('Y') { goto l195 } position++ } l198: { position200, tokenIndex200 := position, tokenIndex if buffer[position] != rune('t') { goto l201 } position++ goto l200 l201: position, tokenIndex = position200, tokenIndex200 if buffer[position] != rune('T') { goto l195 } position++ } l200: { position202, tokenIndex202 := position, tokenIndex if buffer[position] != rune('e') { goto l203 } position++ goto l202 l203: position, tokenIndex = position202, tokenIndex202 if buffer[position] != rune('E') { goto l195 } position++ } l202: goto l149 l195: position, tokenIndex = position149, tokenIndex149 if buffer[position] != rune('.') { goto l204 } position++ if buffer[position] != rune('4') { goto l204 } position++ { position205, tokenIndex205 := position, tokenIndex if buffer[position] != rune('b') { goto l206 } position++ goto l205 l206: position, tokenIndex = position205, tokenIndex205 if buffer[position] != rune('B') { goto l204 } position++ } l205: { position207, tokenIndex207 := position, tokenIndex if buffer[position] != rune('y') { goto l208 } position++ goto l207 l208: position, tokenIndex = position207, tokenIndex207 if buffer[position] != rune('Y') { goto l204 } position++ } l207: { position209, tokenIndex209 := position, tokenIndex if buffer[position] != rune('t') { goto l210 } position++ goto l209 l210: position, tokenIndex = position209, tokenIndex209 if buffer[position] != rune('T') { goto l204 } position++ } l209: { position211, tokenIndex211 := position, tokenIndex if buffer[position] != rune('e') { goto l212 } position++ goto l211 l212: position, tokenIndex = position211, tokenIndex211 if buffer[position] != rune('E') { goto l204 } position++ } l211: goto l149 l204: position, tokenIndex = position149, tokenIndex149 if buffer[position] != rune('.') { goto l213 } position++ { position214, tokenIndex214 := position, tokenIndex if buffer[position] != rune('q') { goto l215 } position++ goto l214 l215: position, tokenIndex = position214, tokenIndex214 if buffer[position] != rune('Q') { goto l213 } position++ } l214: { position216, tokenIndex216 := position, tokenIndex if buffer[position] != rune('u') { goto l217 } position++ goto l216 l217: position, tokenIndex = position216, tokenIndex216 if buffer[position] != rune('U') { goto l213 } position++ } l216: { position218, tokenIndex218 := position, tokenIndex if buffer[position] != rune('a') { goto l219 } position++ goto l218 l219: position, tokenIndex = position218, tokenIndex218 if buffer[position] != rune('A') { goto l213 } position++ } l218: { position220, tokenIndex220 := position, tokenIndex if buffer[position] != rune('d') { goto l221 } position++ goto l220 l221: position, tokenIndex = position220, tokenIndex220 if buffer[position] != rune('D') { goto l213 } position++ } l220: goto l149 l213: position, tokenIndex = position149, tokenIndex149 if buffer[position] != rune('.') { goto l222 } position++ { position223, tokenIndex223 := position, tokenIndex if buffer[position] != rune('t') { goto l224 } position++ goto l223 l224: position, tokenIndex = position223, tokenIndex223 if buffer[position] != rune('T') { goto l222 } position++ } l223: { position225, tokenIndex225 := position, tokenIndex if buffer[position] != rune('c') { goto l226 } position++ goto l225 l226: position, tokenIndex = position225, tokenIndex225 if buffer[position] != rune('C') { goto l222 } position++ } l225: goto l149 l222: position, tokenIndex = position149, tokenIndex149 if buffer[position] != rune('.') { goto l227 } position++ { position228, tokenIndex228 := position, tokenIndex if buffer[position] != rune('l') { goto l229 } position++ goto l228 l229: position, tokenIndex = position228, tokenIndex228 if buffer[position] != rune('L') { goto l227 } position++ } l228: { position230, tokenIndex230 := position, tokenIndex if buffer[position] != rune('o') { goto l231 } position++ goto l230 l231: position, tokenIndex = position230, tokenIndex230 if buffer[position] != rune('O') { goto l227 } position++ } l230: { position232, tokenIndex232 := position, tokenIndex if buffer[position] != rune('c') { goto l233 } position++ goto l232 l233: position, tokenIndex = position232, tokenIndex232 if buffer[position] != rune('C') { goto l227 } position++ } l232: { position234, tokenIndex234 := position, tokenIndex if buffer[position] != rune('a') { goto l235 } position++ goto l234 l235: position, tokenIndex = position234, tokenIndex234 if buffer[position] != rune('A') { goto l227 } position++ } l234: { position236, tokenIndex236 := position, tokenIndex if buffer[position] != rune('l') { goto l237 } position++ goto l236 l237: position, tokenIndex = position236, tokenIndex236 if buffer[position] != rune('L') { goto l227 } position++ } l236: { position238, tokenIndex238 := position, tokenIndex if buffer[position] != rune('e') { goto l239 } position++ goto l238 l239: position, tokenIndex = position238, tokenIndex238 if buffer[position] != rune('E') { goto l227 } position++ } l238: { position240, tokenIndex240 := position, tokenIndex if buffer[position] != rune('n') { goto l241 } position++ goto l240 l241: position, tokenIndex = position240, tokenIndex240 if buffer[position] != rune('N') { goto l227 } position++ } l240: { position242, tokenIndex242 := position, tokenIndex if buffer[position] != rune('t') { goto l243 } position++ goto l242 l243: position, tokenIndex = position242, tokenIndex242 if buffer[position] != rune('T') { goto l227 } position++ } l242: { position244, tokenIndex244 := position, tokenIndex if buffer[position] != rune('r') { goto l245 } position++ goto l244 l245: position, tokenIndex = position244, tokenIndex244 if buffer[position] != rune('R') { goto l227 } position++ } l244: { position246, tokenIndex246 := position, tokenIndex if buffer[position] != rune('y') { goto l247 } position++ goto l246 l247: position, tokenIndex = position246, tokenIndex246 if buffer[position] != rune('Y') { goto l227 } position++ } l246: goto l149 l227: position, tokenIndex = position149, tokenIndex149 if buffer[position] != rune('.') { goto l248 } position++ { position249, tokenIndex249 := position, tokenIndex if buffer[position] != rune('s') { goto l250 } position++ goto l249 l250: position, tokenIndex = position249, tokenIndex249 if buffer[position] != rune('S') { goto l248 } position++ } l249: { position251, tokenIndex251 := position, tokenIndex if buffer[position] != rune('i') { goto l252 } position++ goto l251 l252: position, tokenIndex = position251, tokenIndex251 if buffer[position] != rune('I') { goto l248 } position++ } l251: { position253, tokenIndex253 := position, tokenIndex if buffer[position] != rune('z') { goto l254 } position++ goto l253 l254: position, tokenIndex = position253, tokenIndex253 if buffer[position] != rune('Z') { goto l248 } position++ } l253: { position255, tokenIndex255 := position, tokenIndex if buffer[position] != rune('e') { goto l256 } position++ goto l255 l256: position, tokenIndex = position255, tokenIndex255 if buffer[position] != rune('E') { goto l248 } position++ } l255: goto l149 l248: position, tokenIndex = position149, tokenIndex149 if buffer[position] != rune('.') { goto l257 } position++ { position258, tokenIndex258 := position, tokenIndex if buffer[position] != rune('t') { goto l259 } position++ goto l258 l259: position, tokenIndex = position258, tokenIndex258 if buffer[position] != rune('T') { goto l257 } position++ } l258: { position260, tokenIndex260 := position, tokenIndex if buffer[position] != rune('y') { goto l261 } position++ goto l260 l261: position, tokenIndex = position260, tokenIndex260 if buffer[position] != rune('Y') { goto l257 } position++ } l260: { position262, tokenIndex262 := position, tokenIndex if buffer[position] != rune('p') { goto l263 } position++ goto l262 l263: position, tokenIndex = position262, tokenIndex262 if buffer[position] != rune('P') { goto l257 } position++ } l262: { position264, tokenIndex264 := position, tokenIndex if buffer[position] != rune('e') { goto l265 } position++ goto l264 l265: position, tokenIndex = position264, tokenIndex264 if buffer[position] != rune('E') { goto l257 } position++ } l264: goto l149 l257: position, tokenIndex = position149, tokenIndex149 if buffer[position] != rune('.') { goto l266 } position++ { position267, tokenIndex267 := position, tokenIndex if buffer[position] != rune('u') { goto l268 } position++ goto l267 l268: position, tokenIndex = position267, tokenIndex267 if buffer[position] != rune('U') { goto l266 } position++ } l267: { position269, tokenIndex269 := position, tokenIndex if buffer[position] != rune('l') { goto l270 } position++ goto l269 l270: position, tokenIndex = position269, tokenIndex269 if buffer[position] != rune('L') { goto l266 } position++ } l269: { position271, tokenIndex271 := position, tokenIndex if buffer[position] != rune('e') { goto l272 } position++ goto l271 l272: position, tokenIndex = position271, tokenIndex271 if buffer[position] != rune('E') { goto l266 } position++ } l271: { position273, tokenIndex273 := position, tokenIndex if buffer[position] != rune('b') { goto l274 } position++ goto l273 l274: position, tokenIndex = position273, tokenIndex273 if buffer[position] != rune('B') { goto l266 } position++ } l273: if buffer[position] != rune('1') { goto l266 } position++ if buffer[position] != rune('2') { goto l266 } position++ if buffer[position] != rune('8') { goto l266 } position++ goto l149 l266: position, tokenIndex = position149, tokenIndex149 if buffer[position] != rune('.') { goto l147 } position++ { position275, tokenIndex275 := position, tokenIndex if buffer[position] != rune('s') { goto l276 } position++ goto l275 l276: position, tokenIndex = position275, tokenIndex275 if buffer[position] != rune('S') { goto l147 } position++ } l275: { position277, tokenIndex277 := position, tokenIndex if buffer[position] != rune('l') { goto l278 } position++ goto l277 l278: position, tokenIndex = position277, tokenIndex277 if buffer[position] != rune('L') { goto l147 } position++ } l277: { position279, tokenIndex279 := position, tokenIndex if buffer[position] != rune('e') { goto l280 } position++ goto l279 l280: position, tokenIndex = position279, tokenIndex279 if buffer[position] != rune('E') { goto l147 } position++ } l279: { position281, tokenIndex281 := position, tokenIndex if buffer[position] != rune('b') { goto l282 } position++ goto l281 l282: position, tokenIndex = position281, tokenIndex281 if buffer[position] != rune('B') { goto l147 } position++ } l281: 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) } memoize(13, position147, tokenIndex147, true) return true l147: memoize(13, position147, tokenIndex147, false) position, tokenIndex = position147, tokenIndex147 return false }, /* 14 SymbolArgs <- <(SymbolArg (WS? ',' WS? SymbolArg)*)> */ func() bool { if memoized, ok := memoization[memoKey{14, position}]; ok { return memoizedResult(memoized) } position283, tokenIndex283 := position, tokenIndex { position284 := position if !_rules[ruleSymbolArg]() { goto l283 } l285: { position286, tokenIndex286 := position, tokenIndex { position287, tokenIndex287 := position, tokenIndex if !_rules[ruleWS]() { goto l287 } goto l288 l287: position, tokenIndex = position287, tokenIndex287 } l288: if buffer[position] != rune(',') { goto l286 } position++ { position289, tokenIndex289 := position, tokenIndex if !_rules[ruleWS]() { goto l289 } goto l290 l289: position, tokenIndex = position289, tokenIndex289 } l290: if !_rules[ruleSymbolArg]() { goto l286 } goto l285 l286: position, tokenIndex = position286, tokenIndex286 } add(ruleSymbolArgs, position284) } memoize(14, position283, tokenIndex283, true) return true l283: memoize(14, position283, tokenIndex283, false) position, tokenIndex = position283, tokenIndex283 return false }, /* 15 SymbolShift <- <((('<' '<') / ('>' '>')) WS? [0-9]+)> */ func() bool { if memoized, ok := memoization[memoKey{15, position}]; ok { return memoizedResult(memoized) } position291, tokenIndex291 := position, tokenIndex { position292 := position { position293, tokenIndex293 := position, tokenIndex if buffer[position] != rune('<') { goto l294 } position++ if buffer[position] != rune('<') { goto l294 } position++ goto l293 l294: position, tokenIndex = position293, tokenIndex293 if buffer[position] != rune('>') { goto l291 } position++ if buffer[position] != rune('>') { goto l291 } position++ } l293: { position295, tokenIndex295 := position, tokenIndex if !_rules[ruleWS]() { goto l295 } goto l296 l295: position, tokenIndex = position295, tokenIndex295 } l296: if c := buffer[position]; c < rune('0') || c > rune('9') { goto l291 } position++ l297: { position298, tokenIndex298 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l298 } position++ goto l297 l298: position, tokenIndex = position298, tokenIndex298 } add(ruleSymbolShift, position292) } memoize(15, position291, tokenIndex291, true) return true l291: memoize(15, position291, tokenIndex291, false) position, tokenIndex = position291, tokenIndex291 return false }, /* 16 SymbolArg <- <((OpenParen WS?)? (Offset / SymbolType / ((Offset / LocalSymbol / SymbolName / Dot) (WS? Operator WS? (Offset / LocalSymbol / SymbolName))*) / (LocalLabelRef WS? Operator WS? LocalLabelRef) / (LocalSymbol TCMarker?) / (SymbolName Offset) / (SymbolName TCMarker?)) (WS? CloseParen)? (WS? SymbolShift)?)> */ func() bool { if memoized, ok := memoization[memoKey{16, position}]; ok { return memoizedResult(memoized) } position299, tokenIndex299 := position, tokenIndex { position300 := position { position301, tokenIndex301 := position, tokenIndex if !_rules[ruleOpenParen]() { goto l301 } { position303, tokenIndex303 := position, tokenIndex if !_rules[ruleWS]() { goto l303 } goto l304 l303: position, tokenIndex = position303, tokenIndex303 } l304: goto l302 l301: position, tokenIndex = position301, tokenIndex301 } l302: { position305, tokenIndex305 := position, tokenIndex if !_rules[ruleOffset]() { goto l306 } goto l305 l306: position, tokenIndex = position305, tokenIndex305 if !_rules[ruleSymbolType]() { goto l307 } goto l305 l307: position, tokenIndex = position305, tokenIndex305 { position309, tokenIndex309 := position, tokenIndex if !_rules[ruleOffset]() { goto l310 } goto l309 l310: position, tokenIndex = position309, tokenIndex309 if !_rules[ruleLocalSymbol]() { goto l311 } goto l309 l311: position, tokenIndex = position309, tokenIndex309 if !_rules[ruleSymbolName]() { goto l312 } goto l309 l312: position, tokenIndex = position309, tokenIndex309 if !_rules[ruleDot]() { goto l308 } } l309: l313: { position314, tokenIndex314 := position, tokenIndex { position315, tokenIndex315 := position, tokenIndex if !_rules[ruleWS]() { goto l315 } goto l316 l315: position, tokenIndex = position315, tokenIndex315 } l316: if !_rules[ruleOperator]() { goto l314 } { position317, tokenIndex317 := position, tokenIndex if !_rules[ruleWS]() { goto l317 } goto l318 l317: position, tokenIndex = position317, tokenIndex317 } l318: { position319, tokenIndex319 := position, tokenIndex if !_rules[ruleOffset]() { goto l320 } goto l319 l320: position, tokenIndex = position319, tokenIndex319 if !_rules[ruleLocalSymbol]() { goto l321 } goto l319 l321: position, tokenIndex = position319, tokenIndex319 if !_rules[ruleSymbolName]() { goto l314 } } l319: goto l313 l314: position, tokenIndex = position314, tokenIndex314 } goto l305 l308: position, tokenIndex = position305, tokenIndex305 if !_rules[ruleLocalLabelRef]() { goto l322 } { position323, tokenIndex323 := position, tokenIndex if !_rules[ruleWS]() { goto l323 } goto l324 l323: position, tokenIndex = position323, tokenIndex323 } l324: if !_rules[ruleOperator]() { goto l322 } { position325, tokenIndex325 := position, tokenIndex if !_rules[ruleWS]() { goto l325 } goto l326 l325: position, tokenIndex = position325, tokenIndex325 } l326: if !_rules[ruleLocalLabelRef]() { goto l322 } goto l305 l322: position, tokenIndex = position305, tokenIndex305 if !_rules[ruleLocalSymbol]() { goto l327 } { position328, tokenIndex328 := position, tokenIndex if !_rules[ruleTCMarker]() { goto l328 } goto l329 l328: position, tokenIndex = position328, tokenIndex328 } l329: goto l305 l327: position, tokenIndex = position305, tokenIndex305 if !_rules[ruleSymbolName]() { goto l330 } if !_rules[ruleOffset]() { goto l330 } goto l305 l330: position, tokenIndex = position305, tokenIndex305 if !_rules[ruleSymbolName]() { goto l299 } { position331, tokenIndex331 := position, tokenIndex if !_rules[ruleTCMarker]() { goto l331 } goto l332 l331: position, tokenIndex = position331, tokenIndex331 } l332: } l305: { position333, tokenIndex333 := position, tokenIndex { position335, tokenIndex335 := position, tokenIndex if !_rules[ruleWS]() { goto l335 } goto l336 l335: position, tokenIndex = position335, tokenIndex335 } l336: if !_rules[ruleCloseParen]() { goto l333 } goto l334 l333: position, tokenIndex = position333, tokenIndex333 } l334: { position337, tokenIndex337 := position, tokenIndex { position339, tokenIndex339 := position, tokenIndex if !_rules[ruleWS]() { goto l339 } goto l340 l339: position, tokenIndex = position339, tokenIndex339 } l340: if !_rules[ruleSymbolShift]() { goto l337 } goto l338 l337: position, tokenIndex = position337, tokenIndex337 } l338: add(ruleSymbolArg, position300) } memoize(16, position299, tokenIndex299, true) return true l299: memoize(16, position299, tokenIndex299, false) position, tokenIndex = position299, tokenIndex299 return false }, /* 17 OpenParen <- <'('> */ func() bool { if memoized, ok := memoization[memoKey{17, position}]; ok { return memoizedResult(memoized) } position341, tokenIndex341 := position, tokenIndex { position342 := position if buffer[position] != rune('(') { goto l341 } position++ add(ruleOpenParen, position342) } memoize(17, position341, tokenIndex341, true) return true l341: memoize(17, position341, tokenIndex341, false) position, tokenIndex = position341, tokenIndex341 return false }, /* 18 CloseParen <- <')'> */ func() bool { if memoized, ok := memoization[memoKey{18, position}]; ok { return memoizedResult(memoized) } position343, tokenIndex343 := position, tokenIndex { position344 := position if buffer[position] != rune(')') { goto l343 } position++ add(ruleCloseParen, position344) } memoize(18, position343, tokenIndex343, true) return true l343: memoize(18, position343, tokenIndex343, false) position, tokenIndex = position343, tokenIndex343 return false }, /* 19 SymbolType <- <(('@' / '%') (('f' 'u' 'n' 'c' 't' 'i' 'o' 'n') / ('o' 'b' 'j' 'e' 'c' 't')))> */ func() bool { if memoized, ok := memoization[memoKey{19, position}]; ok { return memoizedResult(memoized) } position345, tokenIndex345 := position, tokenIndex { position346 := position { position347, tokenIndex347 := position, tokenIndex if buffer[position] != rune('@') { goto l348 } position++ goto l347 l348: position, tokenIndex = position347, tokenIndex347 if buffer[position] != rune('%') { goto l345 } position++ } l347: { position349, tokenIndex349 := position, tokenIndex if buffer[position] != rune('f') { goto l350 } position++ if buffer[position] != rune('u') { goto l350 } position++ if buffer[position] != rune('n') { goto l350 } position++ if buffer[position] != rune('c') { goto l350 } position++ if buffer[position] != rune('t') { goto l350 } position++ if buffer[position] != rune('i') { goto l350 } position++ if buffer[position] != rune('o') { goto l350 } position++ if buffer[position] != rune('n') { goto l350 } position++ goto l349 l350: position, tokenIndex = position349, tokenIndex349 if buffer[position] != rune('o') { goto l345 } position++ if buffer[position] != rune('b') { goto l345 } position++ if buffer[position] != rune('j') { goto l345 } position++ if buffer[position] != rune('e') { goto l345 } position++ if buffer[position] != rune('c') { goto l345 } position++ if buffer[position] != rune('t') { goto l345 } position++ } l349: add(ruleSymbolType, position346) } memoize(19, position345, tokenIndex345, true) return true l345: memoize(19, position345, tokenIndex345, false) position, tokenIndex = position345, tokenIndex345 return false }, /* 20 Dot <- <'.'> */ func() bool { if memoized, ok := memoization[memoKey{20, position}]; ok { return memoizedResult(memoized) } position351, tokenIndex351 := position, tokenIndex { position352 := position if buffer[position] != rune('.') { goto l351 } position++ add(ruleDot, position352) } memoize(20, position351, tokenIndex351, true) return true l351: memoize(20, position351, tokenIndex351, false) position, tokenIndex = position351, tokenIndex351 return false }, /* 21 TCMarker <- <('[' 'T' 'C' ']')> */ func() bool { if memoized, ok := memoization[memoKey{21, position}]; ok { return memoizedResult(memoized) } position353, tokenIndex353 := position, tokenIndex { position354 := position if buffer[position] != rune('[') { goto l353 } position++ if buffer[position] != rune('T') { goto l353 } position++ if buffer[position] != rune('C') { goto l353 } position++ if buffer[position] != rune(']') { goto l353 } position++ add(ruleTCMarker, position354) } memoize(21, position353, tokenIndex353, true) return true l353: memoize(21, position353, tokenIndex353, false) position, tokenIndex = position353, tokenIndex353 return false }, /* 22 EscapedChar <- <('\\' .)> */ func() bool { if memoized, ok := memoization[memoKey{22, position}]; ok { return memoizedResult(memoized) } position355, tokenIndex355 := position, tokenIndex { position356 := position if buffer[position] != rune('\\') { goto l355 } position++ if !matchDot() { goto l355 } add(ruleEscapedChar, position356) } memoize(22, position355, tokenIndex355, true) return true l355: memoize(22, position355, tokenIndex355, false) position, tokenIndex = position355, tokenIndex355 return false }, /* 23 WS <- <(' ' / '\t')+> */ func() bool { if memoized, ok := memoization[memoKey{23, position}]; ok { return memoizedResult(memoized) } position357, tokenIndex357 := position, tokenIndex { position358 := position { position361, tokenIndex361 := position, tokenIndex if buffer[position] != rune(' ') { goto l362 } position++ goto l361 l362: position, tokenIndex = position361, tokenIndex361 if buffer[position] != rune('\t') { goto l357 } position++ } l361: l359: { position360, tokenIndex360 := position, tokenIndex { position363, tokenIndex363 := position, tokenIndex if buffer[position] != rune(' ') { goto l364 } position++ goto l363 l364: position, tokenIndex = position363, tokenIndex363 if buffer[position] != rune('\t') { goto l360 } position++ } l363: goto l359 l360: position, tokenIndex = position360, tokenIndex360 } add(ruleWS, position358) } memoize(23, position357, tokenIndex357, true) return true l357: memoize(23, position357, tokenIndex357, false) position, tokenIndex = position357, tokenIndex357 return false }, /* 24 Comment <- <((('/' '/') / '#') (!'\n' .)*)> */ func() bool { if memoized, ok := memoization[memoKey{24, position}]; ok { return memoizedResult(memoized) } position365, tokenIndex365 := position, tokenIndex { position366 := position { position367, tokenIndex367 := position, tokenIndex if buffer[position] != rune('/') { goto l368 } position++ if buffer[position] != rune('/') { goto l368 } position++ goto l367 l368: position, tokenIndex = position367, tokenIndex367 if buffer[position] != rune('#') { goto l365 } position++ } l367: l369: { position370, tokenIndex370 := position, tokenIndex { position371, tokenIndex371 := position, tokenIndex if buffer[position] != rune('\n') { goto l371 } position++ goto l370 l371: position, tokenIndex = position371, tokenIndex371 } if !matchDot() { goto l370 } goto l369 l370: position, tokenIndex = position370, tokenIndex370 } add(ruleComment, position366) } memoize(24, position365, tokenIndex365, true) return true l365: memoize(24, position365, tokenIndex365, false) position, tokenIndex = position365, tokenIndex365 return false }, /* 25 Label <- <((LocalSymbol / LocalLabel / SymbolName) ':')> */ func() bool { if memoized, ok := memoization[memoKey{25, position}]; ok { return memoizedResult(memoized) } position372, tokenIndex372 := position, tokenIndex { position373 := position { position374, tokenIndex374 := position, tokenIndex if !_rules[ruleLocalSymbol]() { goto l375 } goto l374 l375: position, tokenIndex = position374, tokenIndex374 if !_rules[ruleLocalLabel]() { goto l376 } goto l374 l376: position, tokenIndex = position374, tokenIndex374 if !_rules[ruleSymbolName]() { goto l372 } } l374: if buffer[position] != rune(':') { goto l372 } position++ add(ruleLabel, position373) } memoize(25, position372, tokenIndex372, true) return true l372: memoize(25, position372, tokenIndex372, false) position, tokenIndex = position372, tokenIndex372 return false }, /* 26 SymbolName <- <(([a-z] / [A-Z] / '.' / '_') ([a-z] / [A-Z] / '.' / ([0-9] / [0-9]) / '$' / '_')*)> */ func() bool { if memoized, ok := memoization[memoKey{26, position}]; ok { return memoizedResult(memoized) } position377, tokenIndex377 := position, tokenIndex { position378 := position { position379, tokenIndex379 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { goto l380 } position++ goto l379 l380: position, tokenIndex = position379, tokenIndex379 if c := buffer[position]; c < rune('A') || c > rune('Z') { goto l381 } position++ goto l379 l381: position, tokenIndex = position379, tokenIndex379 if buffer[position] != rune('.') { goto l382 } position++ goto l379 l382: position, tokenIndex = position379, tokenIndex379 if buffer[position] != rune('_') { goto l377 } position++ } l379: l383: { position384, tokenIndex384 := position, tokenIndex { position385, tokenIndex385 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { goto l386 } position++ goto l385 l386: position, tokenIndex = position385, tokenIndex385 if c := buffer[position]; c < rune('A') || c > rune('Z') { goto l387 } position++ goto l385 l387: position, tokenIndex = position385, tokenIndex385 if buffer[position] != rune('.') { goto l388 } position++ goto l385 l388: position, tokenIndex = position385, tokenIndex385 { position390, tokenIndex390 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l391 } position++ goto l390 l391: position, tokenIndex = position390, tokenIndex390 if c := buffer[position]; c < rune('0') || c > rune('9') { goto l389 } position++ } l390: goto l385 l389: position, tokenIndex = position385, tokenIndex385 if buffer[position] != rune('$') { goto l392 } position++ goto l385 l392: position, tokenIndex = position385, tokenIndex385 if buffer[position] != rune('_') { goto l384 } position++ } l385: goto l383 l384: position, tokenIndex = position384, tokenIndex384 } add(ruleSymbolName, position378) } memoize(26, position377, tokenIndex377, true) return true l377: memoize(26, position377, tokenIndex377, false) position, tokenIndex = position377, tokenIndex377 return false }, /* 27 LocalSymbol <- <('.' 'L' ([a-z] / [A-Z] / ([a-z] / [A-Z]) / '.' / ([0-9] / [0-9]) / '$' / '_')+)> */ func() bool { if memoized, ok := memoization[memoKey{27, position}]; ok { return memoizedResult(memoized) } position393, tokenIndex393 := position, tokenIndex { position394 := position if buffer[position] != rune('.') { goto l393 } position++ if buffer[position] != rune('L') { goto l393 } position++ { position397, tokenIndex397 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { goto l398 } position++ goto l397 l398: position, tokenIndex = position397, tokenIndex397 if c := buffer[position]; c < rune('A') || c > rune('Z') { goto l399 } position++ goto l397 l399: position, tokenIndex = position397, tokenIndex397 { position401, tokenIndex401 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { goto l402 } position++ goto l401 l402: position, tokenIndex = position401, tokenIndex401 if c := buffer[position]; c < rune('A') || c > rune('Z') { goto l400 } position++ } l401: goto l397 l400: position, tokenIndex = position397, tokenIndex397 if buffer[position] != rune('.') { goto l403 } position++ goto l397 l403: position, tokenIndex = position397, tokenIndex397 { position405, tokenIndex405 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l406 } position++ goto l405 l406: position, tokenIndex = position405, tokenIndex405 if c := buffer[position]; c < rune('0') || c > rune('9') { goto l404 } position++ } l405: goto l397 l404: position, tokenIndex = position397, tokenIndex397 if buffer[position] != rune('$') { goto l407 } position++ goto l397 l407: position, tokenIndex = position397, tokenIndex397 if buffer[position] != rune('_') { goto l393 } position++ } l397: l395: { position396, tokenIndex396 := position, tokenIndex { position408, tokenIndex408 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { goto l409 } position++ goto l408 l409: position, tokenIndex = position408, tokenIndex408 if c := buffer[position]; c < rune('A') || c > rune('Z') { goto l410 } position++ goto l408 l410: position, tokenIndex = position408, tokenIndex408 { position412, tokenIndex412 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { goto l413 } position++ goto l412 l413: position, tokenIndex = position412, tokenIndex412 if c := buffer[position]; c < rune('A') || c > rune('Z') { goto l411 } position++ } l412: goto l408 l411: position, tokenIndex = position408, tokenIndex408 if buffer[position] != rune('.') { goto l414 } position++ goto l408 l414: position, tokenIndex = position408, tokenIndex408 { position416, tokenIndex416 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l417 } position++ goto l416 l417: position, tokenIndex = position416, tokenIndex416 if c := buffer[position]; c < rune('0') || c > rune('9') { goto l415 } position++ } l416: goto l408 l415: position, tokenIndex = position408, tokenIndex408 if buffer[position] != rune('$') { goto l418 } position++ goto l408 l418: position, tokenIndex = position408, tokenIndex408 if buffer[position] != rune('_') { goto l396 } position++ } l408: goto l395 l396: position, tokenIndex = position396, tokenIndex396 } add(ruleLocalSymbol, position394) } memoize(27, position393, tokenIndex393, true) return true l393: memoize(27, position393, tokenIndex393, false) position, tokenIndex = position393, tokenIndex393 return false }, /* 28 LocalLabel <- <([0-9] ([0-9] / '$')*)> */ func() bool { if memoized, ok := memoization[memoKey{28, position}]; ok { return memoizedResult(memoized) } position419, tokenIndex419 := position, tokenIndex { position420 := position if c := buffer[position]; c < rune('0') || c > rune('9') { goto l419 } position++ l421: { position422, tokenIndex422 := position, tokenIndex { position423, tokenIndex423 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l424 } position++ goto l423 l424: position, tokenIndex = position423, tokenIndex423 if buffer[position] != rune('$') { goto l422 } position++ } l423: goto l421 l422: position, tokenIndex = position422, tokenIndex422 } add(ruleLocalLabel, position420) } memoize(28, position419, tokenIndex419, true) return true l419: memoize(28, position419, tokenIndex419, false) position, tokenIndex = position419, tokenIndex419 return false }, /* 29 LocalLabelRef <- <([0-9] ([0-9] / '$')* ('b' / 'f'))> */ func() bool { if memoized, ok := memoization[memoKey{29, position}]; ok { return memoizedResult(memoized) } position425, tokenIndex425 := position, tokenIndex { position426 := position if c := buffer[position]; c < rune('0') || c > rune('9') { goto l425 } position++ l427: { position428, tokenIndex428 := position, tokenIndex { position429, tokenIndex429 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l430 } position++ goto l429 l430: position, tokenIndex = position429, tokenIndex429 if buffer[position] != rune('$') { goto l428 } position++ } l429: goto l427 l428: position, tokenIndex = position428, tokenIndex428 } { position431, tokenIndex431 := position, tokenIndex if buffer[position] != rune('b') { goto l432 } position++ goto l431 l432: position, tokenIndex = position431, tokenIndex431 if buffer[position] != rune('f') { goto l425 } position++ } l431: add(ruleLocalLabelRef, position426) } memoize(29, position425, tokenIndex425, true) return true l425: memoize(29, position425, tokenIndex425, false) position, tokenIndex = position425, tokenIndex425 return false }, /* 30 Instruction <- <(InstructionName (WS InstructionArg (WS? ','? WS? InstructionArg)*)?)> */ func() bool { if memoized, ok := memoization[memoKey{30, position}]; ok { return memoizedResult(memoized) } position433, tokenIndex433 := position, tokenIndex { position434 := position if !_rules[ruleInstructionName]() { goto l433 } { position435, tokenIndex435 := position, tokenIndex if !_rules[ruleWS]() { goto l435 } if !_rules[ruleInstructionArg]() { goto l435 } l437: { position438, tokenIndex438 := position, tokenIndex { position439, tokenIndex439 := position, tokenIndex if !_rules[ruleWS]() { goto l439 } goto l440 l439: position, tokenIndex = position439, tokenIndex439 } l440: { position441, tokenIndex441 := position, tokenIndex if buffer[position] != rune(',') { goto l441 } position++ goto l442 l441: position, tokenIndex = position441, tokenIndex441 } l442: { position443, tokenIndex443 := position, tokenIndex if !_rules[ruleWS]() { goto l443 } goto l444 l443: position, tokenIndex = position443, tokenIndex443 } l444: if !_rules[ruleInstructionArg]() { goto l438 } goto l437 l438: position, tokenIndex = position438, tokenIndex438 } goto l436 l435: position, tokenIndex = position435, tokenIndex435 } l436: add(ruleInstruction, position434) } memoize(30, position433, tokenIndex433, true) return true l433: memoize(30, position433, tokenIndex433, false) position, tokenIndex = position433, tokenIndex433 return false }, /* 31 InstructionName <- <(([a-z] / [A-Z]) ([a-z] / [A-Z] / '.' / ([0-9] / [0-9]))* ('.' / '+' / '-')?)> */ func() bool { if memoized, ok := memoization[memoKey{31, position}]; ok { return memoizedResult(memoized) } position445, tokenIndex445 := position, tokenIndex { position446 := position { position447, tokenIndex447 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { goto l448 } position++ goto l447 l448: position, tokenIndex = position447, tokenIndex447 if c := buffer[position]; c < rune('A') || c > rune('Z') { goto l445 } position++ } l447: l449: { position450, tokenIndex450 := position, tokenIndex { position451, tokenIndex451 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { goto l452 } position++ goto l451 l452: position, tokenIndex = position451, tokenIndex451 if c := buffer[position]; c < rune('A') || c > rune('Z') { goto l453 } position++ goto l451 l453: position, tokenIndex = position451, tokenIndex451 if buffer[position] != rune('.') { goto l454 } position++ goto l451 l454: position, tokenIndex = position451, tokenIndex451 { position455, tokenIndex455 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l456 } position++ goto l455 l456: position, tokenIndex = position455, tokenIndex455 if c := buffer[position]; c < rune('0') || c > rune('9') { goto l450 } position++ } l455: } l451: goto l449 l450: position, tokenIndex = position450, tokenIndex450 } { position457, tokenIndex457 := position, tokenIndex { position459, tokenIndex459 := position, tokenIndex if buffer[position] != rune('.') { goto l460 } position++ goto l459 l460: position, tokenIndex = position459, tokenIndex459 if buffer[position] != rune('+') { goto l461 } position++ goto l459 l461: position, tokenIndex = position459, tokenIndex459 if buffer[position] != rune('-') { goto l457 } position++ } l459: goto l458 l457: position, tokenIndex = position457, tokenIndex457 } l458: add(ruleInstructionName, position446) } memoize(31, position445, tokenIndex445, true) return true l445: memoize(31, position445, tokenIndex445, false) position, tokenIndex = position445, tokenIndex445 return false }, /* 32 InstructionArg <- <(IndirectionIndicator? (ARMConstantTweak / RegisterOrConstant / LocalLabelRef / TOCRefHigh / TOCRefLow / GOTLocation / GOTSymbolOffset / MemoryRef) AVX512Token*)> */ func() bool { if memoized, ok := memoization[memoKey{32, position}]; ok { return memoizedResult(memoized) } position462, tokenIndex462 := position, tokenIndex { position463 := position { position464, tokenIndex464 := position, tokenIndex if !_rules[ruleIndirectionIndicator]() { goto l464 } goto l465 l464: position, tokenIndex = position464, tokenIndex464 } l465: { position466, tokenIndex466 := position, tokenIndex if !_rules[ruleARMConstantTweak]() { goto l467 } goto l466 l467: position, tokenIndex = position466, tokenIndex466 if !_rules[ruleRegisterOrConstant]() { goto l468 } goto l466 l468: position, tokenIndex = position466, tokenIndex466 if !_rules[ruleLocalLabelRef]() { goto l469 } goto l466 l469: position, tokenIndex = position466, tokenIndex466 if !_rules[ruleTOCRefHigh]() { goto l470 } goto l466 l470: position, tokenIndex = position466, tokenIndex466 if !_rules[ruleTOCRefLow]() { goto l471 } goto l466 l471: position, tokenIndex = position466, tokenIndex466 if !_rules[ruleGOTLocation]() { goto l472 } goto l466 l472: position, tokenIndex = position466, tokenIndex466 if !_rules[ruleGOTSymbolOffset]() { goto l473 } goto l466 l473: position, tokenIndex = position466, tokenIndex466 if !_rules[ruleMemoryRef]() { goto l462 } } l466: l474: { position475, tokenIndex475 := position, tokenIndex if !_rules[ruleAVX512Token]() { goto l475 } goto l474 l475: position, tokenIndex = position475, tokenIndex475 } add(ruleInstructionArg, position463) } memoize(32, position462, tokenIndex462, true) return true l462: memoize(32, position462, tokenIndex462, false) position, tokenIndex = position462, tokenIndex462 return false }, /* 33 GOTLocation <- <('$' '_' 'G' 'L' 'O' 'B' 'A' 'L' '_' 'O' 'F' 'F' 'S' 'E' 'T' '_' 'T' 'A' 'B' 'L' 'E' '_' '-' LocalSymbol)> */ func() bool { if memoized, ok := memoization[memoKey{33, position}]; ok { return memoizedResult(memoized) } position476, tokenIndex476 := position, tokenIndex { position477 := position if buffer[position] != rune('$') { goto l476 } position++ if buffer[position] != rune('_') { goto l476 } position++ if buffer[position] != rune('G') { goto l476 } position++ if buffer[position] != rune('L') { goto l476 } position++ if buffer[position] != rune('O') { goto l476 } position++ if buffer[position] != rune('B') { goto l476 } position++ if buffer[position] != rune('A') { goto l476 } position++ if buffer[position] != rune('L') { goto l476 } position++ if buffer[position] != rune('_') { goto l476 } position++ if buffer[position] != rune('O') { goto l476 } position++ if buffer[position] != rune('F') { goto l476 } position++ if buffer[position] != rune('F') { goto l476 } position++ if buffer[position] != rune('S') { goto l476 } position++ if buffer[position] != rune('E') { goto l476 } position++ if buffer[position] != rune('T') { goto l476 } position++ if buffer[position] != rune('_') { goto l476 } position++ if buffer[position] != rune('T') { goto l476 } position++ if buffer[position] != rune('A') { goto l476 } position++ if buffer[position] != rune('B') { goto l476 } position++ if buffer[position] != rune('L') { goto l476 } position++ if buffer[position] != rune('E') { goto l476 } position++ if buffer[position] != rune('_') { goto l476 } position++ if buffer[position] != rune('-') { goto l476 } position++ if !_rules[ruleLocalSymbol]() { goto l476 } add(ruleGOTLocation, position477) } memoize(33, position476, tokenIndex476, true) return true l476: memoize(33, position476, tokenIndex476, false) position, tokenIndex = position476, tokenIndex476 return false }, /* 34 GOTSymbolOffset <- <(('$' SymbolName ('@' 'G' 'O' 'T') ('O' 'F' 'F')?) / (':' ('g' / 'G') ('o' / 'O') ('t' / 'T') ':' SymbolName))> */ func() bool { if memoized, ok := memoization[memoKey{34, position}]; ok { return memoizedResult(memoized) } position478, tokenIndex478 := position, tokenIndex { position479 := position { position480, tokenIndex480 := position, tokenIndex if buffer[position] != rune('$') { goto l481 } position++ if !_rules[ruleSymbolName]() { goto l481 } if buffer[position] != rune('@') { goto l481 } position++ if buffer[position] != rune('G') { goto l481 } position++ if buffer[position] != rune('O') { goto l481 } position++ if buffer[position] != rune('T') { goto l481 } position++ { position482, tokenIndex482 := position, tokenIndex if buffer[position] != rune('O') { goto l482 } position++ if buffer[position] != rune('F') { goto l482 } position++ if buffer[position] != rune('F') { goto l482 } position++ goto l483 l482: position, tokenIndex = position482, tokenIndex482 } l483: goto l480 l481: position, tokenIndex = position480, tokenIndex480 if buffer[position] != rune(':') { goto l478 } position++ { position484, tokenIndex484 := position, tokenIndex if buffer[position] != rune('g') { goto l485 } position++ goto l484 l485: position, tokenIndex = position484, tokenIndex484 if buffer[position] != rune('G') { goto l478 } position++ } l484: { position486, tokenIndex486 := position, tokenIndex if buffer[position] != rune('o') { goto l487 } position++ goto l486 l487: position, tokenIndex = position486, tokenIndex486 if buffer[position] != rune('O') { goto l478 } position++ } l486: { position488, tokenIndex488 := position, tokenIndex if buffer[position] != rune('t') { goto l489 } position++ goto l488 l489: position, tokenIndex = position488, tokenIndex488 if buffer[position] != rune('T') { goto l478 } position++ } l488: if buffer[position] != rune(':') { goto l478 } position++ if !_rules[ruleSymbolName]() { goto l478 } } l480: add(ruleGOTSymbolOffset, position479) } memoize(34, position478, tokenIndex478, true) return true l478: memoize(34, position478, tokenIndex478, false) position, tokenIndex = position478, tokenIndex478 return false }, /* 35 AVX512Token <- <(WS? '{' '%'? ([0-9] / [a-z])* '}')> */ func() bool { if memoized, ok := memoization[memoKey{35, position}]; ok { return memoizedResult(memoized) } position490, tokenIndex490 := position, tokenIndex { position491 := position { position492, tokenIndex492 := position, tokenIndex if !_rules[ruleWS]() { goto l492 } goto l493 l492: position, tokenIndex = position492, tokenIndex492 } l493: if buffer[position] != rune('{') { goto l490 } position++ { position494, tokenIndex494 := position, tokenIndex if buffer[position] != rune('%') { goto l494 } position++ goto l495 l494: position, tokenIndex = position494, tokenIndex494 } l495: l496: { position497, tokenIndex497 := position, tokenIndex { position498, tokenIndex498 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l499 } position++ goto l498 l499: position, tokenIndex = position498, tokenIndex498 if c := buffer[position]; c < rune('a') || c > rune('z') { goto l497 } position++ } l498: goto l496 l497: position, tokenIndex = position497, tokenIndex497 } if buffer[position] != rune('}') { goto l490 } position++ add(ruleAVX512Token, position491) } memoize(35, position490, tokenIndex490, true) return true l490: memoize(35, position490, tokenIndex490, false) position, tokenIndex = position490, tokenIndex490 return false }, /* 36 TOCRefHigh <- <('.' 'T' 'O' 'C' '.' '-' (('0' 'b') / ('.' 'L' ([a-z] / [A-Z] / '_' / [0-9])+)) ('@' ('h' / 'H') ('a' / 'A')))> */ func() bool { if memoized, ok := memoization[memoKey{36, position}]; ok { return memoizedResult(memoized) } position500, tokenIndex500 := position, tokenIndex { position501 := position if buffer[position] != rune('.') { goto l500 } position++ if buffer[position] != rune('T') { goto l500 } position++ if buffer[position] != rune('O') { goto l500 } position++ if buffer[position] != rune('C') { goto l500 } position++ if buffer[position] != rune('.') { goto l500 } position++ if buffer[position] != rune('-') { goto l500 } position++ { position502, tokenIndex502 := position, tokenIndex if buffer[position] != rune('0') { goto l503 } position++ if buffer[position] != rune('b') { goto l503 } position++ goto l502 l503: position, tokenIndex = position502, tokenIndex502 if buffer[position] != rune('.') { goto l500 } position++ if buffer[position] != rune('L') { goto l500 } position++ { 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 l500 } position++ } l506: l504: { position505, tokenIndex505 := position, tokenIndex { position510, tokenIndex510 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { goto l511 } position++ goto l510 l511: position, tokenIndex = position510, tokenIndex510 if c := buffer[position]; c < rune('A') || c > rune('Z') { goto l512 } position++ goto l510 l512: position, tokenIndex = position510, tokenIndex510 if buffer[position] != rune('_') { goto l513 } position++ goto l510 l513: position, tokenIndex = position510, tokenIndex510 if c := buffer[position]; c < rune('0') || c > rune('9') { goto l505 } position++ } l510: goto l504 l505: position, tokenIndex = position505, tokenIndex505 } } l502: if buffer[position] != rune('@') { goto l500 } position++ { position514, tokenIndex514 := position, tokenIndex if buffer[position] != rune('h') { goto l515 } position++ goto l514 l515: position, tokenIndex = position514, tokenIndex514 if buffer[position] != rune('H') { goto l500 } position++ } l514: { position516, tokenIndex516 := position, tokenIndex if buffer[position] != rune('a') { goto l517 } position++ goto l516 l517: position, tokenIndex = position516, tokenIndex516 if buffer[position] != rune('A') { goto l500 } position++ } l516: add(ruleTOCRefHigh, position501) } memoize(36, position500, tokenIndex500, true) return true l500: memoize(36, position500, tokenIndex500, false) position, tokenIndex = position500, tokenIndex500 return false }, /* 37 TOCRefLow <- <('.' 'T' 'O' 'C' '.' '-' (('0' 'b') / ('.' 'L' ([a-z] / [A-Z] / '_' / [0-9])+)) ('@' ('l' / 'L')))> */ func() bool { if memoized, ok := memoization[memoKey{37, position}]; ok { return memoizedResult(memoized) } position518, tokenIndex518 := position, tokenIndex { position519 := position if buffer[position] != rune('.') { goto l518 } position++ if buffer[position] != rune('T') { goto l518 } position++ if buffer[position] != rune('O') { goto l518 } position++ if buffer[position] != rune('C') { goto l518 } position++ if buffer[position] != rune('.') { goto l518 } position++ if buffer[position] != rune('-') { goto l518 } position++ { position520, tokenIndex520 := position, tokenIndex if buffer[position] != rune('0') { goto l521 } position++ if buffer[position] != rune('b') { goto l521 } position++ goto l520 l521: position, tokenIndex = position520, tokenIndex520 if buffer[position] != rune('.') { goto l518 } position++ if buffer[position] != rune('L') { goto l518 } position++ { 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 l518 } position++ } l524: l522: { position523, tokenIndex523 := position, tokenIndex { position528, tokenIndex528 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { goto l529 } position++ goto l528 l529: position, tokenIndex = position528, tokenIndex528 if c := buffer[position]; c < rune('A') || c > rune('Z') { goto l530 } position++ goto l528 l530: position, tokenIndex = position528, tokenIndex528 if buffer[position] != rune('_') { goto l531 } position++ goto l528 l531: position, tokenIndex = position528, tokenIndex528 if c := buffer[position]; c < rune('0') || c > rune('9') { goto l523 } position++ } l528: goto l522 l523: position, tokenIndex = position523, tokenIndex523 } } l520: if buffer[position] != rune('@') { goto l518 } position++ { position532, tokenIndex532 := position, tokenIndex if buffer[position] != rune('l') { goto l533 } position++ goto l532 l533: position, tokenIndex = position532, tokenIndex532 if buffer[position] != rune('L') { goto l518 } position++ } l532: add(ruleTOCRefLow, position519) } memoize(37, position518, tokenIndex518, true) return true l518: memoize(37, position518, tokenIndex518, false) position, tokenIndex = position518, tokenIndex518 return false }, /* 38 IndirectionIndicator <- <'*'> */ func() bool { if memoized, ok := memoization[memoKey{38, position}]; ok { return memoizedResult(memoized) } position534, tokenIndex534 := position, tokenIndex { position535 := position if buffer[position] != rune('*') { goto l534 } position++ add(ruleIndirectionIndicator, position535) } memoize(38, position534, tokenIndex534, true) return true l534: memoize(38, position534, tokenIndex534, false) position, tokenIndex = position534, tokenIndex534 return false }, /* 39 RegisterOrConstant <- <((('%' ([a-z] / [A-Z]) ([a-z] / [A-Z] / ([0-9] / [0-9]))*) / ('$' [0-9]+ WS? '*' WS? '(' [0-9]+ WS? '-' WS? [0-9]+ ')') / ('$'? ((Offset Offset) / Offset)) / ('#' Offset ('*' [0-9]+ ('-' [0-9] [0-9]*)?)?) / ('#' '~'? '(' [0-9] WS? ('<' '<') WS? [0-9] [0-9]? ')') / (('#' / '$') '~'? ('0' 'x')? ([0-9] / [0-9] / ([a-f] / [A-F]))+) / ('$' '(' '-' [0-9]+ ')') / ARMRegister) !('f' / 'b' / ':' / '(' / '+' / '-'))> */ func() bool { if memoized, ok := memoization[memoKey{39, position}]; ok { return memoizedResult(memoized) } position536, tokenIndex536 := position, tokenIndex { position537 := position { position538, tokenIndex538 := position, tokenIndex if buffer[position] != rune('%') { goto l539 } position++ { 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 l539 } position++ } l540: l542: { position543, tokenIndex543 := position, tokenIndex { position544, tokenIndex544 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { goto l545 } position++ goto l544 l545: position, tokenIndex = position544, tokenIndex544 if c := buffer[position]; c < rune('A') || c > rune('Z') { goto l546 } position++ goto l544 l546: position, tokenIndex = position544, tokenIndex544 { position547, tokenIndex547 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l548 } position++ goto l547 l548: position, tokenIndex = position547, tokenIndex547 if c := buffer[position]; c < rune('0') || c > rune('9') { goto l543 } position++ } l547: } l544: goto l542 l543: position, tokenIndex = position543, tokenIndex543 } goto l538 l539: position, tokenIndex = position538, tokenIndex538 if buffer[position] != rune('$') { goto l549 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { goto l549 } position++ l550: { position551, tokenIndex551 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l551 } position++ goto l550 l551: position, tokenIndex = position551, tokenIndex551 } { position552, tokenIndex552 := position, tokenIndex if !_rules[ruleWS]() { goto l552 } goto l553 l552: position, tokenIndex = position552, tokenIndex552 } l553: if buffer[position] != rune('*') { goto l549 } position++ { position554, tokenIndex554 := position, tokenIndex if !_rules[ruleWS]() { goto l554 } goto l555 l554: position, tokenIndex = position554, tokenIndex554 } l555: if buffer[position] != rune('(') { goto l549 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { goto l549 } position++ l556: { position557, tokenIndex557 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l557 } position++ goto l556 l557: position, tokenIndex = position557, tokenIndex557 } { position558, tokenIndex558 := position, tokenIndex if !_rules[ruleWS]() { goto l558 } goto l559 l558: position, tokenIndex = position558, tokenIndex558 } l559: if buffer[position] != rune('-') { goto l549 } position++ { position560, tokenIndex560 := position, tokenIndex if !_rules[ruleWS]() { goto l560 } goto l561 l560: position, tokenIndex = position560, tokenIndex560 } l561: if c := buffer[position]; c < rune('0') || c > rune('9') { goto l549 } position++ l562: { position563, tokenIndex563 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l563 } position++ goto l562 l563: position, tokenIndex = position563, tokenIndex563 } if buffer[position] != rune(')') { goto l549 } position++ goto l538 l549: position, tokenIndex = position538, tokenIndex538 { position565, tokenIndex565 := position, tokenIndex if buffer[position] != rune('$') { goto l565 } position++ goto l566 l565: position, tokenIndex = position565, tokenIndex565 } l566: { position567, tokenIndex567 := position, tokenIndex if !_rules[ruleOffset]() { goto l568 } if !_rules[ruleOffset]() { goto l568 } goto l567 l568: position, tokenIndex = position567, tokenIndex567 if !_rules[ruleOffset]() { goto l564 } } l567: goto l538 l564: position, tokenIndex = position538, tokenIndex538 if buffer[position] != rune('#') { goto l569 } position++ if !_rules[ruleOffset]() { goto l569 } { position570, tokenIndex570 := position, tokenIndex if buffer[position] != rune('*') { goto l570 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { goto l570 } position++ l572: { position573, tokenIndex573 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l573 } position++ goto l572 l573: position, tokenIndex = position573, tokenIndex573 } { position574, tokenIndex574 := position, tokenIndex if buffer[position] != rune('-') { goto l574 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { goto l574 } position++ l576: { position577, tokenIndex577 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l577 } position++ goto l576 l577: position, tokenIndex = position577, tokenIndex577 } goto l575 l574: position, tokenIndex = position574, tokenIndex574 } l575: goto l571 l570: position, tokenIndex = position570, tokenIndex570 } l571: goto l538 l569: position, tokenIndex = position538, tokenIndex538 if buffer[position] != rune('#') { goto l578 } position++ { position579, tokenIndex579 := position, tokenIndex if buffer[position] != rune('~') { goto l579 } position++ goto l580 l579: position, tokenIndex = position579, tokenIndex579 } l580: if buffer[position] != rune('(') { goto l578 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { goto l578 } position++ { position581, tokenIndex581 := position, tokenIndex if !_rules[ruleWS]() { goto l581 } goto l582 l581: position, tokenIndex = position581, tokenIndex581 } l582: if buffer[position] != rune('<') { goto l578 } position++ if buffer[position] != rune('<') { goto l578 } position++ { position583, tokenIndex583 := position, tokenIndex if !_rules[ruleWS]() { goto l583 } goto l584 l583: position, tokenIndex = position583, tokenIndex583 } l584: if c := buffer[position]; c < rune('0') || c > rune('9') { goto l578 } position++ { position585, tokenIndex585 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l585 } position++ goto l586 l585: position, tokenIndex = position585, tokenIndex585 } l586: if buffer[position] != rune(')') { goto l578 } position++ goto l538 l578: position, tokenIndex = position538, tokenIndex538 { position588, tokenIndex588 := position, tokenIndex if buffer[position] != rune('#') { goto l589 } position++ goto l588 l589: position, tokenIndex = position588, tokenIndex588 if buffer[position] != rune('$') { goto l587 } position++ } l588: { position590, tokenIndex590 := position, tokenIndex if buffer[position] != rune('~') { goto l590 } position++ goto l591 l590: position, tokenIndex = position590, tokenIndex590 } l591: { position592, tokenIndex592 := position, tokenIndex if buffer[position] != rune('0') { goto l592 } position++ if buffer[position] != rune('x') { goto l592 } position++ goto l593 l592: position, tokenIndex = position592, tokenIndex592 } l593: { position596, tokenIndex596 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l597 } position++ goto l596 l597: position, tokenIndex = position596, tokenIndex596 if c := buffer[position]; c < rune('0') || c > rune('9') { goto l598 } position++ goto l596 l598: position, tokenIndex = position596, tokenIndex596 { position599, tokenIndex599 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('f') { goto l600 } position++ goto l599 l600: position, tokenIndex = position599, tokenIndex599 if c := buffer[position]; c < rune('A') || c > rune('F') { goto l587 } position++ } l599: } l596: l594: { position595, tokenIndex595 := position, tokenIndex { position601, tokenIndex601 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l602 } position++ goto l601 l602: position, tokenIndex = position601, tokenIndex601 if c := buffer[position]; c < rune('0') || c > rune('9') { goto l603 } position++ goto l601 l603: position, tokenIndex = position601, tokenIndex601 { position604, tokenIndex604 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('f') { goto l605 } position++ goto l604 l605: position, tokenIndex = position604, tokenIndex604 if c := buffer[position]; c < rune('A') || c > rune('F') { goto l595 } position++ } l604: } l601: goto l594 l595: position, tokenIndex = position595, tokenIndex595 } goto l538 l587: position, tokenIndex = position538, tokenIndex538 if buffer[position] != rune('$') { goto l606 } position++ if buffer[position] != rune('(') { goto l606 } position++ if buffer[position] != rune('-') { goto l606 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { goto l606 } position++ l607: { position608, tokenIndex608 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l608 } position++ goto l607 l608: position, tokenIndex = position608, tokenIndex608 } if buffer[position] != rune(')') { goto l606 } position++ goto l538 l606: position, tokenIndex = position538, tokenIndex538 if !_rules[ruleARMRegister]() { goto l536 } } l538: { position609, tokenIndex609 := position, tokenIndex { position610, tokenIndex610 := position, tokenIndex if buffer[position] != rune('f') { goto l611 } position++ goto l610 l611: position, tokenIndex = position610, tokenIndex610 if buffer[position] != rune('b') { goto l612 } position++ goto l610 l612: position, tokenIndex = position610, tokenIndex610 if buffer[position] != rune(':') { goto l613 } position++ goto l610 l613: position, tokenIndex = position610, tokenIndex610 if buffer[position] != rune('(') { goto l614 } position++ goto l610 l614: position, tokenIndex = position610, tokenIndex610 if buffer[position] != rune('+') { goto l615 } position++ goto l610 l615: position, tokenIndex = position610, tokenIndex610 if buffer[position] != rune('-') { goto l609 } position++ } l610: goto l536 l609: position, tokenIndex = position609, tokenIndex609 } add(ruleRegisterOrConstant, position537) } memoize(39, position536, tokenIndex536, true) return true l536: memoize(39, position536, tokenIndex536, false) position, tokenIndex = position536, tokenIndex536 return false }, /* 40 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)?)> */ func() bool { if memoized, ok := memoization[memoKey{40, position}]; ok { return memoizedResult(memoized) } position616, tokenIndex616 := position, tokenIndex { position617 := position { position618, tokenIndex618 := position, tokenIndex { position620, tokenIndex620 := position, tokenIndex if buffer[position] != rune('u') { goto l621 } position++ goto l620 l621: position, tokenIndex = position620, tokenIndex620 if buffer[position] != rune('s') { goto l619 } position++ } l620: { position622, tokenIndex622 := position, tokenIndex if buffer[position] != rune('x') { goto l623 } position++ goto l622 l623: position, tokenIndex = position622, tokenIndex622 if buffer[position] != rune('X') { goto l619 } position++ } l622: { position624, tokenIndex624 := position, tokenIndex if buffer[position] != rune('t') { goto l625 } position++ goto l624 l625: position, tokenIndex = position624, tokenIndex624 if buffer[position] != rune('T') { goto l619 } position++ } l624: { position626, tokenIndex626 := position, tokenIndex if buffer[position] != rune('x') { goto l627 } position++ goto l626 l627: position, tokenIndex = position626, tokenIndex626 if buffer[position] != rune('w') { goto l628 } position++ goto l626 l628: position, tokenIndex = position626, tokenIndex626 if buffer[position] != rune('h') { goto l629 } position++ goto l626 l629: position, tokenIndex = position626, tokenIndex626 if buffer[position] != rune('b') { goto l619 } position++ } l626: goto l618 l619: position, tokenIndex = position618, tokenIndex618 { position631, tokenIndex631 := position, tokenIndex if buffer[position] != rune('l') { goto l632 } position++ goto l631 l632: position, tokenIndex = position631, tokenIndex631 if buffer[position] != rune('L') { goto l630 } position++ } l631: { position633, tokenIndex633 := position, tokenIndex if buffer[position] != rune('s') { goto l634 } position++ goto l633 l634: position, tokenIndex = position633, tokenIndex633 if buffer[position] != rune('S') { goto l630 } position++ } l633: { position635, tokenIndex635 := position, tokenIndex if buffer[position] != rune('l') { goto l636 } position++ goto l635 l636: position, tokenIndex = position635, tokenIndex635 if buffer[position] != rune('L') { goto l630 } position++ } l635: goto l618 l630: position, tokenIndex = position618, tokenIndex618 { position638, tokenIndex638 := position, tokenIndex if buffer[position] != rune('l') { goto l639 } position++ goto l638 l639: position, tokenIndex = position638, tokenIndex638 if buffer[position] != rune('L') { goto l637 } position++ } l638: { position640, tokenIndex640 := position, tokenIndex if buffer[position] != rune('s') { goto l641 } position++ goto l640 l641: position, tokenIndex = position640, tokenIndex640 if buffer[position] != rune('S') { goto l637 } position++ } l640: { position642, tokenIndex642 := position, tokenIndex if buffer[position] != rune('r') { goto l643 } position++ goto l642 l643: position, tokenIndex = position642, tokenIndex642 if buffer[position] != rune('R') { goto l637 } position++ } l642: goto l618 l637: position, tokenIndex = position618, tokenIndex618 { position645, tokenIndex645 := position, tokenIndex if buffer[position] != rune('r') { goto l646 } position++ goto l645 l646: position, tokenIndex = position645, tokenIndex645 if buffer[position] != rune('R') { goto l644 } position++ } l645: { position647, tokenIndex647 := position, tokenIndex if buffer[position] != rune('o') { goto l648 } position++ goto l647 l648: position, tokenIndex = position647, tokenIndex647 if buffer[position] != rune('O') { goto l644 } position++ } l647: { position649, tokenIndex649 := position, tokenIndex if buffer[position] != rune('r') { goto l650 } position++ goto l649 l650: position, tokenIndex = position649, tokenIndex649 if buffer[position] != rune('R') { goto l644 } position++ } l649: goto l618 l644: position, tokenIndex = position618, tokenIndex618 { position651, tokenIndex651 := position, tokenIndex if buffer[position] != rune('a') { goto l652 } position++ goto l651 l652: position, tokenIndex = position651, tokenIndex651 if buffer[position] != rune('A') { goto l616 } position++ } l651: { position653, tokenIndex653 := position, tokenIndex if buffer[position] != rune('s') { goto l654 } position++ goto l653 l654: position, tokenIndex = position653, tokenIndex653 if buffer[position] != rune('S') { goto l616 } position++ } l653: { position655, tokenIndex655 := position, tokenIndex if buffer[position] != rune('r') { goto l656 } position++ goto l655 l656: position, tokenIndex = position655, tokenIndex655 if buffer[position] != rune('R') { goto l616 } position++ } l655: } l618: { position657, tokenIndex657 := position, tokenIndex if !_rules[ruleWS]() { goto l657 } { position659, tokenIndex659 := position, tokenIndex if buffer[position] != rune('#') { goto l659 } position++ goto l660 l659: position, tokenIndex = position659, tokenIndex659 } l660: if !_rules[ruleOffset]() { goto l657 } goto l658 l657: position, tokenIndex = position657, tokenIndex657 } l658: add(ruleARMConstantTweak, position617) } memoize(40, position616, tokenIndex616, true) return true l616: memoize(40, position616, tokenIndex616, false) position, tokenIndex = position616, tokenIndex616 return false }, /* 41 ARMRegister <- <((('s' / 'S') ('p' / 'P')) / (('x' / 'w' / 'd' / 'q' / 's' / 'h' / 'b') [0-9] [0-9]?) / (('x' / 'X') ('z' / 'Z') ('r' / 'R')) / (('w' / 'W') ('z' / 'Z') ('r' / 'R')) / (('n' / 'N') ('z' / 'Z') ('c' / 'C') ('v' / 'V')) / ARMVectorRegister / ('{' WS? ARMVectorRegister WS? ((',' / '-') WS? ARMVectorRegister)* WS? '}' ('[' [0-9] [0-9]? ']')?))> */ func() bool { if memoized, ok := memoization[memoKey{41, position}]; ok { return memoizedResult(memoized) } position661, tokenIndex661 := position, tokenIndex { position662 := position { position663, tokenIndex663 := position, tokenIndex { position665, tokenIndex665 := position, tokenIndex if buffer[position] != rune('s') { goto l666 } position++ goto l665 l666: position, tokenIndex = position665, tokenIndex665 if buffer[position] != rune('S') { goto l664 } position++ } l665: { position667, tokenIndex667 := position, tokenIndex if buffer[position] != rune('p') { goto l668 } position++ goto l667 l668: position, tokenIndex = position667, tokenIndex667 if buffer[position] != rune('P') { goto l664 } position++ } l667: goto l663 l664: position, tokenIndex = position663, tokenIndex663 { position670, tokenIndex670 := position, tokenIndex if buffer[position] != rune('x') { goto l671 } position++ goto l670 l671: position, tokenIndex = position670, tokenIndex670 if buffer[position] != rune('w') { goto l672 } position++ goto l670 l672: position, tokenIndex = position670, tokenIndex670 if buffer[position] != rune('d') { goto l673 } position++ goto l670 l673: position, tokenIndex = position670, tokenIndex670 if buffer[position] != rune('q') { goto l674 } position++ goto l670 l674: position, tokenIndex = position670, tokenIndex670 if buffer[position] != rune('s') { goto l675 } position++ goto l670 l675: position, tokenIndex = position670, tokenIndex670 if buffer[position] != rune('h') { goto l676 } position++ goto l670 l676: position, tokenIndex = position670, tokenIndex670 if buffer[position] != rune('b') { goto l669 } position++ } l670: if c := buffer[position]; c < rune('0') || c > rune('9') { goto l669 } position++ { position677, tokenIndex677 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l677 } position++ goto l678 l677: position, tokenIndex = position677, tokenIndex677 } l678: goto l663 l669: position, tokenIndex = position663, tokenIndex663 { position680, tokenIndex680 := position, tokenIndex if buffer[position] != rune('x') { goto l681 } position++ goto l680 l681: position, tokenIndex = position680, tokenIndex680 if buffer[position] != rune('X') { goto l679 } position++ } l680: { position682, tokenIndex682 := position, tokenIndex if buffer[position] != rune('z') { goto l683 } position++ goto l682 l683: position, tokenIndex = position682, tokenIndex682 if buffer[position] != rune('Z') { goto l679 } position++ } l682: { position684, tokenIndex684 := position, tokenIndex if buffer[position] != rune('r') { goto l685 } position++ goto l684 l685: position, tokenIndex = position684, tokenIndex684 if buffer[position] != rune('R') { goto l679 } position++ } l684: goto l663 l679: position, tokenIndex = position663, tokenIndex663 { position687, tokenIndex687 := position, tokenIndex if buffer[position] != rune('w') { goto l688 } position++ goto l687 l688: position, tokenIndex = position687, tokenIndex687 if buffer[position] != rune('W') { goto l686 } position++ } l687: { position689, tokenIndex689 := position, tokenIndex if buffer[position] != rune('z') { goto l690 } position++ goto l689 l690: position, tokenIndex = position689, tokenIndex689 if buffer[position] != rune('Z') { goto l686 } position++ } l689: { position691, tokenIndex691 := position, tokenIndex if buffer[position] != rune('r') { goto l692 } position++ goto l691 l692: position, tokenIndex = position691, tokenIndex691 if buffer[position] != rune('R') { goto l686 } position++ } l691: goto l663 l686: position, tokenIndex = position663, tokenIndex663 { position694, tokenIndex694 := position, tokenIndex if buffer[position] != rune('n') { goto l695 } position++ goto l694 l695: position, tokenIndex = position694, tokenIndex694 if buffer[position] != rune('N') { goto l693 } position++ } l694: { position696, tokenIndex696 := position, tokenIndex if buffer[position] != rune('z') { goto l697 } position++ goto l696 l697: position, tokenIndex = position696, tokenIndex696 if buffer[position] != rune('Z') { goto l693 } position++ } l696: { position698, tokenIndex698 := position, tokenIndex if buffer[position] != rune('c') { goto l699 } position++ goto l698 l699: position, tokenIndex = position698, tokenIndex698 if buffer[position] != rune('C') { goto l693 } position++ } l698: { position700, tokenIndex700 := position, tokenIndex if buffer[position] != rune('v') { goto l701 } position++ goto l700 l701: position, tokenIndex = position700, tokenIndex700 if buffer[position] != rune('V') { goto l693 } position++ } l700: goto l663 l693: position, tokenIndex = position663, tokenIndex663 if !_rules[ruleARMVectorRegister]() { goto l702 } goto l663 l702: position, tokenIndex = position663, tokenIndex663 if buffer[position] != rune('{') { goto l661 } position++ { position703, tokenIndex703 := position, tokenIndex if !_rules[ruleWS]() { goto l703 } goto l704 l703: position, tokenIndex = position703, tokenIndex703 } l704: if !_rules[ruleARMVectorRegister]() { goto l661 } { position705, tokenIndex705 := position, tokenIndex if !_rules[ruleWS]() { goto l705 } goto l706 l705: position, tokenIndex = position705, tokenIndex705 } l706: l707: { position708, tokenIndex708 := position, tokenIndex { position709, tokenIndex709 := position, tokenIndex if buffer[position] != rune(',') { goto l710 } position++ goto l709 l710: position, tokenIndex = position709, tokenIndex709 if buffer[position] != rune('-') { goto l708 } position++ } l709: { position711, tokenIndex711 := position, tokenIndex if !_rules[ruleWS]() { goto l711 } goto l712 l711: position, tokenIndex = position711, tokenIndex711 } l712: if !_rules[ruleARMVectorRegister]() { goto l708 } goto l707 l708: position, tokenIndex = position708, tokenIndex708 } { position713, tokenIndex713 := position, tokenIndex if !_rules[ruleWS]() { goto l713 } goto l714 l713: position, tokenIndex = position713, tokenIndex713 } l714: if buffer[position] != rune('}') { goto l661 } position++ { position715, tokenIndex715 := position, tokenIndex if buffer[position] != rune('[') { goto l715 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { goto l715 } position++ { position717, tokenIndex717 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l717 } position++ goto l718 l717: position, tokenIndex = position717, tokenIndex717 } l718: if buffer[position] != rune(']') { goto l715 } position++ goto l716 l715: position, tokenIndex = position715, tokenIndex715 } l716: } l663: add(ruleARMRegister, position662) } memoize(41, position661, tokenIndex661, true) return true l661: memoize(41, position661, tokenIndex661, false) position, tokenIndex = position661, tokenIndex661 return false }, /* 42 ARMVectorRegister <- <(('v' / 'V') [0-9] [0-9]? ('.' [0-9]* ('b' / 's' / 'd' / 'h' / 'q') ('[' [0-9] [0-9]? ']')?)?)> */ func() bool { if memoized, ok := memoization[memoKey{42, position}]; ok { return memoizedResult(memoized) } position719, tokenIndex719 := position, tokenIndex { position720 := position { position721, tokenIndex721 := position, tokenIndex if buffer[position] != rune('v') { goto l722 } position++ goto l721 l722: position, tokenIndex = position721, tokenIndex721 if buffer[position] != rune('V') { goto l719 } position++ } l721: if c := buffer[position]; c < rune('0') || c > rune('9') { goto l719 } position++ { position723, tokenIndex723 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l723 } position++ goto l724 l723: position, tokenIndex = position723, tokenIndex723 } l724: { position725, tokenIndex725 := position, tokenIndex if buffer[position] != rune('.') { goto l725 } position++ l727: { position728, tokenIndex728 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l728 } position++ goto l727 l728: position, tokenIndex = position728, tokenIndex728 } { position729, tokenIndex729 := position, tokenIndex if buffer[position] != rune('b') { goto l730 } position++ goto l729 l730: position, tokenIndex = position729, tokenIndex729 if buffer[position] != rune('s') { goto l731 } position++ goto l729 l731: position, tokenIndex = position729, tokenIndex729 if buffer[position] != rune('d') { goto l732 } position++ goto l729 l732: position, tokenIndex = position729, tokenIndex729 if buffer[position] != rune('h') { goto l733 } position++ goto l729 l733: position, tokenIndex = position729, tokenIndex729 if buffer[position] != rune('q') { goto l725 } position++ } l729: { position734, tokenIndex734 := position, tokenIndex if buffer[position] != rune('[') { goto l734 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { goto l734 } position++ { position736, tokenIndex736 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l736 } position++ goto l737 l736: position, tokenIndex = position736, tokenIndex736 } l737: if buffer[position] != rune(']') { goto l734 } position++ goto l735 l734: position, tokenIndex = position734, tokenIndex734 } l735: goto l726 l725: position, tokenIndex = position725, tokenIndex725 } l726: add(ruleARMVectorRegister, position720) } memoize(42, position719, tokenIndex719, true) return true l719: memoize(42, position719, tokenIndex719, false) position, tokenIndex = position719, tokenIndex719 return false }, /* 43 MemoryRef <- <((SymbolRef BaseIndexScale) / SymbolRef / Low12BitsSymbolRef / (Offset* BaseIndexScale) / (SegmentRegister Offset BaseIndexScale) / (SegmentRegister BaseIndexScale) / (SegmentRegister Offset) / ARMBaseIndexScale / BaseIndexScale)> */ func() bool { if memoized, ok := memoization[memoKey{43, position}]; ok { return memoizedResult(memoized) } position738, tokenIndex738 := position, tokenIndex { position739 := position { position740, tokenIndex740 := position, tokenIndex if !_rules[ruleSymbolRef]() { goto l741 } if !_rules[ruleBaseIndexScale]() { goto l741 } goto l740 l741: position, tokenIndex = position740, tokenIndex740 if !_rules[ruleSymbolRef]() { goto l742 } goto l740 l742: position, tokenIndex = position740, tokenIndex740 if !_rules[ruleLow12BitsSymbolRef]() { goto l743 } goto l740 l743: position, tokenIndex = position740, tokenIndex740 l745: { position746, tokenIndex746 := position, tokenIndex if !_rules[ruleOffset]() { goto l746 } goto l745 l746: position, tokenIndex = position746, tokenIndex746 } if !_rules[ruleBaseIndexScale]() { goto l744 } goto l740 l744: position, tokenIndex = position740, tokenIndex740 if !_rules[ruleSegmentRegister]() { goto l747 } if !_rules[ruleOffset]() { goto l747 } if !_rules[ruleBaseIndexScale]() { goto l747 } goto l740 l747: position, tokenIndex = position740, tokenIndex740 if !_rules[ruleSegmentRegister]() { goto l748 } if !_rules[ruleBaseIndexScale]() { goto l748 } goto l740 l748: position, tokenIndex = position740, tokenIndex740 if !_rules[ruleSegmentRegister]() { goto l749 } if !_rules[ruleOffset]() { goto l749 } goto l740 l749: position, tokenIndex = position740, tokenIndex740 if !_rules[ruleARMBaseIndexScale]() { goto l750 } goto l740 l750: position, tokenIndex = position740, tokenIndex740 if !_rules[ruleBaseIndexScale]() { goto l738 } } l740: add(ruleMemoryRef, position739) } memoize(43, position738, tokenIndex738, true) return true l738: memoize(43, position738, tokenIndex738, false) position, tokenIndex = position738, tokenIndex738 return false }, /* 44 SymbolRef <- <((Offset* '+')? (LocalSymbol / SymbolName) Offset* ('@' Section Offset*)?)> */ func() bool { if memoized, ok := memoization[memoKey{44, position}]; ok { return memoizedResult(memoized) } position751, tokenIndex751 := position, tokenIndex { position752 := position { position753, tokenIndex753 := position, tokenIndex l755: { position756, tokenIndex756 := position, tokenIndex if !_rules[ruleOffset]() { goto l756 } goto l755 l756: position, tokenIndex = position756, tokenIndex756 } if buffer[position] != rune('+') { goto l753 } position++ goto l754 l753: position, tokenIndex = position753, tokenIndex753 } l754: { position757, tokenIndex757 := position, tokenIndex if !_rules[ruleLocalSymbol]() { goto l758 } goto l757 l758: position, tokenIndex = position757, tokenIndex757 if !_rules[ruleSymbolName]() { goto l751 } } l757: l759: { position760, tokenIndex760 := position, tokenIndex if !_rules[ruleOffset]() { goto l760 } goto l759 l760: position, tokenIndex = position760, tokenIndex760 } { position761, tokenIndex761 := position, tokenIndex if buffer[position] != rune('@') { goto l761 } position++ if !_rules[ruleSection]() { goto l761 } l763: { position764, tokenIndex764 := position, tokenIndex if !_rules[ruleOffset]() { goto l764 } goto l763 l764: position, tokenIndex = position764, tokenIndex764 } goto l762 l761: position, tokenIndex = position761, tokenIndex761 } l762: add(ruleSymbolRef, position752) } memoize(44, position751, tokenIndex751, true) return true l751: memoize(44, position751, tokenIndex751, false) position, tokenIndex = position751, tokenIndex751 return false }, /* 45 Low12BitsSymbolRef <- <(':' ('l' / 'L') ('o' / 'O') '1' '2' ':' (LocalSymbol / SymbolName) Offset?)> */ func() bool { if memoized, ok := memoization[memoKey{45, position}]; ok { return memoizedResult(memoized) } position765, tokenIndex765 := position, tokenIndex { position766 := position if buffer[position] != rune(':') { goto l765 } position++ { position767, tokenIndex767 := position, tokenIndex if buffer[position] != rune('l') { goto l768 } position++ goto l767 l768: position, tokenIndex = position767, tokenIndex767 if buffer[position] != rune('L') { goto l765 } position++ } l767: { position769, tokenIndex769 := position, tokenIndex if buffer[position] != rune('o') { goto l770 } position++ goto l769 l770: position, tokenIndex = position769, tokenIndex769 if buffer[position] != rune('O') { goto l765 } position++ } l769: if buffer[position] != rune('1') { goto l765 } position++ if buffer[position] != rune('2') { goto l765 } position++ if buffer[position] != rune(':') { goto l765 } position++ { position771, tokenIndex771 := position, tokenIndex if !_rules[ruleLocalSymbol]() { goto l772 } goto l771 l772: position, tokenIndex = position771, tokenIndex771 if !_rules[ruleSymbolName]() { goto l765 } } l771: { position773, tokenIndex773 := position, tokenIndex if !_rules[ruleOffset]() { goto l773 } goto l774 l773: position, tokenIndex = position773, tokenIndex773 } l774: add(ruleLow12BitsSymbolRef, position766) } memoize(45, position765, tokenIndex765, true) return true l765: memoize(45, position765, tokenIndex765, false) position, tokenIndex = position765, tokenIndex765 return false }, /* 46 ARMBaseIndexScale <- <('[' ARMRegister (',' WS? (('#'? Offset (('*' [0-9]+) / ('*' '(' [0-9]+ Operator [0-9]+ ')') / ('+' [0-9]+)*)?) / ('#'? ARMGOTLow12) / ('#'? Low12BitsSymbolRef) / ARMRegister) (',' WS? ARMConstantTweak)?)? ']' ARMPostincrement?)> */ func() bool { if memoized, ok := memoization[memoKey{46, position}]; ok { return memoizedResult(memoized) } position775, tokenIndex775 := position, tokenIndex { position776 := position if buffer[position] != rune('[') { goto l775 } position++ if !_rules[ruleARMRegister]() { goto l775 } { position777, tokenIndex777 := position, tokenIndex if buffer[position] != rune(',') { goto l777 } position++ { position779, tokenIndex779 := position, tokenIndex if !_rules[ruleWS]() { goto l779 } goto l780 l779: position, tokenIndex = position779, tokenIndex779 } l780: { position781, tokenIndex781 := position, tokenIndex { position783, tokenIndex783 := position, tokenIndex if buffer[position] != rune('#') { goto l783 } position++ goto l784 l783: position, tokenIndex = position783, tokenIndex783 } l784: if !_rules[ruleOffset]() { goto l782 } { position785, tokenIndex785 := position, tokenIndex { position787, tokenIndex787 := position, tokenIndex if buffer[position] != rune('*') { goto l788 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { goto l788 } position++ l789: { position790, tokenIndex790 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l790 } position++ goto l789 l790: position, tokenIndex = position790, tokenIndex790 } goto l787 l788: position, tokenIndex = position787, tokenIndex787 if buffer[position] != rune('*') { goto l791 } position++ if buffer[position] != rune('(') { goto l791 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { goto l791 } position++ l792: { position793, tokenIndex793 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l793 } position++ goto l792 l793: position, tokenIndex = position793, tokenIndex793 } if !_rules[ruleOperator]() { goto l791 } if c := buffer[position]; c < rune('0') || c > rune('9') { goto l791 } position++ l794: { position795, tokenIndex795 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l795 } position++ goto l794 l795: position, tokenIndex = position795, tokenIndex795 } if buffer[position] != rune(')') { goto l791 } position++ goto l787 l791: position, tokenIndex = position787, tokenIndex787 l796: { position797, tokenIndex797 := position, tokenIndex if buffer[position] != rune('+') { goto l797 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { goto l797 } position++ l798: { position799, tokenIndex799 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l799 } position++ goto l798 l799: position, tokenIndex = position799, tokenIndex799 } goto l796 l797: position, tokenIndex = position797, tokenIndex797 } } l787: goto l786 position, tokenIndex = position785, tokenIndex785 } l786: goto l781 l782: position, tokenIndex = position781, tokenIndex781 { position801, tokenIndex801 := position, tokenIndex if buffer[position] != rune('#') { goto l801 } position++ goto l802 l801: position, tokenIndex = position801, tokenIndex801 } l802: if !_rules[ruleARMGOTLow12]() { goto l800 } goto l781 l800: position, tokenIndex = position781, tokenIndex781 { position804, tokenIndex804 := position, tokenIndex if buffer[position] != rune('#') { goto l804 } position++ goto l805 l804: position, tokenIndex = position804, tokenIndex804 } l805: if !_rules[ruleLow12BitsSymbolRef]() { goto l803 } goto l781 l803: position, tokenIndex = position781, tokenIndex781 if !_rules[ruleARMRegister]() { goto l777 } } l781: { position806, tokenIndex806 := position, tokenIndex if buffer[position] != rune(',') { goto l806 } position++ { position808, tokenIndex808 := position, tokenIndex if !_rules[ruleWS]() { goto l808 } goto l809 l808: position, tokenIndex = position808, tokenIndex808 } l809: if !_rules[ruleARMConstantTweak]() { goto l806 } goto l807 l806: position, tokenIndex = position806, tokenIndex806 } l807: goto l778 l777: position, tokenIndex = position777, tokenIndex777 } l778: if buffer[position] != rune(']') { goto l775 } position++ { position810, tokenIndex810 := position, tokenIndex if !_rules[ruleARMPostincrement]() { goto l810 } goto l811 l810: position, tokenIndex = position810, tokenIndex810 } l811: add(ruleARMBaseIndexScale, position776) } memoize(46, position775, tokenIndex775, true) return true l775: memoize(46, position775, tokenIndex775, false) position, tokenIndex = position775, tokenIndex775 return false }, /* 47 ARMGOTLow12 <- <(':' ('g' / 'G') ('o' / 'O') ('t' / 'T') '_' ('l' / 'L') ('o' / 'O') '1' '2' ':' SymbolName)> */ func() bool { if memoized, ok := memoization[memoKey{47, position}]; ok { return memoizedResult(memoized) } position812, tokenIndex812 := position, tokenIndex { position813 := position if buffer[position] != rune(':') { goto l812 } position++ { position814, tokenIndex814 := position, tokenIndex if buffer[position] != rune('g') { goto l815 } position++ goto l814 l815: position, tokenIndex = position814, tokenIndex814 if buffer[position] != rune('G') { goto l812 } position++ } l814: { position816, tokenIndex816 := position, tokenIndex if buffer[position] != rune('o') { goto l817 } position++ goto l816 l817: position, tokenIndex = position816, tokenIndex816 if buffer[position] != rune('O') { goto l812 } position++ } l816: { position818, tokenIndex818 := position, tokenIndex if buffer[position] != rune('t') { goto l819 } position++ goto l818 l819: position, tokenIndex = position818, tokenIndex818 if buffer[position] != rune('T') { goto l812 } position++ } l818: if buffer[position] != rune('_') { goto l812 } position++ { position820, tokenIndex820 := position, tokenIndex if buffer[position] != rune('l') { goto l821 } position++ goto l820 l821: position, tokenIndex = position820, tokenIndex820 if buffer[position] != rune('L') { goto l812 } position++ } l820: { position822, tokenIndex822 := position, tokenIndex if buffer[position] != rune('o') { goto l823 } position++ goto l822 l823: position, tokenIndex = position822, tokenIndex822 if buffer[position] != rune('O') { goto l812 } position++ } l822: if buffer[position] != rune('1') { goto l812 } position++ if buffer[position] != rune('2') { goto l812 } position++ if buffer[position] != rune(':') { goto l812 } position++ if !_rules[ruleSymbolName]() { goto l812 } add(ruleARMGOTLow12, position813) } memoize(47, position812, tokenIndex812, true) return true l812: memoize(47, position812, tokenIndex812, false) position, tokenIndex = position812, tokenIndex812 return false }, /* 48 ARMPostincrement <- <'!'> */ func() bool { if memoized, ok := memoization[memoKey{48, position}]; ok { return memoizedResult(memoized) } position824, tokenIndex824 := position, tokenIndex { position825 := position if buffer[position] != rune('!') { goto l824 } position++ add(ruleARMPostincrement, position825) } memoize(48, position824, tokenIndex824, true) return true l824: memoize(48, position824, tokenIndex824, false) position, tokenIndex = position824, tokenIndex824 return false }, /* 49 BaseIndexScale <- <('(' RegisterOrConstant? WS? (',' WS? RegisterOrConstant WS? (',' [0-9]+)?)? ')')> */ func() bool { if memoized, ok := memoization[memoKey{49, position}]; ok { return memoizedResult(memoized) } position826, tokenIndex826 := position, tokenIndex { position827 := position if buffer[position] != rune('(') { goto l826 } position++ { position828, tokenIndex828 := position, tokenIndex if !_rules[ruleRegisterOrConstant]() { goto l828 } goto l829 l828: position, tokenIndex = position828, tokenIndex828 } l829: { position830, tokenIndex830 := position, tokenIndex if !_rules[ruleWS]() { goto l830 } goto l831 l830: position, tokenIndex = position830, tokenIndex830 } l831: { position832, tokenIndex832 := position, tokenIndex if buffer[position] != rune(',') { goto l832 } position++ { position834, tokenIndex834 := position, tokenIndex if !_rules[ruleWS]() { goto l834 } goto l835 l834: position, tokenIndex = position834, tokenIndex834 } l835: if !_rules[ruleRegisterOrConstant]() { goto l832 } { position836, tokenIndex836 := position, tokenIndex if !_rules[ruleWS]() { goto l836 } goto l837 l836: position, tokenIndex = position836, tokenIndex836 } l837: { position838, tokenIndex838 := position, tokenIndex if buffer[position] != rune(',') { goto l838 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { goto l838 } position++ l840: { position841, tokenIndex841 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l841 } position++ goto l840 l841: position, tokenIndex = position841, tokenIndex841 } goto l839 l838: position, tokenIndex = position838, tokenIndex838 } l839: goto l833 l832: position, tokenIndex = position832, tokenIndex832 } l833: if buffer[position] != rune(')') { goto l826 } position++ add(ruleBaseIndexScale, position827) } memoize(49, position826, tokenIndex826, true) return true l826: memoize(49, position826, tokenIndex826, false) position, tokenIndex = position826, tokenIndex826 return false }, /* 50 Operator <- <('+' / '-')> */ func() bool { if memoized, ok := memoization[memoKey{50, position}]; ok { return memoizedResult(memoized) } position842, tokenIndex842 := position, tokenIndex { position843 := position { position844, tokenIndex844 := position, tokenIndex if buffer[position] != rune('+') { goto l845 } position++ goto l844 l845: position, tokenIndex = position844, tokenIndex844 if buffer[position] != rune('-') { goto l842 } position++ } l844: add(ruleOperator, position843) } memoize(50, position842, tokenIndex842, true) return true l842: memoize(50, position842, tokenIndex842, false) position, tokenIndex = position842, tokenIndex842 return false }, /* 51 OffsetOperator <- <('+' / '-' / '*')> */ func() bool { if memoized, ok := memoization[memoKey{51, position}]; ok { return memoizedResult(memoized) } position846, tokenIndex846 := position, tokenIndex { position847 := position { position848, tokenIndex848 := position, tokenIndex if buffer[position] != rune('+') { goto l849 } position++ goto l848 l849: position, tokenIndex = position848, tokenIndex848 if buffer[position] != rune('-') { goto l850 } position++ goto l848 l850: position, tokenIndex = position848, tokenIndex848 if buffer[position] != rune('*') { goto l846 } position++ } l848: add(ruleOffsetOperator, position847) } memoize(51, position846, tokenIndex846, true) return true l846: memoize(51, position846, tokenIndex846, false) position, tokenIndex = position846, tokenIndex846 return false }, /* 52 Offset <- <('+'? '-'? (('0' ('b' / 'B') ('0' / '1')+) / ('0' ('x' / 'X') ([0-9] / [0-9] / ([a-f] / [A-F]))+) / ((([0-9]+ WS OffsetOperator [0-9]+) / ([0-9]+ (OffsetOperator '(' [0-9]+ OffsetOperator [0-9]+ ')')?) / ([0-9]+ (OffsetOperator [0-9]+ OffsetOperator [0-9]+)?) / ([0-9]+ (OffsetOperator [0-9]+)?) / ('(' [0-9]+ WS? OffsetOperator WS? [0-9]+ ')' OffsetOperator [0-9]+ OffsetOperator [0-9]+) / ('(' [0-9]+ WS? OffsetOperator WS? [0-9]+ ')') / ('(' [0-9]+ WS? OffsetOperator WS? [0-9]+ WS? OffsetOperator WS? [0-9]+ ')')) !([a-z] / [A-Z]))))> */ func() bool { if memoized, ok := memoization[memoKey{52, position}]; ok { return memoizedResult(memoized) } position851, tokenIndex851 := position, tokenIndex { position852 := position { position853, tokenIndex853 := position, tokenIndex if buffer[position] != rune('+') { goto l853 } position++ goto l854 l853: position, tokenIndex = position853, tokenIndex853 } l854: { position855, tokenIndex855 := position, tokenIndex if buffer[position] != rune('-') { goto l855 } position++ goto l856 l855: position, tokenIndex = position855, tokenIndex855 } l856: { position857, tokenIndex857 := position, tokenIndex if buffer[position] != rune('0') { goto l858 } position++ { position859, tokenIndex859 := position, tokenIndex if buffer[position] != rune('b') { goto l860 } position++ goto l859 l860: position, tokenIndex = position859, tokenIndex859 if buffer[position] != rune('B') { goto l858 } position++ } l859: { position863, tokenIndex863 := position, tokenIndex if buffer[position] != rune('0') { goto l864 } position++ goto l863 l864: position, tokenIndex = position863, tokenIndex863 if buffer[position] != rune('1') { goto l858 } position++ } l863: l861: { position862, tokenIndex862 := position, tokenIndex { position865, tokenIndex865 := position, tokenIndex if buffer[position] != rune('0') { goto l866 } position++ goto l865 l866: position, tokenIndex = position865, tokenIndex865 if buffer[position] != rune('1') { goto l862 } position++ } l865: goto l861 l862: position, tokenIndex = position862, tokenIndex862 } goto l857 l858: position, tokenIndex = position857, tokenIndex857 if buffer[position] != rune('0') { goto l867 } position++ { position868, tokenIndex868 := position, tokenIndex if buffer[position] != rune('x') { goto l869 } position++ goto l868 l869: position, tokenIndex = position868, tokenIndex868 if buffer[position] != rune('X') { goto l867 } position++ } l868: { position872, tokenIndex872 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l873 } position++ goto l872 l873: position, tokenIndex = position872, tokenIndex872 if c := buffer[position]; c < rune('0') || c > rune('9') { goto l874 } position++ goto l872 l874: position, tokenIndex = position872, tokenIndex872 { position875, tokenIndex875 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('f') { goto l876 } position++ goto l875 l876: position, tokenIndex = position875, tokenIndex875 if c := buffer[position]; c < rune('A') || c > rune('F') { goto l867 } position++ } l875: } l872: l870: { position871, tokenIndex871 := position, tokenIndex { position877, tokenIndex877 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l878 } position++ goto l877 l878: position, tokenIndex = position877, tokenIndex877 if c := buffer[position]; c < rune('0') || c > rune('9') { goto l879 } position++ goto l877 l879: position, tokenIndex = position877, tokenIndex877 { position880, tokenIndex880 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('f') { goto l881 } position++ goto l880 l881: position, tokenIndex = position880, tokenIndex880 if c := buffer[position]; c < rune('A') || c > rune('F') { goto l871 } position++ } l880: } l877: goto l870 l871: position, tokenIndex = position871, tokenIndex871 } goto l857 l867: position, tokenIndex = position857, tokenIndex857 { position882, tokenIndex882 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l883 } position++ l884: { position885, tokenIndex885 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l885 } position++ goto l884 l885: position, tokenIndex = position885, tokenIndex885 } if !_rules[ruleWS]() { goto l883 } if !_rules[ruleOffsetOperator]() { goto l883 } if c := buffer[position]; c < rune('0') || c > rune('9') { goto l883 } position++ l886: { position887, tokenIndex887 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l887 } position++ goto l886 l887: position, tokenIndex = position887, tokenIndex887 } goto l882 l883: position, tokenIndex = position882, tokenIndex882 if c := buffer[position]; c < rune('0') || c > rune('9') { goto l888 } position++ l889: { position890, tokenIndex890 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l890 } position++ goto l889 l890: position, tokenIndex = position890, tokenIndex890 } { position891, tokenIndex891 := position, tokenIndex if !_rules[ruleOffsetOperator]() { goto l891 } if buffer[position] != rune('(') { goto l891 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { goto l891 } position++ l893: { position894, tokenIndex894 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l894 } position++ goto l893 l894: position, tokenIndex = position894, tokenIndex894 } if !_rules[ruleOffsetOperator]() { goto l891 } if c := buffer[position]; c < rune('0') || c > rune('9') { goto l891 } position++ l895: { position896, tokenIndex896 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l896 } position++ goto l895 l896: position, tokenIndex = position896, tokenIndex896 } if buffer[position] != rune(')') { goto l891 } position++ goto l892 l891: position, tokenIndex = position891, tokenIndex891 } l892: goto l882 l888: position, tokenIndex = position882, tokenIndex882 if c := buffer[position]; c < rune('0') || c > rune('9') { goto l897 } position++ l898: { position899, tokenIndex899 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l899 } position++ goto l898 l899: position, tokenIndex = position899, tokenIndex899 } { position900, tokenIndex900 := position, tokenIndex if !_rules[ruleOffsetOperator]() { goto l900 } if c := buffer[position]; c < rune('0') || c > rune('9') { goto l900 } position++ l902: { position903, tokenIndex903 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l903 } position++ goto l902 l903: position, tokenIndex = position903, tokenIndex903 } if !_rules[ruleOffsetOperator]() { goto l900 } if c := buffer[position]; c < rune('0') || c > rune('9') { goto l900 } position++ l904: { position905, tokenIndex905 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l905 } position++ goto l904 l905: position, tokenIndex = position905, tokenIndex905 } goto l901 l900: position, tokenIndex = position900, tokenIndex900 } l901: goto l882 l897: position, tokenIndex = position882, tokenIndex882 if c := buffer[position]; c < rune('0') || c > rune('9') { goto l906 } position++ l907: { position908, tokenIndex908 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l908 } position++ goto l907 l908: position, tokenIndex = position908, tokenIndex908 } { position909, tokenIndex909 := position, tokenIndex if !_rules[ruleOffsetOperator]() { goto l909 } if c := buffer[position]; c < rune('0') || c > rune('9') { goto l909 } position++ l911: { position912, tokenIndex912 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l912 } position++ goto l911 l912: position, tokenIndex = position912, tokenIndex912 } goto l910 l909: position, tokenIndex = position909, tokenIndex909 } l910: goto l882 l906: position, tokenIndex = position882, tokenIndex882 if buffer[position] != rune('(') { goto l913 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { goto l913 } position++ l914: { position915, tokenIndex915 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l915 } position++ goto l914 l915: position, tokenIndex = position915, tokenIndex915 } { position916, tokenIndex916 := position, tokenIndex if !_rules[ruleWS]() { goto l916 } goto l917 l916: position, tokenIndex = position916, tokenIndex916 } l917: if !_rules[ruleOffsetOperator]() { goto l913 } { position918, tokenIndex918 := position, tokenIndex if !_rules[ruleWS]() { goto l918 } goto l919 l918: position, tokenIndex = position918, tokenIndex918 } l919: if c := buffer[position]; c < rune('0') || c > rune('9') { goto l913 } position++ l920: { position921, tokenIndex921 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l921 } position++ goto l920 l921: position, tokenIndex = position921, tokenIndex921 } if buffer[position] != rune(')') { goto l913 } position++ if !_rules[ruleOffsetOperator]() { goto l913 } if c := buffer[position]; c < rune('0') || c > rune('9') { goto l913 } position++ l922: { position923, tokenIndex923 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l923 } position++ goto l922 l923: position, tokenIndex = position923, tokenIndex923 } if !_rules[ruleOffsetOperator]() { goto l913 } if c := buffer[position]; c < rune('0') || c > rune('9') { goto l913 } position++ l924: { position925, tokenIndex925 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l925 } position++ goto l924 l925: position, tokenIndex = position925, tokenIndex925 } goto l882 l913: position, tokenIndex = position882, tokenIndex882 if buffer[position] != rune('(') { goto l926 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { goto l926 } position++ l927: { position928, tokenIndex928 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l928 } position++ goto l927 l928: position, tokenIndex = position928, tokenIndex928 } { position929, tokenIndex929 := position, tokenIndex if !_rules[ruleWS]() { goto l929 } goto l930 l929: position, tokenIndex = position929, tokenIndex929 } l930: if !_rules[ruleOffsetOperator]() { goto l926 } { position931, tokenIndex931 := position, tokenIndex if !_rules[ruleWS]() { goto l931 } goto l932 l931: position, tokenIndex = position931, tokenIndex931 } l932: if c := buffer[position]; c < rune('0') || c > rune('9') { goto l926 } position++ l933: { position934, tokenIndex934 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l934 } position++ goto l933 l934: position, tokenIndex = position934, tokenIndex934 } if buffer[position] != rune(')') { goto l926 } position++ goto l882 l926: position, tokenIndex = position882, tokenIndex882 if buffer[position] != rune('(') { goto l851 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { goto l851 } position++ l935: { position936, tokenIndex936 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l936 } position++ goto l935 l936: position, tokenIndex = position936, tokenIndex936 } { position937, tokenIndex937 := position, tokenIndex if !_rules[ruleWS]() { goto l937 } goto l938 l937: position, tokenIndex = position937, tokenIndex937 } l938: if !_rules[ruleOffsetOperator]() { goto l851 } { position939, tokenIndex939 := position, tokenIndex if !_rules[ruleWS]() { goto l939 } goto l940 l939: position, tokenIndex = position939, tokenIndex939 } l940: if c := buffer[position]; c < rune('0') || c > rune('9') { goto l851 } position++ l941: { position942, tokenIndex942 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l942 } position++ goto l941 l942: position, tokenIndex = position942, tokenIndex942 } { position943, tokenIndex943 := position, tokenIndex if !_rules[ruleWS]() { goto l943 } goto l944 l943: position, tokenIndex = position943, tokenIndex943 } l944: if !_rules[ruleOffsetOperator]() { goto l851 } { position945, tokenIndex945 := position, tokenIndex if !_rules[ruleWS]() { goto l945 } goto l946 l945: position, tokenIndex = position945, tokenIndex945 } l946: if c := buffer[position]; c < rune('0') || c > rune('9') { goto l851 } position++ l947: { position948, tokenIndex948 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { goto l948 } position++ goto l947 l948: position, tokenIndex = position948, tokenIndex948 } if buffer[position] != rune(')') { goto l851 } position++ } l882: { position949, tokenIndex949 := position, tokenIndex { position950, tokenIndex950 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { goto l951 } position++ goto l950 l951: position, tokenIndex = position950, tokenIndex950 if c := buffer[position]; c < rune('A') || c > rune('Z') { goto l949 } position++ } l950: goto l851 l949: position, tokenIndex = position949, tokenIndex949 } } l857: add(ruleOffset, position852) } memoize(52, position851, tokenIndex851, true) return true l851: memoize(52, position851, tokenIndex851, false) position, tokenIndex = position851, tokenIndex851 return false }, /* 53 Section <- <([a-z] / [A-Z] / '@')+> */ func() bool { if memoized, ok := memoization[memoKey{53, position}]; ok { return memoizedResult(memoized) } position952, tokenIndex952 := position, tokenIndex { position953 := position { position956, tokenIndex956 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { goto l957 } position++ goto l956 l957: position, tokenIndex = position956, tokenIndex956 if c := buffer[position]; c < rune('A') || c > rune('Z') { goto l958 } position++ goto l956 l958: position, tokenIndex = position956, tokenIndex956 if buffer[position] != rune('@') { goto l952 } position++ } l956: l954: { position955, tokenIndex955 := position, tokenIndex { position959, tokenIndex959 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { goto l960 } position++ goto l959 l960: position, tokenIndex = position959, tokenIndex959 if c := buffer[position]; c < rune('A') || c > rune('Z') { goto l961 } position++ goto l959 l961: position, tokenIndex = position959, tokenIndex959 if buffer[position] != rune('@') { goto l955 } position++ } l959: goto l954 l955: position, tokenIndex = position955, tokenIndex955 } add(ruleSection, position953) } memoize(53, position952, tokenIndex952, true) return true l952: memoize(53, position952, tokenIndex952, false) position, tokenIndex = position952, tokenIndex952 return false }, /* 54 SegmentRegister <- <('%' ([c-g] / 's') ('s' ':'))> */ func() bool { if memoized, ok := memoization[memoKey{54, position}]; ok { return memoizedResult(memoized) } position962, tokenIndex962 := position, tokenIndex { position963 := position if buffer[position] != rune('%') { goto l962 } position++ { position964, tokenIndex964 := position, tokenIndex if c := buffer[position]; c < rune('c') || c > rune('g') { goto l965 } position++ goto l964 l965: position, tokenIndex = position964, tokenIndex964 if buffer[position] != rune('s') { goto l962 } position++ } l964: if buffer[position] != rune('s') { goto l962 } position++ if buffer[position] != rune(':') { goto l962 } position++ add(ruleSegmentRegister, position963) } memoize(54, position962, tokenIndex962, true) return true l962: memoize(54, position962, tokenIndex962, false) position, tokenIndex = position962, tokenIndex962 return false }, } p.rules = _rules return nil }