blob: 55843dbf97116a6c51aa2be31986dd6991f00297 [file]
package main
// Code generated by 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
ruleSymbolDefiningDirective
ruleSymbolDefiningDirectiveName
ruleLabelContainingDirective
ruleLabelContainingDirectiveName
rulePrefAlignDirective
ruleSymbolArgs
ruleSymbolArg
ruleSymbolExpr
ruleSymbolAtom
ruleSymbolOperator
ruleOpenParen
ruleCloseParen
ruleSymbolType
ruleDot
ruleTCMarker
ruleEscapedChar
ruleWS
ruleComment
ruleLabel
ruleSymbolName
ruleLocalSymbol
ruleLocalLabel
ruleLocalLabelRef
ruleInstructionPrefix
ruleInstruction
ruleInstructionName
ruleInstructionArg
ruleGOTLocation
ruleGOTAddress
ruleGOTSymbolOffset
ruleAVX512Token
ruleTOCRefHigh
ruleTOCRefLow
ruleIndirectionIndicator
ruleFloat
ruleRegisterOrConstant
ruleARMConstantTweak
ruleARMRegister
ruleARMVectorRegister
ruleSVE2PredicateRegister
ruleSVE2SpecialValue
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",
"SymbolDefiningDirective",
"SymbolDefiningDirectiveName",
"LabelContainingDirective",
"LabelContainingDirectiveName",
"PrefAlignDirective",
"SymbolArgs",
"SymbolArg",
"SymbolExpr",
"SymbolAtom",
"SymbolOperator",
"OpenParen",
"CloseParen",
"SymbolType",
"Dot",
"TCMarker",
"EscapedChar",
"WS",
"Comment",
"Label",
"SymbolName",
"LocalSymbol",
"LocalLabel",
"LocalLabelRef",
"InstructionPrefix",
"Instruction",
"InstructionName",
"InstructionArg",
"GOTLocation",
"GOTAddress",
"GOTSymbolOffset",
"AVX512Token",
"TOCRefHigh",
"TOCRefLow",
"IndirectionIndicator",
"Float",
"RegisterOrConstant",
"ARMConstantTweak",
"ARMRegister",
"ARMVectorRegister",
"SVE2PredicateRegister",
"SVE2SpecialValue",
"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 [65]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 / SymbolDefiningDirective / LabelContainingDirective / PrefAlignDirective / 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[ruleSymbolDefiningDirective]() {
goto l14
}
goto l11
l14:
position, tokenIndex = position11, tokenIndex11
if !_rules[ruleLabelContainingDirective]() {
goto l15
}
goto l11
l15:
position, tokenIndex = position11, tokenIndex11
if !_rules[rulePrefAlignDirective]() {
goto l16
}
goto l11
l16:
position, tokenIndex = position11, tokenIndex11
if !_rules[ruleInstruction]() {
goto l17
}
goto l11
l17:
position, tokenIndex = position11, tokenIndex11
if !_rules[ruleDirective]() {
goto l18
}
goto l11
l18:
position, tokenIndex = position11, tokenIndex11
if !_rules[ruleComment]() {
goto l19
}
goto l11
l19:
position, tokenIndex = position11, tokenIndex11
}
l11:
{
position20, tokenIndex20 := position, tokenIndex
if !_rules[ruleWS]() {
goto l20
}
goto l21
l20:
position, tokenIndex = position20, tokenIndex20
}
l21:
{
position22, tokenIndex22 := position, tokenIndex
{
position24, tokenIndex24 := position, tokenIndex
if !_rules[ruleComment]() {
goto l24
}
goto l25
l24:
position, tokenIndex = position24, tokenIndex24
}
l25:
if buffer[position] != rune('\n') {
goto l23
}
position++
goto l22
l23:
position, tokenIndex = position22, tokenIndex22
if buffer[position] != rune(';') {
goto l5
}
position++
}
l22:
}
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 {
position26, tokenIndex26 := position, tokenIndex
{
position27 := position
{
position28, tokenIndex28 := position, tokenIndex
if buffer[position] != rune('.') {
goto l29
}
position++
{
position30, tokenIndex30 := position, tokenIndex
if buffer[position] != rune('g') {
goto l31
}
position++
goto l30
l31:
position, tokenIndex = position30, tokenIndex30
if buffer[position] != rune('G') {
goto l29
}
position++
}
l30:
{
position32, tokenIndex32 := position, tokenIndex
if buffer[position] != rune('l') {
goto l33
}
position++
goto l32
l33:
position, tokenIndex = position32, tokenIndex32
if buffer[position] != rune('L') {
goto l29
}
position++
}
l32:
{
position34, tokenIndex34 := position, tokenIndex
if buffer[position] != rune('o') {
goto l35
}
position++
goto l34
l35:
position, tokenIndex = position34, tokenIndex34
if buffer[position] != rune('O') {
goto l29
}
position++
}
l34:
{
position36, tokenIndex36 := position, tokenIndex
if buffer[position] != rune('b') {
goto l37
}
position++
goto l36
l37:
position, tokenIndex = position36, tokenIndex36
if buffer[position] != rune('B') {
goto l29
}
position++
}
l36:
{
position38, tokenIndex38 := position, tokenIndex
if buffer[position] != rune('a') {
goto l39
}
position++
goto l38
l39:
position, tokenIndex = position38, tokenIndex38
if buffer[position] != rune('A') {
goto l29
}
position++
}
l38:
{
position40, tokenIndex40 := position, tokenIndex
if buffer[position] != rune('l') {
goto l41
}
position++
goto l40
l41:
position, tokenIndex = position40, tokenIndex40
if buffer[position] != rune('L') {
goto l29
}
position++
}
l40:
goto l28
l29:
position, tokenIndex = position28, tokenIndex28
if buffer[position] != rune('.') {
goto l26
}
position++
{
position42, tokenIndex42 := position, tokenIndex
if buffer[position] != rune('g') {
goto l43
}
position++
goto l42
l43:
position, tokenIndex = position42, tokenIndex42
if buffer[position] != rune('G') {
goto l26
}
position++
}
l42:
{
position44, tokenIndex44 := position, tokenIndex
if buffer[position] != rune('l') {
goto l45
}
position++
goto l44
l45:
position, tokenIndex = position44, tokenIndex44
if buffer[position] != rune('L') {
goto l26
}
position++
}
l44:
{
position46, tokenIndex46 := position, tokenIndex
if buffer[position] != rune('o') {
goto l47
}
position++
goto l46
l47:
position, tokenIndex = position46, tokenIndex46
if buffer[position] != rune('O') {
goto l26
}
position++
}
l46:
{
position48, tokenIndex48 := position, tokenIndex
if buffer[position] != rune('b') {
goto l49
}
position++
goto l48
l49:
position, tokenIndex = position48, tokenIndex48
if buffer[position] != rune('B') {
goto l26
}
position++
}
l48:
{
position50, tokenIndex50 := position, tokenIndex
if buffer[position] != rune('l') {
goto l51
}
position++
goto l50
l51:
position, tokenIndex = position50, tokenIndex50
if buffer[position] != rune('L') {
goto l26
}
position++
}
l50:
}
l28:
if !_rules[ruleWS]() {
goto l26
}
if !_rules[ruleSymbolName]() {
goto l26
}
add(ruleGlobalDirective, position27)
}
return true
l26:
position, tokenIndex = position26, tokenIndex26
return false
},
/* 3 Directive <- <('.' DirectiveName (WS Args)?)> */
func() bool {
position52, tokenIndex52 := position, tokenIndex
{
position53 := position
if buffer[position] != rune('.') {
goto l52
}
position++
if !_rules[ruleDirectiveName]() {
goto l52
}
{
position54, tokenIndex54 := position, tokenIndex
if !_rules[ruleWS]() {
goto l54
}
if !_rules[ruleArgs]() {
goto l54
}
goto l55
l54:
position, tokenIndex = position54, tokenIndex54
}
l55:
add(ruleDirective, position53)
}
return true
l52:
position, tokenIndex = position52, tokenIndex52
return false
},
/* 4 DirectiveName <- <([a-z] / [A-Z] / ([0-9] / [0-9]) / '_')+> */
func() bool {
position56, tokenIndex56 := position, tokenIndex
{
position57 := position
{
position60, tokenIndex60 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l61
}
position++
goto l60
l61:
position, tokenIndex = position60, tokenIndex60
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l62
}
position++
goto l60
l62:
position, tokenIndex = position60, tokenIndex60
{
position64, tokenIndex64 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l65
}
position++
goto l64
l65:
position, tokenIndex = position64, tokenIndex64
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l63
}
position++
}
l64:
goto l60
l63:
position, tokenIndex = position60, tokenIndex60
if buffer[position] != rune('_') {
goto l56
}
position++
}
l60:
l58:
{
position59, tokenIndex59 := position, tokenIndex
{
position66, tokenIndex66 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l67
}
position++
goto l66
l67:
position, tokenIndex = position66, tokenIndex66
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l68
}
position++
goto l66
l68:
position, tokenIndex = position66, tokenIndex66
{
position70, tokenIndex70 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l71
}
position++
goto l70
l71:
position, tokenIndex = position70, tokenIndex70
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l69
}
position++
}
l70:
goto l66
l69:
position, tokenIndex = position66, tokenIndex66
if buffer[position] != rune('_') {
goto l59
}
position++
}
l66:
goto l58
l59:
position, tokenIndex = position59, tokenIndex59
}
add(ruleDirectiveName, position57)
}
return true
l56:
position, tokenIndex = position56, tokenIndex56
return false
},
/* 5 LocationDirective <- <(FileDirective / LocDirective)> */
func() bool {
position72, tokenIndex72 := position, tokenIndex
{
position73 := position
{
position74, tokenIndex74 := position, tokenIndex
if !_rules[ruleFileDirective]() {
goto l75
}
goto l74
l75:
position, tokenIndex = position74, tokenIndex74
if !_rules[ruleLocDirective]() {
goto l72
}
}
l74:
add(ruleLocationDirective, position73)
}
return true
l72:
position, tokenIndex = position72, tokenIndex72
return false
},
/* 6 FileDirective <- <('.' ('f' / 'F') ('i' / 'I') ('l' / 'L') ('e' / 'E') WS (!('#' / '\n') .)+)> */
func() bool {
position76, tokenIndex76 := position, tokenIndex
{
position77 := position
if buffer[position] != rune('.') {
goto l76
}
position++
{
position78, tokenIndex78 := position, tokenIndex
if buffer[position] != rune('f') {
goto l79
}
position++
goto l78
l79:
position, tokenIndex = position78, tokenIndex78
if buffer[position] != rune('F') {
goto l76
}
position++
}
l78:
{
position80, tokenIndex80 := position, tokenIndex
if buffer[position] != rune('i') {
goto l81
}
position++
goto l80
l81:
position, tokenIndex = position80, tokenIndex80
if buffer[position] != rune('I') {
goto l76
}
position++
}
l80:
{
position82, tokenIndex82 := position, tokenIndex
if buffer[position] != rune('l') {
goto l83
}
position++
goto l82
l83:
position, tokenIndex = position82, tokenIndex82
if buffer[position] != rune('L') {
goto l76
}
position++
}
l82:
{
position84, tokenIndex84 := position, tokenIndex
if buffer[position] != rune('e') {
goto l85
}
position++
goto l84
l85:
position, tokenIndex = position84, tokenIndex84
if buffer[position] != rune('E') {
goto l76
}
position++
}
l84:
if !_rules[ruleWS]() {
goto l76
}
{
position88, tokenIndex88 := position, tokenIndex
{
position89, tokenIndex89 := position, tokenIndex
if buffer[position] != rune('#') {
goto l90
}
position++
goto l89
l90:
position, tokenIndex = position89, tokenIndex89
if buffer[position] != rune('\n') {
goto l88
}
position++
}
l89:
goto l76
l88:
position, tokenIndex = position88, tokenIndex88
}
if !matchDot() {
goto l76
}
l86:
{
position87, tokenIndex87 := position, tokenIndex
{
position91, tokenIndex91 := position, tokenIndex
{
position92, tokenIndex92 := position, tokenIndex
if buffer[position] != rune('#') {
goto l93
}
position++
goto l92
l93:
position, tokenIndex = position92, tokenIndex92
if buffer[position] != rune('\n') {
goto l91
}
position++
}
l92:
goto l87
l91:
position, tokenIndex = position91, tokenIndex91
}
if !matchDot() {
goto l87
}
goto l86
l87:
position, tokenIndex = position87, tokenIndex87
}
add(ruleFileDirective, position77)
}
return true
l76:
position, tokenIndex = position76, tokenIndex76
return false
},
/* 7 LocDirective <- <('.' ('l' / 'L') ('o' / 'O') ('c' / 'C') WS (!('#' / '/' / '\n') .)+)> */
func() bool {
position94, tokenIndex94 := position, tokenIndex
{
position95 := position
if buffer[position] != rune('.') {
goto l94
}
position++
{
position96, tokenIndex96 := position, tokenIndex
if buffer[position] != rune('l') {
goto l97
}
position++
goto l96
l97:
position, tokenIndex = position96, tokenIndex96
if buffer[position] != rune('L') {
goto l94
}
position++
}
l96:
{
position98, tokenIndex98 := position, tokenIndex
if buffer[position] != rune('o') {
goto l99
}
position++
goto l98
l99:
position, tokenIndex = position98, tokenIndex98
if buffer[position] != rune('O') {
goto l94
}
position++
}
l98:
{
position100, tokenIndex100 := position, tokenIndex
if buffer[position] != rune('c') {
goto l101
}
position++
goto l100
l101:
position, tokenIndex = position100, tokenIndex100
if buffer[position] != rune('C') {
goto l94
}
position++
}
l100:
if !_rules[ruleWS]() {
goto l94
}
{
position104, tokenIndex104 := position, tokenIndex
{
position105, tokenIndex105 := position, tokenIndex
if buffer[position] != rune('#') {
goto l106
}
position++
goto l105
l106:
position, tokenIndex = position105, tokenIndex105
if buffer[position] != rune('/') {
goto l107
}
position++
goto l105
l107:
position, tokenIndex = position105, tokenIndex105
if buffer[position] != rune('\n') {
goto l104
}
position++
}
l105:
goto l94
l104:
position, tokenIndex = position104, tokenIndex104
}
if !matchDot() {
goto l94
}
l102:
{
position103, tokenIndex103 := position, tokenIndex
{
position108, tokenIndex108 := position, tokenIndex
{
position109, tokenIndex109 := position, tokenIndex
if buffer[position] != rune('#') {
goto l110
}
position++
goto l109
l110:
position, tokenIndex = position109, tokenIndex109
if buffer[position] != rune('/') {
goto l111
}
position++
goto l109
l111:
position, tokenIndex = position109, tokenIndex109
if buffer[position] != rune('\n') {
goto l108
}
position++
}
l109:
goto l103
l108:
position, tokenIndex = position108, tokenIndex108
}
if !matchDot() {
goto l103
}
goto l102
l103:
position, tokenIndex = position103, tokenIndex103
}
add(ruleLocDirective, position95)
}
return true
l94:
position, tokenIndex = position94, tokenIndex94
return false
},
/* 8 Args <- <(Arg (WS? ',' WS? Arg)*)> */
func() bool {
position112, tokenIndex112 := position, tokenIndex
{
position113 := position
if !_rules[ruleArg]() {
goto l112
}
l114:
{
position115, tokenIndex115 := position, tokenIndex
{
position116, tokenIndex116 := position, tokenIndex
if !_rules[ruleWS]() {
goto l116
}
goto l117
l116:
position, tokenIndex = position116, tokenIndex116
}
l117:
if buffer[position] != rune(',') {
goto l115
}
position++
{
position118, tokenIndex118 := position, tokenIndex
if !_rules[ruleWS]() {
goto l118
}
goto l119
l118:
position, tokenIndex = position118, tokenIndex118
}
l119:
if !_rules[ruleArg]() {
goto l115
}
goto l114
l115:
position, tokenIndex = position115, tokenIndex115
}
add(ruleArgs, position113)
}
return true
l112:
position, tokenIndex = position112, tokenIndex112
return false
},
/* 9 Arg <- <(QuotedArg / ([0-9] / [0-9] / ([a-z] / [A-Z]) / '%' / '+' / '-' / '*' / '_' / '@' / '.' / '$')*)> */
func() bool {
{
position121 := position
{
position122, tokenIndex122 := position, tokenIndex
if !_rules[ruleQuotedArg]() {
goto l123
}
goto l122
l123:
position, tokenIndex = position122, tokenIndex122
l124:
{
position125, tokenIndex125 := position, tokenIndex
{
position126, tokenIndex126 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l127
}
position++
goto l126
l127:
position, tokenIndex = position126, tokenIndex126
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l128
}
position++
goto l126
l128:
position, tokenIndex = position126, tokenIndex126
{
position130, tokenIndex130 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l131
}
position++
goto l130
l131:
position, tokenIndex = position130, tokenIndex130
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l129
}
position++
}
l130:
goto l126
l129:
position, tokenIndex = position126, tokenIndex126
if buffer[position] != rune('%') {
goto l132
}
position++
goto l126
l132:
position, tokenIndex = position126, tokenIndex126
if buffer[position] != rune('+') {
goto l133
}
position++
goto l126
l133:
position, tokenIndex = position126, tokenIndex126
if buffer[position] != rune('-') {
goto l134
}
position++
goto l126
l134:
position, tokenIndex = position126, tokenIndex126
if buffer[position] != rune('*') {
goto l135
}
position++
goto l126
l135:
position, tokenIndex = position126, tokenIndex126
if buffer[position] != rune('_') {
goto l136
}
position++
goto l126
l136:
position, tokenIndex = position126, tokenIndex126
if buffer[position] != rune('@') {
goto l137
}
position++
goto l126
l137:
position, tokenIndex = position126, tokenIndex126
if buffer[position] != rune('.') {
goto l138
}
position++
goto l126
l138:
position, tokenIndex = position126, tokenIndex126
if buffer[position] != rune('$') {
goto l125
}
position++
}
l126:
goto l124
l125:
position, tokenIndex = position125, tokenIndex125
}
}
l122:
add(ruleArg, position121)
}
return true
},
/* 10 QuotedArg <- <('"' QuotedText '"')> */
func() bool {
position139, tokenIndex139 := position, tokenIndex
{
position140 := position
if buffer[position] != rune('"') {
goto l139
}
position++
if !_rules[ruleQuotedText]() {
goto l139
}
if buffer[position] != rune('"') {
goto l139
}
position++
add(ruleQuotedArg, position140)
}
return true
l139:
position, tokenIndex = position139, tokenIndex139
return false
},
/* 11 QuotedText <- <(EscapedChar / (!'"' .))*> */
func() bool {
{
position142 := position
l143:
{
position144, tokenIndex144 := position, tokenIndex
{
position145, tokenIndex145 := position, tokenIndex
if !_rules[ruleEscapedChar]() {
goto l146
}
goto l145
l146:
position, tokenIndex = position145, tokenIndex145
{
position147, tokenIndex147 := position, tokenIndex
if buffer[position] != rune('"') {
goto l147
}
position++
goto l144
l147:
position, tokenIndex = position147, tokenIndex147
}
if !matchDot() {
goto l144
}
}
l145:
goto l143
l144:
position, tokenIndex = position144, tokenIndex144
}
add(ruleQuotedText, position142)
}
return true
},
/* 12 SymbolDefiningDirective <- <((SymbolDefiningDirectiveName WS (LocalSymbol / SymbolName) WS? ',' WS? SymbolArg) / ((LocalSymbol / SymbolName) WS? '=' WS? SymbolArg))> */
func() bool {
position148, tokenIndex148 := position, tokenIndex
{
position149 := position
{
position150, tokenIndex150 := position, tokenIndex
if !_rules[ruleSymbolDefiningDirectiveName]() {
goto l151
}
if !_rules[ruleWS]() {
goto l151
}
{
position152, tokenIndex152 := position, tokenIndex
if !_rules[ruleLocalSymbol]() {
goto l153
}
goto l152
l153:
position, tokenIndex = position152, tokenIndex152
if !_rules[ruleSymbolName]() {
goto l151
}
}
l152:
{
position154, tokenIndex154 := position, tokenIndex
if !_rules[ruleWS]() {
goto l154
}
goto l155
l154:
position, tokenIndex = position154, tokenIndex154
}
l155:
if buffer[position] != rune(',') {
goto l151
}
position++
{
position156, tokenIndex156 := position, tokenIndex
if !_rules[ruleWS]() {
goto l156
}
goto l157
l156:
position, tokenIndex = position156, tokenIndex156
}
l157:
if !_rules[ruleSymbolArg]() {
goto l151
}
goto l150
l151:
position, tokenIndex = position150, tokenIndex150
{
position158, tokenIndex158 := position, tokenIndex
if !_rules[ruleLocalSymbol]() {
goto l159
}
goto l158
l159:
position, tokenIndex = position158, tokenIndex158
if !_rules[ruleSymbolName]() {
goto l148
}
}
l158:
{
position160, tokenIndex160 := position, tokenIndex
if !_rules[ruleWS]() {
goto l160
}
goto l161
l160:
position, tokenIndex = position160, tokenIndex160
}
l161:
if buffer[position] != rune('=') {
goto l148
}
position++
{
position162, tokenIndex162 := position, tokenIndex
if !_rules[ruleWS]() {
goto l162
}
goto l163
l162:
position, tokenIndex = position162, tokenIndex162
}
l163:
if !_rules[ruleSymbolArg]() {
goto l148
}
}
l150:
add(ruleSymbolDefiningDirective, position149)
}
return true
l148:
position, tokenIndex = position148, tokenIndex148
return false
},
/* 13 SymbolDefiningDirectiveName <- <(('.' ('e' / 'E') ('q' / 'Q') ('u' / 'U') ('i' / 'I') ('v' / 'V')) / ('.' ('e' / 'E') ('q' / 'Q') ('u' / 'U')) / ('.' ('s' / 'S') ('e' / 'E') ('t' / 'T')))> */
func() bool {
position164, tokenIndex164 := position, tokenIndex
{
position165 := position
{
position166, tokenIndex166 := position, tokenIndex
if buffer[position] != rune('.') {
goto l167
}
position++
{
position168, tokenIndex168 := position, tokenIndex
if buffer[position] != rune('e') {
goto l169
}
position++
goto l168
l169:
position, tokenIndex = position168, tokenIndex168
if buffer[position] != rune('E') {
goto l167
}
position++
}
l168:
{
position170, tokenIndex170 := position, tokenIndex
if buffer[position] != rune('q') {
goto l171
}
position++
goto l170
l171:
position, tokenIndex = position170, tokenIndex170
if buffer[position] != rune('Q') {
goto l167
}
position++
}
l170:
{
position172, tokenIndex172 := position, tokenIndex
if buffer[position] != rune('u') {
goto l173
}
position++
goto l172
l173:
position, tokenIndex = position172, tokenIndex172
if buffer[position] != rune('U') {
goto l167
}
position++
}
l172:
{
position174, tokenIndex174 := position, tokenIndex
if buffer[position] != rune('i') {
goto l175
}
position++
goto l174
l175:
position, tokenIndex = position174, tokenIndex174
if buffer[position] != rune('I') {
goto l167
}
position++
}
l174:
{
position176, tokenIndex176 := position, tokenIndex
if buffer[position] != rune('v') {
goto l177
}
position++
goto l176
l177:
position, tokenIndex = position176, tokenIndex176
if buffer[position] != rune('V') {
goto l167
}
position++
}
l176:
goto l166
l167:
position, tokenIndex = position166, tokenIndex166
if buffer[position] != rune('.') {
goto l178
}
position++
{
position179, tokenIndex179 := position, tokenIndex
if buffer[position] != rune('e') {
goto l180
}
position++
goto l179
l180:
position, tokenIndex = position179, tokenIndex179
if buffer[position] != rune('E') {
goto l178
}
position++
}
l179:
{
position181, tokenIndex181 := position, tokenIndex
if buffer[position] != rune('q') {
goto l182
}
position++
goto l181
l182:
position, tokenIndex = position181, tokenIndex181
if buffer[position] != rune('Q') {
goto l178
}
position++
}
l181:
{
position183, tokenIndex183 := position, tokenIndex
if buffer[position] != rune('u') {
goto l184
}
position++
goto l183
l184:
position, tokenIndex = position183, tokenIndex183
if buffer[position] != rune('U') {
goto l178
}
position++
}
l183:
goto l166
l178:
position, tokenIndex = position166, tokenIndex166
if buffer[position] != rune('.') {
goto l164
}
position++
{
position185, tokenIndex185 := position, tokenIndex
if buffer[position] != rune('s') {
goto l186
}
position++
goto l185
l186:
position, tokenIndex = position185, tokenIndex185
if buffer[position] != rune('S') {
goto l164
}
position++
}
l185:
{
position187, tokenIndex187 := position, tokenIndex
if buffer[position] != rune('e') {
goto l188
}
position++
goto l187
l188:
position, tokenIndex = position187, tokenIndex187
if buffer[position] != rune('E') {
goto l164
}
position++
}
l187:
{
position189, tokenIndex189 := position, tokenIndex
if buffer[position] != rune('t') {
goto l190
}
position++
goto l189
l190:
position, tokenIndex = position189, tokenIndex189
if buffer[position] != rune('T') {
goto l164
}
position++
}
l189:
}
l166:
add(ruleSymbolDefiningDirectiveName, position165)
}
return true
l164:
position, tokenIndex = position164, tokenIndex164
return false
},
/* 14 LabelContainingDirective <- <(LabelContainingDirectiveName WS SymbolArgs)> */
func() bool {
position191, tokenIndex191 := position, tokenIndex
{
position192 := position
if !_rules[ruleLabelContainingDirectiveName]() {
goto l191
}
if !_rules[ruleWS]() {
goto l191
}
if !_rules[ruleSymbolArgs]() {
goto l191
}
add(ruleLabelContainingDirective, position192)
}
return true
l191:
position, tokenIndex = position191, tokenIndex191
return false
},
/* 15 LabelContainingDirectiveName <- <(('.' ('x' / 'X') ('w' / 'W') ('o' / 'O') ('r' / 'R') ('d' / 'D')) / ('.' ('w' / 'W') ('o' / 'O') ('r' / 'R') ('d' / 'D')) / ('.' ('h' / 'H') ('w' / 'W') ('o' / 'O') ('r' / 'R') ('d' / 'D')) / ('.' ('l' / 'L') ('o' / 'O') ('n' / 'N') ('g' / 'G')) / ('.' ('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 {
position193, tokenIndex193 := position, tokenIndex
{
position194 := position
{
position195, tokenIndex195 := position, tokenIndex
if buffer[position] != rune('.') {
goto l196
}
position++
{
position197, tokenIndex197 := position, tokenIndex
if buffer[position] != rune('x') {
goto l198
}
position++
goto l197
l198:
position, tokenIndex = position197, tokenIndex197
if buffer[position] != rune('X') {
goto l196
}
position++
}
l197:
{
position199, tokenIndex199 := position, tokenIndex
if buffer[position] != rune('w') {
goto l200
}
position++
goto l199
l200:
position, tokenIndex = position199, tokenIndex199
if buffer[position] != rune('W') {
goto l196
}
position++
}
l199:
{
position201, tokenIndex201 := position, tokenIndex
if buffer[position] != rune('o') {
goto l202
}
position++
goto l201
l202:
position, tokenIndex = position201, tokenIndex201
if buffer[position] != rune('O') {
goto l196
}
position++
}
l201:
{
position203, tokenIndex203 := position, tokenIndex
if buffer[position] != rune('r') {
goto l204
}
position++
goto l203
l204:
position, tokenIndex = position203, tokenIndex203
if buffer[position] != rune('R') {
goto l196
}
position++
}
l203:
{
position205, tokenIndex205 := position, tokenIndex
if buffer[position] != rune('d') {
goto l206
}
position++
goto l205
l206:
position, tokenIndex = position205, tokenIndex205
if buffer[position] != rune('D') {
goto l196
}
position++
}
l205:
goto l195
l196:
position, tokenIndex = position195, tokenIndex195
if buffer[position] != rune('.') {
goto l207
}
position++
{
position208, tokenIndex208 := position, tokenIndex
if buffer[position] != rune('w') {
goto l209
}
position++
goto l208
l209:
position, tokenIndex = position208, tokenIndex208
if buffer[position] != rune('W') {
goto l207
}
position++
}
l208:
{
position210, tokenIndex210 := position, tokenIndex
if buffer[position] != rune('o') {
goto l211
}
position++
goto l210
l211:
position, tokenIndex = position210, tokenIndex210
if buffer[position] != rune('O') {
goto l207
}
position++
}
l210:
{
position212, tokenIndex212 := position, tokenIndex
if buffer[position] != rune('r') {
goto l213
}
position++
goto l212
l213:
position, tokenIndex = position212, tokenIndex212
if buffer[position] != rune('R') {
goto l207
}
position++
}
l212:
{
position214, tokenIndex214 := position, tokenIndex
if buffer[position] != rune('d') {
goto l215
}
position++
goto l214
l215:
position, tokenIndex = position214, tokenIndex214
if buffer[position] != rune('D') {
goto l207
}
position++
}
l214:
goto l195
l207:
position, tokenIndex = position195, tokenIndex195
if buffer[position] != rune('.') {
goto l216
}
position++
{
position217, tokenIndex217 := position, tokenIndex
if buffer[position] != rune('h') {
goto l218
}
position++
goto l217
l218:
position, tokenIndex = position217, tokenIndex217
if buffer[position] != rune('H') {
goto l216
}
position++
}
l217:
{
position219, tokenIndex219 := position, tokenIndex
if buffer[position] != rune('w') {
goto l220
}
position++
goto l219
l220:
position, tokenIndex = position219, tokenIndex219
if buffer[position] != rune('W') {
goto l216
}
position++
}
l219:
{
position221, tokenIndex221 := position, tokenIndex
if buffer[position] != rune('o') {
goto l222
}
position++
goto l221
l222:
position, tokenIndex = position221, tokenIndex221
if buffer[position] != rune('O') {
goto l216
}
position++
}
l221:
{
position223, tokenIndex223 := position, tokenIndex
if buffer[position] != rune('r') {
goto l224
}
position++
goto l223
l224:
position, tokenIndex = position223, tokenIndex223
if buffer[position] != rune('R') {
goto l216
}
position++
}
l223:
{
position225, tokenIndex225 := position, tokenIndex
if buffer[position] != rune('d') {
goto l226
}
position++
goto l225
l226:
position, tokenIndex = position225, tokenIndex225
if buffer[position] != rune('D') {
goto l216
}
position++
}
l225:
goto l195
l216:
position, tokenIndex = position195, tokenIndex195
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('n') {
goto l233
}
position++
goto l232
l233:
position, tokenIndex = position232, tokenIndex232
if buffer[position] != rune('N') {
goto l227
}
position++
}
l232:
{
position234, tokenIndex234 := position, tokenIndex
if buffer[position] != rune('g') {
goto l235
}
position++
goto l234
l235:
position, tokenIndex = position234, tokenIndex234
if buffer[position] != rune('G') {
goto l227
}
position++
}
l234:
goto l195
l227:
position, tokenIndex = position195, tokenIndex195
if buffer[position] != rune('.') {
goto l236
}
position++
{
position237, tokenIndex237 := position, tokenIndex
if buffer[position] != rune('b') {
goto l238
}
position++
goto l237
l238:
position, tokenIndex = position237, tokenIndex237
if buffer[position] != rune('B') {
goto l236
}
position++
}
l237:
{
position239, tokenIndex239 := position, tokenIndex
if buffer[position] != rune('y') {
goto l240
}
position++
goto l239
l240:
position, tokenIndex = position239, tokenIndex239
if buffer[position] != rune('Y') {
goto l236
}
position++
}
l239:
{
position241, tokenIndex241 := position, tokenIndex
if buffer[position] != rune('t') {
goto l242
}
position++
goto l241
l242:
position, tokenIndex = position241, tokenIndex241
if buffer[position] != rune('T') {
goto l236
}
position++
}
l241:
{
position243, tokenIndex243 := position, tokenIndex
if buffer[position] != rune('e') {
goto l244
}
position++
goto l243
l244:
position, tokenIndex = position243, tokenIndex243
if buffer[position] != rune('E') {
goto l236
}
position++
}
l243:
goto l195
l236:
position, tokenIndex = position195, tokenIndex195
if buffer[position] != rune('.') {
goto l245
}
position++
if buffer[position] != rune('8') {
goto l245
}
position++
{
position246, tokenIndex246 := position, tokenIndex
if buffer[position] != rune('b') {
goto l247
}
position++
goto l246
l247:
position, tokenIndex = position246, tokenIndex246
if buffer[position] != rune('B') {
goto l245
}
position++
}
l246:
{
position248, tokenIndex248 := position, tokenIndex
if buffer[position] != rune('y') {
goto l249
}
position++
goto l248
l249:
position, tokenIndex = position248, tokenIndex248
if buffer[position] != rune('Y') {
goto l245
}
position++
}
l248:
{
position250, tokenIndex250 := position, tokenIndex
if buffer[position] != rune('t') {
goto l251
}
position++
goto l250
l251:
position, tokenIndex = position250, tokenIndex250
if buffer[position] != rune('T') {
goto l245
}
position++
}
l250:
{
position252, tokenIndex252 := position, tokenIndex
if buffer[position] != rune('e') {
goto l253
}
position++
goto l252
l253:
position, tokenIndex = position252, tokenIndex252
if buffer[position] != rune('E') {
goto l245
}
position++
}
l252:
goto l195
l245:
position, tokenIndex = position195, tokenIndex195
if buffer[position] != rune('.') {
goto l254
}
position++
if buffer[position] != rune('4') {
goto l254
}
position++
{
position255, tokenIndex255 := position, tokenIndex
if buffer[position] != rune('b') {
goto l256
}
position++
goto l255
l256:
position, tokenIndex = position255, tokenIndex255
if buffer[position] != rune('B') {
goto l254
}
position++
}
l255:
{
position257, tokenIndex257 := position, tokenIndex
if buffer[position] != rune('y') {
goto l258
}
position++
goto l257
l258:
position, tokenIndex = position257, tokenIndex257
if buffer[position] != rune('Y') {
goto l254
}
position++
}
l257:
{
position259, tokenIndex259 := position, tokenIndex
if buffer[position] != rune('t') {
goto l260
}
position++
goto l259
l260:
position, tokenIndex = position259, tokenIndex259
if buffer[position] != rune('T') {
goto l254
}
position++
}
l259:
{
position261, tokenIndex261 := position, tokenIndex
if buffer[position] != rune('e') {
goto l262
}
position++
goto l261
l262:
position, tokenIndex = position261, tokenIndex261
if buffer[position] != rune('E') {
goto l254
}
position++
}
l261:
goto l195
l254:
position, tokenIndex = position195, tokenIndex195
if buffer[position] != rune('.') {
goto l263
}
position++
{
position264, tokenIndex264 := position, tokenIndex
if buffer[position] != rune('q') {
goto l265
}
position++
goto l264
l265:
position, tokenIndex = position264, tokenIndex264
if buffer[position] != rune('Q') {
goto l263
}
position++
}
l264:
{
position266, tokenIndex266 := position, tokenIndex
if buffer[position] != rune('u') {
goto l267
}
position++
goto l266
l267:
position, tokenIndex = position266, tokenIndex266
if buffer[position] != rune('U') {
goto l263
}
position++
}
l266:
{
position268, tokenIndex268 := position, tokenIndex
if buffer[position] != rune('a') {
goto l269
}
position++
goto l268
l269:
position, tokenIndex = position268, tokenIndex268
if buffer[position] != rune('A') {
goto l263
}
position++
}
l268:
{
position270, tokenIndex270 := position, tokenIndex
if buffer[position] != rune('d') {
goto l271
}
position++
goto l270
l271:
position, tokenIndex = position270, tokenIndex270
if buffer[position] != rune('D') {
goto l263
}
position++
}
l270:
goto l195
l263:
position, tokenIndex = position195, tokenIndex195
if buffer[position] != rune('.') {
goto l272
}
position++
{
position273, tokenIndex273 := position, tokenIndex
if buffer[position] != rune('t') {
goto l274
}
position++
goto l273
l274:
position, tokenIndex = position273, tokenIndex273
if buffer[position] != rune('T') {
goto l272
}
position++
}
l273:
{
position275, tokenIndex275 := position, tokenIndex
if buffer[position] != rune('c') {
goto l276
}
position++
goto l275
l276:
position, tokenIndex = position275, tokenIndex275
if buffer[position] != rune('C') {
goto l272
}
position++
}
l275:
goto l195
l272:
position, tokenIndex = position195, tokenIndex195
if buffer[position] != rune('.') {
goto l277
}
position++
{
position278, tokenIndex278 := position, tokenIndex
if buffer[position] != rune('l') {
goto l279
}
position++
goto l278
l279:
position, tokenIndex = position278, tokenIndex278
if buffer[position] != rune('L') {
goto l277
}
position++
}
l278:
{
position280, tokenIndex280 := position, tokenIndex
if buffer[position] != rune('o') {
goto l281
}
position++
goto l280
l281:
position, tokenIndex = position280, tokenIndex280
if buffer[position] != rune('O') {
goto l277
}
position++
}
l280:
{
position282, tokenIndex282 := position, tokenIndex
if buffer[position] != rune('c') {
goto l283
}
position++
goto l282
l283:
position, tokenIndex = position282, tokenIndex282
if buffer[position] != rune('C') {
goto l277
}
position++
}
l282:
{
position284, tokenIndex284 := position, tokenIndex
if buffer[position] != rune('a') {
goto l285
}
position++
goto l284
l285:
position, tokenIndex = position284, tokenIndex284
if buffer[position] != rune('A') {
goto l277
}
position++
}
l284:
{
position286, tokenIndex286 := position, tokenIndex
if buffer[position] != rune('l') {
goto l287
}
position++
goto l286
l287:
position, tokenIndex = position286, tokenIndex286
if buffer[position] != rune('L') {
goto l277
}
position++
}
l286:
{
position288, tokenIndex288 := position, tokenIndex
if buffer[position] != rune('e') {
goto l289
}
position++
goto l288
l289:
position, tokenIndex = position288, tokenIndex288
if buffer[position] != rune('E') {
goto l277
}
position++
}
l288:
{
position290, tokenIndex290 := position, tokenIndex
if buffer[position] != rune('n') {
goto l291
}
position++
goto l290
l291:
position, tokenIndex = position290, tokenIndex290
if buffer[position] != rune('N') {
goto l277
}
position++
}
l290:
{
position292, tokenIndex292 := position, tokenIndex
if buffer[position] != rune('t') {
goto l293
}
position++
goto l292
l293:
position, tokenIndex = position292, tokenIndex292
if buffer[position] != rune('T') {
goto l277
}
position++
}
l292:
{
position294, tokenIndex294 := position, tokenIndex
if buffer[position] != rune('r') {
goto l295
}
position++
goto l294
l295:
position, tokenIndex = position294, tokenIndex294
if buffer[position] != rune('R') {
goto l277
}
position++
}
l294:
{
position296, tokenIndex296 := position, tokenIndex
if buffer[position] != rune('y') {
goto l297
}
position++
goto l296
l297:
position, tokenIndex = position296, tokenIndex296
if buffer[position] != rune('Y') {
goto l277
}
position++
}
l296:
goto l195
l277:
position, tokenIndex = position195, tokenIndex195
if buffer[position] != rune('.') {
goto l298
}
position++
{
position299, tokenIndex299 := position, tokenIndex
if buffer[position] != rune('s') {
goto l300
}
position++
goto l299
l300:
position, tokenIndex = position299, tokenIndex299
if buffer[position] != rune('S') {
goto l298
}
position++
}
l299:
{
position301, tokenIndex301 := position, tokenIndex
if buffer[position] != rune('i') {
goto l302
}
position++
goto l301
l302:
position, tokenIndex = position301, tokenIndex301
if buffer[position] != rune('I') {
goto l298
}
position++
}
l301:
{
position303, tokenIndex303 := position, tokenIndex
if buffer[position] != rune('z') {
goto l304
}
position++
goto l303
l304:
position, tokenIndex = position303, tokenIndex303
if buffer[position] != rune('Z') {
goto l298
}
position++
}
l303:
{
position305, tokenIndex305 := position, tokenIndex
if buffer[position] != rune('e') {
goto l306
}
position++
goto l305
l306:
position, tokenIndex = position305, tokenIndex305
if buffer[position] != rune('E') {
goto l298
}
position++
}
l305:
goto l195
l298:
position, tokenIndex = position195, tokenIndex195
if buffer[position] != rune('.') {
goto l307
}
position++
{
position308, tokenIndex308 := position, tokenIndex
if buffer[position] != rune('t') {
goto l309
}
position++
goto l308
l309:
position, tokenIndex = position308, tokenIndex308
if buffer[position] != rune('T') {
goto l307
}
position++
}
l308:
{
position310, tokenIndex310 := position, tokenIndex
if buffer[position] != rune('y') {
goto l311
}
position++
goto l310
l311:
position, tokenIndex = position310, tokenIndex310
if buffer[position] != rune('Y') {
goto l307
}
position++
}
l310:
{
position312, tokenIndex312 := position, tokenIndex
if buffer[position] != rune('p') {
goto l313
}
position++
goto l312
l313:
position, tokenIndex = position312, tokenIndex312
if buffer[position] != rune('P') {
goto l307
}
position++
}
l312:
{
position314, tokenIndex314 := position, tokenIndex
if buffer[position] != rune('e') {
goto l315
}
position++
goto l314
l315:
position, tokenIndex = position314, tokenIndex314
if buffer[position] != rune('E') {
goto l307
}
position++
}
l314:
goto l195
l307:
position, tokenIndex = position195, tokenIndex195
if buffer[position] != rune('.') {
goto l316
}
position++
{
position317, tokenIndex317 := position, tokenIndex
if buffer[position] != rune('u') {
goto l318
}
position++
goto l317
l318:
position, tokenIndex = position317, tokenIndex317
if buffer[position] != rune('U') {
goto l316
}
position++
}
l317:
{
position319, tokenIndex319 := position, tokenIndex
if buffer[position] != rune('l') {
goto l320
}
position++
goto l319
l320:
position, tokenIndex = position319, tokenIndex319
if buffer[position] != rune('L') {
goto l316
}
position++
}
l319:
{
position321, tokenIndex321 := position, tokenIndex
if buffer[position] != rune('e') {
goto l322
}
position++
goto l321
l322:
position, tokenIndex = position321, tokenIndex321
if buffer[position] != rune('E') {
goto l316
}
position++
}
l321:
{
position323, tokenIndex323 := position, tokenIndex
if buffer[position] != rune('b') {
goto l324
}
position++
goto l323
l324:
position, tokenIndex = position323, tokenIndex323
if buffer[position] != rune('B') {
goto l316
}
position++
}
l323:
if buffer[position] != rune('1') {
goto l316
}
position++
if buffer[position] != rune('2') {
goto l316
}
position++
if buffer[position] != rune('8') {
goto l316
}
position++
goto l195
l316:
position, tokenIndex = position195, tokenIndex195
if buffer[position] != rune('.') {
goto l193
}
position++
{
position325, tokenIndex325 := position, tokenIndex
if buffer[position] != rune('s') {
goto l326
}
position++
goto l325
l326:
position, tokenIndex = position325, tokenIndex325
if buffer[position] != rune('S') {
goto l193
}
position++
}
l325:
{
position327, tokenIndex327 := position, tokenIndex
if buffer[position] != rune('l') {
goto l328
}
position++
goto l327
l328:
position, tokenIndex = position327, tokenIndex327
if buffer[position] != rune('L') {
goto l193
}
position++
}
l327:
{
position329, tokenIndex329 := position, tokenIndex
if buffer[position] != rune('e') {
goto l330
}
position++
goto l329
l330:
position, tokenIndex = position329, tokenIndex329
if buffer[position] != rune('E') {
goto l193
}
position++
}
l329:
{
position331, tokenIndex331 := position, tokenIndex
if buffer[position] != rune('b') {
goto l332
}
position++
goto l331
l332:
position, tokenIndex = position331, tokenIndex331
if buffer[position] != rune('B') {
goto l193
}
position++
}
l331:
if buffer[position] != rune('1') {
goto l193
}
position++
if buffer[position] != rune('2') {
goto l193
}
position++
if buffer[position] != rune('8') {
goto l193
}
position++
}
l195:
add(ruleLabelContainingDirectiveName, position194)
}
return true
l193:
position, tokenIndex = position193, tokenIndex193
return false
},
/* 16 PrefAlignDirective <- <('.' ('p' / 'P') ('r' / 'R') ('e' / 'E') ('f' / 'F') ('a' / 'A') ('l' / 'L') ('i' / 'I') ('g' / 'G') ('n' / 'N') WS Arg (WS? ',' WS? SymbolArg WS? ',' WS? Arg)?)> */
func() bool {
position333, tokenIndex333 := position, tokenIndex
{
position334 := position
if buffer[position] != rune('.') {
goto l333
}
position++
{
position335, tokenIndex335 := position, tokenIndex
if buffer[position] != rune('p') {
goto l336
}
position++
goto l335
l336:
position, tokenIndex = position335, tokenIndex335
if buffer[position] != rune('P') {
goto l333
}
position++
}
l335:
{
position337, tokenIndex337 := position, tokenIndex
if buffer[position] != rune('r') {
goto l338
}
position++
goto l337
l338:
position, tokenIndex = position337, tokenIndex337
if buffer[position] != rune('R') {
goto l333
}
position++
}
l337:
{
position339, tokenIndex339 := position, tokenIndex
if buffer[position] != rune('e') {
goto l340
}
position++
goto l339
l340:
position, tokenIndex = position339, tokenIndex339
if buffer[position] != rune('E') {
goto l333
}
position++
}
l339:
{
position341, tokenIndex341 := position, tokenIndex
if buffer[position] != rune('f') {
goto l342
}
position++
goto l341
l342:
position, tokenIndex = position341, tokenIndex341
if buffer[position] != rune('F') {
goto l333
}
position++
}
l341:
{
position343, tokenIndex343 := position, tokenIndex
if buffer[position] != rune('a') {
goto l344
}
position++
goto l343
l344:
position, tokenIndex = position343, tokenIndex343
if buffer[position] != rune('A') {
goto l333
}
position++
}
l343:
{
position345, tokenIndex345 := position, tokenIndex
if buffer[position] != rune('l') {
goto l346
}
position++
goto l345
l346:
position, tokenIndex = position345, tokenIndex345
if buffer[position] != rune('L') {
goto l333
}
position++
}
l345:
{
position347, tokenIndex347 := position, tokenIndex
if buffer[position] != rune('i') {
goto l348
}
position++
goto l347
l348:
position, tokenIndex = position347, tokenIndex347
if buffer[position] != rune('I') {
goto l333
}
position++
}
l347:
{
position349, tokenIndex349 := position, tokenIndex
if buffer[position] != rune('g') {
goto l350
}
position++
goto l349
l350:
position, tokenIndex = position349, tokenIndex349
if buffer[position] != rune('G') {
goto l333
}
position++
}
l349:
{
position351, tokenIndex351 := position, tokenIndex
if buffer[position] != rune('n') {
goto l352
}
position++
goto l351
l352:
position, tokenIndex = position351, tokenIndex351
if buffer[position] != rune('N') {
goto l333
}
position++
}
l351:
if !_rules[ruleWS]() {
goto l333
}
if !_rules[ruleArg]() {
goto l333
}
{
position353, tokenIndex353 := position, tokenIndex
{
position355, tokenIndex355 := position, tokenIndex
if !_rules[ruleWS]() {
goto l355
}
goto l356
l355:
position, tokenIndex = position355, tokenIndex355
}
l356:
if buffer[position] != rune(',') {
goto l353
}
position++
{
position357, tokenIndex357 := position, tokenIndex
if !_rules[ruleWS]() {
goto l357
}
goto l358
l357:
position, tokenIndex = position357, tokenIndex357
}
l358:
if !_rules[ruleSymbolArg]() {
goto l353
}
{
position359, tokenIndex359 := position, tokenIndex
if !_rules[ruleWS]() {
goto l359
}
goto l360
l359:
position, tokenIndex = position359, tokenIndex359
}
l360:
if buffer[position] != rune(',') {
goto l353
}
position++
{
position361, tokenIndex361 := position, tokenIndex
if !_rules[ruleWS]() {
goto l361
}
goto l362
l361:
position, tokenIndex = position361, tokenIndex361
}
l362:
if !_rules[ruleArg]() {
goto l353
}
goto l354
l353:
position, tokenIndex = position353, tokenIndex353
}
l354:
add(rulePrefAlignDirective, position334)
}
return true
l333:
position, tokenIndex = position333, tokenIndex333
return false
},
/* 17 SymbolArgs <- <(SymbolArg (WS? ',' WS? SymbolArg)*)> */
func() bool {
position363, tokenIndex363 := position, tokenIndex
{
position364 := position
if !_rules[ruleSymbolArg]() {
goto l363
}
l365:
{
position366, tokenIndex366 := position, tokenIndex
{
position367, tokenIndex367 := position, tokenIndex
if !_rules[ruleWS]() {
goto l367
}
goto l368
l367:
position, tokenIndex = position367, tokenIndex367
}
l368:
if buffer[position] != rune(',') {
goto l366
}
position++
{
position369, tokenIndex369 := position, tokenIndex
if !_rules[ruleWS]() {
goto l369
}
goto l370
l369:
position, tokenIndex = position369, tokenIndex369
}
l370:
if !_rules[ruleSymbolArg]() {
goto l366
}
goto l365
l366:
position, tokenIndex = position366, tokenIndex366
}
add(ruleSymbolArgs, position364)
}
return true
l363:
position, tokenIndex = position363, tokenIndex363
return false
},
/* 18 SymbolArg <- <SymbolExpr> */
func() bool {
position371, tokenIndex371 := position, tokenIndex
{
position372 := position
if !_rules[ruleSymbolExpr]() {
goto l371
}
add(ruleSymbolArg, position372)
}
return true
l371:
position, tokenIndex = position371, tokenIndex371
return false
},
/* 19 SymbolExpr <- <(SymbolAtom (WS? SymbolOperator WS? SymbolExpr)?)> */
func() bool {
position373, tokenIndex373 := position, tokenIndex
{
position374 := position
if !_rules[ruleSymbolAtom]() {
goto l373
}
{
position375, tokenIndex375 := position, tokenIndex
{
position377, tokenIndex377 := position, tokenIndex
if !_rules[ruleWS]() {
goto l377
}
goto l378
l377:
position, tokenIndex = position377, tokenIndex377
}
l378:
if !_rules[ruleSymbolOperator]() {
goto l375
}
{
position379, tokenIndex379 := position, tokenIndex
if !_rules[ruleWS]() {
goto l379
}
goto l380
l379:
position, tokenIndex = position379, tokenIndex379
}
l380:
if !_rules[ruleSymbolExpr]() {
goto l375
}
goto l376
l375:
position, tokenIndex = position375, tokenIndex375
}
l376:
add(ruleSymbolExpr, position374)
}
return true
l373:
position, tokenIndex = position373, tokenIndex373
return false
},
/* 20 SymbolAtom <- <(LocalLabelRef / Offset / SymbolType / (LocalSymbol TCMarker?) / (SymbolName Offset) / (SymbolName TCMarker?) / Dot / (OpenParen WS? SymbolExpr WS? CloseParen))> */
func() bool {
position381, tokenIndex381 := position, tokenIndex
{
position382 := position
{
position383, tokenIndex383 := position, tokenIndex
if !_rules[ruleLocalLabelRef]() {
goto l384
}
goto l383
l384:
position, tokenIndex = position383, tokenIndex383
if !_rules[ruleOffset]() {
goto l385
}
goto l383
l385:
position, tokenIndex = position383, tokenIndex383
if !_rules[ruleSymbolType]() {
goto l386
}
goto l383
l386:
position, tokenIndex = position383, tokenIndex383
if !_rules[ruleLocalSymbol]() {
goto l387
}
{
position388, tokenIndex388 := position, tokenIndex
if !_rules[ruleTCMarker]() {
goto l388
}
goto l389
l388:
position, tokenIndex = position388, tokenIndex388
}
l389:
goto l383
l387:
position, tokenIndex = position383, tokenIndex383
if !_rules[ruleSymbolName]() {
goto l390
}
if !_rules[ruleOffset]() {
goto l390
}
goto l383
l390:
position, tokenIndex = position383, tokenIndex383
if !_rules[ruleSymbolName]() {
goto l391
}
{
position392, tokenIndex392 := position, tokenIndex
if !_rules[ruleTCMarker]() {
goto l392
}
goto l393
l392:
position, tokenIndex = position392, tokenIndex392
}
l393:
goto l383
l391:
position, tokenIndex = position383, tokenIndex383
if !_rules[ruleDot]() {
goto l394
}
goto l383
l394:
position, tokenIndex = position383, tokenIndex383
if !_rules[ruleOpenParen]() {
goto l381
}
{
position395, tokenIndex395 := position, tokenIndex
if !_rules[ruleWS]() {
goto l395
}
goto l396
l395:
position, tokenIndex = position395, tokenIndex395
}
l396:
if !_rules[ruleSymbolExpr]() {
goto l381
}
{
position397, tokenIndex397 := position, tokenIndex
if !_rules[ruleWS]() {
goto l397
}
goto l398
l397:
position, tokenIndex = position397, tokenIndex397
}
l398:
if !_rules[ruleCloseParen]() {
goto l381
}
}
l383:
add(ruleSymbolAtom, position382)
}
return true
l381:
position, tokenIndex = position381, tokenIndex381
return false
},
/* 21 SymbolOperator <- <('+' / '-' / '|' / ('<' '<') / ('>' '>'))> */
func() bool {
position399, tokenIndex399 := position, tokenIndex
{
position400 := position
{
position401, tokenIndex401 := position, tokenIndex
if buffer[position] != rune('+') {
goto l402
}
position++
goto l401
l402:
position, tokenIndex = position401, tokenIndex401
if buffer[position] != rune('-') {
goto l403
}
position++
goto l401
l403:
position, tokenIndex = position401, tokenIndex401
if buffer[position] != rune('|') {
goto l404
}
position++
goto l401
l404:
position, tokenIndex = position401, tokenIndex401
if buffer[position] != rune('<') {
goto l405
}
position++
if buffer[position] != rune('<') {
goto l405
}
position++
goto l401
l405:
position, tokenIndex = position401, tokenIndex401
if buffer[position] != rune('>') {
goto l399
}
position++
if buffer[position] != rune('>') {
goto l399
}
position++
}
l401:
add(ruleSymbolOperator, position400)
}
return true
l399:
position, tokenIndex = position399, tokenIndex399
return false
},
/* 22 OpenParen <- <'('> */
func() bool {
position406, tokenIndex406 := position, tokenIndex
{
position407 := position
if buffer[position] != rune('(') {
goto l406
}
position++
add(ruleOpenParen, position407)
}
return true
l406:
position, tokenIndex = position406, tokenIndex406
return false
},
/* 23 CloseParen <- <')'> */
func() bool {
position408, tokenIndex408 := position, tokenIndex
{
position409 := position
if buffer[position] != rune(')') {
goto l408
}
position++
add(ruleCloseParen, position409)
}
return true
l408:
position, tokenIndex = position408, tokenIndex408
return false
},
/* 24 SymbolType <- <(('@' / '%') (('f' 'u' 'n' 'c' 't' 'i' 'o' 'n') / ('o' 'b' 'j' 'e' 'c' 't')))> */
func() bool {
position410, tokenIndex410 := position, tokenIndex
{
position411 := position
{
position412, tokenIndex412 := position, tokenIndex
if buffer[position] != rune('@') {
goto l413
}
position++
goto l412
l413:
position, tokenIndex = position412, tokenIndex412
if buffer[position] != rune('%') {
goto l410
}
position++
}
l412:
{
position414, tokenIndex414 := position, tokenIndex
if buffer[position] != rune('f') {
goto l415
}
position++
if buffer[position] != rune('u') {
goto l415
}
position++
if buffer[position] != rune('n') {
goto l415
}
position++
if buffer[position] != rune('c') {
goto l415
}
position++
if buffer[position] != rune('t') {
goto l415
}
position++
if buffer[position] != rune('i') {
goto l415
}
position++
if buffer[position] != rune('o') {
goto l415
}
position++
if buffer[position] != rune('n') {
goto l415
}
position++
goto l414
l415:
position, tokenIndex = position414, tokenIndex414
if buffer[position] != rune('o') {
goto l410
}
position++
if buffer[position] != rune('b') {
goto l410
}
position++
if buffer[position] != rune('j') {
goto l410
}
position++
if buffer[position] != rune('e') {
goto l410
}
position++
if buffer[position] != rune('c') {
goto l410
}
position++
if buffer[position] != rune('t') {
goto l410
}
position++
}
l414:
add(ruleSymbolType, position411)
}
return true
l410:
position, tokenIndex = position410, tokenIndex410
return false
},
/* 25 Dot <- <'.'> */
func() bool {
position416, tokenIndex416 := position, tokenIndex
{
position417 := position
if buffer[position] != rune('.') {
goto l416
}
position++
add(ruleDot, position417)
}
return true
l416:
position, tokenIndex = position416, tokenIndex416
return false
},
/* 26 TCMarker <- <('[' 'T' 'C' ']')> */
func() bool {
position418, tokenIndex418 := position, tokenIndex
{
position419 := position
if buffer[position] != rune('[') {
goto l418
}
position++
if buffer[position] != rune('T') {
goto l418
}
position++
if buffer[position] != rune('C') {
goto l418
}
position++
if buffer[position] != rune(']') {
goto l418
}
position++
add(ruleTCMarker, position419)
}
return true
l418:
position, tokenIndex = position418, tokenIndex418
return false
},
/* 27 EscapedChar <- <('\\' .)> */
func() bool {
position420, tokenIndex420 := position, tokenIndex
{
position421 := position
if buffer[position] != rune('\\') {
goto l420
}
position++
if !matchDot() {
goto l420
}
add(ruleEscapedChar, position421)
}
return true
l420:
position, tokenIndex = position420, tokenIndex420
return false
},
/* 28 WS <- <(' ' / '\t')+> */
func() bool {
position422, tokenIndex422 := position, tokenIndex
{
position423 := position
{
position426, tokenIndex426 := position, tokenIndex
if buffer[position] != rune(' ') {
goto l427
}
position++
goto l426
l427:
position, tokenIndex = position426, tokenIndex426
if buffer[position] != rune('\t') {
goto l422
}
position++
}
l426:
l424:
{
position425, tokenIndex425 := position, tokenIndex
{
position428, tokenIndex428 := position, tokenIndex
if buffer[position] != rune(' ') {
goto l429
}
position++
goto l428
l429:
position, tokenIndex = position428, tokenIndex428
if buffer[position] != rune('\t') {
goto l425
}
position++
}
l428:
goto l424
l425:
position, tokenIndex = position425, tokenIndex425
}
add(ruleWS, position423)
}
return true
l422:
position, tokenIndex = position422, tokenIndex422
return false
},
/* 29 Comment <- <((('/' '/') / '#') (!'\n' .)*)> */
func() bool {
position430, tokenIndex430 := position, tokenIndex
{
position431 := position
{
position432, tokenIndex432 := position, tokenIndex
if buffer[position] != rune('/') {
goto l433
}
position++
if buffer[position] != rune('/') {
goto l433
}
position++
goto l432
l433:
position, tokenIndex = position432, tokenIndex432
if buffer[position] != rune('#') {
goto l430
}
position++
}
l432:
l434:
{
position435, tokenIndex435 := position, tokenIndex
{
position436, tokenIndex436 := position, tokenIndex
if buffer[position] != rune('\n') {
goto l436
}
position++
goto l435
l436:
position, tokenIndex = position436, tokenIndex436
}
if !matchDot() {
goto l435
}
goto l434
l435:
position, tokenIndex = position435, tokenIndex435
}
add(ruleComment, position431)
}
return true
l430:
position, tokenIndex = position430, tokenIndex430
return false
},
/* 30 Label <- <((LocalSymbol / LocalLabel / SymbolName) ':')> */
func() bool {
position437, tokenIndex437 := position, tokenIndex
{
position438 := position
{
position439, tokenIndex439 := position, tokenIndex
if !_rules[ruleLocalSymbol]() {
goto l440
}
goto l439
l440:
position, tokenIndex = position439, tokenIndex439
if !_rules[ruleLocalLabel]() {
goto l441
}
goto l439
l441:
position, tokenIndex = position439, tokenIndex439
if !_rules[ruleSymbolName]() {
goto l437
}
}
l439:
if buffer[position] != rune(':') {
goto l437
}
position++
add(ruleLabel, position438)
}
return true
l437:
position, tokenIndex = position437, tokenIndex437
return false
},
/* 31 SymbolName <- <(([a-z] / [A-Z] / '.' / '_') ([a-z] / [A-Z] / '.' / ([0-9] / [0-9]) / '$' / '_')*)> */
func() bool {
position442, tokenIndex442 := position, tokenIndex
{
position443 := position
{
position444, tokenIndex444 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l445
}
position++
goto l444
l445:
position, tokenIndex = position444, tokenIndex444
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l446
}
position++
goto l444
l446:
position, tokenIndex = position444, tokenIndex444
if buffer[position] != rune('.') {
goto l447
}
position++
goto l444
l447:
position, tokenIndex = position444, tokenIndex444
if buffer[position] != rune('_') {
goto l442
}
position++
}
l444:
l448:
{
position449, tokenIndex449 := position, tokenIndex
{
position450, tokenIndex450 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l451
}
position++
goto l450
l451:
position, tokenIndex = position450, tokenIndex450
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l452
}
position++
goto l450
l452:
position, tokenIndex = position450, tokenIndex450
if buffer[position] != rune('.') {
goto l453
}
position++
goto l450
l453:
position, tokenIndex = position450, tokenIndex450
{
position455, tokenIndex455 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l456
}
position++
goto l455
l456:
position, tokenIndex = position455, tokenIndex455
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l454
}
position++
}
l455:
goto l450
l454:
position, tokenIndex = position450, tokenIndex450
if buffer[position] != rune('$') {
goto l457
}
position++
goto l450
l457:
position, tokenIndex = position450, tokenIndex450
if buffer[position] != rune('_') {
goto l449
}
position++
}
l450:
goto l448
l449:
position, tokenIndex = position449, tokenIndex449
}
add(ruleSymbolName, position443)
}
return true
l442:
position, tokenIndex = position442, tokenIndex442
return false
},
/* 32 LocalSymbol <- <('.' 'L' ([a-z] / [A-Z] / ([a-z] / [A-Z]) / '.' / ([0-9] / [0-9]) / '$' / '_')+)> */
func() bool {
position458, tokenIndex458 := position, tokenIndex
{
position459 := position
if buffer[position] != rune('.') {
goto l458
}
position++
if buffer[position] != rune('L') {
goto l458
}
position++
{
position462, tokenIndex462 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l463
}
position++
goto l462
l463:
position, tokenIndex = position462, tokenIndex462
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l464
}
position++
goto l462
l464:
position, tokenIndex = position462, tokenIndex462
{
position466, tokenIndex466 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l467
}
position++
goto l466
l467:
position, tokenIndex = position466, tokenIndex466
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l465
}
position++
}
l466:
goto l462
l465:
position, tokenIndex = position462, tokenIndex462
if buffer[position] != rune('.') {
goto l468
}
position++
goto l462
l468:
position, tokenIndex = position462, tokenIndex462
{
position470, tokenIndex470 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l471
}
position++
goto l470
l471:
position, tokenIndex = position470, tokenIndex470
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l469
}
position++
}
l470:
goto l462
l469:
position, tokenIndex = position462, tokenIndex462
if buffer[position] != rune('$') {
goto l472
}
position++
goto l462
l472:
position, tokenIndex = position462, tokenIndex462
if buffer[position] != rune('_') {
goto l458
}
position++
}
l462:
l460:
{
position461, tokenIndex461 := position, tokenIndex
{
position473, tokenIndex473 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l474
}
position++
goto l473
l474:
position, tokenIndex = position473, tokenIndex473
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l475
}
position++
goto l473
l475:
position, tokenIndex = position473, tokenIndex473
{
position477, tokenIndex477 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l478
}
position++
goto l477
l478:
position, tokenIndex = position477, tokenIndex477
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l476
}
position++
}
l477:
goto l473
l476:
position, tokenIndex = position473, tokenIndex473
if buffer[position] != rune('.') {
goto l479
}
position++
goto l473
l479:
position, tokenIndex = position473, tokenIndex473
{
position481, tokenIndex481 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l482
}
position++
goto l481
l482:
position, tokenIndex = position481, tokenIndex481
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l480
}
position++
}
l481:
goto l473
l480:
position, tokenIndex = position473, tokenIndex473
if buffer[position] != rune('$') {
goto l483
}
position++
goto l473
l483:
position, tokenIndex = position473, tokenIndex473
if buffer[position] != rune('_') {
goto l461
}
position++
}
l473:
goto l460
l461:
position, tokenIndex = position461, tokenIndex461
}
add(ruleLocalSymbol, position459)
}
return true
l458:
position, tokenIndex = position458, tokenIndex458
return false
},
/* 33 LocalLabel <- <([0-9] ([0-9] / '$')*)> */
func() bool {
position484, tokenIndex484 := position, tokenIndex
{
position485 := position
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l484
}
position++
l486:
{
position487, tokenIndex487 := position, tokenIndex
{
position488, tokenIndex488 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l489
}
position++
goto l488
l489:
position, tokenIndex = position488, tokenIndex488
if buffer[position] != rune('$') {
goto l487
}
position++
}
l488:
goto l486
l487:
position, tokenIndex = position487, tokenIndex487
}
add(ruleLocalLabel, position485)
}
return true
l484:
position, tokenIndex = position484, tokenIndex484
return false
},
/* 34 LocalLabelRef <- <([0-9] ([0-9] / '$')* ('b' / 'f'))> */
func() bool {
position490, tokenIndex490 := position, tokenIndex
{
position491 := position
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l490
}
position++
l492:
{
position493, tokenIndex493 := position, tokenIndex
{
position494, tokenIndex494 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l495
}
position++
goto l494
l495:
position, tokenIndex = position494, tokenIndex494
if buffer[position] != rune('$') {
goto l493
}
position++
}
l494:
goto l492
l493:
position, tokenIndex = position493, tokenIndex493
}
{
position496, tokenIndex496 := position, tokenIndex
if buffer[position] != rune('b') {
goto l497
}
position++
goto l496
l497:
position, tokenIndex = position496, tokenIndex496
if buffer[position] != rune('f') {
goto l490
}
position++
}
l496:
add(ruleLocalLabelRef, position491)
}
return true
l490:
position, tokenIndex = position490, tokenIndex490
return false
},
/* 35 InstructionPrefix <- <(('n' / 'N') ('o' / 'O') ('t' / 'T') ('r' / 'R') ('a' / 'A') ('c' / 'C') ('k' / 'K'))> */
func() bool {
position498, tokenIndex498 := position, tokenIndex
{
position499 := position
{
position500, tokenIndex500 := position, tokenIndex
if buffer[position] != rune('n') {
goto l501
}
position++
goto l500
l501:
position, tokenIndex = position500, tokenIndex500
if buffer[position] != rune('N') {
goto l498
}
position++
}
l500:
{
position502, tokenIndex502 := position, tokenIndex
if buffer[position] != rune('o') {
goto l503
}
position++
goto l502
l503:
position, tokenIndex = position502, tokenIndex502
if buffer[position] != rune('O') {
goto l498
}
position++
}
l502:
{
position504, tokenIndex504 := position, tokenIndex
if buffer[position] != rune('t') {
goto l505
}
position++
goto l504
l505:
position, tokenIndex = position504, tokenIndex504
if buffer[position] != rune('T') {
goto l498
}
position++
}
l504:
{
position506, tokenIndex506 := position, tokenIndex
if buffer[position] != rune('r') {
goto l507
}
position++
goto l506
l507:
position, tokenIndex = position506, tokenIndex506
if buffer[position] != rune('R') {
goto l498
}
position++
}
l506:
{
position508, tokenIndex508 := position, tokenIndex
if buffer[position] != rune('a') {
goto l509
}
position++
goto l508
l509:
position, tokenIndex = position508, tokenIndex508
if buffer[position] != rune('A') {
goto l498
}
position++
}
l508:
{
position510, tokenIndex510 := position, tokenIndex
if buffer[position] != rune('c') {
goto l511
}
position++
goto l510
l511:
position, tokenIndex = position510, tokenIndex510
if buffer[position] != rune('C') {
goto l498
}
position++
}
l510:
{
position512, tokenIndex512 := position, tokenIndex
if buffer[position] != rune('k') {
goto l513
}
position++
goto l512
l513:
position, tokenIndex = position512, tokenIndex512
if buffer[position] != rune('K') {
goto l498
}
position++
}
l512:
add(ruleInstructionPrefix, position499)
}
return true
l498:
position, tokenIndex = position498, tokenIndex498
return false
},
/* 36 Instruction <- <((InstructionPrefix WS)? InstructionName (WS InstructionArg (WS? ',' WS? InstructionArg)*)?)> */
func() bool {
position514, tokenIndex514 := position, tokenIndex
{
position515 := position
{
position516, tokenIndex516 := position, tokenIndex
if !_rules[ruleInstructionPrefix]() {
goto l516
}
if !_rules[ruleWS]() {
goto l516
}
goto l517
l516:
position, tokenIndex = position516, tokenIndex516
}
l517:
if !_rules[ruleInstructionName]() {
goto l514
}
{
position518, tokenIndex518 := position, tokenIndex
if !_rules[ruleWS]() {
goto l518
}
if !_rules[ruleInstructionArg]() {
goto l518
}
l520:
{
position521, tokenIndex521 := position, tokenIndex
{
position522, tokenIndex522 := position, tokenIndex
if !_rules[ruleWS]() {
goto l522
}
goto l523
l522:
position, tokenIndex = position522, tokenIndex522
}
l523:
if buffer[position] != rune(',') {
goto l521
}
position++
{
position524, tokenIndex524 := position, tokenIndex
if !_rules[ruleWS]() {
goto l524
}
goto l525
l524:
position, tokenIndex = position524, tokenIndex524
}
l525:
if !_rules[ruleInstructionArg]() {
goto l521
}
goto l520
l521:
position, tokenIndex = position521, tokenIndex521
}
goto l519
l518:
position, tokenIndex = position518, tokenIndex518
}
l519:
add(ruleInstruction, position515)
}
return true
l514:
position, tokenIndex = position514, tokenIndex514
return false
},
/* 37 InstructionName <- <(([a-z] / [A-Z]) ([a-z] / [A-Z] / '.' / ([0-9] / [0-9]))* ('.' / '+' / '-')?)> */
func() bool {
position526, tokenIndex526 := position, tokenIndex
{
position527 := position
{
position528, tokenIndex528 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l529
}
position++
goto l528
l529:
position, tokenIndex = position528, tokenIndex528
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l526
}
position++
}
l528:
l530:
{
position531, tokenIndex531 := position, tokenIndex
{
position532, tokenIndex532 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l533
}
position++
goto l532
l533:
position, tokenIndex = position532, tokenIndex532
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l534
}
position++
goto l532
l534:
position, tokenIndex = position532, tokenIndex532
if buffer[position] != rune('.') {
goto l535
}
position++
goto l532
l535:
position, tokenIndex = position532, tokenIndex532
{
position536, tokenIndex536 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l537
}
position++
goto l536
l537:
position, tokenIndex = position536, tokenIndex536
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l531
}
position++
}
l536:
}
l532:
goto l530
l531:
position, tokenIndex = position531, tokenIndex531
}
{
position538, tokenIndex538 := position, tokenIndex
{
position540, tokenIndex540 := position, tokenIndex
if buffer[position] != rune('.') {
goto l541
}
position++
goto l540
l541:
position, tokenIndex = position540, tokenIndex540
if buffer[position] != rune('+') {
goto l542
}
position++
goto l540
l542:
position, tokenIndex = position540, tokenIndex540
if buffer[position] != rune('-') {
goto l538
}
position++
}
l540:
goto l539
l538:
position, tokenIndex = position538, tokenIndex538
}
l539:
add(ruleInstructionName, position527)
}
return true
l526:
position, tokenIndex = position526, tokenIndex526
return false
},
/* 38 InstructionArg <- <(IndirectionIndicator? (ARMConstantTweak / RegisterOrConstant / LocalLabelRef / TOCRefHigh / TOCRefLow / GOTLocation / GOTAddress / GOTSymbolOffset / MemoryRef) AVX512Token*)> */
func() bool {
position543, tokenIndex543 := position, tokenIndex
{
position544 := position
{
position545, tokenIndex545 := position, tokenIndex
if !_rules[ruleIndirectionIndicator]() {
goto l545
}
goto l546
l545:
position, tokenIndex = position545, tokenIndex545
}
l546:
{
position547, tokenIndex547 := position, tokenIndex
if !_rules[ruleARMConstantTweak]() {
goto l548
}
goto l547
l548:
position, tokenIndex = position547, tokenIndex547
if !_rules[ruleRegisterOrConstant]() {
goto l549
}
goto l547
l549:
position, tokenIndex = position547, tokenIndex547
if !_rules[ruleLocalLabelRef]() {
goto l550
}
goto l547
l550:
position, tokenIndex = position547, tokenIndex547
if !_rules[ruleTOCRefHigh]() {
goto l551
}
goto l547
l551:
position, tokenIndex = position547, tokenIndex547
if !_rules[ruleTOCRefLow]() {
goto l552
}
goto l547
l552:
position, tokenIndex = position547, tokenIndex547
if !_rules[ruleGOTLocation]() {
goto l553
}
goto l547
l553:
position, tokenIndex = position547, tokenIndex547
if !_rules[ruleGOTAddress]() {
goto l554
}
goto l547
l554:
position, tokenIndex = position547, tokenIndex547
if !_rules[ruleGOTSymbolOffset]() {
goto l555
}
goto l547
l555:
position, tokenIndex = position547, tokenIndex547
if !_rules[ruleMemoryRef]() {
goto l543
}
}
l547:
l556:
{
position557, tokenIndex557 := position, tokenIndex
if !_rules[ruleAVX512Token]() {
goto l557
}
goto l556
l557:
position, tokenIndex = position557, tokenIndex557
}
add(ruleInstructionArg, position544)
}
return true
l543:
position, tokenIndex = position543, tokenIndex543
return false
},
/* 39 GOTLocation <- <('$' '_' 'G' 'L' 'O' 'B' 'A' 'L' '_' 'O' 'F' 'F' 'S' 'E' 'T' '_' 'T' 'A' 'B' 'L' 'E' '_' '-' LocalSymbol)> */
func() bool {
position558, tokenIndex558 := position, tokenIndex
{
position559 := position
if buffer[position] != rune('$') {
goto l558
}
position++
if buffer[position] != rune('_') {
goto l558
}
position++
if buffer[position] != rune('G') {
goto l558
}
position++
if buffer[position] != rune('L') {
goto l558
}
position++
if buffer[position] != rune('O') {
goto l558
}
position++
if buffer[position] != rune('B') {
goto l558
}
position++
if buffer[position] != rune('A') {
goto l558
}
position++
if buffer[position] != rune('L') {
goto l558
}
position++
if buffer[position] != rune('_') {
goto l558
}
position++
if buffer[position] != rune('O') {
goto l558
}
position++
if buffer[position] != rune('F') {
goto l558
}
position++
if buffer[position] != rune('F') {
goto l558
}
position++
if buffer[position] != rune('S') {
goto l558
}
position++
if buffer[position] != rune('E') {
goto l558
}
position++
if buffer[position] != rune('T') {
goto l558
}
position++
if buffer[position] != rune('_') {
goto l558
}
position++
if buffer[position] != rune('T') {
goto l558
}
position++
if buffer[position] != rune('A') {
goto l558
}
position++
if buffer[position] != rune('B') {
goto l558
}
position++
if buffer[position] != rune('L') {
goto l558
}
position++
if buffer[position] != rune('E') {
goto l558
}
position++
if buffer[position] != rune('_') {
goto l558
}
position++
if buffer[position] != rune('-') {
goto l558
}
position++
if !_rules[ruleLocalSymbol]() {
goto l558
}
add(ruleGOTLocation, position559)
}
return true
l558:
position, tokenIndex = position558, tokenIndex558
return false
},
/* 40 GOTAddress <- <('_' 'G' 'L' 'O' 'B' 'A' 'L' '_' 'O' 'F' 'F' 'S' 'E' 'T' '_' 'T' 'A' 'B' 'L' 'E' '_' '(' '%' 'r' 'i' 'p' ')')> */
func() bool {
position560, tokenIndex560 := position, tokenIndex
{
position561 := position
if buffer[position] != rune('_') {
goto l560
}
position++
if buffer[position] != rune('G') {
goto l560
}
position++
if buffer[position] != rune('L') {
goto l560
}
position++
if buffer[position] != rune('O') {
goto l560
}
position++
if buffer[position] != rune('B') {
goto l560
}
position++
if buffer[position] != rune('A') {
goto l560
}
position++
if buffer[position] != rune('L') {
goto l560
}
position++
if buffer[position] != rune('_') {
goto l560
}
position++
if buffer[position] != rune('O') {
goto l560
}
position++
if buffer[position] != rune('F') {
goto l560
}
position++
if buffer[position] != rune('F') {
goto l560
}
position++
if buffer[position] != rune('S') {
goto l560
}
position++
if buffer[position] != rune('E') {
goto l560
}
position++
if buffer[position] != rune('T') {
goto l560
}
position++
if buffer[position] != rune('_') {
goto l560
}
position++
if buffer[position] != rune('T') {
goto l560
}
position++
if buffer[position] != rune('A') {
goto l560
}
position++
if buffer[position] != rune('B') {
goto l560
}
position++
if buffer[position] != rune('L') {
goto l560
}
position++
if buffer[position] != rune('E') {
goto l560
}
position++
if buffer[position] != rune('_') {
goto l560
}
position++
if buffer[position] != rune('(') {
goto l560
}
position++
if buffer[position] != rune('%') {
goto l560
}
position++
if buffer[position] != rune('r') {
goto l560
}
position++
if buffer[position] != rune('i') {
goto l560
}
position++
if buffer[position] != rune('p') {
goto l560
}
position++
if buffer[position] != rune(')') {
goto l560
}
position++
add(ruleGOTAddress, position561)
}
return true
l560:
position, tokenIndex = position560, tokenIndex560
return false
},
/* 41 GOTSymbolOffset <- <(('$' SymbolName ('@' 'G' 'O' 'T') ('O' 'F' 'F')?) / (':' ('g' / 'G') ('o' / 'O') ('t' / 'T') ':' SymbolName))> */
func() bool {
position562, tokenIndex562 := position, tokenIndex
{
position563 := position
{
position564, tokenIndex564 := position, tokenIndex
if buffer[position] != rune('$') {
goto l565
}
position++
if !_rules[ruleSymbolName]() {
goto l565
}
if buffer[position] != rune('@') {
goto l565
}
position++
if buffer[position] != rune('G') {
goto l565
}
position++
if buffer[position] != rune('O') {
goto l565
}
position++
if buffer[position] != rune('T') {
goto l565
}
position++
{
position566, tokenIndex566 := position, tokenIndex
if buffer[position] != rune('O') {
goto l566
}
position++
if buffer[position] != rune('F') {
goto l566
}
position++
if buffer[position] != rune('F') {
goto l566
}
position++
goto l567
l566:
position, tokenIndex = position566, tokenIndex566
}
l567:
goto l564
l565:
position, tokenIndex = position564, tokenIndex564
if buffer[position] != rune(':') {
goto l562
}
position++
{
position568, tokenIndex568 := position, tokenIndex
if buffer[position] != rune('g') {
goto l569
}
position++
goto l568
l569:
position, tokenIndex = position568, tokenIndex568
if buffer[position] != rune('G') {
goto l562
}
position++
}
l568:
{
position570, tokenIndex570 := position, tokenIndex
if buffer[position] != rune('o') {
goto l571
}
position++
goto l570
l571:
position, tokenIndex = position570, tokenIndex570
if buffer[position] != rune('O') {
goto l562
}
position++
}
l570:
{
position572, tokenIndex572 := position, tokenIndex
if buffer[position] != rune('t') {
goto l573
}
position++
goto l572
l573:
position, tokenIndex = position572, tokenIndex572
if buffer[position] != rune('T') {
goto l562
}
position++
}
l572:
if buffer[position] != rune(':') {
goto l562
}
position++
if !_rules[ruleSymbolName]() {
goto l562
}
}
l564:
add(ruleGOTSymbolOffset, position563)
}
return true
l562:
position, tokenIndex = position562, tokenIndex562
return false
},
/* 42 AVX512Token <- <(WS? '{' '%'? ([0-9] / [a-z])* '}')> */
func() bool {
position574, tokenIndex574 := position, tokenIndex
{
position575 := position
{
position576, tokenIndex576 := position, tokenIndex
if !_rules[ruleWS]() {
goto l576
}
goto l577
l576:
position, tokenIndex = position576, tokenIndex576
}
l577:
if buffer[position] != rune('{') {
goto l574
}
position++
{
position578, tokenIndex578 := position, tokenIndex
if buffer[position] != rune('%') {
goto l578
}
position++
goto l579
l578:
position, tokenIndex = position578, tokenIndex578
}
l579:
l580:
{
position581, tokenIndex581 := position, tokenIndex
{
position582, tokenIndex582 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l583
}
position++
goto l582
l583:
position, tokenIndex = position582, tokenIndex582
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l581
}
position++
}
l582:
goto l580
l581:
position, tokenIndex = position581, tokenIndex581
}
if buffer[position] != rune('}') {
goto l574
}
position++
add(ruleAVX512Token, position575)
}
return true
l574:
position, tokenIndex = position574, tokenIndex574
return false
},
/* 43 TOCRefHigh <- <('.' 'T' 'O' 'C' '.' '-' (('0' 'b') / ('.' 'L' ([a-z] / [A-Z] / '_' / [0-9])+)) ('@' ('h' / 'H') ('a' / 'A')))> */
func() bool {
position584, tokenIndex584 := position, tokenIndex
{
position585 := position
if buffer[position] != rune('.') {
goto l584
}
position++
if buffer[position] != rune('T') {
goto l584
}
position++
if buffer[position] != rune('O') {
goto l584
}
position++
if buffer[position] != rune('C') {
goto l584
}
position++
if buffer[position] != rune('.') {
goto l584
}
position++
if buffer[position] != rune('-') {
goto l584
}
position++
{
position586, tokenIndex586 := position, tokenIndex
if buffer[position] != rune('0') {
goto l587
}
position++
if buffer[position] != rune('b') {
goto l587
}
position++
goto l586
l587:
position, tokenIndex = position586, tokenIndex586
if buffer[position] != rune('.') {
goto l584
}
position++
if buffer[position] != rune('L') {
goto l584
}
position++
{
position590, tokenIndex590 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l591
}
position++
goto l590
l591:
position, tokenIndex = position590, tokenIndex590
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l592
}
position++
goto l590
l592:
position, tokenIndex = position590, tokenIndex590
if buffer[position] != rune('_') {
goto l593
}
position++
goto l590
l593:
position, tokenIndex = position590, tokenIndex590
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l584
}
position++
}
l590:
l588:
{
position589, tokenIndex589 := position, tokenIndex
{
position594, tokenIndex594 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l595
}
position++
goto l594
l595:
position, tokenIndex = position594, tokenIndex594
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l596
}
position++
goto l594
l596:
position, tokenIndex = position594, tokenIndex594
if buffer[position] != rune('_') {
goto l597
}
position++
goto l594
l597:
position, tokenIndex = position594, tokenIndex594
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l589
}
position++
}
l594:
goto l588
l589:
position, tokenIndex = position589, tokenIndex589
}
}
l586:
if buffer[position] != rune('@') {
goto l584
}
position++
{
position598, tokenIndex598 := position, tokenIndex
if buffer[position] != rune('h') {
goto l599
}
position++
goto l598
l599:
position, tokenIndex = position598, tokenIndex598
if buffer[position] != rune('H') {
goto l584
}
position++
}
l598:
{
position600, tokenIndex600 := position, tokenIndex
if buffer[position] != rune('a') {
goto l601
}
position++
goto l600
l601:
position, tokenIndex = position600, tokenIndex600
if buffer[position] != rune('A') {
goto l584
}
position++
}
l600:
add(ruleTOCRefHigh, position585)
}
return true
l584:
position, tokenIndex = position584, tokenIndex584
return false
},
/* 44 TOCRefLow <- <('.' 'T' 'O' 'C' '.' '-' (('0' 'b') / ('.' 'L' ([a-z] / [A-Z] / '_' / [0-9])+)) ('@' ('l' / 'L')))> */
func() bool {
position602, tokenIndex602 := position, tokenIndex
{
position603 := position
if buffer[position] != rune('.') {
goto l602
}
position++
if buffer[position] != rune('T') {
goto l602
}
position++
if buffer[position] != rune('O') {
goto l602
}
position++
if buffer[position] != rune('C') {
goto l602
}
position++
if buffer[position] != rune('.') {
goto l602
}
position++
if buffer[position] != rune('-') {
goto l602
}
position++
{
position604, tokenIndex604 := position, tokenIndex
if buffer[position] != rune('0') {
goto l605
}
position++
if buffer[position] != rune('b') {
goto l605
}
position++
goto l604
l605:
position, tokenIndex = position604, tokenIndex604
if buffer[position] != rune('.') {
goto l602
}
position++
if buffer[position] != rune('L') {
goto l602
}
position++
{
position608, tokenIndex608 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l609
}
position++
goto l608
l609:
position, tokenIndex = position608, tokenIndex608
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l610
}
position++
goto l608
l610:
position, tokenIndex = position608, tokenIndex608
if buffer[position] != rune('_') {
goto l611
}
position++
goto l608
l611:
position, tokenIndex = position608, tokenIndex608
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l602
}
position++
}
l608:
l606:
{
position607, tokenIndex607 := position, tokenIndex
{
position612, tokenIndex612 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l613
}
position++
goto l612
l613:
position, tokenIndex = position612, tokenIndex612
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l614
}
position++
goto l612
l614:
position, tokenIndex = position612, tokenIndex612
if buffer[position] != rune('_') {
goto l615
}
position++
goto l612
l615:
position, tokenIndex = position612, tokenIndex612
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l607
}
position++
}
l612:
goto l606
l607:
position, tokenIndex = position607, tokenIndex607
}
}
l604:
if buffer[position] != rune('@') {
goto l602
}
position++
{
position616, tokenIndex616 := position, tokenIndex
if buffer[position] != rune('l') {
goto l617
}
position++
goto l616
l617:
position, tokenIndex = position616, tokenIndex616
if buffer[position] != rune('L') {
goto l602
}
position++
}
l616:
add(ruleTOCRefLow, position603)
}
return true
l602:
position, tokenIndex = position602, tokenIndex602
return false
},
/* 45 IndirectionIndicator <- <'*'> */
func() bool {
position618, tokenIndex618 := position, tokenIndex
{
position619 := position
if buffer[position] != rune('*') {
goto l618
}
position++
add(ruleIndirectionIndicator, position619)
}
return true
l618:
position, tokenIndex = position618, tokenIndex618
return false
},
/* 46 Float <- <([0-9]+ '.' [0-9]*)> */
func() bool {
position620, tokenIndex620 := position, tokenIndex
{
position621 := position
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l620
}
position++
l622:
{
position623, tokenIndex623 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l623
}
position++
goto l622
l623:
position, tokenIndex = position623, tokenIndex623
}
if buffer[position] != rune('.') {
goto l620
}
position++
l624:
{
position625, tokenIndex625 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l625
}
position++
goto l624
l625:
position, tokenIndex = position625, tokenIndex625
}
add(ruleFloat, position621)
}
return true
l620:
position, tokenIndex = position620, tokenIndex620
return false
},
/* 47 RegisterOrConstant <- <((('%' ([a-z] / [A-Z]) ([a-z] / [A-Z] / ([0-9] / [0-9]))*) / ('$'? ((Offset Offset) / Offset)) / ('#' Float) / ('#' Offset ('*' [0-9]+ ('-' [0-9] [0-9]*)?)?) / ('#' '~'? '(' [0-9] WS? ('<' '<') WS? [0-9] ')') / ARMRegister) !('f' / 'b' / ':' / '(' / '+' / '-'))> */
func() bool {
position626, tokenIndex626 := position, tokenIndex
{
position627 := position
{
position628, tokenIndex628 := position, tokenIndex
if buffer[position] != rune('%') {
goto l629
}
position++
{
position630, tokenIndex630 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l631
}
position++
goto l630
l631:
position, tokenIndex = position630, tokenIndex630
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l629
}
position++
}
l630:
l632:
{
position633, tokenIndex633 := position, tokenIndex
{
position634, tokenIndex634 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l635
}
position++
goto l634
l635:
position, tokenIndex = position634, tokenIndex634
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l636
}
position++
goto l634
l636:
position, tokenIndex = position634, tokenIndex634
{
position637, tokenIndex637 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l638
}
position++
goto l637
l638:
position, tokenIndex = position637, tokenIndex637
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l633
}
position++
}
l637:
}
l634:
goto l632
l633:
position, tokenIndex = position633, tokenIndex633
}
goto l628
l629:
position, tokenIndex = position628, tokenIndex628
{
position640, tokenIndex640 := position, tokenIndex
if buffer[position] != rune('$') {
goto l640
}
position++
goto l641
l640:
position, tokenIndex = position640, tokenIndex640
}
l641:
{
position642, tokenIndex642 := position, tokenIndex
if !_rules[ruleOffset]() {
goto l643
}
if !_rules[ruleOffset]() {
goto l643
}
goto l642
l643:
position, tokenIndex = position642, tokenIndex642
if !_rules[ruleOffset]() {
goto l639
}
}
l642:
goto l628
l639:
position, tokenIndex = position628, tokenIndex628
if buffer[position] != rune('#') {
goto l644
}
position++
if !_rules[ruleFloat]() {
goto l644
}
goto l628
l644:
position, tokenIndex = position628, tokenIndex628
if buffer[position] != rune('#') {
goto l645
}
position++
if !_rules[ruleOffset]() {
goto l645
}
{
position646, tokenIndex646 := position, tokenIndex
if buffer[position] != rune('*') {
goto l646
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l646
}
position++
l648:
{
position649, tokenIndex649 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l649
}
position++
goto l648
l649:
position, tokenIndex = position649, tokenIndex649
}
{
position650, tokenIndex650 := position, tokenIndex
if buffer[position] != rune('-') {
goto l650
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l650
}
position++
l652:
{
position653, tokenIndex653 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l653
}
position++
goto l652
l653:
position, tokenIndex = position653, tokenIndex653
}
goto l651
l650:
position, tokenIndex = position650, tokenIndex650
}
l651:
goto l647
l646:
position, tokenIndex = position646, tokenIndex646
}
l647:
goto l628
l645:
position, tokenIndex = position628, tokenIndex628
if buffer[position] != rune('#') {
goto l654
}
position++
{
position655, tokenIndex655 := position, tokenIndex
if buffer[position] != rune('~') {
goto l655
}
position++
goto l656
l655:
position, tokenIndex = position655, tokenIndex655
}
l656:
if buffer[position] != rune('(') {
goto l654
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l654
}
position++
{
position657, tokenIndex657 := position, tokenIndex
if !_rules[ruleWS]() {
goto l657
}
goto l658
l657:
position, tokenIndex = position657, tokenIndex657
}
l658:
if buffer[position] != rune('<') {
goto l654
}
position++
if buffer[position] != rune('<') {
goto l654
}
position++
{
position659, tokenIndex659 := position, tokenIndex
if !_rules[ruleWS]() {
goto l659
}
goto l660
l659:
position, tokenIndex = position659, tokenIndex659
}
l660:
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l654
}
position++
if buffer[position] != rune(')') {
goto l654
}
position++
goto l628
l654:
position, tokenIndex = position628, tokenIndex628
if !_rules[ruleARMRegister]() {
goto l626
}
}
l628:
{
position661, tokenIndex661 := position, tokenIndex
{
position662, tokenIndex662 := position, tokenIndex
if buffer[position] != rune('f') {
goto l663
}
position++
goto l662
l663:
position, tokenIndex = position662, tokenIndex662
if buffer[position] != rune('b') {
goto l664
}
position++
goto l662
l664:
position, tokenIndex = position662, tokenIndex662
if buffer[position] != rune(':') {
goto l665
}
position++
goto l662
l665:
position, tokenIndex = position662, tokenIndex662
if buffer[position] != rune('(') {
goto l666
}
position++
goto l662
l666:
position, tokenIndex = position662, tokenIndex662
if buffer[position] != rune('+') {
goto l667
}
position++
goto l662
l667:
position, tokenIndex = position662, tokenIndex662
if buffer[position] != rune('-') {
goto l661
}
position++
}
l662:
goto l626
l661:
position, tokenIndex = position661, tokenIndex661
}
add(ruleRegisterOrConstant, position627)
}
return true
l626:
position, tokenIndex = position626, tokenIndex626
return false
},
/* 48 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')) / (('m' / 'M') ('s' / 'S') ('l' / 'L'))) (WS '#' Offset)?) / (('m' / 'M') ('u' / 'U') ('l' / 'L') ' ' ('v' / 'V') ('l' / 'L')) / (('m' / 'M') ('u' / 'U') ('l' / 'L') ' ' '#' [0-9] [0-9]?))> */
func() bool {
position668, tokenIndex668 := position, tokenIndex
{
position669 := position
{
position670, tokenIndex670 := position, tokenIndex
{
position672, tokenIndex672 := position, tokenIndex
{
position674, tokenIndex674 := position, tokenIndex
if buffer[position] != rune('u') {
goto l675
}
position++
goto l674
l675:
position, tokenIndex = position674, tokenIndex674
if buffer[position] != rune('s') {
goto l673
}
position++
}
l674:
{
position676, tokenIndex676 := position, tokenIndex
if buffer[position] != rune('x') {
goto l677
}
position++
goto l676
l677:
position, tokenIndex = position676, tokenIndex676
if buffer[position] != rune('X') {
goto l673
}
position++
}
l676:
{
position678, tokenIndex678 := position, tokenIndex
if buffer[position] != rune('t') {
goto l679
}
position++
goto l678
l679:
position, tokenIndex = position678, tokenIndex678
if buffer[position] != rune('T') {
goto l673
}
position++
}
l678:
{
position680, tokenIndex680 := position, tokenIndex
if buffer[position] != rune('x') {
goto l681
}
position++
goto l680
l681:
position, tokenIndex = position680, tokenIndex680
if buffer[position] != rune('w') {
goto l682
}
position++
goto l680
l682:
position, tokenIndex = position680, tokenIndex680
if buffer[position] != rune('h') {
goto l683
}
position++
goto l680
l683:
position, tokenIndex = position680, tokenIndex680
if buffer[position] != rune('b') {
goto l673
}
position++
}
l680:
goto l672
l673:
position, tokenIndex = position672, tokenIndex672
{
position685, tokenIndex685 := position, tokenIndex
if buffer[position] != rune('l') {
goto l686
}
position++
goto l685
l686:
position, tokenIndex = position685, tokenIndex685
if buffer[position] != rune('L') {
goto l684
}
position++
}
l685:
{
position687, tokenIndex687 := position, tokenIndex
if buffer[position] != rune('s') {
goto l688
}
position++
goto l687
l688:
position, tokenIndex = position687, tokenIndex687
if buffer[position] != rune('S') {
goto l684
}
position++
}
l687:
{
position689, tokenIndex689 := position, tokenIndex
if buffer[position] != rune('l') {
goto l690
}
position++
goto l689
l690:
position, tokenIndex = position689, tokenIndex689
if buffer[position] != rune('L') {
goto l684
}
position++
}
l689:
goto l672
l684:
position, tokenIndex = position672, tokenIndex672
{
position692, tokenIndex692 := position, tokenIndex
if buffer[position] != rune('l') {
goto l693
}
position++
goto l692
l693:
position, tokenIndex = position692, tokenIndex692
if buffer[position] != rune('L') {
goto l691
}
position++
}
l692:
{
position694, tokenIndex694 := position, tokenIndex
if buffer[position] != rune('s') {
goto l695
}
position++
goto l694
l695:
position, tokenIndex = position694, tokenIndex694
if buffer[position] != rune('S') {
goto l691
}
position++
}
l694:
{
position696, tokenIndex696 := position, tokenIndex
if buffer[position] != rune('r') {
goto l697
}
position++
goto l696
l697:
position, tokenIndex = position696, tokenIndex696
if buffer[position] != rune('R') {
goto l691
}
position++
}
l696:
goto l672
l691:
position, tokenIndex = position672, tokenIndex672
{
position699, tokenIndex699 := position, tokenIndex
if buffer[position] != rune('r') {
goto l700
}
position++
goto l699
l700:
position, tokenIndex = position699, tokenIndex699
if buffer[position] != rune('R') {
goto l698
}
position++
}
l699:
{
position701, tokenIndex701 := position, tokenIndex
if buffer[position] != rune('o') {
goto l702
}
position++
goto l701
l702:
position, tokenIndex = position701, tokenIndex701
if buffer[position] != rune('O') {
goto l698
}
position++
}
l701:
{
position703, tokenIndex703 := position, tokenIndex
if buffer[position] != rune('r') {
goto l704
}
position++
goto l703
l704:
position, tokenIndex = position703, tokenIndex703
if buffer[position] != rune('R') {
goto l698
}
position++
}
l703:
goto l672
l698:
position, tokenIndex = position672, tokenIndex672
{
position706, tokenIndex706 := position, tokenIndex
if buffer[position] != rune('a') {
goto l707
}
position++
goto l706
l707:
position, tokenIndex = position706, tokenIndex706
if buffer[position] != rune('A') {
goto l705
}
position++
}
l706:
{
position708, tokenIndex708 := position, tokenIndex
if buffer[position] != rune('s') {
goto l709
}
position++
goto l708
l709:
position, tokenIndex = position708, tokenIndex708
if buffer[position] != rune('S') {
goto l705
}
position++
}
l708:
{
position710, tokenIndex710 := position, tokenIndex
if buffer[position] != rune('r') {
goto l711
}
position++
goto l710
l711:
position, tokenIndex = position710, tokenIndex710
if buffer[position] != rune('R') {
goto l705
}
position++
}
l710:
goto l672
l705:
position, tokenIndex = position672, tokenIndex672
{
position712, tokenIndex712 := position, tokenIndex
if buffer[position] != rune('m') {
goto l713
}
position++
goto l712
l713:
position, tokenIndex = position712, tokenIndex712
if buffer[position] != rune('M') {
goto l671
}
position++
}
l712:
{
position714, tokenIndex714 := position, tokenIndex
if buffer[position] != rune('s') {
goto l715
}
position++
goto l714
l715:
position, tokenIndex = position714, tokenIndex714
if buffer[position] != rune('S') {
goto l671
}
position++
}
l714:
{
position716, tokenIndex716 := position, tokenIndex
if buffer[position] != rune('l') {
goto l717
}
position++
goto l716
l717:
position, tokenIndex = position716, tokenIndex716
if buffer[position] != rune('L') {
goto l671
}
position++
}
l716:
}
l672:
{
position718, tokenIndex718 := position, tokenIndex
if !_rules[ruleWS]() {
goto l718
}
if buffer[position] != rune('#') {
goto l718
}
position++
if !_rules[ruleOffset]() {
goto l718
}
goto l719
l718:
position, tokenIndex = position718, tokenIndex718
}
l719:
goto l670
l671:
position, tokenIndex = position670, tokenIndex670
{
position721, tokenIndex721 := position, tokenIndex
if buffer[position] != rune('m') {
goto l722
}
position++
goto l721
l722:
position, tokenIndex = position721, tokenIndex721
if buffer[position] != rune('M') {
goto l720
}
position++
}
l721:
{
position723, tokenIndex723 := position, tokenIndex
if buffer[position] != rune('u') {
goto l724
}
position++
goto l723
l724:
position, tokenIndex = position723, tokenIndex723
if buffer[position] != rune('U') {
goto l720
}
position++
}
l723:
{
position725, tokenIndex725 := position, tokenIndex
if buffer[position] != rune('l') {
goto l726
}
position++
goto l725
l726:
position, tokenIndex = position725, tokenIndex725
if buffer[position] != rune('L') {
goto l720
}
position++
}
l725:
if buffer[position] != rune(' ') {
goto l720
}
position++
{
position727, tokenIndex727 := position, tokenIndex
if buffer[position] != rune('v') {
goto l728
}
position++
goto l727
l728:
position, tokenIndex = position727, tokenIndex727
if buffer[position] != rune('V') {
goto l720
}
position++
}
l727:
{
position729, tokenIndex729 := position, tokenIndex
if buffer[position] != rune('l') {
goto l730
}
position++
goto l729
l730:
position, tokenIndex = position729, tokenIndex729
if buffer[position] != rune('L') {
goto l720
}
position++
}
l729:
goto l670
l720:
position, tokenIndex = position670, tokenIndex670
{
position731, tokenIndex731 := position, tokenIndex
if buffer[position] != rune('m') {
goto l732
}
position++
goto l731
l732:
position, tokenIndex = position731, tokenIndex731
if buffer[position] != rune('M') {
goto l668
}
position++
}
l731:
{
position733, tokenIndex733 := position, tokenIndex
if buffer[position] != rune('u') {
goto l734
}
position++
goto l733
l734:
position, tokenIndex = position733, tokenIndex733
if buffer[position] != rune('U') {
goto l668
}
position++
}
l733:
{
position735, tokenIndex735 := position, tokenIndex
if buffer[position] != rune('l') {
goto l736
}
position++
goto l735
l736:
position, tokenIndex = position735, tokenIndex735
if buffer[position] != rune('L') {
goto l668
}
position++
}
l735:
if buffer[position] != rune(' ') {
goto l668
}
position++
if buffer[position] != rune('#') {
goto l668
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l668
}
position++
{
position737, tokenIndex737 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l737
}
position++
goto l738
l737:
position, tokenIndex = position737, tokenIndex737
}
l738:
}
l670:
add(ruleARMConstantTweak, position669)
}
return true
l668:
position, tokenIndex = position668, tokenIndex668
return false
},
/* 49 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')) / SVE2PredicateRegister / ARMVectorRegister / SVE2SpecialValue / ('{' WS? ARMVectorRegister (',' WS? ARMVectorRegister)* WS? '}' ('[' [0-9] [0-9]? ']')?))> */
func() bool {
position739, tokenIndex739 := position, tokenIndex
{
position740 := position
{
position741, tokenIndex741 := position, tokenIndex
{
position743, tokenIndex743 := position, tokenIndex
if buffer[position] != rune('s') {
goto l744
}
position++
goto l743
l744:
position, tokenIndex = position743, tokenIndex743
if buffer[position] != rune('S') {
goto l742
}
position++
}
l743:
{
position745, tokenIndex745 := position, tokenIndex
if buffer[position] != rune('p') {
goto l746
}
position++
goto l745
l746:
position, tokenIndex = position745, tokenIndex745
if buffer[position] != rune('P') {
goto l742
}
position++
}
l745:
goto l741
l742:
position, tokenIndex = position741, tokenIndex741
{
position748, tokenIndex748 := position, tokenIndex
if buffer[position] != rune('x') {
goto l749
}
position++
goto l748
l749:
position, tokenIndex = position748, tokenIndex748
if buffer[position] != rune('w') {
goto l750
}
position++
goto l748
l750:
position, tokenIndex = position748, tokenIndex748
if buffer[position] != rune('d') {
goto l751
}
position++
goto l748
l751:
position, tokenIndex = position748, tokenIndex748
if buffer[position] != rune('q') {
goto l752
}
position++
goto l748
l752:
position, tokenIndex = position748, tokenIndex748
if buffer[position] != rune('s') {
goto l753
}
position++
goto l748
l753:
position, tokenIndex = position748, tokenIndex748
if buffer[position] != rune('h') {
goto l754
}
position++
goto l748
l754:
position, tokenIndex = position748, tokenIndex748
if buffer[position] != rune('b') {
goto l747
}
position++
}
l748:
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l747
}
position++
{
position755, tokenIndex755 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l755
}
position++
goto l756
l755:
position, tokenIndex = position755, tokenIndex755
}
l756:
goto l741
l747:
position, tokenIndex = position741, tokenIndex741
{
position758, tokenIndex758 := position, tokenIndex
if buffer[position] != rune('x') {
goto l759
}
position++
goto l758
l759:
position, tokenIndex = position758, tokenIndex758
if buffer[position] != rune('X') {
goto l757
}
position++
}
l758:
{
position760, tokenIndex760 := position, tokenIndex
if buffer[position] != rune('z') {
goto l761
}
position++
goto l760
l761:
position, tokenIndex = position760, tokenIndex760
if buffer[position] != rune('Z') {
goto l757
}
position++
}
l760:
{
position762, tokenIndex762 := position, tokenIndex
if buffer[position] != rune('r') {
goto l763
}
position++
goto l762
l763:
position, tokenIndex = position762, tokenIndex762
if buffer[position] != rune('R') {
goto l757
}
position++
}
l762:
goto l741
l757:
position, tokenIndex = position741, tokenIndex741
{
position765, tokenIndex765 := position, tokenIndex
if buffer[position] != rune('w') {
goto l766
}
position++
goto l765
l766:
position, tokenIndex = position765, tokenIndex765
if buffer[position] != rune('W') {
goto l764
}
position++
}
l765:
{
position767, tokenIndex767 := position, tokenIndex
if buffer[position] != rune('z') {
goto l768
}
position++
goto l767
l768:
position, tokenIndex = position767, tokenIndex767
if buffer[position] != rune('Z') {
goto l764
}
position++
}
l767:
{
position769, tokenIndex769 := position, tokenIndex
if buffer[position] != rune('r') {
goto l770
}
position++
goto l769
l770:
position, tokenIndex = position769, tokenIndex769
if buffer[position] != rune('R') {
goto l764
}
position++
}
l769:
goto l741
l764:
position, tokenIndex = position741, tokenIndex741
{
position772, tokenIndex772 := position, tokenIndex
if buffer[position] != rune('n') {
goto l773
}
position++
goto l772
l773:
position, tokenIndex = position772, tokenIndex772
if buffer[position] != rune('N') {
goto l771
}
position++
}
l772:
{
position774, tokenIndex774 := position, tokenIndex
if buffer[position] != rune('z') {
goto l775
}
position++
goto l774
l775:
position, tokenIndex = position774, tokenIndex774
if buffer[position] != rune('Z') {
goto l771
}
position++
}
l774:
{
position776, tokenIndex776 := position, tokenIndex
if buffer[position] != rune('c') {
goto l777
}
position++
goto l776
l777:
position, tokenIndex = position776, tokenIndex776
if buffer[position] != rune('C') {
goto l771
}
position++
}
l776:
{
position778, tokenIndex778 := position, tokenIndex
if buffer[position] != rune('v') {
goto l779
}
position++
goto l778
l779:
position, tokenIndex = position778, tokenIndex778
if buffer[position] != rune('V') {
goto l771
}
position++
}
l778:
goto l741
l771:
position, tokenIndex = position741, tokenIndex741
if !_rules[ruleSVE2PredicateRegister]() {
goto l780
}
goto l741
l780:
position, tokenIndex = position741, tokenIndex741
if !_rules[ruleARMVectorRegister]() {
goto l781
}
goto l741
l781:
position, tokenIndex = position741, tokenIndex741
if !_rules[ruleSVE2SpecialValue]() {
goto l782
}
goto l741
l782:
position, tokenIndex = position741, tokenIndex741
if buffer[position] != rune('{') {
goto l739
}
position++
{
position783, tokenIndex783 := position, tokenIndex
if !_rules[ruleWS]() {
goto l783
}
goto l784
l783:
position, tokenIndex = position783, tokenIndex783
}
l784:
if !_rules[ruleARMVectorRegister]() {
goto l739
}
l785:
{
position786, tokenIndex786 := position, tokenIndex
if buffer[position] != rune(',') {
goto l786
}
position++
{
position787, tokenIndex787 := position, tokenIndex
if !_rules[ruleWS]() {
goto l787
}
goto l788
l787:
position, tokenIndex = position787, tokenIndex787
}
l788:
if !_rules[ruleARMVectorRegister]() {
goto l786
}
goto l785
l786:
position, tokenIndex = position786, tokenIndex786
}
{
position789, tokenIndex789 := position, tokenIndex
if !_rules[ruleWS]() {
goto l789
}
goto l790
l789:
position, tokenIndex = position789, tokenIndex789
}
l790:
if buffer[position] != rune('}') {
goto l739
}
position++
{
position791, tokenIndex791 := position, tokenIndex
if buffer[position] != rune('[') {
goto l791
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l791
}
position++
{
position793, tokenIndex793 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l793
}
position++
goto l794
l793:
position, tokenIndex = position793, tokenIndex793
}
l794:
if buffer[position] != rune(']') {
goto l791
}
position++
goto l792
l791:
position, tokenIndex = position791, tokenIndex791
}
l792:
}
l741:
add(ruleARMRegister, position740)
}
return true
l739:
position, tokenIndex = position739, tokenIndex739
return false
},
/* 50 ARMVectorRegister <- <(('p' / 'v' / 'z') [0-9] [0-9]? !([0-9] / [0-9] / ([a-z] / [A-Z]) / '_') ('.' [0-9]* ('b' / 's' / 'd' / 'h' / 'q') ('[' [0-9] [0-9]? ']')?)?)> */
func() bool {
position795, tokenIndex795 := position, tokenIndex
{
position796 := position
{
position797, tokenIndex797 := position, tokenIndex
if buffer[position] != rune('p') {
goto l798
}
position++
goto l797
l798:
position, tokenIndex = position797, tokenIndex797
if buffer[position] != rune('v') {
goto l799
}
position++
goto l797
l799:
position, tokenIndex = position797, tokenIndex797
if buffer[position] != rune('z') {
goto l795
}
position++
}
l797:
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l795
}
position++
{
position800, tokenIndex800 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l800
}
position++
goto l801
l800:
position, tokenIndex = position800, tokenIndex800
}
l801:
{
position802, tokenIndex802 := 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
{
position807, tokenIndex807 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l808
}
position++
goto l807
l808:
position, tokenIndex = position807, tokenIndex807
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l806
}
position++
}
l807:
goto l803
l806:
position, tokenIndex = position803, tokenIndex803
if buffer[position] != rune('_') {
goto l802
}
position++
}
l803:
goto l795
l802:
position, tokenIndex = position802, tokenIndex802
}
{
position809, tokenIndex809 := position, tokenIndex
if buffer[position] != rune('.') {
goto l809
}
position++
l811:
{
position812, tokenIndex812 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l812
}
position++
goto l811
l812:
position, tokenIndex = position812, tokenIndex812
}
{
position813, tokenIndex813 := position, tokenIndex
if buffer[position] != rune('b') {
goto l814
}
position++
goto l813
l814:
position, tokenIndex = position813, tokenIndex813
if buffer[position] != rune('s') {
goto l815
}
position++
goto l813
l815:
position, tokenIndex = position813, tokenIndex813
if buffer[position] != rune('d') {
goto l816
}
position++
goto l813
l816:
position, tokenIndex = position813, tokenIndex813
if buffer[position] != rune('h') {
goto l817
}
position++
goto l813
l817:
position, tokenIndex = position813, tokenIndex813
if buffer[position] != rune('q') {
goto l809
}
position++
}
l813:
{
position818, tokenIndex818 := position, tokenIndex
if buffer[position] != rune('[') {
goto l818
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l818
}
position++
{
position820, tokenIndex820 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l820
}
position++
goto l821
l820:
position, tokenIndex = position820, tokenIndex820
}
l821:
if buffer[position] != rune(']') {
goto l818
}
position++
goto l819
l818:
position, tokenIndex = position818, tokenIndex818
}
l819:
goto l810
l809:
position, tokenIndex = position809, tokenIndex809
}
l810:
add(ruleARMVectorRegister, position796)
}
return true
l795:
position, tokenIndex = position795, tokenIndex795
return false
},
/* 51 SVE2PredicateRegister <- <(('p' / 'P') [0-9] [0-9]? '/' ('m' / 'M' / ('z' / 'Z')))> */
func() bool {
position822, tokenIndex822 := position, tokenIndex
{
position823 := position
{
position824, tokenIndex824 := position, tokenIndex
if buffer[position] != rune('p') {
goto l825
}
position++
goto l824
l825:
position, tokenIndex = position824, tokenIndex824
if buffer[position] != rune('P') {
goto l822
}
position++
}
l824:
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l822
}
position++
{
position826, tokenIndex826 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l826
}
position++
goto l827
l826:
position, tokenIndex = position826, tokenIndex826
}
l827:
if buffer[position] != rune('/') {
goto l822
}
position++
{
position828, tokenIndex828 := position, tokenIndex
if buffer[position] != rune('m') {
goto l829
}
position++
goto l828
l829:
position, tokenIndex = position828, tokenIndex828
if buffer[position] != rune('M') {
goto l830
}
position++
goto l828
l830:
position, tokenIndex = position828, tokenIndex828
{
position831, tokenIndex831 := position, tokenIndex
if buffer[position] != rune('z') {
goto l832
}
position++
goto l831
l832:
position, tokenIndex = position831, tokenIndex831
if buffer[position] != rune('Z') {
goto l822
}
position++
}
l831:
}
l828:
add(ruleSVE2PredicateRegister, position823)
}
return true
l822:
position, tokenIndex = position822, tokenIndex822
return false
},
/* 52 SVE2SpecialValue <- <(((('p' / 'P') ('o' / 'O') ('w' / 'W') '2') / (('v' / 'V') ('l' / 'L') ('1' / '2' / '3' / '4' / '5' / '6' / '7' / '8') ![0-9]) / (('v' / 'V') ('l' / 'L') '1' '6') / (('v' / 'V') ('l' / 'L') '3' '2') / (('v' / 'V') ('l' / 'L') '6' '4') / (('v' / 'V') ('l' / 'L') '1' '2' '8') / (('v' / 'V') ('l' / 'L') '2' '5' '6') / (('m' / 'M') ('u' / 'U') ('l' / 'L') '3') / (('m' / 'M') ('u' / 'U') ('l' / 'L') '4') / (('a' / 'A') ('l' / 'L') ('l' / 'L'))) !([0-9] / [0-9] / ([a-z] / [A-Z]) / '_'))> */
func() bool {
position833, tokenIndex833 := position, tokenIndex
{
position834 := position
{
position835, tokenIndex835 := position, tokenIndex
{
position837, tokenIndex837 := position, tokenIndex
if buffer[position] != rune('p') {
goto l838
}
position++
goto l837
l838:
position, tokenIndex = position837, tokenIndex837
if buffer[position] != rune('P') {
goto l836
}
position++
}
l837:
{
position839, tokenIndex839 := position, tokenIndex
if buffer[position] != rune('o') {
goto l840
}
position++
goto l839
l840:
position, tokenIndex = position839, tokenIndex839
if buffer[position] != rune('O') {
goto l836
}
position++
}
l839:
{
position841, tokenIndex841 := position, tokenIndex
if buffer[position] != rune('w') {
goto l842
}
position++
goto l841
l842:
position, tokenIndex = position841, tokenIndex841
if buffer[position] != rune('W') {
goto l836
}
position++
}
l841:
if buffer[position] != rune('2') {
goto l836
}
position++
goto l835
l836:
position, tokenIndex = position835, tokenIndex835
{
position844, tokenIndex844 := position, tokenIndex
if buffer[position] != rune('v') {
goto l845
}
position++
goto l844
l845:
position, tokenIndex = position844, tokenIndex844
if buffer[position] != rune('V') {
goto l843
}
position++
}
l844:
{
position846, tokenIndex846 := position, tokenIndex
if buffer[position] != rune('l') {
goto l847
}
position++
goto l846
l847:
position, tokenIndex = position846, tokenIndex846
if buffer[position] != rune('L') {
goto l843
}
position++
}
l846:
{
position848, tokenIndex848 := position, tokenIndex
if buffer[position] != rune('1') {
goto l849
}
position++
goto l848
l849:
position, tokenIndex = position848, tokenIndex848
if buffer[position] != rune('2') {
goto l850
}
position++
goto l848
l850:
position, tokenIndex = position848, tokenIndex848
if buffer[position] != rune('3') {
goto l851
}
position++
goto l848
l851:
position, tokenIndex = position848, tokenIndex848
if buffer[position] != rune('4') {
goto l852
}
position++
goto l848
l852:
position, tokenIndex = position848, tokenIndex848
if buffer[position] != rune('5') {
goto l853
}
position++
goto l848
l853:
position, tokenIndex = position848, tokenIndex848
if buffer[position] != rune('6') {
goto l854
}
position++
goto l848
l854:
position, tokenIndex = position848, tokenIndex848
if buffer[position] != rune('7') {
goto l855
}
position++
goto l848
l855:
position, tokenIndex = position848, tokenIndex848
if buffer[position] != rune('8') {
goto l843
}
position++
}
l848:
{
position856, tokenIndex856 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l856
}
position++
goto l843
l856:
position, tokenIndex = position856, tokenIndex856
}
goto l835
l843:
position, tokenIndex = position835, tokenIndex835
{
position858, tokenIndex858 := position, tokenIndex
if buffer[position] != rune('v') {
goto l859
}
position++
goto l858
l859:
position, tokenIndex = position858, tokenIndex858
if buffer[position] != rune('V') {
goto l857
}
position++
}
l858:
{
position860, tokenIndex860 := position, tokenIndex
if buffer[position] != rune('l') {
goto l861
}
position++
goto l860
l861:
position, tokenIndex = position860, tokenIndex860
if buffer[position] != rune('L') {
goto l857
}
position++
}
l860:
if buffer[position] != rune('1') {
goto l857
}
position++
if buffer[position] != rune('6') {
goto l857
}
position++
goto l835
l857:
position, tokenIndex = position835, tokenIndex835
{
position863, tokenIndex863 := position, tokenIndex
if buffer[position] != rune('v') {
goto l864
}
position++
goto l863
l864:
position, tokenIndex = position863, tokenIndex863
if buffer[position] != rune('V') {
goto l862
}
position++
}
l863:
{
position865, tokenIndex865 := position, tokenIndex
if buffer[position] != rune('l') {
goto l866
}
position++
goto l865
l866:
position, tokenIndex = position865, tokenIndex865
if buffer[position] != rune('L') {
goto l862
}
position++
}
l865:
if buffer[position] != rune('3') {
goto l862
}
position++
if buffer[position] != rune('2') {
goto l862
}
position++
goto l835
l862:
position, tokenIndex = position835, tokenIndex835
{
position868, tokenIndex868 := position, tokenIndex
if buffer[position] != rune('v') {
goto l869
}
position++
goto l868
l869:
position, tokenIndex = position868, tokenIndex868
if buffer[position] != rune('V') {
goto l867
}
position++
}
l868:
{
position870, tokenIndex870 := position, tokenIndex
if buffer[position] != rune('l') {
goto l871
}
position++
goto l870
l871:
position, tokenIndex = position870, tokenIndex870
if buffer[position] != rune('L') {
goto l867
}
position++
}
l870:
if buffer[position] != rune('6') {
goto l867
}
position++
if buffer[position] != rune('4') {
goto l867
}
position++
goto l835
l867:
position, tokenIndex = position835, tokenIndex835
{
position873, tokenIndex873 := position, tokenIndex
if buffer[position] != rune('v') {
goto l874
}
position++
goto l873
l874:
position, tokenIndex = position873, tokenIndex873
if buffer[position] != rune('V') {
goto l872
}
position++
}
l873:
{
position875, tokenIndex875 := position, tokenIndex
if buffer[position] != rune('l') {
goto l876
}
position++
goto l875
l876:
position, tokenIndex = position875, tokenIndex875
if buffer[position] != rune('L') {
goto l872
}
position++
}
l875:
if buffer[position] != rune('1') {
goto l872
}
position++
if buffer[position] != rune('2') {
goto l872
}
position++
if buffer[position] != rune('8') {
goto l872
}
position++
goto l835
l872:
position, tokenIndex = position835, tokenIndex835
{
position878, tokenIndex878 := position, tokenIndex
if buffer[position] != rune('v') {
goto l879
}
position++
goto l878
l879:
position, tokenIndex = position878, tokenIndex878
if buffer[position] != rune('V') {
goto l877
}
position++
}
l878:
{
position880, tokenIndex880 := position, tokenIndex
if buffer[position] != rune('l') {
goto l881
}
position++
goto l880
l881:
position, tokenIndex = position880, tokenIndex880
if buffer[position] != rune('L') {
goto l877
}
position++
}
l880:
if buffer[position] != rune('2') {
goto l877
}
position++
if buffer[position] != rune('5') {
goto l877
}
position++
if buffer[position] != rune('6') {
goto l877
}
position++
goto l835
l877:
position, tokenIndex = position835, tokenIndex835
{
position883, tokenIndex883 := position, tokenIndex
if buffer[position] != rune('m') {
goto l884
}
position++
goto l883
l884:
position, tokenIndex = position883, tokenIndex883
if buffer[position] != rune('M') {
goto l882
}
position++
}
l883:
{
position885, tokenIndex885 := position, tokenIndex
if buffer[position] != rune('u') {
goto l886
}
position++
goto l885
l886:
position, tokenIndex = position885, tokenIndex885
if buffer[position] != rune('U') {
goto l882
}
position++
}
l885:
{
position887, tokenIndex887 := position, tokenIndex
if buffer[position] != rune('l') {
goto l888
}
position++
goto l887
l888:
position, tokenIndex = position887, tokenIndex887
if buffer[position] != rune('L') {
goto l882
}
position++
}
l887:
if buffer[position] != rune('3') {
goto l882
}
position++
goto l835
l882:
position, tokenIndex = position835, tokenIndex835
{
position890, tokenIndex890 := position, tokenIndex
if buffer[position] != rune('m') {
goto l891
}
position++
goto l890
l891:
position, tokenIndex = position890, tokenIndex890
if buffer[position] != rune('M') {
goto l889
}
position++
}
l890:
{
position892, tokenIndex892 := position, tokenIndex
if buffer[position] != rune('u') {
goto l893
}
position++
goto l892
l893:
position, tokenIndex = position892, tokenIndex892
if buffer[position] != rune('U') {
goto l889
}
position++
}
l892:
{
position894, tokenIndex894 := position, tokenIndex
if buffer[position] != rune('l') {
goto l895
}
position++
goto l894
l895:
position, tokenIndex = position894, tokenIndex894
if buffer[position] != rune('L') {
goto l889
}
position++
}
l894:
if buffer[position] != rune('4') {
goto l889
}
position++
goto l835
l889:
position, tokenIndex = position835, tokenIndex835
{
position896, tokenIndex896 := position, tokenIndex
if buffer[position] != rune('a') {
goto l897
}
position++
goto l896
l897:
position, tokenIndex = position896, tokenIndex896
if buffer[position] != rune('A') {
goto l833
}
position++
}
l896:
{
position898, tokenIndex898 := position, tokenIndex
if buffer[position] != rune('l') {
goto l899
}
position++
goto l898
l899:
position, tokenIndex = position898, tokenIndex898
if buffer[position] != rune('L') {
goto l833
}
position++
}
l898:
{
position900, tokenIndex900 := position, tokenIndex
if buffer[position] != rune('l') {
goto l901
}
position++
goto l900
l901:
position, tokenIndex = position900, tokenIndex900
if buffer[position] != rune('L') {
goto l833
}
position++
}
l900:
}
l835:
{
position902, tokenIndex902 := position, tokenIndex
{
position903, tokenIndex903 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l904
}
position++
goto l903
l904:
position, tokenIndex = position903, tokenIndex903
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l905
}
position++
goto l903
l905:
position, tokenIndex = position903, tokenIndex903
{
position907, tokenIndex907 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l908
}
position++
goto l907
l908:
position, tokenIndex = position907, tokenIndex907
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l906
}
position++
}
l907:
goto l903
l906:
position, tokenIndex = position903, tokenIndex903
if buffer[position] != rune('_') {
goto l902
}
position++
}
l903:
goto l833
l902:
position, tokenIndex = position902, tokenIndex902
}
add(ruleSVE2SpecialValue, position834)
}
return true
l833:
position, tokenIndex = position833, tokenIndex833
return false
},
/* 53 MemoryRef <- <((SymbolRef BaseIndexScale) / SymbolRef / Low12BitsSymbolRef / (Offset* BaseIndexScale) / (SegmentRegister Offset BaseIndexScale) / (SegmentRegister BaseIndexScale) / (SegmentRegister Offset) / ARMBaseIndexScale / BaseIndexScale)> */
func() bool {
position909, tokenIndex909 := position, tokenIndex
{
position910 := position
{
position911, tokenIndex911 := position, tokenIndex
if !_rules[ruleSymbolRef]() {
goto l912
}
if !_rules[ruleBaseIndexScale]() {
goto l912
}
goto l911
l912:
position, tokenIndex = position911, tokenIndex911
if !_rules[ruleSymbolRef]() {
goto l913
}
goto l911
l913:
position, tokenIndex = position911, tokenIndex911
if !_rules[ruleLow12BitsSymbolRef]() {
goto l914
}
goto l911
l914:
position, tokenIndex = position911, tokenIndex911
l916:
{
position917, tokenIndex917 := position, tokenIndex
if !_rules[ruleOffset]() {
goto l917
}
goto l916
l917:
position, tokenIndex = position917, tokenIndex917
}
if !_rules[ruleBaseIndexScale]() {
goto l915
}
goto l911
l915:
position, tokenIndex = position911, tokenIndex911
if !_rules[ruleSegmentRegister]() {
goto l918
}
if !_rules[ruleOffset]() {
goto l918
}
if !_rules[ruleBaseIndexScale]() {
goto l918
}
goto l911
l918:
position, tokenIndex = position911, tokenIndex911
if !_rules[ruleSegmentRegister]() {
goto l919
}
if !_rules[ruleBaseIndexScale]() {
goto l919
}
goto l911
l919:
position, tokenIndex = position911, tokenIndex911
if !_rules[ruleSegmentRegister]() {
goto l920
}
if !_rules[ruleOffset]() {
goto l920
}
goto l911
l920:
position, tokenIndex = position911, tokenIndex911
if !_rules[ruleARMBaseIndexScale]() {
goto l921
}
goto l911
l921:
position, tokenIndex = position911, tokenIndex911
if !_rules[ruleBaseIndexScale]() {
goto l909
}
}
l911:
add(ruleMemoryRef, position910)
}
return true
l909:
position, tokenIndex = position909, tokenIndex909
return false
},
/* 54 SymbolRef <- <((Offset* '+')? (LocalSymbol / SymbolName) Offset* ('@' Section Offset*)?)> */
func() bool {
position922, tokenIndex922 := position, tokenIndex
{
position923 := position
{
position924, tokenIndex924 := position, tokenIndex
l926:
{
position927, tokenIndex927 := position, tokenIndex
if !_rules[ruleOffset]() {
goto l927
}
goto l926
l927:
position, tokenIndex = position927, tokenIndex927
}
if buffer[position] != rune('+') {
goto l924
}
position++
goto l925
l924:
position, tokenIndex = position924, tokenIndex924
}
l925:
{
position928, tokenIndex928 := position, tokenIndex
if !_rules[ruleLocalSymbol]() {
goto l929
}
goto l928
l929:
position, tokenIndex = position928, tokenIndex928
if !_rules[ruleSymbolName]() {
goto l922
}
}
l928:
l930:
{
position931, tokenIndex931 := position, tokenIndex
if !_rules[ruleOffset]() {
goto l931
}
goto l930
l931:
position, tokenIndex = position931, tokenIndex931
}
{
position932, tokenIndex932 := position, tokenIndex
if buffer[position] != rune('@') {
goto l932
}
position++
if !_rules[ruleSection]() {
goto l932
}
l934:
{
position935, tokenIndex935 := position, tokenIndex
if !_rules[ruleOffset]() {
goto l935
}
goto l934
l935:
position, tokenIndex = position935, tokenIndex935
}
goto l933
l932:
position, tokenIndex = position932, tokenIndex932
}
l933:
add(ruleSymbolRef, position923)
}
return true
l922:
position, tokenIndex = position922, tokenIndex922
return false
},
/* 55 Low12BitsSymbolRef <- <(':' ('l' / 'L') ('o' / 'O') '1' '2' ':' (LocalSymbol / SymbolName) Offset?)> */
func() bool {
position936, tokenIndex936 := position, tokenIndex
{
position937 := position
if buffer[position] != rune(':') {
goto l936
}
position++
{
position938, tokenIndex938 := position, tokenIndex
if buffer[position] != rune('l') {
goto l939
}
position++
goto l938
l939:
position, tokenIndex = position938, tokenIndex938
if buffer[position] != rune('L') {
goto l936
}
position++
}
l938:
{
position940, tokenIndex940 := position, tokenIndex
if buffer[position] != rune('o') {
goto l941
}
position++
goto l940
l941:
position, tokenIndex = position940, tokenIndex940
if buffer[position] != rune('O') {
goto l936
}
position++
}
l940:
if buffer[position] != rune('1') {
goto l936
}
position++
if buffer[position] != rune('2') {
goto l936
}
position++
if buffer[position] != rune(':') {
goto l936
}
position++
{
position942, tokenIndex942 := position, tokenIndex
if !_rules[ruleLocalSymbol]() {
goto l943
}
goto l942
l943:
position, tokenIndex = position942, tokenIndex942
if !_rules[ruleSymbolName]() {
goto l936
}
}
l942:
{
position944, tokenIndex944 := position, tokenIndex
if !_rules[ruleOffset]() {
goto l944
}
goto l945
l944:
position, tokenIndex = position944, tokenIndex944
}
l945:
add(ruleLow12BitsSymbolRef, position937)
}
return true
l936:
position, tokenIndex = position936, tokenIndex936
return false
},
/* 56 ARMBaseIndexScale <- <('[' ARMRegister (',' WS? (('#' Offset (('*' [0-9]+) / ('*' '(' [0-9]+ Operator [0-9]+ ')') / ('+' [0-9]+)*)?) / ARMGOTLow12 / Low12BitsSymbolRef / ARMRegister) (',' WS? ARMConstantTweak)?)? ']' ARMPostincrement?)> */
func() bool {
position946, tokenIndex946 := position, tokenIndex
{
position947 := position
if buffer[position] != rune('[') {
goto l946
}
position++
if !_rules[ruleARMRegister]() {
goto l946
}
{
position948, tokenIndex948 := position, tokenIndex
if buffer[position] != rune(',') {
goto l948
}
position++
{
position950, tokenIndex950 := position, tokenIndex
if !_rules[ruleWS]() {
goto l950
}
goto l951
l950:
position, tokenIndex = position950, tokenIndex950
}
l951:
{
position952, tokenIndex952 := position, tokenIndex
if buffer[position] != rune('#') {
goto l953
}
position++
if !_rules[ruleOffset]() {
goto l953
}
{
position954, tokenIndex954 := position, tokenIndex
{
position956, tokenIndex956 := position, tokenIndex
if buffer[position] != rune('*') {
goto l957
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l957
}
position++
l958:
{
position959, tokenIndex959 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l959
}
position++
goto l958
l959:
position, tokenIndex = position959, tokenIndex959
}
goto l956
l957:
position, tokenIndex = position956, tokenIndex956
if buffer[position] != rune('*') {
goto l960
}
position++
if buffer[position] != rune('(') {
goto l960
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l960
}
position++
l961:
{
position962, tokenIndex962 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l962
}
position++
goto l961
l962:
position, tokenIndex = position962, tokenIndex962
}
if !_rules[ruleOperator]() {
goto l960
}
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l960
}
position++
l963:
{
position964, tokenIndex964 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l964
}
position++
goto l963
l964:
position, tokenIndex = position964, tokenIndex964
}
if buffer[position] != rune(')') {
goto l960
}
position++
goto l956
l960:
position, tokenIndex = position956, tokenIndex956
l965:
{
position966, tokenIndex966 := position, tokenIndex
if buffer[position] != rune('+') {
goto l966
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l966
}
position++
l967:
{
position968, tokenIndex968 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l968
}
position++
goto l967
l968:
position, tokenIndex = position968, tokenIndex968
}
goto l965
l966:
position, tokenIndex = position966, tokenIndex966
}
}
l956:
goto l955
position, tokenIndex = position954, tokenIndex954
}
l955:
goto l952
l953:
position, tokenIndex = position952, tokenIndex952
if !_rules[ruleARMGOTLow12]() {
goto l969
}
goto l952
l969:
position, tokenIndex = position952, tokenIndex952
if !_rules[ruleLow12BitsSymbolRef]() {
goto l970
}
goto l952
l970:
position, tokenIndex = position952, tokenIndex952
if !_rules[ruleARMRegister]() {
goto l948
}
}
l952:
{
position971, tokenIndex971 := position, tokenIndex
if buffer[position] != rune(',') {
goto l971
}
position++
{
position973, tokenIndex973 := position, tokenIndex
if !_rules[ruleWS]() {
goto l973
}
goto l974
l973:
position, tokenIndex = position973, tokenIndex973
}
l974:
if !_rules[ruleARMConstantTweak]() {
goto l971
}
goto l972
l971:
position, tokenIndex = position971, tokenIndex971
}
l972:
goto l949
l948:
position, tokenIndex = position948, tokenIndex948
}
l949:
if buffer[position] != rune(']') {
goto l946
}
position++
{
position975, tokenIndex975 := position, tokenIndex
if !_rules[ruleARMPostincrement]() {
goto l975
}
goto l976
l975:
position, tokenIndex = position975, tokenIndex975
}
l976:
add(ruleARMBaseIndexScale, position947)
}
return true
l946:
position, tokenIndex = position946, tokenIndex946
return false
},
/* 57 ARMGOTLow12 <- <(':' ('g' / 'G') ('o' / 'O') ('t' / 'T') '_' ('l' / 'L') ('o' / 'O') '1' '2' ':' SymbolName)> */
func() bool {
position977, tokenIndex977 := position, tokenIndex
{
position978 := position
if buffer[position] != rune(':') {
goto l977
}
position++
{
position979, tokenIndex979 := position, tokenIndex
if buffer[position] != rune('g') {
goto l980
}
position++
goto l979
l980:
position, tokenIndex = position979, tokenIndex979
if buffer[position] != rune('G') {
goto l977
}
position++
}
l979:
{
position981, tokenIndex981 := position, tokenIndex
if buffer[position] != rune('o') {
goto l982
}
position++
goto l981
l982:
position, tokenIndex = position981, tokenIndex981
if buffer[position] != rune('O') {
goto l977
}
position++
}
l981:
{
position983, tokenIndex983 := position, tokenIndex
if buffer[position] != rune('t') {
goto l984
}
position++
goto l983
l984:
position, tokenIndex = position983, tokenIndex983
if buffer[position] != rune('T') {
goto l977
}
position++
}
l983:
if buffer[position] != rune('_') {
goto l977
}
position++
{
position985, tokenIndex985 := position, tokenIndex
if buffer[position] != rune('l') {
goto l986
}
position++
goto l985
l986:
position, tokenIndex = position985, tokenIndex985
if buffer[position] != rune('L') {
goto l977
}
position++
}
l985:
{
position987, tokenIndex987 := position, tokenIndex
if buffer[position] != rune('o') {
goto l988
}
position++
goto l987
l988:
position, tokenIndex = position987, tokenIndex987
if buffer[position] != rune('O') {
goto l977
}
position++
}
l987:
if buffer[position] != rune('1') {
goto l977
}
position++
if buffer[position] != rune('2') {
goto l977
}
position++
if buffer[position] != rune(':') {
goto l977
}
position++
if !_rules[ruleSymbolName]() {
goto l977
}
add(ruleARMGOTLow12, position978)
}
return true
l977:
position, tokenIndex = position977, tokenIndex977
return false
},
/* 58 ARMPostincrement <- <'!'> */
func() bool {
position989, tokenIndex989 := position, tokenIndex
{
position990 := position
if buffer[position] != rune('!') {
goto l989
}
position++
add(ruleARMPostincrement, position990)
}
return true
l989:
position, tokenIndex = position989, tokenIndex989
return false
},
/* 59 BaseIndexScale <- <('(' RegisterOrConstant? WS? (',' WS? RegisterOrConstant WS? (',' [0-9]+)?)? ')')> */
func() bool {
position991, tokenIndex991 := position, tokenIndex
{
position992 := position
if buffer[position] != rune('(') {
goto l991
}
position++
{
position993, tokenIndex993 := position, tokenIndex
if !_rules[ruleRegisterOrConstant]() {
goto l993
}
goto l994
l993:
position, tokenIndex = position993, tokenIndex993
}
l994:
{
position995, tokenIndex995 := position, tokenIndex
if !_rules[ruleWS]() {
goto l995
}
goto l996
l995:
position, tokenIndex = position995, tokenIndex995
}
l996:
{
position997, tokenIndex997 := position, tokenIndex
if buffer[position] != rune(',') {
goto l997
}
position++
{
position999, tokenIndex999 := position, tokenIndex
if !_rules[ruleWS]() {
goto l999
}
goto l1000
l999:
position, tokenIndex = position999, tokenIndex999
}
l1000:
if !_rules[ruleRegisterOrConstant]() {
goto l997
}
{
position1001, tokenIndex1001 := position, tokenIndex
if !_rules[ruleWS]() {
goto l1001
}
goto l1002
l1001:
position, tokenIndex = position1001, tokenIndex1001
}
l1002:
{
position1003, tokenIndex1003 := position, tokenIndex
if buffer[position] != rune(',') {
goto l1003
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l1003
}
position++
l1005:
{
position1006, tokenIndex1006 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l1006
}
position++
goto l1005
l1006:
position, tokenIndex = position1006, tokenIndex1006
}
goto l1004
l1003:
position, tokenIndex = position1003, tokenIndex1003
}
l1004:
goto l998
l997:
position, tokenIndex = position997, tokenIndex997
}
l998:
if buffer[position] != rune(')') {
goto l991
}
position++
add(ruleBaseIndexScale, position992)
}
return true
l991:
position, tokenIndex = position991, tokenIndex991
return false
},
/* 60 Operator <- <('+' / '-')> */
func() bool {
position1007, tokenIndex1007 := position, tokenIndex
{
position1008 := position
{
position1009, tokenIndex1009 := position, tokenIndex
if buffer[position] != rune('+') {
goto l1010
}
position++
goto l1009
l1010:
position, tokenIndex = position1009, tokenIndex1009
if buffer[position] != rune('-') {
goto l1007
}
position++
}
l1009:
add(ruleOperator, position1008)
}
return true
l1007:
position, tokenIndex = position1007, tokenIndex1007
return false
},
/* 61 Offset <- <('+'? '-'? (('0' ('b' / 'B') ('0' / '1')+) / ('0' ('x' / 'X') ([0-9] / [0-9] / ([a-f] / [A-F]))+) / [0-9]+))> */
func() bool {
position1011, tokenIndex1011 := position, tokenIndex
{
position1012 := position
{
position1013, tokenIndex1013 := position, tokenIndex
if buffer[position] != rune('+') {
goto l1013
}
position++
goto l1014
l1013:
position, tokenIndex = position1013, tokenIndex1013
}
l1014:
{
position1015, tokenIndex1015 := position, tokenIndex
if buffer[position] != rune('-') {
goto l1015
}
position++
goto l1016
l1015:
position, tokenIndex = position1015, tokenIndex1015
}
l1016:
{
position1017, tokenIndex1017 := position, tokenIndex
if buffer[position] != rune('0') {
goto l1018
}
position++
{
position1019, tokenIndex1019 := position, tokenIndex
if buffer[position] != rune('b') {
goto l1020
}
position++
goto l1019
l1020:
position, tokenIndex = position1019, tokenIndex1019
if buffer[position] != rune('B') {
goto l1018
}
position++
}
l1019:
{
position1023, tokenIndex1023 := position, tokenIndex
if buffer[position] != rune('0') {
goto l1024
}
position++
goto l1023
l1024:
position, tokenIndex = position1023, tokenIndex1023
if buffer[position] != rune('1') {
goto l1018
}
position++
}
l1023:
l1021:
{
position1022, tokenIndex1022 := position, tokenIndex
{
position1025, tokenIndex1025 := position, tokenIndex
if buffer[position] != rune('0') {
goto l1026
}
position++
goto l1025
l1026:
position, tokenIndex = position1025, tokenIndex1025
if buffer[position] != rune('1') {
goto l1022
}
position++
}
l1025:
goto l1021
l1022:
position, tokenIndex = position1022, tokenIndex1022
}
goto l1017
l1018:
position, tokenIndex = position1017, tokenIndex1017
if buffer[position] != rune('0') {
goto l1027
}
position++
{
position1028, tokenIndex1028 := position, tokenIndex
if buffer[position] != rune('x') {
goto l1029
}
position++
goto l1028
l1029:
position, tokenIndex = position1028, tokenIndex1028
if buffer[position] != rune('X') {
goto l1027
}
position++
}
l1028:
{
position1032, tokenIndex1032 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l1033
}
position++
goto l1032
l1033:
position, tokenIndex = position1032, tokenIndex1032
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l1034
}
position++
goto l1032
l1034:
position, tokenIndex = position1032, tokenIndex1032
{
position1035, tokenIndex1035 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('f') {
goto l1036
}
position++
goto l1035
l1036:
position, tokenIndex = position1035, tokenIndex1035
if c := buffer[position]; c < rune('A') || c > rune('F') {
goto l1027
}
position++
}
l1035:
}
l1032:
l1030:
{
position1031, tokenIndex1031 := position, tokenIndex
{
position1037, tokenIndex1037 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l1038
}
position++
goto l1037
l1038:
position, tokenIndex = position1037, tokenIndex1037
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l1039
}
position++
goto l1037
l1039:
position, tokenIndex = position1037, tokenIndex1037
{
position1040, tokenIndex1040 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('f') {
goto l1041
}
position++
goto l1040
l1041:
position, tokenIndex = position1040, tokenIndex1040
if c := buffer[position]; c < rune('A') || c > rune('F') {
goto l1031
}
position++
}
l1040:
}
l1037:
goto l1030
l1031:
position, tokenIndex = position1031, tokenIndex1031
}
goto l1017
l1027:
position, tokenIndex = position1017, tokenIndex1017
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l1011
}
position++
l1042:
{
position1043, tokenIndex1043 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l1043
}
position++
goto l1042
l1043:
position, tokenIndex = position1043, tokenIndex1043
}
}
l1017:
add(ruleOffset, position1012)
}
return true
l1011:
position, tokenIndex = position1011, tokenIndex1011
return false
},
/* 62 Section <- <([a-z] / [A-Z] / '@')+> */
func() bool {
position1044, tokenIndex1044 := position, tokenIndex
{
position1045 := position
{
position1048, tokenIndex1048 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l1049
}
position++
goto l1048
l1049:
position, tokenIndex = position1048, tokenIndex1048
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l1050
}
position++
goto l1048
l1050:
position, tokenIndex = position1048, tokenIndex1048
if buffer[position] != rune('@') {
goto l1044
}
position++
}
l1048:
l1046:
{
position1047, tokenIndex1047 := position, tokenIndex
{
position1051, tokenIndex1051 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l1052
}
position++
goto l1051
l1052:
position, tokenIndex = position1051, tokenIndex1051
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l1053
}
position++
goto l1051
l1053:
position, tokenIndex = position1051, tokenIndex1051
if buffer[position] != rune('@') {
goto l1047
}
position++
}
l1051:
goto l1046
l1047:
position, tokenIndex = position1047, tokenIndex1047
}
add(ruleSection, position1045)
}
return true
l1044:
position, tokenIndex = position1044, tokenIndex1044
return false
},
/* 63 SegmentRegister <- <('%' ([c-g] / 's') ('s' ':'))> */
func() bool {
position1054, tokenIndex1054 := position, tokenIndex
{
position1055 := position
if buffer[position] != rune('%') {
goto l1054
}
position++
{
position1056, tokenIndex1056 := position, tokenIndex
if c := buffer[position]; c < rune('c') || c > rune('g') {
goto l1057
}
position++
goto l1056
l1057:
position, tokenIndex = position1056, tokenIndex1056
if buffer[position] != rune('s') {
goto l1054
}
position++
}
l1056:
if buffer[position] != rune('s') {
goto l1054
}
position++
if buffer[position] != rune(':') {
goto l1054
}
position++
add(ruleSegmentRegister, position1055)
}
return true
l1054:
position, tokenIndex = position1054, tokenIndex1054
return false
},
}
p.rules = _rules
return nil
}