blob: be08c333d6e4840bee214e298331a0a308f4f70a [file] [edit]
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
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",
"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 [64]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 / 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[ruleInstruction]() {
goto l16
}
goto l11
l16:
position, tokenIndex = position11, tokenIndex11
if !_rules[ruleDirective]() {
goto l17
}
goto l11
l17:
position, tokenIndex = position11, tokenIndex11
if !_rules[ruleComment]() {
goto l18
}
goto l11
l18:
position, tokenIndex = position11, tokenIndex11
}
l11:
{
position19, tokenIndex19 := position, tokenIndex
if !_rules[ruleWS]() {
goto l19
}
goto l20
l19:
position, tokenIndex = position19, tokenIndex19
}
l20:
{
position21, tokenIndex21 := position, tokenIndex
{
position23, tokenIndex23 := position, tokenIndex
if !_rules[ruleComment]() {
goto l23
}
goto l24
l23:
position, tokenIndex = position23, tokenIndex23
}
l24:
if buffer[position] != rune('\n') {
goto l22
}
position++
goto l21
l22:
position, tokenIndex = position21, tokenIndex21
if buffer[position] != rune(';') {
goto l5
}
position++
}
l21:
}
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 {
position25, tokenIndex25 := position, tokenIndex
{
position26 := position
{
position27, tokenIndex27 := position, tokenIndex
if buffer[position] != rune('.') {
goto l28
}
position++
{
position29, tokenIndex29 := position, tokenIndex
if buffer[position] != rune('g') {
goto l30
}
position++
goto l29
l30:
position, tokenIndex = position29, tokenIndex29
if buffer[position] != rune('G') {
goto l28
}
position++
}
l29:
{
position31, tokenIndex31 := position, tokenIndex
if buffer[position] != rune('l') {
goto l32
}
position++
goto l31
l32:
position, tokenIndex = position31, tokenIndex31
if buffer[position] != rune('L') {
goto l28
}
position++
}
l31:
{
position33, tokenIndex33 := position, tokenIndex
if buffer[position] != rune('o') {
goto l34
}
position++
goto l33
l34:
position, tokenIndex = position33, tokenIndex33
if buffer[position] != rune('O') {
goto l28
}
position++
}
l33:
{
position35, tokenIndex35 := position, tokenIndex
if buffer[position] != rune('b') {
goto l36
}
position++
goto l35
l36:
position, tokenIndex = position35, tokenIndex35
if buffer[position] != rune('B') {
goto l28
}
position++
}
l35:
{
position37, tokenIndex37 := position, tokenIndex
if buffer[position] != rune('a') {
goto l38
}
position++
goto l37
l38:
position, tokenIndex = position37, tokenIndex37
if buffer[position] != rune('A') {
goto l28
}
position++
}
l37:
{
position39, tokenIndex39 := position, tokenIndex
if buffer[position] != rune('l') {
goto l40
}
position++
goto l39
l40:
position, tokenIndex = position39, tokenIndex39
if buffer[position] != rune('L') {
goto l28
}
position++
}
l39:
goto l27
l28:
position, tokenIndex = position27, tokenIndex27
if buffer[position] != rune('.') {
goto l25
}
position++
{
position41, tokenIndex41 := position, tokenIndex
if buffer[position] != rune('g') {
goto l42
}
position++
goto l41
l42:
position, tokenIndex = position41, tokenIndex41
if buffer[position] != rune('G') {
goto l25
}
position++
}
l41:
{
position43, tokenIndex43 := position, tokenIndex
if buffer[position] != rune('l') {
goto l44
}
position++
goto l43
l44:
position, tokenIndex = position43, tokenIndex43
if buffer[position] != rune('L') {
goto l25
}
position++
}
l43:
{
position45, tokenIndex45 := position, tokenIndex
if buffer[position] != rune('o') {
goto l46
}
position++
goto l45
l46:
position, tokenIndex = position45, tokenIndex45
if buffer[position] != rune('O') {
goto l25
}
position++
}
l45:
{
position47, tokenIndex47 := position, tokenIndex
if buffer[position] != rune('b') {
goto l48
}
position++
goto l47
l48:
position, tokenIndex = position47, tokenIndex47
if buffer[position] != rune('B') {
goto l25
}
position++
}
l47:
{
position49, tokenIndex49 := position, tokenIndex
if buffer[position] != rune('l') {
goto l50
}
position++
goto l49
l50:
position, tokenIndex = position49, tokenIndex49
if buffer[position] != rune('L') {
goto l25
}
position++
}
l49:
}
l27:
if !_rules[ruleWS]() {
goto l25
}
if !_rules[ruleSymbolName]() {
goto l25
}
add(ruleGlobalDirective, position26)
}
return true
l25:
position, tokenIndex = position25, tokenIndex25
return false
},
/* 3 Directive <- <('.' DirectiveName (WS Args)?)> */
func() bool {
position51, tokenIndex51 := position, tokenIndex
{
position52 := position
if buffer[position] != rune('.') {
goto l51
}
position++
if !_rules[ruleDirectiveName]() {
goto l51
}
{
position53, tokenIndex53 := position, tokenIndex
if !_rules[ruleWS]() {
goto l53
}
if !_rules[ruleArgs]() {
goto l53
}
goto l54
l53:
position, tokenIndex = position53, tokenIndex53
}
l54:
add(ruleDirective, position52)
}
return true
l51:
position, tokenIndex = position51, tokenIndex51
return false
},
/* 4 DirectiveName <- <([a-z] / [A-Z] / ([0-9] / [0-9]) / '_')+> */
func() bool {
position55, tokenIndex55 := position, tokenIndex
{
position56 := position
{
position59, tokenIndex59 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l60
}
position++
goto l59
l60:
position, tokenIndex = position59, tokenIndex59
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l61
}
position++
goto l59
l61:
position, tokenIndex = position59, tokenIndex59
{
position63, tokenIndex63 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l64
}
position++
goto l63
l64:
position, tokenIndex = position63, tokenIndex63
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l62
}
position++
}
l63:
goto l59
l62:
position, tokenIndex = position59, tokenIndex59
if buffer[position] != rune('_') {
goto l55
}
position++
}
l59:
l57:
{
position58, tokenIndex58 := position, tokenIndex
{
position65, tokenIndex65 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l66
}
position++
goto l65
l66:
position, tokenIndex = position65, tokenIndex65
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l67
}
position++
goto l65
l67:
position, tokenIndex = position65, tokenIndex65
{
position69, tokenIndex69 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l70
}
position++
goto l69
l70:
position, tokenIndex = position69, tokenIndex69
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l68
}
position++
}
l69:
goto l65
l68:
position, tokenIndex = position65, tokenIndex65
if buffer[position] != rune('_') {
goto l58
}
position++
}
l65:
goto l57
l58:
position, tokenIndex = position58, tokenIndex58
}
add(ruleDirectiveName, position56)
}
return true
l55:
position, tokenIndex = position55, tokenIndex55
return false
},
/* 5 LocationDirective <- <(FileDirective / LocDirective)> */
func() bool {
position71, tokenIndex71 := position, tokenIndex
{
position72 := position
{
position73, tokenIndex73 := position, tokenIndex
if !_rules[ruleFileDirective]() {
goto l74
}
goto l73
l74:
position, tokenIndex = position73, tokenIndex73
if !_rules[ruleLocDirective]() {
goto l71
}
}
l73:
add(ruleLocationDirective, position72)
}
return true
l71:
position, tokenIndex = position71, tokenIndex71
return false
},
/* 6 FileDirective <- <('.' ('f' / 'F') ('i' / 'I') ('l' / 'L') ('e' / 'E') WS (!('#' / '\n') .)+)> */
func() bool {
position75, tokenIndex75 := position, tokenIndex
{
position76 := position
if buffer[position] != rune('.') {
goto l75
}
position++
{
position77, tokenIndex77 := position, tokenIndex
if buffer[position] != rune('f') {
goto l78
}
position++
goto l77
l78:
position, tokenIndex = position77, tokenIndex77
if buffer[position] != rune('F') {
goto l75
}
position++
}
l77:
{
position79, tokenIndex79 := position, tokenIndex
if buffer[position] != rune('i') {
goto l80
}
position++
goto l79
l80:
position, tokenIndex = position79, tokenIndex79
if buffer[position] != rune('I') {
goto l75
}
position++
}
l79:
{
position81, tokenIndex81 := position, tokenIndex
if buffer[position] != rune('l') {
goto l82
}
position++
goto l81
l82:
position, tokenIndex = position81, tokenIndex81
if buffer[position] != rune('L') {
goto l75
}
position++
}
l81:
{
position83, tokenIndex83 := position, tokenIndex
if buffer[position] != rune('e') {
goto l84
}
position++
goto l83
l84:
position, tokenIndex = position83, tokenIndex83
if buffer[position] != rune('E') {
goto l75
}
position++
}
l83:
if !_rules[ruleWS]() {
goto l75
}
{
position87, tokenIndex87 := position, tokenIndex
{
position88, tokenIndex88 := position, tokenIndex
if buffer[position] != rune('#') {
goto l89
}
position++
goto l88
l89:
position, tokenIndex = position88, tokenIndex88
if buffer[position] != rune('\n') {
goto l87
}
position++
}
l88:
goto l75
l87:
position, tokenIndex = position87, tokenIndex87
}
if !matchDot() {
goto l75
}
l85:
{
position86, tokenIndex86 := position, tokenIndex
{
position90, tokenIndex90 := position, tokenIndex
{
position91, tokenIndex91 := position, tokenIndex
if buffer[position] != rune('#') {
goto l92
}
position++
goto l91
l92:
position, tokenIndex = position91, tokenIndex91
if buffer[position] != rune('\n') {
goto l90
}
position++
}
l91:
goto l86
l90:
position, tokenIndex = position90, tokenIndex90
}
if !matchDot() {
goto l86
}
goto l85
l86:
position, tokenIndex = position86, tokenIndex86
}
add(ruleFileDirective, position76)
}
return true
l75:
position, tokenIndex = position75, tokenIndex75
return false
},
/* 7 LocDirective <- <('.' ('l' / 'L') ('o' / 'O') ('c' / 'C') WS (!('#' / '/' / '\n') .)+)> */
func() bool {
position93, tokenIndex93 := position, tokenIndex
{
position94 := position
if buffer[position] != rune('.') {
goto l93
}
position++
{
position95, tokenIndex95 := position, tokenIndex
if buffer[position] != rune('l') {
goto l96
}
position++
goto l95
l96:
position, tokenIndex = position95, tokenIndex95
if buffer[position] != rune('L') {
goto l93
}
position++
}
l95:
{
position97, tokenIndex97 := position, tokenIndex
if buffer[position] != rune('o') {
goto l98
}
position++
goto l97
l98:
position, tokenIndex = position97, tokenIndex97
if buffer[position] != rune('O') {
goto l93
}
position++
}
l97:
{
position99, tokenIndex99 := position, tokenIndex
if buffer[position] != rune('c') {
goto l100
}
position++
goto l99
l100:
position, tokenIndex = position99, tokenIndex99
if buffer[position] != rune('C') {
goto l93
}
position++
}
l99:
if !_rules[ruleWS]() {
goto l93
}
{
position103, tokenIndex103 := position, tokenIndex
{
position104, tokenIndex104 := position, tokenIndex
if buffer[position] != rune('#') {
goto l105
}
position++
goto l104
l105:
position, tokenIndex = position104, tokenIndex104
if buffer[position] != rune('/') {
goto l106
}
position++
goto l104
l106:
position, tokenIndex = position104, tokenIndex104
if buffer[position] != rune('\n') {
goto l103
}
position++
}
l104:
goto l93
l103:
position, tokenIndex = position103, tokenIndex103
}
if !matchDot() {
goto l93
}
l101:
{
position102, tokenIndex102 := position, tokenIndex
{
position107, tokenIndex107 := position, tokenIndex
{
position108, tokenIndex108 := position, tokenIndex
if buffer[position] != rune('#') {
goto l109
}
position++
goto l108
l109:
position, tokenIndex = position108, tokenIndex108
if buffer[position] != rune('/') {
goto l110
}
position++
goto l108
l110:
position, tokenIndex = position108, tokenIndex108
if buffer[position] != rune('\n') {
goto l107
}
position++
}
l108:
goto l102
l107:
position, tokenIndex = position107, tokenIndex107
}
if !matchDot() {
goto l102
}
goto l101
l102:
position, tokenIndex = position102, tokenIndex102
}
add(ruleLocDirective, position94)
}
return true
l93:
position, tokenIndex = position93, tokenIndex93
return false
},
/* 8 Args <- <(Arg (WS? ',' WS? Arg)*)> */
func() bool {
position111, tokenIndex111 := position, tokenIndex
{
position112 := position
if !_rules[ruleArg]() {
goto l111
}
l113:
{
position114, tokenIndex114 := position, tokenIndex
{
position115, tokenIndex115 := position, tokenIndex
if !_rules[ruleWS]() {
goto l115
}
goto l116
l115:
position, tokenIndex = position115, tokenIndex115
}
l116:
if buffer[position] != rune(',') {
goto l114
}
position++
{
position117, tokenIndex117 := position, tokenIndex
if !_rules[ruleWS]() {
goto l117
}
goto l118
l117:
position, tokenIndex = position117, tokenIndex117
}
l118:
if !_rules[ruleArg]() {
goto l114
}
goto l113
l114:
position, tokenIndex = position114, tokenIndex114
}
add(ruleArgs, position112)
}
return true
l111:
position, tokenIndex = position111, tokenIndex111
return false
},
/* 9 Arg <- <(QuotedArg / ([0-9] / [0-9] / ([a-z] / [A-Z]) / '%' / '+' / '-' / '*' / '_' / '@' / '.' / '$')*)> */
func() bool {
{
position120 := position
{
position121, tokenIndex121 := position, tokenIndex
if !_rules[ruleQuotedArg]() {
goto l122
}
goto l121
l122:
position, tokenIndex = position121, tokenIndex121
l123:
{
position124, tokenIndex124 := position, tokenIndex
{
position125, tokenIndex125 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l126
}
position++
goto l125
l126:
position, tokenIndex = position125, tokenIndex125
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l127
}
position++
goto l125
l127:
position, tokenIndex = position125, tokenIndex125
{
position129, tokenIndex129 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l130
}
position++
goto l129
l130:
position, tokenIndex = position129, tokenIndex129
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l128
}
position++
}
l129:
goto l125
l128:
position, tokenIndex = position125, tokenIndex125
if buffer[position] != rune('%') {
goto l131
}
position++
goto l125
l131:
position, tokenIndex = position125, tokenIndex125
if buffer[position] != rune('+') {
goto l132
}
position++
goto l125
l132:
position, tokenIndex = position125, tokenIndex125
if buffer[position] != rune('-') {
goto l133
}
position++
goto l125
l133:
position, tokenIndex = position125, tokenIndex125
if buffer[position] != rune('*') {
goto l134
}
position++
goto l125
l134:
position, tokenIndex = position125, tokenIndex125
if buffer[position] != rune('_') {
goto l135
}
position++
goto l125
l135:
position, tokenIndex = position125, tokenIndex125
if buffer[position] != rune('@') {
goto l136
}
position++
goto l125
l136:
position, tokenIndex = position125, tokenIndex125
if buffer[position] != rune('.') {
goto l137
}
position++
goto l125
l137:
position, tokenIndex = position125, tokenIndex125
if buffer[position] != rune('$') {
goto l124
}
position++
}
l125:
goto l123
l124:
position, tokenIndex = position124, tokenIndex124
}
}
l121:
add(ruleArg, position120)
}
return true
},
/* 10 QuotedArg <- <('"' QuotedText '"')> */
func() bool {
position138, tokenIndex138 := position, tokenIndex
{
position139 := position
if buffer[position] != rune('"') {
goto l138
}
position++
if !_rules[ruleQuotedText]() {
goto l138
}
if buffer[position] != rune('"') {
goto l138
}
position++
add(ruleQuotedArg, position139)
}
return true
l138:
position, tokenIndex = position138, tokenIndex138
return false
},
/* 11 QuotedText <- <(EscapedChar / (!'"' .))*> */
func() bool {
{
position141 := position
l142:
{
position143, tokenIndex143 := position, tokenIndex
{
position144, tokenIndex144 := position, tokenIndex
if !_rules[ruleEscapedChar]() {
goto l145
}
goto l144
l145:
position, tokenIndex = position144, tokenIndex144
{
position146, tokenIndex146 := position, tokenIndex
if buffer[position] != rune('"') {
goto l146
}
position++
goto l143
l146:
position, tokenIndex = position146, tokenIndex146
}
if !matchDot() {
goto l143
}
}
l144:
goto l142
l143:
position, tokenIndex = position143, tokenIndex143
}
add(ruleQuotedText, position141)
}
return true
},
/* 12 SymbolDefiningDirective <- <((SymbolDefiningDirectiveName WS (LocalSymbol / SymbolName) WS? ',' WS? SymbolArg) / ((LocalSymbol / SymbolName) WS? '=' WS? SymbolArg))> */
func() bool {
position147, tokenIndex147 := position, tokenIndex
{
position148 := position
{
position149, tokenIndex149 := position, tokenIndex
if !_rules[ruleSymbolDefiningDirectiveName]() {
goto l150
}
if !_rules[ruleWS]() {
goto l150
}
{
position151, tokenIndex151 := position, tokenIndex
if !_rules[ruleLocalSymbol]() {
goto l152
}
goto l151
l152:
position, tokenIndex = position151, tokenIndex151
if !_rules[ruleSymbolName]() {
goto l150
}
}
l151:
{
position153, tokenIndex153 := position, tokenIndex
if !_rules[ruleWS]() {
goto l153
}
goto l154
l153:
position, tokenIndex = position153, tokenIndex153
}
l154:
if buffer[position] != rune(',') {
goto l150
}
position++
{
position155, tokenIndex155 := position, tokenIndex
if !_rules[ruleWS]() {
goto l155
}
goto l156
l155:
position, tokenIndex = position155, tokenIndex155
}
l156:
if !_rules[ruleSymbolArg]() {
goto l150
}
goto l149
l150:
position, tokenIndex = position149, tokenIndex149
{
position157, tokenIndex157 := position, tokenIndex
if !_rules[ruleLocalSymbol]() {
goto l158
}
goto l157
l158:
position, tokenIndex = position157, tokenIndex157
if !_rules[ruleSymbolName]() {
goto l147
}
}
l157:
{
position159, tokenIndex159 := position, tokenIndex
if !_rules[ruleWS]() {
goto l159
}
goto l160
l159:
position, tokenIndex = position159, tokenIndex159
}
l160:
if buffer[position] != rune('=') {
goto l147
}
position++
{
position161, tokenIndex161 := position, tokenIndex
if !_rules[ruleWS]() {
goto l161
}
goto l162
l161:
position, tokenIndex = position161, tokenIndex161
}
l162:
if !_rules[ruleSymbolArg]() {
goto l147
}
}
l149:
add(ruleSymbolDefiningDirective, position148)
}
return true
l147:
position, tokenIndex = position147, tokenIndex147
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 {
position163, tokenIndex163 := position, tokenIndex
{
position164 := position
{
position165, tokenIndex165 := position, tokenIndex
if buffer[position] != rune('.') {
goto l166
}
position++
{
position167, tokenIndex167 := position, tokenIndex
if buffer[position] != rune('e') {
goto l168
}
position++
goto l167
l168:
position, tokenIndex = position167, tokenIndex167
if buffer[position] != rune('E') {
goto l166
}
position++
}
l167:
{
position169, tokenIndex169 := position, tokenIndex
if buffer[position] != rune('q') {
goto l170
}
position++
goto l169
l170:
position, tokenIndex = position169, tokenIndex169
if buffer[position] != rune('Q') {
goto l166
}
position++
}
l169:
{
position171, tokenIndex171 := position, tokenIndex
if buffer[position] != rune('u') {
goto l172
}
position++
goto l171
l172:
position, tokenIndex = position171, tokenIndex171
if buffer[position] != rune('U') {
goto l166
}
position++
}
l171:
{
position173, tokenIndex173 := position, tokenIndex
if buffer[position] != rune('i') {
goto l174
}
position++
goto l173
l174:
position, tokenIndex = position173, tokenIndex173
if buffer[position] != rune('I') {
goto l166
}
position++
}
l173:
{
position175, tokenIndex175 := position, tokenIndex
if buffer[position] != rune('v') {
goto l176
}
position++
goto l175
l176:
position, tokenIndex = position175, tokenIndex175
if buffer[position] != rune('V') {
goto l166
}
position++
}
l175:
goto l165
l166:
position, tokenIndex = position165, tokenIndex165
if buffer[position] != rune('.') {
goto l177
}
position++
{
position178, tokenIndex178 := position, tokenIndex
if buffer[position] != rune('e') {
goto l179
}
position++
goto l178
l179:
position, tokenIndex = position178, tokenIndex178
if buffer[position] != rune('E') {
goto l177
}
position++
}
l178:
{
position180, tokenIndex180 := position, tokenIndex
if buffer[position] != rune('q') {
goto l181
}
position++
goto l180
l181:
position, tokenIndex = position180, tokenIndex180
if buffer[position] != rune('Q') {
goto l177
}
position++
}
l180:
{
position182, tokenIndex182 := position, tokenIndex
if buffer[position] != rune('u') {
goto l183
}
position++
goto l182
l183:
position, tokenIndex = position182, tokenIndex182
if buffer[position] != rune('U') {
goto l177
}
position++
}
l182:
goto l165
l177:
position, tokenIndex = position165, tokenIndex165
if buffer[position] != rune('.') {
goto l163
}
position++
{
position184, tokenIndex184 := position, tokenIndex
if buffer[position] != rune('s') {
goto l185
}
position++
goto l184
l185:
position, tokenIndex = position184, tokenIndex184
if buffer[position] != rune('S') {
goto l163
}
position++
}
l184:
{
position186, tokenIndex186 := position, tokenIndex
if buffer[position] != rune('e') {
goto l187
}
position++
goto l186
l187:
position, tokenIndex = position186, tokenIndex186
if buffer[position] != rune('E') {
goto l163
}
position++
}
l186:
{
position188, tokenIndex188 := position, tokenIndex
if buffer[position] != rune('t') {
goto l189
}
position++
goto l188
l189:
position, tokenIndex = position188, tokenIndex188
if buffer[position] != rune('T') {
goto l163
}
position++
}
l188:
}
l165:
add(ruleSymbolDefiningDirectiveName, position164)
}
return true
l163:
position, tokenIndex = position163, tokenIndex163
return false
},
/* 14 LabelContainingDirective <- <(LabelContainingDirectiveName WS SymbolArgs)> */
func() bool {
position190, tokenIndex190 := position, tokenIndex
{
position191 := position
if !_rules[ruleLabelContainingDirectiveName]() {
goto l190
}
if !_rules[ruleWS]() {
goto l190
}
if !_rules[ruleSymbolArgs]() {
goto l190
}
add(ruleLabelContainingDirective, position191)
}
return true
l190:
position, tokenIndex = position190, tokenIndex190
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 {
position192, tokenIndex192 := position, tokenIndex
{
position193 := position
{
position194, tokenIndex194 := position, tokenIndex
if buffer[position] != rune('.') {
goto l195
}
position++
{
position196, tokenIndex196 := position, tokenIndex
if buffer[position] != rune('x') {
goto l197
}
position++
goto l196
l197:
position, tokenIndex = position196, tokenIndex196
if buffer[position] != rune('X') {
goto l195
}
position++
}
l196:
{
position198, tokenIndex198 := position, tokenIndex
if buffer[position] != rune('w') {
goto l199
}
position++
goto l198
l199:
position, tokenIndex = position198, tokenIndex198
if buffer[position] != rune('W') {
goto l195
}
position++
}
l198:
{
position200, tokenIndex200 := position, tokenIndex
if buffer[position] != rune('o') {
goto l201
}
position++
goto l200
l201:
position, tokenIndex = position200, tokenIndex200
if buffer[position] != rune('O') {
goto l195
}
position++
}
l200:
{
position202, tokenIndex202 := position, tokenIndex
if buffer[position] != rune('r') {
goto l203
}
position++
goto l202
l203:
position, tokenIndex = position202, tokenIndex202
if buffer[position] != rune('R') {
goto l195
}
position++
}
l202:
{
position204, tokenIndex204 := position, tokenIndex
if buffer[position] != rune('d') {
goto l205
}
position++
goto l204
l205:
position, tokenIndex = position204, tokenIndex204
if buffer[position] != rune('D') {
goto l195
}
position++
}
l204:
goto l194
l195:
position, tokenIndex = position194, tokenIndex194
if buffer[position] != rune('.') {
goto l206
}
position++
{
position207, tokenIndex207 := position, tokenIndex
if buffer[position] != rune('w') {
goto l208
}
position++
goto l207
l208:
position, tokenIndex = position207, tokenIndex207
if buffer[position] != rune('W') {
goto l206
}
position++
}
l207:
{
position209, tokenIndex209 := position, tokenIndex
if buffer[position] != rune('o') {
goto l210
}
position++
goto l209
l210:
position, tokenIndex = position209, tokenIndex209
if buffer[position] != rune('O') {
goto l206
}
position++
}
l209:
{
position211, tokenIndex211 := position, tokenIndex
if buffer[position] != rune('r') {
goto l212
}
position++
goto l211
l212:
position, tokenIndex = position211, tokenIndex211
if buffer[position] != rune('R') {
goto l206
}
position++
}
l211:
{
position213, tokenIndex213 := position, tokenIndex
if buffer[position] != rune('d') {
goto l214
}
position++
goto l213
l214:
position, tokenIndex = position213, tokenIndex213
if buffer[position] != rune('D') {
goto l206
}
position++
}
l213:
goto l194
l206:
position, tokenIndex = position194, tokenIndex194
if buffer[position] != rune('.') {
goto l215
}
position++
{
position216, tokenIndex216 := position, tokenIndex
if buffer[position] != rune('h') {
goto l217
}
position++
goto l216
l217:
position, tokenIndex = position216, tokenIndex216
if buffer[position] != rune('H') {
goto l215
}
position++
}
l216:
{
position218, tokenIndex218 := position, tokenIndex
if buffer[position] != rune('w') {
goto l219
}
position++
goto l218
l219:
position, tokenIndex = position218, tokenIndex218
if buffer[position] != rune('W') {
goto l215
}
position++
}
l218:
{
position220, tokenIndex220 := position, tokenIndex
if buffer[position] != rune('o') {
goto l221
}
position++
goto l220
l221:
position, tokenIndex = position220, tokenIndex220
if buffer[position] != rune('O') {
goto l215
}
position++
}
l220:
{
position222, tokenIndex222 := position, tokenIndex
if buffer[position] != rune('r') {
goto l223
}
position++
goto l222
l223:
position, tokenIndex = position222, tokenIndex222
if buffer[position] != rune('R') {
goto l215
}
position++
}
l222:
{
position224, tokenIndex224 := position, tokenIndex
if buffer[position] != rune('d') {
goto l225
}
position++
goto l224
l225:
position, tokenIndex = position224, tokenIndex224
if buffer[position] != rune('D') {
goto l215
}
position++
}
l224:
goto l194
l215:
position, tokenIndex = position194, tokenIndex194
if buffer[position] != rune('.') {
goto l226
}
position++
{
position227, tokenIndex227 := position, tokenIndex
if buffer[position] != rune('l') {
goto l228
}
position++
goto l227
l228:
position, tokenIndex = position227, tokenIndex227
if buffer[position] != rune('L') {
goto l226
}
position++
}
l227:
{
position229, tokenIndex229 := position, tokenIndex
if buffer[position] != rune('o') {
goto l230
}
position++
goto l229
l230:
position, tokenIndex = position229, tokenIndex229
if buffer[position] != rune('O') {
goto l226
}
position++
}
l229:
{
position231, tokenIndex231 := position, tokenIndex
if buffer[position] != rune('n') {
goto l232
}
position++
goto l231
l232:
position, tokenIndex = position231, tokenIndex231
if buffer[position] != rune('N') {
goto l226
}
position++
}
l231:
{
position233, tokenIndex233 := position, tokenIndex
if buffer[position] != rune('g') {
goto l234
}
position++
goto l233
l234:
position, tokenIndex = position233, tokenIndex233
if buffer[position] != rune('G') {
goto l226
}
position++
}
l233:
goto l194
l226:
position, tokenIndex = position194, tokenIndex194
if buffer[position] != rune('.') {
goto l235
}
position++
{
position236, tokenIndex236 := position, tokenIndex
if buffer[position] != rune('b') {
goto l237
}
position++
goto l236
l237:
position, tokenIndex = position236, tokenIndex236
if buffer[position] != rune('B') {
goto l235
}
position++
}
l236:
{
position238, tokenIndex238 := position, tokenIndex
if buffer[position] != rune('y') {
goto l239
}
position++
goto l238
l239:
position, tokenIndex = position238, tokenIndex238
if buffer[position] != rune('Y') {
goto l235
}
position++
}
l238:
{
position240, tokenIndex240 := position, tokenIndex
if buffer[position] != rune('t') {
goto l241
}
position++
goto l240
l241:
position, tokenIndex = position240, tokenIndex240
if buffer[position] != rune('T') {
goto l235
}
position++
}
l240:
{
position242, tokenIndex242 := position, tokenIndex
if buffer[position] != rune('e') {
goto l243
}
position++
goto l242
l243:
position, tokenIndex = position242, tokenIndex242
if buffer[position] != rune('E') {
goto l235
}
position++
}
l242:
goto l194
l235:
position, tokenIndex = position194, tokenIndex194
if buffer[position] != rune('.') {
goto l244
}
position++
if buffer[position] != rune('8') {
goto l244
}
position++
{
position245, tokenIndex245 := position, tokenIndex
if buffer[position] != rune('b') {
goto l246
}
position++
goto l245
l246:
position, tokenIndex = position245, tokenIndex245
if buffer[position] != rune('B') {
goto l244
}
position++
}
l245:
{
position247, tokenIndex247 := position, tokenIndex
if buffer[position] != rune('y') {
goto l248
}
position++
goto l247
l248:
position, tokenIndex = position247, tokenIndex247
if buffer[position] != rune('Y') {
goto l244
}
position++
}
l247:
{
position249, tokenIndex249 := position, tokenIndex
if buffer[position] != rune('t') {
goto l250
}
position++
goto l249
l250:
position, tokenIndex = position249, tokenIndex249
if buffer[position] != rune('T') {
goto l244
}
position++
}
l249:
{
position251, tokenIndex251 := position, tokenIndex
if buffer[position] != rune('e') {
goto l252
}
position++
goto l251
l252:
position, tokenIndex = position251, tokenIndex251
if buffer[position] != rune('E') {
goto l244
}
position++
}
l251:
goto l194
l244:
position, tokenIndex = position194, tokenIndex194
if buffer[position] != rune('.') {
goto l253
}
position++
if buffer[position] != rune('4') {
goto l253
}
position++
{
position254, tokenIndex254 := position, tokenIndex
if buffer[position] != rune('b') {
goto l255
}
position++
goto l254
l255:
position, tokenIndex = position254, tokenIndex254
if buffer[position] != rune('B') {
goto l253
}
position++
}
l254:
{
position256, tokenIndex256 := position, tokenIndex
if buffer[position] != rune('y') {
goto l257
}
position++
goto l256
l257:
position, tokenIndex = position256, tokenIndex256
if buffer[position] != rune('Y') {
goto l253
}
position++
}
l256:
{
position258, tokenIndex258 := position, tokenIndex
if buffer[position] != rune('t') {
goto l259
}
position++
goto l258
l259:
position, tokenIndex = position258, tokenIndex258
if buffer[position] != rune('T') {
goto l253
}
position++
}
l258:
{
position260, tokenIndex260 := position, tokenIndex
if buffer[position] != rune('e') {
goto l261
}
position++
goto l260
l261:
position, tokenIndex = position260, tokenIndex260
if buffer[position] != rune('E') {
goto l253
}
position++
}
l260:
goto l194
l253:
position, tokenIndex = position194, tokenIndex194
if buffer[position] != rune('.') {
goto l262
}
position++
{
position263, tokenIndex263 := position, tokenIndex
if buffer[position] != rune('q') {
goto l264
}
position++
goto l263
l264:
position, tokenIndex = position263, tokenIndex263
if buffer[position] != rune('Q') {
goto l262
}
position++
}
l263:
{
position265, tokenIndex265 := position, tokenIndex
if buffer[position] != rune('u') {
goto l266
}
position++
goto l265
l266:
position, tokenIndex = position265, tokenIndex265
if buffer[position] != rune('U') {
goto l262
}
position++
}
l265:
{
position267, tokenIndex267 := position, tokenIndex
if buffer[position] != rune('a') {
goto l268
}
position++
goto l267
l268:
position, tokenIndex = position267, tokenIndex267
if buffer[position] != rune('A') {
goto l262
}
position++
}
l267:
{
position269, tokenIndex269 := position, tokenIndex
if buffer[position] != rune('d') {
goto l270
}
position++
goto l269
l270:
position, tokenIndex = position269, tokenIndex269
if buffer[position] != rune('D') {
goto l262
}
position++
}
l269:
goto l194
l262:
position, tokenIndex = position194, tokenIndex194
if buffer[position] != rune('.') {
goto l271
}
position++
{
position272, tokenIndex272 := position, tokenIndex
if buffer[position] != rune('t') {
goto l273
}
position++
goto l272
l273:
position, tokenIndex = position272, tokenIndex272
if buffer[position] != rune('T') {
goto l271
}
position++
}
l272:
{
position274, tokenIndex274 := position, tokenIndex
if buffer[position] != rune('c') {
goto l275
}
position++
goto l274
l275:
position, tokenIndex = position274, tokenIndex274
if buffer[position] != rune('C') {
goto l271
}
position++
}
l274:
goto l194
l271:
position, tokenIndex = position194, tokenIndex194
if buffer[position] != rune('.') {
goto l276
}
position++
{
position277, tokenIndex277 := position, tokenIndex
if buffer[position] != rune('l') {
goto l278
}
position++
goto l277
l278:
position, tokenIndex = position277, tokenIndex277
if buffer[position] != rune('L') {
goto l276
}
position++
}
l277:
{
position279, tokenIndex279 := position, tokenIndex
if buffer[position] != rune('o') {
goto l280
}
position++
goto l279
l280:
position, tokenIndex = position279, tokenIndex279
if buffer[position] != rune('O') {
goto l276
}
position++
}
l279:
{
position281, tokenIndex281 := position, tokenIndex
if buffer[position] != rune('c') {
goto l282
}
position++
goto l281
l282:
position, tokenIndex = position281, tokenIndex281
if buffer[position] != rune('C') {
goto l276
}
position++
}
l281:
{
position283, tokenIndex283 := position, tokenIndex
if buffer[position] != rune('a') {
goto l284
}
position++
goto l283
l284:
position, tokenIndex = position283, tokenIndex283
if buffer[position] != rune('A') {
goto l276
}
position++
}
l283:
{
position285, tokenIndex285 := position, tokenIndex
if buffer[position] != rune('l') {
goto l286
}
position++
goto l285
l286:
position, tokenIndex = position285, tokenIndex285
if buffer[position] != rune('L') {
goto l276
}
position++
}
l285:
{
position287, tokenIndex287 := position, tokenIndex
if buffer[position] != rune('e') {
goto l288
}
position++
goto l287
l288:
position, tokenIndex = position287, tokenIndex287
if buffer[position] != rune('E') {
goto l276
}
position++
}
l287:
{
position289, tokenIndex289 := position, tokenIndex
if buffer[position] != rune('n') {
goto l290
}
position++
goto l289
l290:
position, tokenIndex = position289, tokenIndex289
if buffer[position] != rune('N') {
goto l276
}
position++
}
l289:
{
position291, tokenIndex291 := position, tokenIndex
if buffer[position] != rune('t') {
goto l292
}
position++
goto l291
l292:
position, tokenIndex = position291, tokenIndex291
if buffer[position] != rune('T') {
goto l276
}
position++
}
l291:
{
position293, tokenIndex293 := position, tokenIndex
if buffer[position] != rune('r') {
goto l294
}
position++
goto l293
l294:
position, tokenIndex = position293, tokenIndex293
if buffer[position] != rune('R') {
goto l276
}
position++
}
l293:
{
position295, tokenIndex295 := position, tokenIndex
if buffer[position] != rune('y') {
goto l296
}
position++
goto l295
l296:
position, tokenIndex = position295, tokenIndex295
if buffer[position] != rune('Y') {
goto l276
}
position++
}
l295:
goto l194
l276:
position, tokenIndex = position194, tokenIndex194
if buffer[position] != rune('.') {
goto l297
}
position++
{
position298, tokenIndex298 := position, tokenIndex
if buffer[position] != rune('s') {
goto l299
}
position++
goto l298
l299:
position, tokenIndex = position298, tokenIndex298
if buffer[position] != rune('S') {
goto l297
}
position++
}
l298:
{
position300, tokenIndex300 := position, tokenIndex
if buffer[position] != rune('i') {
goto l301
}
position++
goto l300
l301:
position, tokenIndex = position300, tokenIndex300
if buffer[position] != rune('I') {
goto l297
}
position++
}
l300:
{
position302, tokenIndex302 := position, tokenIndex
if buffer[position] != rune('z') {
goto l303
}
position++
goto l302
l303:
position, tokenIndex = position302, tokenIndex302
if buffer[position] != rune('Z') {
goto l297
}
position++
}
l302:
{
position304, tokenIndex304 := position, tokenIndex
if buffer[position] != rune('e') {
goto l305
}
position++
goto l304
l305:
position, tokenIndex = position304, tokenIndex304
if buffer[position] != rune('E') {
goto l297
}
position++
}
l304:
goto l194
l297:
position, tokenIndex = position194, tokenIndex194
if buffer[position] != rune('.') {
goto l306
}
position++
{
position307, tokenIndex307 := position, tokenIndex
if buffer[position] != rune('t') {
goto l308
}
position++
goto l307
l308:
position, tokenIndex = position307, tokenIndex307
if buffer[position] != rune('T') {
goto l306
}
position++
}
l307:
{
position309, tokenIndex309 := position, tokenIndex
if buffer[position] != rune('y') {
goto l310
}
position++
goto l309
l310:
position, tokenIndex = position309, tokenIndex309
if buffer[position] != rune('Y') {
goto l306
}
position++
}
l309:
{
position311, tokenIndex311 := position, tokenIndex
if buffer[position] != rune('p') {
goto l312
}
position++
goto l311
l312:
position, tokenIndex = position311, tokenIndex311
if buffer[position] != rune('P') {
goto l306
}
position++
}
l311:
{
position313, tokenIndex313 := position, tokenIndex
if buffer[position] != rune('e') {
goto l314
}
position++
goto l313
l314:
position, tokenIndex = position313, tokenIndex313
if buffer[position] != rune('E') {
goto l306
}
position++
}
l313:
goto l194
l306:
position, tokenIndex = position194, tokenIndex194
if buffer[position] != rune('.') {
goto l315
}
position++
{
position316, tokenIndex316 := position, tokenIndex
if buffer[position] != rune('u') {
goto l317
}
position++
goto l316
l317:
position, tokenIndex = position316, tokenIndex316
if buffer[position] != rune('U') {
goto l315
}
position++
}
l316:
{
position318, tokenIndex318 := position, tokenIndex
if buffer[position] != rune('l') {
goto l319
}
position++
goto l318
l319:
position, tokenIndex = position318, tokenIndex318
if buffer[position] != rune('L') {
goto l315
}
position++
}
l318:
{
position320, tokenIndex320 := position, tokenIndex
if buffer[position] != rune('e') {
goto l321
}
position++
goto l320
l321:
position, tokenIndex = position320, tokenIndex320
if buffer[position] != rune('E') {
goto l315
}
position++
}
l320:
{
position322, tokenIndex322 := position, tokenIndex
if buffer[position] != rune('b') {
goto l323
}
position++
goto l322
l323:
position, tokenIndex = position322, tokenIndex322
if buffer[position] != rune('B') {
goto l315
}
position++
}
l322:
if buffer[position] != rune('1') {
goto l315
}
position++
if buffer[position] != rune('2') {
goto l315
}
position++
if buffer[position] != rune('8') {
goto l315
}
position++
goto l194
l315:
position, tokenIndex = position194, tokenIndex194
if buffer[position] != rune('.') {
goto l192
}
position++
{
position324, tokenIndex324 := position, tokenIndex
if buffer[position] != rune('s') {
goto l325
}
position++
goto l324
l325:
position, tokenIndex = position324, tokenIndex324
if buffer[position] != rune('S') {
goto l192
}
position++
}
l324:
{
position326, tokenIndex326 := position, tokenIndex
if buffer[position] != rune('l') {
goto l327
}
position++
goto l326
l327:
position, tokenIndex = position326, tokenIndex326
if buffer[position] != rune('L') {
goto l192
}
position++
}
l326:
{
position328, tokenIndex328 := position, tokenIndex
if buffer[position] != rune('e') {
goto l329
}
position++
goto l328
l329:
position, tokenIndex = position328, tokenIndex328
if buffer[position] != rune('E') {
goto l192
}
position++
}
l328:
{
position330, tokenIndex330 := position, tokenIndex
if buffer[position] != rune('b') {
goto l331
}
position++
goto l330
l331:
position, tokenIndex = position330, tokenIndex330
if buffer[position] != rune('B') {
goto l192
}
position++
}
l330:
if buffer[position] != rune('1') {
goto l192
}
position++
if buffer[position] != rune('2') {
goto l192
}
position++
if buffer[position] != rune('8') {
goto l192
}
position++
}
l194:
add(ruleLabelContainingDirectiveName, position193)
}
return true
l192:
position, tokenIndex = position192, tokenIndex192
return false
},
/* 16 SymbolArgs <- <(SymbolArg (WS? ',' WS? SymbolArg)*)> */
func() bool {
position332, tokenIndex332 := position, tokenIndex
{
position333 := position
if !_rules[ruleSymbolArg]() {
goto l332
}
l334:
{
position335, tokenIndex335 := position, tokenIndex
{
position336, tokenIndex336 := position, tokenIndex
if !_rules[ruleWS]() {
goto l336
}
goto l337
l336:
position, tokenIndex = position336, tokenIndex336
}
l337:
if buffer[position] != rune(',') {
goto l335
}
position++
{
position338, tokenIndex338 := position, tokenIndex
if !_rules[ruleWS]() {
goto l338
}
goto l339
l338:
position, tokenIndex = position338, tokenIndex338
}
l339:
if !_rules[ruleSymbolArg]() {
goto l335
}
goto l334
l335:
position, tokenIndex = position335, tokenIndex335
}
add(ruleSymbolArgs, position333)
}
return true
l332:
position, tokenIndex = position332, tokenIndex332
return false
},
/* 17 SymbolArg <- <SymbolExpr> */
func() bool {
position340, tokenIndex340 := position, tokenIndex
{
position341 := position
if !_rules[ruleSymbolExpr]() {
goto l340
}
add(ruleSymbolArg, position341)
}
return true
l340:
position, tokenIndex = position340, tokenIndex340
return false
},
/* 18 SymbolExpr <- <(SymbolAtom (WS? SymbolOperator WS? SymbolExpr)?)> */
func() bool {
position342, tokenIndex342 := position, tokenIndex
{
position343 := position
if !_rules[ruleSymbolAtom]() {
goto l342
}
{
position344, tokenIndex344 := position, tokenIndex
{
position346, tokenIndex346 := position, tokenIndex
if !_rules[ruleWS]() {
goto l346
}
goto l347
l346:
position, tokenIndex = position346, tokenIndex346
}
l347:
if !_rules[ruleSymbolOperator]() {
goto l344
}
{
position348, tokenIndex348 := position, tokenIndex
if !_rules[ruleWS]() {
goto l348
}
goto l349
l348:
position, tokenIndex = position348, tokenIndex348
}
l349:
if !_rules[ruleSymbolExpr]() {
goto l344
}
goto l345
l344:
position, tokenIndex = position344, tokenIndex344
}
l345:
add(ruleSymbolExpr, position343)
}
return true
l342:
position, tokenIndex = position342, tokenIndex342
return false
},
/* 19 SymbolAtom <- <(LocalLabelRef / Offset / SymbolType / (LocalSymbol TCMarker?) / (SymbolName Offset) / (SymbolName TCMarker?) / Dot / (OpenParen WS? SymbolExpr WS? CloseParen))> */
func() bool {
position350, tokenIndex350 := position, tokenIndex
{
position351 := position
{
position352, tokenIndex352 := position, tokenIndex
if !_rules[ruleLocalLabelRef]() {
goto l353
}
goto l352
l353:
position, tokenIndex = position352, tokenIndex352
if !_rules[ruleOffset]() {
goto l354
}
goto l352
l354:
position, tokenIndex = position352, tokenIndex352
if !_rules[ruleSymbolType]() {
goto l355
}
goto l352
l355:
position, tokenIndex = position352, tokenIndex352
if !_rules[ruleLocalSymbol]() {
goto l356
}
{
position357, tokenIndex357 := position, tokenIndex
if !_rules[ruleTCMarker]() {
goto l357
}
goto l358
l357:
position, tokenIndex = position357, tokenIndex357
}
l358:
goto l352
l356:
position, tokenIndex = position352, tokenIndex352
if !_rules[ruleSymbolName]() {
goto l359
}
if !_rules[ruleOffset]() {
goto l359
}
goto l352
l359:
position, tokenIndex = position352, tokenIndex352
if !_rules[ruleSymbolName]() {
goto l360
}
{
position361, tokenIndex361 := position, tokenIndex
if !_rules[ruleTCMarker]() {
goto l361
}
goto l362
l361:
position, tokenIndex = position361, tokenIndex361
}
l362:
goto l352
l360:
position, tokenIndex = position352, tokenIndex352
if !_rules[ruleDot]() {
goto l363
}
goto l352
l363:
position, tokenIndex = position352, tokenIndex352
if !_rules[ruleOpenParen]() {
goto l350
}
{
position364, tokenIndex364 := position, tokenIndex
if !_rules[ruleWS]() {
goto l364
}
goto l365
l364:
position, tokenIndex = position364, tokenIndex364
}
l365:
if !_rules[ruleSymbolExpr]() {
goto l350
}
{
position366, tokenIndex366 := position, tokenIndex
if !_rules[ruleWS]() {
goto l366
}
goto l367
l366:
position, tokenIndex = position366, tokenIndex366
}
l367:
if !_rules[ruleCloseParen]() {
goto l350
}
}
l352:
add(ruleSymbolAtom, position351)
}
return true
l350:
position, tokenIndex = position350, tokenIndex350
return false
},
/* 20 SymbolOperator <- <('+' / '-' / '|' / ('<' '<') / ('>' '>'))> */
func() bool {
position368, tokenIndex368 := position, tokenIndex
{
position369 := position
{
position370, tokenIndex370 := position, tokenIndex
if buffer[position] != rune('+') {
goto l371
}
position++
goto l370
l371:
position, tokenIndex = position370, tokenIndex370
if buffer[position] != rune('-') {
goto l372
}
position++
goto l370
l372:
position, tokenIndex = position370, tokenIndex370
if buffer[position] != rune('|') {
goto l373
}
position++
goto l370
l373:
position, tokenIndex = position370, tokenIndex370
if buffer[position] != rune('<') {
goto l374
}
position++
if buffer[position] != rune('<') {
goto l374
}
position++
goto l370
l374:
position, tokenIndex = position370, tokenIndex370
if buffer[position] != rune('>') {
goto l368
}
position++
if buffer[position] != rune('>') {
goto l368
}
position++
}
l370:
add(ruleSymbolOperator, position369)
}
return true
l368:
position, tokenIndex = position368, tokenIndex368
return false
},
/* 21 OpenParen <- <'('> */
func() bool {
position375, tokenIndex375 := position, tokenIndex
{
position376 := position
if buffer[position] != rune('(') {
goto l375
}
position++
add(ruleOpenParen, position376)
}
return true
l375:
position, tokenIndex = position375, tokenIndex375
return false
},
/* 22 CloseParen <- <')'> */
func() bool {
position377, tokenIndex377 := position, tokenIndex
{
position378 := position
if buffer[position] != rune(')') {
goto l377
}
position++
add(ruleCloseParen, position378)
}
return true
l377:
position, tokenIndex = position377, tokenIndex377
return false
},
/* 23 SymbolType <- <(('@' / '%') (('f' 'u' 'n' 'c' 't' 'i' 'o' 'n') / ('o' 'b' 'j' 'e' 'c' 't')))> */
func() bool {
position379, tokenIndex379 := position, tokenIndex
{
position380 := position
{
position381, tokenIndex381 := position, tokenIndex
if buffer[position] != rune('@') {
goto l382
}
position++
goto l381
l382:
position, tokenIndex = position381, tokenIndex381
if buffer[position] != rune('%') {
goto l379
}
position++
}
l381:
{
position383, tokenIndex383 := position, tokenIndex
if buffer[position] != rune('f') {
goto l384
}
position++
if buffer[position] != rune('u') {
goto l384
}
position++
if buffer[position] != rune('n') {
goto l384
}
position++
if buffer[position] != rune('c') {
goto l384
}
position++
if buffer[position] != rune('t') {
goto l384
}
position++
if buffer[position] != rune('i') {
goto l384
}
position++
if buffer[position] != rune('o') {
goto l384
}
position++
if buffer[position] != rune('n') {
goto l384
}
position++
goto l383
l384:
position, tokenIndex = position383, tokenIndex383
if buffer[position] != rune('o') {
goto l379
}
position++
if buffer[position] != rune('b') {
goto l379
}
position++
if buffer[position] != rune('j') {
goto l379
}
position++
if buffer[position] != rune('e') {
goto l379
}
position++
if buffer[position] != rune('c') {
goto l379
}
position++
if buffer[position] != rune('t') {
goto l379
}
position++
}
l383:
add(ruleSymbolType, position380)
}
return true
l379:
position, tokenIndex = position379, tokenIndex379
return false
},
/* 24 Dot <- <'.'> */
func() bool {
position385, tokenIndex385 := position, tokenIndex
{
position386 := position
if buffer[position] != rune('.') {
goto l385
}
position++
add(ruleDot, position386)
}
return true
l385:
position, tokenIndex = position385, tokenIndex385
return false
},
/* 25 TCMarker <- <('[' 'T' 'C' ']')> */
func() bool {
position387, tokenIndex387 := position, tokenIndex
{
position388 := position
if buffer[position] != rune('[') {
goto l387
}
position++
if buffer[position] != rune('T') {
goto l387
}
position++
if buffer[position] != rune('C') {
goto l387
}
position++
if buffer[position] != rune(']') {
goto l387
}
position++
add(ruleTCMarker, position388)
}
return true
l387:
position, tokenIndex = position387, tokenIndex387
return false
},
/* 26 EscapedChar <- <('\\' .)> */
func() bool {
position389, tokenIndex389 := position, tokenIndex
{
position390 := position
if buffer[position] != rune('\\') {
goto l389
}
position++
if !matchDot() {
goto l389
}
add(ruleEscapedChar, position390)
}
return true
l389:
position, tokenIndex = position389, tokenIndex389
return false
},
/* 27 WS <- <(' ' / '\t')+> */
func() bool {
position391, tokenIndex391 := position, tokenIndex
{
position392 := position
{
position395, tokenIndex395 := position, tokenIndex
if buffer[position] != rune(' ') {
goto l396
}
position++
goto l395
l396:
position, tokenIndex = position395, tokenIndex395
if buffer[position] != rune('\t') {
goto l391
}
position++
}
l395:
l393:
{
position394, tokenIndex394 := position, tokenIndex
{
position397, tokenIndex397 := position, tokenIndex
if buffer[position] != rune(' ') {
goto l398
}
position++
goto l397
l398:
position, tokenIndex = position397, tokenIndex397
if buffer[position] != rune('\t') {
goto l394
}
position++
}
l397:
goto l393
l394:
position, tokenIndex = position394, tokenIndex394
}
add(ruleWS, position392)
}
return true
l391:
position, tokenIndex = position391, tokenIndex391
return false
},
/* 28 Comment <- <((('/' '/') / '#') (!'\n' .)*)> */
func() bool {
position399, tokenIndex399 := position, tokenIndex
{
position400 := position
{
position401, tokenIndex401 := position, tokenIndex
if buffer[position] != rune('/') {
goto l402
}
position++
if buffer[position] != rune('/') {
goto l402
}
position++
goto l401
l402:
position, tokenIndex = position401, tokenIndex401
if buffer[position] != rune('#') {
goto l399
}
position++
}
l401:
l403:
{
position404, tokenIndex404 := position, tokenIndex
{
position405, tokenIndex405 := position, tokenIndex
if buffer[position] != rune('\n') {
goto l405
}
position++
goto l404
l405:
position, tokenIndex = position405, tokenIndex405
}
if !matchDot() {
goto l404
}
goto l403
l404:
position, tokenIndex = position404, tokenIndex404
}
add(ruleComment, position400)
}
return true
l399:
position, tokenIndex = position399, tokenIndex399
return false
},
/* 29 Label <- <((LocalSymbol / LocalLabel / SymbolName) ':')> */
func() bool {
position406, tokenIndex406 := position, tokenIndex
{
position407 := position
{
position408, tokenIndex408 := position, tokenIndex
if !_rules[ruleLocalSymbol]() {
goto l409
}
goto l408
l409:
position, tokenIndex = position408, tokenIndex408
if !_rules[ruleLocalLabel]() {
goto l410
}
goto l408
l410:
position, tokenIndex = position408, tokenIndex408
if !_rules[ruleSymbolName]() {
goto l406
}
}
l408:
if buffer[position] != rune(':') {
goto l406
}
position++
add(ruleLabel, position407)
}
return true
l406:
position, tokenIndex = position406, tokenIndex406
return false
},
/* 30 SymbolName <- <(([a-z] / [A-Z] / '.' / '_') ([a-z] / [A-Z] / '.' / ([0-9] / [0-9]) / '$' / '_')*)> */
func() bool {
position411, tokenIndex411 := position, tokenIndex
{
position412 := position
{
position413, tokenIndex413 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l414
}
position++
goto l413
l414:
position, tokenIndex = position413, tokenIndex413
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l415
}
position++
goto l413
l415:
position, tokenIndex = position413, tokenIndex413
if buffer[position] != rune('.') {
goto l416
}
position++
goto l413
l416:
position, tokenIndex = position413, tokenIndex413
if buffer[position] != rune('_') {
goto l411
}
position++
}
l413:
l417:
{
position418, tokenIndex418 := position, tokenIndex
{
position419, tokenIndex419 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l420
}
position++
goto l419
l420:
position, tokenIndex = position419, tokenIndex419
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l421
}
position++
goto l419
l421:
position, tokenIndex = position419, tokenIndex419
if buffer[position] != rune('.') {
goto l422
}
position++
goto l419
l422:
position, tokenIndex = position419, tokenIndex419
{
position424, tokenIndex424 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l425
}
position++
goto l424
l425:
position, tokenIndex = position424, tokenIndex424
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l423
}
position++
}
l424:
goto l419
l423:
position, tokenIndex = position419, tokenIndex419
if buffer[position] != rune('$') {
goto l426
}
position++
goto l419
l426:
position, tokenIndex = position419, tokenIndex419
if buffer[position] != rune('_') {
goto l418
}
position++
}
l419:
goto l417
l418:
position, tokenIndex = position418, tokenIndex418
}
add(ruleSymbolName, position412)
}
return true
l411:
position, tokenIndex = position411, tokenIndex411
return false
},
/* 31 LocalSymbol <- <('.' 'L' ([a-z] / [A-Z] / ([a-z] / [A-Z]) / '.' / ([0-9] / [0-9]) / '$' / '_')+)> */
func() bool {
position427, tokenIndex427 := position, tokenIndex
{
position428 := position
if buffer[position] != rune('.') {
goto l427
}
position++
if buffer[position] != rune('L') {
goto l427
}
position++
{
position431, tokenIndex431 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l432
}
position++
goto l431
l432:
position, tokenIndex = position431, tokenIndex431
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l433
}
position++
goto l431
l433:
position, tokenIndex = position431, tokenIndex431
{
position435, tokenIndex435 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l436
}
position++
goto l435
l436:
position, tokenIndex = position435, tokenIndex435
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l434
}
position++
}
l435:
goto l431
l434:
position, tokenIndex = position431, tokenIndex431
if buffer[position] != rune('.') {
goto l437
}
position++
goto l431
l437:
position, tokenIndex = position431, tokenIndex431
{
position439, tokenIndex439 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l440
}
position++
goto l439
l440:
position, tokenIndex = position439, tokenIndex439
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l438
}
position++
}
l439:
goto l431
l438:
position, tokenIndex = position431, tokenIndex431
if buffer[position] != rune('$') {
goto l441
}
position++
goto l431
l441:
position, tokenIndex = position431, tokenIndex431
if buffer[position] != rune('_') {
goto l427
}
position++
}
l431:
l429:
{
position430, tokenIndex430 := position, tokenIndex
{
position442, tokenIndex442 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l443
}
position++
goto l442
l443:
position, tokenIndex = position442, tokenIndex442
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l444
}
position++
goto l442
l444:
position, tokenIndex = position442, tokenIndex442
{
position446, tokenIndex446 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l447
}
position++
goto l446
l447:
position, tokenIndex = position446, tokenIndex446
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l445
}
position++
}
l446:
goto l442
l445:
position, tokenIndex = position442, tokenIndex442
if buffer[position] != rune('.') {
goto l448
}
position++
goto l442
l448:
position, tokenIndex = position442, tokenIndex442
{
position450, tokenIndex450 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l451
}
position++
goto l450
l451:
position, tokenIndex = position450, tokenIndex450
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l449
}
position++
}
l450:
goto l442
l449:
position, tokenIndex = position442, tokenIndex442
if buffer[position] != rune('$') {
goto l452
}
position++
goto l442
l452:
position, tokenIndex = position442, tokenIndex442
if buffer[position] != rune('_') {
goto l430
}
position++
}
l442:
goto l429
l430:
position, tokenIndex = position430, tokenIndex430
}
add(ruleLocalSymbol, position428)
}
return true
l427:
position, tokenIndex = position427, tokenIndex427
return false
},
/* 32 LocalLabel <- <([0-9] ([0-9] / '$')*)> */
func() bool {
position453, tokenIndex453 := position, tokenIndex
{
position454 := position
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l453
}
position++
l455:
{
position456, tokenIndex456 := position, tokenIndex
{
position457, tokenIndex457 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l458
}
position++
goto l457
l458:
position, tokenIndex = position457, tokenIndex457
if buffer[position] != rune('$') {
goto l456
}
position++
}
l457:
goto l455
l456:
position, tokenIndex = position456, tokenIndex456
}
add(ruleLocalLabel, position454)
}
return true
l453:
position, tokenIndex = position453, tokenIndex453
return false
},
/* 33 LocalLabelRef <- <([0-9] ([0-9] / '$')* ('b' / 'f'))> */
func() bool {
position459, tokenIndex459 := position, tokenIndex
{
position460 := position
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l459
}
position++
l461:
{
position462, tokenIndex462 := position, tokenIndex
{
position463, tokenIndex463 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l464
}
position++
goto l463
l464:
position, tokenIndex = position463, tokenIndex463
if buffer[position] != rune('$') {
goto l462
}
position++
}
l463:
goto l461
l462:
position, tokenIndex = position462, tokenIndex462
}
{
position465, tokenIndex465 := position, tokenIndex
if buffer[position] != rune('b') {
goto l466
}
position++
goto l465
l466:
position, tokenIndex = position465, tokenIndex465
if buffer[position] != rune('f') {
goto l459
}
position++
}
l465:
add(ruleLocalLabelRef, position460)
}
return true
l459:
position, tokenIndex = position459, tokenIndex459
return false
},
/* 34 InstructionPrefix <- <(('n' / 'N') ('o' / 'O') ('t' / 'T') ('r' / 'R') ('a' / 'A') ('c' / 'C') ('k' / 'K'))> */
func() bool {
position467, tokenIndex467 := position, tokenIndex
{
position468 := position
{
position469, tokenIndex469 := position, tokenIndex
if buffer[position] != rune('n') {
goto l470
}
position++
goto l469
l470:
position, tokenIndex = position469, tokenIndex469
if buffer[position] != rune('N') {
goto l467
}
position++
}
l469:
{
position471, tokenIndex471 := position, tokenIndex
if buffer[position] != rune('o') {
goto l472
}
position++
goto l471
l472:
position, tokenIndex = position471, tokenIndex471
if buffer[position] != rune('O') {
goto l467
}
position++
}
l471:
{
position473, tokenIndex473 := position, tokenIndex
if buffer[position] != rune('t') {
goto l474
}
position++
goto l473
l474:
position, tokenIndex = position473, tokenIndex473
if buffer[position] != rune('T') {
goto l467
}
position++
}
l473:
{
position475, tokenIndex475 := position, tokenIndex
if buffer[position] != rune('r') {
goto l476
}
position++
goto l475
l476:
position, tokenIndex = position475, tokenIndex475
if buffer[position] != rune('R') {
goto l467
}
position++
}
l475:
{
position477, tokenIndex477 := position, tokenIndex
if buffer[position] != rune('a') {
goto l478
}
position++
goto l477
l478:
position, tokenIndex = position477, tokenIndex477
if buffer[position] != rune('A') {
goto l467
}
position++
}
l477:
{
position479, tokenIndex479 := position, tokenIndex
if buffer[position] != rune('c') {
goto l480
}
position++
goto l479
l480:
position, tokenIndex = position479, tokenIndex479
if buffer[position] != rune('C') {
goto l467
}
position++
}
l479:
{
position481, tokenIndex481 := position, tokenIndex
if buffer[position] != rune('k') {
goto l482
}
position++
goto l481
l482:
position, tokenIndex = position481, tokenIndex481
if buffer[position] != rune('K') {
goto l467
}
position++
}
l481:
add(ruleInstructionPrefix, position468)
}
return true
l467:
position, tokenIndex = position467, tokenIndex467
return false
},
/* 35 Instruction <- <((InstructionPrefix WS)? InstructionName (WS InstructionArg (WS? ',' WS? InstructionArg)*)?)> */
func() bool {
position483, tokenIndex483 := position, tokenIndex
{
position484 := position
{
position485, tokenIndex485 := position, tokenIndex
if !_rules[ruleInstructionPrefix]() {
goto l485
}
if !_rules[ruleWS]() {
goto l485
}
goto l486
l485:
position, tokenIndex = position485, tokenIndex485
}
l486:
if !_rules[ruleInstructionName]() {
goto l483
}
{
position487, tokenIndex487 := position, tokenIndex
if !_rules[ruleWS]() {
goto l487
}
if !_rules[ruleInstructionArg]() {
goto l487
}
l489:
{
position490, tokenIndex490 := position, tokenIndex
{
position491, tokenIndex491 := position, tokenIndex
if !_rules[ruleWS]() {
goto l491
}
goto l492
l491:
position, tokenIndex = position491, tokenIndex491
}
l492:
if buffer[position] != rune(',') {
goto l490
}
position++
{
position493, tokenIndex493 := position, tokenIndex
if !_rules[ruleWS]() {
goto l493
}
goto l494
l493:
position, tokenIndex = position493, tokenIndex493
}
l494:
if !_rules[ruleInstructionArg]() {
goto l490
}
goto l489
l490:
position, tokenIndex = position490, tokenIndex490
}
goto l488
l487:
position, tokenIndex = position487, tokenIndex487
}
l488:
add(ruleInstruction, position484)
}
return true
l483:
position, tokenIndex = position483, tokenIndex483
return false
},
/* 36 InstructionName <- <(([a-z] / [A-Z]) ([a-z] / [A-Z] / '.' / ([0-9] / [0-9]))* ('.' / '+' / '-')?)> */
func() bool {
position495, tokenIndex495 := position, tokenIndex
{
position496 := position
{
position497, tokenIndex497 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l498
}
position++
goto l497
l498:
position, tokenIndex = position497, tokenIndex497
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l495
}
position++
}
l497:
l499:
{
position500, tokenIndex500 := position, tokenIndex
{
position501, tokenIndex501 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l502
}
position++
goto l501
l502:
position, tokenIndex = position501, tokenIndex501
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l503
}
position++
goto l501
l503:
position, tokenIndex = position501, tokenIndex501
if buffer[position] != rune('.') {
goto l504
}
position++
goto l501
l504:
position, tokenIndex = position501, tokenIndex501
{
position505, tokenIndex505 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l506
}
position++
goto l505
l506:
position, tokenIndex = position505, tokenIndex505
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l500
}
position++
}
l505:
}
l501:
goto l499
l500:
position, tokenIndex = position500, tokenIndex500
}
{
position507, tokenIndex507 := position, tokenIndex
{
position509, tokenIndex509 := position, tokenIndex
if buffer[position] != rune('.') {
goto l510
}
position++
goto l509
l510:
position, tokenIndex = position509, tokenIndex509
if buffer[position] != rune('+') {
goto l511
}
position++
goto l509
l511:
position, tokenIndex = position509, tokenIndex509
if buffer[position] != rune('-') {
goto l507
}
position++
}
l509:
goto l508
l507:
position, tokenIndex = position507, tokenIndex507
}
l508:
add(ruleInstructionName, position496)
}
return true
l495:
position, tokenIndex = position495, tokenIndex495
return false
},
/* 37 InstructionArg <- <(IndirectionIndicator? (ARMConstantTweak / RegisterOrConstant / LocalLabelRef / TOCRefHigh / TOCRefLow / GOTLocation / GOTAddress / GOTSymbolOffset / MemoryRef) AVX512Token*)> */
func() bool {
position512, tokenIndex512 := position, tokenIndex
{
position513 := position
{
position514, tokenIndex514 := position, tokenIndex
if !_rules[ruleIndirectionIndicator]() {
goto l514
}
goto l515
l514:
position, tokenIndex = position514, tokenIndex514
}
l515:
{
position516, tokenIndex516 := position, tokenIndex
if !_rules[ruleARMConstantTweak]() {
goto l517
}
goto l516
l517:
position, tokenIndex = position516, tokenIndex516
if !_rules[ruleRegisterOrConstant]() {
goto l518
}
goto l516
l518:
position, tokenIndex = position516, tokenIndex516
if !_rules[ruleLocalLabelRef]() {
goto l519
}
goto l516
l519:
position, tokenIndex = position516, tokenIndex516
if !_rules[ruleTOCRefHigh]() {
goto l520
}
goto l516
l520:
position, tokenIndex = position516, tokenIndex516
if !_rules[ruleTOCRefLow]() {
goto l521
}
goto l516
l521:
position, tokenIndex = position516, tokenIndex516
if !_rules[ruleGOTLocation]() {
goto l522
}
goto l516
l522:
position, tokenIndex = position516, tokenIndex516
if !_rules[ruleGOTAddress]() {
goto l523
}
goto l516
l523:
position, tokenIndex = position516, tokenIndex516
if !_rules[ruleGOTSymbolOffset]() {
goto l524
}
goto l516
l524:
position, tokenIndex = position516, tokenIndex516
if !_rules[ruleMemoryRef]() {
goto l512
}
}
l516:
l525:
{
position526, tokenIndex526 := position, tokenIndex
if !_rules[ruleAVX512Token]() {
goto l526
}
goto l525
l526:
position, tokenIndex = position526, tokenIndex526
}
add(ruleInstructionArg, position513)
}
return true
l512:
position, tokenIndex = position512, tokenIndex512
return false
},
/* 38 GOTLocation <- <('$' '_' 'G' 'L' 'O' 'B' 'A' 'L' '_' 'O' 'F' 'F' 'S' 'E' 'T' '_' 'T' 'A' 'B' 'L' 'E' '_' '-' LocalSymbol)> */
func() bool {
position527, tokenIndex527 := position, tokenIndex
{
position528 := position
if buffer[position] != rune('$') {
goto l527
}
position++
if buffer[position] != rune('_') {
goto l527
}
position++
if buffer[position] != rune('G') {
goto l527
}
position++
if buffer[position] != rune('L') {
goto l527
}
position++
if buffer[position] != rune('O') {
goto l527
}
position++
if buffer[position] != rune('B') {
goto l527
}
position++
if buffer[position] != rune('A') {
goto l527
}
position++
if buffer[position] != rune('L') {
goto l527
}
position++
if buffer[position] != rune('_') {
goto l527
}
position++
if buffer[position] != rune('O') {
goto l527
}
position++
if buffer[position] != rune('F') {
goto l527
}
position++
if buffer[position] != rune('F') {
goto l527
}
position++
if buffer[position] != rune('S') {
goto l527
}
position++
if buffer[position] != rune('E') {
goto l527
}
position++
if buffer[position] != rune('T') {
goto l527
}
position++
if buffer[position] != rune('_') {
goto l527
}
position++
if buffer[position] != rune('T') {
goto l527
}
position++
if buffer[position] != rune('A') {
goto l527
}
position++
if buffer[position] != rune('B') {
goto l527
}
position++
if buffer[position] != rune('L') {
goto l527
}
position++
if buffer[position] != rune('E') {
goto l527
}
position++
if buffer[position] != rune('_') {
goto l527
}
position++
if buffer[position] != rune('-') {
goto l527
}
position++
if !_rules[ruleLocalSymbol]() {
goto l527
}
add(ruleGOTLocation, position528)
}
return true
l527:
position, tokenIndex = position527, tokenIndex527
return false
},
/* 39 GOTAddress <- <('_' 'G' 'L' 'O' 'B' 'A' 'L' '_' 'O' 'F' 'F' 'S' 'E' 'T' '_' 'T' 'A' 'B' 'L' 'E' '_' '(' '%' 'r' 'i' 'p' ')')> */
func() bool {
position529, tokenIndex529 := position, tokenIndex
{
position530 := position
if buffer[position] != rune('_') {
goto l529
}
position++
if buffer[position] != rune('G') {
goto l529
}
position++
if buffer[position] != rune('L') {
goto l529
}
position++
if buffer[position] != rune('O') {
goto l529
}
position++
if buffer[position] != rune('B') {
goto l529
}
position++
if buffer[position] != rune('A') {
goto l529
}
position++
if buffer[position] != rune('L') {
goto l529
}
position++
if buffer[position] != rune('_') {
goto l529
}
position++
if buffer[position] != rune('O') {
goto l529
}
position++
if buffer[position] != rune('F') {
goto l529
}
position++
if buffer[position] != rune('F') {
goto l529
}
position++
if buffer[position] != rune('S') {
goto l529
}
position++
if buffer[position] != rune('E') {
goto l529
}
position++
if buffer[position] != rune('T') {
goto l529
}
position++
if buffer[position] != rune('_') {
goto l529
}
position++
if buffer[position] != rune('T') {
goto l529
}
position++
if buffer[position] != rune('A') {
goto l529
}
position++
if buffer[position] != rune('B') {
goto l529
}
position++
if buffer[position] != rune('L') {
goto l529
}
position++
if buffer[position] != rune('E') {
goto l529
}
position++
if buffer[position] != rune('_') {
goto l529
}
position++
if buffer[position] != rune('(') {
goto l529
}
position++
if buffer[position] != rune('%') {
goto l529
}
position++
if buffer[position] != rune('r') {
goto l529
}
position++
if buffer[position] != rune('i') {
goto l529
}
position++
if buffer[position] != rune('p') {
goto l529
}
position++
if buffer[position] != rune(')') {
goto l529
}
position++
add(ruleGOTAddress, position530)
}
return true
l529:
position, tokenIndex = position529, tokenIndex529
return false
},
/* 40 GOTSymbolOffset <- <(('$' SymbolName ('@' 'G' 'O' 'T') ('O' 'F' 'F')?) / (':' ('g' / 'G') ('o' / 'O') ('t' / 'T') ':' SymbolName))> */
func() bool {
position531, tokenIndex531 := position, tokenIndex
{
position532 := position
{
position533, tokenIndex533 := position, tokenIndex
if buffer[position] != rune('$') {
goto l534
}
position++
if !_rules[ruleSymbolName]() {
goto l534
}
if buffer[position] != rune('@') {
goto l534
}
position++
if buffer[position] != rune('G') {
goto l534
}
position++
if buffer[position] != rune('O') {
goto l534
}
position++
if buffer[position] != rune('T') {
goto l534
}
position++
{
position535, tokenIndex535 := position, tokenIndex
if buffer[position] != rune('O') {
goto l535
}
position++
if buffer[position] != rune('F') {
goto l535
}
position++
if buffer[position] != rune('F') {
goto l535
}
position++
goto l536
l535:
position, tokenIndex = position535, tokenIndex535
}
l536:
goto l533
l534:
position, tokenIndex = position533, tokenIndex533
if buffer[position] != rune(':') {
goto l531
}
position++
{
position537, tokenIndex537 := position, tokenIndex
if buffer[position] != rune('g') {
goto l538
}
position++
goto l537
l538:
position, tokenIndex = position537, tokenIndex537
if buffer[position] != rune('G') {
goto l531
}
position++
}
l537:
{
position539, tokenIndex539 := position, tokenIndex
if buffer[position] != rune('o') {
goto l540
}
position++
goto l539
l540:
position, tokenIndex = position539, tokenIndex539
if buffer[position] != rune('O') {
goto l531
}
position++
}
l539:
{
position541, tokenIndex541 := position, tokenIndex
if buffer[position] != rune('t') {
goto l542
}
position++
goto l541
l542:
position, tokenIndex = position541, tokenIndex541
if buffer[position] != rune('T') {
goto l531
}
position++
}
l541:
if buffer[position] != rune(':') {
goto l531
}
position++
if !_rules[ruleSymbolName]() {
goto l531
}
}
l533:
add(ruleGOTSymbolOffset, position532)
}
return true
l531:
position, tokenIndex = position531, tokenIndex531
return false
},
/* 41 AVX512Token <- <(WS? '{' '%'? ([0-9] / [a-z])* '}')> */
func() bool {
position543, tokenIndex543 := position, tokenIndex
{
position544 := position
{
position545, tokenIndex545 := position, tokenIndex
if !_rules[ruleWS]() {
goto l545
}
goto l546
l545:
position, tokenIndex = position545, tokenIndex545
}
l546:
if buffer[position] != rune('{') {
goto l543
}
position++
{
position547, tokenIndex547 := position, tokenIndex
if buffer[position] != rune('%') {
goto l547
}
position++
goto l548
l547:
position, tokenIndex = position547, tokenIndex547
}
l548:
l549:
{
position550, tokenIndex550 := position, tokenIndex
{
position551, tokenIndex551 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l552
}
position++
goto l551
l552:
position, tokenIndex = position551, tokenIndex551
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l550
}
position++
}
l551:
goto l549
l550:
position, tokenIndex = position550, tokenIndex550
}
if buffer[position] != rune('}') {
goto l543
}
position++
add(ruleAVX512Token, position544)
}
return true
l543:
position, tokenIndex = position543, tokenIndex543
return false
},
/* 42 TOCRefHigh <- <('.' 'T' 'O' 'C' '.' '-' (('0' 'b') / ('.' 'L' ([a-z] / [A-Z] / '_' / [0-9])+)) ('@' ('h' / 'H') ('a' / 'A')))> */
func() bool {
position553, tokenIndex553 := position, tokenIndex
{
position554 := position
if buffer[position] != rune('.') {
goto l553
}
position++
if buffer[position] != rune('T') {
goto l553
}
position++
if buffer[position] != rune('O') {
goto l553
}
position++
if buffer[position] != rune('C') {
goto l553
}
position++
if buffer[position] != rune('.') {
goto l553
}
position++
if buffer[position] != rune('-') {
goto l553
}
position++
{
position555, tokenIndex555 := position, tokenIndex
if buffer[position] != rune('0') {
goto l556
}
position++
if buffer[position] != rune('b') {
goto l556
}
position++
goto l555
l556:
position, tokenIndex = position555, tokenIndex555
if buffer[position] != rune('.') {
goto l553
}
position++
if buffer[position] != rune('L') {
goto l553
}
position++
{
position559, tokenIndex559 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l560
}
position++
goto l559
l560:
position, tokenIndex = position559, tokenIndex559
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l561
}
position++
goto l559
l561:
position, tokenIndex = position559, tokenIndex559
if buffer[position] != rune('_') {
goto l562
}
position++
goto l559
l562:
position, tokenIndex = position559, tokenIndex559
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l553
}
position++
}
l559:
l557:
{
position558, tokenIndex558 := position, tokenIndex
{
position563, tokenIndex563 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l564
}
position++
goto l563
l564:
position, tokenIndex = position563, tokenIndex563
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l565
}
position++
goto l563
l565:
position, tokenIndex = position563, tokenIndex563
if buffer[position] != rune('_') {
goto l566
}
position++
goto l563
l566:
position, tokenIndex = position563, tokenIndex563
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l558
}
position++
}
l563:
goto l557
l558:
position, tokenIndex = position558, tokenIndex558
}
}
l555:
if buffer[position] != rune('@') {
goto l553
}
position++
{
position567, tokenIndex567 := position, tokenIndex
if buffer[position] != rune('h') {
goto l568
}
position++
goto l567
l568:
position, tokenIndex = position567, tokenIndex567
if buffer[position] != rune('H') {
goto l553
}
position++
}
l567:
{
position569, tokenIndex569 := position, tokenIndex
if buffer[position] != rune('a') {
goto l570
}
position++
goto l569
l570:
position, tokenIndex = position569, tokenIndex569
if buffer[position] != rune('A') {
goto l553
}
position++
}
l569:
add(ruleTOCRefHigh, position554)
}
return true
l553:
position, tokenIndex = position553, tokenIndex553
return false
},
/* 43 TOCRefLow <- <('.' 'T' 'O' 'C' '.' '-' (('0' 'b') / ('.' 'L' ([a-z] / [A-Z] / '_' / [0-9])+)) ('@' ('l' / 'L')))> */
func() bool {
position571, tokenIndex571 := position, tokenIndex
{
position572 := position
if buffer[position] != rune('.') {
goto l571
}
position++
if buffer[position] != rune('T') {
goto l571
}
position++
if buffer[position] != rune('O') {
goto l571
}
position++
if buffer[position] != rune('C') {
goto l571
}
position++
if buffer[position] != rune('.') {
goto l571
}
position++
if buffer[position] != rune('-') {
goto l571
}
position++
{
position573, tokenIndex573 := position, tokenIndex
if buffer[position] != rune('0') {
goto l574
}
position++
if buffer[position] != rune('b') {
goto l574
}
position++
goto l573
l574:
position, tokenIndex = position573, tokenIndex573
if buffer[position] != rune('.') {
goto l571
}
position++
if buffer[position] != rune('L') {
goto l571
}
position++
{
position577, tokenIndex577 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l578
}
position++
goto l577
l578:
position, tokenIndex = position577, tokenIndex577
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l579
}
position++
goto l577
l579:
position, tokenIndex = position577, tokenIndex577
if buffer[position] != rune('_') {
goto l580
}
position++
goto l577
l580:
position, tokenIndex = position577, tokenIndex577
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l571
}
position++
}
l577:
l575:
{
position576, tokenIndex576 := position, tokenIndex
{
position581, tokenIndex581 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l582
}
position++
goto l581
l582:
position, tokenIndex = position581, tokenIndex581
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l583
}
position++
goto l581
l583:
position, tokenIndex = position581, tokenIndex581
if buffer[position] != rune('_') {
goto l584
}
position++
goto l581
l584:
position, tokenIndex = position581, tokenIndex581
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l576
}
position++
}
l581:
goto l575
l576:
position, tokenIndex = position576, tokenIndex576
}
}
l573:
if buffer[position] != rune('@') {
goto l571
}
position++
{
position585, tokenIndex585 := position, tokenIndex
if buffer[position] != rune('l') {
goto l586
}
position++
goto l585
l586:
position, tokenIndex = position585, tokenIndex585
if buffer[position] != rune('L') {
goto l571
}
position++
}
l585:
add(ruleTOCRefLow, position572)
}
return true
l571:
position, tokenIndex = position571, tokenIndex571
return false
},
/* 44 IndirectionIndicator <- <'*'> */
func() bool {
position587, tokenIndex587 := position, tokenIndex
{
position588 := position
if buffer[position] != rune('*') {
goto l587
}
position++
add(ruleIndirectionIndicator, position588)
}
return true
l587:
position, tokenIndex = position587, tokenIndex587
return false
},
/* 45 Float <- <([0-9]+ '.' [0-9]*)> */
func() bool {
position589, tokenIndex589 := position, tokenIndex
{
position590 := position
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l589
}
position++
l591:
{
position592, tokenIndex592 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l592
}
position++
goto l591
l592:
position, tokenIndex = position592, tokenIndex592
}
if buffer[position] != rune('.') {
goto l589
}
position++
l593:
{
position594, tokenIndex594 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l594
}
position++
goto l593
l594:
position, tokenIndex = position594, tokenIndex594
}
add(ruleFloat, position590)
}
return true
l589:
position, tokenIndex = position589, tokenIndex589
return false
},
/* 46 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 {
position595, tokenIndex595 := position, tokenIndex
{
position596 := position
{
position597, tokenIndex597 := position, tokenIndex
if buffer[position] != rune('%') {
goto l598
}
position++
{
position599, tokenIndex599 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l600
}
position++
goto l599
l600:
position, tokenIndex = position599, tokenIndex599
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l598
}
position++
}
l599:
l601:
{
position602, tokenIndex602 := position, tokenIndex
{
position603, tokenIndex603 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l604
}
position++
goto l603
l604:
position, tokenIndex = position603, tokenIndex603
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l605
}
position++
goto l603
l605:
position, tokenIndex = position603, tokenIndex603
{
position606, tokenIndex606 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l607
}
position++
goto l606
l607:
position, tokenIndex = position606, tokenIndex606
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l602
}
position++
}
l606:
}
l603:
goto l601
l602:
position, tokenIndex = position602, tokenIndex602
}
goto l597
l598:
position, tokenIndex = position597, tokenIndex597
{
position609, tokenIndex609 := position, tokenIndex
if buffer[position] != rune('$') {
goto l609
}
position++
goto l610
l609:
position, tokenIndex = position609, tokenIndex609
}
l610:
{
position611, tokenIndex611 := position, tokenIndex
if !_rules[ruleOffset]() {
goto l612
}
if !_rules[ruleOffset]() {
goto l612
}
goto l611
l612:
position, tokenIndex = position611, tokenIndex611
if !_rules[ruleOffset]() {
goto l608
}
}
l611:
goto l597
l608:
position, tokenIndex = position597, tokenIndex597
if buffer[position] != rune('#') {
goto l613
}
position++
if !_rules[ruleFloat]() {
goto l613
}
goto l597
l613:
position, tokenIndex = position597, tokenIndex597
if buffer[position] != rune('#') {
goto l614
}
position++
if !_rules[ruleOffset]() {
goto l614
}
{
position615, tokenIndex615 := position, tokenIndex
if buffer[position] != rune('*') {
goto l615
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l615
}
position++
l617:
{
position618, tokenIndex618 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l618
}
position++
goto l617
l618:
position, tokenIndex = position618, tokenIndex618
}
{
position619, tokenIndex619 := position, tokenIndex
if buffer[position] != rune('-') {
goto l619
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l619
}
position++
l621:
{
position622, tokenIndex622 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l622
}
position++
goto l621
l622:
position, tokenIndex = position622, tokenIndex622
}
goto l620
l619:
position, tokenIndex = position619, tokenIndex619
}
l620:
goto l616
l615:
position, tokenIndex = position615, tokenIndex615
}
l616:
goto l597
l614:
position, tokenIndex = position597, tokenIndex597
if buffer[position] != rune('#') {
goto l623
}
position++
{
position624, tokenIndex624 := position, tokenIndex
if buffer[position] != rune('~') {
goto l624
}
position++
goto l625
l624:
position, tokenIndex = position624, tokenIndex624
}
l625:
if buffer[position] != rune('(') {
goto l623
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l623
}
position++
{
position626, tokenIndex626 := position, tokenIndex
if !_rules[ruleWS]() {
goto l626
}
goto l627
l626:
position, tokenIndex = position626, tokenIndex626
}
l627:
if buffer[position] != rune('<') {
goto l623
}
position++
if buffer[position] != rune('<') {
goto l623
}
position++
{
position628, tokenIndex628 := position, tokenIndex
if !_rules[ruleWS]() {
goto l628
}
goto l629
l628:
position, tokenIndex = position628, tokenIndex628
}
l629:
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l623
}
position++
if buffer[position] != rune(')') {
goto l623
}
position++
goto l597
l623:
position, tokenIndex = position597, tokenIndex597
if !_rules[ruleARMRegister]() {
goto l595
}
}
l597:
{
position630, tokenIndex630 := position, tokenIndex
{
position631, tokenIndex631 := position, tokenIndex
if buffer[position] != rune('f') {
goto l632
}
position++
goto l631
l632:
position, tokenIndex = position631, tokenIndex631
if buffer[position] != rune('b') {
goto l633
}
position++
goto l631
l633:
position, tokenIndex = position631, tokenIndex631
if buffer[position] != rune(':') {
goto l634
}
position++
goto l631
l634:
position, tokenIndex = position631, tokenIndex631
if buffer[position] != rune('(') {
goto l635
}
position++
goto l631
l635:
position, tokenIndex = position631, tokenIndex631
if buffer[position] != rune('+') {
goto l636
}
position++
goto l631
l636:
position, tokenIndex = position631, tokenIndex631
if buffer[position] != rune('-') {
goto l630
}
position++
}
l631:
goto l595
l630:
position, tokenIndex = position630, tokenIndex630
}
add(ruleRegisterOrConstant, position596)
}
return true
l595:
position, tokenIndex = position595, tokenIndex595
return false
},
/* 47 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 {
position637, tokenIndex637 := position, tokenIndex
{
position638 := position
{
position639, tokenIndex639 := position, tokenIndex
{
position641, tokenIndex641 := position, tokenIndex
{
position643, tokenIndex643 := position, tokenIndex
if buffer[position] != rune('u') {
goto l644
}
position++
goto l643
l644:
position, tokenIndex = position643, tokenIndex643
if buffer[position] != rune('s') {
goto l642
}
position++
}
l643:
{
position645, tokenIndex645 := position, tokenIndex
if buffer[position] != rune('x') {
goto l646
}
position++
goto l645
l646:
position, tokenIndex = position645, tokenIndex645
if buffer[position] != rune('X') {
goto l642
}
position++
}
l645:
{
position647, tokenIndex647 := position, tokenIndex
if buffer[position] != rune('t') {
goto l648
}
position++
goto l647
l648:
position, tokenIndex = position647, tokenIndex647
if buffer[position] != rune('T') {
goto l642
}
position++
}
l647:
{
position649, tokenIndex649 := position, tokenIndex
if buffer[position] != rune('x') {
goto l650
}
position++
goto l649
l650:
position, tokenIndex = position649, tokenIndex649
if buffer[position] != rune('w') {
goto l651
}
position++
goto l649
l651:
position, tokenIndex = position649, tokenIndex649
if buffer[position] != rune('h') {
goto l652
}
position++
goto l649
l652:
position, tokenIndex = position649, tokenIndex649
if buffer[position] != rune('b') {
goto l642
}
position++
}
l649:
goto l641
l642:
position, tokenIndex = position641, tokenIndex641
{
position654, tokenIndex654 := position, tokenIndex
if buffer[position] != rune('l') {
goto l655
}
position++
goto l654
l655:
position, tokenIndex = position654, tokenIndex654
if buffer[position] != rune('L') {
goto l653
}
position++
}
l654:
{
position656, tokenIndex656 := position, tokenIndex
if buffer[position] != rune('s') {
goto l657
}
position++
goto l656
l657:
position, tokenIndex = position656, tokenIndex656
if buffer[position] != rune('S') {
goto l653
}
position++
}
l656:
{
position658, tokenIndex658 := position, tokenIndex
if buffer[position] != rune('l') {
goto l659
}
position++
goto l658
l659:
position, tokenIndex = position658, tokenIndex658
if buffer[position] != rune('L') {
goto l653
}
position++
}
l658:
goto l641
l653:
position, tokenIndex = position641, tokenIndex641
{
position661, tokenIndex661 := position, tokenIndex
if buffer[position] != rune('l') {
goto l662
}
position++
goto l661
l662:
position, tokenIndex = position661, tokenIndex661
if buffer[position] != rune('L') {
goto l660
}
position++
}
l661:
{
position663, tokenIndex663 := position, tokenIndex
if buffer[position] != rune('s') {
goto l664
}
position++
goto l663
l664:
position, tokenIndex = position663, tokenIndex663
if buffer[position] != rune('S') {
goto l660
}
position++
}
l663:
{
position665, tokenIndex665 := position, tokenIndex
if buffer[position] != rune('r') {
goto l666
}
position++
goto l665
l666:
position, tokenIndex = position665, tokenIndex665
if buffer[position] != rune('R') {
goto l660
}
position++
}
l665:
goto l641
l660:
position, tokenIndex = position641, tokenIndex641
{
position668, tokenIndex668 := position, tokenIndex
if buffer[position] != rune('r') {
goto l669
}
position++
goto l668
l669:
position, tokenIndex = position668, tokenIndex668
if buffer[position] != rune('R') {
goto l667
}
position++
}
l668:
{
position670, tokenIndex670 := position, tokenIndex
if buffer[position] != rune('o') {
goto l671
}
position++
goto l670
l671:
position, tokenIndex = position670, tokenIndex670
if buffer[position] != rune('O') {
goto l667
}
position++
}
l670:
{
position672, tokenIndex672 := position, tokenIndex
if buffer[position] != rune('r') {
goto l673
}
position++
goto l672
l673:
position, tokenIndex = position672, tokenIndex672
if buffer[position] != rune('R') {
goto l667
}
position++
}
l672:
goto l641
l667:
position, tokenIndex = position641, tokenIndex641
{
position675, tokenIndex675 := position, tokenIndex
if buffer[position] != rune('a') {
goto l676
}
position++
goto l675
l676:
position, tokenIndex = position675, tokenIndex675
if buffer[position] != rune('A') {
goto l674
}
position++
}
l675:
{
position677, tokenIndex677 := position, tokenIndex
if buffer[position] != rune('s') {
goto l678
}
position++
goto l677
l678:
position, tokenIndex = position677, tokenIndex677
if buffer[position] != rune('S') {
goto l674
}
position++
}
l677:
{
position679, tokenIndex679 := position, tokenIndex
if buffer[position] != rune('r') {
goto l680
}
position++
goto l679
l680:
position, tokenIndex = position679, tokenIndex679
if buffer[position] != rune('R') {
goto l674
}
position++
}
l679:
goto l641
l674:
position, tokenIndex = position641, tokenIndex641
{
position681, tokenIndex681 := position, tokenIndex
if buffer[position] != rune('m') {
goto l682
}
position++
goto l681
l682:
position, tokenIndex = position681, tokenIndex681
if buffer[position] != rune('M') {
goto l640
}
position++
}
l681:
{
position683, tokenIndex683 := position, tokenIndex
if buffer[position] != rune('s') {
goto l684
}
position++
goto l683
l684:
position, tokenIndex = position683, tokenIndex683
if buffer[position] != rune('S') {
goto l640
}
position++
}
l683:
{
position685, tokenIndex685 := position, tokenIndex
if buffer[position] != rune('l') {
goto l686
}
position++
goto l685
l686:
position, tokenIndex = position685, tokenIndex685
if buffer[position] != rune('L') {
goto l640
}
position++
}
l685:
}
l641:
{
position687, tokenIndex687 := position, tokenIndex
if !_rules[ruleWS]() {
goto l687
}
if buffer[position] != rune('#') {
goto l687
}
position++
if !_rules[ruleOffset]() {
goto l687
}
goto l688
l687:
position, tokenIndex = position687, tokenIndex687
}
l688:
goto l639
l640:
position, tokenIndex = position639, tokenIndex639
{
position690, tokenIndex690 := position, tokenIndex
if buffer[position] != rune('m') {
goto l691
}
position++
goto l690
l691:
position, tokenIndex = position690, tokenIndex690
if buffer[position] != rune('M') {
goto l689
}
position++
}
l690:
{
position692, tokenIndex692 := position, tokenIndex
if buffer[position] != rune('u') {
goto l693
}
position++
goto l692
l693:
position, tokenIndex = position692, tokenIndex692
if buffer[position] != rune('U') {
goto l689
}
position++
}
l692:
{
position694, tokenIndex694 := position, tokenIndex
if buffer[position] != rune('l') {
goto l695
}
position++
goto l694
l695:
position, tokenIndex = position694, tokenIndex694
if buffer[position] != rune('L') {
goto l689
}
position++
}
l694:
if buffer[position] != rune(' ') {
goto l689
}
position++
{
position696, tokenIndex696 := position, tokenIndex
if buffer[position] != rune('v') {
goto l697
}
position++
goto l696
l697:
position, tokenIndex = position696, tokenIndex696
if buffer[position] != rune('V') {
goto l689
}
position++
}
l696:
{
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 l689
}
position++
}
l698:
goto l639
l689:
position, tokenIndex = position639, tokenIndex639
{
position700, tokenIndex700 := position, tokenIndex
if buffer[position] != rune('m') {
goto l701
}
position++
goto l700
l701:
position, tokenIndex = position700, tokenIndex700
if buffer[position] != rune('M') {
goto l637
}
position++
}
l700:
{
position702, tokenIndex702 := position, tokenIndex
if buffer[position] != rune('u') {
goto l703
}
position++
goto l702
l703:
position, tokenIndex = position702, tokenIndex702
if buffer[position] != rune('U') {
goto l637
}
position++
}
l702:
{
position704, tokenIndex704 := position, tokenIndex
if buffer[position] != rune('l') {
goto l705
}
position++
goto l704
l705:
position, tokenIndex = position704, tokenIndex704
if buffer[position] != rune('L') {
goto l637
}
position++
}
l704:
if buffer[position] != rune(' ') {
goto l637
}
position++
if buffer[position] != rune('#') {
goto l637
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l637
}
position++
{
position706, tokenIndex706 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l706
}
position++
goto l707
l706:
position, tokenIndex = position706, tokenIndex706
}
l707:
}
l639:
add(ruleARMConstantTweak, position638)
}
return true
l637:
position, tokenIndex = position637, tokenIndex637
return false
},
/* 48 ARMRegister <- <((('s' / 'S') ('p' / 'P')) / (('x' / 'w' / 'd' / 'q' / 's' / 'h' / 'b') [0-9] [0-9]?) / (('x' / 'X') ('z' / 'Z') ('r' / 'R')) / (('w' / 'W') ('z' / 'Z') ('r' / 'R')) / (('n' / 'N') ('z' / 'Z') ('c' / 'C') ('v' / 'V')) / SVE2PredicateRegister / ARMVectorRegister / SVE2SpecialValue / ('{' WS? ARMVectorRegister (',' WS? ARMVectorRegister)* WS? '}' ('[' [0-9] [0-9]? ']')?))> */
func() bool {
position708, tokenIndex708 := position, tokenIndex
{
position709 := position
{
position710, tokenIndex710 := position, tokenIndex
{
position712, tokenIndex712 := position, tokenIndex
if buffer[position] != rune('s') {
goto l713
}
position++
goto l712
l713:
position, tokenIndex = position712, tokenIndex712
if buffer[position] != rune('S') {
goto l711
}
position++
}
l712:
{
position714, tokenIndex714 := position, tokenIndex
if buffer[position] != rune('p') {
goto l715
}
position++
goto l714
l715:
position, tokenIndex = position714, tokenIndex714
if buffer[position] != rune('P') {
goto l711
}
position++
}
l714:
goto l710
l711:
position, tokenIndex = position710, tokenIndex710
{
position717, tokenIndex717 := position, tokenIndex
if buffer[position] != rune('x') {
goto l718
}
position++
goto l717
l718:
position, tokenIndex = position717, tokenIndex717
if buffer[position] != rune('w') {
goto l719
}
position++
goto l717
l719:
position, tokenIndex = position717, tokenIndex717
if buffer[position] != rune('d') {
goto l720
}
position++
goto l717
l720:
position, tokenIndex = position717, tokenIndex717
if buffer[position] != rune('q') {
goto l721
}
position++
goto l717
l721:
position, tokenIndex = position717, tokenIndex717
if buffer[position] != rune('s') {
goto l722
}
position++
goto l717
l722:
position, tokenIndex = position717, tokenIndex717
if buffer[position] != rune('h') {
goto l723
}
position++
goto l717
l723:
position, tokenIndex = position717, tokenIndex717
if buffer[position] != rune('b') {
goto l716
}
position++
}
l717:
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l716
}
position++
{
position724, tokenIndex724 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l724
}
position++
goto l725
l724:
position, tokenIndex = position724, tokenIndex724
}
l725:
goto l710
l716:
position, tokenIndex = position710, tokenIndex710
{
position727, tokenIndex727 := position, tokenIndex
if buffer[position] != rune('x') {
goto l728
}
position++
goto l727
l728:
position, tokenIndex = position727, tokenIndex727
if buffer[position] != rune('X') {
goto l726
}
position++
}
l727:
{
position729, tokenIndex729 := position, tokenIndex
if buffer[position] != rune('z') {
goto l730
}
position++
goto l729
l730:
position, tokenIndex = position729, tokenIndex729
if buffer[position] != rune('Z') {
goto l726
}
position++
}
l729:
{
position731, tokenIndex731 := position, tokenIndex
if buffer[position] != rune('r') {
goto l732
}
position++
goto l731
l732:
position, tokenIndex = position731, tokenIndex731
if buffer[position] != rune('R') {
goto l726
}
position++
}
l731:
goto l710
l726:
position, tokenIndex = position710, tokenIndex710
{
position734, tokenIndex734 := position, tokenIndex
if buffer[position] != rune('w') {
goto l735
}
position++
goto l734
l735:
position, tokenIndex = position734, tokenIndex734
if buffer[position] != rune('W') {
goto l733
}
position++
}
l734:
{
position736, tokenIndex736 := position, tokenIndex
if buffer[position] != rune('z') {
goto l737
}
position++
goto l736
l737:
position, tokenIndex = position736, tokenIndex736
if buffer[position] != rune('Z') {
goto l733
}
position++
}
l736:
{
position738, tokenIndex738 := position, tokenIndex
if buffer[position] != rune('r') {
goto l739
}
position++
goto l738
l739:
position, tokenIndex = position738, tokenIndex738
if buffer[position] != rune('R') {
goto l733
}
position++
}
l738:
goto l710
l733:
position, tokenIndex = position710, tokenIndex710
{
position741, tokenIndex741 := position, tokenIndex
if buffer[position] != rune('n') {
goto l742
}
position++
goto l741
l742:
position, tokenIndex = position741, tokenIndex741
if buffer[position] != rune('N') {
goto l740
}
position++
}
l741:
{
position743, tokenIndex743 := position, tokenIndex
if buffer[position] != rune('z') {
goto l744
}
position++
goto l743
l744:
position, tokenIndex = position743, tokenIndex743
if buffer[position] != rune('Z') {
goto l740
}
position++
}
l743:
{
position745, tokenIndex745 := position, tokenIndex
if buffer[position] != rune('c') {
goto l746
}
position++
goto l745
l746:
position, tokenIndex = position745, tokenIndex745
if buffer[position] != rune('C') {
goto l740
}
position++
}
l745:
{
position747, tokenIndex747 := position, tokenIndex
if buffer[position] != rune('v') {
goto l748
}
position++
goto l747
l748:
position, tokenIndex = position747, tokenIndex747
if buffer[position] != rune('V') {
goto l740
}
position++
}
l747:
goto l710
l740:
position, tokenIndex = position710, tokenIndex710
if !_rules[ruleSVE2PredicateRegister]() {
goto l749
}
goto l710
l749:
position, tokenIndex = position710, tokenIndex710
if !_rules[ruleARMVectorRegister]() {
goto l750
}
goto l710
l750:
position, tokenIndex = position710, tokenIndex710
if !_rules[ruleSVE2SpecialValue]() {
goto l751
}
goto l710
l751:
position, tokenIndex = position710, tokenIndex710
if buffer[position] != rune('{') {
goto l708
}
position++
{
position752, tokenIndex752 := position, tokenIndex
if !_rules[ruleWS]() {
goto l752
}
goto l753
l752:
position, tokenIndex = position752, tokenIndex752
}
l753:
if !_rules[ruleARMVectorRegister]() {
goto l708
}
l754:
{
position755, tokenIndex755 := position, tokenIndex
if buffer[position] != rune(',') {
goto l755
}
position++
{
position756, tokenIndex756 := position, tokenIndex
if !_rules[ruleWS]() {
goto l756
}
goto l757
l756:
position, tokenIndex = position756, tokenIndex756
}
l757:
if !_rules[ruleARMVectorRegister]() {
goto l755
}
goto l754
l755:
position, tokenIndex = position755, tokenIndex755
}
{
position758, tokenIndex758 := position, tokenIndex
if !_rules[ruleWS]() {
goto l758
}
goto l759
l758:
position, tokenIndex = position758, tokenIndex758
}
l759:
if buffer[position] != rune('}') {
goto l708
}
position++
{
position760, tokenIndex760 := position, tokenIndex
if buffer[position] != rune('[') {
goto l760
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l760
}
position++
{
position762, tokenIndex762 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l762
}
position++
goto l763
l762:
position, tokenIndex = position762, tokenIndex762
}
l763:
if buffer[position] != rune(']') {
goto l760
}
position++
goto l761
l760:
position, tokenIndex = position760, tokenIndex760
}
l761:
}
l710:
add(ruleARMRegister, position709)
}
return true
l708:
position, tokenIndex = position708, tokenIndex708
return false
},
/* 49 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 {
position764, tokenIndex764 := position, tokenIndex
{
position765 := position
{
position766, tokenIndex766 := position, tokenIndex
if buffer[position] != rune('p') {
goto l767
}
position++
goto l766
l767:
position, tokenIndex = position766, tokenIndex766
if buffer[position] != rune('v') {
goto l768
}
position++
goto l766
l768:
position, tokenIndex = position766, tokenIndex766
if buffer[position] != rune('z') {
goto l764
}
position++
}
l766:
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l764
}
position++
{
position769, tokenIndex769 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l769
}
position++
goto l770
l769:
position, tokenIndex = position769, tokenIndex769
}
l770:
{
position771, tokenIndex771 := position, tokenIndex
{
position772, tokenIndex772 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l773
}
position++
goto l772
l773:
position, tokenIndex = position772, tokenIndex772
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l774
}
position++
goto l772
l774:
position, tokenIndex = position772, tokenIndex772
{
position776, tokenIndex776 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l777
}
position++
goto l776
l777:
position, tokenIndex = position776, tokenIndex776
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l775
}
position++
}
l776:
goto l772
l775:
position, tokenIndex = position772, tokenIndex772
if buffer[position] != rune('_') {
goto l771
}
position++
}
l772:
goto l764
l771:
position, tokenIndex = position771, tokenIndex771
}
{
position778, tokenIndex778 := position, tokenIndex
if buffer[position] != rune('.') {
goto l778
}
position++
l780:
{
position781, tokenIndex781 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l781
}
position++
goto l780
l781:
position, tokenIndex = position781, tokenIndex781
}
{
position782, tokenIndex782 := position, tokenIndex
if buffer[position] != rune('b') {
goto l783
}
position++
goto l782
l783:
position, tokenIndex = position782, tokenIndex782
if buffer[position] != rune('s') {
goto l784
}
position++
goto l782
l784:
position, tokenIndex = position782, tokenIndex782
if buffer[position] != rune('d') {
goto l785
}
position++
goto l782
l785:
position, tokenIndex = position782, tokenIndex782
if buffer[position] != rune('h') {
goto l786
}
position++
goto l782
l786:
position, tokenIndex = position782, tokenIndex782
if buffer[position] != rune('q') {
goto l778
}
position++
}
l782:
{
position787, tokenIndex787 := position, tokenIndex
if buffer[position] != rune('[') {
goto l787
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l787
}
position++
{
position789, tokenIndex789 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l789
}
position++
goto l790
l789:
position, tokenIndex = position789, tokenIndex789
}
l790:
if buffer[position] != rune(']') {
goto l787
}
position++
goto l788
l787:
position, tokenIndex = position787, tokenIndex787
}
l788:
goto l779
l778:
position, tokenIndex = position778, tokenIndex778
}
l779:
add(ruleARMVectorRegister, position765)
}
return true
l764:
position, tokenIndex = position764, tokenIndex764
return false
},
/* 50 SVE2PredicateRegister <- <(('p' / 'P') [0-9] [0-9]? '/' ('m' / 'M' / ('z' / 'Z')))> */
func() bool {
position791, tokenIndex791 := position, tokenIndex
{
position792 := position
{
position793, tokenIndex793 := position, tokenIndex
if buffer[position] != rune('p') {
goto l794
}
position++
goto l793
l794:
position, tokenIndex = position793, tokenIndex793
if buffer[position] != rune('P') {
goto l791
}
position++
}
l793:
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l791
}
position++
{
position795, tokenIndex795 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l795
}
position++
goto l796
l795:
position, tokenIndex = position795, tokenIndex795
}
l796:
if buffer[position] != rune('/') {
goto l791
}
position++
{
position797, tokenIndex797 := position, tokenIndex
if buffer[position] != rune('m') {
goto l798
}
position++
goto l797
l798:
position, tokenIndex = position797, tokenIndex797
if buffer[position] != rune('M') {
goto l799
}
position++
goto l797
l799:
position, tokenIndex = position797, tokenIndex797
{
position800, tokenIndex800 := position, tokenIndex
if buffer[position] != rune('z') {
goto l801
}
position++
goto l800
l801:
position, tokenIndex = position800, tokenIndex800
if buffer[position] != rune('Z') {
goto l791
}
position++
}
l800:
}
l797:
add(ruleSVE2PredicateRegister, position792)
}
return true
l791:
position, tokenIndex = position791, tokenIndex791
return false
},
/* 51 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 {
position802, tokenIndex802 := position, tokenIndex
{
position803 := position
{
position804, tokenIndex804 := position, tokenIndex
{
position806, tokenIndex806 := position, tokenIndex
if buffer[position] != rune('p') {
goto l807
}
position++
goto l806
l807:
position, tokenIndex = position806, tokenIndex806
if buffer[position] != rune('P') {
goto l805
}
position++
}
l806:
{
position808, tokenIndex808 := position, tokenIndex
if buffer[position] != rune('o') {
goto l809
}
position++
goto l808
l809:
position, tokenIndex = position808, tokenIndex808
if buffer[position] != rune('O') {
goto l805
}
position++
}
l808:
{
position810, tokenIndex810 := position, tokenIndex
if buffer[position] != rune('w') {
goto l811
}
position++
goto l810
l811:
position, tokenIndex = position810, tokenIndex810
if buffer[position] != rune('W') {
goto l805
}
position++
}
l810:
if buffer[position] != rune('2') {
goto l805
}
position++
goto l804
l805:
position, tokenIndex = position804, tokenIndex804
{
position813, tokenIndex813 := position, tokenIndex
if buffer[position] != rune('v') {
goto l814
}
position++
goto l813
l814:
position, tokenIndex = position813, tokenIndex813
if buffer[position] != rune('V') {
goto l812
}
position++
}
l813:
{
position815, tokenIndex815 := position, tokenIndex
if buffer[position] != rune('l') {
goto l816
}
position++
goto l815
l816:
position, tokenIndex = position815, tokenIndex815
if buffer[position] != rune('L') {
goto l812
}
position++
}
l815:
{
position817, tokenIndex817 := position, tokenIndex
if buffer[position] != rune('1') {
goto l818
}
position++
goto l817
l818:
position, tokenIndex = position817, tokenIndex817
if buffer[position] != rune('2') {
goto l819
}
position++
goto l817
l819:
position, tokenIndex = position817, tokenIndex817
if buffer[position] != rune('3') {
goto l820
}
position++
goto l817
l820:
position, tokenIndex = position817, tokenIndex817
if buffer[position] != rune('4') {
goto l821
}
position++
goto l817
l821:
position, tokenIndex = position817, tokenIndex817
if buffer[position] != rune('5') {
goto l822
}
position++
goto l817
l822:
position, tokenIndex = position817, tokenIndex817
if buffer[position] != rune('6') {
goto l823
}
position++
goto l817
l823:
position, tokenIndex = position817, tokenIndex817
if buffer[position] != rune('7') {
goto l824
}
position++
goto l817
l824:
position, tokenIndex = position817, tokenIndex817
if buffer[position] != rune('8') {
goto l812
}
position++
}
l817:
{
position825, tokenIndex825 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l825
}
position++
goto l812
l825:
position, tokenIndex = position825, tokenIndex825
}
goto l804
l812:
position, tokenIndex = position804, tokenIndex804
{
position827, tokenIndex827 := position, tokenIndex
if buffer[position] != rune('v') {
goto l828
}
position++
goto l827
l828:
position, tokenIndex = position827, tokenIndex827
if buffer[position] != rune('V') {
goto l826
}
position++
}
l827:
{
position829, tokenIndex829 := position, tokenIndex
if buffer[position] != rune('l') {
goto l830
}
position++
goto l829
l830:
position, tokenIndex = position829, tokenIndex829
if buffer[position] != rune('L') {
goto l826
}
position++
}
l829:
if buffer[position] != rune('1') {
goto l826
}
position++
if buffer[position] != rune('6') {
goto l826
}
position++
goto l804
l826:
position, tokenIndex = position804, tokenIndex804
{
position832, tokenIndex832 := position, tokenIndex
if buffer[position] != rune('v') {
goto l833
}
position++
goto l832
l833:
position, tokenIndex = position832, tokenIndex832
if buffer[position] != rune('V') {
goto l831
}
position++
}
l832:
{
position834, tokenIndex834 := position, tokenIndex
if buffer[position] != rune('l') {
goto l835
}
position++
goto l834
l835:
position, tokenIndex = position834, tokenIndex834
if buffer[position] != rune('L') {
goto l831
}
position++
}
l834:
if buffer[position] != rune('3') {
goto l831
}
position++
if buffer[position] != rune('2') {
goto l831
}
position++
goto l804
l831:
position, tokenIndex = position804, tokenIndex804
{
position837, tokenIndex837 := position, tokenIndex
if buffer[position] != rune('v') {
goto l838
}
position++
goto l837
l838:
position, tokenIndex = position837, tokenIndex837
if buffer[position] != rune('V') {
goto l836
}
position++
}
l837:
{
position839, tokenIndex839 := position, tokenIndex
if buffer[position] != rune('l') {
goto l840
}
position++
goto l839
l840:
position, tokenIndex = position839, tokenIndex839
if buffer[position] != rune('L') {
goto l836
}
position++
}
l839:
if buffer[position] != rune('6') {
goto l836
}
position++
if buffer[position] != rune('4') {
goto l836
}
position++
goto l804
l836:
position, tokenIndex = position804, tokenIndex804
{
position842, tokenIndex842 := position, tokenIndex
if buffer[position] != rune('v') {
goto l843
}
position++
goto l842
l843:
position, tokenIndex = position842, tokenIndex842
if buffer[position] != rune('V') {
goto l841
}
position++
}
l842:
{
position844, tokenIndex844 := position, tokenIndex
if buffer[position] != rune('l') {
goto l845
}
position++
goto l844
l845:
position, tokenIndex = position844, tokenIndex844
if buffer[position] != rune('L') {
goto l841
}
position++
}
l844:
if buffer[position] != rune('1') {
goto l841
}
position++
if buffer[position] != rune('2') {
goto l841
}
position++
if buffer[position] != rune('8') {
goto l841
}
position++
goto l804
l841:
position, tokenIndex = position804, tokenIndex804
{
position847, tokenIndex847 := position, tokenIndex
if buffer[position] != rune('v') {
goto l848
}
position++
goto l847
l848:
position, tokenIndex = position847, tokenIndex847
if buffer[position] != rune('V') {
goto l846
}
position++
}
l847:
{
position849, tokenIndex849 := position, tokenIndex
if buffer[position] != rune('l') {
goto l850
}
position++
goto l849
l850:
position, tokenIndex = position849, tokenIndex849
if buffer[position] != rune('L') {
goto l846
}
position++
}
l849:
if buffer[position] != rune('2') {
goto l846
}
position++
if buffer[position] != rune('5') {
goto l846
}
position++
if buffer[position] != rune('6') {
goto l846
}
position++
goto l804
l846:
position, tokenIndex = position804, tokenIndex804
{
position852, tokenIndex852 := position, tokenIndex
if buffer[position] != rune('m') {
goto l853
}
position++
goto l852
l853:
position, tokenIndex = position852, tokenIndex852
if buffer[position] != rune('M') {
goto l851
}
position++
}
l852:
{
position854, tokenIndex854 := position, tokenIndex
if buffer[position] != rune('u') {
goto l855
}
position++
goto l854
l855:
position, tokenIndex = position854, tokenIndex854
if buffer[position] != rune('U') {
goto l851
}
position++
}
l854:
{
position856, tokenIndex856 := position, tokenIndex
if buffer[position] != rune('l') {
goto l857
}
position++
goto l856
l857:
position, tokenIndex = position856, tokenIndex856
if buffer[position] != rune('L') {
goto l851
}
position++
}
l856:
if buffer[position] != rune('3') {
goto l851
}
position++
goto l804
l851:
position, tokenIndex = position804, tokenIndex804
{
position859, tokenIndex859 := position, tokenIndex
if buffer[position] != rune('m') {
goto l860
}
position++
goto l859
l860:
position, tokenIndex = position859, tokenIndex859
if buffer[position] != rune('M') {
goto l858
}
position++
}
l859:
{
position861, tokenIndex861 := position, tokenIndex
if buffer[position] != rune('u') {
goto l862
}
position++
goto l861
l862:
position, tokenIndex = position861, tokenIndex861
if buffer[position] != rune('U') {
goto l858
}
position++
}
l861:
{
position863, tokenIndex863 := position, tokenIndex
if buffer[position] != rune('l') {
goto l864
}
position++
goto l863
l864:
position, tokenIndex = position863, tokenIndex863
if buffer[position] != rune('L') {
goto l858
}
position++
}
l863:
if buffer[position] != rune('4') {
goto l858
}
position++
goto l804
l858:
position, tokenIndex = position804, tokenIndex804
{
position865, tokenIndex865 := position, tokenIndex
if buffer[position] != rune('a') {
goto l866
}
position++
goto l865
l866:
position, tokenIndex = position865, tokenIndex865
if buffer[position] != rune('A') {
goto l802
}
position++
}
l865:
{
position867, tokenIndex867 := position, tokenIndex
if buffer[position] != rune('l') {
goto l868
}
position++
goto l867
l868:
position, tokenIndex = position867, tokenIndex867
if buffer[position] != rune('L') {
goto l802
}
position++
}
l867:
{
position869, tokenIndex869 := position, tokenIndex
if buffer[position] != rune('l') {
goto l870
}
position++
goto l869
l870:
position, tokenIndex = position869, tokenIndex869
if buffer[position] != rune('L') {
goto l802
}
position++
}
l869:
}
l804:
{
position871, tokenIndex871 := position, tokenIndex
{
position872, tokenIndex872 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l873
}
position++
goto l872
l873:
position, tokenIndex = position872, tokenIndex872
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l874
}
position++
goto l872
l874:
position, tokenIndex = position872, tokenIndex872
{
position876, tokenIndex876 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l877
}
position++
goto l876
l877:
position, tokenIndex = position876, tokenIndex876
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l875
}
position++
}
l876:
goto l872
l875:
position, tokenIndex = position872, tokenIndex872
if buffer[position] != rune('_') {
goto l871
}
position++
}
l872:
goto l802
l871:
position, tokenIndex = position871, tokenIndex871
}
add(ruleSVE2SpecialValue, position803)
}
return true
l802:
position, tokenIndex = position802, tokenIndex802
return false
},
/* 52 MemoryRef <- <((SymbolRef BaseIndexScale) / SymbolRef / Low12BitsSymbolRef / (Offset* BaseIndexScale) / (SegmentRegister Offset BaseIndexScale) / (SegmentRegister BaseIndexScale) / (SegmentRegister Offset) / ARMBaseIndexScale / BaseIndexScale)> */
func() bool {
position878, tokenIndex878 := position, tokenIndex
{
position879 := position
{
position880, tokenIndex880 := position, tokenIndex
if !_rules[ruleSymbolRef]() {
goto l881
}
if !_rules[ruleBaseIndexScale]() {
goto l881
}
goto l880
l881:
position, tokenIndex = position880, tokenIndex880
if !_rules[ruleSymbolRef]() {
goto l882
}
goto l880
l882:
position, tokenIndex = position880, tokenIndex880
if !_rules[ruleLow12BitsSymbolRef]() {
goto l883
}
goto l880
l883:
position, tokenIndex = position880, tokenIndex880
l885:
{
position886, tokenIndex886 := position, tokenIndex
if !_rules[ruleOffset]() {
goto l886
}
goto l885
l886:
position, tokenIndex = position886, tokenIndex886
}
if !_rules[ruleBaseIndexScale]() {
goto l884
}
goto l880
l884:
position, tokenIndex = position880, tokenIndex880
if !_rules[ruleSegmentRegister]() {
goto l887
}
if !_rules[ruleOffset]() {
goto l887
}
if !_rules[ruleBaseIndexScale]() {
goto l887
}
goto l880
l887:
position, tokenIndex = position880, tokenIndex880
if !_rules[ruleSegmentRegister]() {
goto l888
}
if !_rules[ruleBaseIndexScale]() {
goto l888
}
goto l880
l888:
position, tokenIndex = position880, tokenIndex880
if !_rules[ruleSegmentRegister]() {
goto l889
}
if !_rules[ruleOffset]() {
goto l889
}
goto l880
l889:
position, tokenIndex = position880, tokenIndex880
if !_rules[ruleARMBaseIndexScale]() {
goto l890
}
goto l880
l890:
position, tokenIndex = position880, tokenIndex880
if !_rules[ruleBaseIndexScale]() {
goto l878
}
}
l880:
add(ruleMemoryRef, position879)
}
return true
l878:
position, tokenIndex = position878, tokenIndex878
return false
},
/* 53 SymbolRef <- <((Offset* '+')? (LocalSymbol / SymbolName) Offset* ('@' Section Offset*)?)> */
func() bool {
position891, tokenIndex891 := position, tokenIndex
{
position892 := position
{
position893, tokenIndex893 := position, tokenIndex
l895:
{
position896, tokenIndex896 := position, tokenIndex
if !_rules[ruleOffset]() {
goto l896
}
goto l895
l896:
position, tokenIndex = position896, tokenIndex896
}
if buffer[position] != rune('+') {
goto l893
}
position++
goto l894
l893:
position, tokenIndex = position893, tokenIndex893
}
l894:
{
position897, tokenIndex897 := position, tokenIndex
if !_rules[ruleLocalSymbol]() {
goto l898
}
goto l897
l898:
position, tokenIndex = position897, tokenIndex897
if !_rules[ruleSymbolName]() {
goto l891
}
}
l897:
l899:
{
position900, tokenIndex900 := position, tokenIndex
if !_rules[ruleOffset]() {
goto l900
}
goto l899
l900:
position, tokenIndex = position900, tokenIndex900
}
{
position901, tokenIndex901 := position, tokenIndex
if buffer[position] != rune('@') {
goto l901
}
position++
if !_rules[ruleSection]() {
goto l901
}
l903:
{
position904, tokenIndex904 := position, tokenIndex
if !_rules[ruleOffset]() {
goto l904
}
goto l903
l904:
position, tokenIndex = position904, tokenIndex904
}
goto l902
l901:
position, tokenIndex = position901, tokenIndex901
}
l902:
add(ruleSymbolRef, position892)
}
return true
l891:
position, tokenIndex = position891, tokenIndex891
return false
},
/* 54 Low12BitsSymbolRef <- <(':' ('l' / 'L') ('o' / 'O') '1' '2' ':' (LocalSymbol / SymbolName) Offset?)> */
func() bool {
position905, tokenIndex905 := position, tokenIndex
{
position906 := position
if buffer[position] != rune(':') {
goto l905
}
position++
{
position907, tokenIndex907 := position, tokenIndex
if buffer[position] != rune('l') {
goto l908
}
position++
goto l907
l908:
position, tokenIndex = position907, tokenIndex907
if buffer[position] != rune('L') {
goto l905
}
position++
}
l907:
{
position909, tokenIndex909 := position, tokenIndex
if buffer[position] != rune('o') {
goto l910
}
position++
goto l909
l910:
position, tokenIndex = position909, tokenIndex909
if buffer[position] != rune('O') {
goto l905
}
position++
}
l909:
if buffer[position] != rune('1') {
goto l905
}
position++
if buffer[position] != rune('2') {
goto l905
}
position++
if buffer[position] != rune(':') {
goto l905
}
position++
{
position911, tokenIndex911 := position, tokenIndex
if !_rules[ruleLocalSymbol]() {
goto l912
}
goto l911
l912:
position, tokenIndex = position911, tokenIndex911
if !_rules[ruleSymbolName]() {
goto l905
}
}
l911:
{
position913, tokenIndex913 := position, tokenIndex
if !_rules[ruleOffset]() {
goto l913
}
goto l914
l913:
position, tokenIndex = position913, tokenIndex913
}
l914:
add(ruleLow12BitsSymbolRef, position906)
}
return true
l905:
position, tokenIndex = position905, tokenIndex905
return false
},
/* 55 ARMBaseIndexScale <- <('[' ARMRegister (',' WS? (('#' Offset (('*' [0-9]+) / ('*' '(' [0-9]+ Operator [0-9]+ ')') / ('+' [0-9]+)*)?) / ARMGOTLow12 / Low12BitsSymbolRef / ARMRegister) (',' WS? ARMConstantTweak)?)? ']' ARMPostincrement?)> */
func() bool {
position915, tokenIndex915 := position, tokenIndex
{
position916 := position
if buffer[position] != rune('[') {
goto l915
}
position++
if !_rules[ruleARMRegister]() {
goto l915
}
{
position917, tokenIndex917 := position, tokenIndex
if buffer[position] != rune(',') {
goto l917
}
position++
{
position919, tokenIndex919 := position, tokenIndex
if !_rules[ruleWS]() {
goto l919
}
goto l920
l919:
position, tokenIndex = position919, tokenIndex919
}
l920:
{
position921, tokenIndex921 := position, tokenIndex
if buffer[position] != rune('#') {
goto l922
}
position++
if !_rules[ruleOffset]() {
goto l922
}
{
position923, tokenIndex923 := position, tokenIndex
{
position925, tokenIndex925 := position, tokenIndex
if buffer[position] != rune('*') {
goto l926
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l926
}
position++
l927:
{
position928, tokenIndex928 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l928
}
position++
goto l927
l928:
position, tokenIndex = position928, tokenIndex928
}
goto l925
l926:
position, tokenIndex = position925, tokenIndex925
if buffer[position] != rune('*') {
goto l929
}
position++
if buffer[position] != rune('(') {
goto l929
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l929
}
position++
l930:
{
position931, tokenIndex931 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l931
}
position++
goto l930
l931:
position, tokenIndex = position931, tokenIndex931
}
if !_rules[ruleOperator]() {
goto l929
}
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l929
}
position++
l932:
{
position933, tokenIndex933 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l933
}
position++
goto l932
l933:
position, tokenIndex = position933, tokenIndex933
}
if buffer[position] != rune(')') {
goto l929
}
position++
goto l925
l929:
position, tokenIndex = position925, tokenIndex925
l934:
{
position935, tokenIndex935 := position, tokenIndex
if buffer[position] != rune('+') {
goto l935
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l935
}
position++
l936:
{
position937, tokenIndex937 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l937
}
position++
goto l936
l937:
position, tokenIndex = position937, tokenIndex937
}
goto l934
l935:
position, tokenIndex = position935, tokenIndex935
}
}
l925:
goto l924
position, tokenIndex = position923, tokenIndex923
}
l924:
goto l921
l922:
position, tokenIndex = position921, tokenIndex921
if !_rules[ruleARMGOTLow12]() {
goto l938
}
goto l921
l938:
position, tokenIndex = position921, tokenIndex921
if !_rules[ruleLow12BitsSymbolRef]() {
goto l939
}
goto l921
l939:
position, tokenIndex = position921, tokenIndex921
if !_rules[ruleARMRegister]() {
goto l917
}
}
l921:
{
position940, tokenIndex940 := position, tokenIndex
if buffer[position] != rune(',') {
goto l940
}
position++
{
position942, tokenIndex942 := position, tokenIndex
if !_rules[ruleWS]() {
goto l942
}
goto l943
l942:
position, tokenIndex = position942, tokenIndex942
}
l943:
if !_rules[ruleARMConstantTweak]() {
goto l940
}
goto l941
l940:
position, tokenIndex = position940, tokenIndex940
}
l941:
goto l918
l917:
position, tokenIndex = position917, tokenIndex917
}
l918:
if buffer[position] != rune(']') {
goto l915
}
position++
{
position944, tokenIndex944 := position, tokenIndex
if !_rules[ruleARMPostincrement]() {
goto l944
}
goto l945
l944:
position, tokenIndex = position944, tokenIndex944
}
l945:
add(ruleARMBaseIndexScale, position916)
}
return true
l915:
position, tokenIndex = position915, tokenIndex915
return false
},
/* 56 ARMGOTLow12 <- <(':' ('g' / 'G') ('o' / 'O') ('t' / 'T') '_' ('l' / 'L') ('o' / 'O') '1' '2' ':' SymbolName)> */
func() bool {
position946, tokenIndex946 := position, tokenIndex
{
position947 := position
if buffer[position] != rune(':') {
goto l946
}
position++
{
position948, tokenIndex948 := position, tokenIndex
if buffer[position] != rune('g') {
goto l949
}
position++
goto l948
l949:
position, tokenIndex = position948, tokenIndex948
if buffer[position] != rune('G') {
goto l946
}
position++
}
l948:
{
position950, tokenIndex950 := position, tokenIndex
if buffer[position] != rune('o') {
goto l951
}
position++
goto l950
l951:
position, tokenIndex = position950, tokenIndex950
if buffer[position] != rune('O') {
goto l946
}
position++
}
l950:
{
position952, tokenIndex952 := position, tokenIndex
if buffer[position] != rune('t') {
goto l953
}
position++
goto l952
l953:
position, tokenIndex = position952, tokenIndex952
if buffer[position] != rune('T') {
goto l946
}
position++
}
l952:
if buffer[position] != rune('_') {
goto l946
}
position++
{
position954, tokenIndex954 := position, tokenIndex
if buffer[position] != rune('l') {
goto l955
}
position++
goto l954
l955:
position, tokenIndex = position954, tokenIndex954
if buffer[position] != rune('L') {
goto l946
}
position++
}
l954:
{
position956, tokenIndex956 := position, tokenIndex
if buffer[position] != rune('o') {
goto l957
}
position++
goto l956
l957:
position, tokenIndex = position956, tokenIndex956
if buffer[position] != rune('O') {
goto l946
}
position++
}
l956:
if buffer[position] != rune('1') {
goto l946
}
position++
if buffer[position] != rune('2') {
goto l946
}
position++
if buffer[position] != rune(':') {
goto l946
}
position++
if !_rules[ruleSymbolName]() {
goto l946
}
add(ruleARMGOTLow12, position947)
}
return true
l946:
position, tokenIndex = position946, tokenIndex946
return false
},
/* 57 ARMPostincrement <- <'!'> */
func() bool {
position958, tokenIndex958 := position, tokenIndex
{
position959 := position
if buffer[position] != rune('!') {
goto l958
}
position++
add(ruleARMPostincrement, position959)
}
return true
l958:
position, tokenIndex = position958, tokenIndex958
return false
},
/* 58 BaseIndexScale <- <('(' RegisterOrConstant? WS? (',' WS? RegisterOrConstant WS? (',' [0-9]+)?)? ')')> */
func() bool {
position960, tokenIndex960 := position, tokenIndex
{
position961 := position
if buffer[position] != rune('(') {
goto l960
}
position++
{
position962, tokenIndex962 := position, tokenIndex
if !_rules[ruleRegisterOrConstant]() {
goto l962
}
goto l963
l962:
position, tokenIndex = position962, tokenIndex962
}
l963:
{
position964, tokenIndex964 := position, tokenIndex
if !_rules[ruleWS]() {
goto l964
}
goto l965
l964:
position, tokenIndex = position964, tokenIndex964
}
l965:
{
position966, tokenIndex966 := position, tokenIndex
if buffer[position] != rune(',') {
goto l966
}
position++
{
position968, tokenIndex968 := position, tokenIndex
if !_rules[ruleWS]() {
goto l968
}
goto l969
l968:
position, tokenIndex = position968, tokenIndex968
}
l969:
if !_rules[ruleRegisterOrConstant]() {
goto l966
}
{
position970, tokenIndex970 := position, tokenIndex
if !_rules[ruleWS]() {
goto l970
}
goto l971
l970:
position, tokenIndex = position970, tokenIndex970
}
l971:
{
position972, tokenIndex972 := position, tokenIndex
if buffer[position] != rune(',') {
goto l972
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l972
}
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 l973
l972:
position, tokenIndex = position972, tokenIndex972
}
l973:
goto l967
l966:
position, tokenIndex = position966, tokenIndex966
}
l967:
if buffer[position] != rune(')') {
goto l960
}
position++
add(ruleBaseIndexScale, position961)
}
return true
l960:
position, tokenIndex = position960, tokenIndex960
return false
},
/* 59 Operator <- <('+' / '-')> */
func() bool {
position976, tokenIndex976 := position, tokenIndex
{
position977 := position
{
position978, tokenIndex978 := position, tokenIndex
if buffer[position] != rune('+') {
goto l979
}
position++
goto l978
l979:
position, tokenIndex = position978, tokenIndex978
if buffer[position] != rune('-') {
goto l976
}
position++
}
l978:
add(ruleOperator, position977)
}
return true
l976:
position, tokenIndex = position976, tokenIndex976
return false
},
/* 60 Offset <- <('+'? '-'? (('0' ('b' / 'B') ('0' / '1')+) / ('0' ('x' / 'X') ([0-9] / [0-9] / ([a-f] / [A-F]))+) / [0-9]+))> */
func() bool {
position980, tokenIndex980 := position, tokenIndex
{
position981 := position
{
position982, tokenIndex982 := position, tokenIndex
if buffer[position] != rune('+') {
goto l982
}
position++
goto l983
l982:
position, tokenIndex = position982, tokenIndex982
}
l983:
{
position984, tokenIndex984 := position, tokenIndex
if buffer[position] != rune('-') {
goto l984
}
position++
goto l985
l984:
position, tokenIndex = position984, tokenIndex984
}
l985:
{
position986, tokenIndex986 := position, tokenIndex
if buffer[position] != rune('0') {
goto l987
}
position++
{
position988, tokenIndex988 := position, tokenIndex
if buffer[position] != rune('b') {
goto l989
}
position++
goto l988
l989:
position, tokenIndex = position988, tokenIndex988
if buffer[position] != rune('B') {
goto l987
}
position++
}
l988:
{
position992, tokenIndex992 := position, tokenIndex
if buffer[position] != rune('0') {
goto l993
}
position++
goto l992
l993:
position, tokenIndex = position992, tokenIndex992
if buffer[position] != rune('1') {
goto l987
}
position++
}
l992:
l990:
{
position991, tokenIndex991 := position, tokenIndex
{
position994, tokenIndex994 := position, tokenIndex
if buffer[position] != rune('0') {
goto l995
}
position++
goto l994
l995:
position, tokenIndex = position994, tokenIndex994
if buffer[position] != rune('1') {
goto l991
}
position++
}
l994:
goto l990
l991:
position, tokenIndex = position991, tokenIndex991
}
goto l986
l987:
position, tokenIndex = position986, tokenIndex986
if buffer[position] != rune('0') {
goto l996
}
position++
{
position997, tokenIndex997 := position, tokenIndex
if buffer[position] != rune('x') {
goto l998
}
position++
goto l997
l998:
position, tokenIndex = position997, tokenIndex997
if buffer[position] != rune('X') {
goto l996
}
position++
}
l997:
{
position1001, tokenIndex1001 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l1002
}
position++
goto l1001
l1002:
position, tokenIndex = position1001, tokenIndex1001
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l1003
}
position++
goto l1001
l1003:
position, tokenIndex = position1001, tokenIndex1001
{
position1004, tokenIndex1004 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('f') {
goto l1005
}
position++
goto l1004
l1005:
position, tokenIndex = position1004, tokenIndex1004
if c := buffer[position]; c < rune('A') || c > rune('F') {
goto l996
}
position++
}
l1004:
}
l1001:
l999:
{
position1000, tokenIndex1000 := position, tokenIndex
{
position1006, tokenIndex1006 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l1007
}
position++
goto l1006
l1007:
position, tokenIndex = position1006, tokenIndex1006
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l1008
}
position++
goto l1006
l1008:
position, tokenIndex = position1006, tokenIndex1006
{
position1009, tokenIndex1009 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('f') {
goto l1010
}
position++
goto l1009
l1010:
position, tokenIndex = position1009, tokenIndex1009
if c := buffer[position]; c < rune('A') || c > rune('F') {
goto l1000
}
position++
}
l1009:
}
l1006:
goto l999
l1000:
position, tokenIndex = position1000, tokenIndex1000
}
goto l986
l996:
position, tokenIndex = position986, tokenIndex986
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l980
}
position++
l1011:
{
position1012, tokenIndex1012 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l1012
}
position++
goto l1011
l1012:
position, tokenIndex = position1012, tokenIndex1012
}
}
l986:
add(ruleOffset, position981)
}
return true
l980:
position, tokenIndex = position980, tokenIndex980
return false
},
/* 61 Section <- <([a-z] / [A-Z] / '@')+> */
func() bool {
position1013, tokenIndex1013 := position, tokenIndex
{
position1014 := position
{
position1017, tokenIndex1017 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l1018
}
position++
goto l1017
l1018:
position, tokenIndex = position1017, tokenIndex1017
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l1019
}
position++
goto l1017
l1019:
position, tokenIndex = position1017, tokenIndex1017
if buffer[position] != rune('@') {
goto l1013
}
position++
}
l1017:
l1015:
{
position1016, tokenIndex1016 := position, tokenIndex
{
position1020, tokenIndex1020 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l1021
}
position++
goto l1020
l1021:
position, tokenIndex = position1020, tokenIndex1020
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l1022
}
position++
goto l1020
l1022:
position, tokenIndex = position1020, tokenIndex1020
if buffer[position] != rune('@') {
goto l1016
}
position++
}
l1020:
goto l1015
l1016:
position, tokenIndex = position1016, tokenIndex1016
}
add(ruleSection, position1014)
}
return true
l1013:
position, tokenIndex = position1013, tokenIndex1013
return false
},
/* 62 SegmentRegister <- <('%' ([c-g] / 's') ('s' ':'))> */
func() bool {
position1023, tokenIndex1023 := position, tokenIndex
{
position1024 := position
if buffer[position] != rune('%') {
goto l1023
}
position++
{
position1025, tokenIndex1025 := position, tokenIndex
if c := buffer[position]; c < rune('c') || c > rune('g') {
goto l1026
}
position++
goto l1025
l1026:
position, tokenIndex = position1025, tokenIndex1025
if buffer[position] != rune('s') {
goto l1023
}
position++
}
l1025:
if buffer[position] != rune('s') {
goto l1023
}
position++
if buffer[position] != rune(':') {
goto l1023
}
position++
add(ruleSegmentRegister, position1024)
}
return true
l1023:
position, tokenIndex = position1023, tokenIndex1023
return false
},
}
p.rules = _rules
return nil
}