blob: c65eb502bfafd57a8403b682219c7b333167781e [file] [log] [blame]
package main
// Code generated by ./peg/peg delocate.peg DO NOT EDIT.
import (
"fmt"
"io"
"os"
"sort"
"strconv"
"strings"
)
const endSymbol rune = 1114112
/* The rule types inferred from the grammar are below. */
type pegRule uint8
const (
ruleUnknown pegRule = iota
ruleAsmFile
ruleStatement
ruleGlobalDirective
ruleDirective
ruleDirectiveName
ruleLocationDirective
ruleFileDirective
ruleLocDirective
ruleArgs
ruleArg
ruleQuotedArg
ruleQuotedText
ruleLabelContainingDirective
ruleLabelContainingDirectiveName
ruleSymbolArgs
ruleSymbolArg
ruleSymbolExpr
ruleSymbolAtom
ruleSymbolOperator
ruleOpenParen
ruleCloseParen
ruleSymbolType
ruleDot
ruleTCMarker
ruleEscapedChar
ruleWS
ruleComment
ruleLabel
ruleSymbolName
ruleLocalSymbol
ruleLocalLabel
ruleLocalLabelRef
ruleInstruction
ruleInstructionName
ruleInstructionArg
ruleGOTLocation
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",
"SymbolExpr",
"SymbolAtom",
"SymbolOperator",
"OpenParen",
"CloseParen",
"SymbolType",
"Dot",
"TCMarker",
"EscapedChar",
"WS",
"Comment",
"Label",
"SymbolName",
"LocalSymbol",
"LocalLabel",
"LocalLabelRef",
"Instruction",
"InstructionName",
"InstructionArg",
"GOTLocation",
"GOTSymbolOffset",
"AVX512Token",
"TOCRefHigh",
"TOCRefLow",
"IndirectionIndicator",
"RegisterOrConstant",
"ARMConstantTweak",
"ARMRegister",
"ARMVectorRegister",
"MemoryRef",
"SymbolRef",
"Low12BitsSymbolRef",
"ARMBaseIndexScale",
"ARMGOTLow12",
"ARMPostincrement",
"BaseIndexScale",
"Operator",
"Offset",
"Section",
"SegmentRegister",
}
type token32 struct {
pegRule
begin, end uint32
}
func (t *token32) String() string {
return fmt.Sprintf("\x1B[34m%v\x1B[m %v %v", rul3s[t.pegRule], t.begin, t.end)
}
type node32 struct {
token32
up, next *node32
}
func (node *node32) print(w io.Writer, pretty bool, buffer string) {
var print func(node *node32, depth int)
print = func(node *node32, depth int) {
for node != nil {
for c := 0; c < depth; c++ {
fmt.Fprintf(w, " ")
}
rule := rul3s[node.pegRule]
quote := strconv.Quote(string(([]rune(buffer)[node.begin:node.end])))
if !pretty {
fmt.Fprintf(w, "%v %v\n", rule, quote)
} else {
fmt.Fprintf(w, "\x1B[36m%v\x1B[m %v\n", rule, quote)
}
if node.up != nil {
print(node.up, depth+1)
}
node = node.next
}
}
print(node, 0)
}
func (node *node32) Print(w io.Writer, buffer string) {
node.print(w, false, buffer)
}
func (node *node32) PrettyPrint(w io.Writer, buffer string) {
node.print(w, true, buffer)
}
type tokens32 struct {
tree []token32
}
func (t *tokens32) Trim(length uint32) {
t.tree = t.tree[:length]
}
func (t *tokens32) Print() {
for _, token := range t.tree {
fmt.Println(token.String())
}
}
func (t *tokens32) AST() *node32 {
type element struct {
node *node32
down *element
}
tokens := t.Tokens()
var stack *element
for _, token := range tokens {
if token.begin == token.end {
continue
}
node := &node32{token32: token}
for stack != nil && stack.node.begin >= token.begin && stack.node.end <= token.end {
stack.node.next = node.up
node.up = stack.node
stack = stack.down
}
stack = &element{node: node, down: stack}
}
if stack != nil {
return stack.node
}
return nil
}
func (t *tokens32) PrintSyntaxTree(buffer string) {
t.AST().Print(os.Stdout, buffer)
}
func (t *tokens32) WriteSyntaxTree(w io.Writer, buffer string) {
t.AST().Print(w, buffer)
}
func (t *tokens32) PrettyPrintSyntaxTree(buffer string) {
t.AST().PrettyPrint(os.Stdout, buffer)
}
func (t *tokens32) Add(rule pegRule, begin, end, index uint32) {
tree, i := t.tree, int(index)
if i >= len(tree) {
t.tree = append(tree, token32{pegRule: rule, begin: begin, end: end})
return
}
tree[i] = token32{pegRule: rule, begin: begin, end: end}
}
func (t *tokens32) Tokens() []token32 {
return t.tree
}
type Asm struct {
Buffer string
buffer []rune
rules [57]func() bool
parse func(rule ...int) error
reset func()
Pretty bool
tokens32
}
func (p *Asm) Parse(rule ...int) error {
return p.parse(rule...)
}
func (p *Asm) Reset() {
p.reset()
}
type textPosition struct {
line, symbol int
}
type textPositionMap map[int]textPosition
func translatePositions(buffer []rune, positions []int) textPositionMap {
length, translations, j, line, symbol := len(positions), make(textPositionMap, len(positions)), 0, 1, 0
sort.Ints(positions)
search:
for i, c := range buffer {
if c == '\n' {
line, symbol = line+1, 0
} else {
symbol++
}
if i == positions[j] {
translations[positions[j]] = textPosition{line, symbol}
for j++; j < length; j++ {
if i != positions[j] {
continue search
}
}
break search
}
}
return translations
}
type parseError struct {
p *Asm
max token32
}
func (e *parseError) Error() string {
tokens, err := []token32{e.max}, "\n"
positions, p := make([]int, 2*len(tokens)), 0
for _, token := range tokens {
positions[p], p = int(token.begin), p+1
positions[p], p = int(token.end), p+1
}
translations := translatePositions(e.p.buffer, positions)
format := "parse error near %v (line %v symbol %v - line %v symbol %v):\n%v\n"
if e.p.Pretty {
format = "parse error near \x1B[34m%v\x1B[m (line %v symbol %v - line %v symbol %v):\n%v\n"
}
for _, token := range tokens {
begin, end := int(token.begin), int(token.end)
err += fmt.Sprintf(format,
rul3s[token.pegRule],
translations[begin].line, translations[begin].symbol,
translations[end].line, translations[end].symbol,
strconv.Quote(string(e.p.buffer[begin:end])))
}
return err
}
func (p *Asm) PrintSyntaxTree() {
if p.Pretty {
p.tokens32.PrettyPrintSyntaxTree(p.Buffer)
} else {
p.tokens32.PrintSyntaxTree(p.Buffer)
}
}
func (p *Asm) WriteSyntaxTree(w io.Writer) {
p.tokens32.WriteSyntaxTree(w, p.Buffer)
}
func (p *Asm) SprintSyntaxTree() string {
var bldr strings.Builder
p.WriteSyntaxTree(&bldr)
return bldr.String()
}
func Pretty(pretty bool) func(*Asm) error {
return func(p *Asm) error {
p.Pretty = pretty
return nil
}
}
func Size(size int) func(*Asm) error {
return func(p *Asm) error {
p.tokens32 = tokens32{tree: make([]token32, 0, size)}
return nil
}
}
func (p *Asm) Init(options ...func(*Asm) error) error {
var (
max token32
position, tokenIndex uint32
buffer []rune
)
for _, option := range options {
err := option(p)
if err != nil {
return err
}
}
p.reset = func() {
max = token32{}
position, tokenIndex = 0, 0
p.buffer = []rune(p.Buffer)
if len(p.buffer) == 0 || p.buffer[len(p.buffer)-1] != endSymbol {
p.buffer = append(p.buffer, endSymbol)
}
buffer = p.buffer
}
p.reset()
_rules := p.rules
tree := p.tokens32
p.parse = func(rule ...int) error {
r := 1
if len(rule) > 0 {
r = rule[0]
}
matches := p.rules[r]()
p.tokens32 = tree
if matches {
p.Trim(tokenIndex)
return nil
}
return &parseError{p, max}
}
add := func(rule pegRule, begin uint32) {
tree.Add(rule, begin, position, tokenIndex)
tokenIndex++
if begin != position && position > max.end {
max = token32{rule, begin, position}
}
}
matchDot := func() bool {
if buffer[position] != endSymbol {
position++
return true
}
return false
}
/*matchChar := func(c byte) bool {
if buffer[position] == c {
position++
return true
}
return false
}*/
/*matchRange := func(lower byte, upper byte) bool {
if c := buffer[position]; c >= lower && c <= upper {
position++
return true
}
return false
}*/
_rules = [...]func() bool{
nil,
/* 0 AsmFile <- <(Statement* !.)> */
func() bool {
position0, tokenIndex0 := position, tokenIndex
{
position1 := position
l2:
{
position3, tokenIndex3 := position, tokenIndex
if !_rules[ruleStatement]() {
goto l3
}
goto l2
l3:
position, tokenIndex = position3, tokenIndex3
}
{
position4, tokenIndex4 := position, tokenIndex
if !matchDot() {
goto l4
}
goto l0
l4:
position, tokenIndex = position4, tokenIndex4
}
add(ruleAsmFile, position1)
}
return true
l0:
position, tokenIndex = position0, tokenIndex0
return false
},
/* 1 Statement <- <(WS? (Label / ((GlobalDirective / LocationDirective / LabelContainingDirective / Instruction / Directive / Comment / ) WS? ((Comment? '\n') / ';'))))> */
func() bool {
position5, tokenIndex5 := position, tokenIndex
{
position6 := position
{
position7, tokenIndex7 := position, tokenIndex
if !_rules[ruleWS]() {
goto l7
}
goto l8
l7:
position, tokenIndex = position7, tokenIndex7
}
l8:
{
position9, tokenIndex9 := position, tokenIndex
if !_rules[ruleLabel]() {
goto l10
}
goto l9
l10:
position, tokenIndex = position9, tokenIndex9
{
position11, tokenIndex11 := position, tokenIndex
if !_rules[ruleGlobalDirective]() {
goto l12
}
goto l11
l12:
position, tokenIndex = position11, tokenIndex11
if !_rules[ruleLocationDirective]() {
goto l13
}
goto l11
l13:
position, tokenIndex = position11, tokenIndex11
if !_rules[ruleLabelContainingDirective]() {
goto l14
}
goto l11
l14:
position, tokenIndex = position11, tokenIndex11
if !_rules[ruleInstruction]() {
goto l15
}
goto l11
l15:
position, tokenIndex = position11, tokenIndex11
if !_rules[ruleDirective]() {
goto l16
}
goto l11
l16:
position, tokenIndex = position11, tokenIndex11
if !_rules[ruleComment]() {
goto l17
}
goto l11
l17:
position, tokenIndex = position11, tokenIndex11
}
l11:
{
position18, tokenIndex18 := position, tokenIndex
if !_rules[ruleWS]() {
goto l18
}
goto l19
l18:
position, tokenIndex = position18, tokenIndex18
}
l19:
{
position20, tokenIndex20 := position, tokenIndex
{
position22, tokenIndex22 := position, tokenIndex
if !_rules[ruleComment]() {
goto l22
}
goto l23
l22:
position, tokenIndex = position22, tokenIndex22
}
l23:
if buffer[position] != rune('\n') {
goto l21
}
position++
goto l20
l21:
position, tokenIndex = position20, tokenIndex20
if buffer[position] != rune(';') {
goto l5
}
position++
}
l20:
}
l9:
add(ruleStatement, position6)
}
return true
l5:
position, tokenIndex = position5, tokenIndex5
return false
},
/* 2 GlobalDirective <- <((('.' ('g' / 'G') ('l' / 'L') ('o' / 'O') ('b' / 'B') ('a' / 'A') ('l' / 'L')) / ('.' ('g' / 'G') ('l' / 'L') ('o' / 'O') ('b' / 'B') ('l' / 'L'))) WS SymbolName)> */
func() bool {
position24, tokenIndex24 := position, tokenIndex
{
position25 := position
{
position26, tokenIndex26 := position, tokenIndex
if buffer[position] != rune('.') {
goto l27
}
position++
{
position28, tokenIndex28 := position, tokenIndex
if buffer[position] != rune('g') {
goto l29
}
position++
goto l28
l29:
position, tokenIndex = position28, tokenIndex28
if buffer[position] != rune('G') {
goto l27
}
position++
}
l28:
{
position30, tokenIndex30 := position, tokenIndex
if buffer[position] != rune('l') {
goto l31
}
position++
goto l30
l31:
position, tokenIndex = position30, tokenIndex30
if buffer[position] != rune('L') {
goto l27
}
position++
}
l30:
{
position32, tokenIndex32 := position, tokenIndex
if buffer[position] != rune('o') {
goto l33
}
position++
goto l32
l33:
position, tokenIndex = position32, tokenIndex32
if buffer[position] != rune('O') {
goto l27
}
position++
}
l32:
{
position34, tokenIndex34 := position, tokenIndex
if buffer[position] != rune('b') {
goto l35
}
position++
goto l34
l35:
position, tokenIndex = position34, tokenIndex34
if buffer[position] != rune('B') {
goto l27
}
position++
}
l34:
{
position36, tokenIndex36 := position, tokenIndex
if buffer[position] != rune('a') {
goto l37
}
position++
goto l36
l37:
position, tokenIndex = position36, tokenIndex36
if buffer[position] != rune('A') {
goto l27
}
position++
}
l36:
{
position38, tokenIndex38 := position, tokenIndex
if buffer[position] != rune('l') {
goto l39
}
position++
goto l38
l39:
position, tokenIndex = position38, tokenIndex38
if buffer[position] != rune('L') {
goto l27
}
position++
}
l38:
goto l26
l27:
position, tokenIndex = position26, tokenIndex26
if buffer[position] != rune('.') {
goto l24
}
position++
{
position40, tokenIndex40 := position, tokenIndex
if buffer[position] != rune('g') {
goto l41
}
position++
goto l40
l41:
position, tokenIndex = position40, tokenIndex40
if buffer[position] != rune('G') {
goto l24
}
position++
}
l40:
{
position42, tokenIndex42 := position, tokenIndex
if buffer[position] != rune('l') {
goto l43
}
position++
goto l42
l43:
position, tokenIndex = position42, tokenIndex42
if buffer[position] != rune('L') {
goto l24
}
position++
}
l42:
{
position44, tokenIndex44 := position, tokenIndex
if buffer[position] != rune('o') {
goto l45
}
position++
goto l44
l45:
position, tokenIndex = position44, tokenIndex44
if buffer[position] != rune('O') {
goto l24
}
position++
}
l44:
{
position46, tokenIndex46 := position, tokenIndex
if buffer[position] != rune('b') {
goto l47
}
position++
goto l46
l47:
position, tokenIndex = position46, tokenIndex46
if buffer[position] != rune('B') {
goto l24
}
position++
}
l46:
{
position48, tokenIndex48 := position, tokenIndex
if buffer[position] != rune('l') {
goto l49
}
position++
goto l48
l49:
position, tokenIndex = position48, tokenIndex48
if buffer[position] != rune('L') {
goto l24
}
position++
}
l48:
}
l26:
if !_rules[ruleWS]() {
goto l24
}
if !_rules[ruleSymbolName]() {
goto l24
}
add(ruleGlobalDirective, position25)
}
return true
l24:
position, tokenIndex = position24, tokenIndex24
return false
},
/* 3 Directive <- <('.' DirectiveName (WS Args)?)> */
func() bool {
position50, tokenIndex50 := position, tokenIndex
{
position51 := position
if buffer[position] != rune('.') {
goto l50
}
position++
if !_rules[ruleDirectiveName]() {
goto l50
}
{
position52, tokenIndex52 := position, tokenIndex
if !_rules[ruleWS]() {
goto l52
}
if !_rules[ruleArgs]() {
goto l52
}
goto l53
l52:
position, tokenIndex = position52, tokenIndex52
}
l53:
add(ruleDirective, position51)
}
return true
l50:
position, tokenIndex = position50, tokenIndex50
return false
},
/* 4 DirectiveName <- <([a-z] / [A-Z] / ([0-9] / [0-9]) / '_')+> */
func() bool {
position54, tokenIndex54 := position, tokenIndex
{
position55 := position
{
position58, tokenIndex58 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l59
}
position++
goto l58
l59:
position, tokenIndex = position58, tokenIndex58
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l60
}
position++
goto l58
l60:
position, tokenIndex = position58, tokenIndex58
{
position62, tokenIndex62 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l63
}
position++
goto l62
l63:
position, tokenIndex = position62, tokenIndex62
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l61
}
position++
}
l62:
goto l58
l61:
position, tokenIndex = position58, tokenIndex58
if buffer[position] != rune('_') {
goto l54
}
position++
}
l58:
l56:
{
position57, tokenIndex57 := position, tokenIndex
{
position64, tokenIndex64 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l65
}
position++
goto l64
l65:
position, tokenIndex = position64, tokenIndex64
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l66
}
position++
goto l64
l66:
position, tokenIndex = position64, tokenIndex64
{
position68, tokenIndex68 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l69
}
position++
goto l68
l69:
position, tokenIndex = position68, tokenIndex68
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l67
}
position++
}
l68:
goto l64
l67:
position, tokenIndex = position64, tokenIndex64
if buffer[position] != rune('_') {
goto l57
}
position++
}
l64:
goto l56
l57:
position, tokenIndex = position57, tokenIndex57
}
add(ruleDirectiveName, position55)
}
return true
l54:
position, tokenIndex = position54, tokenIndex54
return false
},
/* 5 LocationDirective <- <(FileDirective / LocDirective)> */
func() bool {
position70, tokenIndex70 := position, tokenIndex
{
position71 := position
{
position72, tokenIndex72 := position, tokenIndex
if !_rules[ruleFileDirective]() {
goto l73
}
goto l72
l73:
position, tokenIndex = position72, tokenIndex72
if !_rules[ruleLocDirective]() {
goto l70
}
}
l72:
add(ruleLocationDirective, position71)
}
return true
l70:
position, tokenIndex = position70, tokenIndex70
return false
},
/* 6 FileDirective <- <('.' ('f' / 'F') ('i' / 'I') ('l' / 'L') ('e' / 'E') WS (!('#' / '\n') .)+)> */
func() bool {
position74, tokenIndex74 := position, tokenIndex
{
position75 := position
if buffer[position] != rune('.') {
goto l74
}
position++
{
position76, tokenIndex76 := position, tokenIndex
if buffer[position] != rune('f') {
goto l77
}
position++
goto l76
l77:
position, tokenIndex = position76, tokenIndex76
if buffer[position] != rune('F') {
goto l74
}
position++
}
l76:
{
position78, tokenIndex78 := position, tokenIndex
if buffer[position] != rune('i') {
goto l79
}
position++
goto l78
l79:
position, tokenIndex = position78, tokenIndex78
if buffer[position] != rune('I') {
goto l74
}
position++
}
l78:
{
position80, tokenIndex80 := position, tokenIndex
if buffer[position] != rune('l') {
goto l81
}
position++
goto l80
l81:
position, tokenIndex = position80, tokenIndex80
if buffer[position] != rune('L') {
goto l74
}
position++
}
l80:
{
position82, tokenIndex82 := position, tokenIndex
if buffer[position] != rune('e') {
goto l83
}
position++
goto l82
l83:
position, tokenIndex = position82, tokenIndex82
if buffer[position] != rune('E') {
goto l74
}
position++
}
l82:
if !_rules[ruleWS]() {
goto l74
}
{
position86, tokenIndex86 := position, tokenIndex
{
position87, tokenIndex87 := position, tokenIndex
if buffer[position] != rune('#') {
goto l88
}
position++
goto l87
l88:
position, tokenIndex = position87, tokenIndex87
if buffer[position] != rune('\n') {
goto l86
}
position++
}
l87:
goto l74
l86:
position, tokenIndex = position86, tokenIndex86
}
if !matchDot() {
goto l74
}
l84:
{
position85, tokenIndex85 := position, tokenIndex
{
position89, tokenIndex89 := position, tokenIndex
{
position90, tokenIndex90 := position, tokenIndex
if buffer[position] != rune('#') {
goto l91
}
position++
goto l90
l91:
position, tokenIndex = position90, tokenIndex90
if buffer[position] != rune('\n') {
goto l89
}
position++
}
l90:
goto l85
l89:
position, tokenIndex = position89, tokenIndex89
}
if !matchDot() {
goto l85
}
goto l84
l85:
position, tokenIndex = position85, tokenIndex85
}
add(ruleFileDirective, position75)
}
return true
l74:
position, tokenIndex = position74, tokenIndex74
return false
},
/* 7 LocDirective <- <('.' ('l' / 'L') ('o' / 'O') ('c' / 'C') WS (!('#' / '/' / '\n') .)+)> */
func() bool {
position92, tokenIndex92 := position, tokenIndex
{
position93 := position
if buffer[position] != rune('.') {
goto l92
}
position++
{
position94, tokenIndex94 := position, tokenIndex
if buffer[position] != rune('l') {
goto l95
}
position++
goto l94
l95:
position, tokenIndex = position94, tokenIndex94
if buffer[position] != rune('L') {
goto l92
}
position++
}
l94:
{
position96, tokenIndex96 := position, tokenIndex
if buffer[position] != rune('o') {
goto l97
}
position++
goto l96
l97:
position, tokenIndex = position96, tokenIndex96
if buffer[position] != rune('O') {
goto l92
}
position++
}
l96:
{
position98, tokenIndex98 := position, tokenIndex
if buffer[position] != rune('c') {
goto l99
}
position++
goto l98
l99:
position, tokenIndex = position98, tokenIndex98
if buffer[position] != rune('C') {
goto l92
}
position++
}
l98:
if !_rules[ruleWS]() {
goto l92
}
{
position102, tokenIndex102 := position, tokenIndex
{
position103, tokenIndex103 := position, tokenIndex
if buffer[position] != rune('#') {
goto l104
}
position++
goto l103
l104:
position, tokenIndex = position103, tokenIndex103
if buffer[position] != rune('/') {
goto l105
}
position++
goto l103
l105:
position, tokenIndex = position103, tokenIndex103
if buffer[position] != rune('\n') {
goto l102
}
position++
}
l103:
goto l92
l102:
position, tokenIndex = position102, tokenIndex102
}
if !matchDot() {
goto l92
}
l100:
{
position101, tokenIndex101 := position, tokenIndex
{
position106, tokenIndex106 := position, tokenIndex
{
position107, tokenIndex107 := position, tokenIndex
if buffer[position] != rune('#') {
goto l108
}
position++
goto l107
l108:
position, tokenIndex = position107, tokenIndex107
if buffer[position] != rune('/') {
goto l109
}
position++
goto l107
l109:
position, tokenIndex = position107, tokenIndex107
if buffer[position] != rune('\n') {
goto l106
}
position++
}
l107:
goto l101
l106:
position, tokenIndex = position106, tokenIndex106
}
if !matchDot() {
goto l101
}
goto l100
l101:
position, tokenIndex = position101, tokenIndex101
}
add(ruleLocDirective, position93)
}
return true
l92:
position, tokenIndex = position92, tokenIndex92
return false
},
/* 8 Args <- <(Arg (WS? ',' WS? Arg)*)> */
func() bool {
position110, tokenIndex110 := position, tokenIndex
{
position111 := position
if !_rules[ruleArg]() {
goto l110
}
l112:
{
position113, tokenIndex113 := position, tokenIndex
{
position114, tokenIndex114 := position, tokenIndex
if !_rules[ruleWS]() {
goto l114
}
goto l115
l114:
position, tokenIndex = position114, tokenIndex114
}
l115:
if buffer[position] != rune(',') {
goto l113
}
position++
{
position116, tokenIndex116 := position, tokenIndex
if !_rules[ruleWS]() {
goto l116
}
goto l117
l116:
position, tokenIndex = position116, tokenIndex116
}
l117:
if !_rules[ruleArg]() {
goto l113
}
goto l112
l113:
position, tokenIndex = position113, tokenIndex113
}
add(ruleArgs, position111)
}
return true
l110:
position, tokenIndex = position110, tokenIndex110
return false
},
/* 9 Arg <- <(QuotedArg / ([0-9] / [0-9] / ([a-z] / [A-Z]) / '%' / '+' / '-' / '*' / '_' / '@' / '.')*)> */
func() bool {
{
position119 := position
{
position120, tokenIndex120 := position, tokenIndex
if !_rules[ruleQuotedArg]() {
goto l121
}
goto l120
l121:
position, tokenIndex = position120, tokenIndex120
l122:
{
position123, tokenIndex123 := position, tokenIndex
{
position124, tokenIndex124 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l125
}
position++
goto l124
l125:
position, tokenIndex = position124, tokenIndex124
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l126
}
position++
goto l124
l126:
position, tokenIndex = position124, tokenIndex124
{
position128, tokenIndex128 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l129
}
position++
goto l128
l129:
position, tokenIndex = position128, tokenIndex128
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l127
}
position++
}
l128:
goto l124
l127:
position, tokenIndex = position124, tokenIndex124
if buffer[position] != rune('%') {
goto l130
}
position++
goto l124
l130:
position, tokenIndex = position124, tokenIndex124
if buffer[position] != rune('+') {
goto l131
}
position++
goto l124
l131:
position, tokenIndex = position124, tokenIndex124
if buffer[position] != rune('-') {
goto l132
}
position++
goto l124
l132:
position, tokenIndex = position124, tokenIndex124
if buffer[position] != rune('*') {
goto l133
}
position++
goto l124
l133:
position, tokenIndex = position124, tokenIndex124
if buffer[position] != rune('_') {
goto l134
}
position++
goto l124
l134:
position, tokenIndex = position124, tokenIndex124
if buffer[position] != rune('@') {
goto l135
}
position++
goto l124
l135:
position, tokenIndex = position124, tokenIndex124
if buffer[position] != rune('.') {
goto l123
}
position++
}
l124:
goto l122
l123:
position, tokenIndex = position123, tokenIndex123
}
}
l120:
add(ruleArg, position119)
}
return true
},
/* 10 QuotedArg <- <('"' QuotedText '"')> */
func() bool {
position136, tokenIndex136 := position, tokenIndex
{
position137 := position
if buffer[position] != rune('"') {
goto l136
}
position++
if !_rules[ruleQuotedText]() {
goto l136
}
if buffer[position] != rune('"') {
goto l136
}
position++
add(ruleQuotedArg, position137)
}
return true
l136:
position, tokenIndex = position136, tokenIndex136
return false
},
/* 11 QuotedText <- <(EscapedChar / (!'"' .))*> */
func() bool {
{
position139 := position
l140:
{
position141, tokenIndex141 := position, tokenIndex
{
position142, tokenIndex142 := position, tokenIndex
if !_rules[ruleEscapedChar]() {
goto l143
}
goto l142
l143:
position, tokenIndex = position142, tokenIndex142
{
position144, tokenIndex144 := position, tokenIndex
if buffer[position] != rune('"') {
goto l144
}
position++
goto l141
l144:
position, tokenIndex = position144, tokenIndex144
}
if !matchDot() {
goto l141
}
}
l142:
goto l140
l141:
position, tokenIndex = position141, tokenIndex141
}
add(ruleQuotedText, position139)
}
return true
},
/* 12 LabelContainingDirective <- <(LabelContainingDirectiveName WS SymbolArgs)> */
func() bool {
position145, tokenIndex145 := position, tokenIndex
{
position146 := position
if !_rules[ruleLabelContainingDirectiveName]() {
goto l145
}
if !_rules[ruleWS]() {
goto l145
}
if !_rules[ruleSymbolArgs]() {
goto l145
}
add(ruleLabelContainingDirective, position146)
}
return true
l145:
position, tokenIndex = position145, tokenIndex145
return false
},
/* 13 LabelContainingDirectiveName <- <(('.' ('x' / 'X') ('w' / 'W') ('o' / 'O') ('r' / 'R') ('d' / 'D')) / ('.' ('w' / 'W') ('o' / 'O') ('r' / 'R') ('d' / 'D')) / ('.' ('l' / 'L') ('o' / 'O') ('n' / 'N') ('g' / 'G')) / ('.' ('s' / 'S') ('e' / 'E') ('t' / 'T')) / ('.' ('b' / 'B') ('y' / 'Y') ('t' / 'T') ('e' / 'E')) / ('.' '8' ('b' / 'B') ('y' / 'Y') ('t' / 'T') ('e' / 'E')) / ('.' '4' ('b' / 'B') ('y' / 'Y') ('t' / 'T') ('e' / 'E')) / ('.' ('q' / 'Q') ('u' / 'U') ('a' / 'A') ('d' / 'D')) / ('.' ('t' / 'T') ('c' / 'C')) / ('.' ('l' / 'L') ('o' / 'O') ('c' / 'C') ('a' / 'A') ('l' / 'L') ('e' / 'E') ('n' / 'N') ('t' / 'T') ('r' / 'R') ('y' / 'Y')) / ('.' ('s' / 'S') ('i' / 'I') ('z' / 'Z') ('e' / 'E')) / ('.' ('t' / 'T') ('y' / 'Y') ('p' / 'P') ('e' / 'E')) / ('.' ('u' / 'U') ('l' / 'L') ('e' / 'E') ('b' / 'B') '1' '2' '8') / ('.' ('s' / 'S') ('l' / 'L') ('e' / 'E') ('b' / 'B') '1' '2' '8'))> */
func() bool {
position147, tokenIndex147 := position, tokenIndex
{
position148 := position
{
position149, tokenIndex149 := position, tokenIndex
if buffer[position] != rune('.') {
goto l150
}
position++
{
position151, tokenIndex151 := position, tokenIndex
if buffer[position] != rune('x') {
goto l152
}
position++
goto l151
l152:
position, tokenIndex = position151, tokenIndex151
if buffer[position] != rune('X') {
goto l150
}
position++
}
l151:
{
position153, tokenIndex153 := position, tokenIndex
if buffer[position] != rune('w') {
goto l154
}
position++
goto l153
l154:
position, tokenIndex = position153, tokenIndex153
if buffer[position] != rune('W') {
goto l150
}
position++
}
l153:
{
position155, tokenIndex155 := position, tokenIndex
if buffer[position] != rune('o') {
goto l156
}
position++
goto l155
l156:
position, tokenIndex = position155, tokenIndex155
if buffer[position] != rune('O') {
goto l150
}
position++
}
l155:
{
position157, tokenIndex157 := position, tokenIndex
if buffer[position] != rune('r') {
goto l158
}
position++
goto l157
l158:
position, tokenIndex = position157, tokenIndex157
if buffer[position] != rune('R') {
goto l150
}
position++
}
l157:
{
position159, tokenIndex159 := position, tokenIndex
if buffer[position] != rune('d') {
goto l160
}
position++
goto l159
l160:
position, tokenIndex = position159, tokenIndex159
if buffer[position] != rune('D') {
goto l150
}
position++
}
l159:
goto l149
l150:
position, tokenIndex = position149, tokenIndex149
if buffer[position] != rune('.') {
goto l161
}
position++
{
position162, tokenIndex162 := position, tokenIndex
if buffer[position] != rune('w') {
goto l163
}
position++
goto l162
l163:
position, tokenIndex = position162, tokenIndex162
if buffer[position] != rune('W') {
goto l161
}
position++
}
l162:
{
position164, tokenIndex164 := position, tokenIndex
if buffer[position] != rune('o') {
goto l165
}
position++
goto l164
l165:
position, tokenIndex = position164, tokenIndex164
if buffer[position] != rune('O') {
goto l161
}
position++
}
l164:
{
position166, tokenIndex166 := position, tokenIndex
if buffer[position] != rune('r') {
goto l167
}
position++
goto l166
l167:
position, tokenIndex = position166, tokenIndex166
if buffer[position] != rune('R') {
goto l161
}
position++
}
l166:
{
position168, tokenIndex168 := position, tokenIndex
if buffer[position] != rune('d') {
goto l169
}
position++
goto l168
l169:
position, tokenIndex = position168, tokenIndex168
if buffer[position] != rune('D') {
goto l161
}
position++
}
l168:
goto l149
l161:
position, tokenIndex = position149, tokenIndex149
if buffer[position] != rune('.') {
goto l170
}
position++
{
position171, tokenIndex171 := position, tokenIndex
if buffer[position] != rune('l') {
goto l172
}
position++
goto l171
l172:
position, tokenIndex = position171, tokenIndex171
if buffer[position] != rune('L') {
goto l170
}
position++
}
l171:
{
position173, tokenIndex173 := position, tokenIndex
if buffer[position] != rune('o') {
goto l174
}
position++
goto l173
l174:
position, tokenIndex = position173, tokenIndex173
if buffer[position] != rune('O') {
goto l170
}
position++
}
l173:
{
position175, tokenIndex175 := position, tokenIndex
if buffer[position] != rune('n') {
goto l176
}
position++
goto l175
l176:
position, tokenIndex = position175, tokenIndex175
if buffer[position] != rune('N') {
goto l170
}
position++
}
l175:
{
position177, tokenIndex177 := position, tokenIndex
if buffer[position] != rune('g') {
goto l178
}
position++
goto l177
l178:
position, tokenIndex = position177, tokenIndex177
if buffer[position] != rune('G') {
goto l170
}
position++
}
l177:
goto l149
l170:
position, tokenIndex = position149, tokenIndex149
if buffer[position] != rune('.') {
goto l179
}
position++
{
position180, tokenIndex180 := position, tokenIndex
if buffer[position] != rune('s') {
goto l181
}
position++
goto l180
l181:
position, tokenIndex = position180, tokenIndex180
if buffer[position] != rune('S') {
goto l179
}
position++
}
l180:
{
position182, tokenIndex182 := position, tokenIndex
if buffer[position] != rune('e') {
goto l183
}
position++
goto l182
l183:
position, tokenIndex = position182, tokenIndex182
if buffer[position] != rune('E') {
goto l179
}
position++
}
l182:
{
position184, tokenIndex184 := position, tokenIndex
if buffer[position] != rune('t') {
goto l185
}
position++
goto l184
l185:
position, tokenIndex = position184, tokenIndex184
if buffer[position] != rune('T') {
goto l179
}
position++
}
l184:
goto l149
l179:
position, tokenIndex = position149, tokenIndex149
if buffer[position] != rune('.') {
goto l186
}
position++
{
position187, tokenIndex187 := position, tokenIndex
if buffer[position] != rune('b') {
goto l188
}
position++
goto l187
l188:
position, tokenIndex = position187, tokenIndex187
if buffer[position] != rune('B') {
goto l186
}
position++
}
l187:
{
position189, tokenIndex189 := position, tokenIndex
if buffer[position] != rune('y') {
goto l190
}
position++
goto l189
l190:
position, tokenIndex = position189, tokenIndex189
if buffer[position] != rune('Y') {
goto l186
}
position++
}
l189:
{
position191, tokenIndex191 := position, tokenIndex
if buffer[position] != rune('t') {
goto l192
}
position++
goto l191
l192:
position, tokenIndex = position191, tokenIndex191
if buffer[position] != rune('T') {
goto l186
}
position++
}
l191:
{
position193, tokenIndex193 := position, tokenIndex
if buffer[position] != rune('e') {
goto l194
}
position++
goto l193
l194:
position, tokenIndex = position193, tokenIndex193
if buffer[position] != rune('E') {
goto l186
}
position++
}
l193:
goto l149
l186:
position, tokenIndex = position149, tokenIndex149
if buffer[position] != rune('.') {
goto l195
}
position++
if buffer[position] != rune('8') {
goto l195
}
position++
{
position196, tokenIndex196 := position, tokenIndex
if buffer[position] != rune('b') {
goto l197
}
position++
goto l196
l197:
position, tokenIndex = position196, tokenIndex196
if buffer[position] != rune('B') {
goto l195
}
position++
}
l196:
{
position198, tokenIndex198 := position, tokenIndex
if buffer[position] != rune('y') {
goto l199
}
position++
goto l198
l199:
position, tokenIndex = position198, tokenIndex198
if buffer[position] != rune('Y') {
goto l195
}
position++
}
l198:
{
position200, tokenIndex200 := position, tokenIndex
if buffer[position] != rune('t') {
goto l201
}
position++
goto l200
l201:
position, tokenIndex = position200, tokenIndex200
if buffer[position] != rune('T') {
goto l195
}
position++
}
l200:
{
position202, tokenIndex202 := position, tokenIndex
if buffer[position] != rune('e') {
goto l203
}
position++
goto l202
l203:
position, tokenIndex = position202, tokenIndex202
if buffer[position] != rune('E') {
goto l195
}
position++
}
l202:
goto l149
l195:
position, tokenIndex = position149, tokenIndex149
if buffer[position] != rune('.') {
goto l204
}
position++
if buffer[position] != rune('4') {
goto l204
}
position++
{
position205, tokenIndex205 := position, tokenIndex
if buffer[position] != rune('b') {
goto l206
}
position++
goto l205
l206:
position, tokenIndex = position205, tokenIndex205
if buffer[position] != rune('B') {
goto l204
}
position++
}
l205:
{
position207, tokenIndex207 := position, tokenIndex
if buffer[position] != rune('y') {
goto l208
}
position++
goto l207
l208:
position, tokenIndex = position207, tokenIndex207
if buffer[position] != rune('Y') {
goto l204
}
position++
}
l207:
{
position209, tokenIndex209 := position, tokenIndex
if buffer[position] != rune('t') {
goto l210
}
position++
goto l209
l210:
position, tokenIndex = position209, tokenIndex209
if buffer[position] != rune('T') {
goto l204
}
position++
}
l209:
{
position211, tokenIndex211 := position, tokenIndex
if buffer[position] != rune('e') {
goto l212
}
position++
goto l211
l212:
position, tokenIndex = position211, tokenIndex211
if buffer[position] != rune('E') {
goto l204
}
position++
}
l211:
goto l149
l204:
position, tokenIndex = position149, tokenIndex149
if buffer[position] != rune('.') {
goto l213
}
position++
{
position214, tokenIndex214 := position, tokenIndex
if buffer[position] != rune('q') {
goto l215
}
position++
goto l214
l215:
position, tokenIndex = position214, tokenIndex214
if buffer[position] != rune('Q') {
goto l213
}
position++
}
l214:
{
position216, tokenIndex216 := position, tokenIndex
if buffer[position] != rune('u') {
goto l217
}
position++
goto l216
l217:
position, tokenIndex = position216, tokenIndex216
if buffer[position] != rune('U') {
goto l213
}
position++
}
l216:
{
position218, tokenIndex218 := position, tokenIndex
if buffer[position] != rune('a') {
goto l219
}
position++
goto l218
l219:
position, tokenIndex = position218, tokenIndex218
if buffer[position] != rune('A') {
goto l213
}
position++
}
l218:
{
position220, tokenIndex220 := position, tokenIndex
if buffer[position] != rune('d') {
goto l221
}
position++
goto l220
l221:
position, tokenIndex = position220, tokenIndex220
if buffer[position] != rune('D') {
goto l213
}
position++
}
l220:
goto l149
l213:
position, tokenIndex = position149, tokenIndex149
if buffer[position] != rune('.') {
goto l222
}
position++
{
position223, tokenIndex223 := position, tokenIndex
if buffer[position] != rune('t') {
goto l224
}
position++
goto l223
l224:
position, tokenIndex = position223, tokenIndex223
if buffer[position] != rune('T') {
goto l222
}
position++
}
l223:
{
position225, tokenIndex225 := position, tokenIndex
if buffer[position] != rune('c') {
goto l226
}
position++
goto l225
l226:
position, tokenIndex = position225, tokenIndex225
if buffer[position] != rune('C') {
goto l222
}
position++
}
l225:
goto l149
l222:
position, tokenIndex = position149, tokenIndex149
if buffer[position] != rune('.') {
goto l227
}
position++
{
position228, tokenIndex228 := position, tokenIndex
if buffer[position] != rune('l') {
goto l229
}
position++
goto l228
l229:
position, tokenIndex = position228, tokenIndex228
if buffer[position] != rune('L') {
goto l227
}
position++
}
l228:
{
position230, tokenIndex230 := position, tokenIndex
if buffer[position] != rune('o') {
goto l231
}
position++
goto l230
l231:
position, tokenIndex = position230, tokenIndex230
if buffer[position] != rune('O') {
goto l227
}
position++
}
l230:
{
position232, tokenIndex232 := position, tokenIndex
if buffer[position] != rune('c') {
goto l233
}
position++
goto l232
l233:
position, tokenIndex = position232, tokenIndex232
if buffer[position] != rune('C') {
goto l227
}
position++
}
l232:
{
position234, tokenIndex234 := position, tokenIndex
if buffer[position] != rune('a') {
goto l235
}
position++
goto l234
l235:
position, tokenIndex = position234, tokenIndex234
if buffer[position] != rune('A') {
goto l227
}
position++
}
l234:
{
position236, tokenIndex236 := position, tokenIndex
if buffer[position] != rune('l') {
goto l237
}
position++
goto l236
l237:
position, tokenIndex = position236, tokenIndex236
if buffer[position] != rune('L') {
goto l227
}
position++
}
l236:
{
position238, tokenIndex238 := position, tokenIndex
if buffer[position] != rune('e') {
goto l239
}
position++
goto l238
l239:
position, tokenIndex = position238, tokenIndex238
if buffer[position] != rune('E') {
goto l227
}
position++
}
l238:
{
position240, tokenIndex240 := position, tokenIndex
if buffer[position] != rune('n') {
goto l241
}
position++
goto l240
l241:
position, tokenIndex = position240, tokenIndex240
if buffer[position] != rune('N') {
goto l227
}
position++
}
l240:
{
position242, tokenIndex242 := position, tokenIndex
if buffer[position] != rune('t') {
goto l243
}
position++
goto l242
l243:
position, tokenIndex = position242, tokenIndex242
if buffer[position] != rune('T') {
goto l227
}
position++
}
l242:
{
position244, tokenIndex244 := position, tokenIndex
if buffer[position] != rune('r') {
goto l245
}
position++
goto l244
l245:
position, tokenIndex = position244, tokenIndex244
if buffer[position] != rune('R') {
goto l227
}
position++
}
l244:
{
position246, tokenIndex246 := position, tokenIndex
if buffer[position] != rune('y') {
goto l247
}
position++
goto l246
l247:
position, tokenIndex = position246, tokenIndex246
if buffer[position] != rune('Y') {
goto l227
}
position++
}
l246:
goto l149
l227:
position, tokenIndex = position149, tokenIndex149
if buffer[position] != rune('.') {
goto l248
}
position++
{
position249, tokenIndex249 := position, tokenIndex
if buffer[position] != rune('s') {
goto l250
}
position++
goto l249
l250:
position, tokenIndex = position249, tokenIndex249
if buffer[position] != rune('S') {
goto l248
}
position++
}
l249:
{
position251, tokenIndex251 := position, tokenIndex
if buffer[position] != rune('i') {
goto l252
}
position++
goto l251
l252:
position, tokenIndex = position251, tokenIndex251
if buffer[position] != rune('I') {
goto l248
}
position++
}
l251:
{
position253, tokenIndex253 := position, tokenIndex
if buffer[position] != rune('z') {
goto l254
}
position++
goto l253
l254:
position, tokenIndex = position253, tokenIndex253
if buffer[position] != rune('Z') {
goto l248
}
position++
}
l253:
{
position255, tokenIndex255 := position, tokenIndex
if buffer[position] != rune('e') {
goto l256
}
position++
goto l255
l256:
position, tokenIndex = position255, tokenIndex255
if buffer[position] != rune('E') {
goto l248
}
position++
}
l255:
goto l149
l248:
position, tokenIndex = position149, tokenIndex149
if buffer[position] != rune('.') {
goto l257
}
position++
{
position258, tokenIndex258 := position, tokenIndex
if buffer[position] != rune('t') {
goto l259
}
position++
goto l258
l259:
position, tokenIndex = position258, tokenIndex258
if buffer[position] != rune('T') {
goto l257
}
position++
}
l258:
{
position260, tokenIndex260 := position, tokenIndex
if buffer[position] != rune('y') {
goto l261
}
position++
goto l260
l261:
position, tokenIndex = position260, tokenIndex260
if buffer[position] != rune('Y') {
goto l257
}
position++
}
l260:
{
position262, tokenIndex262 := position, tokenIndex
if buffer[position] != rune('p') {
goto l263
}
position++
goto l262
l263:
position, tokenIndex = position262, tokenIndex262
if buffer[position] != rune('P') {
goto l257
}
position++
}
l262:
{
position264, tokenIndex264 := position, tokenIndex
if buffer[position] != rune('e') {
goto l265
}
position++
goto l264
l265:
position, tokenIndex = position264, tokenIndex264
if buffer[position] != rune('E') {
goto l257
}
position++
}
l264:
goto l149
l257:
position, tokenIndex = position149, tokenIndex149
if buffer[position] != rune('.') {
goto l266
}
position++
{
position267, tokenIndex267 := position, tokenIndex
if buffer[position] != rune('u') {
goto l268
}
position++
goto l267
l268:
position, tokenIndex = position267, tokenIndex267
if buffer[position] != rune('U') {
goto l266
}
position++
}
l267:
{
position269, tokenIndex269 := position, tokenIndex
if buffer[position] != rune('l') {
goto l270
}
position++
goto l269
l270:
position, tokenIndex = position269, tokenIndex269
if buffer[position] != rune('L') {
goto l266
}
position++
}
l269:
{
position271, tokenIndex271 := position, tokenIndex
if buffer[position] != rune('e') {
goto l272
}
position++
goto l271
l272:
position, tokenIndex = position271, tokenIndex271
if buffer[position] != rune('E') {
goto l266
}
position++
}
l271:
{
position273, tokenIndex273 := position, tokenIndex
if buffer[position] != rune('b') {
goto l274
}
position++
goto l273
l274:
position, tokenIndex = position273, tokenIndex273
if buffer[position] != rune('B') {
goto l266
}
position++
}
l273:
if buffer[position] != rune('1') {
goto l266
}
position++
if buffer[position] != rune('2') {
goto l266
}
position++
if buffer[position] != rune('8') {
goto l266
}
position++
goto l149
l266:
position, tokenIndex = position149, tokenIndex149
if buffer[position] != rune('.') {
goto l147
}
position++
{
position275, tokenIndex275 := position, tokenIndex
if buffer[position] != rune('s') {
goto l276
}
position++
goto l275
l276:
position, tokenIndex = position275, tokenIndex275
if buffer[position] != rune('S') {
goto l147
}
position++
}
l275:
{
position277, tokenIndex277 := position, tokenIndex
if buffer[position] != rune('l') {
goto l278
}
position++
goto l277
l278:
position, tokenIndex = position277, tokenIndex277
if buffer[position] != rune('L') {
goto l147
}
position++
}
l277:
{
position279, tokenIndex279 := position, tokenIndex
if buffer[position] != rune('e') {
goto l280
}
position++
goto l279
l280:
position, tokenIndex = position279, tokenIndex279
if buffer[position] != rune('E') {
goto l147
}
position++
}
l279:
{
position281, tokenIndex281 := position, tokenIndex
if buffer[position] != rune('b') {
goto l282
}
position++
goto l281
l282:
position, tokenIndex = position281, tokenIndex281
if buffer[position] != rune('B') {
goto l147
}
position++
}
l281:
if buffer[position] != rune('1') {
goto l147
}
position++
if buffer[position] != rune('2') {
goto l147
}
position++
if buffer[position] != rune('8') {
goto l147
}
position++
}
l149:
add(ruleLabelContainingDirectiveName, position148)
}
return true
l147:
position, tokenIndex = position147, tokenIndex147
return false
},
/* 14 SymbolArgs <- <(SymbolArg (WS? ',' WS? SymbolArg)*)> */
func() bool {
position283, tokenIndex283 := position, tokenIndex
{
position284 := position
if !_rules[ruleSymbolArg]() {
goto l283
}
l285:
{
position286, tokenIndex286 := position, tokenIndex
{
position287, tokenIndex287 := position, tokenIndex
if !_rules[ruleWS]() {
goto l287
}
goto l288
l287:
position, tokenIndex = position287, tokenIndex287
}
l288:
if buffer[position] != rune(',') {
goto l286
}
position++
{
position289, tokenIndex289 := position, tokenIndex
if !_rules[ruleWS]() {
goto l289
}
goto l290
l289:
position, tokenIndex = position289, tokenIndex289
}
l290:
if !_rules[ruleSymbolArg]() {
goto l286
}
goto l285
l286:
position, tokenIndex = position286, tokenIndex286
}
add(ruleSymbolArgs, position284)
}
return true
l283:
position, tokenIndex = position283, tokenIndex283
return false
},
/* 15 SymbolArg <- <SymbolExpr> */
func() bool {
position291, tokenIndex291 := position, tokenIndex
{
position292 := position
if !_rules[ruleSymbolExpr]() {
goto l291
}
add(ruleSymbolArg, position292)
}
return true
l291:
position, tokenIndex = position291, tokenIndex291
return false
},
/* 16 SymbolExpr <- <(SymbolAtom (WS? SymbolOperator WS? SymbolExpr)?)> */
func() bool {
position293, tokenIndex293 := position, tokenIndex
{
position294 := position
if !_rules[ruleSymbolAtom]() {
goto l293
}
{
position295, tokenIndex295 := position, tokenIndex
{
position297, tokenIndex297 := position, tokenIndex
if !_rules[ruleWS]() {
goto l297
}
goto l298
l297:
position, tokenIndex = position297, tokenIndex297
}
l298:
if !_rules[ruleSymbolOperator]() {
goto l295
}
{
position299, tokenIndex299 := position, tokenIndex
if !_rules[ruleWS]() {
goto l299
}
goto l300
l299:
position, tokenIndex = position299, tokenIndex299
}
l300:
if !_rules[ruleSymbolExpr]() {
goto l295
}
goto l296
l295:
position, tokenIndex = position295, tokenIndex295
}
l296:
add(ruleSymbolExpr, position294)
}
return true
l293:
position, tokenIndex = position293, tokenIndex293
return false
},
/* 17 SymbolAtom <- <(Offset / SymbolType / (LocalSymbol TCMarker?) / (SymbolName Offset) / (SymbolName TCMarker?) / Dot / (OpenParen WS? SymbolExpr WS? CloseParen))> */
func() bool {
position301, tokenIndex301 := position, tokenIndex
{
position302 := position
{
position303, tokenIndex303 := position, tokenIndex
if !_rules[ruleOffset]() {
goto l304
}
goto l303
l304:
position, tokenIndex = position303, tokenIndex303
if !_rules[ruleSymbolType]() {
goto l305
}
goto l303
l305:
position, tokenIndex = position303, tokenIndex303
if !_rules[ruleLocalSymbol]() {
goto l306
}
{
position307, tokenIndex307 := position, tokenIndex
if !_rules[ruleTCMarker]() {
goto l307
}
goto l308
l307:
position, tokenIndex = position307, tokenIndex307
}
l308:
goto l303
l306:
position, tokenIndex = position303, tokenIndex303
if !_rules[ruleSymbolName]() {
goto l309
}
if !_rules[ruleOffset]() {
goto l309
}
goto l303
l309:
position, tokenIndex = position303, tokenIndex303
if !_rules[ruleSymbolName]() {
goto l310
}
{
position311, tokenIndex311 := position, tokenIndex
if !_rules[ruleTCMarker]() {
goto l311
}
goto l312
l311:
position, tokenIndex = position311, tokenIndex311
}
l312:
goto l303
l310:
position, tokenIndex = position303, tokenIndex303
if !_rules[ruleDot]() {
goto l313
}
goto l303
l313:
position, tokenIndex = position303, tokenIndex303
if !_rules[ruleOpenParen]() {
goto l301
}
{
position314, tokenIndex314 := position, tokenIndex
if !_rules[ruleWS]() {
goto l314
}
goto l315
l314:
position, tokenIndex = position314, tokenIndex314
}
l315:
if !_rules[ruleSymbolExpr]() {
goto l301
}
{
position316, tokenIndex316 := position, tokenIndex
if !_rules[ruleWS]() {
goto l316
}
goto l317
l316:
position, tokenIndex = position316, tokenIndex316
}
l317:
if !_rules[ruleCloseParen]() {
goto l301
}
}
l303:
add(ruleSymbolAtom, position302)
}
return true
l301:
position, tokenIndex = position301, tokenIndex301
return false
},
/* 18 SymbolOperator <- <('+' / '-' / '|' / ('<' '<') / ('>' '>'))> */
func() bool {
position318, tokenIndex318 := position, tokenIndex
{
position319 := position
{
position320, tokenIndex320 := position, tokenIndex
if buffer[position] != rune('+') {
goto l321
}
position++
goto l320
l321:
position, tokenIndex = position320, tokenIndex320
if buffer[position] != rune('-') {
goto l322
}
position++
goto l320
l322:
position, tokenIndex = position320, tokenIndex320
if buffer[position] != rune('|') {
goto l323
}
position++
goto l320
l323:
position, tokenIndex = position320, tokenIndex320
if buffer[position] != rune('<') {
goto l324
}
position++
if buffer[position] != rune('<') {
goto l324
}
position++
goto l320
l324:
position, tokenIndex = position320, tokenIndex320
if buffer[position] != rune('>') {
goto l318
}
position++
if buffer[position] != rune('>') {
goto l318
}
position++
}
l320:
add(ruleSymbolOperator, position319)
}
return true
l318:
position, tokenIndex = position318, tokenIndex318
return false
},
/* 19 OpenParen <- <'('> */
func() bool {
position325, tokenIndex325 := position, tokenIndex
{
position326 := position
if buffer[position] != rune('(') {
goto l325
}
position++
add(ruleOpenParen, position326)
}
return true
l325:
position, tokenIndex = position325, tokenIndex325
return false
},
/* 20 CloseParen <- <')'> */
func() bool {
position327, tokenIndex327 := position, tokenIndex
{
position328 := position
if buffer[position] != rune(')') {
goto l327
}
position++
add(ruleCloseParen, position328)
}
return true
l327:
position, tokenIndex = position327, tokenIndex327
return false
},
/* 21 SymbolType <- <(('@' / '%') (('f' 'u' 'n' 'c' 't' 'i' 'o' 'n') / ('o' 'b' 'j' 'e' 'c' 't')))> */
func() bool {
position329, tokenIndex329 := position, tokenIndex
{
position330 := position
{
position331, tokenIndex331 := position, tokenIndex
if buffer[position] != rune('@') {
goto l332
}
position++
goto l331
l332:
position, tokenIndex = position331, tokenIndex331
if buffer[position] != rune('%') {
goto l329
}
position++
}
l331:
{
position333, tokenIndex333 := position, tokenIndex
if buffer[position] != rune('f') {
goto l334
}
position++
if buffer[position] != rune('u') {
goto l334
}
position++
if buffer[position] != rune('n') {
goto l334
}
position++
if buffer[position] != rune('c') {
goto l334
}
position++
if buffer[position] != rune('t') {
goto l334
}
position++
if buffer[position] != rune('i') {
goto l334
}
position++
if buffer[position] != rune('o') {
goto l334
}
position++
if buffer[position] != rune('n') {
goto l334
}
position++
goto l333
l334:
position, tokenIndex = position333, tokenIndex333
if buffer[position] != rune('o') {
goto l329
}
position++
if buffer[position] != rune('b') {
goto l329
}
position++
if buffer[position] != rune('j') {
goto l329
}
position++
if buffer[position] != rune('e') {
goto l329
}
position++
if buffer[position] != rune('c') {
goto l329
}
position++
if buffer[position] != rune('t') {
goto l329
}
position++
}
l333:
add(ruleSymbolType, position330)
}
return true
l329:
position, tokenIndex = position329, tokenIndex329
return false
},
/* 22 Dot <- <'.'> */
func() bool {
position335, tokenIndex335 := position, tokenIndex
{
position336 := position
if buffer[position] != rune('.') {
goto l335
}
position++
add(ruleDot, position336)
}
return true
l335:
position, tokenIndex = position335, tokenIndex335
return false
},
/* 23 TCMarker <- <('[' 'T' 'C' ']')> */
func() bool {
position337, tokenIndex337 := position, tokenIndex
{
position338 := position
if buffer[position] != rune('[') {
goto l337
}
position++
if buffer[position] != rune('T') {
goto l337
}
position++
if buffer[position] != rune('C') {
goto l337
}
position++
if buffer[position] != rune(']') {
goto l337
}
position++
add(ruleTCMarker, position338)
}
return true
l337:
position, tokenIndex = position337, tokenIndex337
return false
},
/* 24 EscapedChar <- <('\\' .)> */
func() bool {
position339, tokenIndex339 := position, tokenIndex
{
position340 := position
if buffer[position] != rune('\\') {
goto l339
}
position++
if !matchDot() {
goto l339
}
add(ruleEscapedChar, position340)
}
return true
l339:
position, tokenIndex = position339, tokenIndex339
return false
},
/* 25 WS <- <(' ' / '\t')+> */
func() bool {
position341, tokenIndex341 := position, tokenIndex
{
position342 := position
{
position345, tokenIndex345 := position, tokenIndex
if buffer[position] != rune(' ') {
goto l346
}
position++
goto l345
l346:
position, tokenIndex = position345, tokenIndex345
if buffer[position] != rune('\t') {
goto l341
}
position++
}
l345:
l343:
{
position344, tokenIndex344 := position, tokenIndex
{
position347, tokenIndex347 := position, tokenIndex
if buffer[position] != rune(' ') {
goto l348
}
position++
goto l347
l348:
position, tokenIndex = position347, tokenIndex347
if buffer[position] != rune('\t') {
goto l344
}
position++
}
l347:
goto l343
l344:
position, tokenIndex = position344, tokenIndex344
}
add(ruleWS, position342)
}
return true
l341:
position, tokenIndex = position341, tokenIndex341
return false
},
/* 26 Comment <- <((('/' '/') / '#') (!'\n' .)*)> */
func() bool {
position349, tokenIndex349 := position, tokenIndex
{
position350 := position
{
position351, tokenIndex351 := position, tokenIndex
if buffer[position] != rune('/') {
goto l352
}
position++
if buffer[position] != rune('/') {
goto l352
}
position++
goto l351
l352:
position, tokenIndex = position351, tokenIndex351
if buffer[position] != rune('#') {
goto l349
}
position++
}
l351:
l353:
{
position354, tokenIndex354 := position, tokenIndex
{
position355, tokenIndex355 := position, tokenIndex
if buffer[position] != rune('\n') {
goto l355
}
position++
goto l354
l355:
position, tokenIndex = position355, tokenIndex355
}
if !matchDot() {
goto l354
}
goto l353
l354:
position, tokenIndex = position354, tokenIndex354
}
add(ruleComment, position350)
}
return true
l349:
position, tokenIndex = position349, tokenIndex349
return false
},
/* 27 Label <- <((LocalSymbol / LocalLabel / SymbolName) ':')> */
func() bool {
position356, tokenIndex356 := position, tokenIndex
{
position357 := position
{
position358, tokenIndex358 := position, tokenIndex
if !_rules[ruleLocalSymbol]() {
goto l359
}
goto l358
l359:
position, tokenIndex = position358, tokenIndex358
if !_rules[ruleLocalLabel]() {
goto l360
}
goto l358
l360:
position, tokenIndex = position358, tokenIndex358
if !_rules[ruleSymbolName]() {
goto l356
}
}
l358:
if buffer[position] != rune(':') {
goto l356
}
position++
add(ruleLabel, position357)
}
return true
l356:
position, tokenIndex = position356, tokenIndex356
return false
},
/* 28 SymbolName <- <(([a-z] / [A-Z] / '.' / '_') ([a-z] / [A-Z] / '.' / ([0-9] / [0-9]) / '$' / '_')*)> */
func() bool {
position361, tokenIndex361 := position, tokenIndex
{
position362 := position
{
position363, tokenIndex363 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l364
}
position++
goto l363
l364:
position, tokenIndex = position363, tokenIndex363
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l365
}
position++
goto l363
l365:
position, tokenIndex = position363, tokenIndex363
if buffer[position] != rune('.') {
goto l366
}
position++
goto l363
l366:
position, tokenIndex = position363, tokenIndex363
if buffer[position] != rune('_') {
goto l361
}
position++
}
l363:
l367:
{
position368, tokenIndex368 := position, tokenIndex
{
position369, tokenIndex369 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l370
}
position++
goto l369
l370:
position, tokenIndex = position369, tokenIndex369
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l371
}
position++
goto l369
l371:
position, tokenIndex = position369, tokenIndex369
if buffer[position] != rune('.') {
goto l372
}
position++
goto l369
l372:
position, tokenIndex = position369, tokenIndex369
{
position374, tokenIndex374 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l375
}
position++
goto l374
l375:
position, tokenIndex = position374, tokenIndex374
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l373
}
position++
}
l374:
goto l369
l373:
position, tokenIndex = position369, tokenIndex369
if buffer[position] != rune('$') {
goto l376
}
position++
goto l369
l376:
position, tokenIndex = position369, tokenIndex369
if buffer[position] != rune('_') {
goto l368
}
position++
}
l369:
goto l367
l368:
position, tokenIndex = position368, tokenIndex368
}
add(ruleSymbolName, position362)
}
return true
l361:
position, tokenIndex = position361, tokenIndex361
return false
},
/* 29 LocalSymbol <- <('.' 'L' ([a-z] / [A-Z] / ([a-z] / [A-Z]) / '.' / ([0-9] / [0-9]) / '$' / '_')+)> */
func() bool {
position377, tokenIndex377 := position, tokenIndex
{
position378 := position
if buffer[position] != rune('.') {
goto l377
}
position++
if buffer[position] != rune('L') {
goto l377
}
position++
{
position381, tokenIndex381 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l382
}
position++
goto l381
l382:
position, tokenIndex = position381, tokenIndex381
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l383
}
position++
goto l381
l383:
position, tokenIndex = position381, tokenIndex381
{
position385, tokenIndex385 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l386
}
position++
goto l385
l386:
position, tokenIndex = position385, tokenIndex385
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l384
}
position++
}
l385:
goto l381
l384:
position, tokenIndex = position381, tokenIndex381
if buffer[position] != rune('.') {
goto l387
}
position++
goto l381
l387:
position, tokenIndex = position381, tokenIndex381
{
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 c := buffer[position]; c < rune('0') || c > rune('9') {
goto l388
}
position++
}
l389:
goto l381
l388:
position, tokenIndex = position381, tokenIndex381
if buffer[position] != rune('$') {
goto l391
}
position++
goto l381
l391:
position, tokenIndex = position381, tokenIndex381
if buffer[position] != rune('_') {
goto l377
}
position++
}
l381:
l379:
{
position380, tokenIndex380 := position, tokenIndex
{
position392, tokenIndex392 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l393
}
position++
goto l392
l393:
position, tokenIndex = position392, tokenIndex392
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l394
}
position++
goto l392
l394:
position, tokenIndex = position392, tokenIndex392
{
position396, tokenIndex396 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l397
}
position++
goto l396
l397:
position, tokenIndex = position396, tokenIndex396
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l395
}
position++
}
l396:
goto l392
l395:
position, tokenIndex = position392, tokenIndex392
if buffer[position] != rune('.') {
goto l398
}
position++
goto l392
l398:
position, tokenIndex = position392, tokenIndex392
{
position400, tokenIndex400 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l401
}
position++
goto l400
l401:
position, tokenIndex = position400, tokenIndex400
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l399
}
position++
}
l400:
goto l392
l399:
position, tokenIndex = position392, tokenIndex392
if buffer[position] != rune('$') {
goto l402
}
position++
goto l392
l402:
position, tokenIndex = position392, tokenIndex392
if buffer[position] != rune('_') {
goto l380
}
position++
}
l392:
goto l379
l380:
position, tokenIndex = position380, tokenIndex380
}
add(ruleLocalSymbol, position378)
}
return true
l377:
position, tokenIndex = position377, tokenIndex377
return false
},
/* 30 LocalLabel <- <([0-9] ([0-9] / '$')*)> */
func() bool {
position403, tokenIndex403 := position, tokenIndex
{
position404 := position
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l403
}
position++
l405:
{
position406, tokenIndex406 := position, tokenIndex
{
position407, tokenIndex407 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l408
}
position++
goto l407
l408:
position, tokenIndex = position407, tokenIndex407
if buffer[position] != rune('$') {
goto l406
}
position++
}
l407:
goto l405
l406:
position, tokenIndex = position406, tokenIndex406
}
add(ruleLocalLabel, position404)
}
return true
l403:
position, tokenIndex = position403, tokenIndex403
return false
},
/* 31 LocalLabelRef <- <([0-9] ([0-9] / '$')* ('b' / 'f'))> */
func() bool {
position409, tokenIndex409 := position, tokenIndex
{
position410 := position
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l409
}
position++
l411:
{
position412, tokenIndex412 := position, tokenIndex
{
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 buffer[position] != rune('$') {
goto l412
}
position++
}
l413:
goto l411
l412:
position, tokenIndex = position412, tokenIndex412
}
{
position415, tokenIndex415 := position, tokenIndex
if buffer[position] != rune('b') {
goto l416
}
position++
goto l415
l416:
position, tokenIndex = position415, tokenIndex415
if buffer[position] != rune('f') {
goto l409
}
position++
}
l415:
add(ruleLocalLabelRef, position410)
}
return true
l409:
position, tokenIndex = position409, tokenIndex409
return false
},
/* 32 Instruction <- <(InstructionName (WS InstructionArg (WS? ',' WS? InstructionArg)*)?)> */
func() bool {
position417, tokenIndex417 := position, tokenIndex
{
position418 := position
if !_rules[ruleInstructionName]() {
goto l417
}
{
position419, tokenIndex419 := position, tokenIndex
if !_rules[ruleWS]() {
goto l419
}
if !_rules[ruleInstructionArg]() {
goto l419
}
l421:
{
position422, tokenIndex422 := position, tokenIndex
{
position423, tokenIndex423 := position, tokenIndex
if !_rules[ruleWS]() {
goto l423
}
goto l424
l423:
position, tokenIndex = position423, tokenIndex423
}
l424:
if buffer[position] != rune(',') {
goto l422
}
position++
{
position425, tokenIndex425 := position, tokenIndex
if !_rules[ruleWS]() {
goto l425
}
goto l426
l425:
position, tokenIndex = position425, tokenIndex425
}
l426:
if !_rules[ruleInstructionArg]() {
goto l422
}
goto l421
l422:
position, tokenIndex = position422, tokenIndex422
}
goto l420
l419:
position, tokenIndex = position419, tokenIndex419
}
l420:
add(ruleInstruction, position418)
}
return true
l417:
position, tokenIndex = position417, tokenIndex417
return false
},
/* 33 InstructionName <- <(([a-z] / [A-Z]) ([a-z] / [A-Z] / '.' / ([0-9] / [0-9]))* ('.' / '+' / '-')?)> */
func() bool {
position427, tokenIndex427 := position, tokenIndex
{
position428 := position
{
position429, tokenIndex429 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l430
}
position++
goto l429
l430:
position, tokenIndex = position429, tokenIndex429
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l427
}
position++
}
l429:
l431:
{
position432, tokenIndex432 := position, tokenIndex
{
position433, tokenIndex433 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l434
}
position++
goto l433
l434:
position, tokenIndex = position433, tokenIndex433
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l435
}
position++
goto l433
l435:
position, tokenIndex = position433, tokenIndex433
if buffer[position] != rune('.') {
goto l436
}
position++
goto l433
l436:
position, tokenIndex = position433, tokenIndex433
{
position437, tokenIndex437 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l438
}
position++
goto l437
l438:
position, tokenIndex = position437, tokenIndex437
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l432
}
position++
}
l437:
}
l433:
goto l431
l432:
position, tokenIndex = position432, tokenIndex432
}
{
position439, tokenIndex439 := position, tokenIndex
{
position441, tokenIndex441 := position, tokenIndex
if buffer[position] != rune('.') {
goto l442
}
position++
goto l441
l442:
position, tokenIndex = position441, tokenIndex441
if buffer[position] != rune('+') {
goto l443
}
position++
goto l441
l443:
position, tokenIndex = position441, tokenIndex441
if buffer[position] != rune('-') {
goto l439
}
position++
}
l441:
goto l440
l439:
position, tokenIndex = position439, tokenIndex439
}
l440:
add(ruleInstructionName, position428)
}
return true
l427:
position, tokenIndex = position427, tokenIndex427
return false
},
/* 34 InstructionArg <- <(IndirectionIndicator? (ARMConstantTweak / RegisterOrConstant / LocalLabelRef / TOCRefHigh / TOCRefLow / GOTLocation / GOTSymbolOffset / MemoryRef) AVX512Token*)> */
func() bool {
position444, tokenIndex444 := position, tokenIndex
{
position445 := position
{
position446, tokenIndex446 := position, tokenIndex
if !_rules[ruleIndirectionIndicator]() {
goto l446
}
goto l447
l446:
position, tokenIndex = position446, tokenIndex446
}
l447:
{
position448, tokenIndex448 := position, tokenIndex
if !_rules[ruleARMConstantTweak]() {
goto l449
}
goto l448
l449:
position, tokenIndex = position448, tokenIndex448
if !_rules[ruleRegisterOrConstant]() {
goto l450
}
goto l448
l450:
position, tokenIndex = position448, tokenIndex448
if !_rules[ruleLocalLabelRef]() {
goto l451
}
goto l448
l451:
position, tokenIndex = position448, tokenIndex448
if !_rules[ruleTOCRefHigh]() {
goto l452
}
goto l448
l452:
position, tokenIndex = position448, tokenIndex448
if !_rules[ruleTOCRefLow]() {
goto l453
}
goto l448
l453:
position, tokenIndex = position448, tokenIndex448
if !_rules[ruleGOTLocation]() {
goto l454
}
goto l448
l454:
position, tokenIndex = position448, tokenIndex448
if !_rules[ruleGOTSymbolOffset]() {
goto l455
}
goto l448
l455:
position, tokenIndex = position448, tokenIndex448
if !_rules[ruleMemoryRef]() {
goto l444
}
}
l448:
l456:
{
position457, tokenIndex457 := position, tokenIndex
if !_rules[ruleAVX512Token]() {
goto l457
}
goto l456
l457:
position, tokenIndex = position457, tokenIndex457
}
add(ruleInstructionArg, position445)
}
return true
l444:
position, tokenIndex = position444, tokenIndex444
return false
},
/* 35 GOTLocation <- <('$' '_' 'G' 'L' 'O' 'B' 'A' 'L' '_' 'O' 'F' 'F' 'S' 'E' 'T' '_' 'T' 'A' 'B' 'L' 'E' '_' '-' LocalSymbol)> */
func() bool {
position458, tokenIndex458 := position, tokenIndex
{
position459 := position
if buffer[position] != rune('$') {
goto l458
}
position++
if buffer[position] != rune('_') {
goto l458
}
position++
if buffer[position] != rune('G') {
goto l458
}
position++
if buffer[position] != rune('L') {
goto l458
}
position++
if buffer[position] != rune('O') {
goto l458
}
position++
if buffer[position] != rune('B') {
goto l458
}
position++
if buffer[position] != rune('A') {
goto l458
}
position++
if buffer[position] != rune('L') {
goto l458
}
position++
if buffer[position] != rune('_') {
goto l458
}
position++
if buffer[position] != rune('O') {
goto l458
}
position++
if buffer[position] != rune('F') {
goto l458
}
position++
if buffer[position] != rune('F') {
goto l458
}
position++
if buffer[position] != rune('S') {
goto l458
}
position++
if buffer[position] != rune('E') {
goto l458
}
position++
if buffer[position] != rune('T') {
goto l458
}
position++
if buffer[position] != rune('_') {
goto l458
}
position++
if buffer[position] != rune('T') {
goto l458
}
position++
if buffer[position] != rune('A') {
goto l458
}
position++
if buffer[position] != rune('B') {
goto l458
}
position++
if buffer[position] != rune('L') {
goto l458
}
position++
if buffer[position] != rune('E') {
goto l458
}
position++
if buffer[position] != rune('_') {
goto l458
}
position++
if buffer[position] != rune('-') {
goto l458
}
position++
if !_rules[ruleLocalSymbol]() {
goto l458
}
add(ruleGOTLocation, position459)
}
return true
l458:
position, tokenIndex = position458, tokenIndex458
return false
},
/* 36 GOTSymbolOffset <- <(('$' SymbolName ('@' 'G' 'O' 'T') ('O' 'F' 'F')?) / (':' ('g' / 'G') ('o' / 'O') ('t' / 'T') ':' SymbolName))> */
func() bool {
position460, tokenIndex460 := position, tokenIndex
{
position461 := position
{
position462, tokenIndex462 := position, tokenIndex
if buffer[position] != rune('$') {
goto l463
}
position++
if !_rules[ruleSymbolName]() {
goto l463
}
if buffer[position] != rune('@') {
goto l463
}
position++
if buffer[position] != rune('G') {
goto l463
}
position++
if buffer[position] != rune('O') {
goto l463
}
position++
if buffer[position] != rune('T') {
goto l463
}
position++
{
position464, tokenIndex464 := position, tokenIndex
if buffer[position] != rune('O') {
goto l464
}
position++
if buffer[position] != rune('F') {
goto l464
}
position++
if buffer[position] != rune('F') {
goto l464
}
position++
goto l465
l464:
position, tokenIndex = position464, tokenIndex464
}
l465:
goto l462
l463:
position, tokenIndex = position462, tokenIndex462
if buffer[position] != rune(':') {
goto l460
}
position++
{
position466, tokenIndex466 := position, tokenIndex
if buffer[position] != rune('g') {
goto l467
}
position++
goto l466
l467:
position, tokenIndex = position466, tokenIndex466
if buffer[position] != rune('G') {
goto l460
}
position++
}
l466:
{
position468, tokenIndex468 := position, tokenIndex
if buffer[position] != rune('o') {
goto l469
}
position++
goto l468
l469:
position, tokenIndex = position468, tokenIndex468
if buffer[position] != rune('O') {
goto l460
}
position++
}
l468:
{
position470, tokenIndex470 := position, tokenIndex
if buffer[position] != rune('t') {
goto l471
}
position++
goto l470
l471:
position, tokenIndex = position470, tokenIndex470
if buffer[position] != rune('T') {
goto l460
}
position++
}
l470:
if buffer[position] != rune(':') {
goto l460
}
position++
if !_rules[ruleSymbolName]() {
goto l460
}
}
l462:
add(ruleGOTSymbolOffset, position461)
}
return true
l460:
position, tokenIndex = position460, tokenIndex460
return false
},
/* 37 AVX512Token <- <(WS? '{' '%'? ([0-9] / [a-z])* '}')> */
func() bool {
position472, tokenIndex472 := position, tokenIndex
{
position473 := position
{
position474, tokenIndex474 := position, tokenIndex
if !_rules[ruleWS]() {
goto l474
}
goto l475
l474:
position, tokenIndex = position474, tokenIndex474
}
l475:
if buffer[position] != rune('{') {
goto l472
}
position++
{
position476, tokenIndex476 := position, tokenIndex
if buffer[position] != rune('%') {
goto l476
}
position++
goto l477
l476:
position, tokenIndex = position476, tokenIndex476
}
l477:
l478:
{
position479, tokenIndex479 := position, tokenIndex
{
position480, tokenIndex480 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l481
}
position++
goto l480
l481:
position, tokenIndex = position480, tokenIndex480
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l479
}
position++
}
l480:
goto l478
l479:
position, tokenIndex = position479, tokenIndex479
}
if buffer[position] != rune('}') {
goto l472
}
position++
add(ruleAVX512Token, position473)
}
return true
l472:
position, tokenIndex = position472, tokenIndex472
return false
},
/* 38 TOCRefHigh <- <('.' 'T' 'O' 'C' '.' '-' (('0' 'b') / ('.' 'L' ([a-z] / [A-Z] / '_' / [0-9])+)) ('@' ('h' / 'H') ('a' / 'A')))> */
func() bool {
position482, tokenIndex482 := position, tokenIndex
{
position483 := position
if buffer[position] != rune('.') {
goto l482
}
position++
if buffer[position] != rune('T') {
goto l482
}
position++
if buffer[position] != rune('O') {
goto l482
}
position++
if buffer[position] != rune('C') {
goto l482
}
position++
if buffer[position] != rune('.') {
goto l482
}
position++
if buffer[position] != rune('-') {
goto l482
}
position++
{
position484, tokenIndex484 := position, tokenIndex
if buffer[position] != rune('0') {
goto l485
}
position++
if buffer[position] != rune('b') {
goto l485
}
position++
goto l484
l485:
position, tokenIndex = position484, tokenIndex484
if buffer[position] != rune('.') {
goto l482
}
position++
if buffer[position] != rune('L') {
goto l482
}
position++
{
position488, tokenIndex488 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l489
}
position++
goto l488
l489:
position, tokenIndex = position488, tokenIndex488
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l490
}
position++
goto l488
l490:
position, tokenIndex = position488, tokenIndex488
if buffer[position] != rune('_') {
goto l491
}
position++
goto l488
l491:
position, tokenIndex = position488, tokenIndex488
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l482
}
position++
}
l488:
l486:
{
position487, tokenIndex487 := position, tokenIndex
{
position492, tokenIndex492 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l493
}
position++
goto l492
l493:
position, tokenIndex = position492, tokenIndex492
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l494
}
position++
goto l492
l494:
position, tokenIndex = position492, tokenIndex492
if buffer[position] != rune('_') {
goto l495
}
position++
goto l492
l495:
position, tokenIndex = position492, tokenIndex492
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l487
}
position++
}
l492:
goto l486
l487:
position, tokenIndex = position487, tokenIndex487
}
}
l484:
if buffer[position] != rune('@') {
goto l482
}
position++
{
position496, tokenIndex496 := position, tokenIndex
if buffer[position] != rune('h') {
goto l497
}
position++
goto l496
l497:
position, tokenIndex = position496, tokenIndex496
if buffer[position] != rune('H') {
goto l482
}
position++
}
l496:
{
position498, tokenIndex498 := position, tokenIndex
if buffer[position] != rune('a') {
goto l499
}
position++
goto l498
l499:
position, tokenIndex = position498, tokenIndex498
if buffer[position] != rune('A') {
goto l482
}
position++
}
l498:
add(ruleTOCRefHigh, position483)
}
return true
l482:
position, tokenIndex = position482, tokenIndex482
return false
},
/* 39 TOCRefLow <- <('.' 'T' 'O' 'C' '.' '-' (('0' 'b') / ('.' 'L' ([a-z] / [A-Z] / '_' / [0-9])+)) ('@' ('l' / 'L')))> */
func() bool {
position500, tokenIndex500 := position, tokenIndex
{
position501 := position
if buffer[position] != rune('.') {
goto l500
}
position++
if buffer[position] != rune('T') {
goto l500
}
position++
if buffer[position] != rune('O') {
goto l500
}
position++
if buffer[position] != rune('C') {
goto l500
}
position++
if buffer[position] != rune('.') {
goto l500
}
position++
if buffer[position] != rune('-') {
goto l500
}
position++
{
position502, tokenIndex502 := position, tokenIndex
if buffer[position] != rune('0') {
goto l503
}
position++
if buffer[position] != rune('b') {
goto l503
}
position++
goto l502
l503:
position, tokenIndex = position502, tokenIndex502
if buffer[position] != rune('.') {
goto l500
}
position++
if buffer[position] != rune('L') {
goto l500
}
position++
{
position506, tokenIndex506 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l507
}
position++
goto l506
l507:
position, tokenIndex = position506, tokenIndex506
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l508
}
position++
goto l506
l508:
position, tokenIndex = position506, tokenIndex506
if buffer[position] != rune('_') {
goto l509
}
position++
goto l506
l509:
position, tokenIndex = position506, tokenIndex506
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l500
}
position++
}
l506:
l504:
{
position505, tokenIndex505 := position, tokenIndex
{
position510, tokenIndex510 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l511
}
position++
goto l510
l511:
position, tokenIndex = position510, tokenIndex510
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l512
}
position++
goto l510
l512:
position, tokenIndex = position510, tokenIndex510
if buffer[position] != rune('_') {
goto l513
}
position++
goto l510
l513:
position, tokenIndex = position510, tokenIndex510
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l505
}
position++
}
l510:
goto l504
l505:
position, tokenIndex = position505, tokenIndex505
}
}
l502:
if buffer[position] != rune('@') {
goto l500
}
position++
{
position514, tokenIndex514 := position, tokenIndex
if buffer[position] != rune('l') {
goto l515
}
position++
goto l514
l515:
position, tokenIndex = position514, tokenIndex514
if buffer[position] != rune('L') {
goto l500
}
position++
}
l514:
add(ruleTOCRefLow, position501)
}
return true
l500:
position, tokenIndex = position500, tokenIndex500
return false
},
/* 40 IndirectionIndicator <- <'*'> */
func() bool {
position516, tokenIndex516 := position, tokenIndex
{
position517 := position
if buffer[position] != rune('*') {
goto l516
}
position++
add(ruleIndirectionIndicator, position517)
}
return true
l516:
position, tokenIndex = position516, tokenIndex516
return false
},
/* 41 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 {
position518, tokenIndex518 := position, tokenIndex
{
position519 := position
{
position520, tokenIndex520 := position, tokenIndex
if buffer[position] != rune('%') {
goto l521
}
position++
{
position522, tokenIndex522 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l523
}
position++
goto l522
l523:
position, tokenIndex = position522, tokenIndex522
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l521
}
position++
}
l522:
l524:
{
position525, tokenIndex525 := position, tokenIndex
{
position526, tokenIndex526 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l527
}
position++
goto l526
l527:
position, tokenIndex = position526, tokenIndex526
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l528
}
position++
goto l526
l528:
position, tokenIndex = position526, tokenIndex526
{
position529, tokenIndex529 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l530
}
position++
goto l529
l530:
position, tokenIndex = position529, tokenIndex529
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l525
}
position++
}
l529:
}
l526:
goto l524
l525:
position, tokenIndex = position525, tokenIndex525
}
goto l520
l521:
position, tokenIndex = position520, tokenIndex520
{
position532, tokenIndex532 := position, tokenIndex
if buffer[position] != rune('$') {
goto l532
}
position++
goto l533
l532:
position, tokenIndex = position532, tokenIndex532
}
l533:
{
position534, tokenIndex534 := position, tokenIndex
if !_rules[ruleOffset]() {
goto l535
}
if !_rules[ruleOffset]() {
goto l535
}
goto l534
l535:
position, tokenIndex = position534, tokenIndex534
if !_rules[ruleOffset]() {
goto l531
}
}
l534:
goto l520
l531:
position, tokenIndex = position520, tokenIndex520
if buffer[position] != rune('#') {
goto l536
}
position++
if !_rules[ruleOffset]() {
goto l536
}
{
position537, tokenIndex537 := position, tokenIndex
if buffer[position] != rune('*') {
goto l537
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l537
}
position++
l539:
{
position540, tokenIndex540 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l540
}
position++
goto l539
l540:
position, tokenIndex = position540, tokenIndex540
}
{
position541, tokenIndex541 := position, tokenIndex
if buffer[position] != rune('-') {
goto l541
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l541
}
position++
l543:
{
position544, tokenIndex544 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l544
}
position++
goto l543
l544:
position, tokenIndex = position544, tokenIndex544
}
goto l542
l541:
position, tokenIndex = position541, tokenIndex541
}
l542:
goto l538
l537:
position, tokenIndex = position537, tokenIndex537
}
l538:
goto l520
l536:
position, tokenIndex = position520, tokenIndex520
if buffer[position] != rune('#') {
goto l545
}
position++
{
position546, tokenIndex546 := position, tokenIndex
if buffer[position] != rune('~') {
goto l546
}
position++
goto l547
l546:
position, tokenIndex = position546, tokenIndex546
}
l547:
if buffer[position] != rune('(') {
goto l545
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l545
}
position++
{
position548, tokenIndex548 := position, tokenIndex
if !_rules[ruleWS]() {
goto l548
}
goto l549
l548:
position, tokenIndex = position548, tokenIndex548
}
l549:
if buffer[position] != rune('<') {
goto l545
}
position++
if buffer[position] != rune('<') {
goto l545
}
position++
{
position550, tokenIndex550 := position, tokenIndex
if !_rules[ruleWS]() {
goto l550
}
goto l551
l550:
position, tokenIndex = position550, tokenIndex550
}
l551:
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l545
}
position++
if buffer[position] != rune(')') {
goto l545
}
position++
goto l520
l545:
position, tokenIndex = position520, tokenIndex520
if !_rules[ruleARMRegister]() {
goto l518
}
}
l520:
{
position552, tokenIndex552 := position, tokenIndex
{
position553, tokenIndex553 := position, tokenIndex
if buffer[position] != rune('f') {
goto l554
}
position++
goto l553
l554:
position, tokenIndex = position553, tokenIndex553
if buffer[position] != rune('b') {
goto l555
}
position++
goto l553
l555:
position, tokenIndex = position553, tokenIndex553
if buffer[position] != rune(':') {
goto l556
}
position++
goto l553
l556:
position, tokenIndex = position553, tokenIndex553
if buffer[position] != rune('(') {
goto l557
}
position++
goto l553
l557:
position, tokenIndex = position553, tokenIndex553
if buffer[position] != rune('+') {
goto l558
}
position++
goto l553
l558:
position, tokenIndex = position553, tokenIndex553
if buffer[position] != rune('-') {
goto l552
}
position++
}
l553:
goto l518
l552:
position, tokenIndex = position552, tokenIndex552
}
add(ruleRegisterOrConstant, position519)
}
return true
l518:
position, tokenIndex = position518, tokenIndex518
return false
},
/* 42 ARMConstantTweak <- <(((('u' / 's') (('x' / 'X') ('t' / 'T')) ('x' / 'w' / 'h' / 'b')) / (('l' / 'L') ('s' / 'S') ('l' / 'L')) / (('l' / 'L') ('s' / 'S') ('r' / 'R')) / (('r' / 'R') ('o' / 'O') ('r' / 'R')) / (('a' / 'A') ('s' / 'S') ('r' / 'R'))) (WS '#' Offset)?)> */
func() bool {
position559, tokenIndex559 := position, tokenIndex
{
position560 := position
{
position561, tokenIndex561 := position, tokenIndex
{
position563, tokenIndex563 := position, tokenIndex
if buffer[position] != rune('u') {
goto l564
}
position++
goto l563
l564:
position, tokenIndex = position563, tokenIndex563
if buffer[position] != rune('s') {
goto l562
}
position++
}
l563:
{
position565, tokenIndex565 := position, tokenIndex
if buffer[position] != rune('x') {
goto l566
}
position++
goto l565
l566:
position, tokenIndex = position565, tokenIndex565
if buffer[position] != rune('X') {
goto l562
}
position++
}
l565:
{
position567, tokenIndex567 := position, tokenIndex
if buffer[position] != rune('t') {
goto l568
}
position++
goto l567
l568:
position, tokenIndex = position567, tokenIndex567
if buffer[position] != rune('T') {
goto l562
}
position++
}
l567:
{
position569, tokenIndex569 := position, tokenIndex
if buffer[position] != rune('x') {
goto l570
}
position++
goto l569
l570:
position, tokenIndex = position569, tokenIndex569
if buffer[position] != rune('w') {
goto l571
}
position++
goto l569
l571:
position, tokenIndex = position569, tokenIndex569
if buffer[position] != rune('h') {
goto l572
}
position++
goto l569
l572:
position, tokenIndex = position569, tokenIndex569
if buffer[position] != rune('b') {
goto l562
}
position++
}
l569:
goto l561
l562:
position, tokenIndex = position561, tokenIndex561
{
position574, tokenIndex574 := position, tokenIndex
if buffer[position] != rune('l') {
goto l575
}
position++
goto l574
l575:
position, tokenIndex = position574, tokenIndex574
if buffer[position] != rune('L') {
goto l573
}
position++
}
l574:
{
position576, tokenIndex576 := position, tokenIndex
if buffer[position] != rune('s') {
goto l577
}
position++
goto l576
l577:
position, tokenIndex = position576, tokenIndex576
if buffer[position] != rune('S') {
goto l573
}
position++
}
l576:
{
position578, tokenIndex578 := position, tokenIndex
if buffer[position] != rune('l') {
goto l579
}
position++
goto l578
l579:
position, tokenIndex = position578, tokenIndex578
if buffer[position] != rune('L') {
goto l573
}
position++
}
l578:
goto l561
l573:
position, tokenIndex = position561, tokenIndex561
{
position581, tokenIndex581 := position, tokenIndex
if buffer[position] != rune('l') {
goto l582
}
position++
goto l581
l582:
position, tokenIndex = position581, tokenIndex581
if buffer[position] != rune('L') {
goto l580
}
position++
}
l581:
{
position583, tokenIndex583 := position, tokenIndex
if buffer[position] != rune('s') {
goto l584
}
position++
goto l583
l584:
position, tokenIndex = position583, tokenIndex583
if buffer[position] != rune('S') {
goto l580
}
position++
}
l583:
{
position585, tokenIndex585 := position, tokenIndex
if buffer[position] != rune('r') {
goto l586
}
position++
goto l585
l586:
position, tokenIndex = position585, tokenIndex585
if buffer[position] != rune('R') {
goto l580
}
position++
}
l585:
goto l561
l580:
position, tokenIndex = position561, tokenIndex561
{
position588, tokenIndex588 := position, tokenIndex
if buffer[position] != rune('r') {
goto l589
}
position++
goto l588
l589:
position, tokenIndex = position588, tokenIndex588
if buffer[position] != rune('R') {
goto l587
}
position++
}
l588:
{
position590, tokenIndex590 := position, tokenIndex
if buffer[position] != rune('o') {
goto l591
}
position++
goto l590
l591:
position, tokenIndex = position590, tokenIndex590
if buffer[position] != rune('O') {
goto l587
}
position++
}
l590:
{
position592, tokenIndex592 := position, tokenIndex
if buffer[position] != rune('r') {
goto l593
}
position++
goto l592
l593:
position, tokenIndex = position592, tokenIndex592
if buffer[position] != rune('R') {
goto l587
}
position++
}
l592:
goto l561
l587:
position, tokenIndex = position561, tokenIndex561
{
position594, tokenIndex594 := position, tokenIndex
if buffer[position] != rune('a') {
goto l595
}
position++
goto l594
l595:
position, tokenIndex = position594, tokenIndex594
if buffer[position] != rune('A') {
goto l559
}
position++
}
l594:
{
position596, tokenIndex596 := position, tokenIndex
if buffer[position] != rune('s') {
goto l597
}
position++
goto l596
l597:
position, tokenIndex = position596, tokenIndex596
if buffer[position] != rune('S') {
goto l559
}
position++
}
l596:
{
position598, tokenIndex598 := position, tokenIndex
if buffer[position] != rune('r') {
goto l599
}
position++
goto l598
l599:
position, tokenIndex = position598, tokenIndex598
if buffer[position] != rune('R') {
goto l559
}
position++
}
l598:
}
l561:
{
position600, tokenIndex600 := position, tokenIndex
if !_rules[ruleWS]() {
goto l600
}
if buffer[position] != rune('#') {
goto l600
}
position++
if !_rules[ruleOffset]() {
goto l600
}
goto l601
l600:
position, tokenIndex = position600, tokenIndex600
}
l601:
add(ruleARMConstantTweak, position560)
}
return true
l559:
position, tokenIndex = position559, tokenIndex559
return false
},
/* 43 ARMRegister <- <((('s' / 'S') ('p' / 'P')) / (('x' / 'w' / 'd' / 'q' / 's' / 'h' / 'b') [0-9] [0-9]?) / (('x' / 'X') ('z' / 'Z') ('r' / 'R')) / (('w' / 'W') ('z' / 'Z') ('r' / 'R')) / (('n' / 'N') ('z' / 'Z') ('c' / 'C') ('v' / 'V')) / ARMVectorRegister / ('{' WS? ARMVectorRegister (',' WS? ARMVectorRegister)* WS? '}' ('[' [0-9] [0-9]? ']')?))> */
func() bool {
position602, tokenIndex602 := position, tokenIndex
{
position603 := position
{
position604, tokenIndex604 := position, tokenIndex
{
position606, tokenIndex606 := position, tokenIndex
if buffer[position] != rune('s') {
goto l607
}
position++
goto l606
l607:
position, tokenIndex = position606, tokenIndex606
if buffer[position] != rune('S') {
goto l605
}
position++
}
l606:
{
position608, tokenIndex608 := position, tokenIndex
if buffer[position] != rune('p') {
goto l609
}
position++
goto l608
l609:
position, tokenIndex = position608, tokenIndex608
if buffer[position] != rune('P') {
goto l605
}
position++
}
l608:
goto l604
l605:
position, tokenIndex = position604, tokenIndex604
{
position611, tokenIndex611 := position, tokenIndex
if buffer[position] != rune('x') {
goto l612
}
position++
goto l611
l612:
position, tokenIndex = position611, tokenIndex611
if buffer[position] != rune('w') {
goto l613
}
position++
goto l611
l613:
position, tokenIndex = position611, tokenIndex611
if buffer[position] != rune('d') {
goto l614
}
position++
goto l611
l614:
position, tokenIndex = position611, tokenIndex611
if buffer[position] != rune('q') {
goto l615
}
position++
goto l611
l615:
position, tokenIndex = position611, tokenIndex611
if buffer[position] != rune('s') {
goto l616
}
position++
goto l611
l616:
position, tokenIndex = position611, tokenIndex611
if buffer[position] != rune('h') {
goto l617
}
position++
goto l611
l617:
position, tokenIndex = position611, tokenIndex611
if buffer[position] != rune('b') {
goto l610
}
position++
}
l611:
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l610
}
position++
{
position618, tokenIndex618 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l618
}
position++
goto l619
l618:
position, tokenIndex = position618, tokenIndex618
}
l619:
goto l604
l610:
position, tokenIndex = position604, tokenIndex604
{
position621, tokenIndex621 := position, tokenIndex
if buffer[position] != rune('x') {
goto l622
}
position++
goto l621
l622:
position, tokenIndex = position621, tokenIndex621
if buffer[position] != rune('X') {
goto l620
}
position++
}
l621:
{
position623, tokenIndex623 := position, tokenIndex
if buffer[position] != rune('z') {
goto l624
}
position++
goto l623
l624:
position, tokenIndex = position623, tokenIndex623
if buffer[position] != rune('Z') {
goto l620
}
position++
}
l623:
{
position625, tokenIndex625 := position, tokenIndex
if buffer[position] != rune('r') {
goto l626
}
position++
goto l625
l626:
position, tokenIndex = position625, tokenIndex625
if buffer[position] != rune('R') {
goto l620
}
position++
}
l625:
goto l604
l620:
position, tokenIndex = position604, tokenIndex604
{
position628, tokenIndex628 := position, tokenIndex
if buffer[position] != rune('w') {
goto l629
}
position++
goto l628
l629:
position, tokenIndex = position628, tokenIndex628
if buffer[position] != rune('W') {
goto l627
}
position++
}
l628:
{
position630, tokenIndex630 := position, tokenIndex
if buffer[position] != rune('z') {
goto l631
}
position++
goto l630
l631:
position, tokenIndex = position630, tokenIndex630
if buffer[position] != rune('Z') {
goto l627
}
position++
}
l630:
{
position632, tokenIndex632 := position, tokenIndex
if buffer[position] != rune('r') {
goto l633
}
position++
goto l632
l633:
position, tokenIndex = position632, tokenIndex632
if buffer[position] != rune('R') {
goto l627
}
position++
}
l632:
goto l604
l627:
position, tokenIndex = position604, tokenIndex604
{
position635, tokenIndex635 := position, tokenIndex
if buffer[position] != rune('n') {
goto l636
}
position++
goto l635
l636:
position, tokenIndex = position635, tokenIndex635
if buffer[position] != rune('N') {
goto l634
}
position++
}
l635:
{
position637, tokenIndex637 := position, tokenIndex
if buffer[position] != rune('z') {
goto l638
}
position++
goto l637
l638:
position, tokenIndex = position637, tokenIndex637
if buffer[position] != rune('Z') {
goto l634
}
position++
}
l637:
{
position639, tokenIndex639 := position, tokenIndex
if buffer[position] != rune('c') {
goto l640
}
position++
goto l639
l640:
position, tokenIndex = position639, tokenIndex639
if buffer[position] != rune('C') {
goto l634
}
position++
}
l639:
{
position641, tokenIndex641 := position, tokenIndex
if buffer[position] != rune('v') {
goto l642
}
position++
goto l641
l642:
position, tokenIndex = position641, tokenIndex641
if buffer[position] != rune('V') {
goto l634
}
position++
}
l641:
goto l604
l634:
position, tokenIndex = position604, tokenIndex604
if !_rules[ruleARMVectorRegister]() {
goto l643
}
goto l604
l643:
position, tokenIndex = position604, tokenIndex604
if buffer[position] != rune('{') {
goto l602
}
position++
{
position644, tokenIndex644 := position, tokenIndex
if !_rules[ruleWS]() {
goto l644
}
goto l645
l644:
position, tokenIndex = position644, tokenIndex644
}
l645:
if !_rules[ruleARMVectorRegister]() {
goto l602
}
l646:
{
position647, tokenIndex647 := position, tokenIndex
if buffer[position] != rune(',') {
goto l647
}
position++
{
position648, tokenIndex648 := position, tokenIndex
if !_rules[ruleWS]() {
goto l648
}
goto l649
l648:
position, tokenIndex = position648, tokenIndex648
}
l649:
if !_rules[ruleARMVectorRegister]() {
goto l647
}
goto l646
l647:
position, tokenIndex = position647, tokenIndex647
}
{
position650, tokenIndex650 := position, tokenIndex
if !_rules[ruleWS]() {
goto l650
}
goto l651
l650:
position, tokenIndex = position650, tokenIndex650
}
l651:
if buffer[position] != rune('}') {
goto l602
}
position++
{
position652, tokenIndex652 := position, tokenIndex
if buffer[position] != rune('[') {
goto l652
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l652
}
position++
{
position654, tokenIndex654 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l654
}
position++
goto l655
l654:
position, tokenIndex = position654, tokenIndex654
}
l655:
if buffer[position] != rune(']') {
goto l652
}
position++
goto l653
l652:
position, tokenIndex = position652, tokenIndex652
}
l653:
}
l604:
add(ruleARMRegister, position603)
}
return true
l602:
position, tokenIndex = position602, tokenIndex602
return false
},
/* 44 ARMVectorRegister <- <(('v' / 'V') [0-9] [0-9]? ('.' [0-9]* ('b' / 's' / 'd' / 'h' / 'q') ('[' [0-9] [0-9]? ']')?)?)> */
func() bool {
position656, tokenIndex656 := position, tokenIndex
{
position657 := position
{
position658, tokenIndex658 := position, tokenIndex
if buffer[position] != rune('v') {
goto l659
}
position++
goto l658
l659:
position, tokenIndex = position658, tokenIndex658
if buffer[position] != rune('V') {
goto l656
}
position++
}
l658:
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l656
}
position++
{
position660, tokenIndex660 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l660
}
position++
goto l661
l660:
position, tokenIndex = position660, tokenIndex660
}
l661:
{
position662, tokenIndex662 := position, tokenIndex
if buffer[position] != rune('.') {
goto l662
}
position++
l664:
{
position665, tokenIndex665 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l665
}
position++
goto l664
l665:
position, tokenIndex = position665, tokenIndex665
}
{
position666, tokenIndex666 := position, tokenIndex
if buffer[position] != rune('b') {
goto l667
}
position++
goto l666
l667:
position, tokenIndex = position666, tokenIndex666
if buffer[position] != rune('s') {
goto l668
}
position++
goto l666
l668:
position, tokenIndex = position666, tokenIndex666
if buffer[position] != rune('d') {
goto l669
}
position++
goto l666
l669:
position, tokenIndex = position666, tokenIndex666
if buffer[position] != rune('h') {
goto l670
}
position++
goto l666
l670:
position, tokenIndex = position666, tokenIndex666
if buffer[position] != rune('q') {
goto l662
}
position++
}
l666:
{
position671, tokenIndex671 := position, tokenIndex
if buffer[position] != rune('[') {
goto l671
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l671
}
position++
{
position673, tokenIndex673 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l673
}
position++
goto l674
l673:
position, tokenIndex = position673, tokenIndex673
}
l674:
if buffer[position] != rune(']') {
goto l671
}
position++
goto l672
l671:
position, tokenIndex = position671, tokenIndex671
}
l672:
goto l663
l662:
position, tokenIndex = position662, tokenIndex662
}
l663:
add(ruleARMVectorRegister, position657)
}
return true
l656:
position, tokenIndex = position656, tokenIndex656
return false
},
/* 45 MemoryRef <- <((SymbolRef BaseIndexScale) / SymbolRef / Low12BitsSymbolRef / (Offset* BaseIndexScale) / (SegmentRegister Offset BaseIndexScale) / (SegmentRegister BaseIndexScale) / (SegmentRegister Offset) / ARMBaseIndexScale / BaseIndexScale)> */
func() bool {
position675, tokenIndex675 := position, tokenIndex
{
position676 := position
{
position677, tokenIndex677 := position, tokenIndex
if !_rules[ruleSymbolRef]() {
goto l678
}
if !_rules[ruleBaseIndexScale]() {
goto l678
}
goto l677
l678:
position, tokenIndex = position677, tokenIndex677
if !_rules[ruleSymbolRef]() {
goto l679
}
goto l677
l679:
position, tokenIndex = position677, tokenIndex677
if !_rules[ruleLow12BitsSymbolRef]() {
goto l680
}
goto l677
l680:
position, tokenIndex = position677, tokenIndex677
l682:
{
position683, tokenIndex683 := position, tokenIndex
if !_rules[ruleOffset]() {
goto l683
}
goto l682
l683:
position, tokenIndex = position683, tokenIndex683
}
if !_rules[ruleBaseIndexScale]() {
goto l681
}
goto l677
l681:
position, tokenIndex = position677, tokenIndex677
if !_rules[ruleSegmentRegister]() {
goto l684
}
if !_rules[ruleOffset]() {
goto l684
}
if !_rules[ruleBaseIndexScale]() {
goto l684
}
goto l677
l684:
position, tokenIndex = position677, tokenIndex677
if !_rules[ruleSegmentRegister]() {
goto l685
}
if !_rules[ruleBaseIndexScale]() {
goto l685
}
goto l677
l685:
position, tokenIndex = position677, tokenIndex677
if !_rules[ruleSegmentRegister]() {
goto l686
}
if !_rules[ruleOffset]() {
goto l686
}
goto l677
l686:
position, tokenIndex = position677, tokenIndex677
if !_rules[ruleARMBaseIndexScale]() {
goto l687
}
goto l677
l687:
position, tokenIndex = position677, tokenIndex677
if !_rules[ruleBaseIndexScale]() {
goto l675
}
}
l677:
add(ruleMemoryRef, position676)
}
return true
l675:
position, tokenIndex = position675, tokenIndex675
return false
},
/* 46 SymbolRef <- <((Offset* '+')? (LocalSymbol / SymbolName) Offset* ('@' Section Offset*)?)> */
func() bool {
position688, tokenIndex688 := position, tokenIndex
{
position689 := position
{
position690, tokenIndex690 := position, tokenIndex
l692:
{
position693, tokenIndex693 := position, tokenIndex
if !_rules[ruleOffset]() {
goto l693
}
goto l692
l693:
position, tokenIndex = position693, tokenIndex693
}
if buffer[position] != rune('+') {
goto l690
}
position++
goto l691
l690:
position, tokenIndex = position690, tokenIndex690
}
l691:
{
position694, tokenIndex694 := position, tokenIndex
if !_rules[ruleLocalSymbol]() {
goto l695
}
goto l694
l695:
position, tokenIndex = position694, tokenIndex694
if !_rules[ruleSymbolName]() {
goto l688
}
}
l694:
l696:
{
position697, tokenIndex697 := position, tokenIndex
if !_rules[ruleOffset]() {
goto l697
}
goto l696
l697:
position, tokenIndex = position697, tokenIndex697
}
{
position698, tokenIndex698 := position, tokenIndex
if buffer[position] != rune('@') {
goto l698
}
position++
if !_rules[ruleSection]() {
goto l698
}
l700:
{
position701, tokenIndex701 := position, tokenIndex
if !_rules[ruleOffset]() {
goto l701
}
goto l700
l701:
position, tokenIndex = position701, tokenIndex701
}
goto l699
l698:
position, tokenIndex = position698, tokenIndex698
}
l699:
add(ruleSymbolRef, position689)
}
return true
l688:
position, tokenIndex = position688, tokenIndex688
return false
},
/* 47 Low12BitsSymbolRef <- <(':' ('l' / 'L') ('o' / 'O') '1' '2' ':' (LocalSymbol / SymbolName) Offset?)> */
func() bool {
position702, tokenIndex702 := position, tokenIndex
{
position703 := position
if buffer[position] != rune(':') {
goto l702
}
position++
{
position704, tokenIndex704 := position, tokenIndex
if buffer[position] != rune('l') {
goto l705
}
position++
goto l704
l705:
position, tokenIndex = position704, tokenIndex704
if buffer[position] != rune('L') {
goto l702
}
position++
}
l704:
{
position706, tokenIndex706 := position, tokenIndex
if buffer[position] != rune('o') {
goto l707
}
position++
goto l706
l707:
position, tokenIndex = position706, tokenIndex706
if buffer[position] != rune('O') {
goto l702
}
position++
}
l706:
if buffer[position] != rune('1') {
goto l702
}
position++
if buffer[position] != rune('2') {
goto l702
}
position++
if buffer[position] != rune(':') {
goto l702
}
position++
{
position708, tokenIndex708 := position, tokenIndex
if !_rules[ruleLocalSymbol]() {
goto l709
}
goto l708
l709:
position, tokenIndex = position708, tokenIndex708
if !_rules[ruleSymbolName]() {
goto l702
}
}
l708:
{
position710, tokenIndex710 := position, tokenIndex
if !_rules[ruleOffset]() {
goto l710
}
goto l711
l710:
position, tokenIndex = position710, tokenIndex710
}
l711:
add(ruleLow12BitsSymbolRef, position703)
}
return true
l702:
position, tokenIndex = position702, tokenIndex702
return false
},
/* 48 ARMBaseIndexScale <- <('[' ARMRegister (',' WS? (('#' Offset (('*' [0-9]+) / ('*' '(' [0-9]+ Operator [0-9]+ ')') / ('+' [0-9]+)*)?) / ARMGOTLow12 / Low12BitsSymbolRef / ARMRegister) (',' WS? ARMConstantTweak)?)? ']' ARMPostincrement?)> */
func() bool {
position712, tokenIndex712 := position, tokenIndex
{
position713 := position
if buffer[position] != rune('[') {
goto l712
}
position++
if !_rules[ruleARMRegister]() {
goto l712
}
{
position714, tokenIndex714 := position, tokenIndex
if buffer[position] != rune(',') {
goto l714
}
position++
{
position716, tokenIndex716 := position, tokenIndex
if !_rules[ruleWS]() {
goto l716
}
goto l717
l716:
position, tokenIndex = position716, tokenIndex716
}
l717:
{
position718, tokenIndex718 := position, tokenIndex
if buffer[position] != rune('#') {
goto l719
}
position++
if !_rules[ruleOffset]() {
goto l719
}
{
position720, tokenIndex720 := position, tokenIndex
{
position722, tokenIndex722 := position, tokenIndex
if buffer[position] != rune('*') {
goto l723
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l723
}
position++
l724:
{
position725, tokenIndex725 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l725
}
position++
goto l724
l725:
position, tokenIndex = position725, tokenIndex725
}
goto l722
l723:
position, tokenIndex = position722, tokenIndex722
if buffer[position] != rune('*') {
goto l726
}
position++
if buffer[position] != rune('(') {
goto l726
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l726
}
position++
l727:
{
position728, tokenIndex728 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l728
}
position++
goto l727
l728:
position, tokenIndex = position728, tokenIndex728
}
if !_rules[ruleOperator]() {
goto l726
}
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l726
}
position++
l729:
{
position730, tokenIndex730 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l730
}
position++
goto l729
l730:
position, tokenIndex = position730, tokenIndex730
}
if buffer[position] != rune(')') {
goto l726
}
position++
goto l722
l726:
position, tokenIndex = position722, tokenIndex722
l731:
{
position732, tokenIndex732 := position, tokenIndex
if buffer[position] != rune('+') {
goto l732
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l732
}
position++
l733:
{
position734, tokenIndex734 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l734
}
position++
goto l733
l734:
position, tokenIndex = position734, tokenIndex734
}
goto l731
l732:
position, tokenIndex = position732, tokenIndex732
}
}
l722:
goto l721
position, tokenIndex = position720, tokenIndex720
}
l721:
goto l718
l719:
position, tokenIndex = position718, tokenIndex718
if !_rules[ruleARMGOTLow12]() {
goto l735
}
goto l718
l735:
position, tokenIndex = position718, tokenIndex718
if !_rules[ruleLow12BitsSymbolRef]() {
goto l736
}
goto l718
l736:
position, tokenIndex = position718, tokenIndex718
if !_rules[ruleARMRegister]() {
goto l714
}
}
l718:
{
position737, tokenIndex737 := position, tokenIndex
if buffer[position] != rune(',') {
goto l737
}
position++
{
position739, tokenIndex739 := position, tokenIndex
if !_rules[ruleWS]() {
goto l739
}
goto l740
l739:
position, tokenIndex = position739, tokenIndex739
}
l740:
if !_rules[ruleARMConstantTweak]() {
goto l737
}
goto l738
l737:
position, tokenIndex = position737, tokenIndex737
}
l738:
goto l715
l714:
position, tokenIndex = position714, tokenIndex714
}
l715:
if buffer[position] != rune(']') {
goto l712
}
position++
{
position741, tokenIndex741 := position, tokenIndex
if !_rules[ruleARMPostincrement]() {
goto l741
}
goto l742
l741:
position, tokenIndex = position741, tokenIndex741
}
l742:
add(ruleARMBaseIndexScale, position713)
}
return true
l712:
position, tokenIndex = position712, tokenIndex712
return false
},
/* 49 ARMGOTLow12 <- <(':' ('g' / 'G') ('o' / 'O') ('t' / 'T') '_' ('l' / 'L') ('o' / 'O') '1' '2' ':' SymbolName)> */
func() bool {
position743, tokenIndex743 := position, tokenIndex
{
position744 := position
if buffer[position] != rune(':') {
goto l743
}
position++
{
position745, tokenIndex745 := position, tokenIndex
if buffer[position] != rune('g') {
goto l746
}
position++
goto l745
l746:
position, tokenIndex = position745, tokenIndex745
if buffer[position] != rune('G') {
goto l743
}
position++
}
l745:
{
position747, tokenIndex747 := position, tokenIndex
if buffer[position] != rune('o') {
goto l748
}
position++
goto l747
l748:
position, tokenIndex = position747, tokenIndex747
if buffer[position] != rune('O') {
goto l743
}
position++
}
l747:
{
position749, tokenIndex749 := position, tokenIndex
if buffer[position] != rune('t') {
goto l750
}
position++
goto l749
l750:
position, tokenIndex = position749, tokenIndex749
if buffer[position] != rune('T') {
goto l743
}
position++
}
l749:
if buffer[position] != rune('_') {
goto l743
}
position++
{
position751, tokenIndex751 := position, tokenIndex
if buffer[position] != rune('l') {
goto l752
}
position++
goto l751
l752:
position, tokenIndex = position751, tokenIndex751
if buffer[position] != rune('L') {
goto l743
}
position++
}
l751:
{
position753, tokenIndex753 := position, tokenIndex
if buffer[position] != rune('o') {
goto l754
}
position++
goto l753
l754:
position, tokenIndex = position753, tokenIndex753
if buffer[position] != rune('O') {
goto l743
}
position++
}
l753:
if buffer[position] != rune('1') {
goto l743
}
position++
if buffer[position] != rune('2') {
goto l743
}
position++
if buffer[position] != rune(':') {
goto l743
}
position++
if !_rules[ruleSymbolName]() {
goto l743
}
add(ruleARMGOTLow12, position744)
}
return true
l743:
position, tokenIndex = position743, tokenIndex743
return false
},
/* 50 ARMPostincrement <- <'!'> */
func() bool {
position755, tokenIndex755 := position, tokenIndex
{
position756 := position
if buffer[position] != rune('!') {
goto l755
}
position++
add(ruleARMPostincrement, position756)
}
return true
l755:
position, tokenIndex = position755, tokenIndex755
return false
},
/* 51 BaseIndexScale <- <('(' RegisterOrConstant? WS? (',' WS? RegisterOrConstant WS? (',' [0-9]+)?)? ')')> */
func() bool {
position757, tokenIndex757 := position, tokenIndex
{
position758 := position
if buffer[position] != rune('(') {
goto l757
}
position++
{
position759, tokenIndex759 := position, tokenIndex
if !_rules[ruleRegisterOrConstant]() {
goto l759
}
goto l760
l759:
position, tokenIndex = position759, tokenIndex759
}
l760:
{
position761, tokenIndex761 := position, tokenIndex
if !_rules[ruleWS]() {
goto l761
}
goto l762
l761:
position, tokenIndex = position761, tokenIndex761
}
l762:
{
position763, tokenIndex763 := position, tokenIndex
if buffer[position] != rune(',') {
goto l763
}
position++
{
position765, tokenIndex765 := position, tokenIndex
if !_rules[ruleWS]() {
goto l765
}
goto l766
l765:
position, tokenIndex = position765, tokenIndex765
}
l766:
if !_rules[ruleRegisterOrConstant]() {
goto l763
}
{
position767, tokenIndex767 := position, tokenIndex
if !_rules[ruleWS]() {
goto l767
}
goto l768
l767:
position, tokenIndex = position767, tokenIndex767
}
l768:
{
position769, tokenIndex769 := position, tokenIndex
if buffer[position] != rune(',') {
goto l769
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l769
}
position++
l771:
{
position772, tokenIndex772 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l772
}
position++
goto l771
l772:
position, tokenIndex = position772, tokenIndex772
}
goto l770
l769:
position, tokenIndex = position769, tokenIndex769
}
l770:
goto l764
l763:
position, tokenIndex = position763, tokenIndex763
}
l764:
if buffer[position] != rune(')') {
goto l757
}
position++
add(ruleBaseIndexScale, position758)
}
return true
l757:
position, tokenIndex = position757, tokenIndex757
return false
},
/* 52 Operator <- <('+' / '-')> */
func() bool {
position773, tokenIndex773 := position, tokenIndex
{
position774 := position
{
position775, tokenIndex775 := position, tokenIndex
if buffer[position] != rune('+') {
goto l776
}
position++
goto l775
l776:
position, tokenIndex = position775, tokenIndex775
if buffer[position] != rune('-') {
goto l773
}
position++
}
l775:
add(ruleOperator, position774)
}
return true
l773:
position, tokenIndex = position773, tokenIndex773
return false
},
/* 53 Offset <- <('+'? '-'? (('0' ('b' / 'B') ('0' / '1')+) / ('0' ('x' / 'X') ([0-9] / [0-9] / ([a-f] / [A-F]))+) / [0-9]+))> */
func() bool {
position777, tokenIndex777 := position, tokenIndex
{
position778 := position
{
position779, tokenIndex779 := position, tokenIndex
if buffer[position] != rune('+') {
goto l779
}
position++
goto l780
l779:
position, tokenIndex = position779, tokenIndex779
}
l780:
{
position781, tokenIndex781 := position, tokenIndex
if buffer[position] != rune('-') {
goto l781
}
position++
goto l782
l781:
position, tokenIndex = position781, tokenIndex781
}
l782:
{
position783, tokenIndex783 := position, tokenIndex
if buffer[position] != rune('0') {
goto l784
}
position++
{
position785, tokenIndex785 := position, tokenIndex
if buffer[position] != rune('b') {
goto l786
}
position++
goto l785
l786:
position, tokenIndex = position785, tokenIndex785
if buffer[position] != rune('B') {
goto l784
}
position++
}
l785:
{
position789, tokenIndex789 := position, tokenIndex
if buffer[position] != rune('0') {
goto l790
}
position++
goto l789
l790:
position, tokenIndex = position789, tokenIndex789
if buffer[position] != rune('1') {
goto l784
}
position++
}
l789:
l787:
{
position788, tokenIndex788 := position, tokenIndex
{
position791, tokenIndex791 := position, tokenIndex
if buffer[position] != rune('0') {
goto l792
}
position++
goto l791
l792:
position, tokenIndex = position791, tokenIndex791
if buffer[position] != rune('1') {
goto l788
}
position++
}
l791:
goto l787
l788:
position, tokenIndex = position788, tokenIndex788
}
goto l783
l784:
position, tokenIndex = position783, tokenIndex783
if buffer[position] != rune('0') {
goto l793
}
position++
{
position794, tokenIndex794 := position, tokenIndex
if buffer[position] != rune('x') {
goto l795
}
position++
goto l794
l795:
position, tokenIndex = position794, tokenIndex794
if buffer[position] != rune('X') {
goto l793
}
position++
}
l794:
{
position798, tokenIndex798 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l799
}
position++
goto l798
l799:
position, tokenIndex = position798, tokenIndex798
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l800
}
position++
goto l798
l800:
position, tokenIndex = position798, tokenIndex798
{
position801, tokenIndex801 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('f') {
goto l802
}
position++
goto l801
l802:
position, tokenIndex = position801, tokenIndex801
if c := buffer[position]; c < rune('A') || c > rune('F') {
goto l793
}
position++
}
l801:
}
l798:
l796:
{
position797, tokenIndex797 := position, tokenIndex
{
position803, tokenIndex803 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l804
}
position++
goto l803
l804:
position, tokenIndex = position803, tokenIndex803
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l805
}
position++
goto l803
l805:
position, tokenIndex = position803, tokenIndex803
{
position806, tokenIndex806 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('f') {
goto l807
}
position++
goto l806
l807:
position, tokenIndex = position806, tokenIndex806
if c := buffer[position]; c < rune('A') || c > rune('F') {
goto l797
}
position++
}
l806:
}
l803:
goto l796
l797:
position, tokenIndex = position797, tokenIndex797
}
goto l783
l793:
position, tokenIndex = position783, tokenIndex783
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l777
}
position++
l808:
{
position809, tokenIndex809 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l809
}
position++
goto l808
l809:
position, tokenIndex = position809, tokenIndex809
}
}
l783:
add(ruleOffset, position778)
}
return true
l777:
position, tokenIndex = position777, tokenIndex777
return false
},
/* 54 Section <- <([a-z] / [A-Z] / '@')+> */
func() bool {
position810, tokenIndex810 := position, tokenIndex
{
position811 := position
{
position814, tokenIndex814 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l815
}
position++
goto l814
l815:
position, tokenIndex = position814, tokenIndex814
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l816
}
position++
goto l814
l816:
position, tokenIndex = position814, tokenIndex814
if buffer[position] != rune('@') {
goto l810
}
position++
}
l814:
l812:
{
position813, tokenIndex813 := position, tokenIndex
{
position817, tokenIndex817 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l818
}
position++
goto l817
l818:
position, tokenIndex = position817, tokenIndex817
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l819
}
position++
goto l817
l819:
position, tokenIndex = position817, tokenIndex817
if buffer[position] != rune('@') {
goto l813
}
position++
}
l817:
goto l812
l813:
position, tokenIndex = position813, tokenIndex813
}
add(ruleSection, position811)
}
return true
l810:
position, tokenIndex = position810, tokenIndex810
return false
},
/* 55 SegmentRegister <- <('%' ([c-g] / 's') ('s' ':'))> */
func() bool {
position820, tokenIndex820 := position, tokenIndex
{
position821 := position
if buffer[position] != rune('%') {
goto l820
}
position++
{
position822, tokenIndex822 := position, tokenIndex
if c := buffer[position]; c < rune('c') || c > rune('g') {
goto l823
}
position++
goto l822
l823:
position, tokenIndex = position822, tokenIndex822
if buffer[position] != rune('s') {
goto l820
}
position++
}
l822:
if buffer[position] != rune('s') {
goto l820
}
position++
if buffer[position] != rune(':') {
goto l820
}
position++
add(ruleSegmentRegister, position821)
}
return true
l820:
position, tokenIndex = position820, tokenIndex820
return false
},
}
p.rules = _rules
return nil
}