blob: 0f8ac01fc9d7fa92ad7a8077df0f2e0714de9ab3 [file] [log] [blame]
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
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",
"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 [62]func() bool
parse func(rule ...int) error
reset func()
Pretty bool
tokens32
}
func (p *Asm) Parse(rule ...int) error {
return p.parse(rule...)
}
func (p *Asm) Reset() {
p.reset()
}
type textPosition struct {
line, symbol int
}
type textPositionMap map[int]textPosition
func translatePositions(buffer []rune, positions []int) textPositionMap {
length, translations, j, line, symbol := len(positions), make(textPositionMap, len(positions)), 0, 1, 0
sort.Ints(positions)
search:
for i, c := range buffer {
if c == '\n' {
line, symbol = line+1, 0
} else {
symbol++
}
if i == positions[j] {
translations[positions[j]] = textPosition{line, symbol}
for j++; j < length; j++ {
if i != positions[j] {
continue search
}
}
break search
}
}
return translations
}
type parseError struct {
p *Asm
max token32
}
func (e *parseError) Error() string {
tokens, err := []token32{e.max}, "\n"
positions, p := make([]int, 2*len(tokens)), 0
for _, token := range tokens {
positions[p], p = int(token.begin), p+1
positions[p], p = int(token.end), p+1
}
translations := translatePositions(e.p.buffer, positions)
format := "parse error near %v (line %v symbol %v - line %v symbol %v):\n%v\n"
if e.p.Pretty {
format = "parse error near \x1B[34m%v\x1B[m (line %v symbol %v - line %v symbol %v):\n%v\n"
}
for _, token := range tokens {
begin, end := int(token.begin), int(token.end)
err += fmt.Sprintf(format,
rul3s[token.pegRule],
translations[begin].line, translations[begin].symbol,
translations[end].line, translations[end].symbol,
strconv.Quote(string(e.p.buffer[begin:end])))
}
return err
}
func (p *Asm) PrintSyntaxTree() {
if p.Pretty {
p.tokens32.PrettyPrintSyntaxTree(p.Buffer)
} else {
p.tokens32.PrintSyntaxTree(p.Buffer)
}
}
func (p *Asm) WriteSyntaxTree(w io.Writer) {
p.tokens32.WriteSyntaxTree(w, p.Buffer)
}
func (p *Asm) SprintSyntaxTree() string {
var bldr strings.Builder
p.WriteSyntaxTree(&bldr)
return bldr.String()
}
func Pretty(pretty bool) func(*Asm) error {
return func(p *Asm) error {
p.Pretty = pretty
return nil
}
}
func Size(size int) func(*Asm) error {
return func(p *Asm) error {
p.tokens32 = tokens32{tree: make([]token32, 0, size)}
return nil
}
}
func (p *Asm) Init(options ...func(*Asm) error) error {
var (
max token32
position, tokenIndex uint32
buffer []rune
)
for _, option := range options {
err := option(p)
if err != nil {
return err
}
}
p.reset = func() {
max = token32{}
position, tokenIndex = 0, 0
p.buffer = []rune(p.Buffer)
if len(p.buffer) == 0 || p.buffer[len(p.buffer)-1] != endSymbol {
p.buffer = append(p.buffer, endSymbol)
}
buffer = p.buffer
}
p.reset()
_rules := p.rules
tree := p.tokens32
p.parse = func(rule ...int) error {
r := 1
if len(rule) > 0 {
r = rule[0]
}
matches := p.rules[r]()
p.tokens32 = tree
if matches {
p.Trim(tokenIndex)
return nil
}
return &parseError{p, max}
}
add := func(rule pegRule, begin uint32) {
tree.Add(rule, begin, position, tokenIndex)
tokenIndex++
if begin != position && position > max.end {
max = token32{rule, begin, position}
}
}
matchDot := func() bool {
if buffer[position] != endSymbol {
position++
return true
}
return false
}
/*matchChar := func(c byte) bool {
if buffer[position] == c {
position++
return true
}
return false
}*/
/*matchRange := func(lower byte, upper byte) bool {
if c := buffer[position]; c >= lower && c <= upper {
position++
return true
}
return false
}*/
_rules = [...]func() bool{
nil,
/* 0 AsmFile <- <(Statement* !.)> */
func() bool {
position0, tokenIndex0 := position, tokenIndex
{
position1 := position
l2:
{
position3, tokenIndex3 := position, tokenIndex
if !_rules[ruleStatement]() {
goto l3
}
goto l2
l3:
position, tokenIndex = position3, tokenIndex3
}
{
position4, tokenIndex4 := position, tokenIndex
if !matchDot() {
goto l4
}
goto l0
l4:
position, tokenIndex = position4, tokenIndex4
}
add(ruleAsmFile, position1)
}
return true
l0:
position, tokenIndex = position0, tokenIndex0
return false
},
/* 1 Statement <- <(WS? (Label / ((GlobalDirective / LocationDirective / LabelContainingDirective / Instruction / Directive / Comment / ) WS? ((Comment? '\n') / ';'))))> */
func() bool {
position5, tokenIndex5 := position, tokenIndex
{
position6 := position
{
position7, tokenIndex7 := position, tokenIndex
if !_rules[ruleWS]() {
goto l7
}
goto l8
l7:
position, tokenIndex = position7, tokenIndex7
}
l8:
{
position9, tokenIndex9 := position, tokenIndex
if !_rules[ruleLabel]() {
goto l10
}
goto l9
l10:
position, tokenIndex = position9, tokenIndex9
{
position11, tokenIndex11 := position, tokenIndex
if !_rules[ruleGlobalDirective]() {
goto l12
}
goto l11
l12:
position, tokenIndex = position11, tokenIndex11
if !_rules[ruleLocationDirective]() {
goto l13
}
goto l11
l13:
position, tokenIndex = position11, tokenIndex11
if !_rules[ruleLabelContainingDirective]() {
goto l14
}
goto l11
l14:
position, tokenIndex = position11, tokenIndex11
if !_rules[ruleInstruction]() {
goto l15
}
goto l11
l15:
position, tokenIndex = position11, tokenIndex11
if !_rules[ruleDirective]() {
goto l16
}
goto l11
l16:
position, tokenIndex = position11, tokenIndex11
if !_rules[ruleComment]() {
goto l17
}
goto l11
l17:
position, tokenIndex = position11, tokenIndex11
}
l11:
{
position18, tokenIndex18 := position, tokenIndex
if !_rules[ruleWS]() {
goto l18
}
goto l19
l18:
position, tokenIndex = position18, tokenIndex18
}
l19:
{
position20, tokenIndex20 := position, tokenIndex
{
position22, tokenIndex22 := position, tokenIndex
if !_rules[ruleComment]() {
goto l22
}
goto l23
l22:
position, tokenIndex = position22, tokenIndex22
}
l23:
if buffer[position] != rune('\n') {
goto l21
}
position++
goto l20
l21:
position, tokenIndex = position20, tokenIndex20
if buffer[position] != rune(';') {
goto l5
}
position++
}
l20:
}
l9:
add(ruleStatement, position6)
}
return true
l5:
position, tokenIndex = position5, tokenIndex5
return false
},
/* 2 GlobalDirective <- <((('.' ('g' / 'G') ('l' / 'L') ('o' / 'O') ('b' / 'B') ('a' / 'A') ('l' / 'L')) / ('.' ('g' / 'G') ('l' / 'L') ('o' / 'O') ('b' / 'B') ('l' / 'L'))) WS SymbolName)> */
func() bool {
position24, tokenIndex24 := position, tokenIndex
{
position25 := position
{
position26, tokenIndex26 := position, tokenIndex
if buffer[position] != rune('.') {
goto l27
}
position++
{
position28, tokenIndex28 := position, tokenIndex
if buffer[position] != rune('g') {
goto l29
}
position++
goto l28
l29:
position, tokenIndex = position28, tokenIndex28
if buffer[position] != rune('G') {
goto l27
}
position++
}
l28:
{
position30, tokenIndex30 := position, tokenIndex
if buffer[position] != rune('l') {
goto l31
}
position++
goto l30
l31:
position, tokenIndex = position30, tokenIndex30
if buffer[position] != rune('L') {
goto l27
}
position++
}
l30:
{
position32, tokenIndex32 := position, tokenIndex
if buffer[position] != rune('o') {
goto l33
}
position++
goto l32
l33:
position, tokenIndex = position32, tokenIndex32
if buffer[position] != rune('O') {
goto l27
}
position++
}
l32:
{
position34, tokenIndex34 := position, tokenIndex
if buffer[position] != rune('b') {
goto l35
}
position++
goto l34
l35:
position, tokenIndex = position34, tokenIndex34
if buffer[position] != rune('B') {
goto l27
}
position++
}
l34:
{
position36, tokenIndex36 := position, tokenIndex
if buffer[position] != rune('a') {
goto l37
}
position++
goto l36
l37:
position, tokenIndex = position36, tokenIndex36
if buffer[position] != rune('A') {
goto l27
}
position++
}
l36:
{
position38, tokenIndex38 := position, tokenIndex
if buffer[position] != rune('l') {
goto l39
}
position++
goto l38
l39:
position, tokenIndex = position38, tokenIndex38
if buffer[position] != rune('L') {
goto l27
}
position++
}
l38:
goto l26
l27:
position, tokenIndex = position26, tokenIndex26
if buffer[position] != rune('.') {
goto l24
}
position++
{
position40, tokenIndex40 := position, tokenIndex
if buffer[position] != rune('g') {
goto l41
}
position++
goto l40
l41:
position, tokenIndex = position40, tokenIndex40
if buffer[position] != rune('G') {
goto l24
}
position++
}
l40:
{
position42, tokenIndex42 := position, tokenIndex
if buffer[position] != rune('l') {
goto l43
}
position++
goto l42
l43:
position, tokenIndex = position42, tokenIndex42
if buffer[position] != rune('L') {
goto l24
}
position++
}
l42:
{
position44, tokenIndex44 := position, tokenIndex
if buffer[position] != rune('o') {
goto l45
}
position++
goto l44
l45:
position, tokenIndex = position44, tokenIndex44
if buffer[position] != rune('O') {
goto l24
}
position++
}
l44:
{
position46, tokenIndex46 := position, tokenIndex
if buffer[position] != rune('b') {
goto l47
}
position++
goto l46
l47:
position, tokenIndex = position46, tokenIndex46
if buffer[position] != rune('B') {
goto l24
}
position++
}
l46:
{
position48, tokenIndex48 := position, tokenIndex
if buffer[position] != rune('l') {
goto l49
}
position++
goto l48
l49:
position, tokenIndex = position48, tokenIndex48
if buffer[position] != rune('L') {
goto l24
}
position++
}
l48:
}
l26:
if !_rules[ruleWS]() {
goto l24
}
if !_rules[ruleSymbolName]() {
goto l24
}
add(ruleGlobalDirective, position25)
}
return true
l24:
position, tokenIndex = position24, tokenIndex24
return false
},
/* 3 Directive <- <('.' DirectiveName (WS Args)?)> */
func() bool {
position50, tokenIndex50 := position, tokenIndex
{
position51 := position
if buffer[position] != rune('.') {
goto l50
}
position++
if !_rules[ruleDirectiveName]() {
goto l50
}
{
position52, tokenIndex52 := position, tokenIndex
if !_rules[ruleWS]() {
goto l52
}
if !_rules[ruleArgs]() {
goto l52
}
goto l53
l52:
position, tokenIndex = position52, tokenIndex52
}
l53:
add(ruleDirective, position51)
}
return true
l50:
position, tokenIndex = position50, tokenIndex50
return false
},
/* 4 DirectiveName <- <([a-z] / [A-Z] / ([0-9] / [0-9]) / '_')+> */
func() bool {
position54, tokenIndex54 := position, tokenIndex
{
position55 := position
{
position58, tokenIndex58 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l59
}
position++
goto l58
l59:
position, tokenIndex = position58, tokenIndex58
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l60
}
position++
goto l58
l60:
position, tokenIndex = position58, tokenIndex58
{
position62, tokenIndex62 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l63
}
position++
goto l62
l63:
position, tokenIndex = position62, tokenIndex62
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l61
}
position++
}
l62:
goto l58
l61:
position, tokenIndex = position58, tokenIndex58
if buffer[position] != rune('_') {
goto l54
}
position++
}
l58:
l56:
{
position57, tokenIndex57 := position, tokenIndex
{
position64, tokenIndex64 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l65
}
position++
goto l64
l65:
position, tokenIndex = position64, tokenIndex64
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l66
}
position++
goto l64
l66:
position, tokenIndex = position64, tokenIndex64
{
position68, tokenIndex68 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l69
}
position++
goto l68
l69:
position, tokenIndex = position68, tokenIndex68
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l67
}
position++
}
l68:
goto l64
l67:
position, tokenIndex = position64, tokenIndex64
if buffer[position] != rune('_') {
goto l57
}
position++
}
l64:
goto l56
l57:
position, tokenIndex = position57, tokenIndex57
}
add(ruleDirectiveName, position55)
}
return true
l54:
position, tokenIndex = position54, tokenIndex54
return false
},
/* 5 LocationDirective <- <(FileDirective / LocDirective)> */
func() bool {
position70, tokenIndex70 := position, tokenIndex
{
position71 := position
{
position72, tokenIndex72 := position, tokenIndex
if !_rules[ruleFileDirective]() {
goto l73
}
goto l72
l73:
position, tokenIndex = position72, tokenIndex72
if !_rules[ruleLocDirective]() {
goto l70
}
}
l72:
add(ruleLocationDirective, position71)
}
return true
l70:
position, tokenIndex = position70, tokenIndex70
return false
},
/* 6 FileDirective <- <('.' ('f' / 'F') ('i' / 'I') ('l' / 'L') ('e' / 'E') WS (!('#' / '\n') .)+)> */
func() bool {
position74, tokenIndex74 := position, tokenIndex
{
position75 := position
if buffer[position] != rune('.') {
goto l74
}
position++
{
position76, tokenIndex76 := position, tokenIndex
if buffer[position] != rune('f') {
goto l77
}
position++
goto l76
l77:
position, tokenIndex = position76, tokenIndex76
if buffer[position] != rune('F') {
goto l74
}
position++
}
l76:
{
position78, tokenIndex78 := position, tokenIndex
if buffer[position] != rune('i') {
goto l79
}
position++
goto l78
l79:
position, tokenIndex = position78, tokenIndex78
if buffer[position] != rune('I') {
goto l74
}
position++
}
l78:
{
position80, tokenIndex80 := position, tokenIndex
if buffer[position] != rune('l') {
goto l81
}
position++
goto l80
l81:
position, tokenIndex = position80, tokenIndex80
if buffer[position] != rune('L') {
goto l74
}
position++
}
l80:
{
position82, tokenIndex82 := position, tokenIndex
if buffer[position] != rune('e') {
goto l83
}
position++
goto l82
l83:
position, tokenIndex = position82, tokenIndex82
if buffer[position] != rune('E') {
goto l74
}
position++
}
l82:
if !_rules[ruleWS]() {
goto l74
}
{
position86, tokenIndex86 := position, tokenIndex
{
position87, tokenIndex87 := position, tokenIndex
if buffer[position] != rune('#') {
goto l88
}
position++
goto l87
l88:
position, tokenIndex = position87, tokenIndex87
if buffer[position] != rune('\n') {
goto l86
}
position++
}
l87:
goto l74
l86:
position, tokenIndex = position86, tokenIndex86
}
if !matchDot() {
goto l74
}
l84:
{
position85, tokenIndex85 := position, tokenIndex
{
position89, tokenIndex89 := position, tokenIndex
{
position90, tokenIndex90 := position, tokenIndex
if buffer[position] != rune('#') {
goto l91
}
position++
goto l90
l91:
position, tokenIndex = position90, tokenIndex90
if buffer[position] != rune('\n') {
goto l89
}
position++
}
l90:
goto l85
l89:
position, tokenIndex = position89, tokenIndex89
}
if !matchDot() {
goto l85
}
goto l84
l85:
position, tokenIndex = position85, tokenIndex85
}
add(ruleFileDirective, position75)
}
return true
l74:
position, tokenIndex = position74, tokenIndex74
return false
},
/* 7 LocDirective <- <('.' ('l' / 'L') ('o' / 'O') ('c' / 'C') WS (!('#' / '/' / '\n') .)+)> */
func() bool {
position92, tokenIndex92 := position, tokenIndex
{
position93 := position
if buffer[position] != rune('.') {
goto l92
}
position++
{
position94, tokenIndex94 := position, tokenIndex
if buffer[position] != rune('l') {
goto l95
}
position++
goto l94
l95:
position, tokenIndex = position94, tokenIndex94
if buffer[position] != rune('L') {
goto l92
}
position++
}
l94:
{
position96, tokenIndex96 := position, tokenIndex
if buffer[position] != rune('o') {
goto l97
}
position++
goto l96
l97:
position, tokenIndex = position96, tokenIndex96
if buffer[position] != rune('O') {
goto l92
}
position++
}
l96:
{
position98, tokenIndex98 := position, tokenIndex
if buffer[position] != rune('c') {
goto l99
}
position++
goto l98
l99:
position, tokenIndex = position98, tokenIndex98
if buffer[position] != rune('C') {
goto l92
}
position++
}
l98:
if !_rules[ruleWS]() {
goto l92
}
{
position102, tokenIndex102 := position, tokenIndex
{
position103, tokenIndex103 := position, tokenIndex
if buffer[position] != rune('#') {
goto l104
}
position++
goto l103
l104:
position, tokenIndex = position103, tokenIndex103
if buffer[position] != rune('/') {
goto l105
}
position++
goto l103
l105:
position, tokenIndex = position103, tokenIndex103
if buffer[position] != rune('\n') {
goto l102
}
position++
}
l103:
goto l92
l102:
position, tokenIndex = position102, tokenIndex102
}
if !matchDot() {
goto l92
}
l100:
{
position101, tokenIndex101 := position, tokenIndex
{
position106, tokenIndex106 := position, tokenIndex
{
position107, tokenIndex107 := position, tokenIndex
if buffer[position] != rune('#') {
goto l108
}
position++
goto l107
l108:
position, tokenIndex = position107, tokenIndex107
if buffer[position] != rune('/') {
goto l109
}
position++
goto l107
l109:
position, tokenIndex = position107, tokenIndex107
if buffer[position] != rune('\n') {
goto l106
}
position++
}
l107:
goto l101
l106:
position, tokenIndex = position106, tokenIndex106
}
if !matchDot() {
goto l101
}
goto l100
l101:
position, tokenIndex = position101, tokenIndex101
}
add(ruleLocDirective, position93)
}
return true
l92:
position, tokenIndex = position92, tokenIndex92
return false
},
/* 8 Args <- <(Arg (WS? ',' WS? Arg)*)> */
func() bool {
position110, tokenIndex110 := position, tokenIndex
{
position111 := position
if !_rules[ruleArg]() {
goto l110
}
l112:
{
position113, tokenIndex113 := position, tokenIndex
{
position114, tokenIndex114 := position, tokenIndex
if !_rules[ruleWS]() {
goto l114
}
goto l115
l114:
position, tokenIndex = position114, tokenIndex114
}
l115:
if buffer[position] != rune(',') {
goto l113
}
position++
{
position116, tokenIndex116 := position, tokenIndex
if !_rules[ruleWS]() {
goto l116
}
goto l117
l116:
position, tokenIndex = position116, tokenIndex116
}
l117:
if !_rules[ruleArg]() {
goto l113
}
goto l112
l113:
position, tokenIndex = position113, tokenIndex113
}
add(ruleArgs, position111)
}
return true
l110:
position, tokenIndex = position110, tokenIndex110
return false
},
/* 9 Arg <- <(QuotedArg / ([0-9] / [0-9] / ([a-z] / [A-Z]) / '%' / '+' / '-' / '*' / '_' / '@' / '.' / '$')*)> */
func() bool {
{
position119 := position
{
position120, tokenIndex120 := position, tokenIndex
if !_rules[ruleQuotedArg]() {
goto l121
}
goto l120
l121:
position, tokenIndex = position120, tokenIndex120
l122:
{
position123, tokenIndex123 := position, tokenIndex
{
position124, tokenIndex124 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l125
}
position++
goto l124
l125:
position, tokenIndex = position124, tokenIndex124
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l126
}
position++
goto l124
l126:
position, tokenIndex = position124, tokenIndex124
{
position128, tokenIndex128 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l129
}
position++
goto l128
l129:
position, tokenIndex = position128, tokenIndex128
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l127
}
position++
}
l128:
goto l124
l127:
position, tokenIndex = position124, tokenIndex124
if buffer[position] != rune('%') {
goto l130
}
position++
goto l124
l130:
position, tokenIndex = position124, tokenIndex124
if buffer[position] != rune('+') {
goto l131
}
position++
goto l124
l131:
position, tokenIndex = position124, tokenIndex124
if buffer[position] != rune('-') {
goto l132
}
position++
goto l124
l132:
position, tokenIndex = position124, tokenIndex124
if buffer[position] != rune('*') {
goto l133
}
position++
goto l124
l133:
position, tokenIndex = position124, tokenIndex124
if buffer[position] != rune('_') {
goto l134
}
position++
goto l124
l134:
position, tokenIndex = position124, tokenIndex124
if buffer[position] != rune('@') {
goto l135
}
position++
goto l124
l135:
position, tokenIndex = position124, tokenIndex124
if buffer[position] != rune('.') {
goto l136
}
position++
goto l124
l136:
position, tokenIndex = position124, tokenIndex124
if buffer[position] != rune('$') {
goto l123
}
position++
}
l124:
goto l122
l123:
position, tokenIndex = position123, tokenIndex123
}
}
l120:
add(ruleArg, position119)
}
return true
},
/* 10 QuotedArg <- <('"' QuotedText '"')> */
func() bool {
position137, tokenIndex137 := position, tokenIndex
{
position138 := position
if buffer[position] != rune('"') {
goto l137
}
position++
if !_rules[ruleQuotedText]() {
goto l137
}
if buffer[position] != rune('"') {
goto l137
}
position++
add(ruleQuotedArg, position138)
}
return true
l137:
position, tokenIndex = position137, tokenIndex137
return false
},
/* 11 QuotedText <- <(EscapedChar / (!'"' .))*> */
func() bool {
{
position140 := position
l141:
{
position142, tokenIndex142 := position, tokenIndex
{
position143, tokenIndex143 := position, tokenIndex
if !_rules[ruleEscapedChar]() {
goto l144
}
goto l143
l144:
position, tokenIndex = position143, tokenIndex143
{
position145, tokenIndex145 := position, tokenIndex
if buffer[position] != rune('"') {
goto l145
}
position++
goto l142
l145:
position, tokenIndex = position145, tokenIndex145
}
if !matchDot() {
goto l142
}
}
l143:
goto l141
l142:
position, tokenIndex = position142, tokenIndex142
}
add(ruleQuotedText, position140)
}
return true
},
/* 12 LabelContainingDirective <- <(LabelContainingDirectiveName WS SymbolArgs)> */
func() bool {
position146, tokenIndex146 := position, tokenIndex
{
position147 := position
if !_rules[ruleLabelContainingDirectiveName]() {
goto l146
}
if !_rules[ruleWS]() {
goto l146
}
if !_rules[ruleSymbolArgs]() {
goto l146
}
add(ruleLabelContainingDirective, position147)
}
return true
l146:
position, tokenIndex = position146, tokenIndex146
return false
},
/* 13 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')) / ('.' ('s' / 'S') ('e' / 'E') ('t' / 'T')) / ('.' ('b' / 'B') ('y' / 'Y') ('t' / 'T') ('e' / 'E')) / ('.' '8' ('b' / 'B') ('y' / 'Y') ('t' / 'T') ('e' / 'E')) / ('.' '4' ('b' / 'B') ('y' / 'Y') ('t' / 'T') ('e' / 'E')) / ('.' ('q' / 'Q') ('u' / 'U') ('a' / 'A') ('d' / 'D')) / ('.' ('t' / 'T') ('c' / 'C')) / ('.' ('l' / 'L') ('o' / 'O') ('c' / 'C') ('a' / 'A') ('l' / 'L') ('e' / 'E') ('n' / 'N') ('t' / 'T') ('r' / 'R') ('y' / 'Y')) / ('.' ('s' / 'S') ('i' / 'I') ('z' / 'Z') ('e' / 'E')) / ('.' ('t' / 'T') ('y' / 'Y') ('p' / 'P') ('e' / 'E')) / ('.' ('u' / 'U') ('l' / 'L') ('e' / 'E') ('b' / 'B') '1' '2' '8') / ('.' ('s' / 'S') ('l' / 'L') ('e' / 'E') ('b' / 'B') '1' '2' '8'))> */
func() bool {
position148, tokenIndex148 := position, tokenIndex
{
position149 := position
{
position150, tokenIndex150 := position, tokenIndex
if buffer[position] != rune('.') {
goto l151
}
position++
{
position152, tokenIndex152 := position, tokenIndex
if buffer[position] != rune('x') {
goto l153
}
position++
goto l152
l153:
position, tokenIndex = position152, tokenIndex152
if buffer[position] != rune('X') {
goto l151
}
position++
}
l152:
{
position154, tokenIndex154 := position, tokenIndex
if buffer[position] != rune('w') {
goto l155
}
position++
goto l154
l155:
position, tokenIndex = position154, tokenIndex154
if buffer[position] != rune('W') {
goto l151
}
position++
}
l154:
{
position156, tokenIndex156 := position, tokenIndex
if buffer[position] != rune('o') {
goto l157
}
position++
goto l156
l157:
position, tokenIndex = position156, tokenIndex156
if buffer[position] != rune('O') {
goto l151
}
position++
}
l156:
{
position158, tokenIndex158 := position, tokenIndex
if buffer[position] != rune('r') {
goto l159
}
position++
goto l158
l159:
position, tokenIndex = position158, tokenIndex158
if buffer[position] != rune('R') {
goto l151
}
position++
}
l158:
{
position160, tokenIndex160 := position, tokenIndex
if buffer[position] != rune('d') {
goto l161
}
position++
goto l160
l161:
position, tokenIndex = position160, tokenIndex160
if buffer[position] != rune('D') {
goto l151
}
position++
}
l160:
goto l150
l151:
position, tokenIndex = position150, tokenIndex150
if buffer[position] != rune('.') {
goto l162
}
position++
{
position163, tokenIndex163 := position, tokenIndex
if buffer[position] != rune('w') {
goto l164
}
position++
goto l163
l164:
position, tokenIndex = position163, tokenIndex163
if buffer[position] != rune('W') {
goto l162
}
position++
}
l163:
{
position165, tokenIndex165 := position, tokenIndex
if buffer[position] != rune('o') {
goto l166
}
position++
goto l165
l166:
position, tokenIndex = position165, tokenIndex165
if buffer[position] != rune('O') {
goto l162
}
position++
}
l165:
{
position167, tokenIndex167 := position, tokenIndex
if buffer[position] != rune('r') {
goto l168
}
position++
goto l167
l168:
position, tokenIndex = position167, tokenIndex167
if buffer[position] != rune('R') {
goto l162
}
position++
}
l167:
{
position169, tokenIndex169 := position, tokenIndex
if buffer[position] != rune('d') {
goto l170
}
position++
goto l169
l170:
position, tokenIndex = position169, tokenIndex169
if buffer[position] != rune('D') {
goto l162
}
position++
}
l169:
goto l150
l162:
position, tokenIndex = position150, tokenIndex150
if buffer[position] != rune('.') {
goto l171
}
position++
{
position172, tokenIndex172 := position, tokenIndex
if buffer[position] != rune('h') {
goto l173
}
position++
goto l172
l173:
position, tokenIndex = position172, tokenIndex172
if buffer[position] != rune('H') {
goto l171
}
position++
}
l172:
{
position174, tokenIndex174 := position, tokenIndex
if buffer[position] != rune('w') {
goto l175
}
position++
goto l174
l175:
position, tokenIndex = position174, tokenIndex174
if buffer[position] != rune('W') {
goto l171
}
position++
}
l174:
{
position176, tokenIndex176 := position, tokenIndex
if buffer[position] != rune('o') {
goto l177
}
position++
goto l176
l177:
position, tokenIndex = position176, tokenIndex176
if buffer[position] != rune('O') {
goto l171
}
position++
}
l176:
{
position178, tokenIndex178 := position, tokenIndex
if buffer[position] != rune('r') {
goto l179
}
position++
goto l178
l179:
position, tokenIndex = position178, tokenIndex178
if buffer[position] != rune('R') {
goto l171
}
position++
}
l178:
{
position180, tokenIndex180 := position, tokenIndex
if buffer[position] != rune('d') {
goto l181
}
position++
goto l180
l181:
position, tokenIndex = position180, tokenIndex180
if buffer[position] != rune('D') {
goto l171
}
position++
}
l180:
goto l150
l171:
position, tokenIndex = position150, tokenIndex150
if buffer[position] != rune('.') {
goto l182
}
position++
{
position183, tokenIndex183 := position, tokenIndex
if buffer[position] != rune('l') {
goto l184
}
position++
goto l183
l184:
position, tokenIndex = position183, tokenIndex183
if buffer[position] != rune('L') {
goto l182
}
position++
}
l183:
{
position185, tokenIndex185 := position, tokenIndex
if buffer[position] != rune('o') {
goto l186
}
position++
goto l185
l186:
position, tokenIndex = position185, tokenIndex185
if buffer[position] != rune('O') {
goto l182
}
position++
}
l185:
{
position187, tokenIndex187 := position, tokenIndex
if buffer[position] != rune('n') {
goto l188
}
position++
goto l187
l188:
position, tokenIndex = position187, tokenIndex187
if buffer[position] != rune('N') {
goto l182
}
position++
}
l187:
{
position189, tokenIndex189 := position, tokenIndex
if buffer[position] != rune('g') {
goto l190
}
position++
goto l189
l190:
position, tokenIndex = position189, tokenIndex189
if buffer[position] != rune('G') {
goto l182
}
position++
}
l189:
goto l150
l182:
position, tokenIndex = position150, tokenIndex150
if buffer[position] != rune('.') {
goto l191
}
position++
{
position192, tokenIndex192 := position, tokenIndex
if buffer[position] != rune('s') {
goto l193
}
position++
goto l192
l193:
position, tokenIndex = position192, tokenIndex192
if buffer[position] != rune('S') {
goto l191
}
position++
}
l192:
{
position194, tokenIndex194 := position, tokenIndex
if buffer[position] != rune('e') {
goto l195
}
position++
goto l194
l195:
position, tokenIndex = position194, tokenIndex194
if buffer[position] != rune('E') {
goto l191
}
position++
}
l194:
{
position196, tokenIndex196 := position, tokenIndex
if buffer[position] != rune('t') {
goto l197
}
position++
goto l196
l197:
position, tokenIndex = position196, tokenIndex196
if buffer[position] != rune('T') {
goto l191
}
position++
}
l196:
goto l150
l191:
position, tokenIndex = position150, tokenIndex150
if buffer[position] != rune('.') {
goto l198
}
position++
{
position199, tokenIndex199 := position, tokenIndex
if buffer[position] != rune('b') {
goto l200
}
position++
goto l199
l200:
position, tokenIndex = position199, tokenIndex199
if buffer[position] != rune('B') {
goto l198
}
position++
}
l199:
{
position201, tokenIndex201 := position, tokenIndex
if buffer[position] != rune('y') {
goto l202
}
position++
goto l201
l202:
position, tokenIndex = position201, tokenIndex201
if buffer[position] != rune('Y') {
goto l198
}
position++
}
l201:
{
position203, tokenIndex203 := position, tokenIndex
if buffer[position] != rune('t') {
goto l204
}
position++
goto l203
l204:
position, tokenIndex = position203, tokenIndex203
if buffer[position] != rune('T') {
goto l198
}
position++
}
l203:
{
position205, tokenIndex205 := position, tokenIndex
if buffer[position] != rune('e') {
goto l206
}
position++
goto l205
l206:
position, tokenIndex = position205, tokenIndex205
if buffer[position] != rune('E') {
goto l198
}
position++
}
l205:
goto l150
l198:
position, tokenIndex = position150, tokenIndex150
if buffer[position] != rune('.') {
goto l207
}
position++
if buffer[position] != rune('8') {
goto l207
}
position++
{
position208, tokenIndex208 := position, tokenIndex
if buffer[position] != rune('b') {
goto l209
}
position++
goto l208
l209:
position, tokenIndex = position208, tokenIndex208
if buffer[position] != rune('B') {
goto l207
}
position++
}
l208:
{
position210, tokenIndex210 := position, tokenIndex
if buffer[position] != rune('y') {
goto l211
}
position++
goto l210
l211:
position, tokenIndex = position210, tokenIndex210
if buffer[position] != rune('Y') {
goto l207
}
position++
}
l210:
{
position212, tokenIndex212 := position, tokenIndex
if buffer[position] != rune('t') {
goto l213
}
position++
goto l212
l213:
position, tokenIndex = position212, tokenIndex212
if buffer[position] != rune('T') {
goto l207
}
position++
}
l212:
{
position214, tokenIndex214 := position, tokenIndex
if buffer[position] != rune('e') {
goto l215
}
position++
goto l214
l215:
position, tokenIndex = position214, tokenIndex214
if buffer[position] != rune('E') {
goto l207
}
position++
}
l214:
goto l150
l207:
position, tokenIndex = position150, tokenIndex150
if buffer[position] != rune('.') {
goto l216
}
position++
if buffer[position] != rune('4') {
goto l216
}
position++
{
position217, tokenIndex217 := position, tokenIndex
if buffer[position] != rune('b') {
goto l218
}
position++
goto l217
l218:
position, tokenIndex = position217, tokenIndex217
if buffer[position] != rune('B') {
goto l216
}
position++
}
l217:
{
position219, tokenIndex219 := position, tokenIndex
if buffer[position] != rune('y') {
goto l220
}
position++
goto l219
l220:
position, tokenIndex = position219, tokenIndex219
if buffer[position] != rune('Y') {
goto l216
}
position++
}
l219:
{
position221, tokenIndex221 := position, tokenIndex
if buffer[position] != rune('t') {
goto l222
}
position++
goto l221
l222:
position, tokenIndex = position221, tokenIndex221
if buffer[position] != rune('T') {
goto l216
}
position++
}
l221:
{
position223, tokenIndex223 := position, tokenIndex
if buffer[position] != rune('e') {
goto l224
}
position++
goto l223
l224:
position, tokenIndex = position223, tokenIndex223
if buffer[position] != rune('E') {
goto l216
}
position++
}
l223:
goto l150
l216:
position, tokenIndex = position150, tokenIndex150
if buffer[position] != rune('.') {
goto l225
}
position++
{
position226, tokenIndex226 := position, tokenIndex
if buffer[position] != rune('q') {
goto l227
}
position++
goto l226
l227:
position, tokenIndex = position226, tokenIndex226
if buffer[position] != rune('Q') {
goto l225
}
position++
}
l226:
{
position228, tokenIndex228 := position, tokenIndex
if buffer[position] != rune('u') {
goto l229
}
position++
goto l228
l229:
position, tokenIndex = position228, tokenIndex228
if buffer[position] != rune('U') {
goto l225
}
position++
}
l228:
{
position230, tokenIndex230 := position, tokenIndex
if buffer[position] != rune('a') {
goto l231
}
position++
goto l230
l231:
position, tokenIndex = position230, tokenIndex230
if buffer[position] != rune('A') {
goto l225
}
position++
}
l230:
{
position232, tokenIndex232 := position, tokenIndex
if buffer[position] != rune('d') {
goto l233
}
position++
goto l232
l233:
position, tokenIndex = position232, tokenIndex232
if buffer[position] != rune('D') {
goto l225
}
position++
}
l232:
goto l150
l225:
position, tokenIndex = position150, tokenIndex150
if buffer[position] != rune('.') {
goto l234
}
position++
{
position235, tokenIndex235 := position, tokenIndex
if buffer[position] != rune('t') {
goto l236
}
position++
goto l235
l236:
position, tokenIndex = position235, tokenIndex235
if buffer[position] != rune('T') {
goto l234
}
position++
}
l235:
{
position237, tokenIndex237 := position, tokenIndex
if buffer[position] != rune('c') {
goto l238
}
position++
goto l237
l238:
position, tokenIndex = position237, tokenIndex237
if buffer[position] != rune('C') {
goto l234
}
position++
}
l237:
goto l150
l234:
position, tokenIndex = position150, tokenIndex150
if buffer[position] != rune('.') {
goto l239
}
position++
{
position240, tokenIndex240 := position, tokenIndex
if buffer[position] != rune('l') {
goto l241
}
position++
goto l240
l241:
position, tokenIndex = position240, tokenIndex240
if buffer[position] != rune('L') {
goto l239
}
position++
}
l240:
{
position242, tokenIndex242 := position, tokenIndex
if buffer[position] != rune('o') {
goto l243
}
position++
goto l242
l243:
position, tokenIndex = position242, tokenIndex242
if buffer[position] != rune('O') {
goto l239
}
position++
}
l242:
{
position244, tokenIndex244 := position, tokenIndex
if buffer[position] != rune('c') {
goto l245
}
position++
goto l244
l245:
position, tokenIndex = position244, tokenIndex244
if buffer[position] != rune('C') {
goto l239
}
position++
}
l244:
{
position246, tokenIndex246 := position, tokenIndex
if buffer[position] != rune('a') {
goto l247
}
position++
goto l246
l247:
position, tokenIndex = position246, tokenIndex246
if buffer[position] != rune('A') {
goto l239
}
position++
}
l246:
{
position248, tokenIndex248 := position, tokenIndex
if buffer[position] != rune('l') {
goto l249
}
position++
goto l248
l249:
position, tokenIndex = position248, tokenIndex248
if buffer[position] != rune('L') {
goto l239
}
position++
}
l248:
{
position250, tokenIndex250 := position, tokenIndex
if buffer[position] != rune('e') {
goto l251
}
position++
goto l250
l251:
position, tokenIndex = position250, tokenIndex250
if buffer[position] != rune('E') {
goto l239
}
position++
}
l250:
{
position252, tokenIndex252 := position, tokenIndex
if buffer[position] != rune('n') {
goto l253
}
position++
goto l252
l253:
position, tokenIndex = position252, tokenIndex252
if buffer[position] != rune('N') {
goto l239
}
position++
}
l252:
{
position254, tokenIndex254 := position, tokenIndex
if buffer[position] != rune('t') {
goto l255
}
position++
goto l254
l255:
position, tokenIndex = position254, tokenIndex254
if buffer[position] != rune('T') {
goto l239
}
position++
}
l254:
{
position256, tokenIndex256 := position, tokenIndex
if buffer[position] != rune('r') {
goto l257
}
position++
goto l256
l257:
position, tokenIndex = position256, tokenIndex256
if buffer[position] != rune('R') {
goto l239
}
position++
}
l256:
{
position258, tokenIndex258 := position, tokenIndex
if buffer[position] != rune('y') {
goto l259
}
position++
goto l258
l259:
position, tokenIndex = position258, tokenIndex258
if buffer[position] != rune('Y') {
goto l239
}
position++
}
l258:
goto l150
l239:
position, tokenIndex = position150, tokenIndex150
if buffer[position] != rune('.') {
goto l260
}
position++
{
position261, tokenIndex261 := position, tokenIndex
if buffer[position] != rune('s') {
goto l262
}
position++
goto l261
l262:
position, tokenIndex = position261, tokenIndex261
if buffer[position] != rune('S') {
goto l260
}
position++
}
l261:
{
position263, tokenIndex263 := position, tokenIndex
if buffer[position] != rune('i') {
goto l264
}
position++
goto l263
l264:
position, tokenIndex = position263, tokenIndex263
if buffer[position] != rune('I') {
goto l260
}
position++
}
l263:
{
position265, tokenIndex265 := position, tokenIndex
if buffer[position] != rune('z') {
goto l266
}
position++
goto l265
l266:
position, tokenIndex = position265, tokenIndex265
if buffer[position] != rune('Z') {
goto l260
}
position++
}
l265:
{
position267, tokenIndex267 := position, tokenIndex
if buffer[position] != rune('e') {
goto l268
}
position++
goto l267
l268:
position, tokenIndex = position267, tokenIndex267
if buffer[position] != rune('E') {
goto l260
}
position++
}
l267:
goto l150
l260:
position, tokenIndex = position150, tokenIndex150
if buffer[position] != rune('.') {
goto l269
}
position++
{
position270, tokenIndex270 := position, tokenIndex
if buffer[position] != rune('t') {
goto l271
}
position++
goto l270
l271:
position, tokenIndex = position270, tokenIndex270
if buffer[position] != rune('T') {
goto l269
}
position++
}
l270:
{
position272, tokenIndex272 := position, tokenIndex
if buffer[position] != rune('y') {
goto l273
}
position++
goto l272
l273:
position, tokenIndex = position272, tokenIndex272
if buffer[position] != rune('Y') {
goto l269
}
position++
}
l272:
{
position274, tokenIndex274 := position, tokenIndex
if buffer[position] != rune('p') {
goto l275
}
position++
goto l274
l275:
position, tokenIndex = position274, tokenIndex274
if buffer[position] != rune('P') {
goto l269
}
position++
}
l274:
{
position276, tokenIndex276 := position, tokenIndex
if buffer[position] != rune('e') {
goto l277
}
position++
goto l276
l277:
position, tokenIndex = position276, tokenIndex276
if buffer[position] != rune('E') {
goto l269
}
position++
}
l276:
goto l150
l269:
position, tokenIndex = position150, tokenIndex150
if buffer[position] != rune('.') {
goto l278
}
position++
{
position279, tokenIndex279 := position, tokenIndex
if buffer[position] != rune('u') {
goto l280
}
position++
goto l279
l280:
position, tokenIndex = position279, tokenIndex279
if buffer[position] != rune('U') {
goto l278
}
position++
}
l279:
{
position281, tokenIndex281 := position, tokenIndex
if buffer[position] != rune('l') {
goto l282
}
position++
goto l281
l282:
position, tokenIndex = position281, tokenIndex281
if buffer[position] != rune('L') {
goto l278
}
position++
}
l281:
{
position283, tokenIndex283 := position, tokenIndex
if buffer[position] != rune('e') {
goto l284
}
position++
goto l283
l284:
position, tokenIndex = position283, tokenIndex283
if buffer[position] != rune('E') {
goto l278
}
position++
}
l283:
{
position285, tokenIndex285 := position, tokenIndex
if buffer[position] != rune('b') {
goto l286
}
position++
goto l285
l286:
position, tokenIndex = position285, tokenIndex285
if buffer[position] != rune('B') {
goto l278
}
position++
}
l285:
if buffer[position] != rune('1') {
goto l278
}
position++
if buffer[position] != rune('2') {
goto l278
}
position++
if buffer[position] != rune('8') {
goto l278
}
position++
goto l150
l278:
position, tokenIndex = position150, tokenIndex150
if buffer[position] != rune('.') {
goto l148
}
position++
{
position287, tokenIndex287 := position, tokenIndex
if buffer[position] != rune('s') {
goto l288
}
position++
goto l287
l288:
position, tokenIndex = position287, tokenIndex287
if buffer[position] != rune('S') {
goto l148
}
position++
}
l287:
{
position289, tokenIndex289 := position, tokenIndex
if buffer[position] != rune('l') {
goto l290
}
position++
goto l289
l290:
position, tokenIndex = position289, tokenIndex289
if buffer[position] != rune('L') {
goto l148
}
position++
}
l289:
{
position291, tokenIndex291 := position, tokenIndex
if buffer[position] != rune('e') {
goto l292
}
position++
goto l291
l292:
position, tokenIndex = position291, tokenIndex291
if buffer[position] != rune('E') {
goto l148
}
position++
}
l291:
{
position293, tokenIndex293 := position, tokenIndex
if buffer[position] != rune('b') {
goto l294
}
position++
goto l293
l294:
position, tokenIndex = position293, tokenIndex293
if buffer[position] != rune('B') {
goto l148
}
position++
}
l293:
if buffer[position] != rune('1') {
goto l148
}
position++
if buffer[position] != rune('2') {
goto l148
}
position++
if buffer[position] != rune('8') {
goto l148
}
position++
}
l150:
add(ruleLabelContainingDirectiveName, position149)
}
return true
l148:
position, tokenIndex = position148, tokenIndex148
return false
},
/* 14 SymbolArgs <- <(SymbolArg (WS? ',' WS? SymbolArg)*)> */
func() bool {
position295, tokenIndex295 := position, tokenIndex
{
position296 := position
if !_rules[ruleSymbolArg]() {
goto l295
}
l297:
{
position298, tokenIndex298 := position, tokenIndex
{
position299, tokenIndex299 := position, tokenIndex
if !_rules[ruleWS]() {
goto l299
}
goto l300
l299:
position, tokenIndex = position299, tokenIndex299
}
l300:
if buffer[position] != rune(',') {
goto l298
}
position++
{
position301, tokenIndex301 := position, tokenIndex
if !_rules[ruleWS]() {
goto l301
}
goto l302
l301:
position, tokenIndex = position301, tokenIndex301
}
l302:
if !_rules[ruleSymbolArg]() {
goto l298
}
goto l297
l298:
position, tokenIndex = position298, tokenIndex298
}
add(ruleSymbolArgs, position296)
}
return true
l295:
position, tokenIndex = position295, tokenIndex295
return false
},
/* 15 SymbolArg <- <SymbolExpr> */
func() bool {
position303, tokenIndex303 := position, tokenIndex
{
position304 := position
if !_rules[ruleSymbolExpr]() {
goto l303
}
add(ruleSymbolArg, position304)
}
return true
l303:
position, tokenIndex = position303, tokenIndex303
return false
},
/* 16 SymbolExpr <- <(SymbolAtom (WS? SymbolOperator WS? SymbolExpr)?)> */
func() bool {
position305, tokenIndex305 := position, tokenIndex
{
position306 := position
if !_rules[ruleSymbolAtom]() {
goto l305
}
{
position307, tokenIndex307 := position, tokenIndex
{
position309, tokenIndex309 := position, tokenIndex
if !_rules[ruleWS]() {
goto l309
}
goto l310
l309:
position, tokenIndex = position309, tokenIndex309
}
l310:
if !_rules[ruleSymbolOperator]() {
goto l307
}
{
position311, tokenIndex311 := position, tokenIndex
if !_rules[ruleWS]() {
goto l311
}
goto l312
l311:
position, tokenIndex = position311, tokenIndex311
}
l312:
if !_rules[ruleSymbolExpr]() {
goto l307
}
goto l308
l307:
position, tokenIndex = position307, tokenIndex307
}
l308:
add(ruleSymbolExpr, position306)
}
return true
l305:
position, tokenIndex = position305, tokenIndex305
return false
},
/* 17 SymbolAtom <- <(LocalLabelRef / Offset / SymbolType / (LocalSymbol TCMarker?) / (SymbolName Offset) / (SymbolName TCMarker?) / Dot / (OpenParen WS? SymbolExpr WS? CloseParen))> */
func() bool {
position313, tokenIndex313 := position, tokenIndex
{
position314 := position
{
position315, tokenIndex315 := position, tokenIndex
if !_rules[ruleLocalLabelRef]() {
goto l316
}
goto l315
l316:
position, tokenIndex = position315, tokenIndex315
if !_rules[ruleOffset]() {
goto l317
}
goto l315
l317:
position, tokenIndex = position315, tokenIndex315
if !_rules[ruleSymbolType]() {
goto l318
}
goto l315
l318:
position, tokenIndex = position315, tokenIndex315
if !_rules[ruleLocalSymbol]() {
goto l319
}
{
position320, tokenIndex320 := position, tokenIndex
if !_rules[ruleTCMarker]() {
goto l320
}
goto l321
l320:
position, tokenIndex = position320, tokenIndex320
}
l321:
goto l315
l319:
position, tokenIndex = position315, tokenIndex315
if !_rules[ruleSymbolName]() {
goto l322
}
if !_rules[ruleOffset]() {
goto l322
}
goto l315
l322:
position, tokenIndex = position315, tokenIndex315
if !_rules[ruleSymbolName]() {
goto l323
}
{
position324, tokenIndex324 := position, tokenIndex
if !_rules[ruleTCMarker]() {
goto l324
}
goto l325
l324:
position, tokenIndex = position324, tokenIndex324
}
l325:
goto l315
l323:
position, tokenIndex = position315, tokenIndex315
if !_rules[ruleDot]() {
goto l326
}
goto l315
l326:
position, tokenIndex = position315, tokenIndex315
if !_rules[ruleOpenParen]() {
goto l313
}
{
position327, tokenIndex327 := position, tokenIndex
if !_rules[ruleWS]() {
goto l327
}
goto l328
l327:
position, tokenIndex = position327, tokenIndex327
}
l328:
if !_rules[ruleSymbolExpr]() {
goto l313
}
{
position329, tokenIndex329 := position, tokenIndex
if !_rules[ruleWS]() {
goto l329
}
goto l330
l329:
position, tokenIndex = position329, tokenIndex329
}
l330:
if !_rules[ruleCloseParen]() {
goto l313
}
}
l315:
add(ruleSymbolAtom, position314)
}
return true
l313:
position, tokenIndex = position313, tokenIndex313
return false
},
/* 18 SymbolOperator <- <('+' / '-' / '|' / ('<' '<') / ('>' '>'))> */
func() bool {
position331, tokenIndex331 := position, tokenIndex
{
position332 := position
{
position333, tokenIndex333 := position, tokenIndex
if buffer[position] != rune('+') {
goto l334
}
position++
goto l333
l334:
position, tokenIndex = position333, tokenIndex333
if buffer[position] != rune('-') {
goto l335
}
position++
goto l333
l335:
position, tokenIndex = position333, tokenIndex333
if buffer[position] != rune('|') {
goto l336
}
position++
goto l333
l336:
position, tokenIndex = position333, tokenIndex333
if buffer[position] != rune('<') {
goto l337
}
position++
if buffer[position] != rune('<') {
goto l337
}
position++
goto l333
l337:
position, tokenIndex = position333, tokenIndex333
if buffer[position] != rune('>') {
goto l331
}
position++
if buffer[position] != rune('>') {
goto l331
}
position++
}
l333:
add(ruleSymbolOperator, position332)
}
return true
l331:
position, tokenIndex = position331, tokenIndex331
return false
},
/* 19 OpenParen <- <'('> */
func() bool {
position338, tokenIndex338 := position, tokenIndex
{
position339 := position
if buffer[position] != rune('(') {
goto l338
}
position++
add(ruleOpenParen, position339)
}
return true
l338:
position, tokenIndex = position338, tokenIndex338
return false
},
/* 20 CloseParen <- <')'> */
func() bool {
position340, tokenIndex340 := position, tokenIndex
{
position341 := position
if buffer[position] != rune(')') {
goto l340
}
position++
add(ruleCloseParen, position341)
}
return true
l340:
position, tokenIndex = position340, tokenIndex340
return false
},
/* 21 SymbolType <- <(('@' / '%') (('f' 'u' 'n' 'c' 't' 'i' 'o' 'n') / ('o' 'b' 'j' 'e' 'c' 't')))> */
func() bool {
position342, tokenIndex342 := position, tokenIndex
{
position343 := position
{
position344, tokenIndex344 := position, tokenIndex
if buffer[position] != rune('@') {
goto l345
}
position++
goto l344
l345:
position, tokenIndex = position344, tokenIndex344
if buffer[position] != rune('%') {
goto l342
}
position++
}
l344:
{
position346, tokenIndex346 := position, tokenIndex
if buffer[position] != rune('f') {
goto l347
}
position++
if buffer[position] != rune('u') {
goto l347
}
position++
if buffer[position] != rune('n') {
goto l347
}
position++
if buffer[position] != rune('c') {
goto l347
}
position++
if buffer[position] != rune('t') {
goto l347
}
position++
if buffer[position] != rune('i') {
goto l347
}
position++
if buffer[position] != rune('o') {
goto l347
}
position++
if buffer[position] != rune('n') {
goto l347
}
position++
goto l346
l347:
position, tokenIndex = position346, tokenIndex346
if buffer[position] != rune('o') {
goto l342
}
position++
if buffer[position] != rune('b') {
goto l342
}
position++
if buffer[position] != rune('j') {
goto l342
}
position++
if buffer[position] != rune('e') {
goto l342
}
position++
if buffer[position] != rune('c') {
goto l342
}
position++
if buffer[position] != rune('t') {
goto l342
}
position++
}
l346:
add(ruleSymbolType, position343)
}
return true
l342:
position, tokenIndex = position342, tokenIndex342
return false
},
/* 22 Dot <- <'.'> */
func() bool {
position348, tokenIndex348 := position, tokenIndex
{
position349 := position
if buffer[position] != rune('.') {
goto l348
}
position++
add(ruleDot, position349)
}
return true
l348:
position, tokenIndex = position348, tokenIndex348
return false
},
/* 23 TCMarker <- <('[' 'T' 'C' ']')> */
func() bool {
position350, tokenIndex350 := position, tokenIndex
{
position351 := position
if buffer[position] != rune('[') {
goto l350
}
position++
if buffer[position] != rune('T') {
goto l350
}
position++
if buffer[position] != rune('C') {
goto l350
}
position++
if buffer[position] != rune(']') {
goto l350
}
position++
add(ruleTCMarker, position351)
}
return true
l350:
position, tokenIndex = position350, tokenIndex350
return false
},
/* 24 EscapedChar <- <('\\' .)> */
func() bool {
position352, tokenIndex352 := position, tokenIndex
{
position353 := position
if buffer[position] != rune('\\') {
goto l352
}
position++
if !matchDot() {
goto l352
}
add(ruleEscapedChar, position353)
}
return true
l352:
position, tokenIndex = position352, tokenIndex352
return false
},
/* 25 WS <- <(' ' / '\t')+> */
func() bool {
position354, tokenIndex354 := position, tokenIndex
{
position355 := position
{
position358, tokenIndex358 := position, tokenIndex
if buffer[position] != rune(' ') {
goto l359
}
position++
goto l358
l359:
position, tokenIndex = position358, tokenIndex358
if buffer[position] != rune('\t') {
goto l354
}
position++
}
l358:
l356:
{
position357, tokenIndex357 := position, tokenIndex
{
position360, tokenIndex360 := position, tokenIndex
if buffer[position] != rune(' ') {
goto l361
}
position++
goto l360
l361:
position, tokenIndex = position360, tokenIndex360
if buffer[position] != rune('\t') {
goto l357
}
position++
}
l360:
goto l356
l357:
position, tokenIndex = position357, tokenIndex357
}
add(ruleWS, position355)
}
return true
l354:
position, tokenIndex = position354, tokenIndex354
return false
},
/* 26 Comment <- <((('/' '/') / '#') (!'\n' .)*)> */
func() bool {
position362, tokenIndex362 := position, tokenIndex
{
position363 := position
{
position364, tokenIndex364 := position, tokenIndex
if buffer[position] != rune('/') {
goto l365
}
position++
if buffer[position] != rune('/') {
goto l365
}
position++
goto l364
l365:
position, tokenIndex = position364, tokenIndex364
if buffer[position] != rune('#') {
goto l362
}
position++
}
l364:
l366:
{
position367, tokenIndex367 := position, tokenIndex
{
position368, tokenIndex368 := position, tokenIndex
if buffer[position] != rune('\n') {
goto l368
}
position++
goto l367
l368:
position, tokenIndex = position368, tokenIndex368
}
if !matchDot() {
goto l367
}
goto l366
l367:
position, tokenIndex = position367, tokenIndex367
}
add(ruleComment, position363)
}
return true
l362:
position, tokenIndex = position362, tokenIndex362
return false
},
/* 27 Label <- <((LocalSymbol / LocalLabel / SymbolName) ':')> */
func() bool {
position369, tokenIndex369 := position, tokenIndex
{
position370 := position
{
position371, tokenIndex371 := position, tokenIndex
if !_rules[ruleLocalSymbol]() {
goto l372
}
goto l371
l372:
position, tokenIndex = position371, tokenIndex371
if !_rules[ruleLocalLabel]() {
goto l373
}
goto l371
l373:
position, tokenIndex = position371, tokenIndex371
if !_rules[ruleSymbolName]() {
goto l369
}
}
l371:
if buffer[position] != rune(':') {
goto l369
}
position++
add(ruleLabel, position370)
}
return true
l369:
position, tokenIndex = position369, tokenIndex369
return false
},
/* 28 SymbolName <- <(([a-z] / [A-Z] / '.' / '_') ([a-z] / [A-Z] / '.' / ([0-9] / [0-9]) / '$' / '_')*)> */
func() bool {
position374, tokenIndex374 := position, tokenIndex
{
position375 := position
{
position376, tokenIndex376 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l377
}
position++
goto l376
l377:
position, tokenIndex = position376, tokenIndex376
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l378
}
position++
goto l376
l378:
position, tokenIndex = position376, tokenIndex376
if buffer[position] != rune('.') {
goto l379
}
position++
goto l376
l379:
position, tokenIndex = position376, tokenIndex376
if buffer[position] != rune('_') {
goto l374
}
position++
}
l376:
l380:
{
position381, tokenIndex381 := position, tokenIndex
{
position382, tokenIndex382 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l383
}
position++
goto l382
l383:
position, tokenIndex = position382, tokenIndex382
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l384
}
position++
goto l382
l384:
position, tokenIndex = position382, tokenIndex382
if buffer[position] != rune('.') {
goto l385
}
position++
goto l382
l385:
position, tokenIndex = position382, tokenIndex382
{
position387, tokenIndex387 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l388
}
position++
goto l387
l388:
position, tokenIndex = position387, tokenIndex387
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l386
}
position++
}
l387:
goto l382
l386:
position, tokenIndex = position382, tokenIndex382
if buffer[position] != rune('$') {
goto l389
}
position++
goto l382
l389:
position, tokenIndex = position382, tokenIndex382
if buffer[position] != rune('_') {
goto l381
}
position++
}
l382:
goto l380
l381:
position, tokenIndex = position381, tokenIndex381
}
add(ruleSymbolName, position375)
}
return true
l374:
position, tokenIndex = position374, tokenIndex374
return false
},
/* 29 LocalSymbol <- <('.' 'L' ([a-z] / [A-Z] / ([a-z] / [A-Z]) / '.' / ([0-9] / [0-9]) / '$' / '_')+)> */
func() bool {
position390, tokenIndex390 := position, tokenIndex
{
position391 := position
if buffer[position] != rune('.') {
goto l390
}
position++
if buffer[position] != rune('L') {
goto l390
}
position++
{
position394, tokenIndex394 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l395
}
position++
goto l394
l395:
position, tokenIndex = position394, tokenIndex394
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l396
}
position++
goto l394
l396:
position, tokenIndex = position394, tokenIndex394
{
position398, tokenIndex398 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l399
}
position++
goto l398
l399:
position, tokenIndex = position398, tokenIndex398
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l397
}
position++
}
l398:
goto l394
l397:
position, tokenIndex = position394, tokenIndex394
if buffer[position] != rune('.') {
goto l400
}
position++
goto l394
l400:
position, tokenIndex = position394, tokenIndex394
{
position402, tokenIndex402 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l403
}
position++
goto l402
l403:
position, tokenIndex = position402, tokenIndex402
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l401
}
position++
}
l402:
goto l394
l401:
position, tokenIndex = position394, tokenIndex394
if buffer[position] != rune('$') {
goto l404
}
position++
goto l394
l404:
position, tokenIndex = position394, tokenIndex394
if buffer[position] != rune('_') {
goto l390
}
position++
}
l394:
l392:
{
position393, tokenIndex393 := position, tokenIndex
{
position405, tokenIndex405 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l406
}
position++
goto l405
l406:
position, tokenIndex = position405, tokenIndex405
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l407
}
position++
goto l405
l407:
position, tokenIndex = position405, tokenIndex405
{
position409, tokenIndex409 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l410
}
position++
goto l409
l410:
position, tokenIndex = position409, tokenIndex409
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l408
}
position++
}
l409:
goto l405
l408:
position, tokenIndex = position405, tokenIndex405
if buffer[position] != rune('.') {
goto l411
}
position++
goto l405
l411:
position, tokenIndex = position405, tokenIndex405
{
position413, tokenIndex413 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l414
}
position++
goto l413
l414:
position, tokenIndex = position413, tokenIndex413
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l412
}
position++
}
l413:
goto l405
l412:
position, tokenIndex = position405, tokenIndex405
if buffer[position] != rune('$') {
goto l415
}
position++
goto l405
l415:
position, tokenIndex = position405, tokenIndex405
if buffer[position] != rune('_') {
goto l393
}
position++
}
l405:
goto l392
l393:
position, tokenIndex = position393, tokenIndex393
}
add(ruleLocalSymbol, position391)
}
return true
l390:
position, tokenIndex = position390, tokenIndex390
return false
},
/* 30 LocalLabel <- <([0-9] ([0-9] / '$')*)> */
func() bool {
position416, tokenIndex416 := position, tokenIndex
{
position417 := position
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l416
}
position++
l418:
{
position419, tokenIndex419 := position, tokenIndex
{
position420, tokenIndex420 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l421
}
position++
goto l420
l421:
position, tokenIndex = position420, tokenIndex420
if buffer[position] != rune('$') {
goto l419
}
position++
}
l420:
goto l418
l419:
position, tokenIndex = position419, tokenIndex419
}
add(ruleLocalLabel, position417)
}
return true
l416:
position, tokenIndex = position416, tokenIndex416
return false
},
/* 31 LocalLabelRef <- <([0-9] ([0-9] / '$')* ('b' / 'f'))> */
func() bool {
position422, tokenIndex422 := position, tokenIndex
{
position423 := position
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l422
}
position++
l424:
{
position425, tokenIndex425 := position, tokenIndex
{
position426, tokenIndex426 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l427
}
position++
goto l426
l427:
position, tokenIndex = position426, tokenIndex426
if buffer[position] != rune('$') {
goto l425
}
position++
}
l426:
goto l424
l425:
position, tokenIndex = position425, tokenIndex425
}
{
position428, tokenIndex428 := position, tokenIndex
if buffer[position] != rune('b') {
goto l429
}
position++
goto l428
l429:
position, tokenIndex = position428, tokenIndex428
if buffer[position] != rune('f') {
goto l422
}
position++
}
l428:
add(ruleLocalLabelRef, position423)
}
return true
l422:
position, tokenIndex = position422, tokenIndex422
return false
},
/* 32 InstructionPrefix <- <(('n' / 'N') ('o' / 'O') ('t' / 'T') ('r' / 'R') ('a' / 'A') ('c' / 'C') ('k' / 'K'))> */
func() bool {
position430, tokenIndex430 := position, tokenIndex
{
position431 := position
{
position432, tokenIndex432 := position, tokenIndex
if buffer[position] != rune('n') {
goto l433
}
position++
goto l432
l433:
position, tokenIndex = position432, tokenIndex432
if buffer[position] != rune('N') {
goto l430
}
position++
}
l432:
{
position434, tokenIndex434 := position, tokenIndex
if buffer[position] != rune('o') {
goto l435
}
position++
goto l434
l435:
position, tokenIndex = position434, tokenIndex434
if buffer[position] != rune('O') {
goto l430
}
position++
}
l434:
{
position436, tokenIndex436 := position, tokenIndex
if buffer[position] != rune('t') {
goto l437
}
position++
goto l436
l437:
position, tokenIndex = position436, tokenIndex436
if buffer[position] != rune('T') {
goto l430
}
position++
}
l436:
{
position438, tokenIndex438 := position, tokenIndex
if buffer[position] != rune('r') {
goto l439
}
position++
goto l438
l439:
position, tokenIndex = position438, tokenIndex438
if buffer[position] != rune('R') {
goto l430
}
position++
}
l438:
{
position440, tokenIndex440 := position, tokenIndex
if buffer[position] != rune('a') {
goto l441
}
position++
goto l440
l441:
position, tokenIndex = position440, tokenIndex440
if buffer[position] != rune('A') {
goto l430
}
position++
}
l440:
{
position442, tokenIndex442 := position, tokenIndex
if buffer[position] != rune('c') {
goto l443
}
position++
goto l442
l443:
position, tokenIndex = position442, tokenIndex442
if buffer[position] != rune('C') {
goto l430
}
position++
}
l442:
{
position444, tokenIndex444 := position, tokenIndex
if buffer[position] != rune('k') {
goto l445
}
position++
goto l444
l445:
position, tokenIndex = position444, tokenIndex444
if buffer[position] != rune('K') {
goto l430
}
position++
}
l444:
add(ruleInstructionPrefix, position431)
}
return true
l430:
position, tokenIndex = position430, tokenIndex430
return false
},
/* 33 Instruction <- <((InstructionPrefix WS)? InstructionName (WS InstructionArg (WS? ',' WS? InstructionArg)*)?)> */
func() bool {
position446, tokenIndex446 := position, tokenIndex
{
position447 := position
{
position448, tokenIndex448 := position, tokenIndex
if !_rules[ruleInstructionPrefix]() {
goto l448
}
if !_rules[ruleWS]() {
goto l448
}
goto l449
l448:
position, tokenIndex = position448, tokenIndex448
}
l449:
if !_rules[ruleInstructionName]() {
goto l446
}
{
position450, tokenIndex450 := position, tokenIndex
if !_rules[ruleWS]() {
goto l450
}
if !_rules[ruleInstructionArg]() {
goto l450
}
l452:
{
position453, tokenIndex453 := position, tokenIndex
{
position454, tokenIndex454 := position, tokenIndex
if !_rules[ruleWS]() {
goto l454
}
goto l455
l454:
position, tokenIndex = position454, tokenIndex454
}
l455:
if buffer[position] != rune(',') {
goto l453
}
position++
{
position456, tokenIndex456 := position, tokenIndex
if !_rules[ruleWS]() {
goto l456
}
goto l457
l456:
position, tokenIndex = position456, tokenIndex456
}
l457:
if !_rules[ruleInstructionArg]() {
goto l453
}
goto l452
l453:
position, tokenIndex = position453, tokenIndex453
}
goto l451
l450:
position, tokenIndex = position450, tokenIndex450
}
l451:
add(ruleInstruction, position447)
}
return true
l446:
position, tokenIndex = position446, tokenIndex446
return false
},
/* 34 InstructionName <- <(([a-z] / [A-Z]) ([a-z] / [A-Z] / '.' / ([0-9] / [0-9]))* ('.' / '+' / '-')?)> */
func() bool {
position458, tokenIndex458 := position, tokenIndex
{
position459 := position
{
position460, tokenIndex460 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l461
}
position++
goto l460
l461:
position, tokenIndex = position460, tokenIndex460
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l458
}
position++
}
l460:
l462:
{
position463, tokenIndex463 := position, tokenIndex
{
position464, tokenIndex464 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l465
}
position++
goto l464
l465:
position, tokenIndex = position464, tokenIndex464
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l466
}
position++
goto l464
l466:
position, tokenIndex = position464, tokenIndex464
if buffer[position] != rune('.') {
goto l467
}
position++
goto l464
l467:
position, tokenIndex = position464, tokenIndex464
{
position468, tokenIndex468 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l469
}
position++
goto l468
l469:
position, tokenIndex = position468, tokenIndex468
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l463
}
position++
}
l468:
}
l464:
goto l462
l463:
position, tokenIndex = position463, tokenIndex463
}
{
position470, tokenIndex470 := position, tokenIndex
{
position472, tokenIndex472 := position, tokenIndex
if buffer[position] != rune('.') {
goto l473
}
position++
goto l472
l473:
position, tokenIndex = position472, tokenIndex472
if buffer[position] != rune('+') {
goto l474
}
position++
goto l472
l474:
position, tokenIndex = position472, tokenIndex472
if buffer[position] != rune('-') {
goto l470
}
position++
}
l472:
goto l471
l470:
position, tokenIndex = position470, tokenIndex470
}
l471:
add(ruleInstructionName, position459)
}
return true
l458:
position, tokenIndex = position458, tokenIndex458
return false
},
/* 35 InstructionArg <- <(IndirectionIndicator? (ARMConstantTweak / RegisterOrConstant / LocalLabelRef / TOCRefHigh / TOCRefLow / GOTLocation / GOTAddress / GOTSymbolOffset / MemoryRef) AVX512Token*)> */
func() bool {
position475, tokenIndex475 := position, tokenIndex
{
position476 := position
{
position477, tokenIndex477 := position, tokenIndex
if !_rules[ruleIndirectionIndicator]() {
goto l477
}
goto l478
l477:
position, tokenIndex = position477, tokenIndex477
}
l478:
{
position479, tokenIndex479 := position, tokenIndex
if !_rules[ruleARMConstantTweak]() {
goto l480
}
goto l479
l480:
position, tokenIndex = position479, tokenIndex479
if !_rules[ruleRegisterOrConstant]() {
goto l481
}
goto l479
l481:
position, tokenIndex = position479, tokenIndex479
if !_rules[ruleLocalLabelRef]() {
goto l482
}
goto l479
l482:
position, tokenIndex = position479, tokenIndex479
if !_rules[ruleTOCRefHigh]() {
goto l483
}
goto l479
l483:
position, tokenIndex = position479, tokenIndex479
if !_rules[ruleTOCRefLow]() {
goto l484
}
goto l479
l484:
position, tokenIndex = position479, tokenIndex479
if !_rules[ruleGOTLocation]() {
goto l485
}
goto l479
l485:
position, tokenIndex = position479, tokenIndex479
if !_rules[ruleGOTAddress]() {
goto l486
}
goto l479
l486:
position, tokenIndex = position479, tokenIndex479
if !_rules[ruleGOTSymbolOffset]() {
goto l487
}
goto l479
l487:
position, tokenIndex = position479, tokenIndex479
if !_rules[ruleMemoryRef]() {
goto l475
}
}
l479:
l488:
{
position489, tokenIndex489 := position, tokenIndex
if !_rules[ruleAVX512Token]() {
goto l489
}
goto l488
l489:
position, tokenIndex = position489, tokenIndex489
}
add(ruleInstructionArg, position476)
}
return true
l475:
position, tokenIndex = position475, tokenIndex475
return false
},
/* 36 GOTLocation <- <('$' '_' 'G' 'L' 'O' 'B' 'A' 'L' '_' 'O' 'F' 'F' 'S' 'E' 'T' '_' 'T' 'A' 'B' 'L' 'E' '_' '-' LocalSymbol)> */
func() bool {
position490, tokenIndex490 := position, tokenIndex
{
position491 := position
if buffer[position] != rune('$') {
goto l490
}
position++
if buffer[position] != rune('_') {
goto l490
}
position++
if buffer[position] != rune('G') {
goto l490
}
position++
if buffer[position] != rune('L') {
goto l490
}
position++
if buffer[position] != rune('O') {
goto l490
}
position++
if buffer[position] != rune('B') {
goto l490
}
position++
if buffer[position] != rune('A') {
goto l490
}
position++
if buffer[position] != rune('L') {
goto l490
}
position++
if buffer[position] != rune('_') {
goto l490
}
position++
if buffer[position] != rune('O') {
goto l490
}
position++
if buffer[position] != rune('F') {
goto l490
}
position++
if buffer[position] != rune('F') {
goto l490
}
position++
if buffer[position] != rune('S') {
goto l490
}
position++
if buffer[position] != rune('E') {
goto l490
}
position++
if buffer[position] != rune('T') {
goto l490
}
position++
if buffer[position] != rune('_') {
goto l490
}
position++
if buffer[position] != rune('T') {
goto l490
}
position++
if buffer[position] != rune('A') {
goto l490
}
position++
if buffer[position] != rune('B') {
goto l490
}
position++
if buffer[position] != rune('L') {
goto l490
}
position++
if buffer[position] != rune('E') {
goto l490
}
position++
if buffer[position] != rune('_') {
goto l490
}
position++
if buffer[position] != rune('-') {
goto l490
}
position++
if !_rules[ruleLocalSymbol]() {
goto l490
}
add(ruleGOTLocation, position491)
}
return true
l490:
position, tokenIndex = position490, tokenIndex490
return false
},
/* 37 GOTAddress <- <('_' 'G' 'L' 'O' 'B' 'A' 'L' '_' 'O' 'F' 'F' 'S' 'E' 'T' '_' 'T' 'A' 'B' 'L' 'E' '_' '(' '%' 'r' 'i' 'p' ')')> */
func() bool {
position492, tokenIndex492 := position, tokenIndex
{
position493 := position
if buffer[position] != rune('_') {
goto l492
}
position++
if buffer[position] != rune('G') {
goto l492
}
position++
if buffer[position] != rune('L') {
goto l492
}
position++
if buffer[position] != rune('O') {
goto l492
}
position++
if buffer[position] != rune('B') {
goto l492
}
position++
if buffer[position] != rune('A') {
goto l492
}
position++
if buffer[position] != rune('L') {
goto l492
}
position++
if buffer[position] != rune('_') {
goto l492
}
position++
if buffer[position] != rune('O') {
goto l492
}
position++
if buffer[position] != rune('F') {
goto l492
}
position++
if buffer[position] != rune('F') {
goto l492
}
position++
if buffer[position] != rune('S') {
goto l492
}
position++
if buffer[position] != rune('E') {
goto l492
}
position++
if buffer[position] != rune('T') {
goto l492
}
position++
if buffer[position] != rune('_') {
goto l492
}
position++
if buffer[position] != rune('T') {
goto l492
}
position++
if buffer[position] != rune('A') {
goto l492
}
position++
if buffer[position] != rune('B') {
goto l492
}
position++
if buffer[position] != rune('L') {
goto l492
}
position++
if buffer[position] != rune('E') {
goto l492
}
position++
if buffer[position] != rune('_') {
goto l492
}
position++
if buffer[position] != rune('(') {
goto l492
}
position++
if buffer[position] != rune('%') {
goto l492
}
position++
if buffer[position] != rune('r') {
goto l492
}
position++
if buffer[position] != rune('i') {
goto l492
}
position++
if buffer[position] != rune('p') {
goto l492
}
position++
if buffer[position] != rune(')') {
goto l492
}
position++
add(ruleGOTAddress, position493)
}
return true
l492:
position, tokenIndex = position492, tokenIndex492
return false
},
/* 38 GOTSymbolOffset <- <(('$' SymbolName ('@' 'G' 'O' 'T') ('O' 'F' 'F')?) / (':' ('g' / 'G') ('o' / 'O') ('t' / 'T') ':' SymbolName))> */
func() bool {
position494, tokenIndex494 := position, tokenIndex
{
position495 := position
{
position496, tokenIndex496 := position, tokenIndex
if buffer[position] != rune('$') {
goto l497
}
position++
if !_rules[ruleSymbolName]() {
goto l497
}
if buffer[position] != rune('@') {
goto l497
}
position++
if buffer[position] != rune('G') {
goto l497
}
position++
if buffer[position] != rune('O') {
goto l497
}
position++
if buffer[position] != rune('T') {
goto l497
}
position++
{
position498, tokenIndex498 := position, tokenIndex
if buffer[position] != rune('O') {
goto l498
}
position++
if buffer[position] != rune('F') {
goto l498
}
position++
if buffer[position] != rune('F') {
goto l498
}
position++
goto l499
l498:
position, tokenIndex = position498, tokenIndex498
}
l499:
goto l496
l497:
position, tokenIndex = position496, tokenIndex496
if buffer[position] != rune(':') {
goto l494
}
position++
{
position500, tokenIndex500 := position, tokenIndex
if buffer[position] != rune('g') {
goto l501
}
position++
goto l500
l501:
position, tokenIndex = position500, tokenIndex500
if buffer[position] != rune('G') {
goto l494
}
position++
}
l500:
{
position502, tokenIndex502 := position, tokenIndex
if buffer[position] != rune('o') {
goto l503
}
position++
goto l502
l503:
position, tokenIndex = position502, tokenIndex502
if buffer[position] != rune('O') {
goto l494
}
position++
}
l502:
{
position504, tokenIndex504 := position, tokenIndex
if buffer[position] != rune('t') {
goto l505
}
position++
goto l504
l505:
position, tokenIndex = position504, tokenIndex504
if buffer[position] != rune('T') {
goto l494
}
position++
}
l504:
if buffer[position] != rune(':') {
goto l494
}
position++
if !_rules[ruleSymbolName]() {
goto l494
}
}
l496:
add(ruleGOTSymbolOffset, position495)
}
return true
l494:
position, tokenIndex = position494, tokenIndex494
return false
},
/* 39 AVX512Token <- <(WS? '{' '%'? ([0-9] / [a-z])* '}')> */
func() bool {
position506, tokenIndex506 := position, tokenIndex
{
position507 := position
{
position508, tokenIndex508 := position, tokenIndex
if !_rules[ruleWS]() {
goto l508
}
goto l509
l508:
position, tokenIndex = position508, tokenIndex508
}
l509:
if buffer[position] != rune('{') {
goto l506
}
position++
{
position510, tokenIndex510 := position, tokenIndex
if buffer[position] != rune('%') {
goto l510
}
position++
goto l511
l510:
position, tokenIndex = position510, tokenIndex510
}
l511:
l512:
{
position513, tokenIndex513 := position, tokenIndex
{
position514, tokenIndex514 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l515
}
position++
goto l514
l515:
position, tokenIndex = position514, tokenIndex514
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l513
}
position++
}
l514:
goto l512
l513:
position, tokenIndex = position513, tokenIndex513
}
if buffer[position] != rune('}') {
goto l506
}
position++
add(ruleAVX512Token, position507)
}
return true
l506:
position, tokenIndex = position506, tokenIndex506
return false
},
/* 40 TOCRefHigh <- <('.' 'T' 'O' 'C' '.' '-' (('0' 'b') / ('.' 'L' ([a-z] / [A-Z] / '_' / [0-9])+)) ('@' ('h' / 'H') ('a' / 'A')))> */
func() bool {
position516, tokenIndex516 := position, tokenIndex
{
position517 := position
if buffer[position] != rune('.') {
goto l516
}
position++
if buffer[position] != rune('T') {
goto l516
}
position++
if buffer[position] != rune('O') {
goto l516
}
position++
if buffer[position] != rune('C') {
goto l516
}
position++
if buffer[position] != rune('.') {
goto l516
}
position++
if buffer[position] != rune('-') {
goto l516
}
position++
{
position518, tokenIndex518 := position, tokenIndex
if buffer[position] != rune('0') {
goto l519
}
position++
if buffer[position] != rune('b') {
goto l519
}
position++
goto l518
l519:
position, tokenIndex = position518, tokenIndex518
if buffer[position] != rune('.') {
goto l516
}
position++
if buffer[position] != rune('L') {
goto l516
}
position++
{
position522, tokenIndex522 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l523
}
position++
goto l522
l523:
position, tokenIndex = position522, tokenIndex522
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l524
}
position++
goto l522
l524:
position, tokenIndex = position522, tokenIndex522
if buffer[position] != rune('_') {
goto l525
}
position++
goto l522
l525:
position, tokenIndex = position522, tokenIndex522
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l516
}
position++
}
l522:
l520:
{
position521, tokenIndex521 := position, tokenIndex
{
position526, tokenIndex526 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l527
}
position++
goto l526
l527:
position, tokenIndex = position526, tokenIndex526
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l528
}
position++
goto l526
l528:
position, tokenIndex = position526, tokenIndex526
if buffer[position] != rune('_') {
goto l529
}
position++
goto l526
l529:
position, tokenIndex = position526, tokenIndex526
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l521
}
position++
}
l526:
goto l520
l521:
position, tokenIndex = position521, tokenIndex521
}
}
l518:
if buffer[position] != rune('@') {
goto l516
}
position++
{
position530, tokenIndex530 := position, tokenIndex
if buffer[position] != rune('h') {
goto l531
}
position++
goto l530
l531:
position, tokenIndex = position530, tokenIndex530
if buffer[position] != rune('H') {
goto l516
}
position++
}
l530:
{
position532, tokenIndex532 := position, tokenIndex
if buffer[position] != rune('a') {
goto l533
}
position++
goto l532
l533:
position, tokenIndex = position532, tokenIndex532
if buffer[position] != rune('A') {
goto l516
}
position++
}
l532:
add(ruleTOCRefHigh, position517)
}
return true
l516:
position, tokenIndex = position516, tokenIndex516
return false
},
/* 41 TOCRefLow <- <('.' 'T' 'O' 'C' '.' '-' (('0' 'b') / ('.' 'L' ([a-z] / [A-Z] / '_' / [0-9])+)) ('@' ('l' / 'L')))> */
func() bool {
position534, tokenIndex534 := position, tokenIndex
{
position535 := position
if buffer[position] != rune('.') {
goto l534
}
position++
if buffer[position] != rune('T') {
goto l534
}
position++
if buffer[position] != rune('O') {
goto l534
}
position++
if buffer[position] != rune('C') {
goto l534
}
position++
if buffer[position] != rune('.') {
goto l534
}
position++
if buffer[position] != rune('-') {
goto l534
}
position++
{
position536, tokenIndex536 := position, tokenIndex
if buffer[position] != rune('0') {
goto l537
}
position++
if buffer[position] != rune('b') {
goto l537
}
position++
goto l536
l537:
position, tokenIndex = position536, tokenIndex536
if buffer[position] != rune('.') {
goto l534
}
position++
if buffer[position] != rune('L') {
goto l534
}
position++
{
position540, tokenIndex540 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l541
}
position++
goto l540
l541:
position, tokenIndex = position540, tokenIndex540
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l542
}
position++
goto l540
l542:
position, tokenIndex = position540, tokenIndex540
if buffer[position] != rune('_') {
goto l543
}
position++
goto l540
l543:
position, tokenIndex = position540, tokenIndex540
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l534
}
position++
}
l540:
l538:
{
position539, tokenIndex539 := position, tokenIndex
{
position544, tokenIndex544 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l545
}
position++
goto l544
l545:
position, tokenIndex = position544, tokenIndex544
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l546
}
position++
goto l544
l546:
position, tokenIndex = position544, tokenIndex544
if buffer[position] != rune('_') {
goto l547
}
position++
goto l544
l547:
position, tokenIndex = position544, tokenIndex544
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l539
}
position++
}
l544:
goto l538
l539:
position, tokenIndex = position539, tokenIndex539
}
}
l536:
if buffer[position] != rune('@') {
goto l534
}
position++
{
position548, tokenIndex548 := position, tokenIndex
if buffer[position] != rune('l') {
goto l549
}
position++
goto l548
l549:
position, tokenIndex = position548, tokenIndex548
if buffer[position] != rune('L') {
goto l534
}
position++
}
l548:
add(ruleTOCRefLow, position535)
}
return true
l534:
position, tokenIndex = position534, tokenIndex534
return false
},
/* 42 IndirectionIndicator <- <'*'> */
func() bool {
position550, tokenIndex550 := position, tokenIndex
{
position551 := position
if buffer[position] != rune('*') {
goto l550
}
position++
add(ruleIndirectionIndicator, position551)
}
return true
l550:
position, tokenIndex = position550, tokenIndex550
return false
},
/* 43 Float <- <([0-9]+ '.' [0-9]*)> */
func() bool {
position552, tokenIndex552 := position, tokenIndex
{
position553 := position
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l552
}
position++
l554:
{
position555, tokenIndex555 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l555
}
position++
goto l554
l555:
position, tokenIndex = position555, tokenIndex555
}
if buffer[position] != rune('.') {
goto l552
}
position++
l556:
{
position557, tokenIndex557 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l557
}
position++
goto l556
l557:
position, tokenIndex = position557, tokenIndex557
}
add(ruleFloat, position553)
}
return true
l552:
position, tokenIndex = position552, tokenIndex552
return false
},
/* 44 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 {
position558, tokenIndex558 := position, tokenIndex
{
position559 := position
{
position560, tokenIndex560 := position, tokenIndex
if buffer[position] != rune('%') {
goto l561
}
position++
{
position562, tokenIndex562 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l563
}
position++
goto l562
l563:
position, tokenIndex = position562, tokenIndex562
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l561
}
position++
}
l562:
l564:
{
position565, tokenIndex565 := position, tokenIndex
{
position566, tokenIndex566 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l567
}
position++
goto l566
l567:
position, tokenIndex = position566, tokenIndex566
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l568
}
position++
goto l566
l568:
position, tokenIndex = position566, tokenIndex566
{
position569, tokenIndex569 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l570
}
position++
goto l569
l570:
position, tokenIndex = position569, tokenIndex569
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l565
}
position++
}
l569:
}
l566:
goto l564
l565:
position, tokenIndex = position565, tokenIndex565
}
goto l560
l561:
position, tokenIndex = position560, tokenIndex560
{
position572, tokenIndex572 := position, tokenIndex
if buffer[position] != rune('$') {
goto l572
}
position++
goto l573
l572:
position, tokenIndex = position572, tokenIndex572
}
l573:
{
position574, tokenIndex574 := position, tokenIndex
if !_rules[ruleOffset]() {
goto l575
}
if !_rules[ruleOffset]() {
goto l575
}
goto l574
l575:
position, tokenIndex = position574, tokenIndex574
if !_rules[ruleOffset]() {
goto l571
}
}
l574:
goto l560
l571:
position, tokenIndex = position560, tokenIndex560
if buffer[position] != rune('#') {
goto l576
}
position++
if !_rules[ruleFloat]() {
goto l576
}
goto l560
l576:
position, tokenIndex = position560, tokenIndex560
if buffer[position] != rune('#') {
goto l577
}
position++
if !_rules[ruleOffset]() {
goto l577
}
{
position578, tokenIndex578 := position, tokenIndex
if buffer[position] != rune('*') {
goto l578
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l578
}
position++
l580:
{
position581, tokenIndex581 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l581
}
position++
goto l580
l581:
position, tokenIndex = position581, tokenIndex581
}
{
position582, tokenIndex582 := position, tokenIndex
if buffer[position] != rune('-') {
goto l582
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l582
}
position++
l584:
{
position585, tokenIndex585 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l585
}
position++
goto l584
l585:
position, tokenIndex = position585, tokenIndex585
}
goto l583
l582:
position, tokenIndex = position582, tokenIndex582
}
l583:
goto l579
l578:
position, tokenIndex = position578, tokenIndex578
}
l579:
goto l560
l577:
position, tokenIndex = position560, tokenIndex560
if buffer[position] != rune('#') {
goto l586
}
position++
{
position587, tokenIndex587 := position, tokenIndex
if buffer[position] != rune('~') {
goto l587
}
position++
goto l588
l587:
position, tokenIndex = position587, tokenIndex587
}
l588:
if buffer[position] != rune('(') {
goto l586
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l586
}
position++
{
position589, tokenIndex589 := position, tokenIndex
if !_rules[ruleWS]() {
goto l589
}
goto l590
l589:
position, tokenIndex = position589, tokenIndex589
}
l590:
if buffer[position] != rune('<') {
goto l586
}
position++
if buffer[position] != rune('<') {
goto l586
}
position++
{
position591, tokenIndex591 := position, tokenIndex
if !_rules[ruleWS]() {
goto l591
}
goto l592
l591:
position, tokenIndex = position591, tokenIndex591
}
l592:
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l586
}
position++
if buffer[position] != rune(')') {
goto l586
}
position++
goto l560
l586:
position, tokenIndex = position560, tokenIndex560
if !_rules[ruleARMRegister]() {
goto l558
}
}
l560:
{
position593, tokenIndex593 := position, tokenIndex
{
position594, tokenIndex594 := position, tokenIndex
if buffer[position] != rune('f') {
goto l595
}
position++
goto l594
l595:
position, tokenIndex = position594, tokenIndex594
if buffer[position] != rune('b') {
goto l596
}
position++
goto l594
l596:
position, tokenIndex = position594, tokenIndex594
if buffer[position] != rune(':') {
goto l597
}
position++
goto l594
l597:
position, tokenIndex = position594, tokenIndex594
if buffer[position] != rune('(') {
goto l598
}
position++
goto l594
l598:
position, tokenIndex = position594, tokenIndex594
if buffer[position] != rune('+') {
goto l599
}
position++
goto l594
l599:
position, tokenIndex = position594, tokenIndex594
if buffer[position] != rune('-') {
goto l593
}
position++
}
l594:
goto l558
l593:
position, tokenIndex = position593, tokenIndex593
}
add(ruleRegisterOrConstant, position559)
}
return true
l558:
position, tokenIndex = position558, tokenIndex558
return false
},
/* 45 ARMConstantTweak <- <((((('u' / 's') (('x' / 'X') ('t' / 'T')) ('x' / 'w' / 'h' / 'b')) / (('l' / 'L') ('s' / 'S') ('l' / 'L')) / (('l' / 'L') ('s' / 'S') ('r' / 'R')) / (('r' / 'R') ('o' / 'O') ('r' / 'R')) / (('a' / 'A') ('s' / 'S') ('r' / 'R'))) (WS '#' Offset)?) / (('m' / 'M') ('u' / 'U') ('l' / 'L') ' ' ('v' / 'V') ('l' / 'L')) / (('m' / 'M') ('u' / 'U') ('l' / 'L') ' ' '#' [0-9]))> */
func() bool {
position600, tokenIndex600 := position, tokenIndex
{
position601 := position
{
position602, tokenIndex602 := position, tokenIndex
{
position604, tokenIndex604 := position, tokenIndex
{
position606, tokenIndex606 := position, tokenIndex
if buffer[position] != rune('u') {
goto l607
}
position++
goto l606
l607:
position, tokenIndex = position606, tokenIndex606
if buffer[position] != rune('s') {
goto l605
}
position++
}
l606:
{
position608, tokenIndex608 := position, tokenIndex
if buffer[position] != rune('x') {
goto l609
}
position++
goto l608
l609:
position, tokenIndex = position608, tokenIndex608
if buffer[position] != rune('X') {
goto l605
}
position++
}
l608:
{
position610, tokenIndex610 := position, tokenIndex
if buffer[position] != rune('t') {
goto l611
}
position++
goto l610
l611:
position, tokenIndex = position610, tokenIndex610
if buffer[position] != rune('T') {
goto l605
}
position++
}
l610:
{
position612, tokenIndex612 := position, tokenIndex
if buffer[position] != rune('x') {
goto l613
}
position++
goto l612
l613:
position, tokenIndex = position612, tokenIndex612
if buffer[position] != rune('w') {
goto l614
}
position++
goto l612
l614:
position, tokenIndex = position612, tokenIndex612
if buffer[position] != rune('h') {
goto l615
}
position++
goto l612
l615:
position, tokenIndex = position612, tokenIndex612
if buffer[position] != rune('b') {
goto l605
}
position++
}
l612:
goto l604
l605:
position, tokenIndex = position604, tokenIndex604
{
position617, tokenIndex617 := position, tokenIndex
if buffer[position] != rune('l') {
goto l618
}
position++
goto l617
l618:
position, tokenIndex = position617, tokenIndex617
if buffer[position] != rune('L') {
goto l616
}
position++
}
l617:
{
position619, tokenIndex619 := position, tokenIndex
if buffer[position] != rune('s') {
goto l620
}
position++
goto l619
l620:
position, tokenIndex = position619, tokenIndex619
if buffer[position] != rune('S') {
goto l616
}
position++
}
l619:
{
position621, tokenIndex621 := position, tokenIndex
if buffer[position] != rune('l') {
goto l622
}
position++
goto l621
l622:
position, tokenIndex = position621, tokenIndex621
if buffer[position] != rune('L') {
goto l616
}
position++
}
l621:
goto l604
l616:
position, tokenIndex = position604, tokenIndex604
{
position624, tokenIndex624 := position, tokenIndex
if buffer[position] != rune('l') {
goto l625
}
position++
goto l624
l625:
position, tokenIndex = position624, tokenIndex624
if buffer[position] != rune('L') {
goto l623
}
position++
}
l624:
{
position626, tokenIndex626 := position, tokenIndex
if buffer[position] != rune('s') {
goto l627
}
position++
goto l626
l627:
position, tokenIndex = position626, tokenIndex626
if buffer[position] != rune('S') {
goto l623
}
position++
}
l626:
{
position628, tokenIndex628 := position, tokenIndex
if buffer[position] != rune('r') {
goto l629
}
position++
goto l628
l629:
position, tokenIndex = position628, tokenIndex628
if buffer[position] != rune('R') {
goto l623
}
position++
}
l628:
goto l604
l623:
position, tokenIndex = position604, tokenIndex604
{
position631, tokenIndex631 := position, tokenIndex
if buffer[position] != rune('r') {
goto l632
}
position++
goto l631
l632:
position, tokenIndex = position631, tokenIndex631
if buffer[position] != rune('R') {
goto l630
}
position++
}
l631:
{
position633, tokenIndex633 := position, tokenIndex
if buffer[position] != rune('o') {
goto l634
}
position++
goto l633
l634:
position, tokenIndex = position633, tokenIndex633
if buffer[position] != rune('O') {
goto l630
}
position++
}
l633:
{
position635, tokenIndex635 := position, tokenIndex
if buffer[position] != rune('r') {
goto l636
}
position++
goto l635
l636:
position, tokenIndex = position635, tokenIndex635
if buffer[position] != rune('R') {
goto l630
}
position++
}
l635:
goto l604
l630:
position, tokenIndex = position604, tokenIndex604
{
position637, tokenIndex637 := position, tokenIndex
if buffer[position] != rune('a') {
goto l638
}
position++
goto l637
l638:
position, tokenIndex = position637, tokenIndex637
if buffer[position] != rune('A') {
goto l603
}
position++
}
l637:
{
position639, tokenIndex639 := position, tokenIndex
if buffer[position] != rune('s') {
goto l640
}
position++
goto l639
l640:
position, tokenIndex = position639, tokenIndex639
if buffer[position] != rune('S') {
goto l603
}
position++
}
l639:
{
position641, tokenIndex641 := position, tokenIndex
if buffer[position] != rune('r') {
goto l642
}
position++
goto l641
l642:
position, tokenIndex = position641, tokenIndex641
if buffer[position] != rune('R') {
goto l603
}
position++
}
l641:
}
l604:
{
position643, tokenIndex643 := position, tokenIndex
if !_rules[ruleWS]() {
goto l643
}
if buffer[position] != rune('#') {
goto l643
}
position++
if !_rules[ruleOffset]() {
goto l643
}
goto l644
l643:
position, tokenIndex = position643, tokenIndex643
}
l644:
goto l602
l603:
position, tokenIndex = position602, tokenIndex602
{
position646, tokenIndex646 := position, tokenIndex
if buffer[position] != rune('m') {
goto l647
}
position++
goto l646
l647:
position, tokenIndex = position646, tokenIndex646
if buffer[position] != rune('M') {
goto l645
}
position++
}
l646:
{
position648, tokenIndex648 := position, tokenIndex
if buffer[position] != rune('u') {
goto l649
}
position++
goto l648
l649:
position, tokenIndex = position648, tokenIndex648
if buffer[position] != rune('U') {
goto l645
}
position++
}
l648:
{
position650, tokenIndex650 := position, tokenIndex
if buffer[position] != rune('l') {
goto l651
}
position++
goto l650
l651:
position, tokenIndex = position650, tokenIndex650
if buffer[position] != rune('L') {
goto l645
}
position++
}
l650:
if buffer[position] != rune(' ') {
goto l645
}
position++
{
position652, tokenIndex652 := position, tokenIndex
if buffer[position] != rune('v') {
goto l653
}
position++
goto l652
l653:
position, tokenIndex = position652, tokenIndex652
if buffer[position] != rune('V') {
goto l645
}
position++
}
l652:
{
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 l645
}
position++
}
l654:
goto l602
l645:
position, tokenIndex = position602, tokenIndex602
{
position656, tokenIndex656 := position, tokenIndex
if buffer[position] != rune('m') {
goto l657
}
position++
goto l656
l657:
position, tokenIndex = position656, tokenIndex656
if buffer[position] != rune('M') {
goto l600
}
position++
}
l656:
{
position658, tokenIndex658 := position, tokenIndex
if buffer[position] != rune('u') {
goto l659
}
position++
goto l658
l659:
position, tokenIndex = position658, tokenIndex658
if buffer[position] != rune('U') {
goto l600
}
position++
}
l658:
{
position660, tokenIndex660 := position, tokenIndex
if buffer[position] != rune('l') {
goto l661
}
position++
goto l660
l661:
position, tokenIndex = position660, tokenIndex660
if buffer[position] != rune('L') {
goto l600
}
position++
}
l660:
if buffer[position] != rune(' ') {
goto l600
}
position++
if buffer[position] != rune('#') {
goto l600
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l600
}
position++
}
l602:
add(ruleARMConstantTweak, position601)
}
return true
l600:
position, tokenIndex = position600, tokenIndex600
return false
},
/* 46 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 {
position662, tokenIndex662 := position, tokenIndex
{
position663 := position
{
position664, tokenIndex664 := position, tokenIndex
{
position666, tokenIndex666 := position, tokenIndex
if buffer[position] != rune('s') {
goto l667
}
position++
goto l666
l667:
position, tokenIndex = position666, tokenIndex666
if buffer[position] != rune('S') {
goto l665
}
position++
}
l666:
{
position668, tokenIndex668 := position, tokenIndex
if buffer[position] != rune('p') {
goto l669
}
position++
goto l668
l669:
position, tokenIndex = position668, tokenIndex668
if buffer[position] != rune('P') {
goto l665
}
position++
}
l668:
goto l664
l665:
position, tokenIndex = position664, tokenIndex664
{
position671, tokenIndex671 := position, tokenIndex
if buffer[position] != rune('x') {
goto l672
}
position++
goto l671
l672:
position, tokenIndex = position671, tokenIndex671
if buffer[position] != rune('w') {
goto l673
}
position++
goto l671
l673:
position, tokenIndex = position671, tokenIndex671
if buffer[position] != rune('d') {
goto l674
}
position++
goto l671
l674:
position, tokenIndex = position671, tokenIndex671
if buffer[position] != rune('q') {
goto l675
}
position++
goto l671
l675:
position, tokenIndex = position671, tokenIndex671
if buffer[position] != rune('s') {
goto l676
}
position++
goto l671
l676:
position, tokenIndex = position671, tokenIndex671
if buffer[position] != rune('h') {
goto l677
}
position++
goto l671
l677:
position, tokenIndex = position671, tokenIndex671
if buffer[position] != rune('b') {
goto l670
}
position++
}
l671:
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l670
}
position++
{
position678, tokenIndex678 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l678
}
position++
goto l679
l678:
position, tokenIndex = position678, tokenIndex678
}
l679:
goto l664
l670:
position, tokenIndex = position664, tokenIndex664
{
position681, tokenIndex681 := position, tokenIndex
if buffer[position] != rune('x') {
goto l682
}
position++
goto l681
l682:
position, tokenIndex = position681, tokenIndex681
if buffer[position] != rune('X') {
goto l680
}
position++
}
l681:
{
position683, tokenIndex683 := position, tokenIndex
if buffer[position] != rune('z') {
goto l684
}
position++
goto l683
l684:
position, tokenIndex = position683, tokenIndex683
if buffer[position] != rune('Z') {
goto l680
}
position++
}
l683:
{
position685, tokenIndex685 := position, tokenIndex
if buffer[position] != rune('r') {
goto l686
}
position++
goto l685
l686:
position, tokenIndex = position685, tokenIndex685
if buffer[position] != rune('R') {
goto l680
}
position++
}
l685:
goto l664
l680:
position, tokenIndex = position664, tokenIndex664
{
position688, tokenIndex688 := position, tokenIndex
if buffer[position] != rune('w') {
goto l689
}
position++
goto l688
l689:
position, tokenIndex = position688, tokenIndex688
if buffer[position] != rune('W') {
goto l687
}
position++
}
l688:
{
position690, tokenIndex690 := position, tokenIndex
if buffer[position] != rune('z') {
goto l691
}
position++
goto l690
l691:
position, tokenIndex = position690, tokenIndex690
if buffer[position] != rune('Z') {
goto l687
}
position++
}
l690:
{
position692, tokenIndex692 := position, tokenIndex
if buffer[position] != rune('r') {
goto l693
}
position++
goto l692
l693:
position, tokenIndex = position692, tokenIndex692
if buffer[position] != rune('R') {
goto l687
}
position++
}
l692:
goto l664
l687:
position, tokenIndex = position664, tokenIndex664
{
position695, tokenIndex695 := position, tokenIndex
if buffer[position] != rune('n') {
goto l696
}
position++
goto l695
l696:
position, tokenIndex = position695, tokenIndex695
if buffer[position] != rune('N') {
goto l694
}
position++
}
l695:
{
position697, tokenIndex697 := position, tokenIndex
if buffer[position] != rune('z') {
goto l698
}
position++
goto l697
l698:
position, tokenIndex = position697, tokenIndex697
if buffer[position] != rune('Z') {
goto l694
}
position++
}
l697:
{
position699, tokenIndex699 := position, tokenIndex
if buffer[position] != rune('c') {
goto l700
}
position++
goto l699
l700:
position, tokenIndex = position699, tokenIndex699
if buffer[position] != rune('C') {
goto l694
}
position++
}
l699:
{
position701, tokenIndex701 := position, tokenIndex
if buffer[position] != rune('v') {
goto l702
}
position++
goto l701
l702:
position, tokenIndex = position701, tokenIndex701
if buffer[position] != rune('V') {
goto l694
}
position++
}
l701:
goto l664
l694:
position, tokenIndex = position664, tokenIndex664
if !_rules[ruleSVE2PredicateRegister]() {
goto l703
}
goto l664
l703:
position, tokenIndex = position664, tokenIndex664
if !_rules[ruleARMVectorRegister]() {
goto l704
}
goto l664
l704:
position, tokenIndex = position664, tokenIndex664
if !_rules[ruleSVE2SpecialValue]() {
goto l705
}
goto l664
l705:
position, tokenIndex = position664, tokenIndex664
if buffer[position] != rune('{') {
goto l662
}
position++
{
position706, tokenIndex706 := position, tokenIndex
if !_rules[ruleWS]() {
goto l706
}
goto l707
l706:
position, tokenIndex = position706, tokenIndex706
}
l707:
if !_rules[ruleARMVectorRegister]() {
goto l662
}
l708:
{
position709, tokenIndex709 := position, tokenIndex
if buffer[position] != rune(',') {
goto l709
}
position++
{
position710, tokenIndex710 := position, tokenIndex
if !_rules[ruleWS]() {
goto l710
}
goto l711
l710:
position, tokenIndex = position710, tokenIndex710
}
l711:
if !_rules[ruleARMVectorRegister]() {
goto l709
}
goto l708
l709:
position, tokenIndex = position709, tokenIndex709
}
{
position712, tokenIndex712 := position, tokenIndex
if !_rules[ruleWS]() {
goto l712
}
goto l713
l712:
position, tokenIndex = position712, tokenIndex712
}
l713:
if buffer[position] != rune('}') {
goto l662
}
position++
{
position714, tokenIndex714 := position, tokenIndex
if buffer[position] != rune('[') {
goto l714
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l714
}
position++
{
position716, tokenIndex716 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l716
}
position++
goto l717
l716:
position, tokenIndex = position716, tokenIndex716
}
l717:
if buffer[position] != rune(']') {
goto l714
}
position++
goto l715
l714:
position, tokenIndex = position714, tokenIndex714
}
l715:
}
l664:
add(ruleARMRegister, position663)
}
return true
l662:
position, tokenIndex = position662, tokenIndex662
return false
},
/* 47 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 {
position718, tokenIndex718 := position, tokenIndex
{
position719 := position
{
position720, tokenIndex720 := position, tokenIndex
if buffer[position] != rune('p') {
goto l721
}
position++
goto l720
l721:
position, tokenIndex = position720, tokenIndex720
if buffer[position] != rune('v') {
goto l722
}
position++
goto l720
l722:
position, tokenIndex = position720, tokenIndex720
if buffer[position] != rune('z') {
goto l718
}
position++
}
l720:
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l718
}
position++
{
position723, tokenIndex723 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l723
}
position++
goto l724
l723:
position, tokenIndex = position723, tokenIndex723
}
l724:
{
position725, tokenIndex725 := position, tokenIndex
{
position726, tokenIndex726 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l727
}
position++
goto l726
l727:
position, tokenIndex = position726, tokenIndex726
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l728
}
position++
goto l726
l728:
position, tokenIndex = position726, tokenIndex726
{
position730, tokenIndex730 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l731
}
position++
goto l730
l731:
position, tokenIndex = position730, tokenIndex730
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l729
}
position++
}
l730:
goto l726
l729:
position, tokenIndex = position726, tokenIndex726
if buffer[position] != rune('_') {
goto l725
}
position++
}
l726:
goto l718
l725:
position, tokenIndex = position725, tokenIndex725
}
{
position732, tokenIndex732 := position, tokenIndex
if buffer[position] != rune('.') {
goto l732
}
position++
l734:
{
position735, tokenIndex735 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l735
}
position++
goto l734
l735:
position, tokenIndex = position735, tokenIndex735
}
{
position736, tokenIndex736 := position, tokenIndex
if buffer[position] != rune('b') {
goto l737
}
position++
goto l736
l737:
position, tokenIndex = position736, tokenIndex736
if buffer[position] != rune('s') {
goto l738
}
position++
goto l736
l738:
position, tokenIndex = position736, tokenIndex736
if buffer[position] != rune('d') {
goto l739
}
position++
goto l736
l739:
position, tokenIndex = position736, tokenIndex736
if buffer[position] != rune('h') {
goto l740
}
position++
goto l736
l740:
position, tokenIndex = position736, tokenIndex736
if buffer[position] != rune('q') {
goto l732
}
position++
}
l736:
{
position741, tokenIndex741 := position, tokenIndex
if buffer[position] != rune('[') {
goto l741
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l741
}
position++
{
position743, tokenIndex743 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l743
}
position++
goto l744
l743:
position, tokenIndex = position743, tokenIndex743
}
l744:
if buffer[position] != rune(']') {
goto l741
}
position++
goto l742
l741:
position, tokenIndex = position741, tokenIndex741
}
l742:
goto l733
l732:
position, tokenIndex = position732, tokenIndex732
}
l733:
add(ruleARMVectorRegister, position719)
}
return true
l718:
position, tokenIndex = position718, tokenIndex718
return false
},
/* 48 SVE2PredicateRegister <- <(('p' / 'P') [0-9] [0-9]? '/' ('m' / 'M' / ('z' / 'Z')))> */
func() bool {
position745, tokenIndex745 := position, tokenIndex
{
position746 := position
{
position747, tokenIndex747 := position, tokenIndex
if buffer[position] != rune('p') {
goto l748
}
position++
goto l747
l748:
position, tokenIndex = position747, tokenIndex747
if buffer[position] != rune('P') {
goto l745
}
position++
}
l747:
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l745
}
position++
{
position749, tokenIndex749 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l749
}
position++
goto l750
l749:
position, tokenIndex = position749, tokenIndex749
}
l750:
if buffer[position] != rune('/') {
goto l745
}
position++
{
position751, tokenIndex751 := position, tokenIndex
if buffer[position] != rune('m') {
goto l752
}
position++
goto l751
l752:
position, tokenIndex = position751, tokenIndex751
if buffer[position] != rune('M') {
goto l753
}
position++
goto l751
l753:
position, tokenIndex = position751, tokenIndex751
{
position754, tokenIndex754 := position, tokenIndex
if buffer[position] != rune('z') {
goto l755
}
position++
goto l754
l755:
position, tokenIndex = position754, tokenIndex754
if buffer[position] != rune('Z') {
goto l745
}
position++
}
l754:
}
l751:
add(ruleSVE2PredicateRegister, position746)
}
return true
l745:
position, tokenIndex = position745, tokenIndex745
return false
},
/* 49 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 {
position756, tokenIndex756 := position, tokenIndex
{
position757 := position
{
position758, tokenIndex758 := position, tokenIndex
{
position760, tokenIndex760 := position, tokenIndex
if buffer[position] != rune('p') {
goto l761
}
position++
goto l760
l761:
position, tokenIndex = position760, tokenIndex760
if buffer[position] != rune('P') {
goto l759
}
position++
}
l760:
{
position762, tokenIndex762 := position, tokenIndex
if buffer[position] != rune('o') {
goto l763
}
position++
goto l762
l763:
position, tokenIndex = position762, tokenIndex762
if buffer[position] != rune('O') {
goto l759
}
position++
}
l762:
{
position764, tokenIndex764 := position, tokenIndex
if buffer[position] != rune('w') {
goto l765
}
position++
goto l764
l765:
position, tokenIndex = position764, tokenIndex764
if buffer[position] != rune('W') {
goto l759
}
position++
}
l764:
if buffer[position] != rune('2') {
goto l759
}
position++
goto l758
l759:
position, tokenIndex = position758, tokenIndex758
{
position767, tokenIndex767 := position, tokenIndex
if buffer[position] != rune('v') {
goto l768
}
position++
goto l767
l768:
position, tokenIndex = position767, tokenIndex767
if buffer[position] != rune('V') {
goto l766
}
position++
}
l767:
{
position769, tokenIndex769 := position, tokenIndex
if buffer[position] != rune('l') {
goto l770
}
position++
goto l769
l770:
position, tokenIndex = position769, tokenIndex769
if buffer[position] != rune('L') {
goto l766
}
position++
}
l769:
{
position771, tokenIndex771 := position, tokenIndex
if buffer[position] != rune('1') {
goto l772
}
position++
goto l771
l772:
position, tokenIndex = position771, tokenIndex771
if buffer[position] != rune('2') {
goto l773
}
position++
goto l771
l773:
position, tokenIndex = position771, tokenIndex771
if buffer[position] != rune('3') {
goto l774
}
position++
goto l771
l774:
position, tokenIndex = position771, tokenIndex771
if buffer[position] != rune('4') {
goto l775
}
position++
goto l771
l775:
position, tokenIndex = position771, tokenIndex771
if buffer[position] != rune('5') {
goto l776
}
position++
goto l771
l776:
position, tokenIndex = position771, tokenIndex771
if buffer[position] != rune('6') {
goto l777
}
position++
goto l771
l777:
position, tokenIndex = position771, tokenIndex771
if buffer[position] != rune('7') {
goto l778
}
position++
goto l771
l778:
position, tokenIndex = position771, tokenIndex771
if buffer[position] != rune('8') {
goto l766
}
position++
}
l771:
{
position779, tokenIndex779 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l779
}
position++
goto l766
l779:
position, tokenIndex = position779, tokenIndex779
}
goto l758
l766:
position, tokenIndex = position758, tokenIndex758
{
position781, tokenIndex781 := position, tokenIndex
if buffer[position] != rune('v') {
goto l782
}
position++
goto l781
l782:
position, tokenIndex = position781, tokenIndex781
if buffer[position] != rune('V') {
goto l780
}
position++
}
l781:
{
position783, tokenIndex783 := position, tokenIndex
if buffer[position] != rune('l') {
goto l784
}
position++
goto l783
l784:
position, tokenIndex = position783, tokenIndex783
if buffer[position] != rune('L') {
goto l780
}
position++
}
l783:
if buffer[position] != rune('1') {
goto l780
}
position++
if buffer[position] != rune('6') {
goto l780
}
position++
goto l758
l780:
position, tokenIndex = position758, tokenIndex758
{
position786, tokenIndex786 := position, tokenIndex
if buffer[position] != rune('v') {
goto l787
}
position++
goto l786
l787:
position, tokenIndex = position786, tokenIndex786
if buffer[position] != rune('V') {
goto l785
}
position++
}
l786:
{
position788, tokenIndex788 := position, tokenIndex
if buffer[position] != rune('l') {
goto l789
}
position++
goto l788
l789:
position, tokenIndex = position788, tokenIndex788
if buffer[position] != rune('L') {
goto l785
}
position++
}
l788:
if buffer[position] != rune('3') {
goto l785
}
position++
if buffer[position] != rune('2') {
goto l785
}
position++
goto l758
l785:
position, tokenIndex = position758, tokenIndex758
{
position791, tokenIndex791 := position, tokenIndex
if buffer[position] != rune('v') {
goto l792
}
position++
goto l791
l792:
position, tokenIndex = position791, tokenIndex791
if buffer[position] != rune('V') {
goto l790
}
position++
}
l791:
{
position793, tokenIndex793 := position, tokenIndex
if buffer[position] != rune('l') {
goto l794
}
position++
goto l793
l794:
position, tokenIndex = position793, tokenIndex793
if buffer[position] != rune('L') {
goto l790
}
position++
}
l793:
if buffer[position] != rune('6') {
goto l790
}
position++
if buffer[position] != rune('4') {
goto l790
}
position++
goto l758
l790:
position, tokenIndex = position758, tokenIndex758
{
position796, tokenIndex796 := position, tokenIndex
if buffer[position] != rune('v') {
goto l797
}
position++
goto l796
l797:
position, tokenIndex = position796, tokenIndex796
if buffer[position] != rune('V') {
goto l795
}
position++
}
l796:
{
position798, tokenIndex798 := position, tokenIndex
if buffer[position] != rune('l') {
goto l799
}
position++
goto l798
l799:
position, tokenIndex = position798, tokenIndex798
if buffer[position] != rune('L') {
goto l795
}
position++
}
l798:
if buffer[position] != rune('1') {
goto l795
}
position++
if buffer[position] != rune('2') {
goto l795
}
position++
if buffer[position] != rune('8') {
goto l795
}
position++
goto l758
l795:
position, tokenIndex = position758, tokenIndex758
{
position801, tokenIndex801 := position, tokenIndex
if buffer[position] != rune('v') {
goto l802
}
position++
goto l801
l802:
position, tokenIndex = position801, tokenIndex801
if buffer[position] != rune('V') {
goto l800
}
position++
}
l801:
{
position803, tokenIndex803 := position, tokenIndex
if buffer[position] != rune('l') {
goto l804
}
position++
goto l803
l804:
position, tokenIndex = position803, tokenIndex803
if buffer[position] != rune('L') {
goto l800
}
position++
}
l803:
if buffer[position] != rune('2') {
goto l800
}
position++
if buffer[position] != rune('5') {
goto l800
}
position++
if buffer[position] != rune('6') {
goto l800
}
position++
goto l758
l800:
position, tokenIndex = position758, tokenIndex758
{
position806, tokenIndex806 := position, tokenIndex
if buffer[position] != rune('m') {
goto l807
}
position++
goto l806
l807:
position, tokenIndex = position806, tokenIndex806
if buffer[position] != rune('M') {
goto l805
}
position++
}
l806:
{
position808, tokenIndex808 := position, tokenIndex
if buffer[position] != rune('u') {
goto l809
}
position++
goto l808
l809:
position, tokenIndex = position808, tokenIndex808
if buffer[position] != rune('U') {
goto l805
}
position++
}
l808:
{
position810, tokenIndex810 := position, tokenIndex
if buffer[position] != rune('l') {
goto l811
}
position++
goto l810
l811:
position, tokenIndex = position810, tokenIndex810
if buffer[position] != rune('L') {
goto l805
}
position++
}
l810:
if buffer[position] != rune('3') {
goto l805
}
position++
goto l758
l805:
position, tokenIndex = position758, tokenIndex758
{
position813, tokenIndex813 := position, tokenIndex
if buffer[position] != rune('m') {
goto l814
}
position++
goto l813
l814:
position, tokenIndex = position813, tokenIndex813
if buffer[position] != rune('M') {
goto l812
}
position++
}
l813:
{
position815, tokenIndex815 := position, tokenIndex
if buffer[position] != rune('u') {
goto l816
}
position++
goto l815
l816:
position, tokenIndex = position815, tokenIndex815
if buffer[position] != rune('U') {
goto l812
}
position++
}
l815:
{
position817, tokenIndex817 := position, tokenIndex
if buffer[position] != rune('l') {
goto l818
}
position++
goto l817
l818:
position, tokenIndex = position817, tokenIndex817
if buffer[position] != rune('L') {
goto l812
}
position++
}
l817:
if buffer[position] != rune('4') {
goto l812
}
position++
goto l758
l812:
position, tokenIndex = position758, tokenIndex758
{
position819, tokenIndex819 := position, tokenIndex
if buffer[position] != rune('a') {
goto l820
}
position++
goto l819
l820:
position, tokenIndex = position819, tokenIndex819
if buffer[position] != rune('A') {
goto l756
}
position++
}
l819:
{
position821, tokenIndex821 := position, tokenIndex
if buffer[position] != rune('l') {
goto l822
}
position++
goto l821
l822:
position, tokenIndex = position821, tokenIndex821
if buffer[position] != rune('L') {
goto l756
}
position++
}
l821:
{
position823, tokenIndex823 := position, tokenIndex
if buffer[position] != rune('l') {
goto l824
}
position++
goto l823
l824:
position, tokenIndex = position823, tokenIndex823
if buffer[position] != rune('L') {
goto l756
}
position++
}
l823:
}
l758:
{
position825, tokenIndex825 := position, tokenIndex
{
position826, tokenIndex826 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l827
}
position++
goto l826
l827:
position, tokenIndex = position826, tokenIndex826
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l828
}
position++
goto l826
l828:
position, tokenIndex = position826, tokenIndex826
{
position830, tokenIndex830 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l831
}
position++
goto l830
l831:
position, tokenIndex = position830, tokenIndex830
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l829
}
position++
}
l830:
goto l826
l829:
position, tokenIndex = position826, tokenIndex826
if buffer[position] != rune('_') {
goto l825
}
position++
}
l826:
goto l756
l825:
position, tokenIndex = position825, tokenIndex825
}
add(ruleSVE2SpecialValue, position757)
}
return true
l756:
position, tokenIndex = position756, tokenIndex756
return false
},
/* 50 MemoryRef <- <((SymbolRef BaseIndexScale) / SymbolRef / Low12BitsSymbolRef / (Offset* BaseIndexScale) / (SegmentRegister Offset BaseIndexScale) / (SegmentRegister BaseIndexScale) / (SegmentRegister Offset) / ARMBaseIndexScale / BaseIndexScale)> */
func() bool {
position832, tokenIndex832 := position, tokenIndex
{
position833 := position
{
position834, tokenIndex834 := position, tokenIndex
if !_rules[ruleSymbolRef]() {
goto l835
}
if !_rules[ruleBaseIndexScale]() {
goto l835
}
goto l834
l835:
position, tokenIndex = position834, tokenIndex834
if !_rules[ruleSymbolRef]() {
goto l836
}
goto l834
l836:
position, tokenIndex = position834, tokenIndex834
if !_rules[ruleLow12BitsSymbolRef]() {
goto l837
}
goto l834
l837:
position, tokenIndex = position834, tokenIndex834
l839:
{
position840, tokenIndex840 := position, tokenIndex
if !_rules[ruleOffset]() {
goto l840
}
goto l839
l840:
position, tokenIndex = position840, tokenIndex840
}
if !_rules[ruleBaseIndexScale]() {
goto l838
}
goto l834
l838:
position, tokenIndex = position834, tokenIndex834
if !_rules[ruleSegmentRegister]() {
goto l841
}
if !_rules[ruleOffset]() {
goto l841
}
if !_rules[ruleBaseIndexScale]() {
goto l841
}
goto l834
l841:
position, tokenIndex = position834, tokenIndex834
if !_rules[ruleSegmentRegister]() {
goto l842
}
if !_rules[ruleBaseIndexScale]() {
goto l842
}
goto l834
l842:
position, tokenIndex = position834, tokenIndex834
if !_rules[ruleSegmentRegister]() {
goto l843
}
if !_rules[ruleOffset]() {
goto l843
}
goto l834
l843:
position, tokenIndex = position834, tokenIndex834
if !_rules[ruleARMBaseIndexScale]() {
goto l844
}
goto l834
l844:
position, tokenIndex = position834, tokenIndex834
if !_rules[ruleBaseIndexScale]() {
goto l832
}
}
l834:
add(ruleMemoryRef, position833)
}
return true
l832:
position, tokenIndex = position832, tokenIndex832
return false
},
/* 51 SymbolRef <- <((Offset* '+')? (LocalSymbol / SymbolName) Offset* ('@' Section Offset*)?)> */
func() bool {
position845, tokenIndex845 := position, tokenIndex
{
position846 := position
{
position847, tokenIndex847 := position, tokenIndex
l849:
{
position850, tokenIndex850 := position, tokenIndex
if !_rules[ruleOffset]() {
goto l850
}
goto l849
l850:
position, tokenIndex = position850, tokenIndex850
}
if buffer[position] != rune('+') {
goto l847
}
position++
goto l848
l847:
position, tokenIndex = position847, tokenIndex847
}
l848:
{
position851, tokenIndex851 := position, tokenIndex
if !_rules[ruleLocalSymbol]() {
goto l852
}
goto l851
l852:
position, tokenIndex = position851, tokenIndex851
if !_rules[ruleSymbolName]() {
goto l845
}
}
l851:
l853:
{
position854, tokenIndex854 := position, tokenIndex
if !_rules[ruleOffset]() {
goto l854
}
goto l853
l854:
position, tokenIndex = position854, tokenIndex854
}
{
position855, tokenIndex855 := position, tokenIndex
if buffer[position] != rune('@') {
goto l855
}
position++
if !_rules[ruleSection]() {
goto l855
}
l857:
{
position858, tokenIndex858 := position, tokenIndex
if !_rules[ruleOffset]() {
goto l858
}
goto l857
l858:
position, tokenIndex = position858, tokenIndex858
}
goto l856
l855:
position, tokenIndex = position855, tokenIndex855
}
l856:
add(ruleSymbolRef, position846)
}
return true
l845:
position, tokenIndex = position845, tokenIndex845
return false
},
/* 52 Low12BitsSymbolRef <- <(':' ('l' / 'L') ('o' / 'O') '1' '2' ':' (LocalSymbol / SymbolName) Offset?)> */
func() bool {
position859, tokenIndex859 := position, tokenIndex
{
position860 := position
if buffer[position] != rune(':') {
goto l859
}
position++
{
position861, tokenIndex861 := position, tokenIndex
if buffer[position] != rune('l') {
goto l862
}
position++
goto l861
l862:
position, tokenIndex = position861, tokenIndex861
if buffer[position] != rune('L') {
goto l859
}
position++
}
l861:
{
position863, tokenIndex863 := position, tokenIndex
if buffer[position] != rune('o') {
goto l864
}
position++
goto l863
l864:
position, tokenIndex = position863, tokenIndex863
if buffer[position] != rune('O') {
goto l859
}
position++
}
l863:
if buffer[position] != rune('1') {
goto l859
}
position++
if buffer[position] != rune('2') {
goto l859
}
position++
if buffer[position] != rune(':') {
goto l859
}
position++
{
position865, tokenIndex865 := position, tokenIndex
if !_rules[ruleLocalSymbol]() {
goto l866
}
goto l865
l866:
position, tokenIndex = position865, tokenIndex865
if !_rules[ruleSymbolName]() {
goto l859
}
}
l865:
{
position867, tokenIndex867 := position, tokenIndex
if !_rules[ruleOffset]() {
goto l867
}
goto l868
l867:
position, tokenIndex = position867, tokenIndex867
}
l868:
add(ruleLow12BitsSymbolRef, position860)
}
return true
l859:
position, tokenIndex = position859, tokenIndex859
return false
},
/* 53 ARMBaseIndexScale <- <('[' ARMRegister (',' WS? (('#' Offset (('*' [0-9]+) / ('*' '(' [0-9]+ Operator [0-9]+ ')') / ('+' [0-9]+)*)?) / ARMGOTLow12 / Low12BitsSymbolRef / ARMRegister) (',' WS? ARMConstantTweak)?)? ']' ARMPostincrement?)> */
func() bool {
position869, tokenIndex869 := position, tokenIndex
{
position870 := position
if buffer[position] != rune('[') {
goto l869
}
position++
if !_rules[ruleARMRegister]() {
goto l869
}
{
position871, tokenIndex871 := position, tokenIndex
if buffer[position] != rune(',') {
goto l871
}
position++
{
position873, tokenIndex873 := position, tokenIndex
if !_rules[ruleWS]() {
goto l873
}
goto l874
l873:
position, tokenIndex = position873, tokenIndex873
}
l874:
{
position875, tokenIndex875 := position, tokenIndex
if buffer[position] != rune('#') {
goto l876
}
position++
if !_rules[ruleOffset]() {
goto l876
}
{
position877, tokenIndex877 := position, tokenIndex
{
position879, tokenIndex879 := position, tokenIndex
if buffer[position] != rune('*') {
goto l880
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l880
}
position++
l881:
{
position882, tokenIndex882 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l882
}
position++
goto l881
l882:
position, tokenIndex = position882, tokenIndex882
}
goto l879
l880:
position, tokenIndex = position879, tokenIndex879
if buffer[position] != rune('*') {
goto l883
}
position++
if buffer[position] != rune('(') {
goto l883
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l883
}
position++
l884:
{
position885, tokenIndex885 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l885
}
position++
goto l884
l885:
position, tokenIndex = position885, tokenIndex885
}
if !_rules[ruleOperator]() {
goto l883
}
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l883
}
position++
l886:
{
position887, tokenIndex887 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l887
}
position++
goto l886
l887:
position, tokenIndex = position887, tokenIndex887
}
if buffer[position] != rune(')') {
goto l883
}
position++
goto l879
l883:
position, tokenIndex = position879, tokenIndex879
l888:
{
position889, tokenIndex889 := position, tokenIndex
if buffer[position] != rune('+') {
goto l889
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l889
}
position++
l890:
{
position891, tokenIndex891 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l891
}
position++
goto l890
l891:
position, tokenIndex = position891, tokenIndex891
}
goto l888
l889:
position, tokenIndex = position889, tokenIndex889
}
}
l879:
goto l878
position, tokenIndex = position877, tokenIndex877
}
l878:
goto l875
l876:
position, tokenIndex = position875, tokenIndex875
if !_rules[ruleARMGOTLow12]() {
goto l892
}
goto l875
l892:
position, tokenIndex = position875, tokenIndex875
if !_rules[ruleLow12BitsSymbolRef]() {
goto l893
}
goto l875
l893:
position, tokenIndex = position875, tokenIndex875
if !_rules[ruleARMRegister]() {
goto l871
}
}
l875:
{
position894, tokenIndex894 := position, tokenIndex
if buffer[position] != rune(',') {
goto l894
}
position++
{
position896, tokenIndex896 := position, tokenIndex
if !_rules[ruleWS]() {
goto l896
}
goto l897
l896:
position, tokenIndex = position896, tokenIndex896
}
l897:
if !_rules[ruleARMConstantTweak]() {
goto l894
}
goto l895
l894:
position, tokenIndex = position894, tokenIndex894
}
l895:
goto l872
l871:
position, tokenIndex = position871, tokenIndex871
}
l872:
if buffer[position] != rune(']') {
goto l869
}
position++
{
position898, tokenIndex898 := position, tokenIndex
if !_rules[ruleARMPostincrement]() {
goto l898
}
goto l899
l898:
position, tokenIndex = position898, tokenIndex898
}
l899:
add(ruleARMBaseIndexScale, position870)
}
return true
l869:
position, tokenIndex = position869, tokenIndex869
return false
},
/* 54 ARMGOTLow12 <- <(':' ('g' / 'G') ('o' / 'O') ('t' / 'T') '_' ('l' / 'L') ('o' / 'O') '1' '2' ':' SymbolName)> */
func() bool {
position900, tokenIndex900 := position, tokenIndex
{
position901 := position
if buffer[position] != rune(':') {
goto l900
}
position++
{
position902, tokenIndex902 := position, tokenIndex
if buffer[position] != rune('g') {
goto l903
}
position++
goto l902
l903:
position, tokenIndex = position902, tokenIndex902
if buffer[position] != rune('G') {
goto l900
}
position++
}
l902:
{
position904, tokenIndex904 := position, tokenIndex
if buffer[position] != rune('o') {
goto l905
}
position++
goto l904
l905:
position, tokenIndex = position904, tokenIndex904
if buffer[position] != rune('O') {
goto l900
}
position++
}
l904:
{
position906, tokenIndex906 := position, tokenIndex
if buffer[position] != rune('t') {
goto l907
}
position++
goto l906
l907:
position, tokenIndex = position906, tokenIndex906
if buffer[position] != rune('T') {
goto l900
}
position++
}
l906:
if buffer[position] != rune('_') {
goto l900
}
position++
{
position908, tokenIndex908 := position, tokenIndex
if buffer[position] != rune('l') {
goto l909
}
position++
goto l908
l909:
position, tokenIndex = position908, tokenIndex908
if buffer[position] != rune('L') {
goto l900
}
position++
}
l908:
{
position910, tokenIndex910 := position, tokenIndex
if buffer[position] != rune('o') {
goto l911
}
position++
goto l910
l911:
position, tokenIndex = position910, tokenIndex910
if buffer[position] != rune('O') {
goto l900
}
position++
}
l910:
if buffer[position] != rune('1') {
goto l900
}
position++
if buffer[position] != rune('2') {
goto l900
}
position++
if buffer[position] != rune(':') {
goto l900
}
position++
if !_rules[ruleSymbolName]() {
goto l900
}
add(ruleARMGOTLow12, position901)
}
return true
l900:
position, tokenIndex = position900, tokenIndex900
return false
},
/* 55 ARMPostincrement <- <'!'> */
func() bool {
position912, tokenIndex912 := position, tokenIndex
{
position913 := position
if buffer[position] != rune('!') {
goto l912
}
position++
add(ruleARMPostincrement, position913)
}
return true
l912:
position, tokenIndex = position912, tokenIndex912
return false
},
/* 56 BaseIndexScale <- <('(' RegisterOrConstant? WS? (',' WS? RegisterOrConstant WS? (',' [0-9]+)?)? ')')> */
func() bool {
position914, tokenIndex914 := position, tokenIndex
{
position915 := position
if buffer[position] != rune('(') {
goto l914
}
position++
{
position916, tokenIndex916 := position, tokenIndex
if !_rules[ruleRegisterOrConstant]() {
goto l916
}
goto l917
l916:
position, tokenIndex = position916, tokenIndex916
}
l917:
{
position918, tokenIndex918 := position, tokenIndex
if !_rules[ruleWS]() {
goto l918
}
goto l919
l918:
position, tokenIndex = position918, tokenIndex918
}
l919:
{
position920, tokenIndex920 := position, tokenIndex
if buffer[position] != rune(',') {
goto l920
}
position++
{
position922, tokenIndex922 := position, tokenIndex
if !_rules[ruleWS]() {
goto l922
}
goto l923
l922:
position, tokenIndex = position922, tokenIndex922
}
l923:
if !_rules[ruleRegisterOrConstant]() {
goto l920
}
{
position924, tokenIndex924 := position, tokenIndex
if !_rules[ruleWS]() {
goto l924
}
goto l925
l924:
position, tokenIndex = position924, tokenIndex924
}
l925:
{
position926, tokenIndex926 := position, tokenIndex
if buffer[position] != rune(',') {
goto l926
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l926
}
position++
l928:
{
position929, tokenIndex929 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l929
}
position++
goto l928
l929:
position, tokenIndex = position929, tokenIndex929
}
goto l927
l926:
position, tokenIndex = position926, tokenIndex926
}
l927:
goto l921
l920:
position, tokenIndex = position920, tokenIndex920
}
l921:
if buffer[position] != rune(')') {
goto l914
}
position++
add(ruleBaseIndexScale, position915)
}
return true
l914:
position, tokenIndex = position914, tokenIndex914
return false
},
/* 57 Operator <- <('+' / '-')> */
func() bool {
position930, tokenIndex930 := position, tokenIndex
{
position931 := position
{
position932, tokenIndex932 := position, tokenIndex
if buffer[position] != rune('+') {
goto l933
}
position++
goto l932
l933:
position, tokenIndex = position932, tokenIndex932
if buffer[position] != rune('-') {
goto l930
}
position++
}
l932:
add(ruleOperator, position931)
}
return true
l930:
position, tokenIndex = position930, tokenIndex930
return false
},
/* 58 Offset <- <('+'? '-'? (('0' ('b' / 'B') ('0' / '1')+) / ('0' ('x' / 'X') ([0-9] / [0-9] / ([a-f] / [A-F]))+) / [0-9]+))> */
func() bool {
position934, tokenIndex934 := position, tokenIndex
{
position935 := position
{
position936, tokenIndex936 := position, tokenIndex
if buffer[position] != rune('+') {
goto l936
}
position++
goto l937
l936:
position, tokenIndex = position936, tokenIndex936
}
l937:
{
position938, tokenIndex938 := position, tokenIndex
if buffer[position] != rune('-') {
goto l938
}
position++
goto l939
l938:
position, tokenIndex = position938, tokenIndex938
}
l939:
{
position940, tokenIndex940 := position, tokenIndex
if buffer[position] != rune('0') {
goto l941
}
position++
{
position942, tokenIndex942 := position, tokenIndex
if buffer[position] != rune('b') {
goto l943
}
position++
goto l942
l943:
position, tokenIndex = position942, tokenIndex942
if buffer[position] != rune('B') {
goto l941
}
position++
}
l942:
{
position946, tokenIndex946 := position, tokenIndex
if buffer[position] != rune('0') {
goto l947
}
position++
goto l946
l947:
position, tokenIndex = position946, tokenIndex946
if buffer[position] != rune('1') {
goto l941
}
position++
}
l946:
l944:
{
position945, tokenIndex945 := position, tokenIndex
{
position948, tokenIndex948 := position, tokenIndex
if buffer[position] != rune('0') {
goto l949
}
position++
goto l948
l949:
position, tokenIndex = position948, tokenIndex948
if buffer[position] != rune('1') {
goto l945
}
position++
}
l948:
goto l944
l945:
position, tokenIndex = position945, tokenIndex945
}
goto l940
l941:
position, tokenIndex = position940, tokenIndex940
if buffer[position] != rune('0') {
goto l950
}
position++
{
position951, tokenIndex951 := position, tokenIndex
if buffer[position] != rune('x') {
goto l952
}
position++
goto l951
l952:
position, tokenIndex = position951, tokenIndex951
if buffer[position] != rune('X') {
goto l950
}
position++
}
l951:
{
position955, tokenIndex955 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l956
}
position++
goto l955
l956:
position, tokenIndex = position955, tokenIndex955
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l957
}
position++
goto l955
l957:
position, tokenIndex = position955, tokenIndex955
{
position958, tokenIndex958 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('f') {
goto l959
}
position++
goto l958
l959:
position, tokenIndex = position958, tokenIndex958
if c := buffer[position]; c < rune('A') || c > rune('F') {
goto l950
}
position++
}
l958:
}
l955:
l953:
{
position954, tokenIndex954 := position, tokenIndex
{
position960, tokenIndex960 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l961
}
position++
goto l960
l961:
position, tokenIndex = position960, tokenIndex960
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l962
}
position++
goto l960
l962:
position, tokenIndex = position960, tokenIndex960
{
position963, tokenIndex963 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('f') {
goto l964
}
position++
goto l963
l964:
position, tokenIndex = position963, tokenIndex963
if c := buffer[position]; c < rune('A') || c > rune('F') {
goto l954
}
position++
}
l963:
}
l960:
goto l953
l954:
position, tokenIndex = position954, tokenIndex954
}
goto l940
l950:
position, tokenIndex = position940, tokenIndex940
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l934
}
position++
l965:
{
position966, tokenIndex966 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l966
}
position++
goto l965
l966:
position, tokenIndex = position966, tokenIndex966
}
}
l940:
add(ruleOffset, position935)
}
return true
l934:
position, tokenIndex = position934, tokenIndex934
return false
},
/* 59 Section <- <([a-z] / [A-Z] / '@')+> */
func() bool {
position967, tokenIndex967 := position, tokenIndex
{
position968 := position
{
position971, tokenIndex971 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l972
}
position++
goto l971
l972:
position, tokenIndex = position971, tokenIndex971
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l973
}
position++
goto l971
l973:
position, tokenIndex = position971, tokenIndex971
if buffer[position] != rune('@') {
goto l967
}
position++
}
l971:
l969:
{
position970, tokenIndex970 := position, tokenIndex
{
position974, tokenIndex974 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l975
}
position++
goto l974
l975:
position, tokenIndex = position974, tokenIndex974
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l976
}
position++
goto l974
l976:
position, tokenIndex = position974, tokenIndex974
if buffer[position] != rune('@') {
goto l970
}
position++
}
l974:
goto l969
l970:
position, tokenIndex = position970, tokenIndex970
}
add(ruleSection, position968)
}
return true
l967:
position, tokenIndex = position967, tokenIndex967
return false
},
/* 60 SegmentRegister <- <('%' ([c-g] / 's') ('s' ':'))> */
func() bool {
position977, tokenIndex977 := position, tokenIndex
{
position978 := position
if buffer[position] != rune('%') {
goto l977
}
position++
{
position979, tokenIndex979 := position, tokenIndex
if c := buffer[position]; c < rune('c') || c > rune('g') {
goto l980
}
position++
goto l979
l980:
position, tokenIndex = position979, tokenIndex979
if buffer[position] != rune('s') {
goto l977
}
position++
}
l979:
if buffer[position] != rune('s') {
goto l977
}
position++
if buffer[position] != rune(':') {
goto l977
}
position++
add(ruleSegmentRegister, position978)
}
return true
l977:
position, tokenIndex = position977, tokenIndex977
return false
},
}
p.rules = _rules
return nil
}