in src/util/fipstools/delocate/delocate.peg.go [326:6401]
func (p *Asm) Init() {
var (
max token32
position, tokenIndex uint32
buffer []rune
)
p.reset = func() {
max = token32{}
position, tokenIndex = 0, 0
p.buffer = []rune(p.Buffer)
if len(p.buffer) == 0 || p.buffer[len(p.buffer)-1] != endSymbol {
p.buffer = append(p.buffer, endSymbol)
}
buffer = p.buffer
}
p.reset()
_rules := p.rules
tree := tokens32{tree: make([]token32, math.MaxInt16)}
p.parse = func(rule ...int) error {
r := 1
if len(rule) > 0 {
r = rule[0]
}
matches := p.rules[r]()
p.tokens32 = tree
if matches {
p.Trim(tokenIndex)
return nil
}
return &parseError{p, max}
}
add := func(rule pegRule, begin uint32) {
tree.Add(rule, begin, position, tokenIndex)
tokenIndex++
if begin != position && position > max.end {
max = token32{rule, begin, position}
}
}
matchDot := func() bool {
if buffer[position] != endSymbol {
position++
return true
}
return false
}
/*matchChar := func(c byte) bool {
if buffer[position] == c {
position++
return true
}
return false
}*/
/*matchRange := func(lower byte, upper byte) bool {
if c := buffer[position]; c >= lower && c <= upper {
position++
return true
}
return false
}*/
_rules = [...]func() bool{
nil,
/* 0 AsmFile <- <(Statement* !.)> */
func() bool {
position0, tokenIndex0 := position, tokenIndex
{
position1 := position
l2:
{
position3, tokenIndex3 := position, tokenIndex
if !_rules[ruleStatement]() {
goto l3
}
goto l2
l3:
position, tokenIndex = position3, tokenIndex3
}
{
position4, tokenIndex4 := position, tokenIndex
if !matchDot() {
goto l4
}
goto l0
l4:
position, tokenIndex = position4, tokenIndex4
}
add(ruleAsmFile, position1)
}
return true
l0:
position, tokenIndex = position0, tokenIndex0
return false
},
/* 1 Statement <- <(WS? (Label / ((GlobalDirective / LocationDirective / LabelContainingDirective / Instruction / Directive / Comment / ) WS? ((Comment? '\n') / ';'))))> */
func() bool {
position5, tokenIndex5 := position, tokenIndex
{
position6 := position
{
position7, tokenIndex7 := position, tokenIndex
if !_rules[ruleWS]() {
goto l7
}
goto l8
l7:
position, tokenIndex = position7, tokenIndex7
}
l8:
{
position9, tokenIndex9 := position, tokenIndex
if !_rules[ruleLabel]() {
goto l10
}
goto l9
l10:
position, tokenIndex = position9, tokenIndex9
{
position11, tokenIndex11 := position, tokenIndex
if !_rules[ruleGlobalDirective]() {
goto l12
}
goto l11
l12:
position, tokenIndex = position11, tokenIndex11
if !_rules[ruleLocationDirective]() {
goto l13
}
goto l11
l13:
position, tokenIndex = position11, tokenIndex11
if !_rules[ruleLabelContainingDirective]() {
goto l14
}
goto l11
l14:
position, tokenIndex = position11, tokenIndex11
if !_rules[ruleInstruction]() {
goto l15
}
goto l11
l15:
position, tokenIndex = position11, tokenIndex11
if !_rules[ruleDirective]() {
goto l16
}
goto l11
l16:
position, tokenIndex = position11, tokenIndex11
if !_rules[ruleComment]() {
goto l17
}
goto l11
l17:
position, tokenIndex = position11, tokenIndex11
}
l11:
{
position18, tokenIndex18 := position, tokenIndex
if !_rules[ruleWS]() {
goto l18
}
goto l19
l18:
position, tokenIndex = position18, tokenIndex18
}
l19:
{
position20, tokenIndex20 := position, tokenIndex
{
position22, tokenIndex22 := position, tokenIndex
if !_rules[ruleComment]() {
goto l22
}
goto l23
l22:
position, tokenIndex = position22, tokenIndex22
}
l23:
if buffer[position] != rune('\n') {
goto l21
}
position++
goto l20
l21:
position, tokenIndex = position20, tokenIndex20
if buffer[position] != rune(';') {
goto l5
}
position++
}
l20:
}
l9:
add(ruleStatement, position6)
}
return true
l5:
position, tokenIndex = position5, tokenIndex5
return false
},
/* 2 GlobalDirective <- <((('.' ('g' / 'G') ('l' / 'L') ('o' / 'O') ('b' / 'B') ('a' / 'A') ('l' / 'L')) / ('.' ('g' / 'G') ('l' / 'L') ('o' / 'O') ('b' / 'B') ('l' / 'L'))) WS SymbolName)> */
func() bool {
position24, tokenIndex24 := position, tokenIndex
{
position25 := position
{
position26, tokenIndex26 := position, tokenIndex
if buffer[position] != rune('.') {
goto l27
}
position++
{
position28, tokenIndex28 := position, tokenIndex
if buffer[position] != rune('g') {
goto l29
}
position++
goto l28
l29:
position, tokenIndex = position28, tokenIndex28
if buffer[position] != rune('G') {
goto l27
}
position++
}
l28:
{
position30, tokenIndex30 := position, tokenIndex
if buffer[position] != rune('l') {
goto l31
}
position++
goto l30
l31:
position, tokenIndex = position30, tokenIndex30
if buffer[position] != rune('L') {
goto l27
}
position++
}
l30:
{
position32, tokenIndex32 := position, tokenIndex
if buffer[position] != rune('o') {
goto l33
}
position++
goto l32
l33:
position, tokenIndex = position32, tokenIndex32
if buffer[position] != rune('O') {
goto l27
}
position++
}
l32:
{
position34, tokenIndex34 := position, tokenIndex
if buffer[position] != rune('b') {
goto l35
}
position++
goto l34
l35:
position, tokenIndex = position34, tokenIndex34
if buffer[position] != rune('B') {
goto l27
}
position++
}
l34:
{
position36, tokenIndex36 := position, tokenIndex
if buffer[position] != rune('a') {
goto l37
}
position++
goto l36
l37:
position, tokenIndex = position36, tokenIndex36
if buffer[position] != rune('A') {
goto l27
}
position++
}
l36:
{
position38, tokenIndex38 := position, tokenIndex
if buffer[position] != rune('l') {
goto l39
}
position++
goto l38
l39:
position, tokenIndex = position38, tokenIndex38
if buffer[position] != rune('L') {
goto l27
}
position++
}
l38:
goto l26
l27:
position, tokenIndex = position26, tokenIndex26
if buffer[position] != rune('.') {
goto l24
}
position++
{
position40, tokenIndex40 := position, tokenIndex
if buffer[position] != rune('g') {
goto l41
}
position++
goto l40
l41:
position, tokenIndex = position40, tokenIndex40
if buffer[position] != rune('G') {
goto l24
}
position++
}
l40:
{
position42, tokenIndex42 := position, tokenIndex
if buffer[position] != rune('l') {
goto l43
}
position++
goto l42
l43:
position, tokenIndex = position42, tokenIndex42
if buffer[position] != rune('L') {
goto l24
}
position++
}
l42:
{
position44, tokenIndex44 := position, tokenIndex
if buffer[position] != rune('o') {
goto l45
}
position++
goto l44
l45:
position, tokenIndex = position44, tokenIndex44
if buffer[position] != rune('O') {
goto l24
}
position++
}
l44:
{
position46, tokenIndex46 := position, tokenIndex
if buffer[position] != rune('b') {
goto l47
}
position++
goto l46
l47:
position, tokenIndex = position46, tokenIndex46
if buffer[position] != rune('B') {
goto l24
}
position++
}
l46:
{
position48, tokenIndex48 := position, tokenIndex
if buffer[position] != rune('l') {
goto l49
}
position++
goto l48
l49:
position, tokenIndex = position48, tokenIndex48
if buffer[position] != rune('L') {
goto l24
}
position++
}
l48:
}
l26:
if !_rules[ruleWS]() {
goto l24
}
if !_rules[ruleSymbolName]() {
goto l24
}
add(ruleGlobalDirective, position25)
}
return true
l24:
position, tokenIndex = position24, tokenIndex24
return false
},
/* 3 Directive <- <('.' DirectiveName (WS Args)?)> */
func() bool {
position50, tokenIndex50 := position, tokenIndex
{
position51 := position
if buffer[position] != rune('.') {
goto l50
}
position++
if !_rules[ruleDirectiveName]() {
goto l50
}
{
position52, tokenIndex52 := position, tokenIndex
if !_rules[ruleWS]() {
goto l52
}
if !_rules[ruleArgs]() {
goto l52
}
goto l53
l52:
position, tokenIndex = position52, tokenIndex52
}
l53:
add(ruleDirective, position51)
}
return true
l50:
position, tokenIndex = position50, tokenIndex50
return false
},
/* 4 DirectiveName <- <([a-z] / [A-Z] / ([0-9] / [0-9]) / '_')+> */
func() bool {
position54, tokenIndex54 := position, tokenIndex
{
position55 := position
{
position58, tokenIndex58 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l59
}
position++
goto l58
l59:
position, tokenIndex = position58, tokenIndex58
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l60
}
position++
goto l58
l60:
position, tokenIndex = position58, tokenIndex58
{
position62, tokenIndex62 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l63
}
position++
goto l62
l63:
position, tokenIndex = position62, tokenIndex62
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l61
}
position++
}
l62:
goto l58
l61:
position, tokenIndex = position58, tokenIndex58
if buffer[position] != rune('_') {
goto l54
}
position++
}
l58:
l56:
{
position57, tokenIndex57 := position, tokenIndex
{
position64, tokenIndex64 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l65
}
position++
goto l64
l65:
position, tokenIndex = position64, tokenIndex64
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l66
}
position++
goto l64
l66:
position, tokenIndex = position64, tokenIndex64
{
position68, tokenIndex68 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l69
}
position++
goto l68
l69:
position, tokenIndex = position68, tokenIndex68
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l67
}
position++
}
l68:
goto l64
l67:
position, tokenIndex = position64, tokenIndex64
if buffer[position] != rune('_') {
goto l57
}
position++
}
l64:
goto l56
l57:
position, tokenIndex = position57, tokenIndex57
}
add(ruleDirectiveName, position55)
}
return true
l54:
position, tokenIndex = position54, tokenIndex54
return false
},
/* 5 LocationDirective <- <(FileDirective / LocDirective)> */
func() bool {
position70, tokenIndex70 := position, tokenIndex
{
position71 := position
{
position72, tokenIndex72 := position, tokenIndex
if !_rules[ruleFileDirective]() {
goto l73
}
goto l72
l73:
position, tokenIndex = position72, tokenIndex72
if !_rules[ruleLocDirective]() {
goto l70
}
}
l72:
add(ruleLocationDirective, position71)
}
return true
l70:
position, tokenIndex = position70, tokenIndex70
return false
},
/* 6 FileDirective <- <('.' ('f' / 'F') ('i' / 'I') ('l' / 'L') ('e' / 'E') WS (!('#' / '\n') .)+)> */
func() bool {
position74, tokenIndex74 := position, tokenIndex
{
position75 := position
if buffer[position] != rune('.') {
goto l74
}
position++
{
position76, tokenIndex76 := position, tokenIndex
if buffer[position] != rune('f') {
goto l77
}
position++
goto l76
l77:
position, tokenIndex = position76, tokenIndex76
if buffer[position] != rune('F') {
goto l74
}
position++
}
l76:
{
position78, tokenIndex78 := position, tokenIndex
if buffer[position] != rune('i') {
goto l79
}
position++
goto l78
l79:
position, tokenIndex = position78, tokenIndex78
if buffer[position] != rune('I') {
goto l74
}
position++
}
l78:
{
position80, tokenIndex80 := position, tokenIndex
if buffer[position] != rune('l') {
goto l81
}
position++
goto l80
l81:
position, tokenIndex = position80, tokenIndex80
if buffer[position] != rune('L') {
goto l74
}
position++
}
l80:
{
position82, tokenIndex82 := position, tokenIndex
if buffer[position] != rune('e') {
goto l83
}
position++
goto l82
l83:
position, tokenIndex = position82, tokenIndex82
if buffer[position] != rune('E') {
goto l74
}
position++
}
l82:
if !_rules[ruleWS]() {
goto l74
}
{
position86, tokenIndex86 := position, tokenIndex
{
position87, tokenIndex87 := position, tokenIndex
if buffer[position] != rune('#') {
goto l88
}
position++
goto l87
l88:
position, tokenIndex = position87, tokenIndex87
if buffer[position] != rune('\n') {
goto l86
}
position++
}
l87:
goto l74
l86:
position, tokenIndex = position86, tokenIndex86
}
if !matchDot() {
goto l74
}
l84:
{
position85, tokenIndex85 := position, tokenIndex
{
position89, tokenIndex89 := position, tokenIndex
{
position90, tokenIndex90 := position, tokenIndex
if buffer[position] != rune('#') {
goto l91
}
position++
goto l90
l91:
position, tokenIndex = position90, tokenIndex90
if buffer[position] != rune('\n') {
goto l89
}
position++
}
l90:
goto l85
l89:
position, tokenIndex = position89, tokenIndex89
}
if !matchDot() {
goto l85
}
goto l84
l85:
position, tokenIndex = position85, tokenIndex85
}
add(ruleFileDirective, position75)
}
return true
l74:
position, tokenIndex = position74, tokenIndex74
return false
},
/* 7 LocDirective <- <('.' ('l' / 'L') ('o' / 'O') ('c' / 'C') WS (!('#' / '/' / '\n') .)+)> */
func() bool {
position92, tokenIndex92 := position, tokenIndex
{
position93 := position
if buffer[position] != rune('.') {
goto l92
}
position++
{
position94, tokenIndex94 := position, tokenIndex
if buffer[position] != rune('l') {
goto l95
}
position++
goto l94
l95:
position, tokenIndex = position94, tokenIndex94
if buffer[position] != rune('L') {
goto l92
}
position++
}
l94:
{
position96, tokenIndex96 := position, tokenIndex
if buffer[position] != rune('o') {
goto l97
}
position++
goto l96
l97:
position, tokenIndex = position96, tokenIndex96
if buffer[position] != rune('O') {
goto l92
}
position++
}
l96:
{
position98, tokenIndex98 := position, tokenIndex
if buffer[position] != rune('c') {
goto l99
}
position++
goto l98
l99:
position, tokenIndex = position98, tokenIndex98
if buffer[position] != rune('C') {
goto l92
}
position++
}
l98:
if !_rules[ruleWS]() {
goto l92
}
{
position102, tokenIndex102 := position, tokenIndex
{
position103, tokenIndex103 := position, tokenIndex
if buffer[position] != rune('#') {
goto l104
}
position++
goto l103
l104:
position, tokenIndex = position103, tokenIndex103
if buffer[position] != rune('/') {
goto l105
}
position++
goto l103
l105:
position, tokenIndex = position103, tokenIndex103
if buffer[position] != rune('\n') {
goto l102
}
position++
}
l103:
goto l92
l102:
position, tokenIndex = position102, tokenIndex102
}
if !matchDot() {
goto l92
}
l100:
{
position101, tokenIndex101 := position, tokenIndex
{
position106, tokenIndex106 := position, tokenIndex
{
position107, tokenIndex107 := position, tokenIndex
if buffer[position] != rune('#') {
goto l108
}
position++
goto l107
l108:
position, tokenIndex = position107, tokenIndex107
if buffer[position] != rune('/') {
goto l109
}
position++
goto l107
l109:
position, tokenIndex = position107, tokenIndex107
if buffer[position] != rune('\n') {
goto l106
}
position++
}
l107:
goto l101
l106:
position, tokenIndex = position106, tokenIndex106
}
if !matchDot() {
goto l101
}
goto l100
l101:
position, tokenIndex = position101, tokenIndex101
}
add(ruleLocDirective, position93)
}
return true
l92:
position, tokenIndex = position92, tokenIndex92
return false
},
/* 8 Args <- <(Arg (WS? ',' WS? Arg)*)> */
func() bool {
position110, tokenIndex110 := position, tokenIndex
{
position111 := position
if !_rules[ruleArg]() {
goto l110
}
l112:
{
position113, tokenIndex113 := position, tokenIndex
{
position114, tokenIndex114 := position, tokenIndex
if !_rules[ruleWS]() {
goto l114
}
goto l115
l114:
position, tokenIndex = position114, tokenIndex114
}
l115:
if buffer[position] != rune(',') {
goto l113
}
position++
{
position116, tokenIndex116 := position, tokenIndex
if !_rules[ruleWS]() {
goto l116
}
goto l117
l116:
position, tokenIndex = position116, tokenIndex116
}
l117:
if !_rules[ruleArg]() {
goto l113
}
goto l112
l113:
position, tokenIndex = position113, tokenIndex113
}
add(ruleArgs, position111)
}
return true
l110:
position, tokenIndex = position110, tokenIndex110
return false
},
/* 9 Arg <- <(QuotedArg / ([0-9] / [0-9] / ([a-z] / [A-Z]) / '%' / '+' / '-' / '*' / '_' / '@' / '.')*)> */
func() bool {
{
position119 := position
{
position120, tokenIndex120 := position, tokenIndex
if !_rules[ruleQuotedArg]() {
goto l121
}
goto l120
l121:
position, tokenIndex = position120, tokenIndex120
l122:
{
position123, tokenIndex123 := position, tokenIndex
{
position124, tokenIndex124 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l125
}
position++
goto l124
l125:
position, tokenIndex = position124, tokenIndex124
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l126
}
position++
goto l124
l126:
position, tokenIndex = position124, tokenIndex124
{
position128, tokenIndex128 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l129
}
position++
goto l128
l129:
position, tokenIndex = position128, tokenIndex128
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l127
}
position++
}
l128:
goto l124
l127:
position, tokenIndex = position124, tokenIndex124
if buffer[position] != rune('%') {
goto l130
}
position++
goto l124
l130:
position, tokenIndex = position124, tokenIndex124
if buffer[position] != rune('+') {
goto l131
}
position++
goto l124
l131:
position, tokenIndex = position124, tokenIndex124
if buffer[position] != rune('-') {
goto l132
}
position++
goto l124
l132:
position, tokenIndex = position124, tokenIndex124
if buffer[position] != rune('*') {
goto l133
}
position++
goto l124
l133:
position, tokenIndex = position124, tokenIndex124
if buffer[position] != rune('_') {
goto l134
}
position++
goto l124
l134:
position, tokenIndex = position124, tokenIndex124
if buffer[position] != rune('@') {
goto l135
}
position++
goto l124
l135:
position, tokenIndex = position124, tokenIndex124
if buffer[position] != rune('.') {
goto l123
}
position++
}
l124:
goto l122
l123:
position, tokenIndex = position123, tokenIndex123
}
}
l120:
add(ruleArg, position119)
}
return true
},
/* 10 QuotedArg <- <('"' QuotedText '"')> */
func() bool {
position136, tokenIndex136 := position, tokenIndex
{
position137 := position
if buffer[position] != rune('"') {
goto l136
}
position++
if !_rules[ruleQuotedText]() {
goto l136
}
if buffer[position] != rune('"') {
goto l136
}
position++
add(ruleQuotedArg, position137)
}
return true
l136:
position, tokenIndex = position136, tokenIndex136
return false
},
/* 11 QuotedText <- <(EscapedChar / (!'"' .))*> */
func() bool {
{
position139 := position
l140:
{
position141, tokenIndex141 := position, tokenIndex
{
position142, tokenIndex142 := position, tokenIndex
if !_rules[ruleEscapedChar]() {
goto l143
}
goto l142
l143:
position, tokenIndex = position142, tokenIndex142
{
position144, tokenIndex144 := position, tokenIndex
if buffer[position] != rune('"') {
goto l144
}
position++
goto l141
l144:
position, tokenIndex = position144, tokenIndex144
}
if !matchDot() {
goto l141
}
}
l142:
goto l140
l141:
position, tokenIndex = position141, tokenIndex141
}
add(ruleQuotedText, position139)
}
return true
},
/* 12 LabelContainingDirective <- <(LabelContainingDirectiveName WS SymbolArgs)> */
func() bool {
position145, tokenIndex145 := position, tokenIndex
{
position146 := position
if !_rules[ruleLabelContainingDirectiveName]() {
goto l145
}
if !_rules[ruleWS]() {
goto l145
}
if !_rules[ruleSymbolArgs]() {
goto l145
}
add(ruleLabelContainingDirective, position146)
}
return true
l145:
position, tokenIndex = position145, tokenIndex145
return false
},
/* 13 LabelContainingDirectiveName <- <(('.' ('x' / 'X') ('w' / 'W') ('o' / 'O') ('r' / 'R') ('d' / 'D')) / ('.' ('w' / 'W') ('o' / 'O') ('r' / 'R') ('d' / 'D')) / ('.' ('l' / 'L') ('o' / 'O') ('n' / 'N') ('g' / 'G')) / ('.' ('s' / 'S') ('e' / 'E') ('t' / 'T')) / ('.' ('b' / 'B') ('y' / 'Y') ('t' / 'T') ('e' / 'E')) / ('.' '8' ('b' / 'B') ('y' / 'Y') ('t' / 'T') ('e' / 'E')) / ('.' '4' ('b' / 'B') ('y' / 'Y') ('t' / 'T') ('e' / 'E')) / ('.' ('q' / 'Q') ('u' / 'U') ('a' / 'A') ('d' / 'D')) / ('.' ('t' / 'T') ('c' / 'C')) / ('.' ('l' / 'L') ('o' / 'O') ('c' / 'C') ('a' / 'A') ('l' / 'L') ('e' / 'E') ('n' / 'N') ('t' / 'T') ('r' / 'R') ('y' / 'Y')) / ('.' ('s' / 'S') ('i' / 'I') ('z' / 'Z') ('e' / 'E')) / ('.' ('t' / 'T') ('y' / 'Y') ('p' / 'P') ('e' / 'E')) / ('.' ('u' / 'U') ('l' / 'L') ('e' / 'E') ('b' / 'B') '1' '2' '8') / ('.' ('s' / 'S') ('l' / 'L') ('e' / 'E') ('b' / 'B') '1' '2' '8'))> */
func() bool {
position147, tokenIndex147 := position, tokenIndex
{
position148 := position
{
position149, tokenIndex149 := position, tokenIndex
if buffer[position] != rune('.') {
goto l150
}
position++
{
position151, tokenIndex151 := position, tokenIndex
if buffer[position] != rune('x') {
goto l152
}
position++
goto l151
l152:
position, tokenIndex = position151, tokenIndex151
if buffer[position] != rune('X') {
goto l150
}
position++
}
l151:
{
position153, tokenIndex153 := position, tokenIndex
if buffer[position] != rune('w') {
goto l154
}
position++
goto l153
l154:
position, tokenIndex = position153, tokenIndex153
if buffer[position] != rune('W') {
goto l150
}
position++
}
l153:
{
position155, tokenIndex155 := position, tokenIndex
if buffer[position] != rune('o') {
goto l156
}
position++
goto l155
l156:
position, tokenIndex = position155, tokenIndex155
if buffer[position] != rune('O') {
goto l150
}
position++
}
l155:
{
position157, tokenIndex157 := position, tokenIndex
if buffer[position] != rune('r') {
goto l158
}
position++
goto l157
l158:
position, tokenIndex = position157, tokenIndex157
if buffer[position] != rune('R') {
goto l150
}
position++
}
l157:
{
position159, tokenIndex159 := position, tokenIndex
if buffer[position] != rune('d') {
goto l160
}
position++
goto l159
l160:
position, tokenIndex = position159, tokenIndex159
if buffer[position] != rune('D') {
goto l150
}
position++
}
l159:
goto l149
l150:
position, tokenIndex = position149, tokenIndex149
if buffer[position] != rune('.') {
goto l161
}
position++
{
position162, tokenIndex162 := position, tokenIndex
if buffer[position] != rune('w') {
goto l163
}
position++
goto l162
l163:
position, tokenIndex = position162, tokenIndex162
if buffer[position] != rune('W') {
goto l161
}
position++
}
l162:
{
position164, tokenIndex164 := position, tokenIndex
if buffer[position] != rune('o') {
goto l165
}
position++
goto l164
l165:
position, tokenIndex = position164, tokenIndex164
if buffer[position] != rune('O') {
goto l161
}
position++
}
l164:
{
position166, tokenIndex166 := position, tokenIndex
if buffer[position] != rune('r') {
goto l167
}
position++
goto l166
l167:
position, tokenIndex = position166, tokenIndex166
if buffer[position] != rune('R') {
goto l161
}
position++
}
l166:
{
position168, tokenIndex168 := position, tokenIndex
if buffer[position] != rune('d') {
goto l169
}
position++
goto l168
l169:
position, tokenIndex = position168, tokenIndex168
if buffer[position] != rune('D') {
goto l161
}
position++
}
l168:
goto l149
l161:
position, tokenIndex = position149, tokenIndex149
if buffer[position] != rune('.') {
goto l170
}
position++
{
position171, tokenIndex171 := position, tokenIndex
if buffer[position] != rune('l') {
goto l172
}
position++
goto l171
l172:
position, tokenIndex = position171, tokenIndex171
if buffer[position] != rune('L') {
goto l170
}
position++
}
l171:
{
position173, tokenIndex173 := position, tokenIndex
if buffer[position] != rune('o') {
goto l174
}
position++
goto l173
l174:
position, tokenIndex = position173, tokenIndex173
if buffer[position] != rune('O') {
goto l170
}
position++
}
l173:
{
position175, tokenIndex175 := position, tokenIndex
if buffer[position] != rune('n') {
goto l176
}
position++
goto l175
l176:
position, tokenIndex = position175, tokenIndex175
if buffer[position] != rune('N') {
goto l170
}
position++
}
l175:
{
position177, tokenIndex177 := position, tokenIndex
if buffer[position] != rune('g') {
goto l178
}
position++
goto l177
l178:
position, tokenIndex = position177, tokenIndex177
if buffer[position] != rune('G') {
goto l170
}
position++
}
l177:
goto l149
l170:
position, tokenIndex = position149, tokenIndex149
if buffer[position] != rune('.') {
goto l179
}
position++
{
position180, tokenIndex180 := position, tokenIndex
if buffer[position] != rune('s') {
goto l181
}
position++
goto l180
l181:
position, tokenIndex = position180, tokenIndex180
if buffer[position] != rune('S') {
goto l179
}
position++
}
l180:
{
position182, tokenIndex182 := position, tokenIndex
if buffer[position] != rune('e') {
goto l183
}
position++
goto l182
l183:
position, tokenIndex = position182, tokenIndex182
if buffer[position] != rune('E') {
goto l179
}
position++
}
l182:
{
position184, tokenIndex184 := position, tokenIndex
if buffer[position] != rune('t') {
goto l185
}
position++
goto l184
l185:
position, tokenIndex = position184, tokenIndex184
if buffer[position] != rune('T') {
goto l179
}
position++
}
l184:
goto l149
l179:
position, tokenIndex = position149, tokenIndex149
if buffer[position] != rune('.') {
goto l186
}
position++
{
position187, tokenIndex187 := position, tokenIndex
if buffer[position] != rune('b') {
goto l188
}
position++
goto l187
l188:
position, tokenIndex = position187, tokenIndex187
if buffer[position] != rune('B') {
goto l186
}
position++
}
l187:
{
position189, tokenIndex189 := position, tokenIndex
if buffer[position] != rune('y') {
goto l190
}
position++
goto l189
l190:
position, tokenIndex = position189, tokenIndex189
if buffer[position] != rune('Y') {
goto l186
}
position++
}
l189:
{
position191, tokenIndex191 := position, tokenIndex
if buffer[position] != rune('t') {
goto l192
}
position++
goto l191
l192:
position, tokenIndex = position191, tokenIndex191
if buffer[position] != rune('T') {
goto l186
}
position++
}
l191:
{
position193, tokenIndex193 := position, tokenIndex
if buffer[position] != rune('e') {
goto l194
}
position++
goto l193
l194:
position, tokenIndex = position193, tokenIndex193
if buffer[position] != rune('E') {
goto l186
}
position++
}
l193:
goto l149
l186:
position, tokenIndex = position149, tokenIndex149
if buffer[position] != rune('.') {
goto l195
}
position++
if buffer[position] != rune('8') {
goto l195
}
position++
{
position196, tokenIndex196 := position, tokenIndex
if buffer[position] != rune('b') {
goto l197
}
position++
goto l196
l197:
position, tokenIndex = position196, tokenIndex196
if buffer[position] != rune('B') {
goto l195
}
position++
}
l196:
{
position198, tokenIndex198 := position, tokenIndex
if buffer[position] != rune('y') {
goto l199
}
position++
goto l198
l199:
position, tokenIndex = position198, tokenIndex198
if buffer[position] != rune('Y') {
goto l195
}
position++
}
l198:
{
position200, tokenIndex200 := position, tokenIndex
if buffer[position] != rune('t') {
goto l201
}
position++
goto l200
l201:
position, tokenIndex = position200, tokenIndex200
if buffer[position] != rune('T') {
goto l195
}
position++
}
l200:
{
position202, tokenIndex202 := position, tokenIndex
if buffer[position] != rune('e') {
goto l203
}
position++
goto l202
l203:
position, tokenIndex = position202, tokenIndex202
if buffer[position] != rune('E') {
goto l195
}
position++
}
l202:
goto l149
l195:
position, tokenIndex = position149, tokenIndex149
if buffer[position] != rune('.') {
goto l204
}
position++
if buffer[position] != rune('4') {
goto l204
}
position++
{
position205, tokenIndex205 := position, tokenIndex
if buffer[position] != rune('b') {
goto l206
}
position++
goto l205
l206:
position, tokenIndex = position205, tokenIndex205
if buffer[position] != rune('B') {
goto l204
}
position++
}
l205:
{
position207, tokenIndex207 := position, tokenIndex
if buffer[position] != rune('y') {
goto l208
}
position++
goto l207
l208:
position, tokenIndex = position207, tokenIndex207
if buffer[position] != rune('Y') {
goto l204
}
position++
}
l207:
{
position209, tokenIndex209 := position, tokenIndex
if buffer[position] != rune('t') {
goto l210
}
position++
goto l209
l210:
position, tokenIndex = position209, tokenIndex209
if buffer[position] != rune('T') {
goto l204
}
position++
}
l209:
{
position211, tokenIndex211 := position, tokenIndex
if buffer[position] != rune('e') {
goto l212
}
position++
goto l211
l212:
position, tokenIndex = position211, tokenIndex211
if buffer[position] != rune('E') {
goto l204
}
position++
}
l211:
goto l149
l204:
position, tokenIndex = position149, tokenIndex149
if buffer[position] != rune('.') {
goto l213
}
position++
{
position214, tokenIndex214 := position, tokenIndex
if buffer[position] != rune('q') {
goto l215
}
position++
goto l214
l215:
position, tokenIndex = position214, tokenIndex214
if buffer[position] != rune('Q') {
goto l213
}
position++
}
l214:
{
position216, tokenIndex216 := position, tokenIndex
if buffer[position] != rune('u') {
goto l217
}
position++
goto l216
l217:
position, tokenIndex = position216, tokenIndex216
if buffer[position] != rune('U') {
goto l213
}
position++
}
l216:
{
position218, tokenIndex218 := position, tokenIndex
if buffer[position] != rune('a') {
goto l219
}
position++
goto l218
l219:
position, tokenIndex = position218, tokenIndex218
if buffer[position] != rune('A') {
goto l213
}
position++
}
l218:
{
position220, tokenIndex220 := position, tokenIndex
if buffer[position] != rune('d') {
goto l221
}
position++
goto l220
l221:
position, tokenIndex = position220, tokenIndex220
if buffer[position] != rune('D') {
goto l213
}
position++
}
l220:
goto l149
l213:
position, tokenIndex = position149, tokenIndex149
if buffer[position] != rune('.') {
goto l222
}
position++
{
position223, tokenIndex223 := position, tokenIndex
if buffer[position] != rune('t') {
goto l224
}
position++
goto l223
l224:
position, tokenIndex = position223, tokenIndex223
if buffer[position] != rune('T') {
goto l222
}
position++
}
l223:
{
position225, tokenIndex225 := position, tokenIndex
if buffer[position] != rune('c') {
goto l226
}
position++
goto l225
l226:
position, tokenIndex = position225, tokenIndex225
if buffer[position] != rune('C') {
goto l222
}
position++
}
l225:
goto l149
l222:
position, tokenIndex = position149, tokenIndex149
if buffer[position] != rune('.') {
goto l227
}
position++
{
position228, tokenIndex228 := position, tokenIndex
if buffer[position] != rune('l') {
goto l229
}
position++
goto l228
l229:
position, tokenIndex = position228, tokenIndex228
if buffer[position] != rune('L') {
goto l227
}
position++
}
l228:
{
position230, tokenIndex230 := position, tokenIndex
if buffer[position] != rune('o') {
goto l231
}
position++
goto l230
l231:
position, tokenIndex = position230, tokenIndex230
if buffer[position] != rune('O') {
goto l227
}
position++
}
l230:
{
position232, tokenIndex232 := position, tokenIndex
if buffer[position] != rune('c') {
goto l233
}
position++
goto l232
l233:
position, tokenIndex = position232, tokenIndex232
if buffer[position] != rune('C') {
goto l227
}
position++
}
l232:
{
position234, tokenIndex234 := position, tokenIndex
if buffer[position] != rune('a') {
goto l235
}
position++
goto l234
l235:
position, tokenIndex = position234, tokenIndex234
if buffer[position] != rune('A') {
goto l227
}
position++
}
l234:
{
position236, tokenIndex236 := position, tokenIndex
if buffer[position] != rune('l') {
goto l237
}
position++
goto l236
l237:
position, tokenIndex = position236, tokenIndex236
if buffer[position] != rune('L') {
goto l227
}
position++
}
l236:
{
position238, tokenIndex238 := position, tokenIndex
if buffer[position] != rune('e') {
goto l239
}
position++
goto l238
l239:
position, tokenIndex = position238, tokenIndex238
if buffer[position] != rune('E') {
goto l227
}
position++
}
l238:
{
position240, tokenIndex240 := position, tokenIndex
if buffer[position] != rune('n') {
goto l241
}
position++
goto l240
l241:
position, tokenIndex = position240, tokenIndex240
if buffer[position] != rune('N') {
goto l227
}
position++
}
l240:
{
position242, tokenIndex242 := position, tokenIndex
if buffer[position] != rune('t') {
goto l243
}
position++
goto l242
l243:
position, tokenIndex = position242, tokenIndex242
if buffer[position] != rune('T') {
goto l227
}
position++
}
l242:
{
position244, tokenIndex244 := position, tokenIndex
if buffer[position] != rune('r') {
goto l245
}
position++
goto l244
l245:
position, tokenIndex = position244, tokenIndex244
if buffer[position] != rune('R') {
goto l227
}
position++
}
l244:
{
position246, tokenIndex246 := position, tokenIndex
if buffer[position] != rune('y') {
goto l247
}
position++
goto l246
l247:
position, tokenIndex = position246, tokenIndex246
if buffer[position] != rune('Y') {
goto l227
}
position++
}
l246:
goto l149
l227:
position, tokenIndex = position149, tokenIndex149
if buffer[position] != rune('.') {
goto l248
}
position++
{
position249, tokenIndex249 := position, tokenIndex
if buffer[position] != rune('s') {
goto l250
}
position++
goto l249
l250:
position, tokenIndex = position249, tokenIndex249
if buffer[position] != rune('S') {
goto l248
}
position++
}
l249:
{
position251, tokenIndex251 := position, tokenIndex
if buffer[position] != rune('i') {
goto l252
}
position++
goto l251
l252:
position, tokenIndex = position251, tokenIndex251
if buffer[position] != rune('I') {
goto l248
}
position++
}
l251:
{
position253, tokenIndex253 := position, tokenIndex
if buffer[position] != rune('z') {
goto l254
}
position++
goto l253
l254:
position, tokenIndex = position253, tokenIndex253
if buffer[position] != rune('Z') {
goto l248
}
position++
}
l253:
{
position255, tokenIndex255 := position, tokenIndex
if buffer[position] != rune('e') {
goto l256
}
position++
goto l255
l256:
position, tokenIndex = position255, tokenIndex255
if buffer[position] != rune('E') {
goto l248
}
position++
}
l255:
goto l149
l248:
position, tokenIndex = position149, tokenIndex149
if buffer[position] != rune('.') {
goto l257
}
position++
{
position258, tokenIndex258 := position, tokenIndex
if buffer[position] != rune('t') {
goto l259
}
position++
goto l258
l259:
position, tokenIndex = position258, tokenIndex258
if buffer[position] != rune('T') {
goto l257
}
position++
}
l258:
{
position260, tokenIndex260 := position, tokenIndex
if buffer[position] != rune('y') {
goto l261
}
position++
goto l260
l261:
position, tokenIndex = position260, tokenIndex260
if buffer[position] != rune('Y') {
goto l257
}
position++
}
l260:
{
position262, tokenIndex262 := position, tokenIndex
if buffer[position] != rune('p') {
goto l263
}
position++
goto l262
l263:
position, tokenIndex = position262, tokenIndex262
if buffer[position] != rune('P') {
goto l257
}
position++
}
l262:
{
position264, tokenIndex264 := position, tokenIndex
if buffer[position] != rune('e') {
goto l265
}
position++
goto l264
l265:
position, tokenIndex = position264, tokenIndex264
if buffer[position] != rune('E') {
goto l257
}
position++
}
l264:
goto l149
l257:
position, tokenIndex = position149, tokenIndex149
if buffer[position] != rune('.') {
goto l266
}
position++
{
position267, tokenIndex267 := position, tokenIndex
if buffer[position] != rune('u') {
goto l268
}
position++
goto l267
l268:
position, tokenIndex = position267, tokenIndex267
if buffer[position] != rune('U') {
goto l266
}
position++
}
l267:
{
position269, tokenIndex269 := position, tokenIndex
if buffer[position] != rune('l') {
goto l270
}
position++
goto l269
l270:
position, tokenIndex = position269, tokenIndex269
if buffer[position] != rune('L') {
goto l266
}
position++
}
l269:
{
position271, tokenIndex271 := position, tokenIndex
if buffer[position] != rune('e') {
goto l272
}
position++
goto l271
l272:
position, tokenIndex = position271, tokenIndex271
if buffer[position] != rune('E') {
goto l266
}
position++
}
l271:
{
position273, tokenIndex273 := position, tokenIndex
if buffer[position] != rune('b') {
goto l274
}
position++
goto l273
l274:
position, tokenIndex = position273, tokenIndex273
if buffer[position] != rune('B') {
goto l266
}
position++
}
l273:
if buffer[position] != rune('1') {
goto l266
}
position++
if buffer[position] != rune('2') {
goto l266
}
position++
if buffer[position] != rune('8') {
goto l266
}
position++
goto l149
l266:
position, tokenIndex = position149, tokenIndex149
if buffer[position] != rune('.') {
goto l147
}
position++
{
position275, tokenIndex275 := position, tokenIndex
if buffer[position] != rune('s') {
goto l276
}
position++
goto l275
l276:
position, tokenIndex = position275, tokenIndex275
if buffer[position] != rune('S') {
goto l147
}
position++
}
l275:
{
position277, tokenIndex277 := position, tokenIndex
if buffer[position] != rune('l') {
goto l278
}
position++
goto l277
l278:
position, tokenIndex = position277, tokenIndex277
if buffer[position] != rune('L') {
goto l147
}
position++
}
l277:
{
position279, tokenIndex279 := position, tokenIndex
if buffer[position] != rune('e') {
goto l280
}
position++
goto l279
l280:
position, tokenIndex = position279, tokenIndex279
if buffer[position] != rune('E') {
goto l147
}
position++
}
l279:
{
position281, tokenIndex281 := position, tokenIndex
if buffer[position] != rune('b') {
goto l282
}
position++
goto l281
l282:
position, tokenIndex = position281, tokenIndex281
if buffer[position] != rune('B') {
goto l147
}
position++
}
l281:
if buffer[position] != rune('1') {
goto l147
}
position++
if buffer[position] != rune('2') {
goto l147
}
position++
if buffer[position] != rune('8') {
goto l147
}
position++
}
l149:
add(ruleLabelContainingDirectiveName, position148)
}
return true
l147:
position, tokenIndex = position147, tokenIndex147
return false
},
/* 14 SymbolArgs <- <(SymbolArg (WS? ',' WS? SymbolArg)*)> */
func() bool {
position283, tokenIndex283 := position, tokenIndex
{
position284 := position
if !_rules[ruleSymbolArg]() {
goto l283
}
l285:
{
position286, tokenIndex286 := position, tokenIndex
{
position287, tokenIndex287 := position, tokenIndex
if !_rules[ruleWS]() {
goto l287
}
goto l288
l287:
position, tokenIndex = position287, tokenIndex287
}
l288:
if buffer[position] != rune(',') {
goto l286
}
position++
{
position289, tokenIndex289 := position, tokenIndex
if !_rules[ruleWS]() {
goto l289
}
goto l290
l289:
position, tokenIndex = position289, tokenIndex289
}
l290:
if !_rules[ruleSymbolArg]() {
goto l286
}
goto l285
l286:
position, tokenIndex = position286, tokenIndex286
}
add(ruleSymbolArgs, position284)
}
return true
l283:
position, tokenIndex = position283, tokenIndex283
return false
},
/* 15 SymbolShift <- <((('<' '<') / ('>' '>')) WS? [0-9]+)> */
func() bool {
position291, tokenIndex291 := position, tokenIndex
{
position292 := position
{
position293, tokenIndex293 := position, tokenIndex
if buffer[position] != rune('<') {
goto l294
}
position++
if buffer[position] != rune('<') {
goto l294
}
position++
goto l293
l294:
position, tokenIndex = position293, tokenIndex293
if buffer[position] != rune('>') {
goto l291
}
position++
if buffer[position] != rune('>') {
goto l291
}
position++
}
l293:
{
position295, tokenIndex295 := position, tokenIndex
if !_rules[ruleWS]() {
goto l295
}
goto l296
l295:
position, tokenIndex = position295, tokenIndex295
}
l296:
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l291
}
position++
l297:
{
position298, tokenIndex298 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l298
}
position++
goto l297
l298:
position, tokenIndex = position298, tokenIndex298
}
add(ruleSymbolShift, position292)
}
return true
l291:
position, tokenIndex = position291, tokenIndex291
return false
},
/* 16 SymbolArg <- <((OpenParen WS?)? (Offset / SymbolType / ((Offset / LocalSymbol / SymbolName / Dot) WS? Operator WS? (Offset / LocalSymbol / SymbolName)) / (LocalSymbol TCMarker?) / (SymbolName Offset) / (SymbolName TCMarker?)) (WS? CloseParen)? (WS? SymbolShift)?)> */
func() bool {
position299, tokenIndex299 := position, tokenIndex
{
position300 := position
{
position301, tokenIndex301 := position, tokenIndex
if !_rules[ruleOpenParen]() {
goto l301
}
{
position303, tokenIndex303 := position, tokenIndex
if !_rules[ruleWS]() {
goto l303
}
goto l304
l303:
position, tokenIndex = position303, tokenIndex303
}
l304:
goto l302
l301:
position, tokenIndex = position301, tokenIndex301
}
l302:
{
position305, tokenIndex305 := position, tokenIndex
if !_rules[ruleOffset]() {
goto l306
}
goto l305
l306:
position, tokenIndex = position305, tokenIndex305
if !_rules[ruleSymbolType]() {
goto l307
}
goto l305
l307:
position, tokenIndex = position305, tokenIndex305
{
position309, tokenIndex309 := position, tokenIndex
if !_rules[ruleOffset]() {
goto l310
}
goto l309
l310:
position, tokenIndex = position309, tokenIndex309
if !_rules[ruleLocalSymbol]() {
goto l311
}
goto l309
l311:
position, tokenIndex = position309, tokenIndex309
if !_rules[ruleSymbolName]() {
goto l312
}
goto l309
l312:
position, tokenIndex = position309, tokenIndex309
if !_rules[ruleDot]() {
goto l308
}
}
l309:
{
position313, tokenIndex313 := position, tokenIndex
if !_rules[ruleWS]() {
goto l313
}
goto l314
l313:
position, tokenIndex = position313, tokenIndex313
}
l314:
if !_rules[ruleOperator]() {
goto l308
}
{
position315, tokenIndex315 := position, tokenIndex
if !_rules[ruleWS]() {
goto l315
}
goto l316
l315:
position, tokenIndex = position315, tokenIndex315
}
l316:
{
position317, tokenIndex317 := position, tokenIndex
if !_rules[ruleOffset]() {
goto l318
}
goto l317
l318:
position, tokenIndex = position317, tokenIndex317
if !_rules[ruleLocalSymbol]() {
goto l319
}
goto l317
l319:
position, tokenIndex = position317, tokenIndex317
if !_rules[ruleSymbolName]() {
goto l308
}
}
l317:
goto l305
l308:
position, tokenIndex = position305, tokenIndex305
if !_rules[ruleLocalSymbol]() {
goto l320
}
{
position321, tokenIndex321 := position, tokenIndex
if !_rules[ruleTCMarker]() {
goto l321
}
goto l322
l321:
position, tokenIndex = position321, tokenIndex321
}
l322:
goto l305
l320:
position, tokenIndex = position305, tokenIndex305
if !_rules[ruleSymbolName]() {
goto l323
}
if !_rules[ruleOffset]() {
goto l323
}
goto l305
l323:
position, tokenIndex = position305, tokenIndex305
if !_rules[ruleSymbolName]() {
goto l299
}
{
position324, tokenIndex324 := position, tokenIndex
if !_rules[ruleTCMarker]() {
goto l324
}
goto l325
l324:
position, tokenIndex = position324, tokenIndex324
}
l325:
}
l305:
{
position326, tokenIndex326 := position, tokenIndex
{
position328, tokenIndex328 := position, tokenIndex
if !_rules[ruleWS]() {
goto l328
}
goto l329
l328:
position, tokenIndex = position328, tokenIndex328
}
l329:
if !_rules[ruleCloseParen]() {
goto l326
}
goto l327
l326:
position, tokenIndex = position326, tokenIndex326
}
l327:
{
position330, tokenIndex330 := position, tokenIndex
{
position332, tokenIndex332 := position, tokenIndex
if !_rules[ruleWS]() {
goto l332
}
goto l333
l332:
position, tokenIndex = position332, tokenIndex332
}
l333:
if !_rules[ruleSymbolShift]() {
goto l330
}
goto l331
l330:
position, tokenIndex = position330, tokenIndex330
}
l331:
add(ruleSymbolArg, position300)
}
return true
l299:
position, tokenIndex = position299, tokenIndex299
return false
},
/* 17 OpenParen <- <'('> */
func() bool {
position334, tokenIndex334 := position, tokenIndex
{
position335 := position
if buffer[position] != rune('(') {
goto l334
}
position++
add(ruleOpenParen, position335)
}
return true
l334:
position, tokenIndex = position334, tokenIndex334
return false
},
/* 18 CloseParen <- <')'> */
func() bool {
position336, tokenIndex336 := position, tokenIndex
{
position337 := position
if buffer[position] != rune(')') {
goto l336
}
position++
add(ruleCloseParen, position337)
}
return true
l336:
position, tokenIndex = position336, tokenIndex336
return false
},
/* 19 SymbolType <- <(('@' / '%') (('f' 'u' 'n' 'c' 't' 'i' 'o' 'n') / ('o' 'b' 'j' 'e' 'c' 't')))> */
func() bool {
position338, tokenIndex338 := position, tokenIndex
{
position339 := position
{
position340, tokenIndex340 := position, tokenIndex
if buffer[position] != rune('@') {
goto l341
}
position++
goto l340
l341:
position, tokenIndex = position340, tokenIndex340
if buffer[position] != rune('%') {
goto l338
}
position++
}
l340:
{
position342, tokenIndex342 := position, tokenIndex
if buffer[position] != rune('f') {
goto l343
}
position++
if buffer[position] != rune('u') {
goto l343
}
position++
if buffer[position] != rune('n') {
goto l343
}
position++
if buffer[position] != rune('c') {
goto l343
}
position++
if buffer[position] != rune('t') {
goto l343
}
position++
if buffer[position] != rune('i') {
goto l343
}
position++
if buffer[position] != rune('o') {
goto l343
}
position++
if buffer[position] != rune('n') {
goto l343
}
position++
goto l342
l343:
position, tokenIndex = position342, tokenIndex342
if buffer[position] != rune('o') {
goto l338
}
position++
if buffer[position] != rune('b') {
goto l338
}
position++
if buffer[position] != rune('j') {
goto l338
}
position++
if buffer[position] != rune('e') {
goto l338
}
position++
if buffer[position] != rune('c') {
goto l338
}
position++
if buffer[position] != rune('t') {
goto l338
}
position++
}
l342:
add(ruleSymbolType, position339)
}
return true
l338:
position, tokenIndex = position338, tokenIndex338
return false
},
/* 20 Dot <- <'.'> */
func() bool {
position344, tokenIndex344 := position, tokenIndex
{
position345 := position
if buffer[position] != rune('.') {
goto l344
}
position++
add(ruleDot, position345)
}
return true
l344:
position, tokenIndex = position344, tokenIndex344
return false
},
/* 21 TCMarker <- <('[' 'T' 'C' ']')> */
func() bool {
position346, tokenIndex346 := position, tokenIndex
{
position347 := position
if buffer[position] != rune('[') {
goto l346
}
position++
if buffer[position] != rune('T') {
goto l346
}
position++
if buffer[position] != rune('C') {
goto l346
}
position++
if buffer[position] != rune(']') {
goto l346
}
position++
add(ruleTCMarker, position347)
}
return true
l346:
position, tokenIndex = position346, tokenIndex346
return false
},
/* 22 EscapedChar <- <('\\' .)> */
func() bool {
position348, tokenIndex348 := position, tokenIndex
{
position349 := position
if buffer[position] != rune('\\') {
goto l348
}
position++
if !matchDot() {
goto l348
}
add(ruleEscapedChar, position349)
}
return true
l348:
position, tokenIndex = position348, tokenIndex348
return false
},
/* 23 WS <- <(' ' / '\t')+> */
func() bool {
position350, tokenIndex350 := position, tokenIndex
{
position351 := position
{
position354, tokenIndex354 := position, tokenIndex
if buffer[position] != rune(' ') {
goto l355
}
position++
goto l354
l355:
position, tokenIndex = position354, tokenIndex354
if buffer[position] != rune('\t') {
goto l350
}
position++
}
l354:
l352:
{
position353, tokenIndex353 := position, tokenIndex
{
position356, tokenIndex356 := position, tokenIndex
if buffer[position] != rune(' ') {
goto l357
}
position++
goto l356
l357:
position, tokenIndex = position356, tokenIndex356
if buffer[position] != rune('\t') {
goto l353
}
position++
}
l356:
goto l352
l353:
position, tokenIndex = position353, tokenIndex353
}
add(ruleWS, position351)
}
return true
l350:
position, tokenIndex = position350, tokenIndex350
return false
},
/* 24 Comment <- <((('/' '/') / '#') (!'\n' .)*)> */
func() bool {
position358, tokenIndex358 := position, tokenIndex
{
position359 := position
{
position360, tokenIndex360 := position, tokenIndex
if buffer[position] != rune('/') {
goto l361
}
position++
if buffer[position] != rune('/') {
goto l361
}
position++
goto l360
l361:
position, tokenIndex = position360, tokenIndex360
if buffer[position] != rune('#') {
goto l358
}
position++
}
l360:
l362:
{
position363, tokenIndex363 := position, tokenIndex
{
position364, tokenIndex364 := position, tokenIndex
if buffer[position] != rune('\n') {
goto l364
}
position++
goto l363
l364:
position, tokenIndex = position364, tokenIndex364
}
if !matchDot() {
goto l363
}
goto l362
l363:
position, tokenIndex = position363, tokenIndex363
}
add(ruleComment, position359)
}
return true
l358:
position, tokenIndex = position358, tokenIndex358
return false
},
/* 25 Label <- <((LocalSymbol / LocalLabel / SymbolName) ':')> */
func() bool {
position365, tokenIndex365 := position, tokenIndex
{
position366 := position
{
position367, tokenIndex367 := position, tokenIndex
if !_rules[ruleLocalSymbol]() {
goto l368
}
goto l367
l368:
position, tokenIndex = position367, tokenIndex367
if !_rules[ruleLocalLabel]() {
goto l369
}
goto l367
l369:
position, tokenIndex = position367, tokenIndex367
if !_rules[ruleSymbolName]() {
goto l365
}
}
l367:
if buffer[position] != rune(':') {
goto l365
}
position++
add(ruleLabel, position366)
}
return true
l365:
position, tokenIndex = position365, tokenIndex365
return false
},
/* 26 SymbolName <- <(([a-z] / [A-Z] / '.' / '_') ([a-z] / [A-Z] / '.' / ([0-9] / [0-9]) / '$' / '_')*)> */
func() bool {
position370, tokenIndex370 := position, tokenIndex
{
position371 := position
{
position372, tokenIndex372 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l373
}
position++
goto l372
l373:
position, tokenIndex = position372, tokenIndex372
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l374
}
position++
goto l372
l374:
position, tokenIndex = position372, tokenIndex372
if buffer[position] != rune('.') {
goto l375
}
position++
goto l372
l375:
position, tokenIndex = position372, tokenIndex372
if buffer[position] != rune('_') {
goto l370
}
position++
}
l372:
l376:
{
position377, tokenIndex377 := position, tokenIndex
{
position378, tokenIndex378 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l379
}
position++
goto l378
l379:
position, tokenIndex = position378, tokenIndex378
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l380
}
position++
goto l378
l380:
position, tokenIndex = position378, tokenIndex378
if buffer[position] != rune('.') {
goto l381
}
position++
goto l378
l381:
position, tokenIndex = position378, tokenIndex378
{
position383, tokenIndex383 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l384
}
position++
goto l383
l384:
position, tokenIndex = position383, tokenIndex383
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l382
}
position++
}
l383:
goto l378
l382:
position, tokenIndex = position378, tokenIndex378
if buffer[position] != rune('$') {
goto l385
}
position++
goto l378
l385:
position, tokenIndex = position378, tokenIndex378
if buffer[position] != rune('_') {
goto l377
}
position++
}
l378:
goto l376
l377:
position, tokenIndex = position377, tokenIndex377
}
add(ruleSymbolName, position371)
}
return true
l370:
position, tokenIndex = position370, tokenIndex370
return false
},
/* 27 LocalSymbol <- <('.' 'L' ([a-z] / [A-Z] / ([a-z] / [A-Z]) / '.' / ([0-9] / [0-9]) / '$' / '_')+)> */
func() bool {
position386, tokenIndex386 := position, tokenIndex
{
position387 := position
if buffer[position] != rune('.') {
goto l386
}
position++
if buffer[position] != rune('L') {
goto l386
}
position++
{
position390, tokenIndex390 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l391
}
position++
goto l390
l391:
position, tokenIndex = position390, tokenIndex390
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l392
}
position++
goto l390
l392:
position, tokenIndex = position390, tokenIndex390
{
position394, tokenIndex394 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l395
}
position++
goto l394
l395:
position, tokenIndex = position394, tokenIndex394
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l393
}
position++
}
l394:
goto l390
l393:
position, tokenIndex = position390, tokenIndex390
if buffer[position] != rune('.') {
goto l396
}
position++
goto l390
l396:
position, tokenIndex = position390, tokenIndex390
{
position398, tokenIndex398 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l399
}
position++
goto l398
l399:
position, tokenIndex = position398, tokenIndex398
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l397
}
position++
}
l398:
goto l390
l397:
position, tokenIndex = position390, tokenIndex390
if buffer[position] != rune('$') {
goto l400
}
position++
goto l390
l400:
position, tokenIndex = position390, tokenIndex390
if buffer[position] != rune('_') {
goto l386
}
position++
}
l390:
l388:
{
position389, tokenIndex389 := position, tokenIndex
{
position401, tokenIndex401 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l402
}
position++
goto l401
l402:
position, tokenIndex = position401, tokenIndex401
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l403
}
position++
goto l401
l403:
position, tokenIndex = position401, tokenIndex401
{
position405, tokenIndex405 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l406
}
position++
goto l405
l406:
position, tokenIndex = position405, tokenIndex405
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l404
}
position++
}
l405:
goto l401
l404:
position, tokenIndex = position401, tokenIndex401
if buffer[position] != rune('.') {
goto l407
}
position++
goto l401
l407:
position, tokenIndex = position401, tokenIndex401
{
position409, tokenIndex409 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l410
}
position++
goto l409
l410:
position, tokenIndex = position409, tokenIndex409
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l408
}
position++
}
l409:
goto l401
l408:
position, tokenIndex = position401, tokenIndex401
if buffer[position] != rune('$') {
goto l411
}
position++
goto l401
l411:
position, tokenIndex = position401, tokenIndex401
if buffer[position] != rune('_') {
goto l389
}
position++
}
l401:
goto l388
l389:
position, tokenIndex = position389, tokenIndex389
}
add(ruleLocalSymbol, position387)
}
return true
l386:
position, tokenIndex = position386, tokenIndex386
return false
},
/* 28 LocalLabel <- <([0-9] ([0-9] / '$')*)> */
func() bool {
position412, tokenIndex412 := position, tokenIndex
{
position413 := position
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l412
}
position++
l414:
{
position415, tokenIndex415 := position, tokenIndex
{
position416, tokenIndex416 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l417
}
position++
goto l416
l417:
position, tokenIndex = position416, tokenIndex416
if buffer[position] != rune('$') {
goto l415
}
position++
}
l416:
goto l414
l415:
position, tokenIndex = position415, tokenIndex415
}
add(ruleLocalLabel, position413)
}
return true
l412:
position, tokenIndex = position412, tokenIndex412
return false
},
/* 29 LocalLabelRef <- <([0-9] ([0-9] / '$')* ('b' / 'f'))> */
func() bool {
position418, tokenIndex418 := position, tokenIndex
{
position419 := position
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l418
}
position++
l420:
{
position421, tokenIndex421 := position, tokenIndex
{
position422, tokenIndex422 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l423
}
position++
goto l422
l423:
position, tokenIndex = position422, tokenIndex422
if buffer[position] != rune('$') {
goto l421
}
position++
}
l422:
goto l420
l421:
position, tokenIndex = position421, tokenIndex421
}
{
position424, tokenIndex424 := position, tokenIndex
if buffer[position] != rune('b') {
goto l425
}
position++
goto l424
l425:
position, tokenIndex = position424, tokenIndex424
if buffer[position] != rune('f') {
goto l418
}
position++
}
l424:
add(ruleLocalLabelRef, position419)
}
return true
l418:
position, tokenIndex = position418, tokenIndex418
return false
},
/* 30 Instruction <- <(InstructionName (WS InstructionArg (WS? ',' WS? InstructionArg)*)?)> */
func() bool {
position426, tokenIndex426 := position, tokenIndex
{
position427 := position
if !_rules[ruleInstructionName]() {
goto l426
}
{
position428, tokenIndex428 := position, tokenIndex
if !_rules[ruleWS]() {
goto l428
}
if !_rules[ruleInstructionArg]() {
goto l428
}
l430:
{
position431, tokenIndex431 := position, tokenIndex
{
position432, tokenIndex432 := position, tokenIndex
if !_rules[ruleWS]() {
goto l432
}
goto l433
l432:
position, tokenIndex = position432, tokenIndex432
}
l433:
if buffer[position] != rune(',') {
goto l431
}
position++
{
position434, tokenIndex434 := position, tokenIndex
if !_rules[ruleWS]() {
goto l434
}
goto l435
l434:
position, tokenIndex = position434, tokenIndex434
}
l435:
if !_rules[ruleInstructionArg]() {
goto l431
}
goto l430
l431:
position, tokenIndex = position431, tokenIndex431
}
goto l429
l428:
position, tokenIndex = position428, tokenIndex428
}
l429:
add(ruleInstruction, position427)
}
return true
l426:
position, tokenIndex = position426, tokenIndex426
return false
},
/* 31 InstructionName <- <(([a-z] / [A-Z]) ([a-z] / [A-Z] / '.' / ([0-9] / [0-9]))* ('.' / '+' / '-')?)> */
func() bool {
position436, tokenIndex436 := position, tokenIndex
{
position437 := position
{
position438, tokenIndex438 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l439
}
position++
goto l438
l439:
position, tokenIndex = position438, tokenIndex438
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l436
}
position++
}
l438:
l440:
{
position441, tokenIndex441 := position, tokenIndex
{
position442, tokenIndex442 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l443
}
position++
goto l442
l443:
position, tokenIndex = position442, tokenIndex442
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l444
}
position++
goto l442
l444:
position, tokenIndex = position442, tokenIndex442
if buffer[position] != rune('.') {
goto l445
}
position++
goto l442
l445:
position, tokenIndex = position442, tokenIndex442
{
position446, tokenIndex446 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l447
}
position++
goto l446
l447:
position, tokenIndex = position446, tokenIndex446
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l441
}
position++
}
l446:
}
l442:
goto l440
l441:
position, tokenIndex = position441, tokenIndex441
}
{
position448, tokenIndex448 := position, tokenIndex
{
position450, tokenIndex450 := position, tokenIndex
if buffer[position] != rune('.') {
goto l451
}
position++
goto l450
l451:
position, tokenIndex = position450, tokenIndex450
if buffer[position] != rune('+') {
goto l452
}
position++
goto l450
l452:
position, tokenIndex = position450, tokenIndex450
if buffer[position] != rune('-') {
goto l448
}
position++
}
l450:
goto l449
l448:
position, tokenIndex = position448, tokenIndex448
}
l449:
add(ruleInstructionName, position437)
}
return true
l436:
position, tokenIndex = position436, tokenIndex436
return false
},
/* 32 InstructionArg <- <(IndirectionIndicator? (ARMConstantTweak / RegisterOrConstant / LocalLabelRef / TOCRefHigh / TOCRefLow / GOTLocation / GOTSymbolOffset / MemoryRef) AVX512Token*)> */
func() bool {
position453, tokenIndex453 := position, tokenIndex
{
position454 := position
{
position455, tokenIndex455 := position, tokenIndex
if !_rules[ruleIndirectionIndicator]() {
goto l455
}
goto l456
l455:
position, tokenIndex = position455, tokenIndex455
}
l456:
{
position457, tokenIndex457 := position, tokenIndex
if !_rules[ruleARMConstantTweak]() {
goto l458
}
goto l457
l458:
position, tokenIndex = position457, tokenIndex457
if !_rules[ruleRegisterOrConstant]() {
goto l459
}
goto l457
l459:
position, tokenIndex = position457, tokenIndex457
if !_rules[ruleLocalLabelRef]() {
goto l460
}
goto l457
l460:
position, tokenIndex = position457, tokenIndex457
if !_rules[ruleTOCRefHigh]() {
goto l461
}
goto l457
l461:
position, tokenIndex = position457, tokenIndex457
if !_rules[ruleTOCRefLow]() {
goto l462
}
goto l457
l462:
position, tokenIndex = position457, tokenIndex457
if !_rules[ruleGOTLocation]() {
goto l463
}
goto l457
l463:
position, tokenIndex = position457, tokenIndex457
if !_rules[ruleGOTSymbolOffset]() {
goto l464
}
goto l457
l464:
position, tokenIndex = position457, tokenIndex457
if !_rules[ruleMemoryRef]() {
goto l453
}
}
l457:
l465:
{
position466, tokenIndex466 := position, tokenIndex
if !_rules[ruleAVX512Token]() {
goto l466
}
goto l465
l466:
position, tokenIndex = position466, tokenIndex466
}
add(ruleInstructionArg, position454)
}
return true
l453:
position, tokenIndex = position453, tokenIndex453
return false
},
/* 33 GOTLocation <- <('$' '_' 'G' 'L' 'O' 'B' 'A' 'L' '_' 'O' 'F' 'F' 'S' 'E' 'T' '_' 'T' 'A' 'B' 'L' 'E' '_' '-' LocalSymbol)> */
func() bool {
position467, tokenIndex467 := position, tokenIndex
{
position468 := position
if buffer[position] != rune('$') {
goto l467
}
position++
if buffer[position] != rune('_') {
goto l467
}
position++
if buffer[position] != rune('G') {
goto l467
}
position++
if buffer[position] != rune('L') {
goto l467
}
position++
if buffer[position] != rune('O') {
goto l467
}
position++
if buffer[position] != rune('B') {
goto l467
}
position++
if buffer[position] != rune('A') {
goto l467
}
position++
if buffer[position] != rune('L') {
goto l467
}
position++
if buffer[position] != rune('_') {
goto l467
}
position++
if buffer[position] != rune('O') {
goto l467
}
position++
if buffer[position] != rune('F') {
goto l467
}
position++
if buffer[position] != rune('F') {
goto l467
}
position++
if buffer[position] != rune('S') {
goto l467
}
position++
if buffer[position] != rune('E') {
goto l467
}
position++
if buffer[position] != rune('T') {
goto l467
}
position++
if buffer[position] != rune('_') {
goto l467
}
position++
if buffer[position] != rune('T') {
goto l467
}
position++
if buffer[position] != rune('A') {
goto l467
}
position++
if buffer[position] != rune('B') {
goto l467
}
position++
if buffer[position] != rune('L') {
goto l467
}
position++
if buffer[position] != rune('E') {
goto l467
}
position++
if buffer[position] != rune('_') {
goto l467
}
position++
if buffer[position] != rune('-') {
goto l467
}
position++
if !_rules[ruleLocalSymbol]() {
goto l467
}
add(ruleGOTLocation, position468)
}
return true
l467:
position, tokenIndex = position467, tokenIndex467
return false
},
/* 34 GOTSymbolOffset <- <(('$' SymbolName ('@' 'G' 'O' 'T') ('O' 'F' 'F')?) / (':' ('g' / 'G') ('o' / 'O') ('t' / 'T') ':' SymbolName))> */
func() bool {
position469, tokenIndex469 := position, tokenIndex
{
position470 := position
{
position471, tokenIndex471 := position, tokenIndex
if buffer[position] != rune('$') {
goto l472
}
position++
if !_rules[ruleSymbolName]() {
goto l472
}
if buffer[position] != rune('@') {
goto l472
}
position++
if buffer[position] != rune('G') {
goto l472
}
position++
if buffer[position] != rune('O') {
goto l472
}
position++
if buffer[position] != rune('T') {
goto l472
}
position++
{
position473, tokenIndex473 := position, tokenIndex
if buffer[position] != rune('O') {
goto l473
}
position++
if buffer[position] != rune('F') {
goto l473
}
position++
if buffer[position] != rune('F') {
goto l473
}
position++
goto l474
l473:
position, tokenIndex = position473, tokenIndex473
}
l474:
goto l471
l472:
position, tokenIndex = position471, tokenIndex471
if buffer[position] != rune(':') {
goto l469
}
position++
{
position475, tokenIndex475 := position, tokenIndex
if buffer[position] != rune('g') {
goto l476
}
position++
goto l475
l476:
position, tokenIndex = position475, tokenIndex475
if buffer[position] != rune('G') {
goto l469
}
position++
}
l475:
{
position477, tokenIndex477 := position, tokenIndex
if buffer[position] != rune('o') {
goto l478
}
position++
goto l477
l478:
position, tokenIndex = position477, tokenIndex477
if buffer[position] != rune('O') {
goto l469
}
position++
}
l477:
{
position479, tokenIndex479 := position, tokenIndex
if buffer[position] != rune('t') {
goto l480
}
position++
goto l479
l480:
position, tokenIndex = position479, tokenIndex479
if buffer[position] != rune('T') {
goto l469
}
position++
}
l479:
if buffer[position] != rune(':') {
goto l469
}
position++
if !_rules[ruleSymbolName]() {
goto l469
}
}
l471:
add(ruleGOTSymbolOffset, position470)
}
return true
l469:
position, tokenIndex = position469, tokenIndex469
return false
},
/* 35 AVX512Token <- <(WS? '{' '%'? ([0-9] / [a-z])* '}')> */
func() bool {
position481, tokenIndex481 := position, tokenIndex
{
position482 := position
{
position483, tokenIndex483 := position, tokenIndex
if !_rules[ruleWS]() {
goto l483
}
goto l484
l483:
position, tokenIndex = position483, tokenIndex483
}
l484:
if buffer[position] != rune('{') {
goto l481
}
position++
{
position485, tokenIndex485 := position, tokenIndex
if buffer[position] != rune('%') {
goto l485
}
position++
goto l486
l485:
position, tokenIndex = position485, tokenIndex485
}
l486:
l487:
{
position488, tokenIndex488 := position, tokenIndex
{
position489, tokenIndex489 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l490
}
position++
goto l489
l490:
position, tokenIndex = position489, tokenIndex489
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l488
}
position++
}
l489:
goto l487
l488:
position, tokenIndex = position488, tokenIndex488
}
if buffer[position] != rune('}') {
goto l481
}
position++
add(ruleAVX512Token, position482)
}
return true
l481:
position, tokenIndex = position481, tokenIndex481
return false
},
/* 36 TOCRefHigh <- <('.' 'T' 'O' 'C' '.' '-' (('0' 'b') / ('.' 'L' ([a-z] / [A-Z] / '_' / [0-9])+)) ('@' ('h' / 'H') ('a' / 'A')))> */
func() bool {
position491, tokenIndex491 := position, tokenIndex
{
position492 := position
if buffer[position] != rune('.') {
goto l491
}
position++
if buffer[position] != rune('T') {
goto l491
}
position++
if buffer[position] != rune('O') {
goto l491
}
position++
if buffer[position] != rune('C') {
goto l491
}
position++
if buffer[position] != rune('.') {
goto l491
}
position++
if buffer[position] != rune('-') {
goto l491
}
position++
{
position493, tokenIndex493 := position, tokenIndex
if buffer[position] != rune('0') {
goto l494
}
position++
if buffer[position] != rune('b') {
goto l494
}
position++
goto l493
l494:
position, tokenIndex = position493, tokenIndex493
if buffer[position] != rune('.') {
goto l491
}
position++
if buffer[position] != rune('L') {
goto l491
}
position++
{
position497, tokenIndex497 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l498
}
position++
goto l497
l498:
position, tokenIndex = position497, tokenIndex497
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l499
}
position++
goto l497
l499:
position, tokenIndex = position497, tokenIndex497
if buffer[position] != rune('_') {
goto l500
}
position++
goto l497
l500:
position, tokenIndex = position497, tokenIndex497
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l491
}
position++
}
l497:
l495:
{
position496, tokenIndex496 := position, tokenIndex
{
position501, tokenIndex501 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l502
}
position++
goto l501
l502:
position, tokenIndex = position501, tokenIndex501
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l503
}
position++
goto l501
l503:
position, tokenIndex = position501, tokenIndex501
if buffer[position] != rune('_') {
goto l504
}
position++
goto l501
l504:
position, tokenIndex = position501, tokenIndex501
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l496
}
position++
}
l501:
goto l495
l496:
position, tokenIndex = position496, tokenIndex496
}
}
l493:
if buffer[position] != rune('@') {
goto l491
}
position++
{
position505, tokenIndex505 := position, tokenIndex
if buffer[position] != rune('h') {
goto l506
}
position++
goto l505
l506:
position, tokenIndex = position505, tokenIndex505
if buffer[position] != rune('H') {
goto l491
}
position++
}
l505:
{
position507, tokenIndex507 := position, tokenIndex
if buffer[position] != rune('a') {
goto l508
}
position++
goto l507
l508:
position, tokenIndex = position507, tokenIndex507
if buffer[position] != rune('A') {
goto l491
}
position++
}
l507:
add(ruleTOCRefHigh, position492)
}
return true
l491:
position, tokenIndex = position491, tokenIndex491
return false
},
/* 37 TOCRefLow <- <('.' 'T' 'O' 'C' '.' '-' (('0' 'b') / ('.' 'L' ([a-z] / [A-Z] / '_' / [0-9])+)) ('@' ('l' / 'L')))> */
func() bool {
position509, tokenIndex509 := position, tokenIndex
{
position510 := position
if buffer[position] != rune('.') {
goto l509
}
position++
if buffer[position] != rune('T') {
goto l509
}
position++
if buffer[position] != rune('O') {
goto l509
}
position++
if buffer[position] != rune('C') {
goto l509
}
position++
if buffer[position] != rune('.') {
goto l509
}
position++
if buffer[position] != rune('-') {
goto l509
}
position++
{
position511, tokenIndex511 := position, tokenIndex
if buffer[position] != rune('0') {
goto l512
}
position++
if buffer[position] != rune('b') {
goto l512
}
position++
goto l511
l512:
position, tokenIndex = position511, tokenIndex511
if buffer[position] != rune('.') {
goto l509
}
position++
if buffer[position] != rune('L') {
goto l509
}
position++
{
position515, tokenIndex515 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l516
}
position++
goto l515
l516:
position, tokenIndex = position515, tokenIndex515
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l517
}
position++
goto l515
l517:
position, tokenIndex = position515, tokenIndex515
if buffer[position] != rune('_') {
goto l518
}
position++
goto l515
l518:
position, tokenIndex = position515, tokenIndex515
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l509
}
position++
}
l515:
l513:
{
position514, tokenIndex514 := position, tokenIndex
{
position519, tokenIndex519 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l520
}
position++
goto l519
l520:
position, tokenIndex = position519, tokenIndex519
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l521
}
position++
goto l519
l521:
position, tokenIndex = position519, tokenIndex519
if buffer[position] != rune('_') {
goto l522
}
position++
goto l519
l522:
position, tokenIndex = position519, tokenIndex519
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l514
}
position++
}
l519:
goto l513
l514:
position, tokenIndex = position514, tokenIndex514
}
}
l511:
if buffer[position] != rune('@') {
goto l509
}
position++
{
position523, tokenIndex523 := position, tokenIndex
if buffer[position] != rune('l') {
goto l524
}
position++
goto l523
l524:
position, tokenIndex = position523, tokenIndex523
if buffer[position] != rune('L') {
goto l509
}
position++
}
l523:
add(ruleTOCRefLow, position510)
}
return true
l509:
position, tokenIndex = position509, tokenIndex509
return false
},
/* 38 IndirectionIndicator <- <'*'> */
func() bool {
position525, tokenIndex525 := position, tokenIndex
{
position526 := position
if buffer[position] != rune('*') {
goto l525
}
position++
add(ruleIndirectionIndicator, position526)
}
return true
l525:
position, tokenIndex = position525, tokenIndex525
return false
},
/* 39 RegisterOrConstant <- <((('%' ([a-z] / [A-Z]) ([a-z] / [A-Z] / ([0-9] / [0-9]))*) / ('$'? ((Offset Offset) / Offset)) / ('#' Offset ('*' [0-9]+ ('-' [0-9] [0-9]*)?)?) / ('#' '~'? '(' [0-9] WS? ('<' '<') WS? [0-9] ')') / ARMRegister) !('f' / 'b' / ':' / '(' / '+' / '-'))> */
func() bool {
position527, tokenIndex527 := position, tokenIndex
{
position528 := position
{
position529, tokenIndex529 := position, tokenIndex
if buffer[position] != rune('%') {
goto l530
}
position++
{
position531, tokenIndex531 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l532
}
position++
goto l531
l532:
position, tokenIndex = position531, tokenIndex531
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l530
}
position++
}
l531:
l533:
{
position534, tokenIndex534 := position, tokenIndex
{
position535, tokenIndex535 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l536
}
position++
goto l535
l536:
position, tokenIndex = position535, tokenIndex535
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l537
}
position++
goto l535
l537:
position, tokenIndex = position535, tokenIndex535
{
position538, tokenIndex538 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l539
}
position++
goto l538
l539:
position, tokenIndex = position538, tokenIndex538
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l534
}
position++
}
l538:
}
l535:
goto l533
l534:
position, tokenIndex = position534, tokenIndex534
}
goto l529
l530:
position, tokenIndex = position529, tokenIndex529
{
position541, tokenIndex541 := position, tokenIndex
if buffer[position] != rune('$') {
goto l541
}
position++
goto l542
l541:
position, tokenIndex = position541, tokenIndex541
}
l542:
{
position543, tokenIndex543 := position, tokenIndex
if !_rules[ruleOffset]() {
goto l544
}
if !_rules[ruleOffset]() {
goto l544
}
goto l543
l544:
position, tokenIndex = position543, tokenIndex543
if !_rules[ruleOffset]() {
goto l540
}
}
l543:
goto l529
l540:
position, tokenIndex = position529, tokenIndex529
if buffer[position] != rune('#') {
goto l545
}
position++
if !_rules[ruleOffset]() {
goto l545
}
{
position546, tokenIndex546 := position, tokenIndex
if buffer[position] != rune('*') {
goto l546
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l546
}
position++
l548:
{
position549, tokenIndex549 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l549
}
position++
goto l548
l549:
position, tokenIndex = position549, tokenIndex549
}
{
position550, tokenIndex550 := position, tokenIndex
if buffer[position] != rune('-') {
goto l550
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l550
}
position++
l552:
{
position553, tokenIndex553 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l553
}
position++
goto l552
l553:
position, tokenIndex = position553, tokenIndex553
}
goto l551
l550:
position, tokenIndex = position550, tokenIndex550
}
l551:
goto l547
l546:
position, tokenIndex = position546, tokenIndex546
}
l547:
goto l529
l545:
position, tokenIndex = position529, tokenIndex529
if buffer[position] != rune('#') {
goto l554
}
position++
{
position555, tokenIndex555 := position, tokenIndex
if buffer[position] != rune('~') {
goto l555
}
position++
goto l556
l555:
position, tokenIndex = position555, tokenIndex555
}
l556:
if buffer[position] != rune('(') {
goto l554
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l554
}
position++
{
position557, tokenIndex557 := position, tokenIndex
if !_rules[ruleWS]() {
goto l557
}
goto l558
l557:
position, tokenIndex = position557, tokenIndex557
}
l558:
if buffer[position] != rune('<') {
goto l554
}
position++
if buffer[position] != rune('<') {
goto l554
}
position++
{
position559, tokenIndex559 := position, tokenIndex
if !_rules[ruleWS]() {
goto l559
}
goto l560
l559:
position, tokenIndex = position559, tokenIndex559
}
l560:
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l554
}
position++
if buffer[position] != rune(')') {
goto l554
}
position++
goto l529
l554:
position, tokenIndex = position529, tokenIndex529
if !_rules[ruleARMRegister]() {
goto l527
}
}
l529:
{
position561, tokenIndex561 := position, tokenIndex
{
position562, tokenIndex562 := position, tokenIndex
if buffer[position] != rune('f') {
goto l563
}
position++
goto l562
l563:
position, tokenIndex = position562, tokenIndex562
if buffer[position] != rune('b') {
goto l564
}
position++
goto l562
l564:
position, tokenIndex = position562, tokenIndex562
if buffer[position] != rune(':') {
goto l565
}
position++
goto l562
l565:
position, tokenIndex = position562, tokenIndex562
if buffer[position] != rune('(') {
goto l566
}
position++
goto l562
l566:
position, tokenIndex = position562, tokenIndex562
if buffer[position] != rune('+') {
goto l567
}
position++
goto l562
l567:
position, tokenIndex = position562, tokenIndex562
if buffer[position] != rune('-') {
goto l561
}
position++
}
l562:
goto l527
l561:
position, tokenIndex = position561, tokenIndex561
}
add(ruleRegisterOrConstant, position528)
}
return true
l527:
position, tokenIndex = position527, tokenIndex527
return false
},
/* 40 ARMConstantTweak <- <(((('l' / 'L') ('s' / 'S') ('l' / 'L')) / (('s' / 'S') ('x' / 'X') ('t' / 'T') ('w' / 'W')) / (('s' / 'S') ('x' / 'X') ('t' / 'T') ('b' / 'B')) / (('u' / 'U') ('x' / 'X') ('t' / 'T') ('w' / 'W')) / (('u' / 'U') ('x' / 'X') ('t' / 'T') ('b' / 'B')) / (('l' / 'L') ('s' / 'S') ('r' / 'R')) / (('r' / 'R') ('o' / 'O') ('r' / 'R')) / (('a' / 'A') ('s' / 'S') ('r' / 'R'))) (WS '#' Offset)?)> */
func() bool {
position568, tokenIndex568 := position, tokenIndex
{
position569 := position
{
position570, tokenIndex570 := position, tokenIndex
{
position572, tokenIndex572 := position, tokenIndex
if buffer[position] != rune('l') {
goto l573
}
position++
goto l572
l573:
position, tokenIndex = position572, tokenIndex572
if buffer[position] != rune('L') {
goto l571
}
position++
}
l572:
{
position574, tokenIndex574 := position, tokenIndex
if buffer[position] != rune('s') {
goto l575
}
position++
goto l574
l575:
position, tokenIndex = position574, tokenIndex574
if buffer[position] != rune('S') {
goto l571
}
position++
}
l574:
{
position576, tokenIndex576 := position, tokenIndex
if buffer[position] != rune('l') {
goto l577
}
position++
goto l576
l577:
position, tokenIndex = position576, tokenIndex576
if buffer[position] != rune('L') {
goto l571
}
position++
}
l576:
goto l570
l571:
position, tokenIndex = position570, tokenIndex570
{
position579, tokenIndex579 := position, tokenIndex
if buffer[position] != rune('s') {
goto l580
}
position++
goto l579
l580:
position, tokenIndex = position579, tokenIndex579
if buffer[position] != rune('S') {
goto l578
}
position++
}
l579:
{
position581, tokenIndex581 := position, tokenIndex
if buffer[position] != rune('x') {
goto l582
}
position++
goto l581
l582:
position, tokenIndex = position581, tokenIndex581
if buffer[position] != rune('X') {
goto l578
}
position++
}
l581:
{
position583, tokenIndex583 := position, tokenIndex
if buffer[position] != rune('t') {
goto l584
}
position++
goto l583
l584:
position, tokenIndex = position583, tokenIndex583
if buffer[position] != rune('T') {
goto l578
}
position++
}
l583:
{
position585, tokenIndex585 := position, tokenIndex
if buffer[position] != rune('w') {
goto l586
}
position++
goto l585
l586:
position, tokenIndex = position585, tokenIndex585
if buffer[position] != rune('W') {
goto l578
}
position++
}
l585:
goto l570
l578:
position, tokenIndex = position570, tokenIndex570
{
position588, tokenIndex588 := position, tokenIndex
if buffer[position] != rune('s') {
goto l589
}
position++
goto l588
l589:
position, tokenIndex = position588, tokenIndex588
if buffer[position] != rune('S') {
goto l587
}
position++
}
l588:
{
position590, tokenIndex590 := position, tokenIndex
if buffer[position] != rune('x') {
goto l591
}
position++
goto l590
l591:
position, tokenIndex = position590, tokenIndex590
if buffer[position] != rune('X') {
goto l587
}
position++
}
l590:
{
position592, tokenIndex592 := position, tokenIndex
if buffer[position] != rune('t') {
goto l593
}
position++
goto l592
l593:
position, tokenIndex = position592, tokenIndex592
if buffer[position] != rune('T') {
goto l587
}
position++
}
l592:
{
position594, tokenIndex594 := position, tokenIndex
if buffer[position] != rune('b') {
goto l595
}
position++
goto l594
l595:
position, tokenIndex = position594, tokenIndex594
if buffer[position] != rune('B') {
goto l587
}
position++
}
l594:
goto l570
l587:
position, tokenIndex = position570, tokenIndex570
{
position597, tokenIndex597 := position, tokenIndex
if buffer[position] != rune('u') {
goto l598
}
position++
goto l597
l598:
position, tokenIndex = position597, tokenIndex597
if buffer[position] != rune('U') {
goto l596
}
position++
}
l597:
{
position599, tokenIndex599 := position, tokenIndex
if buffer[position] != rune('x') {
goto l600
}
position++
goto l599
l600:
position, tokenIndex = position599, tokenIndex599
if buffer[position] != rune('X') {
goto l596
}
position++
}
l599:
{
position601, tokenIndex601 := position, tokenIndex
if buffer[position] != rune('t') {
goto l602
}
position++
goto l601
l602:
position, tokenIndex = position601, tokenIndex601
if buffer[position] != rune('T') {
goto l596
}
position++
}
l601:
{
position603, tokenIndex603 := position, tokenIndex
if buffer[position] != rune('w') {
goto l604
}
position++
goto l603
l604:
position, tokenIndex = position603, tokenIndex603
if buffer[position] != rune('W') {
goto l596
}
position++
}
l603:
goto l570
l596:
position, tokenIndex = position570, tokenIndex570
{
position606, tokenIndex606 := position, tokenIndex
if buffer[position] != rune('u') {
goto l607
}
position++
goto l606
l607:
position, tokenIndex = position606, tokenIndex606
if buffer[position] != rune('U') {
goto l605
}
position++
}
l606:
{
position608, tokenIndex608 := position, tokenIndex
if buffer[position] != rune('x') {
goto l609
}
position++
goto l608
l609:
position, tokenIndex = position608, tokenIndex608
if buffer[position] != rune('X') {
goto l605
}
position++
}
l608:
{
position610, tokenIndex610 := position, tokenIndex
if buffer[position] != rune('t') {
goto l611
}
position++
goto l610
l611:
position, tokenIndex = position610, tokenIndex610
if buffer[position] != rune('T') {
goto l605
}
position++
}
l610:
{
position612, tokenIndex612 := position, tokenIndex
if buffer[position] != rune('b') {
goto l613
}
position++
goto l612
l613:
position, tokenIndex = position612, tokenIndex612
if buffer[position] != rune('B') {
goto l605
}
position++
}
l612:
goto l570
l605:
position, tokenIndex = position570, tokenIndex570
{
position615, tokenIndex615 := position, tokenIndex
if buffer[position] != rune('l') {
goto l616
}
position++
goto l615
l616:
position, tokenIndex = position615, tokenIndex615
if buffer[position] != rune('L') {
goto l614
}
position++
}
l615:
{
position617, tokenIndex617 := position, tokenIndex
if buffer[position] != rune('s') {
goto l618
}
position++
goto l617
l618:
position, tokenIndex = position617, tokenIndex617
if buffer[position] != rune('S') {
goto l614
}
position++
}
l617:
{
position619, tokenIndex619 := position, tokenIndex
if buffer[position] != rune('r') {
goto l620
}
position++
goto l619
l620:
position, tokenIndex = position619, tokenIndex619
if buffer[position] != rune('R') {
goto l614
}
position++
}
l619:
goto l570
l614:
position, tokenIndex = position570, tokenIndex570
{
position622, tokenIndex622 := position, tokenIndex
if buffer[position] != rune('r') {
goto l623
}
position++
goto l622
l623:
position, tokenIndex = position622, tokenIndex622
if buffer[position] != rune('R') {
goto l621
}
position++
}
l622:
{
position624, tokenIndex624 := position, tokenIndex
if buffer[position] != rune('o') {
goto l625
}
position++
goto l624
l625:
position, tokenIndex = position624, tokenIndex624
if buffer[position] != rune('O') {
goto l621
}
position++
}
l624:
{
position626, tokenIndex626 := position, tokenIndex
if buffer[position] != rune('r') {
goto l627
}
position++
goto l626
l627:
position, tokenIndex = position626, tokenIndex626
if buffer[position] != rune('R') {
goto l621
}
position++
}
l626:
goto l570
l621:
position, tokenIndex = position570, tokenIndex570
{
position628, tokenIndex628 := position, tokenIndex
if buffer[position] != rune('a') {
goto l629
}
position++
goto l628
l629:
position, tokenIndex = position628, tokenIndex628
if buffer[position] != rune('A') {
goto l568
}
position++
}
l628:
{
position630, tokenIndex630 := position, tokenIndex
if buffer[position] != rune('s') {
goto l631
}
position++
goto l630
l631:
position, tokenIndex = position630, tokenIndex630
if buffer[position] != rune('S') {
goto l568
}
position++
}
l630:
{
position632, tokenIndex632 := position, tokenIndex
if buffer[position] != rune('r') {
goto l633
}
position++
goto l632
l633:
position, tokenIndex = position632, tokenIndex632
if buffer[position] != rune('R') {
goto l568
}
position++
}
l632:
}
l570:
{
position634, tokenIndex634 := position, tokenIndex
if !_rules[ruleWS]() {
goto l634
}
if buffer[position] != rune('#') {
goto l634
}
position++
if !_rules[ruleOffset]() {
goto l634
}
goto l635
l634:
position, tokenIndex = position634, tokenIndex634
}
l635:
add(ruleARMConstantTweak, position569)
}
return true
l568:
position, tokenIndex = position568, tokenIndex568
return false
},
/* 41 ARMRegister <- <((('s' / 'S') ('p' / 'P')) / (('x' / 'w' / 'd' / 'q' / 's') [0-9] [0-9]?) / (('x' / 'X') ('z' / 'Z') ('r' / 'R')) / (('w' / 'W') ('z' / 'Z') ('r' / 'R')) / ARMVectorRegister / ('{' WS? ARMVectorRegister (',' WS? ARMVectorRegister)* WS? '}' ('[' [0-9] [0-9]? ']')?))> */
func() bool {
position636, tokenIndex636 := position, tokenIndex
{
position637 := position
{
position638, tokenIndex638 := position, tokenIndex
{
position640, tokenIndex640 := position, tokenIndex
if buffer[position] != rune('s') {
goto l641
}
position++
goto l640
l641:
position, tokenIndex = position640, tokenIndex640
if buffer[position] != rune('S') {
goto l639
}
position++
}
l640:
{
position642, tokenIndex642 := position, tokenIndex
if buffer[position] != rune('p') {
goto l643
}
position++
goto l642
l643:
position, tokenIndex = position642, tokenIndex642
if buffer[position] != rune('P') {
goto l639
}
position++
}
l642:
goto l638
l639:
position, tokenIndex = position638, tokenIndex638
{
position645, tokenIndex645 := position, tokenIndex
if buffer[position] != rune('x') {
goto l646
}
position++
goto l645
l646:
position, tokenIndex = position645, tokenIndex645
if buffer[position] != rune('w') {
goto l647
}
position++
goto l645
l647:
position, tokenIndex = position645, tokenIndex645
if buffer[position] != rune('d') {
goto l648
}
position++
goto l645
l648:
position, tokenIndex = position645, tokenIndex645
if buffer[position] != rune('q') {
goto l649
}
position++
goto l645
l649:
position, tokenIndex = position645, tokenIndex645
if buffer[position] != rune('s') {
goto l644
}
position++
}
l645:
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l644
}
position++
{
position650, tokenIndex650 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l650
}
position++
goto l651
l650:
position, tokenIndex = position650, tokenIndex650
}
l651:
goto l638
l644:
position, tokenIndex = position638, tokenIndex638
{
position653, tokenIndex653 := position, tokenIndex
if buffer[position] != rune('x') {
goto l654
}
position++
goto l653
l654:
position, tokenIndex = position653, tokenIndex653
if buffer[position] != rune('X') {
goto l652
}
position++
}
l653:
{
position655, tokenIndex655 := position, tokenIndex
if buffer[position] != rune('z') {
goto l656
}
position++
goto l655
l656:
position, tokenIndex = position655, tokenIndex655
if buffer[position] != rune('Z') {
goto l652
}
position++
}
l655:
{
position657, tokenIndex657 := position, tokenIndex
if buffer[position] != rune('r') {
goto l658
}
position++
goto l657
l658:
position, tokenIndex = position657, tokenIndex657
if buffer[position] != rune('R') {
goto l652
}
position++
}
l657:
goto l638
l652:
position, tokenIndex = position638, tokenIndex638
{
position660, tokenIndex660 := position, tokenIndex
if buffer[position] != rune('w') {
goto l661
}
position++
goto l660
l661:
position, tokenIndex = position660, tokenIndex660
if buffer[position] != rune('W') {
goto l659
}
position++
}
l660:
{
position662, tokenIndex662 := position, tokenIndex
if buffer[position] != rune('z') {
goto l663
}
position++
goto l662
l663:
position, tokenIndex = position662, tokenIndex662
if buffer[position] != rune('Z') {
goto l659
}
position++
}
l662:
{
position664, tokenIndex664 := position, tokenIndex
if buffer[position] != rune('r') {
goto l665
}
position++
goto l664
l665:
position, tokenIndex = position664, tokenIndex664
if buffer[position] != rune('R') {
goto l659
}
position++
}
l664:
goto l638
l659:
position, tokenIndex = position638, tokenIndex638
if !_rules[ruleARMVectorRegister]() {
goto l666
}
goto l638
l666:
position, tokenIndex = position638, tokenIndex638
if buffer[position] != rune('{') {
goto l636
}
position++
{
position667, tokenIndex667 := position, tokenIndex
if !_rules[ruleWS]() {
goto l667
}
goto l668
l667:
position, tokenIndex = position667, tokenIndex667
}
l668:
if !_rules[ruleARMVectorRegister]() {
goto l636
}
l669:
{
position670, tokenIndex670 := position, tokenIndex
if buffer[position] != rune(',') {
goto l670
}
position++
{
position671, tokenIndex671 := position, tokenIndex
if !_rules[ruleWS]() {
goto l671
}
goto l672
l671:
position, tokenIndex = position671, tokenIndex671
}
l672:
if !_rules[ruleARMVectorRegister]() {
goto l670
}
goto l669
l670:
position, tokenIndex = position670, tokenIndex670
}
{
position673, tokenIndex673 := position, tokenIndex
if !_rules[ruleWS]() {
goto l673
}
goto l674
l673:
position, tokenIndex = position673, tokenIndex673
}
l674:
if buffer[position] != rune('}') {
goto l636
}
position++
{
position675, tokenIndex675 := position, tokenIndex
if buffer[position] != rune('[') {
goto l675
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l675
}
position++
{
position677, tokenIndex677 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l677
}
position++
goto l678
l677:
position, tokenIndex = position677, tokenIndex677
}
l678:
if buffer[position] != rune(']') {
goto l675
}
position++
goto l676
l675:
position, tokenIndex = position675, tokenIndex675
}
l676:
}
l638:
add(ruleARMRegister, position637)
}
return true
l636:
position, tokenIndex = position636, tokenIndex636
return false
},
/* 42 ARMVectorRegister <- <(('v' / 'V') [0-9] [0-9]? ('.' [0-9]* ('b' / 's' / 'd' / 'h' / 'q') ('[' [0-9] [0-9]? ']')?)?)> */
func() bool {
position679, tokenIndex679 := position, tokenIndex
{
position680 := position
{
position681, tokenIndex681 := position, tokenIndex
if buffer[position] != rune('v') {
goto l682
}
position++
goto l681
l682:
position, tokenIndex = position681, tokenIndex681
if buffer[position] != rune('V') {
goto l679
}
position++
}
l681:
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l679
}
position++
{
position683, tokenIndex683 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l683
}
position++
goto l684
l683:
position, tokenIndex = position683, tokenIndex683
}
l684:
{
position685, tokenIndex685 := position, tokenIndex
if buffer[position] != rune('.') {
goto l685
}
position++
l687:
{
position688, tokenIndex688 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l688
}
position++
goto l687
l688:
position, tokenIndex = position688, tokenIndex688
}
{
position689, tokenIndex689 := position, tokenIndex
if buffer[position] != rune('b') {
goto l690
}
position++
goto l689
l690:
position, tokenIndex = position689, tokenIndex689
if buffer[position] != rune('s') {
goto l691
}
position++
goto l689
l691:
position, tokenIndex = position689, tokenIndex689
if buffer[position] != rune('d') {
goto l692
}
position++
goto l689
l692:
position, tokenIndex = position689, tokenIndex689
if buffer[position] != rune('h') {
goto l693
}
position++
goto l689
l693:
position, tokenIndex = position689, tokenIndex689
if buffer[position] != rune('q') {
goto l685
}
position++
}
l689:
{
position694, tokenIndex694 := position, tokenIndex
if buffer[position] != rune('[') {
goto l694
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l694
}
position++
{
position696, tokenIndex696 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l696
}
position++
goto l697
l696:
position, tokenIndex = position696, tokenIndex696
}
l697:
if buffer[position] != rune(']') {
goto l694
}
position++
goto l695
l694:
position, tokenIndex = position694, tokenIndex694
}
l695:
goto l686
l685:
position, tokenIndex = position685, tokenIndex685
}
l686:
add(ruleARMVectorRegister, position680)
}
return true
l679:
position, tokenIndex = position679, tokenIndex679
return false
},
/* 43 MemoryRef <- <((SymbolRef BaseIndexScale) / SymbolRef / Low12BitsSymbolRef / (Offset* BaseIndexScale) / (SegmentRegister Offset BaseIndexScale) / (SegmentRegister BaseIndexScale) / (SegmentRegister Offset) / ARMBaseIndexScale / BaseIndexScale)> */
func() bool {
position698, tokenIndex698 := position, tokenIndex
{
position699 := position
{
position700, tokenIndex700 := position, tokenIndex
if !_rules[ruleSymbolRef]() {
goto l701
}
if !_rules[ruleBaseIndexScale]() {
goto l701
}
goto l700
l701:
position, tokenIndex = position700, tokenIndex700
if !_rules[ruleSymbolRef]() {
goto l702
}
goto l700
l702:
position, tokenIndex = position700, tokenIndex700
if !_rules[ruleLow12BitsSymbolRef]() {
goto l703
}
goto l700
l703:
position, tokenIndex = position700, tokenIndex700
l705:
{
position706, tokenIndex706 := position, tokenIndex
if !_rules[ruleOffset]() {
goto l706
}
goto l705
l706:
position, tokenIndex = position706, tokenIndex706
}
if !_rules[ruleBaseIndexScale]() {
goto l704
}
goto l700
l704:
position, tokenIndex = position700, tokenIndex700
if !_rules[ruleSegmentRegister]() {
goto l707
}
if !_rules[ruleOffset]() {
goto l707
}
if !_rules[ruleBaseIndexScale]() {
goto l707
}
goto l700
l707:
position, tokenIndex = position700, tokenIndex700
if !_rules[ruleSegmentRegister]() {
goto l708
}
if !_rules[ruleBaseIndexScale]() {
goto l708
}
goto l700
l708:
position, tokenIndex = position700, tokenIndex700
if !_rules[ruleSegmentRegister]() {
goto l709
}
if !_rules[ruleOffset]() {
goto l709
}
goto l700
l709:
position, tokenIndex = position700, tokenIndex700
if !_rules[ruleARMBaseIndexScale]() {
goto l710
}
goto l700
l710:
position, tokenIndex = position700, tokenIndex700
if !_rules[ruleBaseIndexScale]() {
goto l698
}
}
l700:
add(ruleMemoryRef, position699)
}
return true
l698:
position, tokenIndex = position698, tokenIndex698
return false
},
/* 44 SymbolRef <- <((Offset* '+')? (LocalSymbol / SymbolName) Offset* ('@' Section Offset*)?)> */
func() bool {
position711, tokenIndex711 := position, tokenIndex
{
position712 := position
{
position713, tokenIndex713 := position, tokenIndex
l715:
{
position716, tokenIndex716 := position, tokenIndex
if !_rules[ruleOffset]() {
goto l716
}
goto l715
l716:
position, tokenIndex = position716, tokenIndex716
}
if buffer[position] != rune('+') {
goto l713
}
position++
goto l714
l713:
position, tokenIndex = position713, tokenIndex713
}
l714:
{
position717, tokenIndex717 := position, tokenIndex
if !_rules[ruleLocalSymbol]() {
goto l718
}
goto l717
l718:
position, tokenIndex = position717, tokenIndex717
if !_rules[ruleSymbolName]() {
goto l711
}
}
l717:
l719:
{
position720, tokenIndex720 := position, tokenIndex
if !_rules[ruleOffset]() {
goto l720
}
goto l719
l720:
position, tokenIndex = position720, tokenIndex720
}
{
position721, tokenIndex721 := position, tokenIndex
if buffer[position] != rune('@') {
goto l721
}
position++
if !_rules[ruleSection]() {
goto l721
}
l723:
{
position724, tokenIndex724 := position, tokenIndex
if !_rules[ruleOffset]() {
goto l724
}
goto l723
l724:
position, tokenIndex = position724, tokenIndex724
}
goto l722
l721:
position, tokenIndex = position721, tokenIndex721
}
l722:
add(ruleSymbolRef, position712)
}
return true
l711:
position, tokenIndex = position711, tokenIndex711
return false
},
/* 45 Low12BitsSymbolRef <- <(':' ('l' / 'L') ('o' / 'O') '1' '2' ':' (LocalSymbol / SymbolName) Offset?)> */
func() bool {
position725, tokenIndex725 := position, tokenIndex
{
position726 := position
if buffer[position] != rune(':') {
goto l725
}
position++
{
position727, tokenIndex727 := position, tokenIndex
if buffer[position] != rune('l') {
goto l728
}
position++
goto l727
l728:
position, tokenIndex = position727, tokenIndex727
if buffer[position] != rune('L') {
goto l725
}
position++
}
l727:
{
position729, tokenIndex729 := position, tokenIndex
if buffer[position] != rune('o') {
goto l730
}
position++
goto l729
l730:
position, tokenIndex = position729, tokenIndex729
if buffer[position] != rune('O') {
goto l725
}
position++
}
l729:
if buffer[position] != rune('1') {
goto l725
}
position++
if buffer[position] != rune('2') {
goto l725
}
position++
if buffer[position] != rune(':') {
goto l725
}
position++
{
position731, tokenIndex731 := position, tokenIndex
if !_rules[ruleLocalSymbol]() {
goto l732
}
goto l731
l732:
position, tokenIndex = position731, tokenIndex731
if !_rules[ruleSymbolName]() {
goto l725
}
}
l731:
{
position733, tokenIndex733 := position, tokenIndex
if !_rules[ruleOffset]() {
goto l733
}
goto l734
l733:
position, tokenIndex = position733, tokenIndex733
}
l734:
add(ruleLow12BitsSymbolRef, position726)
}
return true
l725:
position, tokenIndex = position725, tokenIndex725
return false
},
/* 46 ARMBaseIndexScale <- <('[' ARMRegister (',' WS? (('#' Offset ('*' [0-9]+)?) / ARMGOTLow12 / Low12BitsSymbolRef / ARMRegister) (',' WS? ARMConstantTweak)?)? ']' ARMPostincrement?)> */
func() bool {
position735, tokenIndex735 := position, tokenIndex
{
position736 := position
if buffer[position] != rune('[') {
goto l735
}
position++
if !_rules[ruleARMRegister]() {
goto l735
}
{
position737, tokenIndex737 := position, tokenIndex
if buffer[position] != rune(',') {
goto l737
}
position++
{
position739, tokenIndex739 := position, tokenIndex
if !_rules[ruleWS]() {
goto l739
}
goto l740
l739:
position, tokenIndex = position739, tokenIndex739
}
l740:
{
position741, tokenIndex741 := position, tokenIndex
if buffer[position] != rune('#') {
goto l742
}
position++
if !_rules[ruleOffset]() {
goto l742
}
{
position743, tokenIndex743 := position, tokenIndex
if buffer[position] != rune('*') {
goto l743
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l743
}
position++
l745:
{
position746, tokenIndex746 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l746
}
position++
goto l745
l746:
position, tokenIndex = position746, tokenIndex746
}
goto l744
l743:
position, tokenIndex = position743, tokenIndex743
}
l744:
goto l741
l742:
position, tokenIndex = position741, tokenIndex741
if !_rules[ruleARMGOTLow12]() {
goto l747
}
goto l741
l747:
position, tokenIndex = position741, tokenIndex741
if !_rules[ruleLow12BitsSymbolRef]() {
goto l748
}
goto l741
l748:
position, tokenIndex = position741, tokenIndex741
if !_rules[ruleARMRegister]() {
goto l737
}
}
l741:
{
position749, tokenIndex749 := position, tokenIndex
if buffer[position] != rune(',') {
goto l749
}
position++
{
position751, tokenIndex751 := position, tokenIndex
if !_rules[ruleWS]() {
goto l751
}
goto l752
l751:
position, tokenIndex = position751, tokenIndex751
}
l752:
if !_rules[ruleARMConstantTweak]() {
goto l749
}
goto l750
l749:
position, tokenIndex = position749, tokenIndex749
}
l750:
goto l738
l737:
position, tokenIndex = position737, tokenIndex737
}
l738:
if buffer[position] != rune(']') {
goto l735
}
position++
{
position753, tokenIndex753 := position, tokenIndex
if !_rules[ruleARMPostincrement]() {
goto l753
}
goto l754
l753:
position, tokenIndex = position753, tokenIndex753
}
l754:
add(ruleARMBaseIndexScale, position736)
}
return true
l735:
position, tokenIndex = position735, tokenIndex735
return false
},
/* 47 ARMGOTLow12 <- <(':' ('g' / 'G') ('o' / 'O') ('t' / 'T') '_' ('l' / 'L') ('o' / 'O') '1' '2' ':' SymbolName)> */
func() bool {
position755, tokenIndex755 := position, tokenIndex
{
position756 := position
if buffer[position] != rune(':') {
goto l755
}
position++
{
position757, tokenIndex757 := position, tokenIndex
if buffer[position] != rune('g') {
goto l758
}
position++
goto l757
l758:
position, tokenIndex = position757, tokenIndex757
if buffer[position] != rune('G') {
goto l755
}
position++
}
l757:
{
position759, tokenIndex759 := position, tokenIndex
if buffer[position] != rune('o') {
goto l760
}
position++
goto l759
l760:
position, tokenIndex = position759, tokenIndex759
if buffer[position] != rune('O') {
goto l755
}
position++
}
l759:
{
position761, tokenIndex761 := position, tokenIndex
if buffer[position] != rune('t') {
goto l762
}
position++
goto l761
l762:
position, tokenIndex = position761, tokenIndex761
if buffer[position] != rune('T') {
goto l755
}
position++
}
l761:
if buffer[position] != rune('_') {
goto l755
}
position++
{
position763, tokenIndex763 := position, tokenIndex
if buffer[position] != rune('l') {
goto l764
}
position++
goto l763
l764:
position, tokenIndex = position763, tokenIndex763
if buffer[position] != rune('L') {
goto l755
}
position++
}
l763:
{
position765, tokenIndex765 := position, tokenIndex
if buffer[position] != rune('o') {
goto l766
}
position++
goto l765
l766:
position, tokenIndex = position765, tokenIndex765
if buffer[position] != rune('O') {
goto l755
}
position++
}
l765:
if buffer[position] != rune('1') {
goto l755
}
position++
if buffer[position] != rune('2') {
goto l755
}
position++
if buffer[position] != rune(':') {
goto l755
}
position++
if !_rules[ruleSymbolName]() {
goto l755
}
add(ruleARMGOTLow12, position756)
}
return true
l755:
position, tokenIndex = position755, tokenIndex755
return false
},
/* 48 ARMPostincrement <- <'!'> */
func() bool {
position767, tokenIndex767 := position, tokenIndex
{
position768 := position
if buffer[position] != rune('!') {
goto l767
}
position++
add(ruleARMPostincrement, position768)
}
return true
l767:
position, tokenIndex = position767, tokenIndex767
return false
},
/* 49 BaseIndexScale <- <('(' RegisterOrConstant? WS? (',' WS? RegisterOrConstant WS? (',' [0-9]+)?)? ')')> */
func() bool {
position769, tokenIndex769 := position, tokenIndex
{
position770 := position
if buffer[position] != rune('(') {
goto l769
}
position++
{
position771, tokenIndex771 := position, tokenIndex
if !_rules[ruleRegisterOrConstant]() {
goto l771
}
goto l772
l771:
position, tokenIndex = position771, tokenIndex771
}
l772:
{
position773, tokenIndex773 := position, tokenIndex
if !_rules[ruleWS]() {
goto l773
}
goto l774
l773:
position, tokenIndex = position773, tokenIndex773
}
l774:
{
position775, tokenIndex775 := position, tokenIndex
if buffer[position] != rune(',') {
goto l775
}
position++
{
position777, tokenIndex777 := position, tokenIndex
if !_rules[ruleWS]() {
goto l777
}
goto l778
l777:
position, tokenIndex = position777, tokenIndex777
}
l778:
if !_rules[ruleRegisterOrConstant]() {
goto l775
}
{
position779, tokenIndex779 := position, tokenIndex
if !_rules[ruleWS]() {
goto l779
}
goto l780
l779:
position, tokenIndex = position779, tokenIndex779
}
l780:
{
position781, tokenIndex781 := position, tokenIndex
if buffer[position] != rune(',') {
goto l781
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l781
}
position++
l783:
{
position784, tokenIndex784 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l784
}
position++
goto l783
l784:
position, tokenIndex = position784, tokenIndex784
}
goto l782
l781:
position, tokenIndex = position781, tokenIndex781
}
l782:
goto l776
l775:
position, tokenIndex = position775, tokenIndex775
}
l776:
if buffer[position] != rune(')') {
goto l769
}
position++
add(ruleBaseIndexScale, position770)
}
return true
l769:
position, tokenIndex = position769, tokenIndex769
return false
},
/* 50 Operator <- <('+' / '-')> */
func() bool {
position785, tokenIndex785 := position, tokenIndex
{
position786 := position
{
position787, tokenIndex787 := position, tokenIndex
if buffer[position] != rune('+') {
goto l788
}
position++
goto l787
l788:
position, tokenIndex = position787, tokenIndex787
if buffer[position] != rune('-') {
goto l785
}
position++
}
l787:
add(ruleOperator, position786)
}
return true
l785:
position, tokenIndex = position785, tokenIndex785
return false
},
/* 51 Offset <- <('+'? '-'? (('0' ('b' / 'B') ('0' / '1')+) / ('0' ('x' / 'X') ([0-9] / [0-9] / ([a-f] / [A-F]))+) / [0-9]+))> */
func() bool {
position789, tokenIndex789 := position, tokenIndex
{
position790 := position
{
position791, tokenIndex791 := position, tokenIndex
if buffer[position] != rune('+') {
goto l791
}
position++
goto l792
l791:
position, tokenIndex = position791, tokenIndex791
}
l792:
{
position793, tokenIndex793 := position, tokenIndex
if buffer[position] != rune('-') {
goto l793
}
position++
goto l794
l793:
position, tokenIndex = position793, tokenIndex793
}
l794:
{
position795, tokenIndex795 := position, tokenIndex
if buffer[position] != rune('0') {
goto l796
}
position++
{
position797, tokenIndex797 := position, tokenIndex
if buffer[position] != rune('b') {
goto l798
}
position++
goto l797
l798:
position, tokenIndex = position797, tokenIndex797
if buffer[position] != rune('B') {
goto l796
}
position++
}
l797:
{
position801, tokenIndex801 := position, tokenIndex
if buffer[position] != rune('0') {
goto l802
}
position++
goto l801
l802:
position, tokenIndex = position801, tokenIndex801
if buffer[position] != rune('1') {
goto l796
}
position++
}
l801:
l799:
{
position800, tokenIndex800 := position, tokenIndex
{
position803, tokenIndex803 := position, tokenIndex
if buffer[position] != rune('0') {
goto l804
}
position++
goto l803
l804:
position, tokenIndex = position803, tokenIndex803
if buffer[position] != rune('1') {
goto l800
}
position++
}
l803:
goto l799
l800:
position, tokenIndex = position800, tokenIndex800
}
goto l795
l796:
position, tokenIndex = position795, tokenIndex795
if buffer[position] != rune('0') {
goto l805
}
position++
{
position806, tokenIndex806 := position, tokenIndex
if buffer[position] != rune('x') {
goto l807
}
position++
goto l806
l807:
position, tokenIndex = position806, tokenIndex806
if buffer[position] != rune('X') {
goto l805
}
position++
}
l806:
{
position810, tokenIndex810 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l811
}
position++
goto l810
l811:
position, tokenIndex = position810, tokenIndex810
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l812
}
position++
goto l810
l812:
position, tokenIndex = position810, tokenIndex810
{
position813, tokenIndex813 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('f') {
goto l814
}
position++
goto l813
l814:
position, tokenIndex = position813, tokenIndex813
if c := buffer[position]; c < rune('A') || c > rune('F') {
goto l805
}
position++
}
l813:
}
l810:
l808:
{
position809, tokenIndex809 := position, tokenIndex
{
position815, tokenIndex815 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l816
}
position++
goto l815
l816:
position, tokenIndex = position815, tokenIndex815
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l817
}
position++
goto l815
l817:
position, tokenIndex = position815, tokenIndex815
{
position818, tokenIndex818 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('f') {
goto l819
}
position++
goto l818
l819:
position, tokenIndex = position818, tokenIndex818
if c := buffer[position]; c < rune('A') || c > rune('F') {
goto l809
}
position++
}
l818:
}
l815:
goto l808
l809:
position, tokenIndex = position809, tokenIndex809
}
goto l795
l805:
position, tokenIndex = position795, tokenIndex795
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l789
}
position++
l820:
{
position821, tokenIndex821 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l821
}
position++
goto l820
l821:
position, tokenIndex = position821, tokenIndex821
}
}
l795:
add(ruleOffset, position790)
}
return true
l789:
position, tokenIndex = position789, tokenIndex789
return false
},
/* 52 Section <- <([a-z] / [A-Z] / '@')+> */
func() bool {
position822, tokenIndex822 := position, tokenIndex
{
position823 := position
{
position826, tokenIndex826 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l827
}
position++
goto l826
l827:
position, tokenIndex = position826, tokenIndex826
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l828
}
position++
goto l826
l828:
position, tokenIndex = position826, tokenIndex826
if buffer[position] != rune('@') {
goto l822
}
position++
}
l826:
l824:
{
position825, tokenIndex825 := position, tokenIndex
{
position829, tokenIndex829 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l830
}
position++
goto l829
l830:
position, tokenIndex = position829, tokenIndex829
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l831
}
position++
goto l829
l831:
position, tokenIndex = position829, tokenIndex829
if buffer[position] != rune('@') {
goto l825
}
position++
}
l829:
goto l824
l825:
position, tokenIndex = position825, tokenIndex825
}
add(ruleSection, position823)
}
return true
l822:
position, tokenIndex = position822, tokenIndex822
return false
},
/* 53 SegmentRegister <- <('%' ([c-g] / 's') ('s' ':'))> */
func() bool {
position832, tokenIndex832 := position, tokenIndex
{
position833 := position
if buffer[position] != rune('%') {
goto l832
}
position++
{
position834, tokenIndex834 := position, tokenIndex
if c := buffer[position]; c < rune('c') || c > rune('g') {
goto l835
}
position++
goto l834
l835:
position, tokenIndex = position834, tokenIndex834
if buffer[position] != rune('s') {
goto l832
}
position++
}
l834:
if buffer[position] != rune('s') {
goto l832
}
position++
if buffer[position] != rune(':') {
goto l832
}
position++
add(ruleSegmentRegister, position833)
}
return true
l832:
position, tokenIndex = position832, tokenIndex832
return false
},
}
p.rules = _rules
}