blob: 9db81e52e40543188fd04f1bf174705bd4c6295f [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
{
position645, tokenIndex645 := position, tokenIndex
if buffer[position] != rune('#') {
goto l645
}
position++
goto l646
l645:
position, tokenIndex = position645, tokenIndex645
}
l646:
if !_rules[ruleFloat]() {
goto l644
}
goto l628
l644:
position, tokenIndex = position628, tokenIndex628
{
position648, tokenIndex648 := position, tokenIndex
if buffer[position] != rune('#') {
goto l648
}
position++
goto l649
l648:
position, tokenIndex = position648, tokenIndex648
}
l649:
if !_rules[ruleOffset]() {
goto l647
}
{
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
}
{
position654, tokenIndex654 := position, tokenIndex
if buffer[position] != rune('-') {
goto l654
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l654
}
position++
l656:
{
position657, tokenIndex657 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l657
}
position++
goto l656
l657:
position, tokenIndex = position657, tokenIndex657
}
goto l655
l654:
position, tokenIndex = position654, tokenIndex654
}
l655:
goto l651
l650:
position, tokenIndex = position650, tokenIndex650
}
l651:
goto l628
l647:
position, tokenIndex = position628, tokenIndex628
{
position659, tokenIndex659 := position, tokenIndex
if buffer[position] != rune('#') {
goto l659
}
position++
goto l660
l659:
position, tokenIndex = position659, tokenIndex659
}
l660:
{
position661, tokenIndex661 := position, tokenIndex
if buffer[position] != rune('~') {
goto l661
}
position++
goto l662
l661:
position, tokenIndex = position661, tokenIndex661
}
l662:
if buffer[position] != rune('(') {
goto l658
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l658
}
position++
{
position663, tokenIndex663 := position, tokenIndex
if !_rules[ruleWS]() {
goto l663
}
goto l664
l663:
position, tokenIndex = position663, tokenIndex663
}
l664:
if buffer[position] != rune('<') {
goto l658
}
position++
if buffer[position] != rune('<') {
goto l658
}
position++
{
position665, tokenIndex665 := position, tokenIndex
if !_rules[ruleWS]() {
goto l665
}
goto l666
l665:
position, tokenIndex = position665, tokenIndex665
}
l666:
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l658
}
position++
if buffer[position] != rune(')') {
goto l658
}
position++
goto l628
l658:
position, tokenIndex = position628, tokenIndex628
if !_rules[ruleARMRegister]() {
goto l626
}
}
l628:
{
position667, tokenIndex667 := position, tokenIndex
{
position668, tokenIndex668 := position, tokenIndex
if buffer[position] != rune('f') {
goto l669
}
position++
goto l668
l669:
position, tokenIndex = position668, tokenIndex668
if buffer[position] != rune('b') {
goto l670
}
position++
goto l668
l670:
position, tokenIndex = position668, tokenIndex668
if buffer[position] != rune(':') {
goto l671
}
position++
goto l668
l671:
position, tokenIndex = position668, tokenIndex668
if buffer[position] != rune('(') {
goto l672
}
position++
goto l668
l672:
position, tokenIndex = position668, tokenIndex668
if buffer[position] != rune('+') {
goto l673
}
position++
goto l668
l673:
position, tokenIndex = position668, tokenIndex668
if buffer[position] != rune('-') {
goto l667
}
position++
}
l668:
goto l626
l667:
position, tokenIndex = position667, tokenIndex667
}
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 {
position674, tokenIndex674 := position, tokenIndex
{
position675 := position
{
position676, tokenIndex676 := position, tokenIndex
{
position678, tokenIndex678 := position, tokenIndex
{
position680, tokenIndex680 := position, tokenIndex
if buffer[position] != rune('u') {
goto l681
}
position++
goto l680
l681:
position, tokenIndex = position680, tokenIndex680
if buffer[position] != rune('s') {
goto l679
}
position++
}
l680:
{
position682, tokenIndex682 := position, tokenIndex
if buffer[position] != rune('x') {
goto l683
}
position++
goto l682
l683:
position, tokenIndex = position682, tokenIndex682
if buffer[position] != rune('X') {
goto l679
}
position++
}
l682:
{
position684, tokenIndex684 := position, tokenIndex
if buffer[position] != rune('t') {
goto l685
}
position++
goto l684
l685:
position, tokenIndex = position684, tokenIndex684
if buffer[position] != rune('T') {
goto l679
}
position++
}
l684:
{
position686, tokenIndex686 := position, tokenIndex
if buffer[position] != rune('x') {
goto l687
}
position++
goto l686
l687:
position, tokenIndex = position686, tokenIndex686
if buffer[position] != rune('w') {
goto l688
}
position++
goto l686
l688:
position, tokenIndex = position686, tokenIndex686
if buffer[position] != rune('h') {
goto l689
}
position++
goto l686
l689:
position, tokenIndex = position686, tokenIndex686
if buffer[position] != rune('b') {
goto l679
}
position++
}
l686:
goto l678
l679:
position, tokenIndex = position678, tokenIndex678
{
position691, tokenIndex691 := position, tokenIndex
if buffer[position] != rune('l') {
goto l692
}
position++
goto l691
l692:
position, tokenIndex = position691, tokenIndex691
if buffer[position] != rune('L') {
goto l690
}
position++
}
l691:
{
position693, tokenIndex693 := position, tokenIndex
if buffer[position] != rune('s') {
goto l694
}
position++
goto l693
l694:
position, tokenIndex = position693, tokenIndex693
if buffer[position] != rune('S') {
goto l690
}
position++
}
l693:
{
position695, tokenIndex695 := position, tokenIndex
if buffer[position] != rune('l') {
goto l696
}
position++
goto l695
l696:
position, tokenIndex = position695, tokenIndex695
if buffer[position] != rune('L') {
goto l690
}
position++
}
l695:
goto l678
l690:
position, tokenIndex = position678, tokenIndex678
{
position698, tokenIndex698 := position, tokenIndex
if buffer[position] != rune('l') {
goto l699
}
position++
goto l698
l699:
position, tokenIndex = position698, tokenIndex698
if buffer[position] != rune('L') {
goto l697
}
position++
}
l698:
{
position700, tokenIndex700 := position, tokenIndex
if buffer[position] != rune('s') {
goto l701
}
position++
goto l700
l701:
position, tokenIndex = position700, tokenIndex700
if buffer[position] != rune('S') {
goto l697
}
position++
}
l700:
{
position702, tokenIndex702 := position, tokenIndex
if buffer[position] != rune('r') {
goto l703
}
position++
goto l702
l703:
position, tokenIndex = position702, tokenIndex702
if buffer[position] != rune('R') {
goto l697
}
position++
}
l702:
goto l678
l697:
position, tokenIndex = position678, tokenIndex678
{
position705, tokenIndex705 := position, tokenIndex
if buffer[position] != rune('r') {
goto l706
}
position++
goto l705
l706:
position, tokenIndex = position705, tokenIndex705
if buffer[position] != rune('R') {
goto l704
}
position++
}
l705:
{
position707, tokenIndex707 := position, tokenIndex
if buffer[position] != rune('o') {
goto l708
}
position++
goto l707
l708:
position, tokenIndex = position707, tokenIndex707
if buffer[position] != rune('O') {
goto l704
}
position++
}
l707:
{
position709, tokenIndex709 := position, tokenIndex
if buffer[position] != rune('r') {
goto l710
}
position++
goto l709
l710:
position, tokenIndex = position709, tokenIndex709
if buffer[position] != rune('R') {
goto l704
}
position++
}
l709:
goto l678
l704:
position, tokenIndex = position678, tokenIndex678
{
position712, tokenIndex712 := position, tokenIndex
if buffer[position] != rune('a') {
goto l713
}
position++
goto l712
l713:
position, tokenIndex = position712, tokenIndex712
if buffer[position] != rune('A') {
goto l711
}
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 l711
}
position++
}
l714:
{
position716, tokenIndex716 := position, tokenIndex
if buffer[position] != rune('r') {
goto l717
}
position++
goto l716
l717:
position, tokenIndex = position716, tokenIndex716
if buffer[position] != rune('R') {
goto l711
}
position++
}
l716:
goto l678
l711:
position, tokenIndex = position678, tokenIndex678
{
position718, tokenIndex718 := position, tokenIndex
if buffer[position] != rune('m') {
goto l719
}
position++
goto l718
l719:
position, tokenIndex = position718, tokenIndex718
if buffer[position] != rune('M') {
goto l677
}
position++
}
l718:
{
position720, tokenIndex720 := position, tokenIndex
if buffer[position] != rune('s') {
goto l721
}
position++
goto l720
l721:
position, tokenIndex = position720, tokenIndex720
if buffer[position] != rune('S') {
goto l677
}
position++
}
l720:
{
position722, tokenIndex722 := position, tokenIndex
if buffer[position] != rune('l') {
goto l723
}
position++
goto l722
l723:
position, tokenIndex = position722, tokenIndex722
if buffer[position] != rune('L') {
goto l677
}
position++
}
l722:
}
l678:
{
position724, tokenIndex724 := position, tokenIndex
if !_rules[ruleWS]() {
goto l724
}
{
position726, tokenIndex726 := position, tokenIndex
if buffer[position] != rune('#') {
goto l726
}
position++
goto l727
l726:
position, tokenIndex = position726, tokenIndex726
}
l727:
if !_rules[ruleOffset]() {
goto l724
}
goto l725
l724:
position, tokenIndex = position724, tokenIndex724
}
l725:
goto l676
l677:
position, tokenIndex = position676, tokenIndex676
{
position729, tokenIndex729 := position, tokenIndex
if buffer[position] != rune('m') {
goto l730
}
position++
goto l729
l730:
position, tokenIndex = position729, tokenIndex729
if buffer[position] != rune('M') {
goto l728
}
position++
}
l729:
{
position731, tokenIndex731 := position, tokenIndex
if buffer[position] != rune('u') {
goto l732
}
position++
goto l731
l732:
position, tokenIndex = position731, tokenIndex731
if buffer[position] != rune('U') {
goto l728
}
position++
}
l731:
{
position733, tokenIndex733 := position, tokenIndex
if buffer[position] != rune('l') {
goto l734
}
position++
goto l733
l734:
position, tokenIndex = position733, tokenIndex733
if buffer[position] != rune('L') {
goto l728
}
position++
}
l733:
if buffer[position] != rune(' ') {
goto l728
}
position++
{
position735, tokenIndex735 := position, tokenIndex
if buffer[position] != rune('v') {
goto l736
}
position++
goto l735
l736:
position, tokenIndex = position735, tokenIndex735
if buffer[position] != rune('V') {
goto l728
}
position++
}
l735:
{
position737, tokenIndex737 := position, tokenIndex
if buffer[position] != rune('l') {
goto l738
}
position++
goto l737
l738:
position, tokenIndex = position737, tokenIndex737
if buffer[position] != rune('L') {
goto l728
}
position++
}
l737:
goto l676
l728:
position, tokenIndex = position676, tokenIndex676
{
position739, tokenIndex739 := position, tokenIndex
if buffer[position] != rune('m') {
goto l740
}
position++
goto l739
l740:
position, tokenIndex = position739, tokenIndex739
if buffer[position] != rune('M') {
goto l674
}
position++
}
l739:
{
position741, tokenIndex741 := position, tokenIndex
if buffer[position] != rune('u') {
goto l742
}
position++
goto l741
l742:
position, tokenIndex = position741, tokenIndex741
if buffer[position] != rune('U') {
goto l674
}
position++
}
l741:
{
position743, tokenIndex743 := position, tokenIndex
if buffer[position] != rune('l') {
goto l744
}
position++
goto l743
l744:
position, tokenIndex = position743, tokenIndex743
if buffer[position] != rune('L') {
goto l674
}
position++
}
l743:
if buffer[position] != rune(' ') {
goto l674
}
position++
if buffer[position] != rune('#') {
goto l674
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l674
}
position++
{
position745, tokenIndex745 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l745
}
position++
goto l746
l745:
position, tokenIndex = position745, tokenIndex745
}
l746:
}
l676:
add(ruleARMConstantTweak, position675)
}
return true
l674:
position, tokenIndex = position674, tokenIndex674
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? ('-' / ',') WS? ARMVectorRegister)* WS? '}' ('[' [0-9] [0-9]? ']')?))> */
func() bool {
position747, tokenIndex747 := position, tokenIndex
{
position748 := position
{
position749, tokenIndex749 := position, tokenIndex
{
position751, tokenIndex751 := position, tokenIndex
if buffer[position] != rune('s') {
goto l752
}
position++
goto l751
l752:
position, tokenIndex = position751, tokenIndex751
if buffer[position] != rune('S') {
goto l750
}
position++
}
l751:
{
position753, tokenIndex753 := position, tokenIndex
if buffer[position] != rune('p') {
goto l754
}
position++
goto l753
l754:
position, tokenIndex = position753, tokenIndex753
if buffer[position] != rune('P') {
goto l750
}
position++
}
l753:
goto l749
l750:
position, tokenIndex = position749, tokenIndex749
{
position756, tokenIndex756 := position, tokenIndex
if buffer[position] != rune('x') {
goto l757
}
position++
goto l756
l757:
position, tokenIndex = position756, tokenIndex756
if buffer[position] != rune('w') {
goto l758
}
position++
goto l756
l758:
position, tokenIndex = position756, tokenIndex756
if buffer[position] != rune('d') {
goto l759
}
position++
goto l756
l759:
position, tokenIndex = position756, tokenIndex756
if buffer[position] != rune('q') {
goto l760
}
position++
goto l756
l760:
position, tokenIndex = position756, tokenIndex756
if buffer[position] != rune('s') {
goto l761
}
position++
goto l756
l761:
position, tokenIndex = position756, tokenIndex756
if buffer[position] != rune('h') {
goto l762
}
position++
goto l756
l762:
position, tokenIndex = position756, tokenIndex756
if buffer[position] != rune('b') {
goto l755
}
position++
}
l756:
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l755
}
position++
{
position763, tokenIndex763 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l763
}
position++
goto l764
l763:
position, tokenIndex = position763, tokenIndex763
}
l764:
goto l749
l755:
position, tokenIndex = position749, tokenIndex749
{
position766, tokenIndex766 := position, tokenIndex
if buffer[position] != rune('x') {
goto l767
}
position++
goto l766
l767:
position, tokenIndex = position766, tokenIndex766
if buffer[position] != rune('X') {
goto l765
}
position++
}
l766:
{
position768, tokenIndex768 := position, tokenIndex
if buffer[position] != rune('z') {
goto l769
}
position++
goto l768
l769:
position, tokenIndex = position768, tokenIndex768
if buffer[position] != rune('Z') {
goto l765
}
position++
}
l768:
{
position770, tokenIndex770 := position, tokenIndex
if buffer[position] != rune('r') {
goto l771
}
position++
goto l770
l771:
position, tokenIndex = position770, tokenIndex770
if buffer[position] != rune('R') {
goto l765
}
position++
}
l770:
goto l749
l765:
position, tokenIndex = position749, tokenIndex749
{
position773, tokenIndex773 := position, tokenIndex
if buffer[position] != rune('w') {
goto l774
}
position++
goto l773
l774:
position, tokenIndex = position773, tokenIndex773
if buffer[position] != rune('W') {
goto l772
}
position++
}
l773:
{
position775, tokenIndex775 := position, tokenIndex
if buffer[position] != rune('z') {
goto l776
}
position++
goto l775
l776:
position, tokenIndex = position775, tokenIndex775
if buffer[position] != rune('Z') {
goto l772
}
position++
}
l775:
{
position777, tokenIndex777 := position, tokenIndex
if buffer[position] != rune('r') {
goto l778
}
position++
goto l777
l778:
position, tokenIndex = position777, tokenIndex777
if buffer[position] != rune('R') {
goto l772
}
position++
}
l777:
goto l749
l772:
position, tokenIndex = position749, tokenIndex749
{
position780, tokenIndex780 := position, tokenIndex
if buffer[position] != rune('n') {
goto l781
}
position++
goto l780
l781:
position, tokenIndex = position780, tokenIndex780
if buffer[position] != rune('N') {
goto l779
}
position++
}
l780:
{
position782, tokenIndex782 := position, tokenIndex
if buffer[position] != rune('z') {
goto l783
}
position++
goto l782
l783:
position, tokenIndex = position782, tokenIndex782
if buffer[position] != rune('Z') {
goto l779
}
position++
}
l782:
{
position784, tokenIndex784 := position, tokenIndex
if buffer[position] != rune('c') {
goto l785
}
position++
goto l784
l785:
position, tokenIndex = position784, tokenIndex784
if buffer[position] != rune('C') {
goto l779
}
position++
}
l784:
{
position786, tokenIndex786 := position, tokenIndex
if buffer[position] != rune('v') {
goto l787
}
position++
goto l786
l787:
position, tokenIndex = position786, tokenIndex786
if buffer[position] != rune('V') {
goto l779
}
position++
}
l786:
goto l749
l779:
position, tokenIndex = position749, tokenIndex749
if !_rules[ruleSVE2PredicateRegister]() {
goto l788
}
goto l749
l788:
position, tokenIndex = position749, tokenIndex749
if !_rules[ruleARMVectorRegister]() {
goto l789
}
goto l749
l789:
position, tokenIndex = position749, tokenIndex749
if !_rules[ruleSVE2SpecialValue]() {
goto l790
}
goto l749
l790:
position, tokenIndex = position749, tokenIndex749
if buffer[position] != rune('{') {
goto l747
}
position++
{
position791, tokenIndex791 := position, tokenIndex
if !_rules[ruleWS]() {
goto l791
}
goto l792
l791:
position, tokenIndex = position791, tokenIndex791
}
l792:
if !_rules[ruleARMVectorRegister]() {
goto l747
}
l793:
{
position794, tokenIndex794 := position, tokenIndex
{
position795, tokenIndex795 := position, tokenIndex
if !_rules[ruleWS]() {
goto l795
}
goto l796
l795:
position, tokenIndex = position795, tokenIndex795
}
l796:
{
position797, tokenIndex797 := position, tokenIndex
if buffer[position] != rune('-') {
goto l798
}
position++
goto l797
l798:
position, tokenIndex = position797, tokenIndex797
if buffer[position] != rune(',') {
goto l794
}
position++
}
l797:
{
position799, tokenIndex799 := position, tokenIndex
if !_rules[ruleWS]() {
goto l799
}
goto l800
l799:
position, tokenIndex = position799, tokenIndex799
}
l800:
if !_rules[ruleARMVectorRegister]() {
goto l794
}
goto l793
l794:
position, tokenIndex = position794, tokenIndex794
}
{
position801, tokenIndex801 := position, tokenIndex
if !_rules[ruleWS]() {
goto l801
}
goto l802
l801:
position, tokenIndex = position801, tokenIndex801
}
l802:
if buffer[position] != rune('}') {
goto l747
}
position++
{
position803, tokenIndex803 := position, tokenIndex
if buffer[position] != rune('[') {
goto l803
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l803
}
position++
{
position805, tokenIndex805 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l805
}
position++
goto l806
l805:
position, tokenIndex = position805, tokenIndex805
}
l806:
if buffer[position] != rune(']') {
goto l803
}
position++
goto l804
l803:
position, tokenIndex = position803, tokenIndex803
}
l804:
}
l749:
add(ruleARMRegister, position748)
}
return true
l747:
position, tokenIndex = position747, tokenIndex747
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 {
position807, tokenIndex807 := position, tokenIndex
{
position808 := position
{
position809, tokenIndex809 := position, tokenIndex
if buffer[position] != rune('p') {
goto l810
}
position++
goto l809
l810:
position, tokenIndex = position809, tokenIndex809
if buffer[position] != rune('v') {
goto l811
}
position++
goto l809
l811:
position, tokenIndex = position809, tokenIndex809
if buffer[position] != rune('z') {
goto l807
}
position++
}
l809:
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l807
}
position++
{
position812, tokenIndex812 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l812
}
position++
goto l813
l812:
position, tokenIndex = position812, tokenIndex812
}
l813:
{
position814, tokenIndex814 := position, tokenIndex
{
position815, tokenIndex815 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l816
}
position++
goto l815
l816:
position, tokenIndex = position815, tokenIndex815
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l817
}
position++
goto l815
l817:
position, tokenIndex = position815, tokenIndex815
{
position819, tokenIndex819 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l820
}
position++
goto l819
l820:
position, tokenIndex = position819, tokenIndex819
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l818
}
position++
}
l819:
goto l815
l818:
position, tokenIndex = position815, tokenIndex815
if buffer[position] != rune('_') {
goto l814
}
position++
}
l815:
goto l807
l814:
position, tokenIndex = position814, tokenIndex814
}
{
position821, tokenIndex821 := position, tokenIndex
if buffer[position] != rune('.') {
goto l821
}
position++
l823:
{
position824, tokenIndex824 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l824
}
position++
goto l823
l824:
position, tokenIndex = position824, tokenIndex824
}
{
position825, tokenIndex825 := position, tokenIndex
if buffer[position] != rune('b') {
goto l826
}
position++
goto l825
l826:
position, tokenIndex = position825, tokenIndex825
if buffer[position] != rune('s') {
goto l827
}
position++
goto l825
l827:
position, tokenIndex = position825, tokenIndex825
if buffer[position] != rune('d') {
goto l828
}
position++
goto l825
l828:
position, tokenIndex = position825, tokenIndex825
if buffer[position] != rune('h') {
goto l829
}
position++
goto l825
l829:
position, tokenIndex = position825, tokenIndex825
if buffer[position] != rune('q') {
goto l821
}
position++
}
l825:
{
position830, tokenIndex830 := position, tokenIndex
if buffer[position] != rune('[') {
goto l830
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l830
}
position++
{
position832, tokenIndex832 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l832
}
position++
goto l833
l832:
position, tokenIndex = position832, tokenIndex832
}
l833:
if buffer[position] != rune(']') {
goto l830
}
position++
goto l831
l830:
position, tokenIndex = position830, tokenIndex830
}
l831:
goto l822
l821:
position, tokenIndex = position821, tokenIndex821
}
l822:
add(ruleARMVectorRegister, position808)
}
return true
l807:
position, tokenIndex = position807, tokenIndex807
return false
},
/* 51 SVE2PredicateRegister <- <(('p' / 'P') [0-9] [0-9]? '/' ('m' / 'M' / ('z' / 'Z')))> */
func() bool {
position834, tokenIndex834 := position, tokenIndex
{
position835 := position
{
position836, tokenIndex836 := position, tokenIndex
if buffer[position] != rune('p') {
goto l837
}
position++
goto l836
l837:
position, tokenIndex = position836, tokenIndex836
if buffer[position] != rune('P') {
goto l834
}
position++
}
l836:
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l834
}
position++
{
position838, tokenIndex838 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l838
}
position++
goto l839
l838:
position, tokenIndex = position838, tokenIndex838
}
l839:
if buffer[position] != rune('/') {
goto l834
}
position++
{
position840, tokenIndex840 := position, tokenIndex
if buffer[position] != rune('m') {
goto l841
}
position++
goto l840
l841:
position, tokenIndex = position840, tokenIndex840
if buffer[position] != rune('M') {
goto l842
}
position++
goto l840
l842:
position, tokenIndex = position840, tokenIndex840
{
position843, tokenIndex843 := position, tokenIndex
if buffer[position] != rune('z') {
goto l844
}
position++
goto l843
l844:
position, tokenIndex = position843, tokenIndex843
if buffer[position] != rune('Z') {
goto l834
}
position++
}
l843:
}
l840:
add(ruleSVE2PredicateRegister, position835)
}
return true
l834:
position, tokenIndex = position834, tokenIndex834
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 {
position845, tokenIndex845 := position, tokenIndex
{
position846 := position
{
position847, tokenIndex847 := position, tokenIndex
{
position849, tokenIndex849 := position, tokenIndex
if buffer[position] != rune('p') {
goto l850
}
position++
goto l849
l850:
position, tokenIndex = position849, tokenIndex849
if buffer[position] != rune('P') {
goto l848
}
position++
}
l849:
{
position851, tokenIndex851 := position, tokenIndex
if buffer[position] != rune('o') {
goto l852
}
position++
goto l851
l852:
position, tokenIndex = position851, tokenIndex851
if buffer[position] != rune('O') {
goto l848
}
position++
}
l851:
{
position853, tokenIndex853 := position, tokenIndex
if buffer[position] != rune('w') {
goto l854
}
position++
goto l853
l854:
position, tokenIndex = position853, tokenIndex853
if buffer[position] != rune('W') {
goto l848
}
position++
}
l853:
if buffer[position] != rune('2') {
goto l848
}
position++
goto l847
l848:
position, tokenIndex = position847, tokenIndex847
{
position856, tokenIndex856 := position, tokenIndex
if buffer[position] != rune('v') {
goto l857
}
position++
goto l856
l857:
position, tokenIndex = position856, tokenIndex856
if buffer[position] != rune('V') {
goto l855
}
position++
}
l856:
{
position858, tokenIndex858 := position, tokenIndex
if buffer[position] != rune('l') {
goto l859
}
position++
goto l858
l859:
position, tokenIndex = position858, tokenIndex858
if buffer[position] != rune('L') {
goto l855
}
position++
}
l858:
{
position860, tokenIndex860 := position, tokenIndex
if buffer[position] != rune('1') {
goto l861
}
position++
goto l860
l861:
position, tokenIndex = position860, tokenIndex860
if buffer[position] != rune('2') {
goto l862
}
position++
goto l860
l862:
position, tokenIndex = position860, tokenIndex860
if buffer[position] != rune('3') {
goto l863
}
position++
goto l860
l863:
position, tokenIndex = position860, tokenIndex860
if buffer[position] != rune('4') {
goto l864
}
position++
goto l860
l864:
position, tokenIndex = position860, tokenIndex860
if buffer[position] != rune('5') {
goto l865
}
position++
goto l860
l865:
position, tokenIndex = position860, tokenIndex860
if buffer[position] != rune('6') {
goto l866
}
position++
goto l860
l866:
position, tokenIndex = position860, tokenIndex860
if buffer[position] != rune('7') {
goto l867
}
position++
goto l860
l867:
position, tokenIndex = position860, tokenIndex860
if buffer[position] != rune('8') {
goto l855
}
position++
}
l860:
{
position868, tokenIndex868 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l868
}
position++
goto l855
l868:
position, tokenIndex = position868, tokenIndex868
}
goto l847
l855:
position, tokenIndex = position847, tokenIndex847
{
position870, tokenIndex870 := position, tokenIndex
if buffer[position] != rune('v') {
goto l871
}
position++
goto l870
l871:
position, tokenIndex = position870, tokenIndex870
if buffer[position] != rune('V') {
goto l869
}
position++
}
l870:
{
position872, tokenIndex872 := position, tokenIndex
if buffer[position] != rune('l') {
goto l873
}
position++
goto l872
l873:
position, tokenIndex = position872, tokenIndex872
if buffer[position] != rune('L') {
goto l869
}
position++
}
l872:
if buffer[position] != rune('1') {
goto l869
}
position++
if buffer[position] != rune('6') {
goto l869
}
position++
goto l847
l869:
position, tokenIndex = position847, tokenIndex847
{
position875, tokenIndex875 := position, tokenIndex
if buffer[position] != rune('v') {
goto l876
}
position++
goto l875
l876:
position, tokenIndex = position875, tokenIndex875
if buffer[position] != rune('V') {
goto l874
}
position++
}
l875:
{
position877, tokenIndex877 := position, tokenIndex
if buffer[position] != rune('l') {
goto l878
}
position++
goto l877
l878:
position, tokenIndex = position877, tokenIndex877
if buffer[position] != rune('L') {
goto l874
}
position++
}
l877:
if buffer[position] != rune('3') {
goto l874
}
position++
if buffer[position] != rune('2') {
goto l874
}
position++
goto l847
l874:
position, tokenIndex = position847, tokenIndex847
{
position880, tokenIndex880 := position, tokenIndex
if buffer[position] != rune('v') {
goto l881
}
position++
goto l880
l881:
position, tokenIndex = position880, tokenIndex880
if buffer[position] != rune('V') {
goto l879
}
position++
}
l880:
{
position882, tokenIndex882 := position, tokenIndex
if buffer[position] != rune('l') {
goto l883
}
position++
goto l882
l883:
position, tokenIndex = position882, tokenIndex882
if buffer[position] != rune('L') {
goto l879
}
position++
}
l882:
if buffer[position] != rune('6') {
goto l879
}
position++
if buffer[position] != rune('4') {
goto l879
}
position++
goto l847
l879:
position, tokenIndex = position847, tokenIndex847
{
position885, tokenIndex885 := position, tokenIndex
if buffer[position] != rune('v') {
goto l886
}
position++
goto l885
l886:
position, tokenIndex = position885, tokenIndex885
if buffer[position] != rune('V') {
goto l884
}
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 l884
}
position++
}
l887:
if buffer[position] != rune('1') {
goto l884
}
position++
if buffer[position] != rune('2') {
goto l884
}
position++
if buffer[position] != rune('8') {
goto l884
}
position++
goto l847
l884:
position, tokenIndex = position847, tokenIndex847
{
position890, tokenIndex890 := position, tokenIndex
if buffer[position] != rune('v') {
goto l891
}
position++
goto l890
l891:
position, tokenIndex = position890, tokenIndex890
if buffer[position] != rune('V') {
goto l889
}
position++
}
l890:
{
position892, tokenIndex892 := position, tokenIndex
if buffer[position] != rune('l') {
goto l893
}
position++
goto l892
l893:
position, tokenIndex = position892, tokenIndex892
if buffer[position] != rune('L') {
goto l889
}
position++
}
l892:
if buffer[position] != rune('2') {
goto l889
}
position++
if buffer[position] != rune('5') {
goto l889
}
position++
if buffer[position] != rune('6') {
goto l889
}
position++
goto l847
l889:
position, tokenIndex = position847, tokenIndex847
{
position895, tokenIndex895 := position, tokenIndex
if buffer[position] != rune('m') {
goto l896
}
position++
goto l895
l896:
position, tokenIndex = position895, tokenIndex895
if buffer[position] != rune('M') {
goto l894
}
position++
}
l895:
{
position897, tokenIndex897 := position, tokenIndex
if buffer[position] != rune('u') {
goto l898
}
position++
goto l897
l898:
position, tokenIndex = position897, tokenIndex897
if buffer[position] != rune('U') {
goto l894
}
position++
}
l897:
{
position899, tokenIndex899 := position, tokenIndex
if buffer[position] != rune('l') {
goto l900
}
position++
goto l899
l900:
position, tokenIndex = position899, tokenIndex899
if buffer[position] != rune('L') {
goto l894
}
position++
}
l899:
if buffer[position] != rune('3') {
goto l894
}
position++
goto l847
l894:
position, tokenIndex = position847, tokenIndex847
{
position902, tokenIndex902 := position, tokenIndex
if buffer[position] != rune('m') {
goto l903
}
position++
goto l902
l903:
position, tokenIndex = position902, tokenIndex902
if buffer[position] != rune('M') {
goto l901
}
position++
}
l902:
{
position904, tokenIndex904 := position, tokenIndex
if buffer[position] != rune('u') {
goto l905
}
position++
goto l904
l905:
position, tokenIndex = position904, tokenIndex904
if buffer[position] != rune('U') {
goto l901
}
position++
}
l904:
{
position906, tokenIndex906 := position, tokenIndex
if buffer[position] != rune('l') {
goto l907
}
position++
goto l906
l907:
position, tokenIndex = position906, tokenIndex906
if buffer[position] != rune('L') {
goto l901
}
position++
}
l906:
if buffer[position] != rune('4') {
goto l901
}
position++
goto l847
l901:
position, tokenIndex = position847, tokenIndex847
{
position908, tokenIndex908 := position, tokenIndex
if buffer[position] != rune('a') {
goto l909
}
position++
goto l908
l909:
position, tokenIndex = position908, tokenIndex908
if buffer[position] != rune('A') {
goto l845
}
position++
}
l908:
{
position910, tokenIndex910 := position, tokenIndex
if buffer[position] != rune('l') {
goto l911
}
position++
goto l910
l911:
position, tokenIndex = position910, tokenIndex910
if buffer[position] != rune('L') {
goto l845
}
position++
}
l910:
{
position912, tokenIndex912 := position, tokenIndex
if buffer[position] != rune('l') {
goto l913
}
position++
goto l912
l913:
position, tokenIndex = position912, tokenIndex912
if buffer[position] != rune('L') {
goto l845
}
position++
}
l912:
}
l847:
{
position914, tokenIndex914 := position, tokenIndex
{
position915, tokenIndex915 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l916
}
position++
goto l915
l916:
position, tokenIndex = position915, tokenIndex915
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l917
}
position++
goto l915
l917:
position, tokenIndex = position915, tokenIndex915
{
position919, tokenIndex919 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l920
}
position++
goto l919
l920:
position, tokenIndex = position919, tokenIndex919
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l918
}
position++
}
l919:
goto l915
l918:
position, tokenIndex = position915, tokenIndex915
if buffer[position] != rune('_') {
goto l914
}
position++
}
l915:
goto l845
l914:
position, tokenIndex = position914, tokenIndex914
}
add(ruleSVE2SpecialValue, position846)
}
return true
l845:
position, tokenIndex = position845, tokenIndex845
return false
},
/* 53 MemoryRef <- <((SymbolRef BaseIndexScale) / SymbolRef / Low12BitsSymbolRef / (Offset* BaseIndexScale) / (SegmentRegister Offset BaseIndexScale) / (SegmentRegister BaseIndexScale) / (SegmentRegister Offset) / ARMBaseIndexScale / BaseIndexScale)> */
func() bool {
position921, tokenIndex921 := position, tokenIndex
{
position922 := position
{
position923, tokenIndex923 := position, tokenIndex
if !_rules[ruleSymbolRef]() {
goto l924
}
if !_rules[ruleBaseIndexScale]() {
goto l924
}
goto l923
l924:
position, tokenIndex = position923, tokenIndex923
if !_rules[ruleSymbolRef]() {
goto l925
}
goto l923
l925:
position, tokenIndex = position923, tokenIndex923
if !_rules[ruleLow12BitsSymbolRef]() {
goto l926
}
goto l923
l926:
position, tokenIndex = position923, tokenIndex923
l928:
{
position929, tokenIndex929 := position, tokenIndex
if !_rules[ruleOffset]() {
goto l929
}
goto l928
l929:
position, tokenIndex = position929, tokenIndex929
}
if !_rules[ruleBaseIndexScale]() {
goto l927
}
goto l923
l927:
position, tokenIndex = position923, tokenIndex923
if !_rules[ruleSegmentRegister]() {
goto l930
}
if !_rules[ruleOffset]() {
goto l930
}
if !_rules[ruleBaseIndexScale]() {
goto l930
}
goto l923
l930:
position, tokenIndex = position923, tokenIndex923
if !_rules[ruleSegmentRegister]() {
goto l931
}
if !_rules[ruleBaseIndexScale]() {
goto l931
}
goto l923
l931:
position, tokenIndex = position923, tokenIndex923
if !_rules[ruleSegmentRegister]() {
goto l932
}
if !_rules[ruleOffset]() {
goto l932
}
goto l923
l932:
position, tokenIndex = position923, tokenIndex923
if !_rules[ruleARMBaseIndexScale]() {
goto l933
}
goto l923
l933:
position, tokenIndex = position923, tokenIndex923
if !_rules[ruleBaseIndexScale]() {
goto l921
}
}
l923:
add(ruleMemoryRef, position922)
}
return true
l921:
position, tokenIndex = position921, tokenIndex921
return false
},
/* 54 SymbolRef <- <((Offset* '+')? (LocalSymbol / SymbolName) Offset* ('@' Section Offset*)?)> */
func() bool {
position934, tokenIndex934 := position, tokenIndex
{
position935 := position
{
position936, tokenIndex936 := position, tokenIndex
l938:
{
position939, tokenIndex939 := position, tokenIndex
if !_rules[ruleOffset]() {
goto l939
}
goto l938
l939:
position, tokenIndex = position939, tokenIndex939
}
if buffer[position] != rune('+') {
goto l936
}
position++
goto l937
l936:
position, tokenIndex = position936, tokenIndex936
}
l937:
{
position940, tokenIndex940 := position, tokenIndex
if !_rules[ruleLocalSymbol]() {
goto l941
}
goto l940
l941:
position, tokenIndex = position940, tokenIndex940
if !_rules[ruleSymbolName]() {
goto l934
}
}
l940:
l942:
{
position943, tokenIndex943 := position, tokenIndex
if !_rules[ruleOffset]() {
goto l943
}
goto l942
l943:
position, tokenIndex = position943, tokenIndex943
}
{
position944, tokenIndex944 := position, tokenIndex
if buffer[position] != rune('@') {
goto l944
}
position++
if !_rules[ruleSection]() {
goto l944
}
l946:
{
position947, tokenIndex947 := position, tokenIndex
if !_rules[ruleOffset]() {
goto l947
}
goto l946
l947:
position, tokenIndex = position947, tokenIndex947
}
goto l945
l944:
position, tokenIndex = position944, tokenIndex944
}
l945:
add(ruleSymbolRef, position935)
}
return true
l934:
position, tokenIndex = position934, tokenIndex934
return false
},
/* 55 Low12BitsSymbolRef <- <('#'? (':' ('l' / 'L') ('o' / 'O') '1' '2' ':') (LocalSymbol / SymbolName) Offset?)> */
func() bool {
position948, tokenIndex948 := position, tokenIndex
{
position949 := position
{
position950, tokenIndex950 := position, tokenIndex
if buffer[position] != rune('#') {
goto l950
}
position++
goto l951
l950:
position, tokenIndex = position950, tokenIndex950
}
l951:
if buffer[position] != rune(':') {
goto l948
}
position++
{
position952, tokenIndex952 := position, tokenIndex
if buffer[position] != rune('l') {
goto l953
}
position++
goto l952
l953:
position, tokenIndex = position952, tokenIndex952
if buffer[position] != rune('L') {
goto l948
}
position++
}
l952:
{
position954, tokenIndex954 := position, tokenIndex
if buffer[position] != rune('o') {
goto l955
}
position++
goto l954
l955:
position, tokenIndex = position954, tokenIndex954
if buffer[position] != rune('O') {
goto l948
}
position++
}
l954:
if buffer[position] != rune('1') {
goto l948
}
position++
if buffer[position] != rune('2') {
goto l948
}
position++
if buffer[position] != rune(':') {
goto l948
}
position++
{
position956, tokenIndex956 := position, tokenIndex
if !_rules[ruleLocalSymbol]() {
goto l957
}
goto l956
l957:
position, tokenIndex = position956, tokenIndex956
if !_rules[ruleSymbolName]() {
goto l948
}
}
l956:
{
position958, tokenIndex958 := position, tokenIndex
if !_rules[ruleOffset]() {
goto l958
}
goto l959
l958:
position, tokenIndex = position958, tokenIndex958
}
l959:
add(ruleLow12BitsSymbolRef, position949)
}
return true
l948:
position, tokenIndex = position948, tokenIndex948
return false
},
/* 56 ARMBaseIndexScale <- <('[' ARMRegister (',' WS? (('#'? Offset (('*' [0-9]+) / ('*' '(' [0-9]+ Operator [0-9]+ ')') / ('+' [0-9]+)*)?) / ARMGOTLow12 / Low12BitsSymbolRef / ARMRegister) (',' WS? ARMConstantTweak)?)? ']' ARMPostincrement?)> */
func() bool {
position960, tokenIndex960 := position, tokenIndex
{
position961 := position
if buffer[position] != rune('[') {
goto l960
}
position++
if !_rules[ruleARMRegister]() {
goto l960
}
{
position962, tokenIndex962 := position, tokenIndex
if buffer[position] != rune(',') {
goto l962
}
position++
{
position964, tokenIndex964 := position, tokenIndex
if !_rules[ruleWS]() {
goto l964
}
goto l965
l964:
position, tokenIndex = position964, tokenIndex964
}
l965:
{
position966, tokenIndex966 := position, tokenIndex
{
position968, tokenIndex968 := position, tokenIndex
if buffer[position] != rune('#') {
goto l968
}
position++
goto l969
l968:
position, tokenIndex = position968, tokenIndex968
}
l969:
if !_rules[ruleOffset]() {
goto l967
}
{
position970, tokenIndex970 := position, tokenIndex
{
position972, tokenIndex972 := position, tokenIndex
if buffer[position] != rune('*') {
goto l973
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l973
}
position++
l974:
{
position975, tokenIndex975 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l975
}
position++
goto l974
l975:
position, tokenIndex = position975, tokenIndex975
}
goto l972
l973:
position, tokenIndex = position972, tokenIndex972
if buffer[position] != rune('*') {
goto l976
}
position++
if buffer[position] != rune('(') {
goto l976
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l976
}
position++
l977:
{
position978, tokenIndex978 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l978
}
position++
goto l977
l978:
position, tokenIndex = position978, tokenIndex978
}
if !_rules[ruleOperator]() {
goto l976
}
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l976
}
position++
l979:
{
position980, tokenIndex980 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l980
}
position++
goto l979
l980:
position, tokenIndex = position980, tokenIndex980
}
if buffer[position] != rune(')') {
goto l976
}
position++
goto l972
l976:
position, tokenIndex = position972, tokenIndex972
l981:
{
position982, tokenIndex982 := position, tokenIndex
if buffer[position] != rune('+') {
goto l982
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l982
}
position++
l983:
{
position984, tokenIndex984 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l984
}
position++
goto l983
l984:
position, tokenIndex = position984, tokenIndex984
}
goto l981
l982:
position, tokenIndex = position982, tokenIndex982
}
}
l972:
goto l971
position, tokenIndex = position970, tokenIndex970
}
l971:
goto l966
l967:
position, tokenIndex = position966, tokenIndex966
if !_rules[ruleARMGOTLow12]() {
goto l985
}
goto l966
l985:
position, tokenIndex = position966, tokenIndex966
if !_rules[ruleLow12BitsSymbolRef]() {
goto l986
}
goto l966
l986:
position, tokenIndex = position966, tokenIndex966
if !_rules[ruleARMRegister]() {
goto l962
}
}
l966:
{
position987, tokenIndex987 := position, tokenIndex
if buffer[position] != rune(',') {
goto l987
}
position++
{
position989, tokenIndex989 := position, tokenIndex
if !_rules[ruleWS]() {
goto l989
}
goto l990
l989:
position, tokenIndex = position989, tokenIndex989
}
l990:
if !_rules[ruleARMConstantTweak]() {
goto l987
}
goto l988
l987:
position, tokenIndex = position987, tokenIndex987
}
l988:
goto l963
l962:
position, tokenIndex = position962, tokenIndex962
}
l963:
if buffer[position] != rune(']') {
goto l960
}
position++
{
position991, tokenIndex991 := position, tokenIndex
if !_rules[ruleARMPostincrement]() {
goto l991
}
goto l992
l991:
position, tokenIndex = position991, tokenIndex991
}
l992:
add(ruleARMBaseIndexScale, position961)
}
return true
l960:
position, tokenIndex = position960, tokenIndex960
return false
},
/* 57 ARMGOTLow12 <- <(':' ('g' / 'G') ('o' / 'O') ('t' / 'T') '_' ('l' / 'L') ('o' / 'O') '1' '2' ':' SymbolName)> */
func() bool {
position993, tokenIndex993 := position, tokenIndex
{
position994 := position
if buffer[position] != rune(':') {
goto l993
}
position++
{
position995, tokenIndex995 := position, tokenIndex
if buffer[position] != rune('g') {
goto l996
}
position++
goto l995
l996:
position, tokenIndex = position995, tokenIndex995
if buffer[position] != rune('G') {
goto l993
}
position++
}
l995:
{
position997, tokenIndex997 := position, tokenIndex
if buffer[position] != rune('o') {
goto l998
}
position++
goto l997
l998:
position, tokenIndex = position997, tokenIndex997
if buffer[position] != rune('O') {
goto l993
}
position++
}
l997:
{
position999, tokenIndex999 := position, tokenIndex
if buffer[position] != rune('t') {
goto l1000
}
position++
goto l999
l1000:
position, tokenIndex = position999, tokenIndex999
if buffer[position] != rune('T') {
goto l993
}
position++
}
l999:
if buffer[position] != rune('_') {
goto l993
}
position++
{
position1001, tokenIndex1001 := position, tokenIndex
if buffer[position] != rune('l') {
goto l1002
}
position++
goto l1001
l1002:
position, tokenIndex = position1001, tokenIndex1001
if buffer[position] != rune('L') {
goto l993
}
position++
}
l1001:
{
position1003, tokenIndex1003 := position, tokenIndex
if buffer[position] != rune('o') {
goto l1004
}
position++
goto l1003
l1004:
position, tokenIndex = position1003, tokenIndex1003
if buffer[position] != rune('O') {
goto l993
}
position++
}
l1003:
if buffer[position] != rune('1') {
goto l993
}
position++
if buffer[position] != rune('2') {
goto l993
}
position++
if buffer[position] != rune(':') {
goto l993
}
position++
if !_rules[ruleSymbolName]() {
goto l993
}
add(ruleARMGOTLow12, position994)
}
return true
l993:
position, tokenIndex = position993, tokenIndex993
return false
},
/* 58 ARMPostincrement <- <'!'> */
func() bool {
position1005, tokenIndex1005 := position, tokenIndex
{
position1006 := position
if buffer[position] != rune('!') {
goto l1005
}
position++
add(ruleARMPostincrement, position1006)
}
return true
l1005:
position, tokenIndex = position1005, tokenIndex1005
return false
},
/* 59 BaseIndexScale <- <('(' RegisterOrConstant? WS? (',' WS? RegisterOrConstant WS? (',' [0-9]+)?)? ')')> */
func() bool {
position1007, tokenIndex1007 := position, tokenIndex
{
position1008 := position
if buffer[position] != rune('(') {
goto l1007
}
position++
{
position1009, tokenIndex1009 := position, tokenIndex
if !_rules[ruleRegisterOrConstant]() {
goto l1009
}
goto l1010
l1009:
position, tokenIndex = position1009, tokenIndex1009
}
l1010:
{
position1011, tokenIndex1011 := position, tokenIndex
if !_rules[ruleWS]() {
goto l1011
}
goto l1012
l1011:
position, tokenIndex = position1011, tokenIndex1011
}
l1012:
{
position1013, tokenIndex1013 := position, tokenIndex
if buffer[position] != rune(',') {
goto l1013
}
position++
{
position1015, tokenIndex1015 := position, tokenIndex
if !_rules[ruleWS]() {
goto l1015
}
goto l1016
l1015:
position, tokenIndex = position1015, tokenIndex1015
}
l1016:
if !_rules[ruleRegisterOrConstant]() {
goto l1013
}
{
position1017, tokenIndex1017 := position, tokenIndex
if !_rules[ruleWS]() {
goto l1017
}
goto l1018
l1017:
position, tokenIndex = position1017, tokenIndex1017
}
l1018:
{
position1019, tokenIndex1019 := position, tokenIndex
if buffer[position] != rune(',') {
goto l1019
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l1019
}
position++
l1021:
{
position1022, tokenIndex1022 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l1022
}
position++
goto l1021
l1022:
position, tokenIndex = position1022, tokenIndex1022
}
goto l1020
l1019:
position, tokenIndex = position1019, tokenIndex1019
}
l1020:
goto l1014
l1013:
position, tokenIndex = position1013, tokenIndex1013
}
l1014:
if buffer[position] != rune(')') {
goto l1007
}
position++
add(ruleBaseIndexScale, position1008)
}
return true
l1007:
position, tokenIndex = position1007, tokenIndex1007
return false
},
/* 60 Operator <- <('+' / '-')> */
func() bool {
position1023, tokenIndex1023 := position, tokenIndex
{
position1024 := position
{
position1025, tokenIndex1025 := position, tokenIndex
if buffer[position] != rune('+') {
goto l1026
}
position++
goto l1025
l1026:
position, tokenIndex = position1025, tokenIndex1025
if buffer[position] != rune('-') {
goto l1023
}
position++
}
l1025:
add(ruleOperator, position1024)
}
return true
l1023:
position, tokenIndex = position1023, tokenIndex1023
return false
},
/* 61 Offset <- <('+'? '-'? (('0' ('b' / 'B') ('0' / '1')+) / ('0' ('x' / 'X') ([0-9] / [0-9] / ([a-f] / [A-F]))+) / [0-9]+))> */
func() bool {
position1027, tokenIndex1027 := position, tokenIndex
{
position1028 := position
{
position1029, tokenIndex1029 := position, tokenIndex
if buffer[position] != rune('+') {
goto l1029
}
position++
goto l1030
l1029:
position, tokenIndex = position1029, tokenIndex1029
}
l1030:
{
position1031, tokenIndex1031 := position, tokenIndex
if buffer[position] != rune('-') {
goto l1031
}
position++
goto l1032
l1031:
position, tokenIndex = position1031, tokenIndex1031
}
l1032:
{
position1033, tokenIndex1033 := position, tokenIndex
if buffer[position] != rune('0') {
goto l1034
}
position++
{
position1035, tokenIndex1035 := position, tokenIndex
if buffer[position] != rune('b') {
goto l1036
}
position++
goto l1035
l1036:
position, tokenIndex = position1035, tokenIndex1035
if buffer[position] != rune('B') {
goto l1034
}
position++
}
l1035:
{
position1039, tokenIndex1039 := position, tokenIndex
if buffer[position] != rune('0') {
goto l1040
}
position++
goto l1039
l1040:
position, tokenIndex = position1039, tokenIndex1039
if buffer[position] != rune('1') {
goto l1034
}
position++
}
l1039:
l1037:
{
position1038, tokenIndex1038 := position, tokenIndex
{
position1041, tokenIndex1041 := position, tokenIndex
if buffer[position] != rune('0') {
goto l1042
}
position++
goto l1041
l1042:
position, tokenIndex = position1041, tokenIndex1041
if buffer[position] != rune('1') {
goto l1038
}
position++
}
l1041:
goto l1037
l1038:
position, tokenIndex = position1038, tokenIndex1038
}
goto l1033
l1034:
position, tokenIndex = position1033, tokenIndex1033
if buffer[position] != rune('0') {
goto l1043
}
position++
{
position1044, tokenIndex1044 := position, tokenIndex
if buffer[position] != rune('x') {
goto l1045
}
position++
goto l1044
l1045:
position, tokenIndex = position1044, tokenIndex1044
if buffer[position] != rune('X') {
goto l1043
}
position++
}
l1044:
{
position1048, tokenIndex1048 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l1049
}
position++
goto l1048
l1049:
position, tokenIndex = position1048, tokenIndex1048
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l1050
}
position++
goto l1048
l1050:
position, tokenIndex = position1048, tokenIndex1048
{
position1051, tokenIndex1051 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('f') {
goto l1052
}
position++
goto l1051
l1052:
position, tokenIndex = position1051, tokenIndex1051
if c := buffer[position]; c < rune('A') || c > rune('F') {
goto l1043
}
position++
}
l1051:
}
l1048:
l1046:
{
position1047, tokenIndex1047 := position, tokenIndex
{
position1053, tokenIndex1053 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l1054
}
position++
goto l1053
l1054:
position, tokenIndex = position1053, tokenIndex1053
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l1055
}
position++
goto l1053
l1055:
position, tokenIndex = position1053, tokenIndex1053
{
position1056, tokenIndex1056 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('f') {
goto l1057
}
position++
goto l1056
l1057:
position, tokenIndex = position1056, tokenIndex1056
if c := buffer[position]; c < rune('A') || c > rune('F') {
goto l1047
}
position++
}
l1056:
}
l1053:
goto l1046
l1047:
position, tokenIndex = position1047, tokenIndex1047
}
goto l1033
l1043:
position, tokenIndex = position1033, tokenIndex1033
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l1027
}
position++
l1058:
{
position1059, tokenIndex1059 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l1059
}
position++
goto l1058
l1059:
position, tokenIndex = position1059, tokenIndex1059
}
}
l1033:
add(ruleOffset, position1028)
}
return true
l1027:
position, tokenIndex = position1027, tokenIndex1027
return false
},
/* 62 Section <- <([a-z] / [A-Z] / '@')+> */
func() bool {
position1060, tokenIndex1060 := position, tokenIndex
{
position1061 := position
{
position1064, tokenIndex1064 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l1065
}
position++
goto l1064
l1065:
position, tokenIndex = position1064, tokenIndex1064
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l1066
}
position++
goto l1064
l1066:
position, tokenIndex = position1064, tokenIndex1064
if buffer[position] != rune('@') {
goto l1060
}
position++
}
l1064:
l1062:
{
position1063, tokenIndex1063 := position, tokenIndex
{
position1067, tokenIndex1067 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l1068
}
position++
goto l1067
l1068:
position, tokenIndex = position1067, tokenIndex1067
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l1069
}
position++
goto l1067
l1069:
position, tokenIndex = position1067, tokenIndex1067
if buffer[position] != rune('@') {
goto l1063
}
position++
}
l1067:
goto l1062
l1063:
position, tokenIndex = position1063, tokenIndex1063
}
add(ruleSection, position1061)
}
return true
l1060:
position, tokenIndex = position1060, tokenIndex1060
return false
},
/* 63 SegmentRegister <- <('%' ([c-g] / 's') ('s' ':'))> */
func() bool {
position1070, tokenIndex1070 := position, tokenIndex
{
position1071 := position
if buffer[position] != rune('%') {
goto l1070
}
position++
{
position1072, tokenIndex1072 := position, tokenIndex
if c := buffer[position]; c < rune('c') || c > rune('g') {
goto l1073
}
position++
goto l1072
l1073:
position, tokenIndex = position1072, tokenIndex1072
if buffer[position] != rune('s') {
goto l1070
}
position++
}
l1072:
if buffer[position] != rune('s') {
goto l1070
}
position++
if buffer[position] != rune(':') {
goto l1070
}
position++
add(ruleSegmentRegister, position1071)
}
return true
l1070:
position, tokenIndex = position1070, tokenIndex1070
return false
},
}
p.rules = _rules
return nil
}