blob: ee8a1080796b8dbf460be5c35fdb35b0e6c18799 [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
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",
"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 [61]func() bool
parse func(rule ...int) error
reset func()
Pretty bool
tokens32
}
func (p *Asm) Parse(rule ...int) error {
return p.parse(rule...)
}
func (p *Asm) Reset() {
p.reset()
}
type textPosition struct {
line, symbol int
}
type textPositionMap map[int]textPosition
func translatePositions(buffer []rune, positions []int) textPositionMap {
length, translations, j, line, symbol := len(positions), make(textPositionMap, len(positions)), 0, 1, 0
sort.Ints(positions)
search:
for i, c := range buffer {
if c == '\n' {
line, symbol = line+1, 0
} else {
symbol++
}
if i == positions[j] {
translations[positions[j]] = textPosition{line, symbol}
for j++; j < length; j++ {
if i != positions[j] {
continue search
}
}
break search
}
}
return translations
}
type parseError struct {
p *Asm
max token32
}
func (e *parseError) Error() string {
tokens, err := []token32{e.max}, "\n"
positions, p := make([]int, 2*len(tokens)), 0
for _, token := range tokens {
positions[p], p = int(token.begin), p+1
positions[p], p = int(token.end), p+1
}
translations := translatePositions(e.p.buffer, positions)
format := "parse error near %v (line %v symbol %v - line %v symbol %v):\n%v\n"
if e.p.Pretty {
format = "parse error near \x1B[34m%v\x1B[m (line %v symbol %v - line %v symbol %v):\n%v\n"
}
for _, token := range tokens {
begin, end := int(token.begin), int(token.end)
err += fmt.Sprintf(format,
rul3s[token.pegRule],
translations[begin].line, translations[begin].symbol,
translations[end].line, translations[end].symbol,
strconv.Quote(string(e.p.buffer[begin:end])))
}
return err
}
func (p *Asm) PrintSyntaxTree() {
if p.Pretty {
p.tokens32.PrettyPrintSyntaxTree(p.Buffer)
} else {
p.tokens32.PrintSyntaxTree(p.Buffer)
}
}
func (p *Asm) WriteSyntaxTree(w io.Writer) {
p.tokens32.WriteSyntaxTree(w, p.Buffer)
}
func (p *Asm) SprintSyntaxTree() string {
var bldr strings.Builder
p.WriteSyntaxTree(&bldr)
return bldr.String()
}
func Pretty(pretty bool) func(*Asm) error {
return func(p *Asm) error {
p.Pretty = pretty
return nil
}
}
func Size(size int) func(*Asm) error {
return func(p *Asm) error {
p.tokens32 = tokens32{tree: make([]token32, 0, size)}
return nil
}
}
func (p *Asm) Init(options ...func(*Asm) error) error {
var (
max token32
position, tokenIndex uint32
buffer []rune
)
for _, option := range options {
err := option(p)
if err != nil {
return err
}
}
p.reset = func() {
max = token32{}
position, tokenIndex = 0, 0
p.buffer = []rune(p.Buffer)
if len(p.buffer) == 0 || p.buffer[len(p.buffer)-1] != endSymbol {
p.buffer = append(p.buffer, endSymbol)
}
buffer = p.buffer
}
p.reset()
_rules := p.rules
tree := p.tokens32
p.parse = func(rule ...int) error {
r := 1
if len(rule) > 0 {
r = rule[0]
}
matches := p.rules[r]()
p.tokens32 = tree
if matches {
p.Trim(tokenIndex)
return nil
}
return &parseError{p, max}
}
add := func(rule pegRule, begin uint32) {
tree.Add(rule, begin, position, tokenIndex)
tokenIndex++
if begin != position && position > max.end {
max = token32{rule, begin, position}
}
}
matchDot := func() bool {
if buffer[position] != endSymbol {
position++
return true
}
return false
}
/*matchChar := func(c byte) bool {
if buffer[position] == c {
position++
return true
}
return false
}*/
/*matchRange := func(lower byte, upper byte) bool {
if c := buffer[position]; c >= lower && c <= upper {
position++
return true
}
return false
}*/
_rules = [...]func() bool{
nil,
/* 0 AsmFile <- <(Statement* !.)> */
func() bool {
position0, tokenIndex0 := position, tokenIndex
{
position1 := position
l2:
{
position3, tokenIndex3 := position, tokenIndex
if !_rules[ruleStatement]() {
goto l3
}
goto l2
l3:
position, tokenIndex = position3, tokenIndex3
}
{
position4, tokenIndex4 := position, tokenIndex
if !matchDot() {
goto l4
}
goto l0
l4:
position, tokenIndex = position4, tokenIndex4
}
add(ruleAsmFile, position1)
}
return true
l0:
position, tokenIndex = position0, tokenIndex0
return false
},
/* 1 Statement <- <(WS? (Label / ((GlobalDirective / LocationDirective / LabelContainingDirective / Instruction / Directive / Comment / ) WS? ((Comment? '\n') / ';'))))> */
func() bool {
position5, tokenIndex5 := position, tokenIndex
{
position6 := position
{
position7, tokenIndex7 := position, tokenIndex
if !_rules[ruleWS]() {
goto l7
}
goto l8
l7:
position, tokenIndex = position7, tokenIndex7
}
l8:
{
position9, tokenIndex9 := position, tokenIndex
if !_rules[ruleLabel]() {
goto l10
}
goto l9
l10:
position, tokenIndex = position9, tokenIndex9
{
position11, tokenIndex11 := position, tokenIndex
if !_rules[ruleGlobalDirective]() {
goto l12
}
goto l11
l12:
position, tokenIndex = position11, tokenIndex11
if !_rules[ruleLocationDirective]() {
goto l13
}
goto l11
l13:
position, tokenIndex = position11, tokenIndex11
if !_rules[ruleLabelContainingDirective]() {
goto l14
}
goto l11
l14:
position, tokenIndex = position11, tokenIndex11
if !_rules[ruleInstruction]() {
goto l15
}
goto l11
l15:
position, tokenIndex = position11, tokenIndex11
if !_rules[ruleDirective]() {
goto l16
}
goto l11
l16:
position, tokenIndex = position11, tokenIndex11
if !_rules[ruleComment]() {
goto l17
}
goto l11
l17:
position, tokenIndex = position11, tokenIndex11
}
l11:
{
position18, tokenIndex18 := position, tokenIndex
if !_rules[ruleWS]() {
goto l18
}
goto l19
l18:
position, tokenIndex = position18, tokenIndex18
}
l19:
{
position20, tokenIndex20 := position, tokenIndex
{
position22, tokenIndex22 := position, tokenIndex
if !_rules[ruleComment]() {
goto l22
}
goto l23
l22:
position, tokenIndex = position22, tokenIndex22
}
l23:
if buffer[position] != rune('\n') {
goto l21
}
position++
goto l20
l21:
position, tokenIndex = position20, tokenIndex20
if buffer[position] != rune(';') {
goto l5
}
position++
}
l20:
}
l9:
add(ruleStatement, position6)
}
return true
l5:
position, tokenIndex = position5, tokenIndex5
return false
},
/* 2 GlobalDirective <- <((('.' ('g' / 'G') ('l' / 'L') ('o' / 'O') ('b' / 'B') ('a' / 'A') ('l' / 'L')) / ('.' ('g' / 'G') ('l' / 'L') ('o' / 'O') ('b' / 'B') ('l' / 'L'))) WS SymbolName)> */
func() bool {
position24, tokenIndex24 := position, tokenIndex
{
position25 := position
{
position26, tokenIndex26 := position, tokenIndex
if buffer[position] != rune('.') {
goto l27
}
position++
{
position28, tokenIndex28 := position, tokenIndex
if buffer[position] != rune('g') {
goto l29
}
position++
goto l28
l29:
position, tokenIndex = position28, tokenIndex28
if buffer[position] != rune('G') {
goto l27
}
position++
}
l28:
{
position30, tokenIndex30 := position, tokenIndex
if buffer[position] != rune('l') {
goto l31
}
position++
goto l30
l31:
position, tokenIndex = position30, tokenIndex30
if buffer[position] != rune('L') {
goto l27
}
position++
}
l30:
{
position32, tokenIndex32 := position, tokenIndex
if buffer[position] != rune('o') {
goto l33
}
position++
goto l32
l33:
position, tokenIndex = position32, tokenIndex32
if buffer[position] != rune('O') {
goto l27
}
position++
}
l32:
{
position34, tokenIndex34 := position, tokenIndex
if buffer[position] != rune('b') {
goto l35
}
position++
goto l34
l35:
position, tokenIndex = position34, tokenIndex34
if buffer[position] != rune('B') {
goto l27
}
position++
}
l34:
{
position36, tokenIndex36 := position, tokenIndex
if buffer[position] != rune('a') {
goto l37
}
position++
goto l36
l37:
position, tokenIndex = position36, tokenIndex36
if buffer[position] != rune('A') {
goto l27
}
position++
}
l36:
{
position38, tokenIndex38 := position, tokenIndex
if buffer[position] != rune('l') {
goto l39
}
position++
goto l38
l39:
position, tokenIndex = position38, tokenIndex38
if buffer[position] != rune('L') {
goto l27
}
position++
}
l38:
goto l26
l27:
position, tokenIndex = position26, tokenIndex26
if buffer[position] != rune('.') {
goto l24
}
position++
{
position40, tokenIndex40 := position, tokenIndex
if buffer[position] != rune('g') {
goto l41
}
position++
goto l40
l41:
position, tokenIndex = position40, tokenIndex40
if buffer[position] != rune('G') {
goto l24
}
position++
}
l40:
{
position42, tokenIndex42 := position, tokenIndex
if buffer[position] != rune('l') {
goto l43
}
position++
goto l42
l43:
position, tokenIndex = position42, tokenIndex42
if buffer[position] != rune('L') {
goto l24
}
position++
}
l42:
{
position44, tokenIndex44 := position, tokenIndex
if buffer[position] != rune('o') {
goto l45
}
position++
goto l44
l45:
position, tokenIndex = position44, tokenIndex44
if buffer[position] != rune('O') {
goto l24
}
position++
}
l44:
{
position46, tokenIndex46 := position, tokenIndex
if buffer[position] != rune('b') {
goto l47
}
position++
goto l46
l47:
position, tokenIndex = position46, tokenIndex46
if buffer[position] != rune('B') {
goto l24
}
position++
}
l46:
{
position48, tokenIndex48 := position, tokenIndex
if buffer[position] != rune('l') {
goto l49
}
position++
goto l48
l49:
position, tokenIndex = position48, tokenIndex48
if buffer[position] != rune('L') {
goto l24
}
position++
}
l48:
}
l26:
if !_rules[ruleWS]() {
goto l24
}
if !_rules[ruleSymbolName]() {
goto l24
}
add(ruleGlobalDirective, position25)
}
return true
l24:
position, tokenIndex = position24, tokenIndex24
return false
},
/* 3 Directive <- <('.' DirectiveName (WS Args)?)> */
func() bool {
position50, tokenIndex50 := position, tokenIndex
{
position51 := position
if buffer[position] != rune('.') {
goto l50
}
position++
if !_rules[ruleDirectiveName]() {
goto l50
}
{
position52, tokenIndex52 := position, tokenIndex
if !_rules[ruleWS]() {
goto l52
}
if !_rules[ruleArgs]() {
goto l52
}
goto l53
l52:
position, tokenIndex = position52, tokenIndex52
}
l53:
add(ruleDirective, position51)
}
return true
l50:
position, tokenIndex = position50, tokenIndex50
return false
},
/* 4 DirectiveName <- <([a-z] / [A-Z] / ([0-9] / [0-9]) / '_')+> */
func() bool {
position54, tokenIndex54 := position, tokenIndex
{
position55 := position
{
position58, tokenIndex58 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l59
}
position++
goto l58
l59:
position, tokenIndex = position58, tokenIndex58
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l60
}
position++
goto l58
l60:
position, tokenIndex = position58, tokenIndex58
{
position62, tokenIndex62 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l63
}
position++
goto l62
l63:
position, tokenIndex = position62, tokenIndex62
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l61
}
position++
}
l62:
goto l58
l61:
position, tokenIndex = position58, tokenIndex58
if buffer[position] != rune('_') {
goto l54
}
position++
}
l58:
l56:
{
position57, tokenIndex57 := position, tokenIndex
{
position64, tokenIndex64 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l65
}
position++
goto l64
l65:
position, tokenIndex = position64, tokenIndex64
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l66
}
position++
goto l64
l66:
position, tokenIndex = position64, tokenIndex64
{
position68, tokenIndex68 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l69
}
position++
goto l68
l69:
position, tokenIndex = position68, tokenIndex68
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l67
}
position++
}
l68:
goto l64
l67:
position, tokenIndex = position64, tokenIndex64
if buffer[position] != rune('_') {
goto l57
}
position++
}
l64:
goto l56
l57:
position, tokenIndex = position57, tokenIndex57
}
add(ruleDirectiveName, position55)
}
return true
l54:
position, tokenIndex = position54, tokenIndex54
return false
},
/* 5 LocationDirective <- <(FileDirective / LocDirective)> */
func() bool {
position70, tokenIndex70 := position, tokenIndex
{
position71 := position
{
position72, tokenIndex72 := position, tokenIndex
if !_rules[ruleFileDirective]() {
goto l73
}
goto l72
l73:
position, tokenIndex = position72, tokenIndex72
if !_rules[ruleLocDirective]() {
goto l70
}
}
l72:
add(ruleLocationDirective, position71)
}
return true
l70:
position, tokenIndex = position70, tokenIndex70
return false
},
/* 6 FileDirective <- <('.' ('f' / 'F') ('i' / 'I') ('l' / 'L') ('e' / 'E') WS (!('#' / '\n') .)+)> */
func() bool {
position74, tokenIndex74 := position, tokenIndex
{
position75 := position
if buffer[position] != rune('.') {
goto l74
}
position++
{
position76, tokenIndex76 := position, tokenIndex
if buffer[position] != rune('f') {
goto l77
}
position++
goto l76
l77:
position, tokenIndex = position76, tokenIndex76
if buffer[position] != rune('F') {
goto l74
}
position++
}
l76:
{
position78, tokenIndex78 := position, tokenIndex
if buffer[position] != rune('i') {
goto l79
}
position++
goto l78
l79:
position, tokenIndex = position78, tokenIndex78
if buffer[position] != rune('I') {
goto l74
}
position++
}
l78:
{
position80, tokenIndex80 := position, tokenIndex
if buffer[position] != rune('l') {
goto l81
}
position++
goto l80
l81:
position, tokenIndex = position80, tokenIndex80
if buffer[position] != rune('L') {
goto l74
}
position++
}
l80:
{
position82, tokenIndex82 := position, tokenIndex
if buffer[position] != rune('e') {
goto l83
}
position++
goto l82
l83:
position, tokenIndex = position82, tokenIndex82
if buffer[position] != rune('E') {
goto l74
}
position++
}
l82:
if !_rules[ruleWS]() {
goto l74
}
{
position86, tokenIndex86 := position, tokenIndex
{
position87, tokenIndex87 := position, tokenIndex
if buffer[position] != rune('#') {
goto l88
}
position++
goto l87
l88:
position, tokenIndex = position87, tokenIndex87
if buffer[position] != rune('\n') {
goto l86
}
position++
}
l87:
goto l74
l86:
position, tokenIndex = position86, tokenIndex86
}
if !matchDot() {
goto l74
}
l84:
{
position85, tokenIndex85 := position, tokenIndex
{
position89, tokenIndex89 := position, tokenIndex
{
position90, tokenIndex90 := position, tokenIndex
if buffer[position] != rune('#') {
goto l91
}
position++
goto l90
l91:
position, tokenIndex = position90, tokenIndex90
if buffer[position] != rune('\n') {
goto l89
}
position++
}
l90:
goto l85
l89:
position, tokenIndex = position89, tokenIndex89
}
if !matchDot() {
goto l85
}
goto l84
l85:
position, tokenIndex = position85, tokenIndex85
}
add(ruleFileDirective, position75)
}
return true
l74:
position, tokenIndex = position74, tokenIndex74
return false
},
/* 7 LocDirective <- <('.' ('l' / 'L') ('o' / 'O') ('c' / 'C') WS (!('#' / '/' / '\n') .)+)> */
func() bool {
position92, tokenIndex92 := position, tokenIndex
{
position93 := position
if buffer[position] != rune('.') {
goto l92
}
position++
{
position94, tokenIndex94 := position, tokenIndex
if buffer[position] != rune('l') {
goto l95
}
position++
goto l94
l95:
position, tokenIndex = position94, tokenIndex94
if buffer[position] != rune('L') {
goto l92
}
position++
}
l94:
{
position96, tokenIndex96 := position, tokenIndex
if buffer[position] != rune('o') {
goto l97
}
position++
goto l96
l97:
position, tokenIndex = position96, tokenIndex96
if buffer[position] != rune('O') {
goto l92
}
position++
}
l96:
{
position98, tokenIndex98 := position, tokenIndex
if buffer[position] != rune('c') {
goto l99
}
position++
goto l98
l99:
position, tokenIndex = position98, tokenIndex98
if buffer[position] != rune('C') {
goto l92
}
position++
}
l98:
if !_rules[ruleWS]() {
goto l92
}
{
position102, tokenIndex102 := position, tokenIndex
{
position103, tokenIndex103 := position, tokenIndex
if buffer[position] != rune('#') {
goto l104
}
position++
goto l103
l104:
position, tokenIndex = position103, tokenIndex103
if buffer[position] != rune('/') {
goto l105
}
position++
goto l103
l105:
position, tokenIndex = position103, tokenIndex103
if buffer[position] != rune('\n') {
goto l102
}
position++
}
l103:
goto l92
l102:
position, tokenIndex = position102, tokenIndex102
}
if !matchDot() {
goto l92
}
l100:
{
position101, tokenIndex101 := position, tokenIndex
{
position106, tokenIndex106 := position, tokenIndex
{
position107, tokenIndex107 := position, tokenIndex
if buffer[position] != rune('#') {
goto l108
}
position++
goto l107
l108:
position, tokenIndex = position107, tokenIndex107
if buffer[position] != rune('/') {
goto l109
}
position++
goto l107
l109:
position, tokenIndex = position107, tokenIndex107
if buffer[position] != rune('\n') {
goto l106
}
position++
}
l107:
goto l101
l106:
position, tokenIndex = position106, tokenIndex106
}
if !matchDot() {
goto l101
}
goto l100
l101:
position, tokenIndex = position101, tokenIndex101
}
add(ruleLocDirective, position93)
}
return true
l92:
position, tokenIndex = position92, tokenIndex92
return false
},
/* 8 Args <- <(Arg (WS? ',' WS? Arg)*)> */
func() bool {
position110, tokenIndex110 := position, tokenIndex
{
position111 := position
if !_rules[ruleArg]() {
goto l110
}
l112:
{
position113, tokenIndex113 := position, tokenIndex
{
position114, tokenIndex114 := position, tokenIndex
if !_rules[ruleWS]() {
goto l114
}
goto l115
l114:
position, tokenIndex = position114, tokenIndex114
}
l115:
if buffer[position] != rune(',') {
goto l113
}
position++
{
position116, tokenIndex116 := position, tokenIndex
if !_rules[ruleWS]() {
goto l116
}
goto l117
l116:
position, tokenIndex = position116, tokenIndex116
}
l117:
if !_rules[ruleArg]() {
goto l113
}
goto l112
l113:
position, tokenIndex = position113, tokenIndex113
}
add(ruleArgs, position111)
}
return true
l110:
position, tokenIndex = position110, tokenIndex110
return false
},
/* 9 Arg <- <(QuotedArg / ([0-9] / [0-9] / ([a-z] / [A-Z]) / '%' / '+' / '-' / '*' / '_' / '@' / '.')*)> */
func() bool {
{
position119 := position
{
position120, tokenIndex120 := position, tokenIndex
if !_rules[ruleQuotedArg]() {
goto l121
}
goto l120
l121:
position, tokenIndex = position120, tokenIndex120
l122:
{
position123, tokenIndex123 := position, tokenIndex
{
position124, tokenIndex124 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l125
}
position++
goto l124
l125:
position, tokenIndex = position124, tokenIndex124
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l126
}
position++
goto l124
l126:
position, tokenIndex = position124, tokenIndex124
{
position128, tokenIndex128 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l129
}
position++
goto l128
l129:
position, tokenIndex = position128, tokenIndex128
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l127
}
position++
}
l128:
goto l124
l127:
position, tokenIndex = position124, tokenIndex124
if buffer[position] != rune('%') {
goto l130
}
position++
goto l124
l130:
position, tokenIndex = position124, tokenIndex124
if buffer[position] != rune('+') {
goto l131
}
position++
goto l124
l131:
position, tokenIndex = position124, tokenIndex124
if buffer[position] != rune('-') {
goto l132
}
position++
goto l124
l132:
position, tokenIndex = position124, tokenIndex124
if buffer[position] != rune('*') {
goto l133
}
position++
goto l124
l133:
position, tokenIndex = position124, tokenIndex124
if buffer[position] != rune('_') {
goto l134
}
position++
goto l124
l134:
position, tokenIndex = position124, tokenIndex124
if buffer[position] != rune('@') {
goto l135
}
position++
goto l124
l135:
position, tokenIndex = position124, tokenIndex124
if buffer[position] != rune('.') {
goto l123
}
position++
}
l124:
goto l122
l123:
position, tokenIndex = position123, tokenIndex123
}
}
l120:
add(ruleArg, position119)
}
return true
},
/* 10 QuotedArg <- <('"' QuotedText '"')> */
func() bool {
position136, tokenIndex136 := position, tokenIndex
{
position137 := position
if buffer[position] != rune('"') {
goto l136
}
position++
if !_rules[ruleQuotedText]() {
goto l136
}
if buffer[position] != rune('"') {
goto l136
}
position++
add(ruleQuotedArg, position137)
}
return true
l136:
position, tokenIndex = position136, tokenIndex136
return false
},
/* 11 QuotedText <- <(EscapedChar / (!'"' .))*> */
func() bool {
{
position139 := position
l140:
{
position141, tokenIndex141 := position, tokenIndex
{
position142, tokenIndex142 := position, tokenIndex
if !_rules[ruleEscapedChar]() {
goto l143
}
goto l142
l143:
position, tokenIndex = position142, tokenIndex142
{
position144, tokenIndex144 := position, tokenIndex
if buffer[position] != rune('"') {
goto l144
}
position++
goto l141
l144:
position, tokenIndex = position144, tokenIndex144
}
if !matchDot() {
goto l141
}
}
l142:
goto l140
l141:
position, tokenIndex = position141, tokenIndex141
}
add(ruleQuotedText, position139)
}
return true
},
/* 12 LabelContainingDirective <- <(LabelContainingDirectiveName WS SymbolArgs)> */
func() bool {
position145, tokenIndex145 := position, tokenIndex
{
position146 := position
if !_rules[ruleLabelContainingDirectiveName]() {
goto l145
}
if !_rules[ruleWS]() {
goto l145
}
if !_rules[ruleSymbolArgs]() {
goto l145
}
add(ruleLabelContainingDirective, position146)
}
return true
l145:
position, tokenIndex = position145, tokenIndex145
return false
},
/* 13 LabelContainingDirectiveName <- <(('.' ('x' / 'X') ('w' / 'W') ('o' / 'O') ('r' / 'R') ('d' / 'D')) / ('.' ('w' / 'W') ('o' / 'O') ('r' / 'R') ('d' / 'D')) / ('.' ('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 {
position147, tokenIndex147 := position, tokenIndex
{
position148 := position
{
position149, tokenIndex149 := position, tokenIndex
if buffer[position] != rune('.') {
goto l150
}
position++
{
position151, tokenIndex151 := position, tokenIndex
if buffer[position] != rune('x') {
goto l152
}
position++
goto l151
l152:
position, tokenIndex = position151, tokenIndex151
if buffer[position] != rune('X') {
goto l150
}
position++
}
l151:
{
position153, tokenIndex153 := position, tokenIndex
if buffer[position] != rune('w') {
goto l154
}
position++
goto l153
l154:
position, tokenIndex = position153, tokenIndex153
if buffer[position] != rune('W') {
goto l150
}
position++
}
l153:
{
position155, tokenIndex155 := position, tokenIndex
if buffer[position] != rune('o') {
goto l156
}
position++
goto l155
l156:
position, tokenIndex = position155, tokenIndex155
if buffer[position] != rune('O') {
goto l150
}
position++
}
l155:
{
position157, tokenIndex157 := position, tokenIndex
if buffer[position] != rune('r') {
goto l158
}
position++
goto l157
l158:
position, tokenIndex = position157, tokenIndex157
if buffer[position] != rune('R') {
goto l150
}
position++
}
l157:
{
position159, tokenIndex159 := position, tokenIndex
if buffer[position] != rune('d') {
goto l160
}
position++
goto l159
l160:
position, tokenIndex = position159, tokenIndex159
if buffer[position] != rune('D') {
goto l150
}
position++
}
l159:
goto l149
l150:
position, tokenIndex = position149, tokenIndex149
if buffer[position] != rune('.') {
goto l161
}
position++
{
position162, tokenIndex162 := position, tokenIndex
if buffer[position] != rune('w') {
goto l163
}
position++
goto l162
l163:
position, tokenIndex = position162, tokenIndex162
if buffer[position] != rune('W') {
goto l161
}
position++
}
l162:
{
position164, tokenIndex164 := position, tokenIndex
if buffer[position] != rune('o') {
goto l165
}
position++
goto l164
l165:
position, tokenIndex = position164, tokenIndex164
if buffer[position] != rune('O') {
goto l161
}
position++
}
l164:
{
position166, tokenIndex166 := position, tokenIndex
if buffer[position] != rune('r') {
goto l167
}
position++
goto l166
l167:
position, tokenIndex = position166, tokenIndex166
if buffer[position] != rune('R') {
goto l161
}
position++
}
l166:
{
position168, tokenIndex168 := position, tokenIndex
if buffer[position] != rune('d') {
goto l169
}
position++
goto l168
l169:
position, tokenIndex = position168, tokenIndex168
if buffer[position] != rune('D') {
goto l161
}
position++
}
l168:
goto l149
l161:
position, tokenIndex = position149, tokenIndex149
if buffer[position] != rune('.') {
goto l170
}
position++
{
position171, tokenIndex171 := position, tokenIndex
if buffer[position] != rune('h') {
goto l172
}
position++
goto l171
l172:
position, tokenIndex = position171, tokenIndex171
if buffer[position] != rune('H') {
goto l170
}
position++
}
l171:
{
position173, tokenIndex173 := position, tokenIndex
if buffer[position] != rune('w') {
goto l174
}
position++
goto l173
l174:
position, tokenIndex = position173, tokenIndex173
if buffer[position] != rune('W') {
goto l170
}
position++
}
l173:
{
position175, tokenIndex175 := position, tokenIndex
if buffer[position] != rune('o') {
goto l176
}
position++
goto l175
l176:
position, tokenIndex = position175, tokenIndex175
if buffer[position] != rune('O') {
goto l170
}
position++
}
l175:
{
position177, tokenIndex177 := position, tokenIndex
if buffer[position] != rune('r') {
goto l178
}
position++
goto l177
l178:
position, tokenIndex = position177, tokenIndex177
if buffer[position] != rune('R') {
goto l170
}
position++
}
l177:
{
position179, tokenIndex179 := position, tokenIndex
if buffer[position] != rune('d') {
goto l180
}
position++
goto l179
l180:
position, tokenIndex = position179, tokenIndex179
if buffer[position] != rune('D') {
goto l170
}
position++
}
l179:
goto l149
l170:
position, tokenIndex = position149, tokenIndex149
if buffer[position] != rune('.') {
goto l181
}
position++
{
position182, tokenIndex182 := position, tokenIndex
if buffer[position] != rune('l') {
goto l183
}
position++
goto l182
l183:
position, tokenIndex = position182, tokenIndex182
if buffer[position] != rune('L') {
goto l181
}
position++
}
l182:
{
position184, tokenIndex184 := position, tokenIndex
if buffer[position] != rune('o') {
goto l185
}
position++
goto l184
l185:
position, tokenIndex = position184, tokenIndex184
if buffer[position] != rune('O') {
goto l181
}
position++
}
l184:
{
position186, tokenIndex186 := position, tokenIndex
if buffer[position] != rune('n') {
goto l187
}
position++
goto l186
l187:
position, tokenIndex = position186, tokenIndex186
if buffer[position] != rune('N') {
goto l181
}
position++
}
l186:
{
position188, tokenIndex188 := position, tokenIndex
if buffer[position] != rune('g') {
goto l189
}
position++
goto l188
l189:
position, tokenIndex = position188, tokenIndex188
if buffer[position] != rune('G') {
goto l181
}
position++
}
l188:
goto l149
l181:
position, tokenIndex = position149, tokenIndex149
if buffer[position] != rune('.') {
goto l190
}
position++
{
position191, tokenIndex191 := position, tokenIndex
if buffer[position] != rune('s') {
goto l192
}
position++
goto l191
l192:
position, tokenIndex = position191, tokenIndex191
if buffer[position] != rune('S') {
goto l190
}
position++
}
l191:
{
position193, tokenIndex193 := position, tokenIndex
if buffer[position] != rune('e') {
goto l194
}
position++
goto l193
l194:
position, tokenIndex = position193, tokenIndex193
if buffer[position] != rune('E') {
goto l190
}
position++
}
l193:
{
position195, tokenIndex195 := position, tokenIndex
if buffer[position] != rune('t') {
goto l196
}
position++
goto l195
l196:
position, tokenIndex = position195, tokenIndex195
if buffer[position] != rune('T') {
goto l190
}
position++
}
l195:
goto l149
l190:
position, tokenIndex = position149, tokenIndex149
if buffer[position] != rune('.') {
goto l197
}
position++
{
position198, tokenIndex198 := position, tokenIndex
if buffer[position] != rune('b') {
goto l199
}
position++
goto l198
l199:
position, tokenIndex = position198, tokenIndex198
if buffer[position] != rune('B') {
goto l197
}
position++
}
l198:
{
position200, tokenIndex200 := position, tokenIndex
if buffer[position] != rune('y') {
goto l201
}
position++
goto l200
l201:
position, tokenIndex = position200, tokenIndex200
if buffer[position] != rune('Y') {
goto l197
}
position++
}
l200:
{
position202, tokenIndex202 := position, tokenIndex
if buffer[position] != rune('t') {
goto l203
}
position++
goto l202
l203:
position, tokenIndex = position202, tokenIndex202
if buffer[position] != rune('T') {
goto l197
}
position++
}
l202:
{
position204, tokenIndex204 := position, tokenIndex
if buffer[position] != rune('e') {
goto l205
}
position++
goto l204
l205:
position, tokenIndex = position204, tokenIndex204
if buffer[position] != rune('E') {
goto l197
}
position++
}
l204:
goto l149
l197:
position, tokenIndex = position149, tokenIndex149
if buffer[position] != rune('.') {
goto l206
}
position++
if buffer[position] != rune('8') {
goto l206
}
position++
{
position207, tokenIndex207 := position, tokenIndex
if buffer[position] != rune('b') {
goto l208
}
position++
goto l207
l208:
position, tokenIndex = position207, tokenIndex207
if buffer[position] != rune('B') {
goto l206
}
position++
}
l207:
{
position209, tokenIndex209 := position, tokenIndex
if buffer[position] != rune('y') {
goto l210
}
position++
goto l209
l210:
position, tokenIndex = position209, tokenIndex209
if buffer[position] != rune('Y') {
goto l206
}
position++
}
l209:
{
position211, tokenIndex211 := position, tokenIndex
if buffer[position] != rune('t') {
goto l212
}
position++
goto l211
l212:
position, tokenIndex = position211, tokenIndex211
if buffer[position] != rune('T') {
goto l206
}
position++
}
l211:
{
position213, tokenIndex213 := position, tokenIndex
if buffer[position] != rune('e') {
goto l214
}
position++
goto l213
l214:
position, tokenIndex = position213, tokenIndex213
if buffer[position] != rune('E') {
goto l206
}
position++
}
l213:
goto l149
l206:
position, tokenIndex = position149, tokenIndex149
if buffer[position] != rune('.') {
goto l215
}
position++
if buffer[position] != rune('4') {
goto l215
}
position++
{
position216, tokenIndex216 := position, tokenIndex
if buffer[position] != rune('b') {
goto l217
}
position++
goto l216
l217:
position, tokenIndex = position216, tokenIndex216
if buffer[position] != rune('B') {
goto l215
}
position++
}
l216:
{
position218, tokenIndex218 := position, tokenIndex
if buffer[position] != rune('y') {
goto l219
}
position++
goto l218
l219:
position, tokenIndex = position218, tokenIndex218
if buffer[position] != rune('Y') {
goto l215
}
position++
}
l218:
{
position220, tokenIndex220 := position, tokenIndex
if buffer[position] != rune('t') {
goto l221
}
position++
goto l220
l221:
position, tokenIndex = position220, tokenIndex220
if buffer[position] != rune('T') {
goto l215
}
position++
}
l220:
{
position222, tokenIndex222 := position, tokenIndex
if buffer[position] != rune('e') {
goto l223
}
position++
goto l222
l223:
position, tokenIndex = position222, tokenIndex222
if buffer[position] != rune('E') {
goto l215
}
position++
}
l222:
goto l149
l215:
position, tokenIndex = position149, tokenIndex149
if buffer[position] != rune('.') {
goto l224
}
position++
{
position225, tokenIndex225 := position, tokenIndex
if buffer[position] != rune('q') {
goto l226
}
position++
goto l225
l226:
position, tokenIndex = position225, tokenIndex225
if buffer[position] != rune('Q') {
goto l224
}
position++
}
l225:
{
position227, tokenIndex227 := position, tokenIndex
if buffer[position] != rune('u') {
goto l228
}
position++
goto l227
l228:
position, tokenIndex = position227, tokenIndex227
if buffer[position] != rune('U') {
goto l224
}
position++
}
l227:
{
position229, tokenIndex229 := position, tokenIndex
if buffer[position] != rune('a') {
goto l230
}
position++
goto l229
l230:
position, tokenIndex = position229, tokenIndex229
if buffer[position] != rune('A') {
goto l224
}
position++
}
l229:
{
position231, tokenIndex231 := position, tokenIndex
if buffer[position] != rune('d') {
goto l232
}
position++
goto l231
l232:
position, tokenIndex = position231, tokenIndex231
if buffer[position] != rune('D') {
goto l224
}
position++
}
l231:
goto l149
l224:
position, tokenIndex = position149, tokenIndex149
if buffer[position] != rune('.') {
goto l233
}
position++
{
position234, tokenIndex234 := position, tokenIndex
if buffer[position] != rune('t') {
goto l235
}
position++
goto l234
l235:
position, tokenIndex = position234, tokenIndex234
if buffer[position] != rune('T') {
goto l233
}
position++
}
l234:
{
position236, tokenIndex236 := position, tokenIndex
if buffer[position] != rune('c') {
goto l237
}
position++
goto l236
l237:
position, tokenIndex = position236, tokenIndex236
if buffer[position] != rune('C') {
goto l233
}
position++
}
l236:
goto l149
l233:
position, tokenIndex = position149, tokenIndex149
if buffer[position] != rune('.') {
goto l238
}
position++
{
position239, tokenIndex239 := position, tokenIndex
if buffer[position] != rune('l') {
goto l240
}
position++
goto l239
l240:
position, tokenIndex = position239, tokenIndex239
if buffer[position] != rune('L') {
goto l238
}
position++
}
l239:
{
position241, tokenIndex241 := position, tokenIndex
if buffer[position] != rune('o') {
goto l242
}
position++
goto l241
l242:
position, tokenIndex = position241, tokenIndex241
if buffer[position] != rune('O') {
goto l238
}
position++
}
l241:
{
position243, tokenIndex243 := position, tokenIndex
if buffer[position] != rune('c') {
goto l244
}
position++
goto l243
l244:
position, tokenIndex = position243, tokenIndex243
if buffer[position] != rune('C') {
goto l238
}
position++
}
l243:
{
position245, tokenIndex245 := position, tokenIndex
if buffer[position] != rune('a') {
goto l246
}
position++
goto l245
l246:
position, tokenIndex = position245, tokenIndex245
if buffer[position] != rune('A') {
goto l238
}
position++
}
l245:
{
position247, tokenIndex247 := position, tokenIndex
if buffer[position] != rune('l') {
goto l248
}
position++
goto l247
l248:
position, tokenIndex = position247, tokenIndex247
if buffer[position] != rune('L') {
goto l238
}
position++
}
l247:
{
position249, tokenIndex249 := position, tokenIndex
if buffer[position] != rune('e') {
goto l250
}
position++
goto l249
l250:
position, tokenIndex = position249, tokenIndex249
if buffer[position] != rune('E') {
goto l238
}
position++
}
l249:
{
position251, tokenIndex251 := position, tokenIndex
if buffer[position] != rune('n') {
goto l252
}
position++
goto l251
l252:
position, tokenIndex = position251, tokenIndex251
if buffer[position] != rune('N') {
goto l238
}
position++
}
l251:
{
position253, tokenIndex253 := position, tokenIndex
if buffer[position] != rune('t') {
goto l254
}
position++
goto l253
l254:
position, tokenIndex = position253, tokenIndex253
if buffer[position] != rune('T') {
goto l238
}
position++
}
l253:
{
position255, tokenIndex255 := position, tokenIndex
if buffer[position] != rune('r') {
goto l256
}
position++
goto l255
l256:
position, tokenIndex = position255, tokenIndex255
if buffer[position] != rune('R') {
goto l238
}
position++
}
l255:
{
position257, tokenIndex257 := position, tokenIndex
if buffer[position] != rune('y') {
goto l258
}
position++
goto l257
l258:
position, tokenIndex = position257, tokenIndex257
if buffer[position] != rune('Y') {
goto l238
}
position++
}
l257:
goto l149
l238:
position, tokenIndex = position149, tokenIndex149
if buffer[position] != rune('.') {
goto l259
}
position++
{
position260, tokenIndex260 := position, tokenIndex
if buffer[position] != rune('s') {
goto l261
}
position++
goto l260
l261:
position, tokenIndex = position260, tokenIndex260
if buffer[position] != rune('S') {
goto l259
}
position++
}
l260:
{
position262, tokenIndex262 := position, tokenIndex
if buffer[position] != rune('i') {
goto l263
}
position++
goto l262
l263:
position, tokenIndex = position262, tokenIndex262
if buffer[position] != rune('I') {
goto l259
}
position++
}
l262:
{
position264, tokenIndex264 := position, tokenIndex
if buffer[position] != rune('z') {
goto l265
}
position++
goto l264
l265:
position, tokenIndex = position264, tokenIndex264
if buffer[position] != rune('Z') {
goto l259
}
position++
}
l264:
{
position266, tokenIndex266 := position, tokenIndex
if buffer[position] != rune('e') {
goto l267
}
position++
goto l266
l267:
position, tokenIndex = position266, tokenIndex266
if buffer[position] != rune('E') {
goto l259
}
position++
}
l266:
goto l149
l259:
position, tokenIndex = position149, tokenIndex149
if buffer[position] != rune('.') {
goto l268
}
position++
{
position269, tokenIndex269 := position, tokenIndex
if buffer[position] != rune('t') {
goto l270
}
position++
goto l269
l270:
position, tokenIndex = position269, tokenIndex269
if buffer[position] != rune('T') {
goto l268
}
position++
}
l269:
{
position271, tokenIndex271 := position, tokenIndex
if buffer[position] != rune('y') {
goto l272
}
position++
goto l271
l272:
position, tokenIndex = position271, tokenIndex271
if buffer[position] != rune('Y') {
goto l268
}
position++
}
l271:
{
position273, tokenIndex273 := position, tokenIndex
if buffer[position] != rune('p') {
goto l274
}
position++
goto l273
l274:
position, tokenIndex = position273, tokenIndex273
if buffer[position] != rune('P') {
goto l268
}
position++
}
l273:
{
position275, tokenIndex275 := position, tokenIndex
if buffer[position] != rune('e') {
goto l276
}
position++
goto l275
l276:
position, tokenIndex = position275, tokenIndex275
if buffer[position] != rune('E') {
goto l268
}
position++
}
l275:
goto l149
l268:
position, tokenIndex = position149, tokenIndex149
if buffer[position] != rune('.') {
goto l277
}
position++
{
position278, tokenIndex278 := position, tokenIndex
if buffer[position] != rune('u') {
goto l279
}
position++
goto l278
l279:
position, tokenIndex = position278, tokenIndex278
if buffer[position] != rune('U') {
goto l277
}
position++
}
l278:
{
position280, tokenIndex280 := position, tokenIndex
if buffer[position] != rune('l') {
goto l281
}
position++
goto l280
l281:
position, tokenIndex = position280, tokenIndex280
if buffer[position] != rune('L') {
goto l277
}
position++
}
l280:
{
position282, tokenIndex282 := position, tokenIndex
if buffer[position] != rune('e') {
goto l283
}
position++
goto l282
l283:
position, tokenIndex = position282, tokenIndex282
if buffer[position] != rune('E') {
goto l277
}
position++
}
l282:
{
position284, tokenIndex284 := position, tokenIndex
if buffer[position] != rune('b') {
goto l285
}
position++
goto l284
l285:
position, tokenIndex = position284, tokenIndex284
if buffer[position] != rune('B') {
goto l277
}
position++
}
l284:
if buffer[position] != rune('1') {
goto l277
}
position++
if buffer[position] != rune('2') {
goto l277
}
position++
if buffer[position] != rune('8') {
goto l277
}
position++
goto l149
l277:
position, tokenIndex = position149, tokenIndex149
if buffer[position] != rune('.') {
goto l147
}
position++
{
position286, tokenIndex286 := position, tokenIndex
if buffer[position] != rune('s') {
goto l287
}
position++
goto l286
l287:
position, tokenIndex = position286, tokenIndex286
if buffer[position] != rune('S') {
goto l147
}
position++
}
l286:
{
position288, tokenIndex288 := position, tokenIndex
if buffer[position] != rune('l') {
goto l289
}
position++
goto l288
l289:
position, tokenIndex = position288, tokenIndex288
if buffer[position] != rune('L') {
goto l147
}
position++
}
l288:
{
position290, tokenIndex290 := position, tokenIndex
if buffer[position] != rune('e') {
goto l291
}
position++
goto l290
l291:
position, tokenIndex = position290, tokenIndex290
if buffer[position] != rune('E') {
goto l147
}
position++
}
l290:
{
position292, tokenIndex292 := position, tokenIndex
if buffer[position] != rune('b') {
goto l293
}
position++
goto l292
l293:
position, tokenIndex = position292, tokenIndex292
if buffer[position] != rune('B') {
goto l147
}
position++
}
l292:
if buffer[position] != rune('1') {
goto l147
}
position++
if buffer[position] != rune('2') {
goto l147
}
position++
if buffer[position] != rune('8') {
goto l147
}
position++
}
l149:
add(ruleLabelContainingDirectiveName, position148)
}
return true
l147:
position, tokenIndex = position147, tokenIndex147
return false
},
/* 14 SymbolArgs <- <(SymbolArg (WS? ',' WS? SymbolArg)*)> */
func() bool {
position294, tokenIndex294 := position, tokenIndex
{
position295 := position
if !_rules[ruleSymbolArg]() {
goto l294
}
l296:
{
position297, tokenIndex297 := position, tokenIndex
{
position298, tokenIndex298 := position, tokenIndex
if !_rules[ruleWS]() {
goto l298
}
goto l299
l298:
position, tokenIndex = position298, tokenIndex298
}
l299:
if buffer[position] != rune(',') {
goto l297
}
position++
{
position300, tokenIndex300 := position, tokenIndex
if !_rules[ruleWS]() {
goto l300
}
goto l301
l300:
position, tokenIndex = position300, tokenIndex300
}
l301:
if !_rules[ruleSymbolArg]() {
goto l297
}
goto l296
l297:
position, tokenIndex = position297, tokenIndex297
}
add(ruleSymbolArgs, position295)
}
return true
l294:
position, tokenIndex = position294, tokenIndex294
return false
},
/* 15 SymbolArg <- <SymbolExpr> */
func() bool {
position302, tokenIndex302 := position, tokenIndex
{
position303 := position
if !_rules[ruleSymbolExpr]() {
goto l302
}
add(ruleSymbolArg, position303)
}
return true
l302:
position, tokenIndex = position302, tokenIndex302
return false
},
/* 16 SymbolExpr <- <(SymbolAtom (WS? SymbolOperator WS? SymbolExpr)?)> */
func() bool {
position304, tokenIndex304 := position, tokenIndex
{
position305 := position
if !_rules[ruleSymbolAtom]() {
goto l304
}
{
position306, tokenIndex306 := position, tokenIndex
{
position308, tokenIndex308 := position, tokenIndex
if !_rules[ruleWS]() {
goto l308
}
goto l309
l308:
position, tokenIndex = position308, tokenIndex308
}
l309:
if !_rules[ruleSymbolOperator]() {
goto l306
}
{
position310, tokenIndex310 := position, tokenIndex
if !_rules[ruleWS]() {
goto l310
}
goto l311
l310:
position, tokenIndex = position310, tokenIndex310
}
l311:
if !_rules[ruleSymbolExpr]() {
goto l306
}
goto l307
l306:
position, tokenIndex = position306, tokenIndex306
}
l307:
add(ruleSymbolExpr, position305)
}
return true
l304:
position, tokenIndex = position304, tokenIndex304
return false
},
/* 17 SymbolAtom <- <(LocalLabelRef / Offset / SymbolType / (LocalSymbol TCMarker?) / (SymbolName Offset) / (SymbolName TCMarker?) / Dot / (OpenParen WS? SymbolExpr WS? CloseParen))> */
func() bool {
position312, tokenIndex312 := position, tokenIndex
{
position313 := position
{
position314, tokenIndex314 := position, tokenIndex
if !_rules[ruleLocalLabelRef]() {
goto l315
}
goto l314
l315:
position, tokenIndex = position314, tokenIndex314
if !_rules[ruleOffset]() {
goto l316
}
goto l314
l316:
position, tokenIndex = position314, tokenIndex314
if !_rules[ruleSymbolType]() {
goto l317
}
goto l314
l317:
position, tokenIndex = position314, tokenIndex314
if !_rules[ruleLocalSymbol]() {
goto l318
}
{
position319, tokenIndex319 := position, tokenIndex
if !_rules[ruleTCMarker]() {
goto l319
}
goto l320
l319:
position, tokenIndex = position319, tokenIndex319
}
l320:
goto l314
l318:
position, tokenIndex = position314, tokenIndex314
if !_rules[ruleSymbolName]() {
goto l321
}
if !_rules[ruleOffset]() {
goto l321
}
goto l314
l321:
position, tokenIndex = position314, tokenIndex314
if !_rules[ruleSymbolName]() {
goto l322
}
{
position323, tokenIndex323 := position, tokenIndex
if !_rules[ruleTCMarker]() {
goto l323
}
goto l324
l323:
position, tokenIndex = position323, tokenIndex323
}
l324:
goto l314
l322:
position, tokenIndex = position314, tokenIndex314
if !_rules[ruleDot]() {
goto l325
}
goto l314
l325:
position, tokenIndex = position314, tokenIndex314
if !_rules[ruleOpenParen]() {
goto l312
}
{
position326, tokenIndex326 := position, tokenIndex
if !_rules[ruleWS]() {
goto l326
}
goto l327
l326:
position, tokenIndex = position326, tokenIndex326
}
l327:
if !_rules[ruleSymbolExpr]() {
goto l312
}
{
position328, tokenIndex328 := position, tokenIndex
if !_rules[ruleWS]() {
goto l328
}
goto l329
l328:
position, tokenIndex = position328, tokenIndex328
}
l329:
if !_rules[ruleCloseParen]() {
goto l312
}
}
l314:
add(ruleSymbolAtom, position313)
}
return true
l312:
position, tokenIndex = position312, tokenIndex312
return false
},
/* 18 SymbolOperator <- <('+' / '-' / '|' / ('<' '<') / ('>' '>'))> */
func() bool {
position330, tokenIndex330 := position, tokenIndex
{
position331 := position
{
position332, tokenIndex332 := position, tokenIndex
if buffer[position] != rune('+') {
goto l333
}
position++
goto l332
l333:
position, tokenIndex = position332, tokenIndex332
if buffer[position] != rune('-') {
goto l334
}
position++
goto l332
l334:
position, tokenIndex = position332, tokenIndex332
if buffer[position] != rune('|') {
goto l335
}
position++
goto l332
l335:
position, tokenIndex = position332, tokenIndex332
if buffer[position] != rune('<') {
goto l336
}
position++
if buffer[position] != rune('<') {
goto l336
}
position++
goto l332
l336:
position, tokenIndex = position332, tokenIndex332
if buffer[position] != rune('>') {
goto l330
}
position++
if buffer[position] != rune('>') {
goto l330
}
position++
}
l332:
add(ruleSymbolOperator, position331)
}
return true
l330:
position, tokenIndex = position330, tokenIndex330
return false
},
/* 19 OpenParen <- <'('> */
func() bool {
position337, tokenIndex337 := position, tokenIndex
{
position338 := position
if buffer[position] != rune('(') {
goto l337
}
position++
add(ruleOpenParen, position338)
}
return true
l337:
position, tokenIndex = position337, tokenIndex337
return false
},
/* 20 CloseParen <- <')'> */
func() bool {
position339, tokenIndex339 := position, tokenIndex
{
position340 := position
if buffer[position] != rune(')') {
goto l339
}
position++
add(ruleCloseParen, position340)
}
return true
l339:
position, tokenIndex = position339, tokenIndex339
return false
},
/* 21 SymbolType <- <(('@' / '%') (('f' 'u' 'n' 'c' 't' 'i' 'o' 'n') / ('o' 'b' 'j' 'e' 'c' 't')))> */
func() bool {
position341, tokenIndex341 := position, tokenIndex
{
position342 := position
{
position343, tokenIndex343 := position, tokenIndex
if buffer[position] != rune('@') {
goto l344
}
position++
goto l343
l344:
position, tokenIndex = position343, tokenIndex343
if buffer[position] != rune('%') {
goto l341
}
position++
}
l343:
{
position345, tokenIndex345 := position, tokenIndex
if buffer[position] != rune('f') {
goto l346
}
position++
if buffer[position] != rune('u') {
goto l346
}
position++
if buffer[position] != rune('n') {
goto l346
}
position++
if buffer[position] != rune('c') {
goto l346
}
position++
if buffer[position] != rune('t') {
goto l346
}
position++
if buffer[position] != rune('i') {
goto l346
}
position++
if buffer[position] != rune('o') {
goto l346
}
position++
if buffer[position] != rune('n') {
goto l346
}
position++
goto l345
l346:
position, tokenIndex = position345, tokenIndex345
if buffer[position] != rune('o') {
goto l341
}
position++
if buffer[position] != rune('b') {
goto l341
}
position++
if buffer[position] != rune('j') {
goto l341
}
position++
if buffer[position] != rune('e') {
goto l341
}
position++
if buffer[position] != rune('c') {
goto l341
}
position++
if buffer[position] != rune('t') {
goto l341
}
position++
}
l345:
add(ruleSymbolType, position342)
}
return true
l341:
position, tokenIndex = position341, tokenIndex341
return false
},
/* 22 Dot <- <'.'> */
func() bool {
position347, tokenIndex347 := position, tokenIndex
{
position348 := position
if buffer[position] != rune('.') {
goto l347
}
position++
add(ruleDot, position348)
}
return true
l347:
position, tokenIndex = position347, tokenIndex347
return false
},
/* 23 TCMarker <- <('[' 'T' 'C' ']')> */
func() bool {
position349, tokenIndex349 := position, tokenIndex
{
position350 := position
if buffer[position] != rune('[') {
goto l349
}
position++
if buffer[position] != rune('T') {
goto l349
}
position++
if buffer[position] != rune('C') {
goto l349
}
position++
if buffer[position] != rune(']') {
goto l349
}
position++
add(ruleTCMarker, position350)
}
return true
l349:
position, tokenIndex = position349, tokenIndex349
return false
},
/* 24 EscapedChar <- <('\\' .)> */
func() bool {
position351, tokenIndex351 := position, tokenIndex
{
position352 := position
if buffer[position] != rune('\\') {
goto l351
}
position++
if !matchDot() {
goto l351
}
add(ruleEscapedChar, position352)
}
return true
l351:
position, tokenIndex = position351, tokenIndex351
return false
},
/* 25 WS <- <(' ' / '\t')+> */
func() bool {
position353, tokenIndex353 := position, tokenIndex
{
position354 := position
{
position357, tokenIndex357 := position, tokenIndex
if buffer[position] != rune(' ') {
goto l358
}
position++
goto l357
l358:
position, tokenIndex = position357, tokenIndex357
if buffer[position] != rune('\t') {
goto l353
}
position++
}
l357:
l355:
{
position356, tokenIndex356 := position, tokenIndex
{
position359, tokenIndex359 := position, tokenIndex
if buffer[position] != rune(' ') {
goto l360
}
position++
goto l359
l360:
position, tokenIndex = position359, tokenIndex359
if buffer[position] != rune('\t') {
goto l356
}
position++
}
l359:
goto l355
l356:
position, tokenIndex = position356, tokenIndex356
}
add(ruleWS, position354)
}
return true
l353:
position, tokenIndex = position353, tokenIndex353
return false
},
/* 26 Comment <- <((('/' '/') / '#') (!'\n' .)*)> */
func() bool {
position361, tokenIndex361 := position, tokenIndex
{
position362 := position
{
position363, tokenIndex363 := position, tokenIndex
if buffer[position] != rune('/') {
goto l364
}
position++
if buffer[position] != rune('/') {
goto l364
}
position++
goto l363
l364:
position, tokenIndex = position363, tokenIndex363
if buffer[position] != rune('#') {
goto l361
}
position++
}
l363:
l365:
{
position366, tokenIndex366 := position, tokenIndex
{
position367, tokenIndex367 := position, tokenIndex
if buffer[position] != rune('\n') {
goto l367
}
position++
goto l366
l367:
position, tokenIndex = position367, tokenIndex367
}
if !matchDot() {
goto l366
}
goto l365
l366:
position, tokenIndex = position366, tokenIndex366
}
add(ruleComment, position362)
}
return true
l361:
position, tokenIndex = position361, tokenIndex361
return false
},
/* 27 Label <- <((LocalSymbol / LocalLabel / SymbolName) ':')> */
func() bool {
position368, tokenIndex368 := position, tokenIndex
{
position369 := position
{
position370, tokenIndex370 := position, tokenIndex
if !_rules[ruleLocalSymbol]() {
goto l371
}
goto l370
l371:
position, tokenIndex = position370, tokenIndex370
if !_rules[ruleLocalLabel]() {
goto l372
}
goto l370
l372:
position, tokenIndex = position370, tokenIndex370
if !_rules[ruleSymbolName]() {
goto l368
}
}
l370:
if buffer[position] != rune(':') {
goto l368
}
position++
add(ruleLabel, position369)
}
return true
l368:
position, tokenIndex = position368, tokenIndex368
return false
},
/* 28 SymbolName <- <(([a-z] / [A-Z] / '.' / '_') ([a-z] / [A-Z] / '.' / ([0-9] / [0-9]) / '$' / '_')*)> */
func() bool {
position373, tokenIndex373 := position, tokenIndex
{
position374 := position
{
position375, tokenIndex375 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l376
}
position++
goto l375
l376:
position, tokenIndex = position375, tokenIndex375
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l377
}
position++
goto l375
l377:
position, tokenIndex = position375, tokenIndex375
if buffer[position] != rune('.') {
goto l378
}
position++
goto l375
l378:
position, tokenIndex = position375, tokenIndex375
if buffer[position] != rune('_') {
goto l373
}
position++
}
l375:
l379:
{
position380, tokenIndex380 := position, tokenIndex
{
position381, tokenIndex381 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l382
}
position++
goto l381
l382:
position, tokenIndex = position381, tokenIndex381
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l383
}
position++
goto l381
l383:
position, tokenIndex = position381, tokenIndex381
if buffer[position] != rune('.') {
goto l384
}
position++
goto l381
l384:
position, tokenIndex = position381, tokenIndex381
{
position386, tokenIndex386 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l387
}
position++
goto l386
l387:
position, tokenIndex = position386, tokenIndex386
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l385
}
position++
}
l386:
goto l381
l385:
position, tokenIndex = position381, tokenIndex381
if buffer[position] != rune('$') {
goto l388
}
position++
goto l381
l388:
position, tokenIndex = position381, tokenIndex381
if buffer[position] != rune('_') {
goto l380
}
position++
}
l381:
goto l379
l380:
position, tokenIndex = position380, tokenIndex380
}
add(ruleSymbolName, position374)
}
return true
l373:
position, tokenIndex = position373, tokenIndex373
return false
},
/* 29 LocalSymbol <- <('.' 'L' ([a-z] / [A-Z] / ([a-z] / [A-Z]) / '.' / ([0-9] / [0-9]) / '$' / '_')+)> */
func() bool {
position389, tokenIndex389 := position, tokenIndex
{
position390 := position
if buffer[position] != rune('.') {
goto l389
}
position++
if buffer[position] != rune('L') {
goto l389
}
position++
{
position393, tokenIndex393 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l394
}
position++
goto l393
l394:
position, tokenIndex = position393, tokenIndex393
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l395
}
position++
goto l393
l395:
position, tokenIndex = position393, tokenIndex393
{
position397, tokenIndex397 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l398
}
position++
goto l397
l398:
position, tokenIndex = position397, tokenIndex397
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l396
}
position++
}
l397:
goto l393
l396:
position, tokenIndex = position393, tokenIndex393
if buffer[position] != rune('.') {
goto l399
}
position++
goto l393
l399:
position, tokenIndex = position393, tokenIndex393
{
position401, tokenIndex401 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l402
}
position++
goto l401
l402:
position, tokenIndex = position401, tokenIndex401
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l400
}
position++
}
l401:
goto l393
l400:
position, tokenIndex = position393, tokenIndex393
if buffer[position] != rune('$') {
goto l403
}
position++
goto l393
l403:
position, tokenIndex = position393, tokenIndex393
if buffer[position] != rune('_') {
goto l389
}
position++
}
l393:
l391:
{
position392, tokenIndex392 := position, tokenIndex
{
position404, tokenIndex404 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l405
}
position++
goto l404
l405:
position, tokenIndex = position404, tokenIndex404
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l406
}
position++
goto l404
l406:
position, tokenIndex = position404, tokenIndex404
{
position408, tokenIndex408 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l409
}
position++
goto l408
l409:
position, tokenIndex = position408, tokenIndex408
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l407
}
position++
}
l408:
goto l404
l407:
position, tokenIndex = position404, tokenIndex404
if buffer[position] != rune('.') {
goto l410
}
position++
goto l404
l410:
position, tokenIndex = position404, tokenIndex404
{
position412, tokenIndex412 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l413
}
position++
goto l412
l413:
position, tokenIndex = position412, tokenIndex412
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l411
}
position++
}
l412:
goto l404
l411:
position, tokenIndex = position404, tokenIndex404
if buffer[position] != rune('$') {
goto l414
}
position++
goto l404
l414:
position, tokenIndex = position404, tokenIndex404
if buffer[position] != rune('_') {
goto l392
}
position++
}
l404:
goto l391
l392:
position, tokenIndex = position392, tokenIndex392
}
add(ruleLocalSymbol, position390)
}
return true
l389:
position, tokenIndex = position389, tokenIndex389
return false
},
/* 30 LocalLabel <- <([0-9] ([0-9] / '$')*)> */
func() bool {
position415, tokenIndex415 := position, tokenIndex
{
position416 := position
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l415
}
position++
l417:
{
position418, tokenIndex418 := position, tokenIndex
{
position419, tokenIndex419 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l420
}
position++
goto l419
l420:
position, tokenIndex = position419, tokenIndex419
if buffer[position] != rune('$') {
goto l418
}
position++
}
l419:
goto l417
l418:
position, tokenIndex = position418, tokenIndex418
}
add(ruleLocalLabel, position416)
}
return true
l415:
position, tokenIndex = position415, tokenIndex415
return false
},
/* 31 LocalLabelRef <- <([0-9] ([0-9] / '$')* ('b' / 'f'))> */
func() bool {
position421, tokenIndex421 := position, tokenIndex
{
position422 := position
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l421
}
position++
l423:
{
position424, tokenIndex424 := position, tokenIndex
{
position425, tokenIndex425 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l426
}
position++
goto l425
l426:
position, tokenIndex = position425, tokenIndex425
if buffer[position] != rune('$') {
goto l424
}
position++
}
l425:
goto l423
l424:
position, tokenIndex = position424, tokenIndex424
}
{
position427, tokenIndex427 := position, tokenIndex
if buffer[position] != rune('b') {
goto l428
}
position++
goto l427
l428:
position, tokenIndex = position427, tokenIndex427
if buffer[position] != rune('f') {
goto l421
}
position++
}
l427:
add(ruleLocalLabelRef, position422)
}
return true
l421:
position, tokenIndex = position421, tokenIndex421
return false
},
/* 32 InstructionPrefix <- <(('n' / 'N') ('o' / 'O') ('t' / 'T') ('r' / 'R') ('a' / 'A') ('c' / 'C') ('k' / 'K'))> */
func() bool {
position429, tokenIndex429 := position, tokenIndex
{
position430 := position
{
position431, tokenIndex431 := position, tokenIndex
if buffer[position] != rune('n') {
goto l432
}
position++
goto l431
l432:
position, tokenIndex = position431, tokenIndex431
if buffer[position] != rune('N') {
goto l429
}
position++
}
l431:
{
position433, tokenIndex433 := position, tokenIndex
if buffer[position] != rune('o') {
goto l434
}
position++
goto l433
l434:
position, tokenIndex = position433, tokenIndex433
if buffer[position] != rune('O') {
goto l429
}
position++
}
l433:
{
position435, tokenIndex435 := position, tokenIndex
if buffer[position] != rune('t') {
goto l436
}
position++
goto l435
l436:
position, tokenIndex = position435, tokenIndex435
if buffer[position] != rune('T') {
goto l429
}
position++
}
l435:
{
position437, tokenIndex437 := position, tokenIndex
if buffer[position] != rune('r') {
goto l438
}
position++
goto l437
l438:
position, tokenIndex = position437, tokenIndex437
if buffer[position] != rune('R') {
goto l429
}
position++
}
l437:
{
position439, tokenIndex439 := position, tokenIndex
if buffer[position] != rune('a') {
goto l440
}
position++
goto l439
l440:
position, tokenIndex = position439, tokenIndex439
if buffer[position] != rune('A') {
goto l429
}
position++
}
l439:
{
position441, tokenIndex441 := position, tokenIndex
if buffer[position] != rune('c') {
goto l442
}
position++
goto l441
l442:
position, tokenIndex = position441, tokenIndex441
if buffer[position] != rune('C') {
goto l429
}
position++
}
l441:
{
position443, tokenIndex443 := position, tokenIndex
if buffer[position] != rune('k') {
goto l444
}
position++
goto l443
l444:
position, tokenIndex = position443, tokenIndex443
if buffer[position] != rune('K') {
goto l429
}
position++
}
l443:
add(ruleInstructionPrefix, position430)
}
return true
l429:
position, tokenIndex = position429, tokenIndex429
return false
},
/* 33 Instruction <- <((InstructionPrefix WS)? InstructionName (WS InstructionArg (WS? ',' WS? InstructionArg)*)?)> */
func() bool {
position445, tokenIndex445 := position, tokenIndex
{
position446 := position
{
position447, tokenIndex447 := position, tokenIndex
if !_rules[ruleInstructionPrefix]() {
goto l447
}
if !_rules[ruleWS]() {
goto l447
}
goto l448
l447:
position, tokenIndex = position447, tokenIndex447
}
l448:
if !_rules[ruleInstructionName]() {
goto l445
}
{
position449, tokenIndex449 := position, tokenIndex
if !_rules[ruleWS]() {
goto l449
}
if !_rules[ruleInstructionArg]() {
goto l449
}
l451:
{
position452, tokenIndex452 := position, tokenIndex
{
position453, tokenIndex453 := position, tokenIndex
if !_rules[ruleWS]() {
goto l453
}
goto l454
l453:
position, tokenIndex = position453, tokenIndex453
}
l454:
if buffer[position] != rune(',') {
goto l452
}
position++
{
position455, tokenIndex455 := position, tokenIndex
if !_rules[ruleWS]() {
goto l455
}
goto l456
l455:
position, tokenIndex = position455, tokenIndex455
}
l456:
if !_rules[ruleInstructionArg]() {
goto l452
}
goto l451
l452:
position, tokenIndex = position452, tokenIndex452
}
goto l450
l449:
position, tokenIndex = position449, tokenIndex449
}
l450:
add(ruleInstruction, position446)
}
return true
l445:
position, tokenIndex = position445, tokenIndex445
return false
},
/* 34 InstructionName <- <(([a-z] / [A-Z]) ([a-z] / [A-Z] / '.' / ([0-9] / [0-9]))* ('.' / '+' / '-')?)> */
func() bool {
position457, tokenIndex457 := position, tokenIndex
{
position458 := position
{
position459, tokenIndex459 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l460
}
position++
goto l459
l460:
position, tokenIndex = position459, tokenIndex459
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l457
}
position++
}
l459:
l461:
{
position462, tokenIndex462 := position, tokenIndex
{
position463, tokenIndex463 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l464
}
position++
goto l463
l464:
position, tokenIndex = position463, tokenIndex463
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l465
}
position++
goto l463
l465:
position, tokenIndex = position463, tokenIndex463
if buffer[position] != rune('.') {
goto l466
}
position++
goto l463
l466:
position, tokenIndex = position463, tokenIndex463
{
position467, tokenIndex467 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l468
}
position++
goto l467
l468:
position, tokenIndex = position467, tokenIndex467
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l462
}
position++
}
l467:
}
l463:
goto l461
l462:
position, tokenIndex = position462, tokenIndex462
}
{
position469, tokenIndex469 := position, tokenIndex
{
position471, tokenIndex471 := position, tokenIndex
if buffer[position] != rune('.') {
goto l472
}
position++
goto l471
l472:
position, tokenIndex = position471, tokenIndex471
if buffer[position] != rune('+') {
goto l473
}
position++
goto l471
l473:
position, tokenIndex = position471, tokenIndex471
if buffer[position] != rune('-') {
goto l469
}
position++
}
l471:
goto l470
l469:
position, tokenIndex = position469, tokenIndex469
}
l470:
add(ruleInstructionName, position458)
}
return true
l457:
position, tokenIndex = position457, tokenIndex457
return false
},
/* 35 InstructionArg <- <(IndirectionIndicator? (ARMConstantTweak / RegisterOrConstant / LocalLabelRef / TOCRefHigh / TOCRefLow / GOTLocation / GOTAddress / GOTSymbolOffset / MemoryRef) AVX512Token*)> */
func() bool {
position474, tokenIndex474 := position, tokenIndex
{
position475 := position
{
position476, tokenIndex476 := position, tokenIndex
if !_rules[ruleIndirectionIndicator]() {
goto l476
}
goto l477
l476:
position, tokenIndex = position476, tokenIndex476
}
l477:
{
position478, tokenIndex478 := position, tokenIndex
if !_rules[ruleARMConstantTweak]() {
goto l479
}
goto l478
l479:
position, tokenIndex = position478, tokenIndex478
if !_rules[ruleRegisterOrConstant]() {
goto l480
}
goto l478
l480:
position, tokenIndex = position478, tokenIndex478
if !_rules[ruleLocalLabelRef]() {
goto l481
}
goto l478
l481:
position, tokenIndex = position478, tokenIndex478
if !_rules[ruleTOCRefHigh]() {
goto l482
}
goto l478
l482:
position, tokenIndex = position478, tokenIndex478
if !_rules[ruleTOCRefLow]() {
goto l483
}
goto l478
l483:
position, tokenIndex = position478, tokenIndex478
if !_rules[ruleGOTLocation]() {
goto l484
}
goto l478
l484:
position, tokenIndex = position478, tokenIndex478
if !_rules[ruleGOTAddress]() {
goto l485
}
goto l478
l485:
position, tokenIndex = position478, tokenIndex478
if !_rules[ruleGOTSymbolOffset]() {
goto l486
}
goto l478
l486:
position, tokenIndex = position478, tokenIndex478
if !_rules[ruleMemoryRef]() {
goto l474
}
}
l478:
l487:
{
position488, tokenIndex488 := position, tokenIndex
if !_rules[ruleAVX512Token]() {
goto l488
}
goto l487
l488:
position, tokenIndex = position488, tokenIndex488
}
add(ruleInstructionArg, position475)
}
return true
l474:
position, tokenIndex = position474, tokenIndex474
return false
},
/* 36 GOTLocation <- <('$' '_' 'G' 'L' 'O' 'B' 'A' 'L' '_' 'O' 'F' 'F' 'S' 'E' 'T' '_' 'T' 'A' 'B' 'L' 'E' '_' '-' LocalSymbol)> */
func() bool {
position489, tokenIndex489 := position, tokenIndex
{
position490 := position
if buffer[position] != rune('$') {
goto l489
}
position++
if buffer[position] != rune('_') {
goto l489
}
position++
if buffer[position] != rune('G') {
goto l489
}
position++
if buffer[position] != rune('L') {
goto l489
}
position++
if buffer[position] != rune('O') {
goto l489
}
position++
if buffer[position] != rune('B') {
goto l489
}
position++
if buffer[position] != rune('A') {
goto l489
}
position++
if buffer[position] != rune('L') {
goto l489
}
position++
if buffer[position] != rune('_') {
goto l489
}
position++
if buffer[position] != rune('O') {
goto l489
}
position++
if buffer[position] != rune('F') {
goto l489
}
position++
if buffer[position] != rune('F') {
goto l489
}
position++
if buffer[position] != rune('S') {
goto l489
}
position++
if buffer[position] != rune('E') {
goto l489
}
position++
if buffer[position] != rune('T') {
goto l489
}
position++
if buffer[position] != rune('_') {
goto l489
}
position++
if buffer[position] != rune('T') {
goto l489
}
position++
if buffer[position] != rune('A') {
goto l489
}
position++
if buffer[position] != rune('B') {
goto l489
}
position++
if buffer[position] != rune('L') {
goto l489
}
position++
if buffer[position] != rune('E') {
goto l489
}
position++
if buffer[position] != rune('_') {
goto l489
}
position++
if buffer[position] != rune('-') {
goto l489
}
position++
if !_rules[ruleLocalSymbol]() {
goto l489
}
add(ruleGOTLocation, position490)
}
return true
l489:
position, tokenIndex = position489, tokenIndex489
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 {
position491, tokenIndex491 := position, tokenIndex
{
position492 := position
if buffer[position] != rune('_') {
goto l491
}
position++
if buffer[position] != rune('G') {
goto l491
}
position++
if buffer[position] != rune('L') {
goto l491
}
position++
if buffer[position] != rune('O') {
goto l491
}
position++
if buffer[position] != rune('B') {
goto l491
}
position++
if buffer[position] != rune('A') {
goto l491
}
position++
if buffer[position] != rune('L') {
goto l491
}
position++
if buffer[position] != rune('_') {
goto l491
}
position++
if buffer[position] != rune('O') {
goto l491
}
position++
if buffer[position] != rune('F') {
goto l491
}
position++
if buffer[position] != rune('F') {
goto l491
}
position++
if buffer[position] != rune('S') {
goto l491
}
position++
if buffer[position] != rune('E') {
goto l491
}
position++
if buffer[position] != rune('T') {
goto l491
}
position++
if buffer[position] != rune('_') {
goto l491
}
position++
if buffer[position] != rune('T') {
goto l491
}
position++
if buffer[position] != rune('A') {
goto l491
}
position++
if buffer[position] != rune('B') {
goto l491
}
position++
if buffer[position] != rune('L') {
goto l491
}
position++
if buffer[position] != rune('E') {
goto l491
}
position++
if buffer[position] != rune('_') {
goto l491
}
position++
if buffer[position] != rune('(') {
goto l491
}
position++
if buffer[position] != rune('%') {
goto l491
}
position++
if buffer[position] != rune('r') {
goto l491
}
position++
if buffer[position] != rune('i') {
goto l491
}
position++
if buffer[position] != rune('p') {
goto l491
}
position++
if buffer[position] != rune(')') {
goto l491
}
position++
add(ruleGOTAddress, position492)
}
return true
l491:
position, tokenIndex = position491, tokenIndex491
return false
},
/* 38 GOTSymbolOffset <- <(('$' SymbolName ('@' 'G' 'O' 'T') ('O' 'F' 'F')?) / (':' ('g' / 'G') ('o' / 'O') ('t' / 'T') ':' SymbolName))> */
func() bool {
position493, tokenIndex493 := position, tokenIndex
{
position494 := position
{
position495, tokenIndex495 := position, tokenIndex
if buffer[position] != rune('$') {
goto l496
}
position++
if !_rules[ruleSymbolName]() {
goto l496
}
if buffer[position] != rune('@') {
goto l496
}
position++
if buffer[position] != rune('G') {
goto l496
}
position++
if buffer[position] != rune('O') {
goto l496
}
position++
if buffer[position] != rune('T') {
goto l496
}
position++
{
position497, tokenIndex497 := position, tokenIndex
if buffer[position] != rune('O') {
goto l497
}
position++
if buffer[position] != rune('F') {
goto l497
}
position++
if buffer[position] != rune('F') {
goto l497
}
position++
goto l498
l497:
position, tokenIndex = position497, tokenIndex497
}
l498:
goto l495
l496:
position, tokenIndex = position495, tokenIndex495
if buffer[position] != rune(':') {
goto l493
}
position++
{
position499, tokenIndex499 := position, tokenIndex
if buffer[position] != rune('g') {
goto l500
}
position++
goto l499
l500:
position, tokenIndex = position499, tokenIndex499
if buffer[position] != rune('G') {
goto l493
}
position++
}
l499:
{
position501, tokenIndex501 := position, tokenIndex
if buffer[position] != rune('o') {
goto l502
}
position++
goto l501
l502:
position, tokenIndex = position501, tokenIndex501
if buffer[position] != rune('O') {
goto l493
}
position++
}
l501:
{
position503, tokenIndex503 := position, tokenIndex
if buffer[position] != rune('t') {
goto l504
}
position++
goto l503
l504:
position, tokenIndex = position503, tokenIndex503
if buffer[position] != rune('T') {
goto l493
}
position++
}
l503:
if buffer[position] != rune(':') {
goto l493
}
position++
if !_rules[ruleSymbolName]() {
goto l493
}
}
l495:
add(ruleGOTSymbolOffset, position494)
}
return true
l493:
position, tokenIndex = position493, tokenIndex493
return false
},
/* 39 AVX512Token <- <(WS? '{' '%'? ([0-9] / [a-z])* '}')> */
func() bool {
position505, tokenIndex505 := position, tokenIndex
{
position506 := position
{
position507, tokenIndex507 := position, tokenIndex
if !_rules[ruleWS]() {
goto l507
}
goto l508
l507:
position, tokenIndex = position507, tokenIndex507
}
l508:
if buffer[position] != rune('{') {
goto l505
}
position++
{
position509, tokenIndex509 := position, tokenIndex
if buffer[position] != rune('%') {
goto l509
}
position++
goto l510
l509:
position, tokenIndex = position509, tokenIndex509
}
l510:
l511:
{
position512, tokenIndex512 := position, tokenIndex
{
position513, tokenIndex513 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l514
}
position++
goto l513
l514:
position, tokenIndex = position513, tokenIndex513
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l512
}
position++
}
l513:
goto l511
l512:
position, tokenIndex = position512, tokenIndex512
}
if buffer[position] != rune('}') {
goto l505
}
position++
add(ruleAVX512Token, position506)
}
return true
l505:
position, tokenIndex = position505, tokenIndex505
return false
},
/* 40 TOCRefHigh <- <('.' 'T' 'O' 'C' '.' '-' (('0' 'b') / ('.' 'L' ([a-z] / [A-Z] / '_' / [0-9])+)) ('@' ('h' / 'H') ('a' / 'A')))> */
func() bool {
position515, tokenIndex515 := position, tokenIndex
{
position516 := position
if buffer[position] != rune('.') {
goto l515
}
position++
if buffer[position] != rune('T') {
goto l515
}
position++
if buffer[position] != rune('O') {
goto l515
}
position++
if buffer[position] != rune('C') {
goto l515
}
position++
if buffer[position] != rune('.') {
goto l515
}
position++
if buffer[position] != rune('-') {
goto l515
}
position++
{
position517, tokenIndex517 := position, tokenIndex
if buffer[position] != rune('0') {
goto l518
}
position++
if buffer[position] != rune('b') {
goto l518
}
position++
goto l517
l518:
position, tokenIndex = position517, tokenIndex517
if buffer[position] != rune('.') {
goto l515
}
position++
if buffer[position] != rune('L') {
goto l515
}
position++
{
position521, tokenIndex521 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l522
}
position++
goto l521
l522:
position, tokenIndex = position521, tokenIndex521
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l523
}
position++
goto l521
l523:
position, tokenIndex = position521, tokenIndex521
if buffer[position] != rune('_') {
goto l524
}
position++
goto l521
l524:
position, tokenIndex = position521, tokenIndex521
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l515
}
position++
}
l521:
l519:
{
position520, tokenIndex520 := position, tokenIndex
{
position525, tokenIndex525 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l526
}
position++
goto l525
l526:
position, tokenIndex = position525, tokenIndex525
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l527
}
position++
goto l525
l527:
position, tokenIndex = position525, tokenIndex525
if buffer[position] != rune('_') {
goto l528
}
position++
goto l525
l528:
position, tokenIndex = position525, tokenIndex525
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l520
}
position++
}
l525:
goto l519
l520:
position, tokenIndex = position520, tokenIndex520
}
}
l517:
if buffer[position] != rune('@') {
goto l515
}
position++
{
position529, tokenIndex529 := position, tokenIndex
if buffer[position] != rune('h') {
goto l530
}
position++
goto l529
l530:
position, tokenIndex = position529, tokenIndex529
if buffer[position] != rune('H') {
goto l515
}
position++
}
l529:
{
position531, tokenIndex531 := position, tokenIndex
if buffer[position] != rune('a') {
goto l532
}
position++
goto l531
l532:
position, tokenIndex = position531, tokenIndex531
if buffer[position] != rune('A') {
goto l515
}
position++
}
l531:
add(ruleTOCRefHigh, position516)
}
return true
l515:
position, tokenIndex = position515, tokenIndex515
return false
},
/* 41 TOCRefLow <- <('.' 'T' 'O' 'C' '.' '-' (('0' 'b') / ('.' 'L' ([a-z] / [A-Z] / '_' / [0-9])+)) ('@' ('l' / 'L')))> */
func() bool {
position533, tokenIndex533 := position, tokenIndex
{
position534 := position
if buffer[position] != rune('.') {
goto l533
}
position++
if buffer[position] != rune('T') {
goto l533
}
position++
if buffer[position] != rune('O') {
goto l533
}
position++
if buffer[position] != rune('C') {
goto l533
}
position++
if buffer[position] != rune('.') {
goto l533
}
position++
if buffer[position] != rune('-') {
goto l533
}
position++
{
position535, tokenIndex535 := position, tokenIndex
if buffer[position] != rune('0') {
goto l536
}
position++
if buffer[position] != rune('b') {
goto l536
}
position++
goto l535
l536:
position, tokenIndex = position535, tokenIndex535
if buffer[position] != rune('.') {
goto l533
}
position++
if buffer[position] != rune('L') {
goto l533
}
position++
{
position539, tokenIndex539 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l540
}
position++
goto l539
l540:
position, tokenIndex = position539, tokenIndex539
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l541
}
position++
goto l539
l541:
position, tokenIndex = position539, tokenIndex539
if buffer[position] != rune('_') {
goto l542
}
position++
goto l539
l542:
position, tokenIndex = position539, tokenIndex539
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l533
}
position++
}
l539:
l537:
{
position538, tokenIndex538 := position, tokenIndex
{
position543, tokenIndex543 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l544
}
position++
goto l543
l544:
position, tokenIndex = position543, tokenIndex543
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l545
}
position++
goto l543
l545:
position, tokenIndex = position543, tokenIndex543
if buffer[position] != rune('_') {
goto l546
}
position++
goto l543
l546:
position, tokenIndex = position543, tokenIndex543
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l538
}
position++
}
l543:
goto l537
l538:
position, tokenIndex = position538, tokenIndex538
}
}
l535:
if buffer[position] != rune('@') {
goto l533
}
position++
{
position547, tokenIndex547 := position, tokenIndex
if buffer[position] != rune('l') {
goto l548
}
position++
goto l547
l548:
position, tokenIndex = position547, tokenIndex547
if buffer[position] != rune('L') {
goto l533
}
position++
}
l547:
add(ruleTOCRefLow, position534)
}
return true
l533:
position, tokenIndex = position533, tokenIndex533
return false
},
/* 42 IndirectionIndicator <- <'*'> */
func() bool {
position549, tokenIndex549 := position, tokenIndex
{
position550 := position
if buffer[position] != rune('*') {
goto l549
}
position++
add(ruleIndirectionIndicator, position550)
}
return true
l549:
position, tokenIndex = position549, tokenIndex549
return false
},
/* 43 RegisterOrConstant <- <((('%' ([a-z] / [A-Z]) ([a-z] / [A-Z] / ([0-9] / [0-9]))*) / ('$'? ((Offset Offset) / Offset)) / ('#' Offset ('*' [0-9]+ ('-' [0-9] [0-9]*)?)?) / ('#' '~'? '(' [0-9] WS? ('<' '<') WS? [0-9] ')') / ARMRegister) !('f' / 'b' / ':' / '(' / '+' / '-'))> */
func() bool {
position551, tokenIndex551 := position, tokenIndex
{
position552 := position
{
position553, tokenIndex553 := position, tokenIndex
if buffer[position] != rune('%') {
goto l554
}
position++
{
position555, tokenIndex555 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l556
}
position++
goto l555
l556:
position, tokenIndex = position555, tokenIndex555
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l554
}
position++
}
l555:
l557:
{
position558, tokenIndex558 := position, tokenIndex
{
position559, tokenIndex559 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l560
}
position++
goto l559
l560:
position, tokenIndex = position559, tokenIndex559
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l561
}
position++
goto l559
l561:
position, tokenIndex = position559, tokenIndex559
{
position562, tokenIndex562 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l563
}
position++
goto l562
l563:
position, tokenIndex = position562, tokenIndex562
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l558
}
position++
}
l562:
}
l559:
goto l557
l558:
position, tokenIndex = position558, tokenIndex558
}
goto l553
l554:
position, tokenIndex = position553, tokenIndex553
{
position565, tokenIndex565 := position, tokenIndex
if buffer[position] != rune('$') {
goto l565
}
position++
goto l566
l565:
position, tokenIndex = position565, tokenIndex565
}
l566:
{
position567, tokenIndex567 := position, tokenIndex
if !_rules[ruleOffset]() {
goto l568
}
if !_rules[ruleOffset]() {
goto l568
}
goto l567
l568:
position, tokenIndex = position567, tokenIndex567
if !_rules[ruleOffset]() {
goto l564
}
}
l567:
goto l553
l564:
position, tokenIndex = position553, tokenIndex553
if buffer[position] != rune('#') {
goto l569
}
position++
if !_rules[ruleOffset]() {
goto l569
}
{
position570, tokenIndex570 := position, tokenIndex
if buffer[position] != rune('*') {
goto l570
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l570
}
position++
l572:
{
position573, tokenIndex573 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l573
}
position++
goto l572
l573:
position, tokenIndex = position573, tokenIndex573
}
{
position574, tokenIndex574 := position, tokenIndex
if buffer[position] != rune('-') {
goto l574
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l574
}
position++
l576:
{
position577, tokenIndex577 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l577
}
position++
goto l576
l577:
position, tokenIndex = position577, tokenIndex577
}
goto l575
l574:
position, tokenIndex = position574, tokenIndex574
}
l575:
goto l571
l570:
position, tokenIndex = position570, tokenIndex570
}
l571:
goto l553
l569:
position, tokenIndex = position553, tokenIndex553
if buffer[position] != rune('#') {
goto l578
}
position++
{
position579, tokenIndex579 := position, tokenIndex
if buffer[position] != rune('~') {
goto l579
}
position++
goto l580
l579:
position, tokenIndex = position579, tokenIndex579
}
l580:
if buffer[position] != rune('(') {
goto l578
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l578
}
position++
{
position581, tokenIndex581 := position, tokenIndex
if !_rules[ruleWS]() {
goto l581
}
goto l582
l581:
position, tokenIndex = position581, tokenIndex581
}
l582:
if buffer[position] != rune('<') {
goto l578
}
position++
if buffer[position] != rune('<') {
goto l578
}
position++
{
position583, tokenIndex583 := position, tokenIndex
if !_rules[ruleWS]() {
goto l583
}
goto l584
l583:
position, tokenIndex = position583, tokenIndex583
}
l584:
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l578
}
position++
if buffer[position] != rune(')') {
goto l578
}
position++
goto l553
l578:
position, tokenIndex = position553, tokenIndex553
if !_rules[ruleARMRegister]() {
goto l551
}
}
l553:
{
position585, tokenIndex585 := position, tokenIndex
{
position586, tokenIndex586 := position, tokenIndex
if buffer[position] != rune('f') {
goto l587
}
position++
goto l586
l587:
position, tokenIndex = position586, tokenIndex586
if buffer[position] != rune('b') {
goto l588
}
position++
goto l586
l588:
position, tokenIndex = position586, tokenIndex586
if buffer[position] != rune(':') {
goto l589
}
position++
goto l586
l589:
position, tokenIndex = position586, tokenIndex586
if buffer[position] != rune('(') {
goto l590
}
position++
goto l586
l590:
position, tokenIndex = position586, tokenIndex586
if buffer[position] != rune('+') {
goto l591
}
position++
goto l586
l591:
position, tokenIndex = position586, tokenIndex586
if buffer[position] != rune('-') {
goto l585
}
position++
}
l586:
goto l551
l585:
position, tokenIndex = position585, tokenIndex585
}
add(ruleRegisterOrConstant, position552)
}
return true
l551:
position, tokenIndex = position551, tokenIndex551
return false
},
/* 44 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 {
position592, tokenIndex592 := position, tokenIndex
{
position593 := position
{
position594, tokenIndex594 := position, tokenIndex
{
position596, tokenIndex596 := position, tokenIndex
{
position598, tokenIndex598 := position, tokenIndex
if buffer[position] != rune('u') {
goto l599
}
position++
goto l598
l599:
position, tokenIndex = position598, tokenIndex598
if buffer[position] != rune('s') {
goto l597
}
position++
}
l598:
{
position600, tokenIndex600 := position, tokenIndex
if buffer[position] != rune('x') {
goto l601
}
position++
goto l600
l601:
position, tokenIndex = position600, tokenIndex600
if buffer[position] != rune('X') {
goto l597
}
position++
}
l600:
{
position602, tokenIndex602 := position, tokenIndex
if buffer[position] != rune('t') {
goto l603
}
position++
goto l602
l603:
position, tokenIndex = position602, tokenIndex602
if buffer[position] != rune('T') {
goto l597
}
position++
}
l602:
{
position604, tokenIndex604 := position, tokenIndex
if buffer[position] != rune('x') {
goto l605
}
position++
goto l604
l605:
position, tokenIndex = position604, tokenIndex604
if buffer[position] != rune('w') {
goto l606
}
position++
goto l604
l606:
position, tokenIndex = position604, tokenIndex604
if buffer[position] != rune('h') {
goto l607
}
position++
goto l604
l607:
position, tokenIndex = position604, tokenIndex604
if buffer[position] != rune('b') {
goto l597
}
position++
}
l604:
goto l596
l597:
position, tokenIndex = position596, tokenIndex596
{
position609, tokenIndex609 := position, tokenIndex
if buffer[position] != rune('l') {
goto l610
}
position++
goto l609
l610:
position, tokenIndex = position609, tokenIndex609
if buffer[position] != rune('L') {
goto l608
}
position++
}
l609:
{
position611, tokenIndex611 := position, tokenIndex
if buffer[position] != rune('s') {
goto l612
}
position++
goto l611
l612:
position, tokenIndex = position611, tokenIndex611
if buffer[position] != rune('S') {
goto l608
}
position++
}
l611:
{
position613, tokenIndex613 := position, tokenIndex
if buffer[position] != rune('l') {
goto l614
}
position++
goto l613
l614:
position, tokenIndex = position613, tokenIndex613
if buffer[position] != rune('L') {
goto l608
}
position++
}
l613:
goto l596
l608:
position, tokenIndex = position596, tokenIndex596
{
position616, tokenIndex616 := position, tokenIndex
if buffer[position] != rune('l') {
goto l617
}
position++
goto l616
l617:
position, tokenIndex = position616, tokenIndex616
if buffer[position] != rune('L') {
goto l615
}
position++
}
l616:
{
position618, tokenIndex618 := position, tokenIndex
if buffer[position] != rune('s') {
goto l619
}
position++
goto l618
l619:
position, tokenIndex = position618, tokenIndex618
if buffer[position] != rune('S') {
goto l615
}
position++
}
l618:
{
position620, tokenIndex620 := position, tokenIndex
if buffer[position] != rune('r') {
goto l621
}
position++
goto l620
l621:
position, tokenIndex = position620, tokenIndex620
if buffer[position] != rune('R') {
goto l615
}
position++
}
l620:
goto l596
l615:
position, tokenIndex = position596, tokenIndex596
{
position623, tokenIndex623 := position, tokenIndex
if buffer[position] != rune('r') {
goto l624
}
position++
goto l623
l624:
position, tokenIndex = position623, tokenIndex623
if buffer[position] != rune('R') {
goto l622
}
position++
}
l623:
{
position625, tokenIndex625 := position, tokenIndex
if buffer[position] != rune('o') {
goto l626
}
position++
goto l625
l626:
position, tokenIndex = position625, tokenIndex625
if buffer[position] != rune('O') {
goto l622
}
position++
}
l625:
{
position627, tokenIndex627 := position, tokenIndex
if buffer[position] != rune('r') {
goto l628
}
position++
goto l627
l628:
position, tokenIndex = position627, tokenIndex627
if buffer[position] != rune('R') {
goto l622
}
position++
}
l627:
goto l596
l622:
position, tokenIndex = position596, tokenIndex596
{
position629, tokenIndex629 := position, tokenIndex
if buffer[position] != rune('a') {
goto l630
}
position++
goto l629
l630:
position, tokenIndex = position629, tokenIndex629
if buffer[position] != rune('A') {
goto l595
}
position++
}
l629:
{
position631, tokenIndex631 := position, tokenIndex
if buffer[position] != rune('s') {
goto l632
}
position++
goto l631
l632:
position, tokenIndex = position631, tokenIndex631
if buffer[position] != rune('S') {
goto l595
}
position++
}
l631:
{
position633, tokenIndex633 := position, tokenIndex
if buffer[position] != rune('r') {
goto l634
}
position++
goto l633
l634:
position, tokenIndex = position633, tokenIndex633
if buffer[position] != rune('R') {
goto l595
}
position++
}
l633:
}
l596:
{
position635, tokenIndex635 := position, tokenIndex
if !_rules[ruleWS]() {
goto l635
}
if buffer[position] != rune('#') {
goto l635
}
position++
if !_rules[ruleOffset]() {
goto l635
}
goto l636
l635:
position, tokenIndex = position635, tokenIndex635
}
l636:
goto l594
l595:
position, tokenIndex = position594, tokenIndex594
{
position638, tokenIndex638 := position, tokenIndex
if buffer[position] != rune('m') {
goto l639
}
position++
goto l638
l639:
position, tokenIndex = position638, tokenIndex638
if buffer[position] != rune('M') {
goto l637
}
position++
}
l638:
{
position640, tokenIndex640 := position, tokenIndex
if buffer[position] != rune('u') {
goto l641
}
position++
goto l640
l641:
position, tokenIndex = position640, tokenIndex640
if buffer[position] != rune('U') {
goto l637
}
position++
}
l640:
{
position642, tokenIndex642 := position, tokenIndex
if buffer[position] != rune('l') {
goto l643
}
position++
goto l642
l643:
position, tokenIndex = position642, tokenIndex642
if buffer[position] != rune('L') {
goto l637
}
position++
}
l642:
if buffer[position] != rune(' ') {
goto l637
}
position++
{
position644, tokenIndex644 := position, tokenIndex
if buffer[position] != rune('v') {
goto l645
}
position++
goto l644
l645:
position, tokenIndex = position644, tokenIndex644
if buffer[position] != rune('V') {
goto l637
}
position++
}
l644:
{
position646, tokenIndex646 := position, tokenIndex
if buffer[position] != rune('l') {
goto l647
}
position++
goto l646
l647:
position, tokenIndex = position646, tokenIndex646
if buffer[position] != rune('L') {
goto l637
}
position++
}
l646:
goto l594
l637:
position, tokenIndex = position594, tokenIndex594
{
position648, tokenIndex648 := position, tokenIndex
if buffer[position] != rune('m') {
goto l649
}
position++
goto l648
l649:
position, tokenIndex = position648, tokenIndex648
if buffer[position] != rune('M') {
goto l592
}
position++
}
l648:
{
position650, tokenIndex650 := position, tokenIndex
if buffer[position] != rune('u') {
goto l651
}
position++
goto l650
l651:
position, tokenIndex = position650, tokenIndex650
if buffer[position] != rune('U') {
goto l592
}
position++
}
l650:
{
position652, tokenIndex652 := position, tokenIndex
if buffer[position] != rune('l') {
goto l653
}
position++
goto l652
l653:
position, tokenIndex = position652, tokenIndex652
if buffer[position] != rune('L') {
goto l592
}
position++
}
l652:
if buffer[position] != rune(' ') {
goto l592
}
position++
if buffer[position] != rune('#') {
goto l592
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l592
}
position++
}
l594:
add(ruleARMConstantTweak, position593)
}
return true
l592:
position, tokenIndex = position592, tokenIndex592
return false
},
/* 45 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 {
position654, tokenIndex654 := position, tokenIndex
{
position655 := position
{
position656, tokenIndex656 := position, tokenIndex
{
position658, tokenIndex658 := position, tokenIndex
if buffer[position] != rune('s') {
goto l659
}
position++
goto l658
l659:
position, tokenIndex = position658, tokenIndex658
if buffer[position] != rune('S') {
goto l657
}
position++
}
l658:
{
position660, tokenIndex660 := position, tokenIndex
if buffer[position] != rune('p') {
goto l661
}
position++
goto l660
l661:
position, tokenIndex = position660, tokenIndex660
if buffer[position] != rune('P') {
goto l657
}
position++
}
l660:
goto l656
l657:
position, tokenIndex = position656, tokenIndex656
{
position663, tokenIndex663 := position, tokenIndex
if buffer[position] != rune('x') {
goto l664
}
position++
goto l663
l664:
position, tokenIndex = position663, tokenIndex663
if buffer[position] != rune('w') {
goto l665
}
position++
goto l663
l665:
position, tokenIndex = position663, tokenIndex663
if buffer[position] != rune('d') {
goto l666
}
position++
goto l663
l666:
position, tokenIndex = position663, tokenIndex663
if buffer[position] != rune('q') {
goto l667
}
position++
goto l663
l667:
position, tokenIndex = position663, tokenIndex663
if buffer[position] != rune('s') {
goto l668
}
position++
goto l663
l668:
position, tokenIndex = position663, tokenIndex663
if buffer[position] != rune('h') {
goto l669
}
position++
goto l663
l669:
position, tokenIndex = position663, tokenIndex663
if buffer[position] != rune('b') {
goto l662
}
position++
}
l663:
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l662
}
position++
{
position670, tokenIndex670 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l670
}
position++
goto l671
l670:
position, tokenIndex = position670, tokenIndex670
}
l671:
goto l656
l662:
position, tokenIndex = position656, tokenIndex656
{
position673, tokenIndex673 := position, tokenIndex
if buffer[position] != rune('x') {
goto l674
}
position++
goto l673
l674:
position, tokenIndex = position673, tokenIndex673
if buffer[position] != rune('X') {
goto l672
}
position++
}
l673:
{
position675, tokenIndex675 := position, tokenIndex
if buffer[position] != rune('z') {
goto l676
}
position++
goto l675
l676:
position, tokenIndex = position675, tokenIndex675
if buffer[position] != rune('Z') {
goto l672
}
position++
}
l675:
{
position677, tokenIndex677 := position, tokenIndex
if buffer[position] != rune('r') {
goto l678
}
position++
goto l677
l678:
position, tokenIndex = position677, tokenIndex677
if buffer[position] != rune('R') {
goto l672
}
position++
}
l677:
goto l656
l672:
position, tokenIndex = position656, tokenIndex656
{
position680, tokenIndex680 := position, tokenIndex
if buffer[position] != rune('w') {
goto l681
}
position++
goto l680
l681:
position, tokenIndex = position680, tokenIndex680
if buffer[position] != rune('W') {
goto l679
}
position++
}
l680:
{
position682, tokenIndex682 := position, tokenIndex
if buffer[position] != rune('z') {
goto l683
}
position++
goto l682
l683:
position, tokenIndex = position682, tokenIndex682
if buffer[position] != rune('Z') {
goto l679
}
position++
}
l682:
{
position684, tokenIndex684 := position, tokenIndex
if buffer[position] != rune('r') {
goto l685
}
position++
goto l684
l685:
position, tokenIndex = position684, tokenIndex684
if buffer[position] != rune('R') {
goto l679
}
position++
}
l684:
goto l656
l679:
position, tokenIndex = position656, tokenIndex656
{
position687, tokenIndex687 := position, tokenIndex
if buffer[position] != rune('n') {
goto l688
}
position++
goto l687
l688:
position, tokenIndex = position687, tokenIndex687
if buffer[position] != rune('N') {
goto l686
}
position++
}
l687:
{
position689, tokenIndex689 := position, tokenIndex
if buffer[position] != rune('z') {
goto l690
}
position++
goto l689
l690:
position, tokenIndex = position689, tokenIndex689
if buffer[position] != rune('Z') {
goto l686
}
position++
}
l689:
{
position691, tokenIndex691 := position, tokenIndex
if buffer[position] != rune('c') {
goto l692
}
position++
goto l691
l692:
position, tokenIndex = position691, tokenIndex691
if buffer[position] != rune('C') {
goto l686
}
position++
}
l691:
{
position693, tokenIndex693 := position, tokenIndex
if buffer[position] != rune('v') {
goto l694
}
position++
goto l693
l694:
position, tokenIndex = position693, tokenIndex693
if buffer[position] != rune('V') {
goto l686
}
position++
}
l693:
goto l656
l686:
position, tokenIndex = position656, tokenIndex656
if !_rules[ruleSVE2PredicateRegister]() {
goto l695
}
goto l656
l695:
position, tokenIndex = position656, tokenIndex656
if !_rules[ruleARMVectorRegister]() {
goto l696
}
goto l656
l696:
position, tokenIndex = position656, tokenIndex656
if !_rules[ruleSVE2SpecialValue]() {
goto l697
}
goto l656
l697:
position, tokenIndex = position656, tokenIndex656
if buffer[position] != rune('{') {
goto l654
}
position++
{
position698, tokenIndex698 := position, tokenIndex
if !_rules[ruleWS]() {
goto l698
}
goto l699
l698:
position, tokenIndex = position698, tokenIndex698
}
l699:
if !_rules[ruleARMVectorRegister]() {
goto l654
}
l700:
{
position701, tokenIndex701 := position, tokenIndex
if buffer[position] != rune(',') {
goto l701
}
position++
{
position702, tokenIndex702 := position, tokenIndex
if !_rules[ruleWS]() {
goto l702
}
goto l703
l702:
position, tokenIndex = position702, tokenIndex702
}
l703:
if !_rules[ruleARMVectorRegister]() {
goto l701
}
goto l700
l701:
position, tokenIndex = position701, tokenIndex701
}
{
position704, tokenIndex704 := position, tokenIndex
if !_rules[ruleWS]() {
goto l704
}
goto l705
l704:
position, tokenIndex = position704, tokenIndex704
}
l705:
if buffer[position] != rune('}') {
goto l654
}
position++
{
position706, tokenIndex706 := position, tokenIndex
if buffer[position] != rune('[') {
goto l706
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l706
}
position++
{
position708, tokenIndex708 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l708
}
position++
goto l709
l708:
position, tokenIndex = position708, tokenIndex708
}
l709:
if buffer[position] != rune(']') {
goto l706
}
position++
goto l707
l706:
position, tokenIndex = position706, tokenIndex706
}
l707:
}
l656:
add(ruleARMRegister, position655)
}
return true
l654:
position, tokenIndex = position654, tokenIndex654
return false
},
/* 46 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 {
position710, tokenIndex710 := position, tokenIndex
{
position711 := position
{
position712, tokenIndex712 := position, tokenIndex
if buffer[position] != rune('p') {
goto l713
}
position++
goto l712
l713:
position, tokenIndex = position712, tokenIndex712
if buffer[position] != rune('v') {
goto l714
}
position++
goto l712
l714:
position, tokenIndex = position712, tokenIndex712
if buffer[position] != rune('z') {
goto l710
}
position++
}
l712:
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l710
}
position++
{
position715, tokenIndex715 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l715
}
position++
goto l716
l715:
position, tokenIndex = position715, tokenIndex715
}
l716:
{
position717, tokenIndex717 := position, tokenIndex
{
position718, tokenIndex718 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l719
}
position++
goto l718
l719:
position, tokenIndex = position718, tokenIndex718
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l720
}
position++
goto l718
l720:
position, tokenIndex = position718, tokenIndex718
{
position722, tokenIndex722 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l723
}
position++
goto l722
l723:
position, tokenIndex = position722, tokenIndex722
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l721
}
position++
}
l722:
goto l718
l721:
position, tokenIndex = position718, tokenIndex718
if buffer[position] != rune('_') {
goto l717
}
position++
}
l718:
goto l710
l717:
position, tokenIndex = position717, tokenIndex717
}
{
position724, tokenIndex724 := position, tokenIndex
if buffer[position] != rune('.') {
goto l724
}
position++
l726:
{
position727, tokenIndex727 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l727
}
position++
goto l726
l727:
position, tokenIndex = position727, tokenIndex727
}
{
position728, tokenIndex728 := position, tokenIndex
if buffer[position] != rune('b') {
goto l729
}
position++
goto l728
l729:
position, tokenIndex = position728, tokenIndex728
if buffer[position] != rune('s') {
goto l730
}
position++
goto l728
l730:
position, tokenIndex = position728, tokenIndex728
if buffer[position] != rune('d') {
goto l731
}
position++
goto l728
l731:
position, tokenIndex = position728, tokenIndex728
if buffer[position] != rune('h') {
goto l732
}
position++
goto l728
l732:
position, tokenIndex = position728, tokenIndex728
if buffer[position] != rune('q') {
goto l724
}
position++
}
l728:
{
position733, tokenIndex733 := position, tokenIndex
if buffer[position] != rune('[') {
goto l733
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l733
}
position++
{
position735, tokenIndex735 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l735
}
position++
goto l736
l735:
position, tokenIndex = position735, tokenIndex735
}
l736:
if buffer[position] != rune(']') {
goto l733
}
position++
goto l734
l733:
position, tokenIndex = position733, tokenIndex733
}
l734:
goto l725
l724:
position, tokenIndex = position724, tokenIndex724
}
l725:
add(ruleARMVectorRegister, position711)
}
return true
l710:
position, tokenIndex = position710, tokenIndex710
return false
},
/* 47 SVE2PredicateRegister <- <(('p' / 'P') [0-9] [0-9]? '/' ('m' / 'M' / ('z' / 'Z')))> */
func() bool {
position737, tokenIndex737 := position, tokenIndex
{
position738 := position
{
position739, tokenIndex739 := position, tokenIndex
if buffer[position] != rune('p') {
goto l740
}
position++
goto l739
l740:
position, tokenIndex = position739, tokenIndex739
if buffer[position] != rune('P') {
goto l737
}
position++
}
l739:
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l737
}
position++
{
position741, tokenIndex741 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l741
}
position++
goto l742
l741:
position, tokenIndex = position741, tokenIndex741
}
l742:
if buffer[position] != rune('/') {
goto l737
}
position++
{
position743, tokenIndex743 := position, tokenIndex
if buffer[position] != rune('m') {
goto l744
}
position++
goto l743
l744:
position, tokenIndex = position743, tokenIndex743
if buffer[position] != rune('M') {
goto l745
}
position++
goto l743
l745:
position, tokenIndex = position743, tokenIndex743
{
position746, tokenIndex746 := position, tokenIndex
if buffer[position] != rune('z') {
goto l747
}
position++
goto l746
l747:
position, tokenIndex = position746, tokenIndex746
if buffer[position] != rune('Z') {
goto l737
}
position++
}
l746:
}
l743:
add(ruleSVE2PredicateRegister, position738)
}
return true
l737:
position, tokenIndex = position737, tokenIndex737
return false
},
/* 48 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 {
position748, tokenIndex748 := position, tokenIndex
{
position749 := position
{
position750, tokenIndex750 := position, tokenIndex
{
position752, tokenIndex752 := position, tokenIndex
if buffer[position] != rune('p') {
goto l753
}
position++
goto l752
l753:
position, tokenIndex = position752, tokenIndex752
if buffer[position] != rune('P') {
goto l751
}
position++
}
l752:
{
position754, tokenIndex754 := position, tokenIndex
if buffer[position] != rune('o') {
goto l755
}
position++
goto l754
l755:
position, tokenIndex = position754, tokenIndex754
if buffer[position] != rune('O') {
goto l751
}
position++
}
l754:
{
position756, tokenIndex756 := position, tokenIndex
if buffer[position] != rune('w') {
goto l757
}
position++
goto l756
l757:
position, tokenIndex = position756, tokenIndex756
if buffer[position] != rune('W') {
goto l751
}
position++
}
l756:
if buffer[position] != rune('2') {
goto l751
}
position++
goto l750
l751:
position, tokenIndex = position750, tokenIndex750
{
position759, tokenIndex759 := position, tokenIndex
if buffer[position] != rune('v') {
goto l760
}
position++
goto l759
l760:
position, tokenIndex = position759, tokenIndex759
if buffer[position] != rune('V') {
goto l758
}
position++
}
l759:
{
position761, tokenIndex761 := position, tokenIndex
if buffer[position] != rune('l') {
goto l762
}
position++
goto l761
l762:
position, tokenIndex = position761, tokenIndex761
if buffer[position] != rune('L') {
goto l758
}
position++
}
l761:
{
position763, tokenIndex763 := position, tokenIndex
if buffer[position] != rune('1') {
goto l764
}
position++
goto l763
l764:
position, tokenIndex = position763, tokenIndex763
if buffer[position] != rune('2') {
goto l765
}
position++
goto l763
l765:
position, tokenIndex = position763, tokenIndex763
if buffer[position] != rune('3') {
goto l766
}
position++
goto l763
l766:
position, tokenIndex = position763, tokenIndex763
if buffer[position] != rune('4') {
goto l767
}
position++
goto l763
l767:
position, tokenIndex = position763, tokenIndex763
if buffer[position] != rune('5') {
goto l768
}
position++
goto l763
l768:
position, tokenIndex = position763, tokenIndex763
if buffer[position] != rune('6') {
goto l769
}
position++
goto l763
l769:
position, tokenIndex = position763, tokenIndex763
if buffer[position] != rune('7') {
goto l770
}
position++
goto l763
l770:
position, tokenIndex = position763, tokenIndex763
if buffer[position] != rune('8') {
goto l758
}
position++
}
l763:
{
position771, tokenIndex771 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l771
}
position++
goto l758
l771:
position, tokenIndex = position771, tokenIndex771
}
goto l750
l758:
position, tokenIndex = position750, tokenIndex750
{
position773, tokenIndex773 := position, tokenIndex
if buffer[position] != rune('v') {
goto l774
}
position++
goto l773
l774:
position, tokenIndex = position773, tokenIndex773
if buffer[position] != rune('V') {
goto l772
}
position++
}
l773:
{
position775, tokenIndex775 := position, tokenIndex
if buffer[position] != rune('l') {
goto l776
}
position++
goto l775
l776:
position, tokenIndex = position775, tokenIndex775
if buffer[position] != rune('L') {
goto l772
}
position++
}
l775:
if buffer[position] != rune('1') {
goto l772
}
position++
if buffer[position] != rune('6') {
goto l772
}
position++
goto l750
l772:
position, tokenIndex = position750, tokenIndex750
{
position778, tokenIndex778 := position, tokenIndex
if buffer[position] != rune('v') {
goto l779
}
position++
goto l778
l779:
position, tokenIndex = position778, tokenIndex778
if buffer[position] != rune('V') {
goto l777
}
position++
}
l778:
{
position780, tokenIndex780 := position, tokenIndex
if buffer[position] != rune('l') {
goto l781
}
position++
goto l780
l781:
position, tokenIndex = position780, tokenIndex780
if buffer[position] != rune('L') {
goto l777
}
position++
}
l780:
if buffer[position] != rune('3') {
goto l777
}
position++
if buffer[position] != rune('2') {
goto l777
}
position++
goto l750
l777:
position, tokenIndex = position750, tokenIndex750
{
position783, tokenIndex783 := position, tokenIndex
if buffer[position] != rune('v') {
goto l784
}
position++
goto l783
l784:
position, tokenIndex = position783, tokenIndex783
if buffer[position] != rune('V') {
goto l782
}
position++
}
l783:
{
position785, tokenIndex785 := position, tokenIndex
if buffer[position] != rune('l') {
goto l786
}
position++
goto l785
l786:
position, tokenIndex = position785, tokenIndex785
if buffer[position] != rune('L') {
goto l782
}
position++
}
l785:
if buffer[position] != rune('6') {
goto l782
}
position++
if buffer[position] != rune('4') {
goto l782
}
position++
goto l750
l782:
position, tokenIndex = position750, tokenIndex750
{
position788, tokenIndex788 := position, tokenIndex
if buffer[position] != rune('v') {
goto l789
}
position++
goto l788
l789:
position, tokenIndex = position788, tokenIndex788
if buffer[position] != rune('V') {
goto l787
}
position++
}
l788:
{
position790, tokenIndex790 := position, tokenIndex
if buffer[position] != rune('l') {
goto l791
}
position++
goto l790
l791:
position, tokenIndex = position790, tokenIndex790
if buffer[position] != rune('L') {
goto l787
}
position++
}
l790:
if buffer[position] != rune('1') {
goto l787
}
position++
if buffer[position] != rune('2') {
goto l787
}
position++
if buffer[position] != rune('8') {
goto l787
}
position++
goto l750
l787:
position, tokenIndex = position750, tokenIndex750
{
position793, tokenIndex793 := position, tokenIndex
if buffer[position] != rune('v') {
goto l794
}
position++
goto l793
l794:
position, tokenIndex = position793, tokenIndex793
if buffer[position] != rune('V') {
goto l792
}
position++
}
l793:
{
position795, tokenIndex795 := position, tokenIndex
if buffer[position] != rune('l') {
goto l796
}
position++
goto l795
l796:
position, tokenIndex = position795, tokenIndex795
if buffer[position] != rune('L') {
goto l792
}
position++
}
l795:
if buffer[position] != rune('2') {
goto l792
}
position++
if buffer[position] != rune('5') {
goto l792
}
position++
if buffer[position] != rune('6') {
goto l792
}
position++
goto l750
l792:
position, tokenIndex = position750, tokenIndex750
{
position798, tokenIndex798 := position, tokenIndex
if buffer[position] != rune('m') {
goto l799
}
position++
goto l798
l799:
position, tokenIndex = position798, tokenIndex798
if buffer[position] != rune('M') {
goto l797
}
position++
}
l798:
{
position800, tokenIndex800 := position, tokenIndex
if buffer[position] != rune('u') {
goto l801
}
position++
goto l800
l801:
position, tokenIndex = position800, tokenIndex800
if buffer[position] != rune('U') {
goto l797
}
position++
}
l800:
{
position802, tokenIndex802 := position, tokenIndex
if buffer[position] != rune('l') {
goto l803
}
position++
goto l802
l803:
position, tokenIndex = position802, tokenIndex802
if buffer[position] != rune('L') {
goto l797
}
position++
}
l802:
if buffer[position] != rune('3') {
goto l797
}
position++
goto l750
l797:
position, tokenIndex = position750, tokenIndex750
{
position805, tokenIndex805 := position, tokenIndex
if buffer[position] != rune('m') {
goto l806
}
position++
goto l805
l806:
position, tokenIndex = position805, tokenIndex805
if buffer[position] != rune('M') {
goto l804
}
position++
}
l805:
{
position807, tokenIndex807 := position, tokenIndex
if buffer[position] != rune('u') {
goto l808
}
position++
goto l807
l808:
position, tokenIndex = position807, tokenIndex807
if buffer[position] != rune('U') {
goto l804
}
position++
}
l807:
{
position809, tokenIndex809 := position, tokenIndex
if buffer[position] != rune('l') {
goto l810
}
position++
goto l809
l810:
position, tokenIndex = position809, tokenIndex809
if buffer[position] != rune('L') {
goto l804
}
position++
}
l809:
if buffer[position] != rune('4') {
goto l804
}
position++
goto l750
l804:
position, tokenIndex = position750, tokenIndex750
{
position811, tokenIndex811 := position, tokenIndex
if buffer[position] != rune('a') {
goto l812
}
position++
goto l811
l812:
position, tokenIndex = position811, tokenIndex811
if buffer[position] != rune('A') {
goto l748
}
position++
}
l811:
{
position813, tokenIndex813 := position, tokenIndex
if buffer[position] != rune('l') {
goto l814
}
position++
goto l813
l814:
position, tokenIndex = position813, tokenIndex813
if buffer[position] != rune('L') {
goto l748
}
position++
}
l813:
{
position815, tokenIndex815 := position, tokenIndex
if buffer[position] != rune('l') {
goto l816
}
position++
goto l815
l816:
position, tokenIndex = position815, tokenIndex815
if buffer[position] != rune('L') {
goto l748
}
position++
}
l815:
}
l750:
{
position817, tokenIndex817 := position, tokenIndex
{
position818, tokenIndex818 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l819
}
position++
goto l818
l819:
position, tokenIndex = position818, tokenIndex818
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l820
}
position++
goto l818
l820:
position, tokenIndex = position818, tokenIndex818
{
position822, tokenIndex822 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l823
}
position++
goto l822
l823:
position, tokenIndex = position822, tokenIndex822
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l821
}
position++
}
l822:
goto l818
l821:
position, tokenIndex = position818, tokenIndex818
if buffer[position] != rune('_') {
goto l817
}
position++
}
l818:
goto l748
l817:
position, tokenIndex = position817, tokenIndex817
}
add(ruleSVE2SpecialValue, position749)
}
return true
l748:
position, tokenIndex = position748, tokenIndex748
return false
},
/* 49 MemoryRef <- <((SymbolRef BaseIndexScale) / SymbolRef / Low12BitsSymbolRef / (Offset* BaseIndexScale) / (SegmentRegister Offset BaseIndexScale) / (SegmentRegister BaseIndexScale) / (SegmentRegister Offset) / ARMBaseIndexScale / BaseIndexScale)> */
func() bool {
position824, tokenIndex824 := position, tokenIndex
{
position825 := position
{
position826, tokenIndex826 := position, tokenIndex
if !_rules[ruleSymbolRef]() {
goto l827
}
if !_rules[ruleBaseIndexScale]() {
goto l827
}
goto l826
l827:
position, tokenIndex = position826, tokenIndex826
if !_rules[ruleSymbolRef]() {
goto l828
}
goto l826
l828:
position, tokenIndex = position826, tokenIndex826
if !_rules[ruleLow12BitsSymbolRef]() {
goto l829
}
goto l826
l829:
position, tokenIndex = position826, tokenIndex826
l831:
{
position832, tokenIndex832 := position, tokenIndex
if !_rules[ruleOffset]() {
goto l832
}
goto l831
l832:
position, tokenIndex = position832, tokenIndex832
}
if !_rules[ruleBaseIndexScale]() {
goto l830
}
goto l826
l830:
position, tokenIndex = position826, tokenIndex826
if !_rules[ruleSegmentRegister]() {
goto l833
}
if !_rules[ruleOffset]() {
goto l833
}
if !_rules[ruleBaseIndexScale]() {
goto l833
}
goto l826
l833:
position, tokenIndex = position826, tokenIndex826
if !_rules[ruleSegmentRegister]() {
goto l834
}
if !_rules[ruleBaseIndexScale]() {
goto l834
}
goto l826
l834:
position, tokenIndex = position826, tokenIndex826
if !_rules[ruleSegmentRegister]() {
goto l835
}
if !_rules[ruleOffset]() {
goto l835
}
goto l826
l835:
position, tokenIndex = position826, tokenIndex826
if !_rules[ruleARMBaseIndexScale]() {
goto l836
}
goto l826
l836:
position, tokenIndex = position826, tokenIndex826
if !_rules[ruleBaseIndexScale]() {
goto l824
}
}
l826:
add(ruleMemoryRef, position825)
}
return true
l824:
position, tokenIndex = position824, tokenIndex824
return false
},
/* 50 SymbolRef <- <((Offset* '+')? (LocalSymbol / SymbolName) Offset* ('@' Section Offset*)?)> */
func() bool {
position837, tokenIndex837 := position, tokenIndex
{
position838 := position
{
position839, tokenIndex839 := position, tokenIndex
l841:
{
position842, tokenIndex842 := position, tokenIndex
if !_rules[ruleOffset]() {
goto l842
}
goto l841
l842:
position, tokenIndex = position842, tokenIndex842
}
if buffer[position] != rune('+') {
goto l839
}
position++
goto l840
l839:
position, tokenIndex = position839, tokenIndex839
}
l840:
{
position843, tokenIndex843 := position, tokenIndex
if !_rules[ruleLocalSymbol]() {
goto l844
}
goto l843
l844:
position, tokenIndex = position843, tokenIndex843
if !_rules[ruleSymbolName]() {
goto l837
}
}
l843:
l845:
{
position846, tokenIndex846 := position, tokenIndex
if !_rules[ruleOffset]() {
goto l846
}
goto l845
l846:
position, tokenIndex = position846, tokenIndex846
}
{
position847, tokenIndex847 := position, tokenIndex
if buffer[position] != rune('@') {
goto l847
}
position++
if !_rules[ruleSection]() {
goto l847
}
l849:
{
position850, tokenIndex850 := position, tokenIndex
if !_rules[ruleOffset]() {
goto l850
}
goto l849
l850:
position, tokenIndex = position850, tokenIndex850
}
goto l848
l847:
position, tokenIndex = position847, tokenIndex847
}
l848:
add(ruleSymbolRef, position838)
}
return true
l837:
position, tokenIndex = position837, tokenIndex837
return false
},
/* 51 Low12BitsSymbolRef <- <(':' ('l' / 'L') ('o' / 'O') '1' '2' ':' (LocalSymbol / SymbolName) Offset?)> */
func() bool {
position851, tokenIndex851 := position, tokenIndex
{
position852 := position
if buffer[position] != rune(':') {
goto l851
}
position++
{
position853, tokenIndex853 := position, tokenIndex
if buffer[position] != rune('l') {
goto l854
}
position++
goto l853
l854:
position, tokenIndex = position853, tokenIndex853
if buffer[position] != rune('L') {
goto l851
}
position++
}
l853:
{
position855, tokenIndex855 := position, tokenIndex
if buffer[position] != rune('o') {
goto l856
}
position++
goto l855
l856:
position, tokenIndex = position855, tokenIndex855
if buffer[position] != rune('O') {
goto l851
}
position++
}
l855:
if buffer[position] != rune('1') {
goto l851
}
position++
if buffer[position] != rune('2') {
goto l851
}
position++
if buffer[position] != rune(':') {
goto l851
}
position++
{
position857, tokenIndex857 := position, tokenIndex
if !_rules[ruleLocalSymbol]() {
goto l858
}
goto l857
l858:
position, tokenIndex = position857, tokenIndex857
if !_rules[ruleSymbolName]() {
goto l851
}
}
l857:
{
position859, tokenIndex859 := position, tokenIndex
if !_rules[ruleOffset]() {
goto l859
}
goto l860
l859:
position, tokenIndex = position859, tokenIndex859
}
l860:
add(ruleLow12BitsSymbolRef, position852)
}
return true
l851:
position, tokenIndex = position851, tokenIndex851
return false
},
/* 52 ARMBaseIndexScale <- <('[' ARMRegister (',' WS? (('#' Offset (('*' [0-9]+) / ('*' '(' [0-9]+ Operator [0-9]+ ')') / ('+' [0-9]+)*)?) / ARMGOTLow12 / Low12BitsSymbolRef / ARMRegister) (',' WS? ARMConstantTweak)?)? ']' ARMPostincrement?)> */
func() bool {
position861, tokenIndex861 := position, tokenIndex
{
position862 := position
if buffer[position] != rune('[') {
goto l861
}
position++
if !_rules[ruleARMRegister]() {
goto l861
}
{
position863, tokenIndex863 := position, tokenIndex
if buffer[position] != rune(',') {
goto l863
}
position++
{
position865, tokenIndex865 := position, tokenIndex
if !_rules[ruleWS]() {
goto l865
}
goto l866
l865:
position, tokenIndex = position865, tokenIndex865
}
l866:
{
position867, tokenIndex867 := position, tokenIndex
if buffer[position] != rune('#') {
goto l868
}
position++
if !_rules[ruleOffset]() {
goto l868
}
{
position869, tokenIndex869 := position, tokenIndex
{
position871, tokenIndex871 := position, tokenIndex
if buffer[position] != rune('*') {
goto l872
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l872
}
position++
l873:
{
position874, tokenIndex874 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l874
}
position++
goto l873
l874:
position, tokenIndex = position874, tokenIndex874
}
goto l871
l872:
position, tokenIndex = position871, tokenIndex871
if buffer[position] != rune('*') {
goto l875
}
position++
if buffer[position] != rune('(') {
goto l875
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l875
}
position++
l876:
{
position877, tokenIndex877 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l877
}
position++
goto l876
l877:
position, tokenIndex = position877, tokenIndex877
}
if !_rules[ruleOperator]() {
goto l875
}
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l875
}
position++
l878:
{
position879, tokenIndex879 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l879
}
position++
goto l878
l879:
position, tokenIndex = position879, tokenIndex879
}
if buffer[position] != rune(')') {
goto l875
}
position++
goto l871
l875:
position, tokenIndex = position871, tokenIndex871
l880:
{
position881, tokenIndex881 := position, tokenIndex
if buffer[position] != rune('+') {
goto l881
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l881
}
position++
l882:
{
position883, tokenIndex883 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l883
}
position++
goto l882
l883:
position, tokenIndex = position883, tokenIndex883
}
goto l880
l881:
position, tokenIndex = position881, tokenIndex881
}
}
l871:
goto l870
position, tokenIndex = position869, tokenIndex869
}
l870:
goto l867
l868:
position, tokenIndex = position867, tokenIndex867
if !_rules[ruleARMGOTLow12]() {
goto l884
}
goto l867
l884:
position, tokenIndex = position867, tokenIndex867
if !_rules[ruleLow12BitsSymbolRef]() {
goto l885
}
goto l867
l885:
position, tokenIndex = position867, tokenIndex867
if !_rules[ruleARMRegister]() {
goto l863
}
}
l867:
{
position886, tokenIndex886 := position, tokenIndex
if buffer[position] != rune(',') {
goto l886
}
position++
{
position888, tokenIndex888 := position, tokenIndex
if !_rules[ruleWS]() {
goto l888
}
goto l889
l888:
position, tokenIndex = position888, tokenIndex888
}
l889:
if !_rules[ruleARMConstantTweak]() {
goto l886
}
goto l887
l886:
position, tokenIndex = position886, tokenIndex886
}
l887:
goto l864
l863:
position, tokenIndex = position863, tokenIndex863
}
l864:
if buffer[position] != rune(']') {
goto l861
}
position++
{
position890, tokenIndex890 := position, tokenIndex
if !_rules[ruleARMPostincrement]() {
goto l890
}
goto l891
l890:
position, tokenIndex = position890, tokenIndex890
}
l891:
add(ruleARMBaseIndexScale, position862)
}
return true
l861:
position, tokenIndex = position861, tokenIndex861
return false
},
/* 53 ARMGOTLow12 <- <(':' ('g' / 'G') ('o' / 'O') ('t' / 'T') '_' ('l' / 'L') ('o' / 'O') '1' '2' ':' SymbolName)> */
func() bool {
position892, tokenIndex892 := position, tokenIndex
{
position893 := position
if buffer[position] != rune(':') {
goto l892
}
position++
{
position894, tokenIndex894 := position, tokenIndex
if buffer[position] != rune('g') {
goto l895
}
position++
goto l894
l895:
position, tokenIndex = position894, tokenIndex894
if buffer[position] != rune('G') {
goto l892
}
position++
}
l894:
{
position896, tokenIndex896 := position, tokenIndex
if buffer[position] != rune('o') {
goto l897
}
position++
goto l896
l897:
position, tokenIndex = position896, tokenIndex896
if buffer[position] != rune('O') {
goto l892
}
position++
}
l896:
{
position898, tokenIndex898 := position, tokenIndex
if buffer[position] != rune('t') {
goto l899
}
position++
goto l898
l899:
position, tokenIndex = position898, tokenIndex898
if buffer[position] != rune('T') {
goto l892
}
position++
}
l898:
if buffer[position] != rune('_') {
goto l892
}
position++
{
position900, tokenIndex900 := position, tokenIndex
if buffer[position] != rune('l') {
goto l901
}
position++
goto l900
l901:
position, tokenIndex = position900, tokenIndex900
if buffer[position] != rune('L') {
goto l892
}
position++
}
l900:
{
position902, tokenIndex902 := position, tokenIndex
if buffer[position] != rune('o') {
goto l903
}
position++
goto l902
l903:
position, tokenIndex = position902, tokenIndex902
if buffer[position] != rune('O') {
goto l892
}
position++
}
l902:
if buffer[position] != rune('1') {
goto l892
}
position++
if buffer[position] != rune('2') {
goto l892
}
position++
if buffer[position] != rune(':') {
goto l892
}
position++
if !_rules[ruleSymbolName]() {
goto l892
}
add(ruleARMGOTLow12, position893)
}
return true
l892:
position, tokenIndex = position892, tokenIndex892
return false
},
/* 54 ARMPostincrement <- <'!'> */
func() bool {
position904, tokenIndex904 := position, tokenIndex
{
position905 := position
if buffer[position] != rune('!') {
goto l904
}
position++
add(ruleARMPostincrement, position905)
}
return true
l904:
position, tokenIndex = position904, tokenIndex904
return false
},
/* 55 BaseIndexScale <- <('(' RegisterOrConstant? WS? (',' WS? RegisterOrConstant WS? (',' [0-9]+)?)? ')')> */
func() bool {
position906, tokenIndex906 := position, tokenIndex
{
position907 := position
if buffer[position] != rune('(') {
goto l906
}
position++
{
position908, tokenIndex908 := position, tokenIndex
if !_rules[ruleRegisterOrConstant]() {
goto l908
}
goto l909
l908:
position, tokenIndex = position908, tokenIndex908
}
l909:
{
position910, tokenIndex910 := position, tokenIndex
if !_rules[ruleWS]() {
goto l910
}
goto l911
l910:
position, tokenIndex = position910, tokenIndex910
}
l911:
{
position912, tokenIndex912 := position, tokenIndex
if buffer[position] != rune(',') {
goto l912
}
position++
{
position914, tokenIndex914 := position, tokenIndex
if !_rules[ruleWS]() {
goto l914
}
goto l915
l914:
position, tokenIndex = position914, tokenIndex914
}
l915:
if !_rules[ruleRegisterOrConstant]() {
goto l912
}
{
position916, tokenIndex916 := position, tokenIndex
if !_rules[ruleWS]() {
goto l916
}
goto l917
l916:
position, tokenIndex = position916, tokenIndex916
}
l917:
{
position918, tokenIndex918 := position, tokenIndex
if buffer[position] != rune(',') {
goto l918
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l918
}
position++
l920:
{
position921, tokenIndex921 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l921
}
position++
goto l920
l921:
position, tokenIndex = position921, tokenIndex921
}
goto l919
l918:
position, tokenIndex = position918, tokenIndex918
}
l919:
goto l913
l912:
position, tokenIndex = position912, tokenIndex912
}
l913:
if buffer[position] != rune(')') {
goto l906
}
position++
add(ruleBaseIndexScale, position907)
}
return true
l906:
position, tokenIndex = position906, tokenIndex906
return false
},
/* 56 Operator <- <('+' / '-')> */
func() bool {
position922, tokenIndex922 := position, tokenIndex
{
position923 := position
{
position924, tokenIndex924 := position, tokenIndex
if buffer[position] != rune('+') {
goto l925
}
position++
goto l924
l925:
position, tokenIndex = position924, tokenIndex924
if buffer[position] != rune('-') {
goto l922
}
position++
}
l924:
add(ruleOperator, position923)
}
return true
l922:
position, tokenIndex = position922, tokenIndex922
return false
},
/* 57 Offset <- <('+'? '-'? (('0' ('b' / 'B') ('0' / '1')+) / ('0' ('x' / 'X') ([0-9] / [0-9] / ([a-f] / [A-F]))+) / [0-9]+))> */
func() bool {
position926, tokenIndex926 := position, tokenIndex
{
position927 := position
{
position928, tokenIndex928 := position, tokenIndex
if buffer[position] != rune('+') {
goto l928
}
position++
goto l929
l928:
position, tokenIndex = position928, tokenIndex928
}
l929:
{
position930, tokenIndex930 := position, tokenIndex
if buffer[position] != rune('-') {
goto l930
}
position++
goto l931
l930:
position, tokenIndex = position930, tokenIndex930
}
l931:
{
position932, tokenIndex932 := position, tokenIndex
if buffer[position] != rune('0') {
goto l933
}
position++
{
position934, tokenIndex934 := position, tokenIndex
if buffer[position] != rune('b') {
goto l935
}
position++
goto l934
l935:
position, tokenIndex = position934, tokenIndex934
if buffer[position] != rune('B') {
goto l933
}
position++
}
l934:
{
position938, tokenIndex938 := position, tokenIndex
if buffer[position] != rune('0') {
goto l939
}
position++
goto l938
l939:
position, tokenIndex = position938, tokenIndex938
if buffer[position] != rune('1') {
goto l933
}
position++
}
l938:
l936:
{
position937, tokenIndex937 := position, tokenIndex
{
position940, tokenIndex940 := position, tokenIndex
if buffer[position] != rune('0') {
goto l941
}
position++
goto l940
l941:
position, tokenIndex = position940, tokenIndex940
if buffer[position] != rune('1') {
goto l937
}
position++
}
l940:
goto l936
l937:
position, tokenIndex = position937, tokenIndex937
}
goto l932
l933:
position, tokenIndex = position932, tokenIndex932
if buffer[position] != rune('0') {
goto l942
}
position++
{
position943, tokenIndex943 := position, tokenIndex
if buffer[position] != rune('x') {
goto l944
}
position++
goto l943
l944:
position, tokenIndex = position943, tokenIndex943
if buffer[position] != rune('X') {
goto l942
}
position++
}
l943:
{
position947, tokenIndex947 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l948
}
position++
goto l947
l948:
position, tokenIndex = position947, tokenIndex947
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l949
}
position++
goto l947
l949:
position, tokenIndex = position947, tokenIndex947
{
position950, tokenIndex950 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('f') {
goto l951
}
position++
goto l950
l951:
position, tokenIndex = position950, tokenIndex950
if c := buffer[position]; c < rune('A') || c > rune('F') {
goto l942
}
position++
}
l950:
}
l947:
l945:
{
position946, tokenIndex946 := position, tokenIndex
{
position952, tokenIndex952 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l953
}
position++
goto l952
l953:
position, tokenIndex = position952, tokenIndex952
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l954
}
position++
goto l952
l954:
position, tokenIndex = position952, tokenIndex952
{
position955, tokenIndex955 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('f') {
goto l956
}
position++
goto l955
l956:
position, tokenIndex = position955, tokenIndex955
if c := buffer[position]; c < rune('A') || c > rune('F') {
goto l946
}
position++
}
l955:
}
l952:
goto l945
l946:
position, tokenIndex = position946, tokenIndex946
}
goto l932
l942:
position, tokenIndex = position932, tokenIndex932
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l926
}
position++
l957:
{
position958, tokenIndex958 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l958
}
position++
goto l957
l958:
position, tokenIndex = position958, tokenIndex958
}
}
l932:
add(ruleOffset, position927)
}
return true
l926:
position, tokenIndex = position926, tokenIndex926
return false
},
/* 58 Section <- <([a-z] / [A-Z] / '@')+> */
func() bool {
position959, tokenIndex959 := position, tokenIndex
{
position960 := position
{
position963, tokenIndex963 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l964
}
position++
goto l963
l964:
position, tokenIndex = position963, tokenIndex963
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l965
}
position++
goto l963
l965:
position, tokenIndex = position963, tokenIndex963
if buffer[position] != rune('@') {
goto l959
}
position++
}
l963:
l961:
{
position962, tokenIndex962 := position, tokenIndex
{
position966, tokenIndex966 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l967
}
position++
goto l966
l967:
position, tokenIndex = position966, tokenIndex966
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l968
}
position++
goto l966
l968:
position, tokenIndex = position966, tokenIndex966
if buffer[position] != rune('@') {
goto l962
}
position++
}
l966:
goto l961
l962:
position, tokenIndex = position962, tokenIndex962
}
add(ruleSection, position960)
}
return true
l959:
position, tokenIndex = position959, tokenIndex959
return false
},
/* 59 SegmentRegister <- <('%' ([c-g] / 's') ('s' ':'))> */
func() bool {
position969, tokenIndex969 := position, tokenIndex
{
position970 := position
if buffer[position] != rune('%') {
goto l969
}
position++
{
position971, tokenIndex971 := position, tokenIndex
if c := buffer[position]; c < rune('c') || c > rune('g') {
goto l972
}
position++
goto l971
l972:
position, tokenIndex = position971, tokenIndex971
if buffer[position] != rune('s') {
goto l969
}
position++
}
l971:
if buffer[position] != rune('s') {
goto l969
}
position++
if buffer[position] != rune(':') {
goto l969
}
position++
add(ruleSegmentRegister, position970)
}
return true
l969:
position, tokenIndex = position969, tokenIndex969
return false
},
}
p.rules = _rules
return nil
}