diff --git a/util/fipstools/delocate/delocate.peg.go b/util/fipstools/delocate/delocate.peg.go index 8a80b356612..1e14f0aaabe 100644 --- a/util/fipstools/delocate/delocate.peg.go +++ b/util/fipstools/delocate/delocate.peg.go @@ -1,14 +1,14 @@ package main -// Code generated by /home/ec2-user/go/bin/peg ./delocate.peg DO NOT EDIT. +// Code generated by ../peg/peg util/fipstools/delocate/delocate.peg DO NOT EDIT. import ( + "bytes" "fmt" "io" "os" "sort" "strconv" - "strings" ) const endSymbol rune = 1114112 @@ -244,12 +244,13 @@ func (t *tokens32) Tokens() []token32 { } type Asm struct { - Buffer string - buffer []rune - rules [56]func() bool - parse func(rule ...int) error - reset func() - Pretty bool + Buffer string + buffer []rune + rules [56]func() bool + parse func(rule ...int) error + reset func() + Pretty bool + disableMemoize bool tokens32 } @@ -334,9 +335,9 @@ func (p *Asm) WriteSyntaxTree(w io.Writer) { } func (p *Asm) SprintSyntaxTree() string { - var bldr strings.Builder - p.WriteSyntaxTree(&bldr) - return bldr.String() + var b bytes.Buffer + p.WriteSyntaxTree(&b) + return b.String() } func Pretty(pretty bool) func(*Asm) error { @@ -352,11 +353,30 @@ func Size(size int) func(*Asm) error { 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) @@ -367,7 +387,7 @@ func (p *Asm) Init(options ...func(*Asm) error) error { 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) @@ -400,6 +420,34 @@ func (p *Asm) Init(options ...func(*Asm) error) error { } } + 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++ @@ -428,6 +476,9 @@ func (p *Asm) Init(options ...func(*Asm) error) error { nil, /* 0 AsmFile <- <(Statement* !.)> */ func() bool { + if memoized, ok := memoization[memoKey{0, position}]; ok { + return memoizedResult(memoized) + } position0, tokenIndex0 := position, tokenIndex { position1 := position @@ -452,13 +503,18 @@ func (p *Asm) Init(options ...func(*Asm) error) error { } 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 @@ -559,13 +615,18 @@ func (p *Asm) Init(options ...func(*Asm) error) error { 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 @@ -757,13 +818,18 @@ func (p *Asm) Init(options ...func(*Asm) error) error { } 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 @@ -789,13 +855,18 @@ func (p *Asm) Init(options ...func(*Asm) error) error { 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 @@ -888,13 +959,18 @@ func (p *Asm) Init(options ...func(*Asm) error) error { } 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 @@ -913,13 +989,18 @@ func (p *Asm) Init(options ...func(*Asm) error) error { 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 @@ -1047,13 +1128,18 @@ func (p *Asm) Init(options ...func(*Asm) error) error { } 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 @@ -1180,13 +1266,18 @@ func (p *Asm) Init(options ...func(*Asm) error) error { } 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 @@ -1229,13 +1320,19 @@ func (p *Asm) Init(options ...func(*Asm) error) error { } 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 { @@ -1339,10 +1436,14 @@ func (p *Asm) Init(options ...func(*Asm) error) error { 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 @@ -1359,13 +1460,19 @@ func (p *Asm) Init(options ...func(*Asm) error) error { 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: @@ -1400,10 +1507,14 @@ func (p *Asm) Init(options ...func(*Asm) error) error { } 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 @@ -1418,13 +1529,18 @@ func (p *Asm) Init(options ...func(*Asm) error) error { } 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 @@ -2461,13 +2577,18 @@ func (p *Asm) Init(options ...func(*Asm) error) error { 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 @@ -2510,13 +2631,18 @@ func (p *Asm) Init(options ...func(*Asm) error) error { } 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 @@ -2570,13 +2696,18 @@ func (p *Asm) Init(options ...func(*Asm) error) error { } 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 @@ -2805,13 +2936,18 @@ func (p *Asm) Init(options ...func(*Asm) error) error { 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 @@ -2821,13 +2957,18 @@ func (p *Asm) Init(options ...func(*Asm) error) error { 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 @@ -2837,13 +2978,18 @@ func (p *Asm) Init(options ...func(*Asm) error) error { 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 @@ -2927,13 +3073,18 @@ func (p *Asm) Init(options ...func(*Asm) error) error { 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 @@ -2943,13 +3094,18 @@ func (p *Asm) Init(options ...func(*Asm) error) error { 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 @@ -2971,13 +3127,18 @@ func (p *Asm) Init(options ...func(*Asm) error) error { 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 @@ -2990,13 +3151,18 @@ func (p *Asm) Init(options ...func(*Asm) error) error { } 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 @@ -3039,13 +3205,18 @@ func (p *Asm) Init(options ...func(*Asm) error) error { } 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 @@ -3090,13 +3261,18 @@ func (p *Asm) Init(options ...func(*Asm) error) error { } 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 @@ -3125,13 +3301,18 @@ func (p *Asm) Init(options ...func(*Asm) error) error { 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 @@ -3227,13 +3408,18 @@ func (p *Asm) Init(options ...func(*Asm) error) error { } 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 @@ -3398,13 +3584,18 @@ func (p *Asm) Init(options ...func(*Asm) error) error { } 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 @@ -3436,13 +3627,18 @@ func (p *Asm) Init(options ...func(*Asm) error) error { } 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 @@ -3489,13 +3685,18 @@ func (p *Asm) Init(options ...func(*Asm) error) error { 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 @@ -3558,13 +3759,18 @@ func (p *Asm) Init(options ...func(*Asm) error) error { 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 @@ -3661,13 +3867,18 @@ func (p *Asm) Init(options ...func(*Asm) error) error { 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*)> */ + /* 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 @@ -3726,3676 +3937,3784 @@ func (p *Asm) Init(options ...func(*Asm) error) error { l473: position, tokenIndex = position466, tokenIndex466 if !_rules[ruleMemoryRef]() { - goto l462 + goto l474 } - } - l466: - l474: - { - position475, tokenIndex475 := position, tokenIndex + goto l466 + l474: + position, tokenIndex = position466, tokenIndex466 if !_rules[ruleAVX512Token]() { - goto l475 + goto l462 } - goto l474 - l475: - position, tokenIndex = position475, tokenIndex475 } + l466: 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 { - position476, tokenIndex476 := position, tokenIndex + if memoized, ok := memoization[memoKey{33, position}]; ok { + return memoizedResult(memoized) + } + position475, tokenIndex475 := position, tokenIndex { - position477 := position + position476 := position if buffer[position] != rune('$') { - goto l476 + goto l475 } position++ if buffer[position] != rune('_') { - goto l476 + goto l475 } position++ if buffer[position] != rune('G') { - goto l476 + goto l475 } position++ if buffer[position] != rune('L') { - goto l476 + goto l475 } position++ if buffer[position] != rune('O') { - goto l476 + goto l475 } position++ if buffer[position] != rune('B') { - goto l476 + goto l475 } position++ if buffer[position] != rune('A') { - goto l476 + goto l475 } position++ if buffer[position] != rune('L') { - goto l476 + goto l475 } position++ if buffer[position] != rune('_') { - goto l476 + goto l475 } position++ if buffer[position] != rune('O') { - goto l476 + goto l475 } position++ if buffer[position] != rune('F') { - goto l476 + goto l475 } position++ if buffer[position] != rune('F') { - goto l476 + goto l475 } position++ if buffer[position] != rune('S') { - goto l476 + goto l475 } position++ if buffer[position] != rune('E') { - goto l476 + goto l475 } position++ if buffer[position] != rune('T') { - goto l476 + goto l475 } position++ if buffer[position] != rune('_') { - goto l476 + goto l475 } position++ if buffer[position] != rune('T') { - goto l476 + goto l475 } position++ if buffer[position] != rune('A') { - goto l476 + goto l475 } position++ if buffer[position] != rune('B') { - goto l476 + goto l475 } position++ if buffer[position] != rune('L') { - goto l476 + goto l475 } position++ if buffer[position] != rune('E') { - goto l476 + goto l475 } position++ if buffer[position] != rune('_') { - goto l476 + goto l475 } position++ if buffer[position] != rune('-') { - goto l476 + goto l475 } position++ if !_rules[ruleLocalSymbol]() { - goto l476 + goto l475 } - add(ruleGOTLocation, position477) + add(ruleGOTLocation, position476) } + memoize(33, position475, tokenIndex475, true) return true - l476: - position, tokenIndex = position476, tokenIndex476 + l475: + memoize(33, position475, tokenIndex475, false) + position, tokenIndex = position475, tokenIndex475 return false }, /* 34 GOTSymbolOffset <- <(('$' SymbolName ('@' 'G' 'O' 'T') ('O' 'F' 'F')?) / (':' ('g' / 'G') ('o' / 'O') ('t' / 'T') ':' SymbolName))> */ func() bool { - position478, tokenIndex478 := position, tokenIndex + if memoized, ok := memoization[memoKey{34, position}]; ok { + return memoizedResult(memoized) + } + position477, tokenIndex477 := position, tokenIndex { - position479 := position + position478 := position { - position480, tokenIndex480 := position, tokenIndex + position479, tokenIndex479 := position, tokenIndex if buffer[position] != rune('$') { - goto l481 + goto l480 } position++ if !_rules[ruleSymbolName]() { - goto l481 + goto l480 } if buffer[position] != rune('@') { - goto l481 + goto l480 } position++ if buffer[position] != rune('G') { - goto l481 + goto l480 } position++ if buffer[position] != rune('O') { - goto l481 + goto l480 } position++ if buffer[position] != rune('T') { - goto l481 + goto l480 } position++ { - position482, tokenIndex482 := position, tokenIndex + position481, tokenIndex481 := position, tokenIndex if buffer[position] != rune('O') { - goto l482 + goto l481 } position++ if buffer[position] != rune('F') { - goto l482 + goto l481 } position++ if buffer[position] != rune('F') { - goto l482 + goto l481 } position++ - goto l483 - l482: - position, tokenIndex = position482, tokenIndex482 + goto l482 + l481: + position, tokenIndex = position481, tokenIndex481 } - l483: - goto l480 - l481: - position, tokenIndex = position480, tokenIndex480 + l482: + goto l479 + l480: + position, tokenIndex = position479, tokenIndex479 if buffer[position] != rune(':') { - goto l478 + goto l477 } position++ { - position484, tokenIndex484 := position, tokenIndex + position483, tokenIndex483 := position, tokenIndex if buffer[position] != rune('g') { - goto l485 + goto l484 } position++ - goto l484 - l485: - position, tokenIndex = position484, tokenIndex484 + goto l483 + l484: + position, tokenIndex = position483, tokenIndex483 if buffer[position] != rune('G') { - goto l478 + goto l477 } position++ } - l484: + l483: { - position486, tokenIndex486 := position, tokenIndex + position485, tokenIndex485 := position, tokenIndex if buffer[position] != rune('o') { - goto l487 + goto l486 } position++ - goto l486 - l487: - position, tokenIndex = position486, tokenIndex486 + goto l485 + l486: + position, tokenIndex = position485, tokenIndex485 if buffer[position] != rune('O') { - goto l478 + goto l477 } position++ } - l486: + l485: { - position488, tokenIndex488 := position, tokenIndex + position487, tokenIndex487 := position, tokenIndex if buffer[position] != rune('t') { - goto l489 + goto l488 } position++ - goto l488 - l489: - position, tokenIndex = position488, tokenIndex488 + goto l487 + l488: + position, tokenIndex = position487, tokenIndex487 if buffer[position] != rune('T') { - goto l478 + goto l477 } position++ } - l488: + l487: if buffer[position] != rune(':') { - goto l478 + goto l477 } position++ if !_rules[ruleSymbolName]() { - goto l478 + goto l477 } } - l480: - add(ruleGOTSymbolOffset, position479) + l479: + add(ruleGOTSymbolOffset, position478) } + memoize(34, position477, tokenIndex477, true) return true - l478: - position, tokenIndex = position478, tokenIndex478 + l477: + memoize(34, position477, tokenIndex477, false) + position, tokenIndex = position477, tokenIndex477 return false }, /* 35 AVX512Token <- <(WS? '{' '%'? ([0-9] / [a-z])* '}')> */ func() bool { - position490, tokenIndex490 := position, tokenIndex + if memoized, ok := memoization[memoKey{35, position}]; ok { + return memoizedResult(memoized) + } + position489, tokenIndex489 := position, tokenIndex { - position491 := position + position490 := position { - position492, tokenIndex492 := position, tokenIndex + position491, tokenIndex491 := position, tokenIndex if !_rules[ruleWS]() { - goto l492 + goto l491 } - goto l493 - l492: - position, tokenIndex = position492, tokenIndex492 + goto l492 + l491: + position, tokenIndex = position491, tokenIndex491 } - l493: + l492: if buffer[position] != rune('{') { - goto l490 + goto l489 } position++ { - position494, tokenIndex494 := position, tokenIndex + position493, tokenIndex493 := position, tokenIndex if buffer[position] != rune('%') { - goto l494 + goto l493 } position++ - goto l495 - l494: - position, tokenIndex = position494, tokenIndex494 + goto l494 + l493: + position, tokenIndex = position493, tokenIndex493 } + l494: l495: - l496: { - position497, tokenIndex497 := position, tokenIndex + position496, tokenIndex496 := position, tokenIndex { - position498, tokenIndex498 := position, tokenIndex + position497, tokenIndex497 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l499 + goto l498 } position++ - goto l498 - l499: - position, tokenIndex = position498, tokenIndex498 + goto l497 + l498: + position, tokenIndex = position497, tokenIndex497 if c := buffer[position]; c < rune('a') || c > rune('z') { - goto l497 + goto l496 } position++ } - l498: - goto l496 l497: - position, tokenIndex = position497, tokenIndex497 + goto l495 + l496: + position, tokenIndex = position496, tokenIndex496 } if buffer[position] != rune('}') { - goto l490 + goto l489 } position++ - add(ruleAVX512Token, position491) + add(ruleAVX512Token, position490) } + memoize(35, position489, tokenIndex489, true) return true - l490: - position, tokenIndex = position490, tokenIndex490 + l489: + memoize(35, position489, tokenIndex489, false) + position, tokenIndex = position489, tokenIndex489 return false }, /* 36 TOCRefHigh <- <('.' 'T' 'O' 'C' '.' '-' (('0' 'b') / ('.' 'L' ([a-z] / [A-Z] / '_' / [0-9])+)) ('@' ('h' / 'H') ('a' / 'A')))> */ func() bool { - position500, tokenIndex500 := position, tokenIndex + if memoized, ok := memoization[memoKey{36, position}]; ok { + return memoizedResult(memoized) + } + position499, tokenIndex499 := position, tokenIndex { - position501 := position + position500 := position if buffer[position] != rune('.') { - goto l500 + goto l499 } position++ if buffer[position] != rune('T') { - goto l500 + goto l499 } position++ if buffer[position] != rune('O') { - goto l500 + goto l499 } position++ if buffer[position] != rune('C') { - goto l500 + goto l499 } position++ if buffer[position] != rune('.') { - goto l500 + goto l499 } position++ if buffer[position] != rune('-') { - goto l500 + goto l499 } position++ { - position502, tokenIndex502 := position, tokenIndex + position501, tokenIndex501 := position, tokenIndex if buffer[position] != rune('0') { - goto l503 + goto l502 } position++ if buffer[position] != rune('b') { - goto l503 + goto l502 } position++ - goto l502 - l503: - position, tokenIndex = position502, tokenIndex502 + goto l501 + l502: + position, tokenIndex = position501, tokenIndex501 if buffer[position] != rune('.') { - goto l500 + goto l499 } position++ if buffer[position] != rune('L') { - goto l500 + goto l499 } position++ { - position506, tokenIndex506 := position, tokenIndex + position505, tokenIndex505 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { - goto l507 + goto l506 } position++ - goto l506 - l507: - position, tokenIndex = position506, tokenIndex506 + goto l505 + l506: + position, tokenIndex = position505, tokenIndex505 if c := buffer[position]; c < rune('A') || c > rune('Z') { - goto l508 + goto l507 } position++ - goto l506 - l508: - position, tokenIndex = position506, tokenIndex506 + goto l505 + l507: + position, tokenIndex = position505, tokenIndex505 if buffer[position] != rune('_') { - goto l509 + goto l508 } position++ - goto l506 - l509: - position, tokenIndex = position506, tokenIndex506 + goto l505 + l508: + position, tokenIndex = position505, tokenIndex505 if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l500 + goto l499 } position++ } - l506: - l504: + l505: + l503: { - position505, tokenIndex505 := position, tokenIndex + position504, tokenIndex504 := position, tokenIndex { - position510, tokenIndex510 := position, tokenIndex + position509, tokenIndex509 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { - goto l511 + goto l510 } position++ - goto l510 - l511: - position, tokenIndex = position510, tokenIndex510 + goto l509 + l510: + position, tokenIndex = position509, tokenIndex509 if c := buffer[position]; c < rune('A') || c > rune('Z') { - goto l512 + goto l511 } position++ - goto l510 - l512: - position, tokenIndex = position510, tokenIndex510 + goto l509 + l511: + position, tokenIndex = position509, tokenIndex509 if buffer[position] != rune('_') { - goto l513 + goto l512 } position++ - goto l510 - l513: - position, tokenIndex = position510, tokenIndex510 + goto l509 + l512: + position, tokenIndex = position509, tokenIndex509 if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l505 + goto l504 } position++ } - l510: - goto l504 - l505: - position, tokenIndex = position505, tokenIndex505 + l509: + goto l503 + l504: + position, tokenIndex = position504, tokenIndex504 } } - l502: + l501: if buffer[position] != rune('@') { - goto l500 + goto l499 } position++ { - position514, tokenIndex514 := position, tokenIndex + position513, tokenIndex513 := position, tokenIndex if buffer[position] != rune('h') { - goto l515 + goto l514 } position++ - goto l514 - l515: - position, tokenIndex = position514, tokenIndex514 + goto l513 + l514: + position, tokenIndex = position513, tokenIndex513 if buffer[position] != rune('H') { - goto l500 + goto l499 } position++ } - l514: + l513: { - position516, tokenIndex516 := position, tokenIndex + position515, tokenIndex515 := position, tokenIndex if buffer[position] != rune('a') { - goto l517 + goto l516 } position++ - goto l516 - l517: - position, tokenIndex = position516, tokenIndex516 + goto l515 + l516: + position, tokenIndex = position515, tokenIndex515 if buffer[position] != rune('A') { - goto l500 + goto l499 } position++ } - l516: - add(ruleTOCRefHigh, position501) + l515: + add(ruleTOCRefHigh, position500) } + memoize(36, position499, tokenIndex499, true) return true - l500: - position, tokenIndex = position500, tokenIndex500 + l499: + memoize(36, position499, tokenIndex499, false) + position, tokenIndex = position499, tokenIndex499 return false }, /* 37 TOCRefLow <- <('.' 'T' 'O' 'C' '.' '-' (('0' 'b') / ('.' 'L' ([a-z] / [A-Z] / '_' / [0-9])+)) ('@' ('l' / 'L')))> */ func() bool { - position518, tokenIndex518 := position, tokenIndex + if memoized, ok := memoization[memoKey{37, position}]; ok { + return memoizedResult(memoized) + } + position517, tokenIndex517 := position, tokenIndex { - position519 := position + position518 := position if buffer[position] != rune('.') { - goto l518 + goto l517 } position++ if buffer[position] != rune('T') { - goto l518 + goto l517 } position++ if buffer[position] != rune('O') { - goto l518 + goto l517 } position++ if buffer[position] != rune('C') { - goto l518 + goto l517 } position++ if buffer[position] != rune('.') { - goto l518 + goto l517 } position++ if buffer[position] != rune('-') { - goto l518 + goto l517 } position++ { - position520, tokenIndex520 := position, tokenIndex + position519, tokenIndex519 := position, tokenIndex if buffer[position] != rune('0') { - goto l521 + goto l520 } position++ if buffer[position] != rune('b') { - goto l521 + goto l520 } position++ - goto l520 - l521: - position, tokenIndex = position520, tokenIndex520 + goto l519 + l520: + position, tokenIndex = position519, tokenIndex519 if buffer[position] != rune('.') { - goto l518 + goto l517 } position++ if buffer[position] != rune('L') { - goto l518 + goto l517 } position++ { - position524, tokenIndex524 := position, tokenIndex + position523, tokenIndex523 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { - goto l525 + goto l524 } position++ - goto l524 - l525: - position, tokenIndex = position524, tokenIndex524 + goto l523 + l524: + position, tokenIndex = position523, tokenIndex523 if c := buffer[position]; c < rune('A') || c > rune('Z') { - goto l526 + goto l525 } position++ - goto l524 - l526: - position, tokenIndex = position524, tokenIndex524 + goto l523 + l525: + position, tokenIndex = position523, tokenIndex523 if buffer[position] != rune('_') { - goto l527 + goto l526 } position++ - goto l524 - l527: - position, tokenIndex = position524, tokenIndex524 + goto l523 + l526: + position, tokenIndex = position523, tokenIndex523 if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l518 + goto l517 } position++ } - l524: - l522: + l523: + l521: { - position523, tokenIndex523 := position, tokenIndex + position522, tokenIndex522 := position, tokenIndex { - position528, tokenIndex528 := position, tokenIndex + position527, tokenIndex527 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { - goto l529 + goto l528 } position++ - goto l528 - l529: - position, tokenIndex = position528, tokenIndex528 + goto l527 + l528: + position, tokenIndex = position527, tokenIndex527 if c := buffer[position]; c < rune('A') || c > rune('Z') { - goto l530 + goto l529 } position++ - goto l528 - l530: - position, tokenIndex = position528, tokenIndex528 + goto l527 + l529: + position, tokenIndex = position527, tokenIndex527 if buffer[position] != rune('_') { - goto l531 + goto l530 } position++ - goto l528 - l531: - position, tokenIndex = position528, tokenIndex528 + goto l527 + l530: + position, tokenIndex = position527, tokenIndex527 if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l523 + goto l522 } position++ } - l528: - goto l522 - l523: - position, tokenIndex = position523, tokenIndex523 + l527: + goto l521 + l522: + position, tokenIndex = position522, tokenIndex522 } } - l520: + l519: if buffer[position] != rune('@') { - goto l518 + goto l517 } position++ { - position532, tokenIndex532 := position, tokenIndex + position531, tokenIndex531 := position, tokenIndex if buffer[position] != rune('l') { - goto l533 + goto l532 } position++ - goto l532 - l533: - position, tokenIndex = position532, tokenIndex532 + goto l531 + l532: + position, tokenIndex = position531, tokenIndex531 if buffer[position] != rune('L') { - goto l518 + goto l517 } position++ } - l532: - add(ruleTOCRefLow, position519) + l531: + add(ruleTOCRefLow, position518) } + memoize(37, position517, tokenIndex517, true) return true - l518: - position, tokenIndex = position518, tokenIndex518 + l517: + memoize(37, position517, tokenIndex517, false) + position, tokenIndex = position517, tokenIndex517 return false }, /* 38 IndirectionIndicator <- <'*'> */ func() bool { - position534, tokenIndex534 := position, tokenIndex + if memoized, ok := memoization[memoKey{38, position}]; ok { + return memoizedResult(memoized) + } + position533, tokenIndex533 := position, tokenIndex { - position535 := position + position534 := position if buffer[position] != rune('*') { - goto l534 + goto l533 } position++ - add(ruleIndirectionIndicator, position535) + add(ruleIndirectionIndicator, position534) } + memoize(38, position533, tokenIndex533, true) return true - l534: - position, tokenIndex = position534, tokenIndex534 + l533: + memoize(38, position533, tokenIndex533, false) + position, tokenIndex = position533, tokenIndex533 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 { - position536, tokenIndex536 := position, tokenIndex + if memoized, ok := memoization[memoKey{39, position}]; ok { + return memoizedResult(memoized) + } + position535, tokenIndex535 := position, tokenIndex { - position537 := position + position536 := position { - position538, tokenIndex538 := position, tokenIndex + position537, tokenIndex537 := position, tokenIndex if buffer[position] != rune('%') { - goto l539 + goto l538 } position++ { - position540, tokenIndex540 := position, tokenIndex + position539, tokenIndex539 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { - goto l541 + goto l540 } position++ - goto l540 - l541: - position, tokenIndex = position540, tokenIndex540 + goto l539 + l540: + position, tokenIndex = position539, tokenIndex539 if c := buffer[position]; c < rune('A') || c > rune('Z') { - goto l539 + goto l538 } position++ } - l540: - l542: + l539: + l541: { - position543, tokenIndex543 := position, tokenIndex + position542, tokenIndex542 := position, tokenIndex { - position544, tokenIndex544 := position, tokenIndex + position543, tokenIndex543 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { - goto l545 + goto l544 } position++ - goto l544 - l545: - position, tokenIndex = position544, tokenIndex544 + goto l543 + l544: + position, tokenIndex = position543, tokenIndex543 if c := buffer[position]; c < rune('A') || c > rune('Z') { - goto l546 + goto l545 } position++ - goto l544 - l546: - position, tokenIndex = position544, tokenIndex544 + goto l543 + l545: + position, tokenIndex = position543, tokenIndex543 { - position547, tokenIndex547 := position, tokenIndex + position546, tokenIndex546 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l548 + goto l547 } position++ - goto l547 - l548: - position, tokenIndex = position547, tokenIndex547 + goto l546 + l547: + position, tokenIndex = position546, tokenIndex546 if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l543 + goto l542 } position++ } - l547: + l546: } - l544: - goto l542 l543: - position, tokenIndex = position543, tokenIndex543 + goto l541 + l542: + position, tokenIndex = position542, tokenIndex542 } - goto l538 - l539: - position, tokenIndex = position538, tokenIndex538 + goto l537 + l538: + position, tokenIndex = position537, tokenIndex537 if buffer[position] != rune('$') { - goto l549 + goto l548 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l549 + goto l548 } position++ - l550: + l549: { - position551, tokenIndex551 := position, tokenIndex + position550, tokenIndex550 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l551 + goto l550 } position++ - goto l550 - l551: - position, tokenIndex = position551, tokenIndex551 + goto l549 + l550: + position, tokenIndex = position550, tokenIndex550 } { - position552, tokenIndex552 := position, tokenIndex + position551, tokenIndex551 := position, tokenIndex if !_rules[ruleWS]() { - goto l552 + goto l551 } - goto l553 - l552: - position, tokenIndex = position552, tokenIndex552 + goto l552 + l551: + position, tokenIndex = position551, tokenIndex551 } - l553: + l552: if buffer[position] != rune('*') { - goto l549 + goto l548 } position++ { - position554, tokenIndex554 := position, tokenIndex + position553, tokenIndex553 := position, tokenIndex if !_rules[ruleWS]() { - goto l554 + goto l553 } - goto l555 - l554: - position, tokenIndex = position554, tokenIndex554 + goto l554 + l553: + position, tokenIndex = position553, tokenIndex553 } - l555: + l554: if buffer[position] != rune('(') { - goto l549 + goto l548 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l549 + goto l548 } position++ - l556: + l555: { - position557, tokenIndex557 := position, tokenIndex + position556, tokenIndex556 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l557 + goto l556 } position++ - goto l556 - l557: - position, tokenIndex = position557, tokenIndex557 + goto l555 + l556: + position, tokenIndex = position556, tokenIndex556 } { - position558, tokenIndex558 := position, tokenIndex + position557, tokenIndex557 := position, tokenIndex if !_rules[ruleWS]() { - goto l558 + goto l557 } - goto l559 - l558: - position, tokenIndex = position558, tokenIndex558 + goto l558 + l557: + position, tokenIndex = position557, tokenIndex557 } - l559: + l558: if buffer[position] != rune('-') { - goto l549 + goto l548 } position++ { - position560, tokenIndex560 := position, tokenIndex + position559, tokenIndex559 := position, tokenIndex if !_rules[ruleWS]() { - goto l560 + goto l559 } - goto l561 - l560: - position, tokenIndex = position560, tokenIndex560 + goto l560 + l559: + position, tokenIndex = position559, tokenIndex559 } - l561: + l560: if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l549 + goto l548 } position++ - l562: + l561: { - position563, tokenIndex563 := position, tokenIndex + position562, tokenIndex562 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l563 + goto l562 } position++ - goto l562 - l563: - position, tokenIndex = position563, tokenIndex563 + goto l561 + l562: + position, tokenIndex = position562, tokenIndex562 } if buffer[position] != rune(')') { - goto l549 + goto l548 } position++ - goto l538 - l549: - position, tokenIndex = position538, tokenIndex538 + goto l537 + l548: + position, tokenIndex = position537, tokenIndex537 { - position565, tokenIndex565 := position, tokenIndex + position564, tokenIndex564 := position, tokenIndex if buffer[position] != rune('$') { - goto l565 + goto l564 } position++ - goto l566 - l565: - position, tokenIndex = position565, tokenIndex565 + goto l565 + l564: + position, tokenIndex = position564, tokenIndex564 } - l566: + l565: { - position567, tokenIndex567 := position, tokenIndex + position566, tokenIndex566 := position, tokenIndex if !_rules[ruleOffset]() { - goto l568 + goto l567 } if !_rules[ruleOffset]() { - goto l568 + goto l567 } - goto l567 - l568: - position, tokenIndex = position567, tokenIndex567 + goto l566 + l567: + position, tokenIndex = position566, tokenIndex566 if !_rules[ruleOffset]() { - goto l564 + goto l563 } } - l567: - goto l538 - l564: - position, tokenIndex = position538, tokenIndex538 + l566: + goto l537 + l563: + position, tokenIndex = position537, tokenIndex537 if buffer[position] != rune('#') { - goto l569 + goto l568 } position++ if !_rules[ruleOffset]() { - goto l569 + goto l568 } { - position570, tokenIndex570 := position, tokenIndex + position569, tokenIndex569 := position, tokenIndex if buffer[position] != rune('*') { - goto l570 + goto l569 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l570 + goto l569 } position++ - l572: + l571: { - position573, tokenIndex573 := position, tokenIndex + position572, tokenIndex572 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l573 + goto l572 } position++ - goto l572 - l573: - position, tokenIndex = position573, tokenIndex573 + goto l571 + l572: + position, tokenIndex = position572, tokenIndex572 } { - position574, tokenIndex574 := position, tokenIndex + position573, tokenIndex573 := position, tokenIndex if buffer[position] != rune('-') { - goto l574 + goto l573 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l574 + goto l573 } position++ - l576: + l575: { - position577, tokenIndex577 := position, tokenIndex + position576, tokenIndex576 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l577 + goto l576 } position++ - goto l576 - l577: - position, tokenIndex = position577, tokenIndex577 + goto l575 + l576: + position, tokenIndex = position576, tokenIndex576 } - goto l575 - l574: - position, tokenIndex = position574, tokenIndex574 - } - l575: - goto l571 - l570: - position, tokenIndex = position570, tokenIndex570 - } - l571: - goto l538 - l569: - position, tokenIndex = position538, tokenIndex538 + goto l574 + l573: + position, tokenIndex = position573, tokenIndex573 + } + l574: + goto l570 + l569: + position, tokenIndex = position569, tokenIndex569 + } + l570: + goto l537 + l568: + position, tokenIndex = position537, tokenIndex537 if buffer[position] != rune('#') { - goto l578 + goto l577 } position++ { - position579, tokenIndex579 := position, tokenIndex + position578, tokenIndex578 := position, tokenIndex if buffer[position] != rune('~') { - goto l579 + goto l578 } position++ - goto l580 - l579: - position, tokenIndex = position579, tokenIndex579 + goto l579 + l578: + position, tokenIndex = position578, tokenIndex578 } - l580: + l579: if buffer[position] != rune('(') { - goto l578 + goto l577 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l578 + goto l577 } position++ { - position581, tokenIndex581 := position, tokenIndex + position580, tokenIndex580 := position, tokenIndex if !_rules[ruleWS]() { - goto l581 + goto l580 } - goto l582 - l581: - position, tokenIndex = position581, tokenIndex581 + goto l581 + l580: + position, tokenIndex = position580, tokenIndex580 } - l582: + l581: if buffer[position] != rune('<') { - goto l578 + goto l577 } position++ if buffer[position] != rune('<') { - goto l578 + goto l577 } position++ { - position583, tokenIndex583 := position, tokenIndex + position582, tokenIndex582 := position, tokenIndex if !_rules[ruleWS]() { - goto l583 + goto l582 } - goto l584 - l583: - position, tokenIndex = position583, tokenIndex583 + goto l583 + l582: + position, tokenIndex = position582, tokenIndex582 } - l584: + l583: if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l578 + goto l577 } position++ { - position585, tokenIndex585 := position, tokenIndex + position584, tokenIndex584 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l585 + goto l584 } position++ - goto l586 - l585: - position, tokenIndex = position585, tokenIndex585 + goto l585 + l584: + position, tokenIndex = position584, tokenIndex584 } - l586: + l585: if buffer[position] != rune(')') { - goto l578 + goto l577 } position++ - goto l538 - l578: - position, tokenIndex = position538, tokenIndex538 + goto l537 + l577: + position, tokenIndex = position537, tokenIndex537 { - position588, tokenIndex588 := position, tokenIndex + position587, tokenIndex587 := position, tokenIndex if buffer[position] != rune('#') { - goto l589 + goto l588 } position++ - goto l588 - l589: - position, tokenIndex = position588, tokenIndex588 + goto l587 + l588: + position, tokenIndex = position587, tokenIndex587 if buffer[position] != rune('$') { - goto l587 + goto l586 } position++ } - l588: + l587: { - position590, tokenIndex590 := position, tokenIndex + position589, tokenIndex589 := position, tokenIndex if buffer[position] != rune('~') { - goto l590 + goto l589 } position++ - goto l591 - l590: - position, tokenIndex = position590, tokenIndex590 + goto l590 + l589: + position, tokenIndex = position589, tokenIndex589 } - l591: + l590: { - position592, tokenIndex592 := position, tokenIndex + position591, tokenIndex591 := position, tokenIndex if buffer[position] != rune('0') { - goto l592 + goto l591 } position++ if buffer[position] != rune('x') { - goto l592 + goto l591 } position++ - goto l593 - l592: - position, tokenIndex = position592, tokenIndex592 + goto l592 + l591: + position, tokenIndex = position591, tokenIndex591 } - l593: + l592: { - position596, tokenIndex596 := position, tokenIndex + position595, tokenIndex595 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l597 + goto l596 } position++ - goto l596 - l597: - position, tokenIndex = position596, tokenIndex596 + goto l595 + l596: + position, tokenIndex = position595, tokenIndex595 if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l598 + goto l597 } position++ - goto l596 - l598: - position, tokenIndex = position596, tokenIndex596 + goto l595 + l597: + position, tokenIndex = position595, tokenIndex595 { - position599, tokenIndex599 := position, tokenIndex + position598, tokenIndex598 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('f') { - goto l600 + goto l599 } position++ - goto l599 - l600: - position, tokenIndex = position599, tokenIndex599 + goto l598 + l599: + position, tokenIndex = position598, tokenIndex598 if c := buffer[position]; c < rune('A') || c > rune('F') { - goto l587 + goto l586 } position++ } - l599: + l598: } - l596: - l594: + l595: + l593: { - position595, tokenIndex595 := position, tokenIndex + position594, tokenIndex594 := position, tokenIndex { - position601, tokenIndex601 := position, tokenIndex + position600, tokenIndex600 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l602 + goto l601 } position++ - goto l601 - l602: - position, tokenIndex = position601, tokenIndex601 + goto l600 + l601: + position, tokenIndex = position600, tokenIndex600 if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l603 + goto l602 } position++ - goto l601 - l603: - position, tokenIndex = position601, tokenIndex601 + goto l600 + l602: + position, tokenIndex = position600, tokenIndex600 { - position604, tokenIndex604 := position, tokenIndex + position603, tokenIndex603 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('f') { - goto l605 + goto l604 } position++ - goto l604 - l605: - position, tokenIndex = position604, tokenIndex604 + goto l603 + l604: + position, tokenIndex = position603, tokenIndex603 if c := buffer[position]; c < rune('A') || c > rune('F') { - goto l595 + goto l594 } position++ } - l604: + l603: } - l601: - goto l594 - l595: - position, tokenIndex = position595, tokenIndex595 + l600: + goto l593 + l594: + position, tokenIndex = position594, tokenIndex594 } - goto l538 - l587: - position, tokenIndex = position538, tokenIndex538 + goto l537 + l586: + position, tokenIndex = position537, tokenIndex537 if buffer[position] != rune('$') { - goto l606 + goto l605 } position++ if buffer[position] != rune('(') { - goto l606 + goto l605 } position++ if buffer[position] != rune('-') { - goto l606 + goto l605 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l606 + goto l605 } position++ - l607: + l606: { - position608, tokenIndex608 := position, tokenIndex + position607, tokenIndex607 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l608 + goto l607 } position++ - goto l607 - l608: - position, tokenIndex = position608, tokenIndex608 + goto l606 + l607: + position, tokenIndex = position607, tokenIndex607 } if buffer[position] != rune(')') { - goto l606 + goto l605 } position++ - goto l538 - l606: - position, tokenIndex = position538, tokenIndex538 + goto l537 + l605: + position, tokenIndex = position537, tokenIndex537 if !_rules[ruleARMRegister]() { - goto l536 + goto l535 } } - l538: + l537: { - position609, tokenIndex609 := position, tokenIndex + position608, tokenIndex608 := position, tokenIndex { - position610, tokenIndex610 := position, tokenIndex + position609, tokenIndex609 := position, tokenIndex if buffer[position] != rune('f') { - goto l611 + goto l610 } position++ - goto l610 - l611: - position, tokenIndex = position610, tokenIndex610 + goto l609 + l610: + position, tokenIndex = position609, tokenIndex609 if buffer[position] != rune('b') { + goto l611 + } + position++ + goto l609 + l611: + position, tokenIndex = position609, tokenIndex609 + if buffer[position] != rune(':') { goto l612 } position++ - goto l610 + goto l609 l612: - position, tokenIndex = position610, tokenIndex610 - if buffer[position] != rune(':') { + position, tokenIndex = position609, tokenIndex609 + if buffer[position] != rune('(') { goto l613 } position++ - goto l610 + goto l609 l613: - position, tokenIndex = position610, tokenIndex610 - if buffer[position] != rune('(') { + position, tokenIndex = position609, tokenIndex609 + if buffer[position] != rune('+') { goto l614 } position++ - goto l610 + goto l609 l614: - position, tokenIndex = position610, tokenIndex610 - if buffer[position] != rune('+') { - goto l615 - } - position++ - goto l610 - l615: - position, tokenIndex = position610, tokenIndex610 + position, tokenIndex = position609, tokenIndex609 if buffer[position] != rune('-') { - goto l609 + goto l608 } position++ } - l610: - goto l536 l609: - position, tokenIndex = position609, tokenIndex609 + goto l535 + l608: + position, tokenIndex = position608, tokenIndex608 } - add(ruleRegisterOrConstant, position537) + add(ruleRegisterOrConstant, position536) } + memoize(39, position535, tokenIndex535, true) return true - l536: - position, tokenIndex = position536, tokenIndex536 + l535: + memoize(39, position535, tokenIndex535, false) + position, tokenIndex = position535, tokenIndex535 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 { - position616, tokenIndex616 := position, tokenIndex + if memoized, ok := memoization[memoKey{40, position}]; ok { + return memoizedResult(memoized) + } + position615, tokenIndex615 := position, tokenIndex { - position617 := position + position616 := position { - position618, tokenIndex618 := position, tokenIndex + position617, tokenIndex617 := position, tokenIndex { - position620, tokenIndex620 := position, tokenIndex + position619, tokenIndex619 := position, tokenIndex if buffer[position] != rune('u') { - goto l621 + goto l620 } position++ - goto l620 - l621: - position, tokenIndex = position620, tokenIndex620 + goto l619 + l620: + position, tokenIndex = position619, tokenIndex619 if buffer[position] != rune('s') { - goto l619 + goto l618 } position++ } - l620: + l619: { - position622, tokenIndex622 := position, tokenIndex + position621, tokenIndex621 := position, tokenIndex if buffer[position] != rune('x') { - goto l623 + goto l622 } position++ - goto l622 - l623: - position, tokenIndex = position622, tokenIndex622 + goto l621 + l622: + position, tokenIndex = position621, tokenIndex621 if buffer[position] != rune('X') { - goto l619 + goto l618 } position++ } - l622: + l621: { - position624, tokenIndex624 := position, tokenIndex + position623, tokenIndex623 := position, tokenIndex if buffer[position] != rune('t') { - goto l625 + goto l624 } position++ - goto l624 - l625: - position, tokenIndex = position624, tokenIndex624 + goto l623 + l624: + position, tokenIndex = position623, tokenIndex623 if buffer[position] != rune('T') { - goto l619 + goto l618 } position++ } - l624: + l623: { - position626, tokenIndex626 := position, tokenIndex + position625, tokenIndex625 := position, tokenIndex if buffer[position] != rune('x') { - goto l627 + goto l626 } position++ - goto l626 - l627: - position, tokenIndex = position626, tokenIndex626 + goto l625 + l626: + position, tokenIndex = position625, tokenIndex625 if buffer[position] != rune('w') { - goto l628 + goto l627 } position++ - goto l626 - l628: - position, tokenIndex = position626, tokenIndex626 + goto l625 + l627: + position, tokenIndex = position625, tokenIndex625 if buffer[position] != rune('h') { - goto l629 + goto l628 } position++ - goto l626 - l629: - position, tokenIndex = position626, tokenIndex626 + goto l625 + l628: + position, tokenIndex = position625, tokenIndex625 if buffer[position] != rune('b') { - goto l619 + goto l618 } position++ } - l626: - goto l618 - l619: - position, tokenIndex = position618, tokenIndex618 + l625: + goto l617 + l618: + position, tokenIndex = position617, tokenIndex617 { - position631, tokenIndex631 := position, tokenIndex + position630, tokenIndex630 := position, tokenIndex if buffer[position] != rune('l') { - goto l632 + goto l631 } position++ - goto l631 - l632: - position, tokenIndex = position631, tokenIndex631 + goto l630 + l631: + position, tokenIndex = position630, tokenIndex630 if buffer[position] != rune('L') { - goto l630 + goto l629 } position++ } - l631: + l630: { - position633, tokenIndex633 := position, tokenIndex + position632, tokenIndex632 := position, tokenIndex if buffer[position] != rune('s') { - goto l634 + goto l633 } position++ - goto l633 - l634: - position, tokenIndex = position633, tokenIndex633 + goto l632 + l633: + position, tokenIndex = position632, tokenIndex632 if buffer[position] != rune('S') { - goto l630 + goto l629 } position++ } - l633: + l632: { - position635, tokenIndex635 := position, tokenIndex + position634, tokenIndex634 := position, tokenIndex if buffer[position] != rune('l') { - goto l636 + goto l635 } position++ - goto l635 - l636: - position, tokenIndex = position635, tokenIndex635 + goto l634 + l635: + position, tokenIndex = position634, tokenIndex634 if buffer[position] != rune('L') { - goto l630 + goto l629 } position++ } - l635: - goto l618 - l630: - position, tokenIndex = position618, tokenIndex618 + l634: + goto l617 + l629: + position, tokenIndex = position617, tokenIndex617 { - position638, tokenIndex638 := position, tokenIndex + position637, tokenIndex637 := position, tokenIndex if buffer[position] != rune('l') { - goto l639 + goto l638 } position++ - goto l638 - l639: - position, tokenIndex = position638, tokenIndex638 + goto l637 + l638: + position, tokenIndex = position637, tokenIndex637 if buffer[position] != rune('L') { - goto l637 + goto l636 } position++ } - l638: + l637: { - position640, tokenIndex640 := position, tokenIndex + position639, tokenIndex639 := position, tokenIndex if buffer[position] != rune('s') { - goto l641 + goto l640 } position++ - goto l640 - l641: - position, tokenIndex = position640, tokenIndex640 + goto l639 + l640: + position, tokenIndex = position639, tokenIndex639 if buffer[position] != rune('S') { - goto l637 + goto l636 } position++ } - l640: + l639: { - position642, tokenIndex642 := position, tokenIndex + position641, tokenIndex641 := position, tokenIndex if buffer[position] != rune('r') { - goto l643 + goto l642 } position++ - goto l642 - l643: - position, tokenIndex = position642, tokenIndex642 + goto l641 + l642: + position, tokenIndex = position641, tokenIndex641 if buffer[position] != rune('R') { - goto l637 + goto l636 } position++ } - l642: - goto l618 - l637: - position, tokenIndex = position618, tokenIndex618 + l641: + goto l617 + l636: + position, tokenIndex = position617, tokenIndex617 { - position645, tokenIndex645 := position, tokenIndex + position644, tokenIndex644 := position, tokenIndex if buffer[position] != rune('r') { - goto l646 + goto l645 } position++ - goto l645 - l646: - position, tokenIndex = position645, tokenIndex645 + goto l644 + l645: + position, tokenIndex = position644, tokenIndex644 if buffer[position] != rune('R') { - goto l644 + goto l643 } position++ } - l645: + l644: { - position647, tokenIndex647 := position, tokenIndex + position646, tokenIndex646 := position, tokenIndex if buffer[position] != rune('o') { - goto l648 + goto l647 } position++ - goto l647 - l648: - position, tokenIndex = position647, tokenIndex647 + goto l646 + l647: + position, tokenIndex = position646, tokenIndex646 if buffer[position] != rune('O') { - goto l644 + goto l643 } position++ } - l647: + l646: { - position649, tokenIndex649 := position, tokenIndex + position648, tokenIndex648 := position, tokenIndex if buffer[position] != rune('r') { - goto l650 + goto l649 } position++ - goto l649 - l650: - position, tokenIndex = position649, tokenIndex649 + goto l648 + l649: + position, tokenIndex = position648, tokenIndex648 if buffer[position] != rune('R') { - goto l644 + goto l643 } position++ } - l649: - goto l618 - l644: - position, tokenIndex = position618, tokenIndex618 + l648: + goto l617 + l643: + position, tokenIndex = position617, tokenIndex617 { - position651, tokenIndex651 := position, tokenIndex + position650, tokenIndex650 := position, tokenIndex if buffer[position] != rune('a') { - goto l652 + goto l651 } position++ - goto l651 - l652: - position, tokenIndex = position651, tokenIndex651 + goto l650 + l651: + position, tokenIndex = position650, tokenIndex650 if buffer[position] != rune('A') { - goto l616 + goto l615 } position++ } - l651: + l650: { - position653, tokenIndex653 := position, tokenIndex + position652, tokenIndex652 := position, tokenIndex if buffer[position] != rune('s') { - goto l654 + goto l653 } position++ - goto l653 - l654: - position, tokenIndex = position653, tokenIndex653 + goto l652 + l653: + position, tokenIndex = position652, tokenIndex652 if buffer[position] != rune('S') { - goto l616 + goto l615 } position++ } - l653: + l652: { - position655, tokenIndex655 := position, tokenIndex + position654, tokenIndex654 := position, tokenIndex if buffer[position] != rune('r') { - goto l656 + goto l655 } position++ - goto l655 - l656: - position, tokenIndex = position655, tokenIndex655 + goto l654 + l655: + position, tokenIndex = position654, tokenIndex654 if buffer[position] != rune('R') { - goto l616 + goto l615 } position++ } - l655: + l654: } - l618: + l617: { - position657, tokenIndex657 := position, tokenIndex + position656, tokenIndex656 := position, tokenIndex if !_rules[ruleWS]() { - goto l657 + goto l656 } { - position659, tokenIndex659 := position, tokenIndex + position658, tokenIndex658 := position, tokenIndex if buffer[position] != rune('#') { - goto l659 + goto l658 } position++ - goto l660 - l659: - position, tokenIndex = position659, tokenIndex659 + goto l659 + l658: + position, tokenIndex = position658, tokenIndex658 } - l660: + l659: if !_rules[ruleOffset]() { - goto l657 + goto l656 } - goto l658 - l657: - position, tokenIndex = position657, tokenIndex657 + goto l657 + l656: + position, tokenIndex = position656, tokenIndex656 } - l658: - add(ruleARMConstantTweak, position617) + l657: + add(ruleARMConstantTweak, position616) } + memoize(40, position615, tokenIndex615, true) return true - l616: - position, tokenIndex = position616, tokenIndex616 + l615: + memoize(40, position615, tokenIndex615, false) + position, tokenIndex = position615, tokenIndex615 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 { - position661, tokenIndex661 := position, tokenIndex + if memoized, ok := memoization[memoKey{41, position}]; ok { + return memoizedResult(memoized) + } + position660, tokenIndex660 := position, tokenIndex { - position662 := position + position661 := position { - position663, tokenIndex663 := position, tokenIndex + position662, tokenIndex662 := position, tokenIndex { - position665, tokenIndex665 := position, tokenIndex + position664, tokenIndex664 := position, tokenIndex if buffer[position] != rune('s') { - goto l666 + goto l665 } position++ - goto l665 - l666: - position, tokenIndex = position665, tokenIndex665 + goto l664 + l665: + position, tokenIndex = position664, tokenIndex664 if buffer[position] != rune('S') { - goto l664 + goto l663 } position++ } - l665: + l664: { - position667, tokenIndex667 := position, tokenIndex + position666, tokenIndex666 := position, tokenIndex if buffer[position] != rune('p') { - goto l668 + goto l667 } position++ - goto l667 - l668: - position, tokenIndex = position667, tokenIndex667 + goto l666 + l667: + position, tokenIndex = position666, tokenIndex666 if buffer[position] != rune('P') { - goto l664 + goto l663 } position++ } - l667: - goto l663 - l664: - position, tokenIndex = position663, tokenIndex663 + l666: + goto l662 + l663: + position, tokenIndex = position662, tokenIndex662 { - position670, tokenIndex670 := position, tokenIndex + position669, tokenIndex669 := position, tokenIndex if buffer[position] != rune('x') { + goto l670 + } + position++ + goto l669 + l670: + position, tokenIndex = position669, tokenIndex669 + if buffer[position] != rune('w') { goto l671 } position++ - goto l670 + goto l669 l671: - position, tokenIndex = position670, tokenIndex670 - if buffer[position] != rune('w') { + position, tokenIndex = position669, tokenIndex669 + if buffer[position] != rune('d') { goto l672 } position++ - goto l670 + goto l669 l672: - position, tokenIndex = position670, tokenIndex670 - if buffer[position] != rune('d') { + position, tokenIndex = position669, tokenIndex669 + if buffer[position] != rune('q') { goto l673 } position++ - goto l670 + goto l669 l673: - position, tokenIndex = position670, tokenIndex670 - if buffer[position] != rune('q') { + position, tokenIndex = position669, tokenIndex669 + if buffer[position] != rune('s') { goto l674 } position++ - goto l670 + goto l669 l674: - position, tokenIndex = position670, tokenIndex670 - if buffer[position] != rune('s') { + position, tokenIndex = position669, tokenIndex669 + if buffer[position] != rune('h') { goto l675 } position++ - goto l670 + goto l669 l675: - position, tokenIndex = position670, tokenIndex670 - if buffer[position] != rune('h') { - goto l676 - } - position++ - goto l670 - l676: - position, tokenIndex = position670, tokenIndex670 + position, tokenIndex = position669, tokenIndex669 if buffer[position] != rune('b') { - goto l669 + goto l668 } position++ } - l670: + l669: if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l669 + goto l668 } position++ { - position677, tokenIndex677 := position, tokenIndex + position676, tokenIndex676 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l677 + goto l676 } position++ - goto l678 - l677: - position, tokenIndex = position677, tokenIndex677 + goto l677 + l676: + position, tokenIndex = position676, tokenIndex676 } - l678: - goto l663 - l669: - position, tokenIndex = position663, tokenIndex663 + l677: + goto l662 + l668: + position, tokenIndex = position662, tokenIndex662 { - position680, tokenIndex680 := position, tokenIndex + position679, tokenIndex679 := position, tokenIndex if buffer[position] != rune('x') { - goto l681 + goto l680 } position++ - goto l680 - l681: - position, tokenIndex = position680, tokenIndex680 + goto l679 + l680: + position, tokenIndex = position679, tokenIndex679 if buffer[position] != rune('X') { - goto l679 + goto l678 } position++ } - l680: + l679: { - position682, tokenIndex682 := position, tokenIndex + position681, tokenIndex681 := position, tokenIndex if buffer[position] != rune('z') { - goto l683 + goto l682 } position++ - goto l682 - l683: - position, tokenIndex = position682, tokenIndex682 + goto l681 + l682: + position, tokenIndex = position681, tokenIndex681 if buffer[position] != rune('Z') { - goto l679 + goto l678 } position++ } - l682: + l681: { - position684, tokenIndex684 := position, tokenIndex + position683, tokenIndex683 := position, tokenIndex if buffer[position] != rune('r') { - goto l685 + goto l684 } position++ - goto l684 - l685: - position, tokenIndex = position684, tokenIndex684 + goto l683 + l684: + position, tokenIndex = position683, tokenIndex683 if buffer[position] != rune('R') { - goto l679 + goto l678 } position++ } - l684: - goto l663 - l679: - position, tokenIndex = position663, tokenIndex663 + l683: + goto l662 + l678: + position, tokenIndex = position662, tokenIndex662 { - position687, tokenIndex687 := position, tokenIndex + position686, tokenIndex686 := position, tokenIndex if buffer[position] != rune('w') { - goto l688 + goto l687 } position++ - goto l687 - l688: - position, tokenIndex = position687, tokenIndex687 + goto l686 + l687: + position, tokenIndex = position686, tokenIndex686 if buffer[position] != rune('W') { - goto l686 + goto l685 } position++ } - l687: + l686: { - position689, tokenIndex689 := position, tokenIndex + position688, tokenIndex688 := position, tokenIndex if buffer[position] != rune('z') { - goto l690 + goto l689 } position++ - goto l689 - l690: - position, tokenIndex = position689, tokenIndex689 + goto l688 + l689: + position, tokenIndex = position688, tokenIndex688 if buffer[position] != rune('Z') { - goto l686 + goto l685 } position++ } - l689: + l688: { - position691, tokenIndex691 := position, tokenIndex + position690, tokenIndex690 := position, tokenIndex if buffer[position] != rune('r') { - goto l692 + goto l691 } position++ - goto l691 - l692: - position, tokenIndex = position691, tokenIndex691 + goto l690 + l691: + position, tokenIndex = position690, tokenIndex690 if buffer[position] != rune('R') { - goto l686 + goto l685 } position++ } - l691: - goto l663 - l686: - position, tokenIndex = position663, tokenIndex663 + l690: + goto l662 + l685: + position, tokenIndex = position662, tokenIndex662 { - position694, tokenIndex694 := position, tokenIndex + position693, tokenIndex693 := position, tokenIndex if buffer[position] != rune('n') { - goto l695 + goto l694 } position++ - goto l694 - l695: - position, tokenIndex = position694, tokenIndex694 + goto l693 + l694: + position, tokenIndex = position693, tokenIndex693 if buffer[position] != rune('N') { - goto l693 + goto l692 } position++ } - l694: + l693: { - position696, tokenIndex696 := position, tokenIndex + position695, tokenIndex695 := position, tokenIndex if buffer[position] != rune('z') { - goto l697 + goto l696 } position++ - goto l696 - l697: - position, tokenIndex = position696, tokenIndex696 + goto l695 + l696: + position, tokenIndex = position695, tokenIndex695 if buffer[position] != rune('Z') { - goto l693 + goto l692 } position++ } - l696: + l695: { - position698, tokenIndex698 := position, tokenIndex + position697, tokenIndex697 := position, tokenIndex if buffer[position] != rune('c') { - goto l699 + goto l698 } position++ - goto l698 - l699: - position, tokenIndex = position698, tokenIndex698 + goto l697 + l698: + position, tokenIndex = position697, tokenIndex697 if buffer[position] != rune('C') { - goto l693 + goto l692 } position++ } - l698: + l697: { - position700, tokenIndex700 := position, tokenIndex + position699, tokenIndex699 := position, tokenIndex if buffer[position] != rune('v') { - goto l701 + goto l700 } position++ - goto l700 - l701: - position, tokenIndex = position700, tokenIndex700 + goto l699 + l700: + position, tokenIndex = position699, tokenIndex699 if buffer[position] != rune('V') { - goto l693 + goto l692 } position++ } - l700: - goto l663 - l693: - position, tokenIndex = position663, tokenIndex663 + l699: + goto l662 + l692: + position, tokenIndex = position662, tokenIndex662 if !_rules[ruleARMVectorRegister]() { - goto l702 + goto l701 } - goto l663 - l702: - position, tokenIndex = position663, tokenIndex663 + goto l662 + l701: + position, tokenIndex = position662, tokenIndex662 if buffer[position] != rune('{') { - goto l661 + goto l660 } position++ { - position703, tokenIndex703 := position, tokenIndex + position702, tokenIndex702 := position, tokenIndex if !_rules[ruleWS]() { - goto l703 + goto l702 } - goto l704 - l703: - position, tokenIndex = position703, tokenIndex703 + goto l703 + l702: + position, tokenIndex = position702, tokenIndex702 } - l704: + l703: if !_rules[ruleARMVectorRegister]() { - goto l661 + goto l660 } { - position705, tokenIndex705 := position, tokenIndex + position704, tokenIndex704 := position, tokenIndex if !_rules[ruleWS]() { - goto l705 + goto l704 } - goto l706 - l705: - position, tokenIndex = position705, tokenIndex705 + goto l705 + l704: + position, tokenIndex = position704, tokenIndex704 } + l705: l706: - l707: { - position708, tokenIndex708 := position, tokenIndex + position707, tokenIndex707 := position, tokenIndex { - position709, tokenIndex709 := position, tokenIndex + position708, tokenIndex708 := position, tokenIndex if buffer[position] != rune(',') { - goto l710 + goto l709 } position++ - goto l709 - l710: - position, tokenIndex = position709, tokenIndex709 + goto l708 + l709: + position, tokenIndex = position708, tokenIndex708 if buffer[position] != rune('-') { - goto l708 + goto l707 } position++ } - l709: + l708: { - position711, tokenIndex711 := position, tokenIndex + position710, tokenIndex710 := position, tokenIndex if !_rules[ruleWS]() { - goto l711 + goto l710 } - goto l712 - l711: - position, tokenIndex = position711, tokenIndex711 + goto l711 + l710: + position, tokenIndex = position710, tokenIndex710 } - l712: + l711: if !_rules[ruleARMVectorRegister]() { - goto l708 + goto l707 } - goto l707 - l708: - position, tokenIndex = position708, tokenIndex708 + goto l706 + l707: + position, tokenIndex = position707, tokenIndex707 } { - position713, tokenIndex713 := position, tokenIndex + position712, tokenIndex712 := position, tokenIndex if !_rules[ruleWS]() { - goto l713 + goto l712 } - goto l714 - l713: - position, tokenIndex = position713, tokenIndex713 + goto l713 + l712: + position, tokenIndex = position712, tokenIndex712 } - l714: + l713: if buffer[position] != rune('}') { - goto l661 + goto l660 } position++ { - position715, tokenIndex715 := position, tokenIndex + position714, tokenIndex714 := position, tokenIndex if buffer[position] != rune('[') { - goto l715 + goto l714 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l715 + goto l714 } position++ { - position717, tokenIndex717 := position, tokenIndex + position716, tokenIndex716 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l717 + goto l716 } position++ - goto l718 - l717: - position, tokenIndex = position717, tokenIndex717 + goto l717 + l716: + position, tokenIndex = position716, tokenIndex716 } - l718: + l717: if buffer[position] != rune(']') { - goto l715 + goto l714 } position++ - goto l716 - l715: - position, tokenIndex = position715, tokenIndex715 + goto l715 + l714: + position, tokenIndex = position714, tokenIndex714 } - l716: + l715: } - l663: - add(ruleARMRegister, position662) + l662: + add(ruleARMRegister, position661) } + memoize(41, position660, tokenIndex660, true) return true - l661: - position, tokenIndex = position661, tokenIndex661 + l660: + memoize(41, position660, tokenIndex660, false) + position, tokenIndex = position660, tokenIndex660 return false }, /* 42 ARMVectorRegister <- <(('v' / 'V') [0-9] [0-9]? ('.' [0-9]* ('b' / 's' / 'd' / 'h' / 'q') ('[' [0-9] [0-9]? ']')?)?)> */ func() bool { - position719, tokenIndex719 := position, tokenIndex + if memoized, ok := memoization[memoKey{42, position}]; ok { + return memoizedResult(memoized) + } + position718, tokenIndex718 := position, tokenIndex { - position720 := position + position719 := position { - position721, tokenIndex721 := position, tokenIndex + position720, tokenIndex720 := position, tokenIndex if buffer[position] != rune('v') { - goto l722 + goto l721 } position++ - goto l721 - l722: - position, tokenIndex = position721, tokenIndex721 + goto l720 + l721: + position, tokenIndex = position720, tokenIndex720 if buffer[position] != rune('V') { - goto l719 + goto l718 } position++ } - l721: + l720: if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l719 + goto l718 } position++ { - position723, tokenIndex723 := position, tokenIndex + position722, tokenIndex722 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l723 + goto l722 } position++ - goto l724 - l723: - position, tokenIndex = position723, tokenIndex723 + goto l723 + l722: + position, tokenIndex = position722, tokenIndex722 } - l724: + l723: { - position725, tokenIndex725 := position, tokenIndex + position724, tokenIndex724 := position, tokenIndex if buffer[position] != rune('.') { - goto l725 + goto l724 } position++ - l727: + l726: { - position728, tokenIndex728 := position, tokenIndex + position727, tokenIndex727 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l728 + goto l727 } position++ - goto l727 - l728: - position, tokenIndex = position728, tokenIndex728 + goto l726 + l727: + position, tokenIndex = position727, tokenIndex727 } { - position729, tokenIndex729 := position, tokenIndex + position728, tokenIndex728 := position, tokenIndex if buffer[position] != rune('b') { + goto l729 + } + position++ + goto l728 + l729: + position, tokenIndex = position728, tokenIndex728 + if buffer[position] != rune('s') { goto l730 } position++ - goto l729 + goto l728 l730: - position, tokenIndex = position729, tokenIndex729 - if buffer[position] != rune('s') { + position, tokenIndex = position728, tokenIndex728 + if buffer[position] != rune('d') { goto l731 } position++ - goto l729 + goto l728 l731: - position, tokenIndex = position729, tokenIndex729 - if buffer[position] != rune('d') { + position, tokenIndex = position728, tokenIndex728 + if buffer[position] != rune('h') { goto l732 } position++ - goto l729 + goto l728 l732: - position, tokenIndex = position729, tokenIndex729 - if buffer[position] != rune('h') { - goto l733 - } - position++ - goto l729 - l733: - position, tokenIndex = position729, tokenIndex729 + position, tokenIndex = position728, tokenIndex728 if buffer[position] != rune('q') { - goto l725 + goto l724 } position++ } - l729: + l728: { - position734, tokenIndex734 := position, tokenIndex + position733, tokenIndex733 := position, tokenIndex if buffer[position] != rune('[') { - goto l734 + goto l733 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l734 + goto l733 } position++ { - position736, tokenIndex736 := position, tokenIndex + position735, tokenIndex735 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l736 + goto l735 } position++ - goto l737 - l736: - position, tokenIndex = position736, tokenIndex736 + goto l736 + l735: + position, tokenIndex = position735, tokenIndex735 } - l737: + l736: if buffer[position] != rune(']') { - goto l734 + goto l733 } position++ - goto l735 - l734: - position, tokenIndex = position734, tokenIndex734 + goto l734 + l733: + position, tokenIndex = position733, tokenIndex733 } - l735: - goto l726 - l725: - position, tokenIndex = position725, tokenIndex725 + l734: + goto l725 + l724: + position, tokenIndex = position724, tokenIndex724 } - l726: - add(ruleARMVectorRegister, position720) + l725: + add(ruleARMVectorRegister, position719) } + memoize(42, position718, tokenIndex718, true) return true - l719: - position, tokenIndex = position719, tokenIndex719 + l718: + memoize(42, position718, tokenIndex718, false) + position, tokenIndex = position718, tokenIndex718 return false }, /* 43 MemoryRef <- <((SymbolRef BaseIndexScale) / SymbolRef / Low12BitsSymbolRef / (Offset* BaseIndexScale) / (SegmentRegister Offset BaseIndexScale) / (SegmentRegister BaseIndexScale) / (SegmentRegister Offset) / ARMBaseIndexScale / BaseIndexScale)> */ func() bool { - position738, tokenIndex738 := position, tokenIndex + if memoized, ok := memoization[memoKey{43, position}]; ok { + return memoizedResult(memoized) + } + position737, tokenIndex737 := position, tokenIndex { - position739 := position + position738 := position { - position740, tokenIndex740 := position, tokenIndex + position739, tokenIndex739 := position, tokenIndex if !_rules[ruleSymbolRef]() { - goto l741 + goto l740 } if !_rules[ruleBaseIndexScale]() { + goto l740 + } + goto l739 + l740: + position, tokenIndex = position739, tokenIndex739 + if !_rules[ruleSymbolRef]() { goto l741 } - goto l740 + goto l739 l741: - position, tokenIndex = position740, tokenIndex740 - if !_rules[ruleSymbolRef]() { + position, tokenIndex = position739, tokenIndex739 + if !_rules[ruleLow12BitsSymbolRef]() { goto l742 } - goto l740 + goto l739 l742: - position, tokenIndex = position740, tokenIndex740 - if !_rules[ruleLow12BitsSymbolRef]() { - goto l743 - } - goto l740 - l743: - position, tokenIndex = position740, tokenIndex740 - l745: + position, tokenIndex = position739, tokenIndex739 + l744: { - position746, tokenIndex746 := position, tokenIndex + position745, tokenIndex745 := position, tokenIndex if !_rules[ruleOffset]() { - goto l746 + goto l745 } - goto l745 - l746: - position, tokenIndex = position746, tokenIndex746 + goto l744 + l745: + position, tokenIndex = position745, tokenIndex745 } if !_rules[ruleBaseIndexScale]() { - goto l744 + goto l743 } - goto l740 - l744: - position, tokenIndex = position740, tokenIndex740 + goto l739 + l743: + position, tokenIndex = position739, tokenIndex739 if !_rules[ruleSegmentRegister]() { - goto l747 + goto l746 } if !_rules[ruleOffset]() { + goto l746 + } + if !_rules[ruleBaseIndexScale]() { + goto l746 + } + goto l739 + l746: + position, tokenIndex = position739, tokenIndex739 + if !_rules[ruleSegmentRegister]() { goto l747 } if !_rules[ruleBaseIndexScale]() { goto l747 } - goto l740 + goto l739 l747: - position, tokenIndex = position740, tokenIndex740 + position, tokenIndex = position739, tokenIndex739 if !_rules[ruleSegmentRegister]() { goto l748 } - if !_rules[ruleBaseIndexScale]() { + if !_rules[ruleOffset]() { goto l748 } - goto l740 + goto l739 l748: - position, tokenIndex = position740, tokenIndex740 - if !_rules[ruleSegmentRegister]() { - goto l749 - } - if !_rules[ruleOffset]() { + position, tokenIndex = position739, tokenIndex739 + if !_rules[ruleARMBaseIndexScale]() { goto l749 } - goto l740 + goto l739 l749: - position, tokenIndex = position740, tokenIndex740 - if !_rules[ruleARMBaseIndexScale]() { - goto l750 - } - goto l740 - l750: - position, tokenIndex = position740, tokenIndex740 + position, tokenIndex = position739, tokenIndex739 if !_rules[ruleBaseIndexScale]() { - goto l738 + goto l737 } } - l740: - add(ruleMemoryRef, position739) + l739: + add(ruleMemoryRef, position738) } + memoize(43, position737, tokenIndex737, true) return true - l738: - position, tokenIndex = position738, tokenIndex738 + l737: + memoize(43, position737, tokenIndex737, false) + position, tokenIndex = position737, tokenIndex737 return false }, /* 44 SymbolRef <- <((Offset* '+')? (LocalSymbol / SymbolName) Offset* ('@' Section Offset*)?)> */ func() bool { - position751, tokenIndex751 := position, tokenIndex + if memoized, ok := memoization[memoKey{44, position}]; ok { + return memoizedResult(memoized) + } + position750, tokenIndex750 := position, tokenIndex { - position752 := position + position751 := position { - position753, tokenIndex753 := position, tokenIndex - l755: + position752, tokenIndex752 := position, tokenIndex + l754: { - position756, tokenIndex756 := position, tokenIndex + position755, tokenIndex755 := position, tokenIndex if !_rules[ruleOffset]() { - goto l756 + goto l755 } - goto l755 - l756: - position, tokenIndex = position756, tokenIndex756 + goto l754 + l755: + position, tokenIndex = position755, tokenIndex755 } if buffer[position] != rune('+') { - goto l753 + goto l752 } position++ - goto l754 - l753: - position, tokenIndex = position753, tokenIndex753 + goto l753 + l752: + position, tokenIndex = position752, tokenIndex752 } - l754: + l753: { - position757, tokenIndex757 := position, tokenIndex + position756, tokenIndex756 := position, tokenIndex if !_rules[ruleLocalSymbol]() { - goto l758 + goto l757 } - goto l757 - l758: - position, tokenIndex = position757, tokenIndex757 + goto l756 + l757: + position, tokenIndex = position756, tokenIndex756 if !_rules[ruleSymbolName]() { - goto l751 + goto l750 } } - l757: - l759: + l756: + l758: { - position760, tokenIndex760 := position, tokenIndex + position759, tokenIndex759 := position, tokenIndex if !_rules[ruleOffset]() { - goto l760 + goto l759 } - goto l759 - l760: - position, tokenIndex = position760, tokenIndex760 + goto l758 + l759: + position, tokenIndex = position759, tokenIndex759 } { - position761, tokenIndex761 := position, tokenIndex + position760, tokenIndex760 := position, tokenIndex if buffer[position] != rune('@') { - goto l761 + goto l760 } position++ if !_rules[ruleSection]() { - goto l761 + goto l760 } - l763: + l762: { - position764, tokenIndex764 := position, tokenIndex + position763, tokenIndex763 := position, tokenIndex if !_rules[ruleOffset]() { - goto l764 + goto l763 } - goto l763 - l764: - position, tokenIndex = position764, tokenIndex764 + goto l762 + l763: + position, tokenIndex = position763, tokenIndex763 } - goto l762 - l761: - position, tokenIndex = position761, tokenIndex761 + goto l761 + l760: + position, tokenIndex = position760, tokenIndex760 } - l762: - add(ruleSymbolRef, position752) + l761: + add(ruleSymbolRef, position751) } + memoize(44, position750, tokenIndex750, true) return true - l751: - position, tokenIndex = position751, tokenIndex751 + l750: + memoize(44, position750, tokenIndex750, false) + position, tokenIndex = position750, tokenIndex750 return false }, /* 45 Low12BitsSymbolRef <- <(':' ('l' / 'L') ('o' / 'O') '1' '2' ':' (LocalSymbol / SymbolName) Offset?)> */ func() bool { - position765, tokenIndex765 := position, tokenIndex + if memoized, ok := memoization[memoKey{45, position}]; ok { + return memoizedResult(memoized) + } + position764, tokenIndex764 := position, tokenIndex { - position766 := position + position765 := position if buffer[position] != rune(':') { - goto l765 + goto l764 } position++ { - position767, tokenIndex767 := position, tokenIndex + position766, tokenIndex766 := position, tokenIndex if buffer[position] != rune('l') { - goto l768 + goto l767 } position++ - goto l767 - l768: - position, tokenIndex = position767, tokenIndex767 + goto l766 + l767: + position, tokenIndex = position766, tokenIndex766 if buffer[position] != rune('L') { - goto l765 + goto l764 } position++ } - l767: + l766: { - position769, tokenIndex769 := position, tokenIndex + position768, tokenIndex768 := position, tokenIndex if buffer[position] != rune('o') { - goto l770 + goto l769 } position++ - goto l769 - l770: - position, tokenIndex = position769, tokenIndex769 + goto l768 + l769: + position, tokenIndex = position768, tokenIndex768 if buffer[position] != rune('O') { - goto l765 + goto l764 } position++ } - l769: + l768: if buffer[position] != rune('1') { - goto l765 + goto l764 } position++ if buffer[position] != rune('2') { - goto l765 + goto l764 } position++ if buffer[position] != rune(':') { - goto l765 + goto l764 } position++ { - position771, tokenIndex771 := position, tokenIndex + position770, tokenIndex770 := position, tokenIndex if !_rules[ruleLocalSymbol]() { - goto l772 + goto l771 } - goto l771 - l772: - position, tokenIndex = position771, tokenIndex771 + goto l770 + l771: + position, tokenIndex = position770, tokenIndex770 if !_rules[ruleSymbolName]() { - goto l765 + goto l764 } } - l771: + l770: { - position773, tokenIndex773 := position, tokenIndex + position772, tokenIndex772 := position, tokenIndex if !_rules[ruleOffset]() { - goto l773 + goto l772 } - goto l774 - l773: - position, tokenIndex = position773, tokenIndex773 + goto l773 + l772: + position, tokenIndex = position772, tokenIndex772 } - l774: - add(ruleLow12BitsSymbolRef, position766) + l773: + add(ruleLow12BitsSymbolRef, position765) } + memoize(45, position764, tokenIndex764, true) return true - l765: - position, tokenIndex = position765, tokenIndex765 + l764: + memoize(45, position764, tokenIndex764, false) + position, tokenIndex = position764, tokenIndex764 return false }, /* 46 ARMBaseIndexScale <- <('[' ARMRegister (',' WS? (('#'? Offset (('*' [0-9]+) / ('*' '(' [0-9]+ Operator [0-9]+ ')') / ('+' [0-9]+)*)?) / ('#'? ARMGOTLow12) / ('#'? Low12BitsSymbolRef) / ARMRegister) (',' WS? ARMConstantTweak)?)? ']' ARMPostincrement?)> */ func() bool { - position775, tokenIndex775 := position, tokenIndex + if memoized, ok := memoization[memoKey{46, position}]; ok { + return memoizedResult(memoized) + } + position774, tokenIndex774 := position, tokenIndex { - position776 := position + position775 := position if buffer[position] != rune('[') { - goto l775 + goto l774 } position++ if !_rules[ruleARMRegister]() { - goto l775 + goto l774 } { - position777, tokenIndex777 := position, tokenIndex + position776, tokenIndex776 := position, tokenIndex if buffer[position] != rune(',') { - goto l777 + goto l776 } position++ { - position779, tokenIndex779 := position, tokenIndex + position778, tokenIndex778 := position, tokenIndex if !_rules[ruleWS]() { - goto l779 + goto l778 } - goto l780 - l779: - position, tokenIndex = position779, tokenIndex779 + goto l779 + l778: + position, tokenIndex = position778, tokenIndex778 } - l780: + l779: { - position781, tokenIndex781 := position, tokenIndex + position780, tokenIndex780 := position, tokenIndex { - position783, tokenIndex783 := position, tokenIndex + position782, tokenIndex782 := position, tokenIndex if buffer[position] != rune('#') { - goto l783 + goto l782 } position++ - goto l784 - l783: - position, tokenIndex = position783, tokenIndex783 + goto l783 + l782: + position, tokenIndex = position782, tokenIndex782 } - l784: + l783: if !_rules[ruleOffset]() { - goto l782 + goto l781 } { - position785, tokenIndex785 := position, tokenIndex + position784, tokenIndex784 := position, tokenIndex { - position787, tokenIndex787 := position, tokenIndex + position786, tokenIndex786 := position, tokenIndex if buffer[position] != rune('*') { - goto l788 + goto l787 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l788 + goto l787 } position++ - l789: + l788: { - position790, tokenIndex790 := position, tokenIndex + position789, tokenIndex789 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l790 + goto l789 } position++ - goto l789 - l790: - position, tokenIndex = position790, tokenIndex790 + goto l788 + l789: + position, tokenIndex = position789, tokenIndex789 } - goto l787 - l788: - position, tokenIndex = position787, tokenIndex787 + goto l786 + l787: + position, tokenIndex = position786, tokenIndex786 if buffer[position] != rune('*') { - goto l791 + goto l790 } position++ if buffer[position] != rune('(') { - goto l791 + goto l790 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l791 + goto l790 } position++ - l792: + l791: { - position793, tokenIndex793 := position, tokenIndex + position792, tokenIndex792 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l793 + goto l792 } position++ - goto l792 - l793: - position, tokenIndex = position793, tokenIndex793 + goto l791 + l792: + position, tokenIndex = position792, tokenIndex792 } if !_rules[ruleOperator]() { - goto l791 + goto l790 } if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l791 + goto l790 } position++ - l794: + l793: { - position795, tokenIndex795 := position, tokenIndex + position794, tokenIndex794 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l795 + goto l794 } position++ - goto l794 - l795: - position, tokenIndex = position795, tokenIndex795 + goto l793 + l794: + position, tokenIndex = position794, tokenIndex794 } if buffer[position] != rune(')') { - goto l791 + goto l790 } position++ - goto l787 - l791: - position, tokenIndex = position787, tokenIndex787 - l796: + goto l786 + l790: + position, tokenIndex = position786, tokenIndex786 + l795: { - position797, tokenIndex797 := position, tokenIndex + position796, tokenIndex796 := position, tokenIndex if buffer[position] != rune('+') { - goto l797 + goto l796 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l797 + goto l796 } position++ - l798: + l797: { - position799, tokenIndex799 := position, tokenIndex + position798, tokenIndex798 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l799 + goto l798 } position++ - goto l798 - l799: - position, tokenIndex = position799, tokenIndex799 + goto l797 + l798: + position, tokenIndex = position798, tokenIndex798 } - goto l796 - l797: - position, tokenIndex = position797, tokenIndex797 + goto l795 + l796: + position, tokenIndex = position796, tokenIndex796 } } - l787: - goto l786 + l786: + goto l785 - position, tokenIndex = position785, tokenIndex785 + position, tokenIndex = position784, tokenIndex784 } - l786: - goto l781 - l782: - position, tokenIndex = position781, tokenIndex781 + l785: + goto l780 + l781: + position, tokenIndex = position780, tokenIndex780 { - position801, tokenIndex801 := position, tokenIndex + position800, tokenIndex800 := position, tokenIndex if buffer[position] != rune('#') { - goto l801 + goto l800 } position++ - goto l802 - l801: - position, tokenIndex = position801, tokenIndex801 + goto l801 + l800: + position, tokenIndex = position800, tokenIndex800 } - l802: + l801: if !_rules[ruleARMGOTLow12]() { - goto l800 + goto l799 } - goto l781 - l800: - position, tokenIndex = position781, tokenIndex781 + goto l780 + l799: + position, tokenIndex = position780, tokenIndex780 { - position804, tokenIndex804 := position, tokenIndex + position803, tokenIndex803 := position, tokenIndex if buffer[position] != rune('#') { - goto l804 + goto l803 } position++ - goto l805 - l804: - position, tokenIndex = position804, tokenIndex804 + goto l804 + l803: + position, tokenIndex = position803, tokenIndex803 } - l805: + l804: if !_rules[ruleLow12BitsSymbolRef]() { - goto l803 + goto l802 } - goto l781 - l803: - position, tokenIndex = position781, tokenIndex781 + goto l780 + l802: + position, tokenIndex = position780, tokenIndex780 if !_rules[ruleARMRegister]() { - goto l777 + goto l776 } } - l781: + l780: { - position806, tokenIndex806 := position, tokenIndex + position805, tokenIndex805 := position, tokenIndex if buffer[position] != rune(',') { - goto l806 + goto l805 } position++ { - position808, tokenIndex808 := position, tokenIndex + position807, tokenIndex807 := position, tokenIndex if !_rules[ruleWS]() { - goto l808 + goto l807 } - goto l809 - l808: - position, tokenIndex = position808, tokenIndex808 + goto l808 + l807: + position, tokenIndex = position807, tokenIndex807 } - l809: + l808: if !_rules[ruleARMConstantTweak]() { - goto l806 + goto l805 } - goto l807 - l806: - position, tokenIndex = position806, tokenIndex806 + goto l806 + l805: + position, tokenIndex = position805, tokenIndex805 } - l807: - goto l778 - l777: - position, tokenIndex = position777, tokenIndex777 + l806: + goto l777 + l776: + position, tokenIndex = position776, tokenIndex776 } - l778: + l777: if buffer[position] != rune(']') { - goto l775 + goto l774 } position++ { - position810, tokenIndex810 := position, tokenIndex + position809, tokenIndex809 := position, tokenIndex if !_rules[ruleARMPostincrement]() { - goto l810 + goto l809 } - goto l811 - l810: - position, tokenIndex = position810, tokenIndex810 + goto l810 + l809: + position, tokenIndex = position809, tokenIndex809 } - l811: - add(ruleARMBaseIndexScale, position776) + l810: + add(ruleARMBaseIndexScale, position775) } + memoize(46, position774, tokenIndex774, true) return true - l775: - position, tokenIndex = position775, tokenIndex775 + l774: + memoize(46, position774, tokenIndex774, false) + position, tokenIndex = position774, tokenIndex774 return false }, /* 47 ARMGOTLow12 <- <(':' ('g' / 'G') ('o' / 'O') ('t' / 'T') '_' ('l' / 'L') ('o' / 'O') '1' '2' ':' SymbolName)> */ func() bool { - position812, tokenIndex812 := position, tokenIndex + if memoized, ok := memoization[memoKey{47, position}]; ok { + return memoizedResult(memoized) + } + position811, tokenIndex811 := position, tokenIndex { - position813 := position + position812 := position if buffer[position] != rune(':') { - goto l812 + goto l811 } position++ { - position814, tokenIndex814 := position, tokenIndex + position813, tokenIndex813 := position, tokenIndex if buffer[position] != rune('g') { - goto l815 + goto l814 } position++ - goto l814 - l815: - position, tokenIndex = position814, tokenIndex814 + goto l813 + l814: + position, tokenIndex = position813, tokenIndex813 if buffer[position] != rune('G') { - goto l812 + goto l811 } position++ } - l814: + l813: { - position816, tokenIndex816 := position, tokenIndex + position815, tokenIndex815 := position, tokenIndex if buffer[position] != rune('o') { - goto l817 + goto l816 } position++ - goto l816 - l817: - position, tokenIndex = position816, tokenIndex816 + goto l815 + l816: + position, tokenIndex = position815, tokenIndex815 if buffer[position] != rune('O') { - goto l812 + goto l811 } position++ } - l816: + l815: { - position818, tokenIndex818 := position, tokenIndex + position817, tokenIndex817 := position, tokenIndex if buffer[position] != rune('t') { - goto l819 + goto l818 } position++ - goto l818 - l819: - position, tokenIndex = position818, tokenIndex818 + goto l817 + l818: + position, tokenIndex = position817, tokenIndex817 if buffer[position] != rune('T') { - goto l812 + goto l811 } position++ } - l818: + l817: if buffer[position] != rune('_') { - goto l812 + goto l811 } position++ { - position820, tokenIndex820 := position, tokenIndex + position819, tokenIndex819 := position, tokenIndex if buffer[position] != rune('l') { - goto l821 + goto l820 } position++ - goto l820 - l821: - position, tokenIndex = position820, tokenIndex820 + goto l819 + l820: + position, tokenIndex = position819, tokenIndex819 if buffer[position] != rune('L') { - goto l812 + goto l811 } position++ } - l820: + l819: { - position822, tokenIndex822 := position, tokenIndex + position821, tokenIndex821 := position, tokenIndex if buffer[position] != rune('o') { - goto l823 + goto l822 } position++ - goto l822 - l823: - position, tokenIndex = position822, tokenIndex822 + goto l821 + l822: + position, tokenIndex = position821, tokenIndex821 if buffer[position] != rune('O') { - goto l812 + goto l811 } position++ } - l822: + l821: if buffer[position] != rune('1') { - goto l812 + goto l811 } position++ if buffer[position] != rune('2') { - goto l812 + goto l811 } position++ if buffer[position] != rune(':') { - goto l812 + goto l811 } position++ if !_rules[ruleSymbolName]() { - goto l812 + goto l811 } - add(ruleARMGOTLow12, position813) + add(ruleARMGOTLow12, position812) } + memoize(47, position811, tokenIndex811, true) return true - l812: - position, tokenIndex = position812, tokenIndex812 + l811: + memoize(47, position811, tokenIndex811, false) + position, tokenIndex = position811, tokenIndex811 return false }, /* 48 ARMPostincrement <- <'!'> */ func() bool { - position824, tokenIndex824 := position, tokenIndex + if memoized, ok := memoization[memoKey{48, position}]; ok { + return memoizedResult(memoized) + } + position823, tokenIndex823 := position, tokenIndex { - position825 := position + position824 := position if buffer[position] != rune('!') { - goto l824 + goto l823 } position++ - add(ruleARMPostincrement, position825) + add(ruleARMPostincrement, position824) } + memoize(48, position823, tokenIndex823, true) return true - l824: - position, tokenIndex = position824, tokenIndex824 + l823: + memoize(48, position823, tokenIndex823, false) + position, tokenIndex = position823, tokenIndex823 return false }, /* 49 BaseIndexScale <- <('(' RegisterOrConstant? WS? (',' WS? RegisterOrConstant WS? (',' [0-9]+)?)? ')')> */ func() bool { - position826, tokenIndex826 := position, tokenIndex + if memoized, ok := memoization[memoKey{49, position}]; ok { + return memoizedResult(memoized) + } + position825, tokenIndex825 := position, tokenIndex { - position827 := position + position826 := position if buffer[position] != rune('(') { - goto l826 + goto l825 } position++ { - position828, tokenIndex828 := position, tokenIndex + position827, tokenIndex827 := position, tokenIndex if !_rules[ruleRegisterOrConstant]() { - goto l828 + goto l827 } - goto l829 - l828: - position, tokenIndex = position828, tokenIndex828 + goto l828 + l827: + position, tokenIndex = position827, tokenIndex827 } - l829: + l828: { - position830, tokenIndex830 := position, tokenIndex + position829, tokenIndex829 := position, tokenIndex if !_rules[ruleWS]() { - goto l830 + goto l829 } - goto l831 - l830: - position, tokenIndex = position830, tokenIndex830 + goto l830 + l829: + position, tokenIndex = position829, tokenIndex829 } - l831: + l830: { - position832, tokenIndex832 := position, tokenIndex + position831, tokenIndex831 := position, tokenIndex if buffer[position] != rune(',') { - goto l832 + goto l831 } position++ { - position834, tokenIndex834 := position, tokenIndex + position833, tokenIndex833 := position, tokenIndex if !_rules[ruleWS]() { - goto l834 + goto l833 } - goto l835 - l834: - position, tokenIndex = position834, tokenIndex834 + goto l834 + l833: + position, tokenIndex = position833, tokenIndex833 } - l835: + l834: if !_rules[ruleRegisterOrConstant]() { - goto l832 + goto l831 } { - position836, tokenIndex836 := position, tokenIndex + position835, tokenIndex835 := position, tokenIndex if !_rules[ruleWS]() { - goto l836 + goto l835 } - goto l837 - l836: - position, tokenIndex = position836, tokenIndex836 + goto l836 + l835: + position, tokenIndex = position835, tokenIndex835 } - l837: + l836: { - position838, tokenIndex838 := position, tokenIndex + position837, tokenIndex837 := position, tokenIndex if buffer[position] != rune(',') { - goto l838 + goto l837 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l838 + goto l837 } position++ - l840: + l839: { - position841, tokenIndex841 := position, tokenIndex + position840, tokenIndex840 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l841 + goto l840 } position++ - goto l840 - l841: - position, tokenIndex = position841, tokenIndex841 + goto l839 + l840: + position, tokenIndex = position840, tokenIndex840 } - goto l839 - l838: - position, tokenIndex = position838, tokenIndex838 + goto l838 + l837: + position, tokenIndex = position837, tokenIndex837 } - l839: - goto l833 - l832: - position, tokenIndex = position832, tokenIndex832 + l838: + goto l832 + l831: + position, tokenIndex = position831, tokenIndex831 } - l833: + l832: if buffer[position] != rune(')') { - goto l826 + goto l825 } position++ - add(ruleBaseIndexScale, position827) + add(ruleBaseIndexScale, position826) } + memoize(49, position825, tokenIndex825, true) return true - l826: - position, tokenIndex = position826, tokenIndex826 + l825: + memoize(49, position825, tokenIndex825, false) + position, tokenIndex = position825, tokenIndex825 return false }, /* 50 Operator <- <('+' / '-')> */ func() bool { - position842, tokenIndex842 := position, tokenIndex + if memoized, ok := memoization[memoKey{50, position}]; ok { + return memoizedResult(memoized) + } + position841, tokenIndex841 := position, tokenIndex { - position843 := position + position842 := position { - position844, tokenIndex844 := position, tokenIndex + position843, tokenIndex843 := position, tokenIndex if buffer[position] != rune('+') { - goto l845 + goto l844 } position++ - goto l844 - l845: - position, tokenIndex = position844, tokenIndex844 + goto l843 + l844: + position, tokenIndex = position843, tokenIndex843 if buffer[position] != rune('-') { - goto l842 + goto l841 } position++ } - l844: - add(ruleOperator, position843) + l843: + add(ruleOperator, position842) } + memoize(50, position841, tokenIndex841, true) return true - l842: - position, tokenIndex = position842, tokenIndex842 + l841: + memoize(50, position841, tokenIndex841, false) + position, tokenIndex = position841, tokenIndex841 return false }, /* 51 OffsetOperator <- <('+' / '-' / '*')> */ func() bool { - position846, tokenIndex846 := position, tokenIndex + if memoized, ok := memoization[memoKey{51, position}]; ok { + return memoizedResult(memoized) + } + position845, tokenIndex845 := position, tokenIndex { - position847 := position + position846 := position { - position848, tokenIndex848 := position, tokenIndex + position847, tokenIndex847 := position, tokenIndex if buffer[position] != rune('+') { - goto l849 + goto l848 } position++ - goto l848 - l849: - position, tokenIndex = position848, tokenIndex848 + goto l847 + l848: + position, tokenIndex = position847, tokenIndex847 if buffer[position] != rune('-') { - goto l850 + goto l849 } position++ - goto l848 - l850: - position, tokenIndex = position848, tokenIndex848 + goto l847 + l849: + position, tokenIndex = position847, tokenIndex847 if buffer[position] != rune('*') { - goto l846 + goto l845 } position++ } - l848: - add(ruleOffsetOperator, position847) + l847: + add(ruleOffsetOperator, position846) } + memoize(51, position845, tokenIndex845, true) return true - l846: - position, tokenIndex = position846, tokenIndex846 + l845: + memoize(51, position845, tokenIndex845, false) + position, tokenIndex = position845, tokenIndex845 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]+ ')' OffsetOperator [0-9]+ !'x') / ('(' [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 { - position851, tokenIndex851 := position, tokenIndex + if memoized, ok := memoization[memoKey{52, position}]; ok { + return memoizedResult(memoized) + } + position850, tokenIndex850 := position, tokenIndex { - position852 := position + position851 := position { - position853, tokenIndex853 := position, tokenIndex + position852, tokenIndex852 := position, tokenIndex if buffer[position] != rune('+') { - goto l853 + goto l852 } position++ - goto l854 - l853: - position, tokenIndex = position853, tokenIndex853 + goto l853 + l852: + position, tokenIndex = position852, tokenIndex852 } - l854: + l853: { - position855, tokenIndex855 := position, tokenIndex + position854, tokenIndex854 := position, tokenIndex if buffer[position] != rune('-') { - goto l855 + goto l854 } position++ - goto l856 - l855: - position, tokenIndex = position855, tokenIndex855 + goto l855 + l854: + position, tokenIndex = position854, tokenIndex854 } - l856: + l855: { - position857, tokenIndex857 := position, tokenIndex + position856, tokenIndex856 := position, tokenIndex if buffer[position] != rune('0') { - goto l858 + goto l857 } position++ { - position859, tokenIndex859 := position, tokenIndex + position858, tokenIndex858 := position, tokenIndex if buffer[position] != rune('b') { - goto l860 + goto l859 } position++ - goto l859 - l860: - position, tokenIndex = position859, tokenIndex859 + goto l858 + l859: + position, tokenIndex = position858, tokenIndex858 if buffer[position] != rune('B') { - goto l858 + goto l857 } position++ } - l859: + l858: { - position863, tokenIndex863 := position, tokenIndex + position862, tokenIndex862 := position, tokenIndex if buffer[position] != rune('0') { - goto l864 + goto l863 } position++ - goto l863 - l864: - position, tokenIndex = position863, tokenIndex863 + goto l862 + l863: + position, tokenIndex = position862, tokenIndex862 if buffer[position] != rune('1') { - goto l858 + goto l857 } position++ } - l863: - l861: + l862: + l860: { - position862, tokenIndex862 := position, tokenIndex + position861, tokenIndex861 := position, tokenIndex { - position865, tokenIndex865 := position, tokenIndex + position864, tokenIndex864 := position, tokenIndex if buffer[position] != rune('0') { - goto l866 + goto l865 } position++ - goto l865 - l866: - position, tokenIndex = position865, tokenIndex865 + goto l864 + l865: + position, tokenIndex = position864, tokenIndex864 if buffer[position] != rune('1') { - goto l862 + goto l861 } position++ } - l865: - goto l861 - l862: - position, tokenIndex = position862, tokenIndex862 + l864: + goto l860 + l861: + position, tokenIndex = position861, tokenIndex861 } - goto l857 - l858: - position, tokenIndex = position857, tokenIndex857 + goto l856 + l857: + position, tokenIndex = position856, tokenIndex856 if buffer[position] != rune('0') { - goto l867 + goto l866 } position++ { - position868, tokenIndex868 := position, tokenIndex + position867, tokenIndex867 := position, tokenIndex if buffer[position] != rune('x') { - goto l869 + goto l868 } position++ - goto l868 - l869: - position, tokenIndex = position868, tokenIndex868 + goto l867 + l868: + position, tokenIndex = position867, tokenIndex867 if buffer[position] != rune('X') { - goto l867 + goto l866 } position++ } - l868: + l867: { - position872, tokenIndex872 := position, tokenIndex + position871, tokenIndex871 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l873 + goto l872 } position++ - goto l872 - l873: - position, tokenIndex = position872, tokenIndex872 + goto l871 + l872: + position, tokenIndex = position871, tokenIndex871 if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l874 + goto l873 } position++ - goto l872 - l874: - position, tokenIndex = position872, tokenIndex872 + goto l871 + l873: + position, tokenIndex = position871, tokenIndex871 { - position875, tokenIndex875 := position, tokenIndex + position874, tokenIndex874 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('f') { - goto l876 + goto l875 } position++ - goto l875 - l876: - position, tokenIndex = position875, tokenIndex875 + goto l874 + l875: + position, tokenIndex = position874, tokenIndex874 if c := buffer[position]; c < rune('A') || c > rune('F') { - goto l867 + goto l866 } position++ } - l875: + l874: } - l872: - l870: + l871: + l869: { - position871, tokenIndex871 := position, tokenIndex + position870, tokenIndex870 := position, tokenIndex { - position877, tokenIndex877 := position, tokenIndex + position876, tokenIndex876 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l878 + goto l877 } position++ - goto l877 - l878: - position, tokenIndex = position877, tokenIndex877 + goto l876 + l877: + position, tokenIndex = position876, tokenIndex876 if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l879 + goto l878 } position++ - goto l877 - l879: - position, tokenIndex = position877, tokenIndex877 + goto l876 + l878: + position, tokenIndex = position876, tokenIndex876 { - position880, tokenIndex880 := position, tokenIndex + position879, tokenIndex879 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('f') { - goto l881 + goto l880 } position++ - goto l880 - l881: - position, tokenIndex = position880, tokenIndex880 + goto l879 + l880: + position, tokenIndex = position879, tokenIndex879 if c := buffer[position]; c < rune('A') || c > rune('F') { - goto l871 + goto l870 } position++ } - l880: + l879: } - l877: - goto l870 - l871: - position, tokenIndex = position871, tokenIndex871 + l876: + goto l869 + l870: + position, tokenIndex = position870, tokenIndex870 } - goto l857 - l867: - position, tokenIndex = position857, tokenIndex857 + goto l856 + l866: + position, tokenIndex = position856, tokenIndex856 { - position882, tokenIndex882 := position, tokenIndex + position881, tokenIndex881 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l883 + goto l882 } position++ - l884: + l883: { - position885, tokenIndex885 := position, tokenIndex + position884, tokenIndex884 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l885 + goto l884 } position++ - goto l884 - l885: - position, tokenIndex = position885, tokenIndex885 + goto l883 + l884: + position, tokenIndex = position884, tokenIndex884 } if !_rules[ruleWS]() { - goto l883 + goto l882 } if !_rules[ruleOffsetOperator]() { - goto l883 + goto l882 } if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l883 + goto l882 } position++ - l886: + l885: { - position887, tokenIndex887 := position, tokenIndex + position886, tokenIndex886 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l887 + goto l886 } position++ - goto l886 - l887: - position, tokenIndex = position887, tokenIndex887 + goto l885 + l886: + position, tokenIndex = position886, tokenIndex886 } - goto l882 - l883: - position, tokenIndex = position882, tokenIndex882 + goto l881 + l882: + position, tokenIndex = position881, tokenIndex881 if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l888 + goto l887 } position++ - l889: + l888: { - position890, tokenIndex890 := position, tokenIndex + position889, tokenIndex889 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l890 + goto l889 } position++ - goto l889 - l890: - position, tokenIndex = position890, tokenIndex890 + goto l888 + l889: + position, tokenIndex = position889, tokenIndex889 } { - position891, tokenIndex891 := position, tokenIndex + position890, tokenIndex890 := position, tokenIndex if !_rules[ruleOffsetOperator]() { - goto l891 + goto l890 } if buffer[position] != rune('(') { - goto l891 + goto l890 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l891 + goto l890 } position++ - l893: + l892: { - position894, tokenIndex894 := position, tokenIndex + position893, tokenIndex893 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l894 + goto l893 } position++ - goto l893 - l894: - position, tokenIndex = position894, tokenIndex894 + goto l892 + l893: + position, tokenIndex = position893, tokenIndex893 } if !_rules[ruleOffsetOperator]() { - goto l891 + goto l890 } if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l891 + goto l890 } position++ - l895: + l894: { - position896, tokenIndex896 := position, tokenIndex + position895, tokenIndex895 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l896 + goto l895 } position++ - goto l895 - l896: - position, tokenIndex = position896, tokenIndex896 + goto l894 + l895: + position, tokenIndex = position895, tokenIndex895 } if buffer[position] != rune(')') { - goto l891 + goto l890 } position++ - goto l892 - l891: - position, tokenIndex = position891, tokenIndex891 + goto l891 + l890: + position, tokenIndex = position890, tokenIndex890 } - l892: - goto l882 - l888: - position, tokenIndex = position882, tokenIndex882 + l891: + goto l881 + l887: + position, tokenIndex = position881, tokenIndex881 if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l897 + goto l896 } position++ - l898: + l897: { - position899, tokenIndex899 := position, tokenIndex + position898, tokenIndex898 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l899 + goto l898 } position++ - goto l898 - l899: - position, tokenIndex = position899, tokenIndex899 + goto l897 + l898: + position, tokenIndex = position898, tokenIndex898 } { - position900, tokenIndex900 := position, tokenIndex + position899, tokenIndex899 := position, tokenIndex if !_rules[ruleOffsetOperator]() { - goto l900 + goto l899 } if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l900 + goto l899 } position++ - l902: + l901: { - position903, tokenIndex903 := position, tokenIndex + position902, tokenIndex902 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l903 + goto l902 } position++ - goto l902 - l903: - position, tokenIndex = position903, tokenIndex903 + goto l901 + l902: + position, tokenIndex = position902, tokenIndex902 } if !_rules[ruleOffsetOperator]() { - goto l900 + goto l899 } if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l900 + goto l899 } position++ - l904: + l903: { - position905, tokenIndex905 := position, tokenIndex + position904, tokenIndex904 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l905 + goto l904 } position++ - goto l904 - l905: - position, tokenIndex = position905, tokenIndex905 + goto l903 + l904: + position, tokenIndex = position904, tokenIndex904 } - goto l901 - l900: - position, tokenIndex = position900, tokenIndex900 + goto l900 + l899: + position, tokenIndex = position899, tokenIndex899 } - l901: - goto l882 - l897: - position, tokenIndex = position882, tokenIndex882 + l900: + goto l881 + l896: + position, tokenIndex = position881, tokenIndex881 if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l906 + goto l905 } position++ - l907: + l906: { - position908, tokenIndex908 := position, tokenIndex + position907, tokenIndex907 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l908 + goto l907 } position++ - goto l907 - l908: - position, tokenIndex = position908, tokenIndex908 + goto l906 + l907: + position, tokenIndex = position907, tokenIndex907 } { - position909, tokenIndex909 := position, tokenIndex + position908, tokenIndex908 := position, tokenIndex if !_rules[ruleOffsetOperator]() { - goto l909 + goto l908 } if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l909 + goto l908 } position++ - l911: + l910: { - position912, tokenIndex912 := position, tokenIndex + position911, tokenIndex911 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l912 + goto l911 } position++ - goto l911 - l912: - position, tokenIndex = position912, tokenIndex912 + goto l910 + l911: + position, tokenIndex = position911, tokenIndex911 } - goto l910 - l909: - position, tokenIndex = position909, tokenIndex909 + goto l909 + l908: + position, tokenIndex = position908, tokenIndex908 } - l910: - goto l882 - l906: - position, tokenIndex = position882, tokenIndex882 + l909: + goto l881 + l905: + position, tokenIndex = position881, tokenIndex881 if buffer[position] != rune('(') { - goto l913 + goto l912 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l913 + goto l912 } position++ - l914: + l913: { - position915, tokenIndex915 := position, tokenIndex + position914, tokenIndex914 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l915 + goto l914 } position++ - goto l914 - l915: - position, tokenIndex = position915, tokenIndex915 + goto l913 + l914: + position, tokenIndex = position914, tokenIndex914 } { - position916, tokenIndex916 := position, tokenIndex + position915, tokenIndex915 := position, tokenIndex if !_rules[ruleWS]() { - goto l916 + goto l915 } - goto l917 - l916: - position, tokenIndex = position916, tokenIndex916 + goto l916 + l915: + position, tokenIndex = position915, tokenIndex915 } - l917: + l916: if !_rules[ruleOffsetOperator]() { - goto l913 + goto l912 } { - position918, tokenIndex918 := position, tokenIndex + position917, tokenIndex917 := position, tokenIndex if !_rules[ruleWS]() { - goto l918 + goto l917 } - goto l919 - l918: - position, tokenIndex = position918, tokenIndex918 + goto l918 + l917: + position, tokenIndex = position917, tokenIndex917 } - l919: + l918: if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l913 + goto l912 } position++ - l920: + l919: { - position921, tokenIndex921 := position, tokenIndex + position920, tokenIndex920 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l921 + goto l920 } position++ - goto l920 - l921: - position, tokenIndex = position921, tokenIndex921 + goto l919 + l920: + position, tokenIndex = position920, tokenIndex920 } if buffer[position] != rune(')') { - goto l913 + goto l912 } position++ if !_rules[ruleOffsetOperator]() { - goto l913 + goto l912 } if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l913 + goto l912 } position++ - l922: + l921: { - position923, tokenIndex923 := position, tokenIndex + position922, tokenIndex922 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l923 + goto l922 } position++ - goto l922 - l923: - position, tokenIndex = position923, tokenIndex923 + goto l921 + l922: + position, tokenIndex = position922, tokenIndex922 } if !_rules[ruleOffsetOperator]() { - goto l913 + goto l912 } if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l913 + goto l912 } position++ - l924: + l923: { - position925, tokenIndex925 := position, tokenIndex + position924, tokenIndex924 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l925 + goto l924 } position++ - goto l924 - l925: - position, tokenIndex = position925, tokenIndex925 + goto l923 + l924: + position, tokenIndex = position924, tokenIndex924 } - goto l882 - l913: - position, tokenIndex = position882, tokenIndex882 + goto l881 + l912: + position, tokenIndex = position881, tokenIndex881 if buffer[position] != rune('(') { - goto l926 + goto l925 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l926 + goto l925 } position++ - l927: + l926: { - position928, tokenIndex928 := position, tokenIndex + position927, tokenIndex927 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l928 + goto l927 } position++ - goto l927 - l928: - position, tokenIndex = position928, tokenIndex928 + goto l926 + l927: + position, tokenIndex = position927, tokenIndex927 } { - position929, tokenIndex929 := position, tokenIndex + position928, tokenIndex928 := position, tokenIndex if !_rules[ruleWS]() { - goto l929 + goto l928 } - goto l930 - l929: - position, tokenIndex = position929, tokenIndex929 + goto l929 + l928: + position, tokenIndex = position928, tokenIndex928 } - l930: + l929: if !_rules[ruleOffsetOperator]() { - goto l926 + goto l925 } { - position931, tokenIndex931 := position, tokenIndex + position930, tokenIndex930 := position, tokenIndex if !_rules[ruleWS]() { - goto l931 + goto l930 } - goto l932 - l931: - position, tokenIndex = position931, tokenIndex931 + goto l931 + l930: + position, tokenIndex = position930, tokenIndex930 } - l932: + l931: if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l926 + goto l925 } position++ - l933: + l932: { - position934, tokenIndex934 := position, tokenIndex + position933, tokenIndex933 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l934 + goto l933 } position++ - goto l933 - l934: - position, tokenIndex = position934, tokenIndex934 + goto l932 + l933: + position, tokenIndex = position933, tokenIndex933 } if buffer[position] != rune(')') { - goto l926 + goto l925 } position++ if !_rules[ruleOffsetOperator]() { - goto l926 + goto l925 } if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l926 + goto l925 } position++ - l935: + l934: { - position936, tokenIndex936 := position, tokenIndex + position935, tokenIndex935 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l936 + goto l935 } position++ - goto l935 - l936: - position, tokenIndex = position936, tokenIndex936 + goto l934 + l935: + position, tokenIndex = position935, tokenIndex935 } { - position937, tokenIndex937 := position, tokenIndex + position936, tokenIndex936 := position, tokenIndex if buffer[position] != rune('x') { - goto l937 + goto l936 } position++ - goto l926 - l937: - position, tokenIndex = position937, tokenIndex937 + goto l925 + l936: + position, tokenIndex = position936, tokenIndex936 } - goto l882 - l926: - position, tokenIndex = position882, tokenIndex882 + goto l881 + l925: + position, tokenIndex = position881, tokenIndex881 if buffer[position] != rune('(') { - goto l938 + goto l937 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l938 + goto l937 } position++ - l939: + l938: { - position940, tokenIndex940 := position, tokenIndex + position939, tokenIndex939 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l940 + goto l939 } position++ - goto l939 - l940: - position, tokenIndex = position940, tokenIndex940 + goto l938 + l939: + position, tokenIndex = position939, tokenIndex939 } { - position941, tokenIndex941 := position, tokenIndex + position940, tokenIndex940 := position, tokenIndex if !_rules[ruleWS]() { - goto l941 + goto l940 } - goto l942 - l941: - position, tokenIndex = position941, tokenIndex941 + goto l941 + l940: + position, tokenIndex = position940, tokenIndex940 } - l942: + l941: if !_rules[ruleOffsetOperator]() { - goto l938 + goto l937 } { - position943, tokenIndex943 := position, tokenIndex + position942, tokenIndex942 := position, tokenIndex if !_rules[ruleWS]() { - goto l943 + goto l942 } - goto l944 - l943: - position, tokenIndex = position943, tokenIndex943 + goto l943 + l942: + position, tokenIndex = position942, tokenIndex942 } - l944: + l943: if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l938 + goto l937 } position++ - l945: + l944: { - position946, tokenIndex946 := position, tokenIndex + position945, tokenIndex945 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l946 + goto l945 } position++ - goto l945 - l946: - position, tokenIndex = position946, tokenIndex946 + goto l944 + l945: + position, tokenIndex = position945, tokenIndex945 } if buffer[position] != rune(')') { - goto l938 + goto l937 } position++ - goto l882 - l938: - position, tokenIndex = position882, tokenIndex882 + goto l881 + l937: + position, tokenIndex = position881, tokenIndex881 if buffer[position] != rune('(') { - goto l851 + goto l850 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l851 + goto l850 } position++ - l947: + l946: { - position948, tokenIndex948 := position, tokenIndex + position947, tokenIndex947 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l948 + goto l947 } position++ - goto l947 - l948: - position, tokenIndex = position948, tokenIndex948 + goto l946 + l947: + position, tokenIndex = position947, tokenIndex947 } { - position949, tokenIndex949 := position, tokenIndex + position948, tokenIndex948 := position, tokenIndex if !_rules[ruleWS]() { - goto l949 + goto l948 } - goto l950 - l949: - position, tokenIndex = position949, tokenIndex949 + goto l949 + l948: + position, tokenIndex = position948, tokenIndex948 } - l950: + l949: if !_rules[ruleOffsetOperator]() { - goto l851 + goto l850 } { - position951, tokenIndex951 := position, tokenIndex + position950, tokenIndex950 := position, tokenIndex if !_rules[ruleWS]() { - goto l951 + goto l950 } - goto l952 - l951: - position, tokenIndex = position951, tokenIndex951 + goto l951 + l950: + position, tokenIndex = position950, tokenIndex950 } - l952: + l951: if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l851 + goto l850 } position++ - l953: + l952: { - position954, tokenIndex954 := position, tokenIndex + position953, tokenIndex953 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l954 + goto l953 } position++ - goto l953 - l954: - position, tokenIndex = position954, tokenIndex954 + goto l952 + l953: + position, tokenIndex = position953, tokenIndex953 } { - position955, tokenIndex955 := position, tokenIndex + position954, tokenIndex954 := position, tokenIndex if !_rules[ruleWS]() { - goto l955 + goto l954 } - goto l956 - l955: - position, tokenIndex = position955, tokenIndex955 + goto l955 + l954: + position, tokenIndex = position954, tokenIndex954 } - l956: + l955: if !_rules[ruleOffsetOperator]() { - goto l851 + goto l850 } { - position957, tokenIndex957 := position, tokenIndex + position956, tokenIndex956 := position, tokenIndex if !_rules[ruleWS]() { - goto l957 + goto l956 } - goto l958 - l957: - position, tokenIndex = position957, tokenIndex957 + goto l957 + l956: + position, tokenIndex = position956, tokenIndex956 } - l958: + l957: if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l851 + goto l850 } position++ - l959: + l958: { - position960, tokenIndex960 := position, tokenIndex + position959, tokenIndex959 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l960 + goto l959 } position++ - goto l959 - l960: - position, tokenIndex = position960, tokenIndex960 + goto l958 + l959: + position, tokenIndex = position959, tokenIndex959 } if buffer[position] != rune(')') { - goto l851 + goto l850 } position++ } - l882: + l881: { - position961, tokenIndex961 := position, tokenIndex + position960, tokenIndex960 := position, tokenIndex { - position962, tokenIndex962 := position, tokenIndex + position961, tokenIndex961 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { - goto l963 + goto l962 } position++ - goto l962 - l963: - position, tokenIndex = position962, tokenIndex962 + goto l961 + l962: + position, tokenIndex = position961, tokenIndex961 if c := buffer[position]; c < rune('A') || c > rune('Z') { - goto l961 + goto l960 } position++ } - l962: - goto l851 l961: - position, tokenIndex = position961, tokenIndex961 + goto l850 + l960: + position, tokenIndex = position960, tokenIndex960 } } - l857: - add(ruleOffset, position852) + l856: + add(ruleOffset, position851) } + memoize(52, position850, tokenIndex850, true) return true - l851: - position, tokenIndex = position851, tokenIndex851 + l850: + memoize(52, position850, tokenIndex850, false) + position, tokenIndex = position850, tokenIndex850 return false }, /* 53 Section <- <([a-z] / [A-Z] / '@')+> */ func() bool { - position964, tokenIndex964 := position, tokenIndex + if memoized, ok := memoization[memoKey{53, position}]; ok { + return memoizedResult(memoized) + } + position963, tokenIndex963 := position, tokenIndex { - position965 := position + position964 := position { - position968, tokenIndex968 := position, tokenIndex + position967, tokenIndex967 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { - goto l969 + goto l968 } position++ - goto l968 - l969: - position, tokenIndex = position968, tokenIndex968 + goto l967 + l968: + position, tokenIndex = position967, tokenIndex967 if c := buffer[position]; c < rune('A') || c > rune('Z') { - goto l970 + goto l969 } position++ - goto l968 - l970: - position, tokenIndex = position968, tokenIndex968 + goto l967 + l969: + position, tokenIndex = position967, tokenIndex967 if buffer[position] != rune('@') { - goto l964 + goto l963 } position++ } - l968: - l966: + l967: + l965: { - position967, tokenIndex967 := position, tokenIndex + position966, tokenIndex966 := position, tokenIndex { - position971, tokenIndex971 := position, tokenIndex + position970, tokenIndex970 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { - goto l972 + goto l971 } position++ - goto l971 - l972: - position, tokenIndex = position971, tokenIndex971 + goto l970 + l971: + position, tokenIndex = position970, tokenIndex970 if c := buffer[position]; c < rune('A') || c > rune('Z') { - goto l973 + goto l972 } position++ - goto l971 - l973: - position, tokenIndex = position971, tokenIndex971 + goto l970 + l972: + position, tokenIndex = position970, tokenIndex970 if buffer[position] != rune('@') { - goto l967 + goto l966 } position++ } - l971: - goto l966 - l967: - position, tokenIndex = position967, tokenIndex967 + l970: + goto l965 + l966: + position, tokenIndex = position966, tokenIndex966 } - add(ruleSection, position965) + add(ruleSection, position964) } + memoize(53, position963, tokenIndex963, true) return true - l964: - position, tokenIndex = position964, tokenIndex964 + l963: + memoize(53, position963, tokenIndex963, false) + position, tokenIndex = position963, tokenIndex963 return false }, /* 54 SegmentRegister <- <('%' ([c-g] / 's') ('s' ':'))> */ func() bool { - position974, tokenIndex974 := position, tokenIndex + if memoized, ok := memoization[memoKey{54, position}]; ok { + return memoizedResult(memoized) + } + position973, tokenIndex973 := position, tokenIndex { - position975 := position + position974 := position if buffer[position] != rune('%') { - goto l974 + goto l973 } position++ { - position976, tokenIndex976 := position, tokenIndex + position975, tokenIndex975 := position, tokenIndex if c := buffer[position]; c < rune('c') || c > rune('g') { - goto l977 + goto l976 } position++ - goto l976 - l977: - position, tokenIndex = position976, tokenIndex976 + goto l975 + l976: + position, tokenIndex = position975, tokenIndex975 if buffer[position] != rune('s') { - goto l974 + goto l973 } position++ } - l976: + l975: if buffer[position] != rune('s') { - goto l974 + goto l973 } position++ if buffer[position] != rune(':') { - goto l974 + goto l973 } position++ - add(ruleSegmentRegister, position975) + add(ruleSegmentRegister, position974) } + memoize(54, position973, tokenIndex973, true) return true - l974: - position, tokenIndex = position974, tokenIndex974 + l973: + memoize(54, position973, tokenIndex973, false) + position, tokenIndex = position973, tokenIndex973 return false }, }