blob: 6e21346e0b0b23fe5d123df25e97021aca3c9e92 [file] [log] [blame]
package main
import (
"fmt"
"math"
"sort"
"strconv"
)
const endSymbol rune = 1114112
/* The rule types inferred from the grammar are below. */
type pegRule uint8
const (
ruleUnknown pegRule = iota
ruleAsmFile
ruleStatement
ruleGlobalDirective
ruleDirective
ruleDirectiveName
ruleLocationDirective
ruleFileDirective
ruleLocDirective
ruleArgs
ruleArg
ruleQuotedArg
ruleQuotedText
ruleLabelContainingDirective
ruleLabelContainingDirectiveName
ruleSymbolArgs
ruleSymbolArg
ruleSymbolType
ruleDot
ruleTCMarker
ruleEscapedChar
ruleWS
ruleComment
ruleLabel
ruleSymbolName
ruleLocalSymbol
ruleLocalLabel
ruleLocalLabelRef
ruleInstruction
ruleInstructionName
ruleInstructionArg
ruleGOTLocation
ruleGOTSymbolOffset
ruleAVX512Token
ruleTOCRefHigh
ruleTOCRefLow
ruleIndirectionIndicator
ruleRegisterOrConstant
ruleARMConstantTweak
ruleARMRegister
ruleARMVectorRegister
ruleMemoryRef
ruleSymbolRef
ruleLow12BitsSymbolRef
ruleARMBaseIndexScale
ruleARMGOTLow12
ruleARMPostincrement
ruleBaseIndexScale
ruleOperator
ruleOffset
ruleSection
ruleSegmentRegister
)
var rul3s = [...]string{
"Unknown",
"AsmFile",
"Statement",
"GlobalDirective",
"Directive",
"DirectiveName",
"LocationDirective",
"FileDirective",
"LocDirective",
"Args",
"Arg",
"QuotedArg",
"QuotedText",
"LabelContainingDirective",
"LabelContainingDirectiveName",
"SymbolArgs",
"SymbolArg",
"SymbolType",
"Dot",
"TCMarker",
"EscapedChar",
"WS",
"Comment",
"Label",
"SymbolName",
"LocalSymbol",
"LocalLabel",
"LocalLabelRef",
"Instruction",
"InstructionName",
"InstructionArg",
"GOTLocation",
"GOTSymbolOffset",
"AVX512Token",
"TOCRefHigh",
"TOCRefLow",
"IndirectionIndicator",
"RegisterOrConstant",
"ARMConstantTweak",
"ARMRegister",
"ARMVectorRegister",
"MemoryRef",
"SymbolRef",
"Low12BitsSymbolRef",
"ARMBaseIndexScale",
"ARMGOTLow12",
"ARMPostincrement",
"BaseIndexScale",
"Operator",
"Offset",
"Section",
"SegmentRegister",
}
type token32 struct {
pegRule
begin, end uint32
}
func (t *token32) String() string {
return fmt.Sprintf("\x1B[34m%v\x1B[m %v %v", rul3s[t.pegRule], t.begin, t.end)
}
type node32 struct {
token32
up, next *node32
}
func (node *node32) print(pretty bool, buffer string) {
var print func(node *node32, depth int)
print = func(node *node32, depth int) {
for node != nil {
for c := 0; c < depth; c++ {
fmt.Printf(" ")
}
rule := rul3s[node.pegRule]
quote := strconv.Quote(string(([]rune(buffer)[node.begin:node.end])))
if !pretty {
fmt.Printf("%v %v\n", rule, quote)
} else {
fmt.Printf("\x1B[34m%v\x1B[m %v\n", rule, quote)
}
if node.up != nil {
print(node.up, depth+1)
}
node = node.next
}
}
print(node, 0)
}
func (node *node32) Print(buffer string) {
node.print(false, buffer)
}
func (node *node32) PrettyPrint(buffer string) {
node.print(true, buffer)
}
type tokens32 struct {
tree []token32
}
func (t *tokens32) Trim(length uint32) {
t.tree = t.tree[:length]
}
func (t *tokens32) Print() {
for _, token := range t.tree {
fmt.Println(token.String())
}
}
func (t *tokens32) AST() *node32 {
type element struct {
node *node32
down *element
}
tokens := t.Tokens()
var stack *element
for _, token := range tokens {
if token.begin == token.end {
continue
}
node := &node32{token32: token}
for stack != nil && stack.node.begin >= token.begin && stack.node.end <= token.end {
stack.node.next = node.up
node.up = stack.node
stack = stack.down
}
stack = &element{node: node, down: stack}
}
if stack != nil {
return stack.node
}
return nil
}
func (t *tokens32) PrintSyntaxTree(buffer string) {
t.AST().Print(buffer)
}
func (t *tokens32) PrettyPrintSyntaxTree(buffer string) {
t.AST().PrettyPrint(buffer)
}
func (t *tokens32) Add(rule pegRule, begin, end, index uint32) {
if tree := t.tree; int(index) >= len(tree) {
expanded := make([]token32, 2*len(tree))
copy(expanded, tree)
t.tree = expanded
}
t.tree[index] = token32{
pegRule: rule,
begin: begin,
end: end,
}
}
func (t *tokens32) Tokens() []token32 {
return t.tree
}
type Asm struct {
Buffer string
buffer []rune
rules [52]func() bool
parse func(rule ...int) error
reset func()
Pretty bool
tokens32
}
func (p *Asm) Parse(rule ...int) error {
return p.parse(rule...)
}
func (p *Asm) Reset() {
p.reset()
}
type textPosition struct {
line, symbol int
}
type textPositionMap map[int]textPosition
func translatePositions(buffer []rune, positions []int) textPositionMap {
length, translations, j, line, symbol := len(positions), make(textPositionMap, len(positions)), 0, 1, 0
sort.Ints(positions)
search:
for i, c := range buffer {
if c == '\n' {
line, symbol = line+1, 0
} else {
symbol++
}
if i == positions[j] {
translations[positions[j]] = textPosition{line, symbol}
for j++; j < length; j++ {
if i != positions[j] {
continue search
}
}
break search
}
}
return translations
}
type parseError struct {
p *Asm
max token32
}
func (e *parseError) Error() string {
tokens, error := []token32{e.max}, "\n"
positions, p := make([]int, 2*len(tokens)), 0
for _, token := range tokens {
positions[p], p = int(token.begin), p+1
positions[p], p = int(token.end), p+1
}
translations := translatePositions(e.p.buffer, positions)
format := "parse error near %v (line %v symbol %v - line %v symbol %v):\n%v\n"
if e.p.Pretty {
format = "parse error near \x1B[34m%v\x1B[m (line %v symbol %v - line %v symbol %v):\n%v\n"
}
for _, token := range tokens {
begin, end := int(token.begin), int(token.end)
error += fmt.Sprintf(format,
rul3s[token.pegRule],
translations[begin].line, translations[begin].symbol,
translations[end].line, translations[end].symbol,
strconv.Quote(string(e.p.buffer[begin:end])))
}
return error
}
func (p *Asm) PrintSyntaxTree() {
if p.Pretty {
p.tokens32.PrettyPrintSyntaxTree(p.Buffer)
} else {
p.tokens32.PrintSyntaxTree(p.Buffer)
}
}
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')) / ('.' '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++
if buffer[position] != rune('8') {
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('4') {
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++
{
position205, tokenIndex205 := position, tokenIndex
if buffer[position] != rune('q') {
goto l206
}
position++
goto l205
l206:
position, tokenIndex = position205, tokenIndex205
if buffer[position] != rune('Q') {
goto l204
}
position++
}
l205:
{
position207, tokenIndex207 := position, tokenIndex
if buffer[position] != rune('u') {
goto l208
}
position++
goto l207
l208:
position, tokenIndex = position207, tokenIndex207
if buffer[position] != rune('U') {
goto l204
}
position++
}
l207:
{
position209, tokenIndex209 := position, tokenIndex
if buffer[position] != rune('a') {
goto l210
}
position++
goto l209
l210:
position, tokenIndex = position209, tokenIndex209
if buffer[position] != rune('A') {
goto l204
}
position++
}
l209:
{
position211, tokenIndex211 := position, tokenIndex
if buffer[position] != rune('d') {
goto l212
}
position++
goto l211
l212:
position, tokenIndex = position211, tokenIndex211
if buffer[position] != rune('D') {
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('t') {
goto l215
}
position++
goto l214
l215:
position, tokenIndex = position214, tokenIndex214
if buffer[position] != rune('T') {
goto l213
}
position++
}
l214:
{
position216, tokenIndex216 := position, tokenIndex
if buffer[position] != rune('c') {
goto l217
}
position++
goto l216
l217:
position, tokenIndex = position216, tokenIndex216
if buffer[position] != rune('C') {
goto l213
}
position++
}
l216:
goto l149
l213:
position, tokenIndex = position149, tokenIndex149
if buffer[position] != rune('.') {
goto l218
}
position++
{
position219, tokenIndex219 := position, tokenIndex
if buffer[position] != rune('l') {
goto l220
}
position++
goto l219
l220:
position, tokenIndex = position219, tokenIndex219
if buffer[position] != rune('L') {
goto l218
}
position++
}
l219:
{
position221, tokenIndex221 := position, tokenIndex
if buffer[position] != rune('o') {
goto l222
}
position++
goto l221
l222:
position, tokenIndex = position221, tokenIndex221
if buffer[position] != rune('O') {
goto l218
}
position++
}
l221:
{
position223, tokenIndex223 := position, tokenIndex
if buffer[position] != rune('c') {
goto l224
}
position++
goto l223
l224:
position, tokenIndex = position223, tokenIndex223
if buffer[position] != rune('C') {
goto l218
}
position++
}
l223:
{
position225, tokenIndex225 := position, tokenIndex
if buffer[position] != rune('a') {
goto l226
}
position++
goto l225
l226:
position, tokenIndex = position225, tokenIndex225
if buffer[position] != rune('A') {
goto l218
}
position++
}
l225:
{
position227, tokenIndex227 := position, tokenIndex
if buffer[position] != rune('l') {
goto l228
}
position++
goto l227
l228:
position, tokenIndex = position227, tokenIndex227
if buffer[position] != rune('L') {
goto l218
}
position++
}
l227:
{
position229, tokenIndex229 := position, tokenIndex
if buffer[position] != rune('e') {
goto l230
}
position++
goto l229
l230:
position, tokenIndex = position229, tokenIndex229
if buffer[position] != rune('E') {
goto l218
}
position++
}
l229:
{
position231, tokenIndex231 := position, tokenIndex
if buffer[position] != rune('n') {
goto l232
}
position++
goto l231
l232:
position, tokenIndex = position231, tokenIndex231
if buffer[position] != rune('N') {
goto l218
}
position++
}
l231:
{
position233, tokenIndex233 := position, tokenIndex
if buffer[position] != rune('t') {
goto l234
}
position++
goto l233
l234:
position, tokenIndex = position233, tokenIndex233
if buffer[position] != rune('T') {
goto l218
}
position++
}
l233:
{
position235, tokenIndex235 := position, tokenIndex
if buffer[position] != rune('r') {
goto l236
}
position++
goto l235
l236:
position, tokenIndex = position235, tokenIndex235
if buffer[position] != rune('R') {
goto l218
}
position++
}
l235:
{
position237, tokenIndex237 := position, tokenIndex
if buffer[position] != rune('y') {
goto l238
}
position++
goto l237
l238:
position, tokenIndex = position237, tokenIndex237
if buffer[position] != rune('Y') {
goto l218
}
position++
}
l237:
goto l149
l218:
position, tokenIndex = position149, tokenIndex149
if buffer[position] != rune('.') {
goto l239
}
position++
{
position240, tokenIndex240 := position, tokenIndex
if buffer[position] != rune('s') {
goto l241
}
position++
goto l240
l241:
position, tokenIndex = position240, tokenIndex240
if buffer[position] != rune('S') {
goto l239
}
position++
}
l240:
{
position242, tokenIndex242 := position, tokenIndex
if buffer[position] != rune('i') {
goto l243
}
position++
goto l242
l243:
position, tokenIndex = position242, tokenIndex242
if buffer[position] != rune('I') {
goto l239
}
position++
}
l242:
{
position244, tokenIndex244 := position, tokenIndex
if buffer[position] != rune('z') {
goto l245
}
position++
goto l244
l245:
position, tokenIndex = position244, tokenIndex244
if buffer[position] != rune('Z') {
goto l239
}
position++
}
l244:
{
position246, tokenIndex246 := position, tokenIndex
if buffer[position] != rune('e') {
goto l247
}
position++
goto l246
l247:
position, tokenIndex = position246, tokenIndex246
if buffer[position] != rune('E') {
goto l239
}
position++
}
l246:
goto l149
l239:
position, tokenIndex = position149, tokenIndex149
if buffer[position] != rune('.') {
goto l248
}
position++
{
position249, tokenIndex249 := position, tokenIndex
if buffer[position] != rune('t') {
goto l250
}
position++
goto l249
l250:
position, tokenIndex = position249, tokenIndex249
if buffer[position] != rune('T') {
goto l248
}
position++
}
l249:
{
position251, tokenIndex251 := position, tokenIndex
if buffer[position] != rune('y') {
goto l252
}
position++
goto l251
l252:
position, tokenIndex = position251, tokenIndex251
if buffer[position] != rune('Y') {
goto l248
}
position++
}
l251:
{
position253, tokenIndex253 := position, tokenIndex
if buffer[position] != rune('p') {
goto l254
}
position++
goto l253
l254:
position, tokenIndex = position253, tokenIndex253
if buffer[position] != rune('P') {
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('u') {
goto l259
}
position++
goto l258
l259:
position, tokenIndex = position258, tokenIndex258
if buffer[position] != rune('U') {
goto l257
}
position++
}
l258:
{
position260, tokenIndex260 := position, tokenIndex
if buffer[position] != rune('l') {
goto l261
}
position++
goto l260
l261:
position, tokenIndex = position260, tokenIndex260
if buffer[position] != rune('L') {
goto l257
}
position++
}
l260:
{
position262, tokenIndex262 := position, tokenIndex
if buffer[position] != rune('e') {
goto l263
}
position++
goto l262
l263:
position, tokenIndex = position262, tokenIndex262
if buffer[position] != rune('E') {
goto l257
}
position++
}
l262:
{
position264, tokenIndex264 := position, tokenIndex
if buffer[position] != rune('b') {
goto l265
}
position++
goto l264
l265:
position, tokenIndex = position264, tokenIndex264
if buffer[position] != rune('B') {
goto l257
}
position++
}
l264:
if buffer[position] != rune('1') {
goto l257
}
position++
if buffer[position] != rune('2') {
goto l257
}
position++
if buffer[position] != rune('8') {
goto l257
}
position++
goto l149
l257:
position, tokenIndex = position149, tokenIndex149
if buffer[position] != rune('.') {
goto l147
}
position++
{
position266, tokenIndex266 := position, tokenIndex
if buffer[position] != rune('s') {
goto l267
}
position++
goto l266
l267:
position, tokenIndex = position266, tokenIndex266
if buffer[position] != rune('S') {
goto l147
}
position++
}
l266:
{
position268, tokenIndex268 := position, tokenIndex
if buffer[position] != rune('l') {
goto l269
}
position++
goto l268
l269:
position, tokenIndex = position268, tokenIndex268
if buffer[position] != rune('L') {
goto l147
}
position++
}
l268:
{
position270, tokenIndex270 := position, tokenIndex
if buffer[position] != rune('e') {
goto l271
}
position++
goto l270
l271:
position, tokenIndex = position270, tokenIndex270
if buffer[position] != rune('E') {
goto l147
}
position++
}
l270:
{
position272, tokenIndex272 := position, tokenIndex
if buffer[position] != rune('b') {
goto l273
}
position++
goto l272
l273:
position, tokenIndex = position272, tokenIndex272
if buffer[position] != rune('B') {
goto l147
}
position++
}
l272:
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 {
position274, tokenIndex274 := position, tokenIndex
{
position275 := position
if !_rules[ruleSymbolArg]() {
goto l274
}
l276:
{
position277, tokenIndex277 := position, tokenIndex
{
position278, tokenIndex278 := position, tokenIndex
if !_rules[ruleWS]() {
goto l278
}
goto l279
l278:
position, tokenIndex = position278, tokenIndex278
}
l279:
if buffer[position] != rune(',') {
goto l277
}
position++
{
position280, tokenIndex280 := position, tokenIndex
if !_rules[ruleWS]() {
goto l280
}
goto l281
l280:
position, tokenIndex = position280, tokenIndex280
}
l281:
if !_rules[ruleSymbolArg]() {
goto l277
}
goto l276
l277:
position, tokenIndex = position277, tokenIndex277
}
add(ruleSymbolArgs, position275)
}
return true
l274:
position, tokenIndex = position274, tokenIndex274
return false
},
/* 15 SymbolArg <- <(Offset / SymbolType / ((Offset / LocalSymbol / SymbolName / Dot) WS? Operator WS? (Offset / LocalSymbol / SymbolName)) / (LocalSymbol TCMarker?) / (SymbolName Offset) / (SymbolName TCMarker?))> */
func() bool {
position282, tokenIndex282 := position, tokenIndex
{
position283 := position
{
position284, tokenIndex284 := position, tokenIndex
if !_rules[ruleOffset]() {
goto l285
}
goto l284
l285:
position, tokenIndex = position284, tokenIndex284
if !_rules[ruleSymbolType]() {
goto l286
}
goto l284
l286:
position, tokenIndex = position284, tokenIndex284
{
position288, tokenIndex288 := position, tokenIndex
if !_rules[ruleOffset]() {
goto l289
}
goto l288
l289:
position, tokenIndex = position288, tokenIndex288
if !_rules[ruleLocalSymbol]() {
goto l290
}
goto l288
l290:
position, tokenIndex = position288, tokenIndex288
if !_rules[ruleSymbolName]() {
goto l291
}
goto l288
l291:
position, tokenIndex = position288, tokenIndex288
if !_rules[ruleDot]() {
goto l287
}
}
l288:
{
position292, tokenIndex292 := position, tokenIndex
if !_rules[ruleWS]() {
goto l292
}
goto l293
l292:
position, tokenIndex = position292, tokenIndex292
}
l293:
if !_rules[ruleOperator]() {
goto l287
}
{
position294, tokenIndex294 := position, tokenIndex
if !_rules[ruleWS]() {
goto l294
}
goto l295
l294:
position, tokenIndex = position294, tokenIndex294
}
l295:
{
position296, tokenIndex296 := position, tokenIndex
if !_rules[ruleOffset]() {
goto l297
}
goto l296
l297:
position, tokenIndex = position296, tokenIndex296
if !_rules[ruleLocalSymbol]() {
goto l298
}
goto l296
l298:
position, tokenIndex = position296, tokenIndex296
if !_rules[ruleSymbolName]() {
goto l287
}
}
l296:
goto l284
l287:
position, tokenIndex = position284, tokenIndex284
if !_rules[ruleLocalSymbol]() {
goto l299
}
{
position300, tokenIndex300 := position, tokenIndex
if !_rules[ruleTCMarker]() {
goto l300
}
goto l301
l300:
position, tokenIndex = position300, tokenIndex300
}
l301:
goto l284
l299:
position, tokenIndex = position284, tokenIndex284
if !_rules[ruleSymbolName]() {
goto l302
}
if !_rules[ruleOffset]() {
goto l302
}
goto l284
l302:
position, tokenIndex = position284, tokenIndex284
if !_rules[ruleSymbolName]() {
goto l282
}
{
position303, tokenIndex303 := position, tokenIndex
if !_rules[ruleTCMarker]() {
goto l303
}
goto l304
l303:
position, tokenIndex = position303, tokenIndex303
}
l304:
}
l284:
add(ruleSymbolArg, position283)
}
return true
l282:
position, tokenIndex = position282, tokenIndex282
return false
},
/* 16 SymbolType <- <(('@' / '%') (('f' 'u' 'n' 'c' 't' 'i' 'o' 'n') / ('o' 'b' 'j' 'e' 'c' 't')))> */
func() bool {
position305, tokenIndex305 := position, tokenIndex
{
position306 := position
{
position307, tokenIndex307 := position, tokenIndex
if buffer[position] != rune('@') {
goto l308
}
position++
goto l307
l308:
position, tokenIndex = position307, tokenIndex307
if buffer[position] != rune('%') {
goto l305
}
position++
}
l307:
{
position309, tokenIndex309 := position, tokenIndex
if buffer[position] != rune('f') {
goto l310
}
position++
if buffer[position] != rune('u') {
goto l310
}
position++
if buffer[position] != rune('n') {
goto l310
}
position++
if buffer[position] != rune('c') {
goto l310
}
position++
if buffer[position] != rune('t') {
goto l310
}
position++
if buffer[position] != rune('i') {
goto l310
}
position++
if buffer[position] != rune('o') {
goto l310
}
position++
if buffer[position] != rune('n') {
goto l310
}
position++
goto l309
l310:
position, tokenIndex = position309, tokenIndex309
if buffer[position] != rune('o') {
goto l305
}
position++
if buffer[position] != rune('b') {
goto l305
}
position++
if buffer[position] != rune('j') {
goto l305
}
position++
if buffer[position] != rune('e') {
goto l305
}
position++
if buffer[position] != rune('c') {
goto l305
}
position++
if buffer[position] != rune('t') {
goto l305
}
position++
}
l309:
add(ruleSymbolType, position306)
}
return true
l305:
position, tokenIndex = position305, tokenIndex305
return false
},
/* 17 Dot <- <'.'> */
func() bool {
position311, tokenIndex311 := position, tokenIndex
{
position312 := position
if buffer[position] != rune('.') {
goto l311
}
position++
add(ruleDot, position312)
}
return true
l311:
position, tokenIndex = position311, tokenIndex311
return false
},
/* 18 TCMarker <- <('[' 'T' 'C' ']')> */
func() bool {
position313, tokenIndex313 := position, tokenIndex
{
position314 := position
if buffer[position] != rune('[') {
goto l313
}
position++
if buffer[position] != rune('T') {
goto l313
}
position++
if buffer[position] != rune('C') {
goto l313
}
position++
if buffer[position] != rune(']') {
goto l313
}
position++
add(ruleTCMarker, position314)
}
return true
l313:
position, tokenIndex = position313, tokenIndex313
return false
},
/* 19 EscapedChar <- <('\\' .)> */
func() bool {
position315, tokenIndex315 := position, tokenIndex
{
position316 := position
if buffer[position] != rune('\\') {
goto l315
}
position++
if !matchDot() {
goto l315
}
add(ruleEscapedChar, position316)
}
return true
l315:
position, tokenIndex = position315, tokenIndex315
return false
},
/* 20 WS <- <(' ' / '\t')+> */
func() bool {
position317, tokenIndex317 := position, tokenIndex
{
position318 := position
{
position321, tokenIndex321 := position, tokenIndex
if buffer[position] != rune(' ') {
goto l322
}
position++
goto l321
l322:
position, tokenIndex = position321, tokenIndex321
if buffer[position] != rune('\t') {
goto l317
}
position++
}
l321:
l319:
{
position320, tokenIndex320 := position, tokenIndex
{
position323, tokenIndex323 := position, tokenIndex
if buffer[position] != rune(' ') {
goto l324
}
position++
goto l323
l324:
position, tokenIndex = position323, tokenIndex323
if buffer[position] != rune('\t') {
goto l320
}
position++
}
l323:
goto l319
l320:
position, tokenIndex = position320, tokenIndex320
}
add(ruleWS, position318)
}
return true
l317:
position, tokenIndex = position317, tokenIndex317
return false
},
/* 21 Comment <- <((('/' '/') / '#') (!'\n' .)*)> */
func() bool {
position325, tokenIndex325 := position, tokenIndex
{
position326 := position
{
position327, tokenIndex327 := position, tokenIndex
if buffer[position] != rune('/') {
goto l328
}
position++
if buffer[position] != rune('/') {
goto l328
}
position++
goto l327
l328:
position, tokenIndex = position327, tokenIndex327
if buffer[position] != rune('#') {
goto l325
}
position++
}
l327:
l329:
{
position330, tokenIndex330 := position, tokenIndex
{
position331, tokenIndex331 := position, tokenIndex
if buffer[position] != rune('\n') {
goto l331
}
position++
goto l330
l331:
position, tokenIndex = position331, tokenIndex331
}
if !matchDot() {
goto l330
}
goto l329
l330:
position, tokenIndex = position330, tokenIndex330
}
add(ruleComment, position326)
}
return true
l325:
position, tokenIndex = position325, tokenIndex325
return false
},
/* 22 Label <- <((LocalSymbol / LocalLabel / SymbolName) ':')> */
func() bool {
position332, tokenIndex332 := position, tokenIndex
{
position333 := position
{
position334, tokenIndex334 := position, tokenIndex
if !_rules[ruleLocalSymbol]() {
goto l335
}
goto l334
l335:
position, tokenIndex = position334, tokenIndex334
if !_rules[ruleLocalLabel]() {
goto l336
}
goto l334
l336:
position, tokenIndex = position334, tokenIndex334
if !_rules[ruleSymbolName]() {
goto l332
}
}
l334:
if buffer[position] != rune(':') {
goto l332
}
position++
add(ruleLabel, position333)
}
return true
l332:
position, tokenIndex = position332, tokenIndex332
return false
},
/* 23 SymbolName <- <(([a-z] / [A-Z] / '.' / '_') ([a-z] / [A-Z] / '.' / ([0-9] / [0-9]) / '$' / '_')*)> */
func() bool {
position337, tokenIndex337 := position, tokenIndex
{
position338 := position
{
position339, tokenIndex339 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l340
}
position++
goto l339
l340:
position, tokenIndex = position339, tokenIndex339
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l341
}
position++
goto l339
l341:
position, tokenIndex = position339, tokenIndex339
if buffer[position] != rune('.') {
goto l342
}
position++
goto l339
l342:
position, tokenIndex = position339, tokenIndex339
if buffer[position] != rune('_') {
goto l337
}
position++
}
l339:
l343:
{
position344, tokenIndex344 := position, tokenIndex
{
position345, tokenIndex345 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l346
}
position++
goto l345
l346:
position, tokenIndex = position345, tokenIndex345
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l347
}
position++
goto l345
l347:
position, tokenIndex = position345, tokenIndex345
if buffer[position] != rune('.') {
goto l348
}
position++
goto l345
l348:
position, tokenIndex = position345, tokenIndex345
{
position350, tokenIndex350 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l351
}
position++
goto l350
l351:
position, tokenIndex = position350, tokenIndex350
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l349
}
position++
}
l350:
goto l345
l349:
position, tokenIndex = position345, tokenIndex345
if buffer[position] != rune('$') {
goto l352
}
position++
goto l345
l352:
position, tokenIndex = position345, tokenIndex345
if buffer[position] != rune('_') {
goto l344
}
position++
}
l345:
goto l343
l344:
position, tokenIndex = position344, tokenIndex344
}
add(ruleSymbolName, position338)
}
return true
l337:
position, tokenIndex = position337, tokenIndex337
return false
},
/* 24 LocalSymbol <- <('.' 'L' ([a-z] / [A-Z] / ([a-z] / [A-Z]) / '.' / ([0-9] / [0-9]) / '$' / '_')+)> */
func() bool {
position353, tokenIndex353 := position, tokenIndex
{
position354 := position
if buffer[position] != rune('.') {
goto l353
}
position++
if buffer[position] != rune('L') {
goto l353
}
position++
{
position357, tokenIndex357 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l358
}
position++
goto l357
l358:
position, tokenIndex = position357, tokenIndex357
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l359
}
position++
goto l357
l359:
position, tokenIndex = position357, tokenIndex357
{
position361, tokenIndex361 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l362
}
position++
goto l361
l362:
position, tokenIndex = position361, tokenIndex361
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l360
}
position++
}
l361:
goto l357
l360:
position, tokenIndex = position357, tokenIndex357
if buffer[position] != rune('.') {
goto l363
}
position++
goto l357
l363:
position, tokenIndex = position357, tokenIndex357
{
position365, tokenIndex365 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l366
}
position++
goto l365
l366:
position, tokenIndex = position365, tokenIndex365
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l364
}
position++
}
l365:
goto l357
l364:
position, tokenIndex = position357, tokenIndex357
if buffer[position] != rune('$') {
goto l367
}
position++
goto l357
l367:
position, tokenIndex = position357, tokenIndex357
if buffer[position] != rune('_') {
goto l353
}
position++
}
l357:
l355:
{
position356, tokenIndex356 := position, tokenIndex
{
position368, tokenIndex368 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l369
}
position++
goto l368
l369:
position, tokenIndex = position368, tokenIndex368
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l370
}
position++
goto l368
l370:
position, tokenIndex = position368, tokenIndex368
{
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 l371
}
position++
}
l372:
goto l368
l371:
position, tokenIndex = position368, tokenIndex368
if buffer[position] != rune('.') {
goto l374
}
position++
goto l368
l374:
position, tokenIndex = position368, tokenIndex368
{
position376, tokenIndex376 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l377
}
position++
goto l376
l377:
position, tokenIndex = position376, tokenIndex376
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l375
}
position++
}
l376:
goto l368
l375:
position, tokenIndex = position368, tokenIndex368
if buffer[position] != rune('$') {
goto l378
}
position++
goto l368
l378:
position, tokenIndex = position368, tokenIndex368
if buffer[position] != rune('_') {
goto l356
}
position++
}
l368:
goto l355
l356:
position, tokenIndex = position356, tokenIndex356
}
add(ruleLocalSymbol, position354)
}
return true
l353:
position, tokenIndex = position353, tokenIndex353
return false
},
/* 25 LocalLabel <- <([0-9] ([0-9] / '$')*)> */
func() bool {
position379, tokenIndex379 := position, tokenIndex
{
position380 := position
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l379
}
position++
l381:
{
position382, tokenIndex382 := position, tokenIndex
{
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 buffer[position] != rune('$') {
goto l382
}
position++
}
l383:
goto l381
l382:
position, tokenIndex = position382, tokenIndex382
}
add(ruleLocalLabel, position380)
}
return true
l379:
position, tokenIndex = position379, tokenIndex379
return false
},
/* 26 LocalLabelRef <- <([0-9] ([0-9] / '$')* ('b' / 'f'))> */
func() bool {
position385, tokenIndex385 := position, tokenIndex
{
position386 := position
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l385
}
position++
l387:
{
position388, tokenIndex388 := position, tokenIndex
{
position389, tokenIndex389 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l390
}
position++
goto l389
l390:
position, tokenIndex = position389, tokenIndex389
if buffer[position] != rune('$') {
goto l388
}
position++
}
l389:
goto l387
l388:
position, tokenIndex = position388, tokenIndex388
}
{
position391, tokenIndex391 := position, tokenIndex
if buffer[position] != rune('b') {
goto l392
}
position++
goto l391
l392:
position, tokenIndex = position391, tokenIndex391
if buffer[position] != rune('f') {
goto l385
}
position++
}
l391:
add(ruleLocalLabelRef, position386)
}
return true
l385:
position, tokenIndex = position385, tokenIndex385
return false
},
/* 27 Instruction <- <(InstructionName (WS InstructionArg (WS? ',' WS? InstructionArg)*)?)> */
func() bool {
position393, tokenIndex393 := position, tokenIndex
{
position394 := position
if !_rules[ruleInstructionName]() {
goto l393
}
{
position395, tokenIndex395 := position, tokenIndex
if !_rules[ruleWS]() {
goto l395
}
if !_rules[ruleInstructionArg]() {
goto l395
}
l397:
{
position398, tokenIndex398 := position, tokenIndex
{
position399, tokenIndex399 := position, tokenIndex
if !_rules[ruleWS]() {
goto l399
}
goto l400
l399:
position, tokenIndex = position399, tokenIndex399
}
l400:
if buffer[position] != rune(',') {
goto l398
}
position++
{
position401, tokenIndex401 := position, tokenIndex
if !_rules[ruleWS]() {
goto l401
}
goto l402
l401:
position, tokenIndex = position401, tokenIndex401
}
l402:
if !_rules[ruleInstructionArg]() {
goto l398
}
goto l397
l398:
position, tokenIndex = position398, tokenIndex398
}
goto l396
l395:
position, tokenIndex = position395, tokenIndex395
}
l396:
add(ruleInstruction, position394)
}
return true
l393:
position, tokenIndex = position393, tokenIndex393
return false
},
/* 28 InstructionName <- <(([a-z] / [A-Z]) ([a-z] / [A-Z] / '.' / ([0-9] / [0-9]))* ('.' / '+' / '-')?)> */
func() bool {
position403, tokenIndex403 := position, tokenIndex
{
position404 := position
{
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 l403
}
position++
}
l405:
l407:
{
position408, tokenIndex408 := position, tokenIndex
{
position409, tokenIndex409 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l410
}
position++
goto l409
l410:
position, tokenIndex = position409, tokenIndex409
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l411
}
position++
goto l409
l411:
position, tokenIndex = position409, tokenIndex409
if buffer[position] != rune('.') {
goto l412
}
position++
goto l409
l412:
position, tokenIndex = position409, tokenIndex409
{
position413, tokenIndex413 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l414
}
position++
goto l413
l414:
position, tokenIndex = position413, tokenIndex413
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l408
}
position++
}
l413:
}
l409:
goto l407
l408:
position, tokenIndex = position408, tokenIndex408
}
{
position415, tokenIndex415 := position, tokenIndex
{
position417, tokenIndex417 := position, tokenIndex
if buffer[position] != rune('.') {
goto l418
}
position++
goto l417
l418:
position, tokenIndex = position417, tokenIndex417
if buffer[position] != rune('+') {
goto l419
}
position++
goto l417
l419:
position, tokenIndex = position417, tokenIndex417
if buffer[position] != rune('-') {
goto l415
}
position++
}
l417:
goto l416
l415:
position, tokenIndex = position415, tokenIndex415
}
l416:
add(ruleInstructionName, position404)
}
return true
l403:
position, tokenIndex = position403, tokenIndex403
return false
},
/* 29 InstructionArg <- <(IndirectionIndicator? (ARMConstantTweak / RegisterOrConstant / LocalLabelRef / TOCRefHigh / TOCRefLow / GOTLocation / GOTSymbolOffset / MemoryRef) AVX512Token*)> */
func() bool {
position420, tokenIndex420 := position, tokenIndex
{
position421 := position
{
position422, tokenIndex422 := position, tokenIndex
if !_rules[ruleIndirectionIndicator]() {
goto l422
}
goto l423
l422:
position, tokenIndex = position422, tokenIndex422
}
l423:
{
position424, tokenIndex424 := position, tokenIndex
if !_rules[ruleARMConstantTweak]() {
goto l425
}
goto l424
l425:
position, tokenIndex = position424, tokenIndex424
if !_rules[ruleRegisterOrConstant]() {
goto l426
}
goto l424
l426:
position, tokenIndex = position424, tokenIndex424
if !_rules[ruleLocalLabelRef]() {
goto l427
}
goto l424
l427:
position, tokenIndex = position424, tokenIndex424
if !_rules[ruleTOCRefHigh]() {
goto l428
}
goto l424
l428:
position, tokenIndex = position424, tokenIndex424
if !_rules[ruleTOCRefLow]() {
goto l429
}
goto l424
l429:
position, tokenIndex = position424, tokenIndex424
if !_rules[ruleGOTLocation]() {
goto l430
}
goto l424
l430:
position, tokenIndex = position424, tokenIndex424
if !_rules[ruleGOTSymbolOffset]() {
goto l431
}
goto l424
l431:
position, tokenIndex = position424, tokenIndex424
if !_rules[ruleMemoryRef]() {
goto l420
}
}
l424:
l432:
{
position433, tokenIndex433 := position, tokenIndex
if !_rules[ruleAVX512Token]() {
goto l433
}
goto l432
l433:
position, tokenIndex = position433, tokenIndex433
}
add(ruleInstructionArg, position421)
}
return true
l420:
position, tokenIndex = position420, tokenIndex420
return false
},
/* 30 GOTLocation <- <('$' '_' 'G' 'L' 'O' 'B' 'A' 'L' '_' 'O' 'F' 'F' 'S' 'E' 'T' '_' 'T' 'A' 'B' 'L' 'E' '_' '-' LocalSymbol)> */
func() bool {
position434, tokenIndex434 := position, tokenIndex
{
position435 := position
if buffer[position] != rune('$') {
goto l434
}
position++
if buffer[position] != rune('_') {
goto l434
}
position++
if buffer[position] != rune('G') {
goto l434
}
position++
if buffer[position] != rune('L') {
goto l434
}
position++
if buffer[position] != rune('O') {
goto l434
}
position++
if buffer[position] != rune('B') {
goto l434
}
position++
if buffer[position] != rune('A') {
goto l434
}
position++
if buffer[position] != rune('L') {
goto l434
}
position++
if buffer[position] != rune('_') {
goto l434
}
position++
if buffer[position] != rune('O') {
goto l434
}
position++
if buffer[position] != rune('F') {
goto l434
}
position++
if buffer[position] != rune('F') {
goto l434
}
position++
if buffer[position] != rune('S') {
goto l434
}
position++
if buffer[position] != rune('E') {
goto l434
}
position++
if buffer[position] != rune('T') {
goto l434
}
position++
if buffer[position] != rune('_') {
goto l434
}
position++
if buffer[position] != rune('T') {
goto l434
}
position++
if buffer[position] != rune('A') {
goto l434
}
position++
if buffer[position] != rune('B') {
goto l434
}
position++
if buffer[position] != rune('L') {
goto l434
}
position++
if buffer[position] != rune('E') {
goto l434
}
position++
if buffer[position] != rune('_') {
goto l434
}
position++
if buffer[position] != rune('-') {
goto l434
}
position++
if !_rules[ruleLocalSymbol]() {
goto l434
}
add(ruleGOTLocation, position435)
}
return true
l434:
position, tokenIndex = position434, tokenIndex434
return false
},
/* 31 GOTSymbolOffset <- <(('$' SymbolName ('@' 'G' 'O' 'T') ('O' 'F' 'F')?) / (':' ('g' / 'G') ('o' / 'O') ('t' / 'T') ':' SymbolName))> */
func() bool {
position436, tokenIndex436 := position, tokenIndex
{
position437 := position
{
position438, tokenIndex438 := position, tokenIndex
if buffer[position] != rune('$') {
goto l439
}
position++
if !_rules[ruleSymbolName]() {
goto l439
}
if buffer[position] != rune('@') {
goto l439
}
position++
if buffer[position] != rune('G') {
goto l439
}
position++
if buffer[position] != rune('O') {
goto l439
}
position++
if buffer[position] != rune('T') {
goto l439
}
position++
{
position440, tokenIndex440 := position, tokenIndex
if buffer[position] != rune('O') {
goto l440
}
position++
if buffer[position] != rune('F') {
goto l440
}
position++
if buffer[position] != rune('F') {
goto l440
}
position++
goto l441
l440:
position, tokenIndex = position440, tokenIndex440
}
l441:
goto l438
l439:
position, tokenIndex = position438, tokenIndex438
if buffer[position] != rune(':') {
goto l436
}
position++
{
position442, tokenIndex442 := position, tokenIndex
if buffer[position] != rune('g') {
goto l443
}
position++
goto l442
l443:
position, tokenIndex = position442, tokenIndex442
if buffer[position] != rune('G') {
goto l436
}
position++
}
l442:
{
position444, tokenIndex444 := position, tokenIndex
if buffer[position] != rune('o') {
goto l445
}
position++
goto l444
l445:
position, tokenIndex = position444, tokenIndex444
if buffer[position] != rune('O') {
goto l436
}
position++
}
l444:
{
position446, tokenIndex446 := position, tokenIndex
if buffer[position] != rune('t') {
goto l447
}
position++
goto l446
l447:
position, tokenIndex = position446, tokenIndex446
if buffer[position] != rune('T') {
goto l436
}
position++
}
l446:
if buffer[position] != rune(':') {
goto l436
}
position++
if !_rules[ruleSymbolName]() {
goto l436
}
}
l438:
add(ruleGOTSymbolOffset, position437)
}
return true
l436:
position, tokenIndex = position436, tokenIndex436
return false
},
/* 32 AVX512Token <- <(WS? '{' '%'? ([0-9] / [a-z])* '}')> */
func() bool {
position448, tokenIndex448 := position, tokenIndex
{
position449 := position
{
position450, tokenIndex450 := position, tokenIndex
if !_rules[ruleWS]() {
goto l450
}
goto l451
l450:
position, tokenIndex = position450, tokenIndex450
}
l451:
if buffer[position] != rune('{') {
goto l448
}
position++
{
position452, tokenIndex452 := position, tokenIndex
if buffer[position] != rune('%') {
goto l452
}
position++
goto l453
l452:
position, tokenIndex = position452, tokenIndex452
}
l453:
l454:
{
position455, tokenIndex455 := position, tokenIndex
{
position456, tokenIndex456 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l457
}
position++
goto l456
l457:
position, tokenIndex = position456, tokenIndex456
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l455
}
position++
}
l456:
goto l454
l455:
position, tokenIndex = position455, tokenIndex455
}
if buffer[position] != rune('}') {
goto l448
}
position++
add(ruleAVX512Token, position449)
}
return true
l448:
position, tokenIndex = position448, tokenIndex448
return false
},
/* 33 TOCRefHigh <- <('.' 'T' 'O' 'C' '.' '-' (('0' 'b') / ('.' 'L' ([a-z] / [A-Z] / '_' / [0-9])+)) ('@' ('h' / 'H') ('a' / 'A')))> */
func() bool {
position458, tokenIndex458 := position, tokenIndex
{
position459 := position
if buffer[position] != rune('.') {
goto l458
}
position++
if buffer[position] != rune('T') {
goto l458
}
position++
if buffer[position] != rune('O') {
goto l458
}
position++
if buffer[position] != rune('C') {
goto l458
}
position++
if buffer[position] != rune('.') {
goto l458
}
position++
if buffer[position] != rune('-') {
goto l458
}
position++
{
position460, tokenIndex460 := position, tokenIndex
if buffer[position] != rune('0') {
goto l461
}
position++
if buffer[position] != rune('b') {
goto l461
}
position++
goto l460
l461:
position, tokenIndex = position460, tokenIndex460
if buffer[position] != rune('.') {
goto l458
}
position++
if buffer[position] != rune('L') {
goto l458
}
position++
{
position464, tokenIndex464 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l465
}
position++
goto l464
l465:
position, tokenIndex = position464, tokenIndex464
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l466
}
position++
goto l464
l466:
position, tokenIndex = position464, tokenIndex464
if buffer[position] != rune('_') {
goto l467
}
position++
goto l464
l467:
position, tokenIndex = position464, tokenIndex464
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l458
}
position++
}
l464:
l462:
{
position463, tokenIndex463 := position, tokenIndex
{
position468, tokenIndex468 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l469
}
position++
goto l468
l469:
position, tokenIndex = position468, tokenIndex468
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l470
}
position++
goto l468
l470:
position, tokenIndex = position468, tokenIndex468
if buffer[position] != rune('_') {
goto l471
}
position++
goto l468
l471:
position, tokenIndex = position468, tokenIndex468
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l463
}
position++
}
l468:
goto l462
l463:
position, tokenIndex = position463, tokenIndex463
}
}
l460:
if buffer[position] != rune('@') {
goto l458
}
position++
{
position472, tokenIndex472 := position, tokenIndex
if buffer[position] != rune('h') {
goto l473
}
position++
goto l472
l473:
position, tokenIndex = position472, tokenIndex472
if buffer[position] != rune('H') {
goto l458
}
position++
}
l472:
{
position474, tokenIndex474 := position, tokenIndex
if buffer[position] != rune('a') {
goto l475
}
position++
goto l474
l475:
position, tokenIndex = position474, tokenIndex474
if buffer[position] != rune('A') {
goto l458
}
position++
}
l474:
add(ruleTOCRefHigh, position459)
}
return true
l458:
position, tokenIndex = position458, tokenIndex458
return false
},
/* 34 TOCRefLow <- <('.' 'T' 'O' 'C' '.' '-' (('0' 'b') / ('.' 'L' ([a-z] / [A-Z] / '_' / [0-9])+)) ('@' ('l' / 'L')))> */
func() bool {
position476, tokenIndex476 := position, tokenIndex
{
position477 := position
if buffer[position] != rune('.') {
goto l476
}
position++
if buffer[position] != rune('T') {
goto l476
}
position++
if buffer[position] != rune('O') {
goto l476
}
position++
if buffer[position] != rune('C') {
goto l476
}
position++
if buffer[position] != rune('.') {
goto l476
}
position++
if buffer[position] != rune('-') {
goto l476
}
position++
{
position478, tokenIndex478 := position, tokenIndex
if buffer[position] != rune('0') {
goto l479
}
position++
if buffer[position] != rune('b') {
goto l479
}
position++
goto l478
l479:
position, tokenIndex = position478, tokenIndex478
if buffer[position] != rune('.') {
goto l476
}
position++
if buffer[position] != rune('L') {
goto l476
}
position++
{
position482, tokenIndex482 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l483
}
position++
goto l482
l483:
position, tokenIndex = position482, tokenIndex482
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l484
}
position++
goto l482
l484:
position, tokenIndex = position482, tokenIndex482
if buffer[position] != rune('_') {
goto l485
}
position++
goto l482
l485:
position, tokenIndex = position482, tokenIndex482
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l476
}
position++
}
l482:
l480:
{
position481, tokenIndex481 := position, tokenIndex
{
position486, tokenIndex486 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l487
}
position++
goto l486
l487:
position, tokenIndex = position486, tokenIndex486
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l488
}
position++
goto l486
l488:
position, tokenIndex = position486, tokenIndex486
if buffer[position] != rune('_') {
goto l489
}
position++
goto l486
l489:
position, tokenIndex = position486, tokenIndex486
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l481
}
position++
}
l486:
goto l480
l481:
position, tokenIndex = position481, tokenIndex481
}
}
l478:
if buffer[position] != rune('@') {
goto l476
}
position++
{
position490, tokenIndex490 := position, tokenIndex
if buffer[position] != rune('l') {
goto l491
}
position++
goto l490
l491:
position, tokenIndex = position490, tokenIndex490
if buffer[position] != rune('L') {
goto l476
}
position++
}
l490:
add(ruleTOCRefLow, position477)
}
return true
l476:
position, tokenIndex = position476, tokenIndex476
return false
},
/* 35 IndirectionIndicator <- <'*'> */
func() bool {
position492, tokenIndex492 := position, tokenIndex
{
position493 := position
if buffer[position] != rune('*') {
goto l492
}
position++
add(ruleIndirectionIndicator, position493)
}
return true
l492:
position, tokenIndex = position492, tokenIndex492
return false
},
/* 36 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 {
position494, tokenIndex494 := position, tokenIndex
{
position495 := position
{
position496, tokenIndex496 := position, tokenIndex
if buffer[position] != rune('%') {
goto l497
}
position++
{
position498, tokenIndex498 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l499
}
position++
goto l498
l499:
position, tokenIndex = position498, tokenIndex498
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l497
}
position++
}
l498:
l500:
{
position501, tokenIndex501 := position, tokenIndex
{
position502, tokenIndex502 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l503
}
position++
goto l502
l503:
position, tokenIndex = position502, tokenIndex502
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l504
}
position++
goto l502
l504:
position, tokenIndex = position502, tokenIndex502
{
position505, tokenIndex505 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l506
}
position++
goto l505
l506:
position, tokenIndex = position505, tokenIndex505
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l501
}
position++
}
l505:
}
l502:
goto l500
l501:
position, tokenIndex = position501, tokenIndex501
}
goto l496
l497:
position, tokenIndex = position496, tokenIndex496
{
position508, tokenIndex508 := position, tokenIndex
if buffer[position] != rune('$') {
goto l508
}
position++
goto l509
l508:
position, tokenIndex = position508, tokenIndex508
}
l509:
{
position510, tokenIndex510 := position, tokenIndex
if !_rules[ruleOffset]() {
goto l511
}
if !_rules[ruleOffset]() {
goto l511
}
goto l510
l511:
position, tokenIndex = position510, tokenIndex510
if !_rules[ruleOffset]() {
goto l507
}
}
l510:
goto l496
l507:
position, tokenIndex = position496, tokenIndex496
if buffer[position] != rune('#') {
goto l512
}
position++
if !_rules[ruleOffset]() {
goto l512
}
{
position513, tokenIndex513 := position, tokenIndex
if buffer[position] != rune('*') {
goto l513
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l513
}
position++
l515:
{
position516, tokenIndex516 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l516
}
position++
goto l515
l516:
position, tokenIndex = position516, tokenIndex516
}
{
position517, tokenIndex517 := position, tokenIndex
if buffer[position] != rune('-') {
goto l517
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l517
}
position++
l519:
{
position520, tokenIndex520 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l520
}
position++
goto l519
l520:
position, tokenIndex = position520, tokenIndex520
}
goto l518
l517:
position, tokenIndex = position517, tokenIndex517
}
l518:
goto l514
l513:
position, tokenIndex = position513, tokenIndex513
}
l514:
goto l496
l512:
position, tokenIndex = position496, tokenIndex496
if buffer[position] != rune('#') {
goto l521
}
position++
{
position522, tokenIndex522 := position, tokenIndex
if buffer[position] != rune('~') {
goto l522
}
position++
goto l523
l522:
position, tokenIndex = position522, tokenIndex522
}
l523:
if buffer[position] != rune('(') {
goto l521
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l521
}
position++
{
position524, tokenIndex524 := position, tokenIndex
if !_rules[ruleWS]() {
goto l524
}
goto l525
l524:
position, tokenIndex = position524, tokenIndex524
}
l525:
if buffer[position] != rune('<') {
goto l521
}
position++
if buffer[position] != rune('<') {
goto l521
}
position++
{
position526, tokenIndex526 := position, tokenIndex
if !_rules[ruleWS]() {
goto l526
}
goto l527
l526:
position, tokenIndex = position526, tokenIndex526
}
l527:
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l521
}
position++
if buffer[position] != rune(')') {
goto l521
}
position++
goto l496
l521:
position, tokenIndex = position496, tokenIndex496
if !_rules[ruleARMRegister]() {
goto l494
}
}
l496:
{
position528, tokenIndex528 := position, tokenIndex
{
position529, tokenIndex529 := position, tokenIndex
if buffer[position] != rune('f') {
goto l530
}
position++
goto l529
l530:
position, tokenIndex = position529, tokenIndex529
if buffer[position] != rune('b') {
goto l531
}
position++
goto l529
l531:
position, tokenIndex = position529, tokenIndex529
if buffer[position] != rune(':') {
goto l532
}
position++
goto l529
l532:
position, tokenIndex = position529, tokenIndex529
if buffer[position] != rune('(') {
goto l533
}
position++
goto l529
l533:
position, tokenIndex = position529, tokenIndex529
if buffer[position] != rune('+') {
goto l534
}
position++
goto l529
l534:
position, tokenIndex = position529, tokenIndex529
if buffer[position] != rune('-') {
goto l528
}
position++
}
l529:
goto l494
l528:
position, tokenIndex = position528, tokenIndex528
}
add(ruleRegisterOrConstant, position495)
}
return true
l494:
position, tokenIndex = position494, tokenIndex494
return false
},
/* 37 ARMConstantTweak <- <(((('l' / 'L') ('s' / 'S') ('l' / 'L')) / (('s' / 'S') ('x' / 'X') ('t' / 'T') ('w' / 'W')) / (('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 {
position535, tokenIndex535 := position, tokenIndex
{
position536 := position
{
position537, tokenIndex537 := position, tokenIndex
{
position539, tokenIndex539 := position, tokenIndex
if buffer[position] != rune('l') {
goto l540
}
position++
goto l539
l540:
position, tokenIndex = position539, tokenIndex539
if buffer[position] != rune('L') {
goto l538
}
position++
}
l539:
{
position541, tokenIndex541 := position, tokenIndex
if buffer[position] != rune('s') {
goto l542
}
position++
goto l541
l542:
position, tokenIndex = position541, tokenIndex541
if buffer[position] != rune('S') {
goto l538
}
position++
}
l541:
{
position543, tokenIndex543 := position, tokenIndex
if buffer[position] != rune('l') {
goto l544
}
position++
goto l543
l544:
position, tokenIndex = position543, tokenIndex543
if buffer[position] != rune('L') {
goto l538
}
position++
}
l543:
goto l537
l538:
position, tokenIndex = position537, tokenIndex537
{
position546, tokenIndex546 := position, tokenIndex
if buffer[position] != rune('s') {
goto l547
}
position++
goto l546
l547:
position, tokenIndex = position546, tokenIndex546
if buffer[position] != rune('S') {
goto l545
}
position++
}
l546:
{
position548, tokenIndex548 := position, tokenIndex
if buffer[position] != rune('x') {
goto l549
}
position++
goto l548
l549:
position, tokenIndex = position548, tokenIndex548
if buffer[position] != rune('X') {
goto l545
}
position++
}
l548:
{
position550, tokenIndex550 := position, tokenIndex
if buffer[position] != rune('t') {
goto l551
}
position++
goto l550
l551:
position, tokenIndex = position550, tokenIndex550
if buffer[position] != rune('T') {
goto l545
}
position++
}
l550:
{
position552, tokenIndex552 := position, tokenIndex
if buffer[position] != rune('w') {
goto l553
}
position++
goto l552
l553:
position, tokenIndex = position552, tokenIndex552
if buffer[position] != rune('W') {
goto l545
}
position++
}
l552:
goto l537
l545:
position, tokenIndex = position537, tokenIndex537
{
position555, tokenIndex555 := position, tokenIndex
if buffer[position] != rune('u') {
goto l556
}
position++
goto l555
l556:
position, tokenIndex = position555, tokenIndex555
if buffer[position] != rune('U') {
goto l554
}
position++
}
l555:
{
position557, tokenIndex557 := position, tokenIndex
if buffer[position] != rune('x') {
goto l558
}
position++
goto l557
l558:
position, tokenIndex = position557, tokenIndex557
if buffer[position] != rune('X') {
goto l554
}
position++
}
l557:
{
position559, tokenIndex559 := position, tokenIndex
if buffer[position] != rune('t') {
goto l560
}
position++
goto l559
l560:
position, tokenIndex = position559, tokenIndex559
if buffer[position] != rune('T') {
goto l554
}
position++
}
l559:
{
position561, tokenIndex561 := position, tokenIndex
if buffer[position] != rune('w') {
goto l562
}
position++
goto l561
l562:
position, tokenIndex = position561, tokenIndex561
if buffer[position] != rune('W') {
goto l554
}
position++
}
l561:
goto l537
l554:
position, tokenIndex = position537, tokenIndex537
{
position564, tokenIndex564 := position, tokenIndex
if buffer[position] != rune('u') {
goto l565
}
position++
goto l564
l565:
position, tokenIndex = position564, tokenIndex564
if buffer[position] != rune('U') {
goto l563
}
position++
}
l564:
{
position566, tokenIndex566 := position, tokenIndex
if buffer[position] != rune('x') {
goto l567
}
position++
goto l566
l567:
position, tokenIndex = position566, tokenIndex566
if buffer[position] != rune('X') {
goto l563
}
position++
}
l566:
{
position568, tokenIndex568 := position, tokenIndex
if buffer[position] != rune('t') {
goto l569
}
position++
goto l568
l569:
position, tokenIndex = position568, tokenIndex568
if buffer[position] != rune('T') {
goto l563
}
position++
}
l568:
{
position570, tokenIndex570 := position, tokenIndex
if buffer[position] != rune('b') {
goto l571
}
position++
goto l570
l571:
position, tokenIndex = position570, tokenIndex570
if buffer[position] != rune('B') {
goto l563
}
position++
}
l570:
goto l537
l563:
position, tokenIndex = position537, tokenIndex537
{
position573, tokenIndex573 := position, tokenIndex
if buffer[position] != rune('l') {
goto l574
}
position++
goto l573
l574:
position, tokenIndex = position573, tokenIndex573
if buffer[position] != rune('L') {
goto l572
}
position++
}
l573:
{
position575, tokenIndex575 := position, tokenIndex
if buffer[position] != rune('s') {
goto l576
}
position++
goto l575
l576:
position, tokenIndex = position575, tokenIndex575
if buffer[position] != rune('S') {
goto l572
}
position++
}
l575:
{
position577, tokenIndex577 := position, tokenIndex
if buffer[position] != rune('r') {
goto l578
}
position++
goto l577
l578:
position, tokenIndex = position577, tokenIndex577
if buffer[position] != rune('R') {
goto l572
}
position++
}
l577:
goto l537
l572:
position, tokenIndex = position537, tokenIndex537
{
position580, tokenIndex580 := position, tokenIndex
if buffer[position] != rune('r') {
goto l581
}
position++
goto l580
l581:
position, tokenIndex = position580, tokenIndex580
if buffer[position] != rune('R') {
goto l579
}
position++
}
l580:
{
position582, tokenIndex582 := position, tokenIndex
if buffer[position] != rune('o') {
goto l583
}
position++
goto l582
l583:
position, tokenIndex = position582, tokenIndex582
if buffer[position] != rune('O') {
goto l579
}
position++
}
l582:
{
position584, tokenIndex584 := position, tokenIndex
if buffer[position] != rune('r') {
goto l585
}
position++
goto l584
l585:
position, tokenIndex = position584, tokenIndex584
if buffer[position] != rune('R') {
goto l579
}
position++
}
l584:
goto l537
l579:
position, tokenIndex = position537, tokenIndex537
{
position586, tokenIndex586 := position, tokenIndex
if buffer[position] != rune('a') {
goto l587
}
position++
goto l586
l587:
position, tokenIndex = position586, tokenIndex586
if buffer[position] != rune('A') {
goto l535
}
position++
}
l586:
{
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 l535
}
position++
}
l588:
{
position590, tokenIndex590 := position, tokenIndex
if buffer[position] != rune('r') {
goto l591
}
position++
goto l590
l591:
position, tokenIndex = position590, tokenIndex590
if buffer[position] != rune('R') {
goto l535
}
position++
}
l590:
}
l537:
{
position592, tokenIndex592 := position, tokenIndex
if !_rules[ruleWS]() {
goto l592
}
if buffer[position] != rune('#') {
goto l592
}
position++
if !_rules[ruleOffset]() {
goto l592
}
goto l593
l592:
position, tokenIndex = position592, tokenIndex592
}
l593:
add(ruleARMConstantTweak, position536)
}
return true
l535:
position, tokenIndex = position535, tokenIndex535
return false
},
/* 38 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] ']')?))> */
func() bool {
position594, tokenIndex594 := position, tokenIndex
{
position595 := position
{
position596, tokenIndex596 := position, tokenIndex
{
position598, tokenIndex598 := position, tokenIndex
if buffer[position] != rune('s') {
goto l599
}
position++
goto l598
l599:
position, tokenIndex = position598, tokenIndex598
if buffer[position] != rune('S') {
goto l597
}
position++
}
l598:
{
position600, tokenIndex600 := position, tokenIndex
if buffer[position] != rune('p') {
goto l601
}
position++
goto l600
l601:
position, tokenIndex = position600, tokenIndex600
if buffer[position] != rune('P') {
goto l597
}
position++
}
l600:
goto l596
l597:
position, tokenIndex = position596, tokenIndex596
{
position603, tokenIndex603 := position, tokenIndex
if buffer[position] != rune('x') {
goto l604
}
position++
goto l603
l604:
position, tokenIndex = position603, tokenIndex603
if buffer[position] != rune('w') {
goto l605
}
position++
goto l603
l605:
position, tokenIndex = position603, tokenIndex603
if buffer[position] != rune('d') {
goto l606
}
position++
goto l603
l606:
position, tokenIndex = position603, tokenIndex603
if buffer[position] != rune('q') {
goto l607
}
position++
goto l603
l607:
position, tokenIndex = position603, tokenIndex603
if buffer[position] != rune('s') {
goto l602
}
position++
}
l603:
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l602
}
position++
{
position608, tokenIndex608 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l608
}
position++
goto l609
l608:
position, tokenIndex = position608, tokenIndex608
}
l609:
goto l596
l602:
position, tokenIndex = position596, tokenIndex596
{
position611, tokenIndex611 := position, tokenIndex
if buffer[position] != rune('x') {
goto l612
}
position++
goto l611
l612:
position, tokenIndex = position611, tokenIndex611
if buffer[position] != rune('X') {
goto l610
}
position++
}
l611:
{
position613, tokenIndex613 := position, tokenIndex
if buffer[position] != rune('z') {
goto l614
}
position++
goto l613
l614:
position, tokenIndex = position613, tokenIndex613
if buffer[position] != rune('Z') {
goto l610
}
position++
}
l613:
{
position615, tokenIndex615 := position, tokenIndex
if buffer[position] != rune('r') {
goto l616
}
position++
goto l615
l616:
position, tokenIndex = position615, tokenIndex615
if buffer[position] != rune('R') {
goto l610
}
position++
}
l615:
goto l596
l610:
position, tokenIndex = position596, tokenIndex596
{
position618, tokenIndex618 := position, tokenIndex
if buffer[position] != rune('w') {
goto l619
}
position++
goto l618
l619:
position, tokenIndex = position618, tokenIndex618
if buffer[position] != rune('W') {
goto l617
}
position++
}
l618:
{
position620, tokenIndex620 := position, tokenIndex
if buffer[position] != rune('z') {
goto l621
}
position++
goto l620
l621:
position, tokenIndex = position620, tokenIndex620
if buffer[position] != rune('Z') {
goto l617
}
position++
}
l620:
{
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 l617
}
position++
}
l622:
goto l596
l617:
position, tokenIndex = position596, tokenIndex596
if !_rules[ruleARMVectorRegister]() {
goto l624
}
goto l596
l624:
position, tokenIndex = position596, tokenIndex596
if buffer[position] != rune('{') {
goto l594
}
position++
{
position625, tokenIndex625 := position, tokenIndex
if !_rules[ruleWS]() {
goto l625
}
goto l626
l625:
position, tokenIndex = position625, tokenIndex625
}
l626:
if !_rules[ruleARMVectorRegister]() {
goto l594
}
l627:
{
position628, tokenIndex628 := position, tokenIndex
if buffer[position] != rune(',') {
goto l628
}
position++
{
position629, tokenIndex629 := position, tokenIndex
if !_rules[ruleWS]() {
goto l629
}
goto l630
l629:
position, tokenIndex = position629, tokenIndex629
}
l630:
if !_rules[ruleARMVectorRegister]() {
goto l628
}
goto l627
l628:
position, tokenIndex = position628, tokenIndex628
}
{
position631, tokenIndex631 := position, tokenIndex
if !_rules[ruleWS]() {
goto l631
}
goto l632
l631:
position, tokenIndex = position631, tokenIndex631
}
l632:
if buffer[position] != rune('}') {
goto l594
}
position++
{
position633, tokenIndex633 := position, tokenIndex
if buffer[position] != rune('[') {
goto l633
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l633
}
position++
if buffer[position] != rune(']') {
goto l633
}
position++
goto l634
l633:
position, tokenIndex = position633, tokenIndex633
}
l634:
}
l596:
add(ruleARMRegister, position595)
}
return true
l594:
position, tokenIndex = position594, tokenIndex594
return false
},
/* 39 ARMVectorRegister <- <(('v' / 'V') [0-9] [0-9]? ('.' [0-9]* ('b' / 's' / 'd' / 'h' / 'q') ('[' [0-9] [0-9]? ']')?)?)> */
func() bool {
position635, tokenIndex635 := position, tokenIndex
{
position636 := position
{
position637, tokenIndex637 := position, tokenIndex
if buffer[position] != rune('v') {
goto l638
}
position++
goto l637
l638:
position, tokenIndex = position637, tokenIndex637
if buffer[position] != rune('V') {
goto l635
}
position++
}
l637:
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l635
}
position++
{
position639, tokenIndex639 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l639
}
position++
goto l640
l639:
position, tokenIndex = position639, tokenIndex639
}
l640:
{
position641, tokenIndex641 := position, tokenIndex
if buffer[position] != rune('.') {
goto l641
}
position++
l643:
{
position644, tokenIndex644 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l644
}
position++
goto l643
l644:
position, tokenIndex = position644, tokenIndex644
}
{
position645, tokenIndex645 := position, tokenIndex
if buffer[position] != rune('b') {
goto l646
}
position++
goto l645
l646:
position, tokenIndex = position645, tokenIndex645
if buffer[position] != rune('s') {
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('h') {
goto l649
}
position++
goto l645
l649:
position, tokenIndex = position645, tokenIndex645
if buffer[position] != rune('q') {
goto l641
}
position++
}
l645:
{
position650, tokenIndex650 := position, tokenIndex
if buffer[position] != rune('[') {
goto l650
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l650
}
position++
{
position652, tokenIndex652 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l652
}
position++
goto l653
l652:
position, tokenIndex = position652, tokenIndex652
}
l653:
if buffer[position] != rune(']') {
goto l650
}
position++
goto l651
l650:
position, tokenIndex = position650, tokenIndex650
}
l651:
goto l642
l641:
position, tokenIndex = position641, tokenIndex641
}
l642:
add(ruleARMVectorRegister, position636)
}
return true
l635:
position, tokenIndex = position635, tokenIndex635
return false
},
/* 40 MemoryRef <- <((SymbolRef BaseIndexScale) / SymbolRef / Low12BitsSymbolRef / (Offset* BaseIndexScale) / (SegmentRegister Offset BaseIndexScale) / (SegmentRegister BaseIndexScale) / (SegmentRegister Offset) / ARMBaseIndexScale / BaseIndexScale)> */
func() bool {
position654, tokenIndex654 := position, tokenIndex
{
position655 := position
{
position656, tokenIndex656 := position, tokenIndex
if !_rules[ruleSymbolRef]() {
goto l657
}
if !_rules[ruleBaseIndexScale]() {
goto l657
}
goto l656
l657:
position, tokenIndex = position656, tokenIndex656
if !_rules[ruleSymbolRef]() {
goto l658
}
goto l656
l658:
position, tokenIndex = position656, tokenIndex656
if !_rules[ruleLow12BitsSymbolRef]() {
goto l659
}
goto l656
l659:
position, tokenIndex = position656, tokenIndex656
l661:
{
position662, tokenIndex662 := position, tokenIndex
if !_rules[ruleOffset]() {
goto l662
}
goto l661
l662:
position, tokenIndex = position662, tokenIndex662
}
if !_rules[ruleBaseIndexScale]() {
goto l660
}
goto l656
l660:
position, tokenIndex = position656, tokenIndex656
if !_rules[ruleSegmentRegister]() {
goto l663
}
if !_rules[ruleOffset]() {
goto l663
}
if !_rules[ruleBaseIndexScale]() {
goto l663
}
goto l656
l663:
position, tokenIndex = position656, tokenIndex656
if !_rules[ruleSegmentRegister]() {
goto l664
}
if !_rules[ruleBaseIndexScale]() {
goto l664
}
goto l656
l664:
position, tokenIndex = position656, tokenIndex656
if !_rules[ruleSegmentRegister]() {
goto l665
}
if !_rules[ruleOffset]() {
goto l665
}
goto l656
l665:
position, tokenIndex = position656, tokenIndex656
if !_rules[ruleARMBaseIndexScale]() {
goto l666
}
goto l656
l666:
position, tokenIndex = position656, tokenIndex656
if !_rules[ruleBaseIndexScale]() {
goto l654
}
}
l656:
add(ruleMemoryRef, position655)
}
return true
l654:
position, tokenIndex = position654, tokenIndex654
return false
},
/* 41 SymbolRef <- <((Offset* '+')? (LocalSymbol / SymbolName) Offset* ('@' Section Offset*)?)> */
func() bool {
position667, tokenIndex667 := position, tokenIndex
{
position668 := position
{
position669, tokenIndex669 := position, tokenIndex
l671:
{
position672, tokenIndex672 := position, tokenIndex
if !_rules[ruleOffset]() {
goto l672
}
goto l671
l672:
position, tokenIndex = position672, tokenIndex672
}
if buffer[position] != rune('+') {
goto l669
}
position++
goto l670
l669:
position, tokenIndex = position669, tokenIndex669
}
l670:
{
position673, tokenIndex673 := position, tokenIndex
if !_rules[ruleLocalSymbol]() {
goto l674
}
goto l673
l674:
position, tokenIndex = position673, tokenIndex673
if !_rules[ruleSymbolName]() {
goto l667
}
}
l673:
l675:
{
position676, tokenIndex676 := position, tokenIndex
if !_rules[ruleOffset]() {
goto l676
}
goto l675
l676:
position, tokenIndex = position676, tokenIndex676
}
{
position677, tokenIndex677 := position, tokenIndex
if buffer[position] != rune('@') {
goto l677
}
position++
if !_rules[ruleSection]() {
goto l677
}
l679:
{
position680, tokenIndex680 := position, tokenIndex
if !_rules[ruleOffset]() {
goto l680
}
goto l679
l680:
position, tokenIndex = position680, tokenIndex680
}
goto l678
l677:
position, tokenIndex = position677, tokenIndex677
}
l678:
add(ruleSymbolRef, position668)
}
return true
l667:
position, tokenIndex = position667, tokenIndex667
return false
},
/* 42 Low12BitsSymbolRef <- <(':' ('l' / 'L') ('o' / 'O') '1' '2' ':' (LocalSymbol / SymbolName) Offset?)> */
func() bool {
position681, tokenIndex681 := position, tokenIndex
{
position682 := position
if buffer[position] != rune(':') {
goto l681
}
position++
{
position683, tokenIndex683 := position, tokenIndex
if buffer[position] != rune('l') {
goto l684
}
position++
goto l683
l684:
position, tokenIndex = position683, tokenIndex683
if buffer[position] != rune('L') {
goto l681
}
position++
}
l683:
{
position685, tokenIndex685 := position, tokenIndex
if buffer[position] != rune('o') {
goto l686
}
position++
goto l685
l686:
position, tokenIndex = position685, tokenIndex685
if buffer[position] != rune('O') {
goto l681
}
position++
}
l685:
if buffer[position] != rune('1') {
goto l681
}
position++
if buffer[position] != rune('2') {
goto l681
}
position++
if buffer[position] != rune(':') {
goto l681
}
position++
{
position687, tokenIndex687 := position, tokenIndex
if !_rules[ruleLocalSymbol]() {
goto l688
}
goto l687
l688:
position, tokenIndex = position687, tokenIndex687
if !_rules[ruleSymbolName]() {
goto l681
}
}
l687:
{
position689, tokenIndex689 := position, tokenIndex
if !_rules[ruleOffset]() {
goto l689
}
goto l690
l689:
position, tokenIndex = position689, tokenIndex689
}
l690:
add(ruleLow12BitsSymbolRef, position682)
}
return true
l681:
position, tokenIndex = position681, tokenIndex681
return false
},
/* 43 ARMBaseIndexScale <- <('[' ARMRegister (',' WS? (('#' Offset ('*' [0-9]+)?) / ARMGOTLow12 / Low12BitsSymbolRef / ARMRegister) (',' WS? ARMConstantTweak)?)? ']' ARMPostincrement?)> */
func() bool {
position691, tokenIndex691 := position, tokenIndex
{
position692 := position
if buffer[position] != rune('[') {
goto l691
}
position++
if !_rules[ruleARMRegister]() {
goto l691
}
{
position693, tokenIndex693 := position, tokenIndex
if buffer[position] != rune(',') {
goto l693
}
position++
{
position695, tokenIndex695 := position, tokenIndex
if !_rules[ruleWS]() {
goto l695
}
goto l696
l695:
position, tokenIndex = position695, tokenIndex695
}
l696:
{
position697, tokenIndex697 := position, tokenIndex
if buffer[position] != rune('#') {
goto l698
}
position++
if !_rules[ruleOffset]() {
goto l698
}
{
position699, tokenIndex699 := position, tokenIndex
if buffer[position] != rune('*') {
goto l699
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l699
}
position++
l701:
{
position702, tokenIndex702 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l702
}
position++
goto l701
l702:
position, tokenIndex = position702, tokenIndex702
}
goto l700
l699:
position, tokenIndex = position699, tokenIndex699
}
l700:
goto l697
l698:
position, tokenIndex = position697, tokenIndex697
if !_rules[ruleARMGOTLow12]() {
goto l703
}
goto l697
l703:
position, tokenIndex = position697, tokenIndex697
if !_rules[ruleLow12BitsSymbolRef]() {
goto l704
}
goto l697
l704:
position, tokenIndex = position697, tokenIndex697
if !_rules[ruleARMRegister]() {
goto l693
}
}
l697:
{
position705, tokenIndex705 := position, tokenIndex
if buffer[position] != rune(',') {
goto l705
}
position++
{
position707, tokenIndex707 := position, tokenIndex
if !_rules[ruleWS]() {
goto l707
}
goto l708
l707:
position, tokenIndex = position707, tokenIndex707
}
l708:
if !_rules[ruleARMConstantTweak]() {
goto l705
}
goto l706
l705:
position, tokenIndex = position705, tokenIndex705
}
l706:
goto l694
l693:
position, tokenIndex = position693, tokenIndex693
}
l694:
if buffer[position] != rune(']') {
goto l691
}
position++
{
position709, tokenIndex709 := position, tokenIndex
if !_rules[ruleARMPostincrement]() {
goto l709
}
goto l710
l709:
position, tokenIndex = position709, tokenIndex709
}
l710:
add(ruleARMBaseIndexScale, position692)
}
return true
l691:
position, tokenIndex = position691, tokenIndex691
return false
},
/* 44 ARMGOTLow12 <- <(':' ('g' / 'G') ('o' / 'O') ('t' / 'T') '_' ('l' / 'L') ('o' / 'O') '1' '2' ':' SymbolName)> */
func() bool {
position711, tokenIndex711 := position, tokenIndex
{
position712 := position
if buffer[position] != rune(':') {
goto l711
}
position++
{
position713, tokenIndex713 := position, tokenIndex
if buffer[position] != rune('g') {
goto l714
}
position++
goto l713
l714:
position, tokenIndex = position713, tokenIndex713
if buffer[position] != rune('G') {
goto l711
}
position++
}
l713:
{
position715, tokenIndex715 := position, tokenIndex
if buffer[position] != rune('o') {
goto l716
}
position++
goto l715
l716:
position, tokenIndex = position715, tokenIndex715
if buffer[position] != rune('O') {
goto l711
}
position++
}
l715:
{
position717, tokenIndex717 := position, tokenIndex
if buffer[position] != rune('t') {
goto l718
}
position++
goto l717
l718:
position, tokenIndex = position717, tokenIndex717
if buffer[position] != rune('T') {
goto l711
}
position++
}
l717:
if buffer[position] != rune('_') {
goto l711
}
position++
{
position719, tokenIndex719 := position, tokenIndex
if buffer[position] != rune('l') {
goto l720
}
position++
goto l719
l720:
position, tokenIndex = position719, tokenIndex719
if buffer[position] != rune('L') {
goto l711
}
position++
}
l719:
{
position721, tokenIndex721 := position, tokenIndex
if buffer[position] != rune('o') {
goto l722
}
position++
goto l721
l722:
position, tokenIndex = position721, tokenIndex721
if buffer[position] != rune('O') {
goto l711
}
position++
}
l721:
if buffer[position] != rune('1') {
goto l711
}
position++
if buffer[position] != rune('2') {
goto l711
}
position++
if buffer[position] != rune(':') {
goto l711
}
position++
if !_rules[ruleSymbolName]() {
goto l711
}
add(ruleARMGOTLow12, position712)
}
return true
l711:
position, tokenIndex = position711, tokenIndex711
return false
},
/* 45 ARMPostincrement <- <'!'> */
func() bool {
position723, tokenIndex723 := position, tokenIndex
{
position724 := position
if buffer[position] != rune('!') {
goto l723
}
position++
add(ruleARMPostincrement, position724)
}
return true
l723:
position, tokenIndex = position723, tokenIndex723
return false
},
/* 46 BaseIndexScale <- <('(' RegisterOrConstant? WS? (',' WS? RegisterOrConstant WS? (',' [0-9]+)?)? ')')> */
func() bool {
position725, tokenIndex725 := position, tokenIndex
{
position726 := position
if buffer[position] != rune('(') {
goto l725
}
position++
{
position727, tokenIndex727 := position, tokenIndex
if !_rules[ruleRegisterOrConstant]() {
goto l727
}
goto l728
l727:
position, tokenIndex = position727, tokenIndex727
}
l728:
{
position729, tokenIndex729 := position, tokenIndex
if !_rules[ruleWS]() {
goto l729
}
goto l730
l729:
position, tokenIndex = position729, tokenIndex729
}
l730:
{
position731, tokenIndex731 := position, tokenIndex
if buffer[position] != rune(',') {
goto l731
}
position++
{
position733, tokenIndex733 := position, tokenIndex
if !_rules[ruleWS]() {
goto l733
}
goto l734
l733:
position, tokenIndex = position733, tokenIndex733
}
l734:
if !_rules[ruleRegisterOrConstant]() {
goto l731
}
{
position735, tokenIndex735 := position, tokenIndex
if !_rules[ruleWS]() {
goto l735
}
goto l736
l735:
position, tokenIndex = position735, tokenIndex735
}
l736:
{
position737, tokenIndex737 := position, tokenIndex
if buffer[position] != rune(',') {
goto l737
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l737
}
position++
l739:
{
position740, tokenIndex740 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l740
}
position++
goto l739
l740:
position, tokenIndex = position740, tokenIndex740
}
goto l738
l737:
position, tokenIndex = position737, tokenIndex737
}
l738:
goto l732
l731:
position, tokenIndex = position731, tokenIndex731
}
l732:
if buffer[position] != rune(')') {
goto l725
}
position++
add(ruleBaseIndexScale, position726)
}
return true
l725:
position, tokenIndex = position725, tokenIndex725
return false
},
/* 47 Operator <- <('+' / '-')> */
func() bool {
position741, tokenIndex741 := position, tokenIndex
{
position742 := position
{
position743, tokenIndex743 := position, tokenIndex
if buffer[position] != rune('+') {
goto l744
}
position++
goto l743
l744:
position, tokenIndex = position743, tokenIndex743
if buffer[position] != rune('-') {
goto l741
}
position++
}
l743:
add(ruleOperator, position742)
}
return true
l741:
position, tokenIndex = position741, tokenIndex741
return false
},
/* 48 Offset <- <('+'? '-'? (('0' ('b' / 'B') ('0' / '1')+) / ('0' ('x' / 'X') ([0-9] / [0-9] / ([a-f] / [A-F]))+) / [0-9]+))> */
func() bool {
position745, tokenIndex745 := position, tokenIndex
{
position746 := position
{
position747, tokenIndex747 := position, tokenIndex
if buffer[position] != rune('+') {
goto l747
}
position++
goto l748
l747:
position, tokenIndex = position747, tokenIndex747
}
l748:
{
position749, tokenIndex749 := position, tokenIndex
if buffer[position] != rune('-') {
goto l749
}
position++
goto l750
l749:
position, tokenIndex = position749, tokenIndex749
}
l750:
{
position751, tokenIndex751 := position, tokenIndex
if buffer[position] != rune('0') {
goto l752
}
position++
{
position753, tokenIndex753 := position, tokenIndex
if buffer[position] != rune('b') {
goto l754
}
position++
goto l753
l754:
position, tokenIndex = position753, tokenIndex753
if buffer[position] != rune('B') {
goto l752
}
position++
}
l753:
{
position757, tokenIndex757 := position, tokenIndex
if buffer[position] != rune('0') {
goto l758
}
position++
goto l757
l758:
position, tokenIndex = position757, tokenIndex757
if buffer[position] != rune('1') {
goto l752
}
position++
}
l757:
l755:
{
position756, tokenIndex756 := position, tokenIndex
{
position759, tokenIndex759 := position, tokenIndex
if buffer[position] != rune('0') {
goto l760
}
position++
goto l759
l760:
position, tokenIndex = position759, tokenIndex759
if buffer[position] != rune('1') {
goto l756
}
position++
}
l759:
goto l755
l756:
position, tokenIndex = position756, tokenIndex756
}
goto l751
l752:
position, tokenIndex = position751, tokenIndex751
if buffer[position] != rune('0') {
goto l761
}
position++
{
position762, tokenIndex762 := position, tokenIndex
if buffer[position] != rune('x') {
goto l763
}
position++
goto l762
l763:
position, tokenIndex = position762, tokenIndex762
if buffer[position] != rune('X') {
goto l761
}
position++
}
l762:
{
position766, tokenIndex766 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l767
}
position++
goto l766
l767:
position, tokenIndex = position766, tokenIndex766
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l768
}
position++
goto l766
l768:
position, tokenIndex = position766, tokenIndex766
{
position769, tokenIndex769 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('f') {
goto l770
}
position++
goto l769
l770:
position, tokenIndex = position769, tokenIndex769
if c := buffer[position]; c < rune('A') || c > rune('F') {
goto l761
}
position++
}
l769:
}
l766:
l764:
{
position765, tokenIndex765 := position, tokenIndex
{
position771, tokenIndex771 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l772
}
position++
goto l771
l772:
position, tokenIndex = position771, tokenIndex771
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l773
}
position++
goto l771
l773:
position, tokenIndex = position771, tokenIndex771
{
position774, tokenIndex774 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('f') {
goto l775
}
position++
goto l774
l775:
position, tokenIndex = position774, tokenIndex774
if c := buffer[position]; c < rune('A') || c > rune('F') {
goto l765
}
position++
}
l774:
}
l771:
goto l764
l765:
position, tokenIndex = position765, tokenIndex765
}
goto l751
l761:
position, tokenIndex = position751, tokenIndex751
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l745
}
position++
l776:
{
position777, tokenIndex777 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l777
}
position++
goto l776
l777:
position, tokenIndex = position777, tokenIndex777
}
}
l751:
add(ruleOffset, position746)
}
return true
l745:
position, tokenIndex = position745, tokenIndex745
return false
},
/* 49 Section <- <([a-z] / [A-Z] / '@')+> */
func() bool {
position778, tokenIndex778 := position, tokenIndex
{
position779 := position
{
position782, tokenIndex782 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l783
}
position++
goto l782
l783:
position, tokenIndex = position782, tokenIndex782
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l784
}
position++
goto l782
l784:
position, tokenIndex = position782, tokenIndex782
if buffer[position] != rune('@') {
goto l778
}
position++
}
l782:
l780:
{
position781, tokenIndex781 := position, tokenIndex
{
position785, tokenIndex785 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l786
}
position++
goto l785
l786:
position, tokenIndex = position785, tokenIndex785
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l787
}
position++
goto l785
l787:
position, tokenIndex = position785, tokenIndex785
if buffer[position] != rune('@') {
goto l781
}
position++
}
l785:
goto l780
l781:
position, tokenIndex = position781, tokenIndex781
}
add(ruleSection, position779)
}
return true
l778:
position, tokenIndex = position778, tokenIndex778
return false
},
/* 50 SegmentRegister <- <('%' ([c-g] / 's') ('s' ':'))> */
func() bool {
position788, tokenIndex788 := position, tokenIndex
{
position789 := position
if buffer[position] != rune('%') {
goto l788
}
position++
{
position790, tokenIndex790 := position, tokenIndex
if c := buffer[position]; c < rune('c') || c > rune('g') {
goto l791
}
position++
goto l790
l791:
position, tokenIndex = position790, tokenIndex790
if buffer[position] != rune('s') {
goto l788
}
position++
}
l790:
if buffer[position] != rune('s') {
goto l788
}
position++
if buffer[position] != rune(':') {
goto l788
}
position++
add(ruleSegmentRegister, position789)
}
return true
l788:
position, tokenIndex = position788, tokenIndex788
return false
},
}
p.rules = _rules
}