blob: aa9313604eb9ed0523ac5f3470f7d6648b8b31b0 [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 <- <(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[ruleOffset]() {
goto l315
}
goto l314
l315:
position, tokenIndex = position314, tokenIndex314
if !_rules[ruleSymbolType]() {
goto l316
}
goto l314
l316:
position, tokenIndex = position314, tokenIndex314
if !_rules[ruleLocalSymbol]() {
goto l317
}
{
position318, tokenIndex318 := position, tokenIndex
if !_rules[ruleTCMarker]() {
goto l318
}
goto l319
l318:
position, tokenIndex = position318, tokenIndex318
}
l319:
goto l314
l317:
position, tokenIndex = position314, tokenIndex314
if !_rules[ruleSymbolName]() {
goto l320
}
if !_rules[ruleOffset]() {
goto l320
}
goto l314
l320:
position, tokenIndex = position314, tokenIndex314
if !_rules[ruleSymbolName]() {
goto l321
}
{
position322, tokenIndex322 := position, tokenIndex
if !_rules[ruleTCMarker]() {
goto l322
}
goto l323
l322:
position, tokenIndex = position322, tokenIndex322
}
l323:
goto l314
l321:
position, tokenIndex = position314, tokenIndex314
if !_rules[ruleDot]() {
goto l324
}
goto l314
l324:
position, tokenIndex = position314, tokenIndex314
if !_rules[ruleOpenParen]() {
goto l312
}
{
position325, tokenIndex325 := position, tokenIndex
if !_rules[ruleWS]() {
goto l325
}
goto l326
l325:
position, tokenIndex = position325, tokenIndex325
}
l326:
if !_rules[ruleSymbolExpr]() {
goto l312
}
{
position327, tokenIndex327 := position, tokenIndex
if !_rules[ruleWS]() {
goto l327
}
goto l328
l327:
position, tokenIndex = position327, tokenIndex327
}
l328:
if !_rules[ruleCloseParen]() {
goto l312
}
}
l314:
add(ruleSymbolAtom, position313)
}
return true
l312:
position, tokenIndex = position312, tokenIndex312
return false
},
/* 18 SymbolOperator <- <('+' / '-' / '|' / ('<' '<') / ('>' '>'))> */
func() bool {
position329, tokenIndex329 := position, tokenIndex
{
position330 := position
{
position331, tokenIndex331 := position, tokenIndex
if buffer[position] != rune('+') {
goto l332
}
position++
goto l331
l332:
position, tokenIndex = position331, tokenIndex331
if buffer[position] != rune('-') {
goto l333
}
position++
goto l331
l333:
position, tokenIndex = position331, tokenIndex331
if buffer[position] != rune('|') {
goto l334
}
position++
goto l331
l334:
position, tokenIndex = position331, tokenIndex331
if buffer[position] != rune('<') {
goto l335
}
position++
if buffer[position] != rune('<') {
goto l335
}
position++
goto l331
l335:
position, tokenIndex = position331, tokenIndex331
if buffer[position] != rune('>') {
goto l329
}
position++
if buffer[position] != rune('>') {
goto l329
}
position++
}
l331:
add(ruleSymbolOperator, position330)
}
return true
l329:
position, tokenIndex = position329, tokenIndex329
return false
},
/* 19 OpenParen <- <'('> */
func() bool {
position336, tokenIndex336 := position, tokenIndex
{
position337 := position
if buffer[position] != rune('(') {
goto l336
}
position++
add(ruleOpenParen, position337)
}
return true
l336:
position, tokenIndex = position336, tokenIndex336
return false
},
/* 20 CloseParen <- <')'> */
func() bool {
position338, tokenIndex338 := position, tokenIndex
{
position339 := position
if buffer[position] != rune(')') {
goto l338
}
position++
add(ruleCloseParen, position339)
}
return true
l338:
position, tokenIndex = position338, tokenIndex338
return false
},
/* 21 SymbolType <- <(('@' / '%') (('f' 'u' 'n' 'c' 't' 'i' 'o' 'n') / ('o' 'b' 'j' 'e' 'c' 't')))> */
func() bool {
position340, tokenIndex340 := position, tokenIndex
{
position341 := position
{
position342, tokenIndex342 := position, tokenIndex
if buffer[position] != rune('@') {
goto l343
}
position++
goto l342
l343:
position, tokenIndex = position342, tokenIndex342
if buffer[position] != rune('%') {
goto l340
}
position++
}
l342:
{
position344, tokenIndex344 := position, tokenIndex
if buffer[position] != rune('f') {
goto l345
}
position++
if buffer[position] != rune('u') {
goto l345
}
position++
if buffer[position] != rune('n') {
goto l345
}
position++
if buffer[position] != rune('c') {
goto l345
}
position++
if buffer[position] != rune('t') {
goto l345
}
position++
if buffer[position] != rune('i') {
goto l345
}
position++
if buffer[position] != rune('o') {
goto l345
}
position++
if buffer[position] != rune('n') {
goto l345
}
position++
goto l344
l345:
position, tokenIndex = position344, tokenIndex344
if buffer[position] != rune('o') {
goto l340
}
position++
if buffer[position] != rune('b') {
goto l340
}
position++
if buffer[position] != rune('j') {
goto l340
}
position++
if buffer[position] != rune('e') {
goto l340
}
position++
if buffer[position] != rune('c') {
goto l340
}
position++
if buffer[position] != rune('t') {
goto l340
}
position++
}
l344:
add(ruleSymbolType, position341)
}
return true
l340:
position, tokenIndex = position340, tokenIndex340
return false
},
/* 22 Dot <- <'.'> */
func() bool {
position346, tokenIndex346 := position, tokenIndex
{
position347 := position
if buffer[position] != rune('.') {
goto l346
}
position++
add(ruleDot, position347)
}
return true
l346:
position, tokenIndex = position346, tokenIndex346
return false
},
/* 23 TCMarker <- <('[' 'T' 'C' ']')> */
func() bool {
position348, tokenIndex348 := position, tokenIndex
{
position349 := position
if buffer[position] != rune('[') {
goto l348
}
position++
if buffer[position] != rune('T') {
goto l348
}
position++
if buffer[position] != rune('C') {
goto l348
}
position++
if buffer[position] != rune(']') {
goto l348
}
position++
add(ruleTCMarker, position349)
}
return true
l348:
position, tokenIndex = position348, tokenIndex348
return false
},
/* 24 EscapedChar <- <('\\' .)> */
func() bool {
position350, tokenIndex350 := position, tokenIndex
{
position351 := position
if buffer[position] != rune('\\') {
goto l350
}
position++
if !matchDot() {
goto l350
}
add(ruleEscapedChar, position351)
}
return true
l350:
position, tokenIndex = position350, tokenIndex350
return false
},
/* 25 WS <- <(' ' / '\t')+> */
func() bool {
position352, tokenIndex352 := position, tokenIndex
{
position353 := position
{
position356, tokenIndex356 := position, tokenIndex
if buffer[position] != rune(' ') {
goto l357
}
position++
goto l356
l357:
position, tokenIndex = position356, tokenIndex356
if buffer[position] != rune('\t') {
goto l352
}
position++
}
l356:
l354:
{
position355, tokenIndex355 := position, tokenIndex
{
position358, tokenIndex358 := position, tokenIndex
if buffer[position] != rune(' ') {
goto l359
}
position++
goto l358
l359:
position, tokenIndex = position358, tokenIndex358
if buffer[position] != rune('\t') {
goto l355
}
position++
}
l358:
goto l354
l355:
position, tokenIndex = position355, tokenIndex355
}
add(ruleWS, position353)
}
return true
l352:
position, tokenIndex = position352, tokenIndex352
return false
},
/* 26 Comment <- <((('/' '/') / '#') (!'\n' .)*)> */
func() bool {
position360, tokenIndex360 := position, tokenIndex
{
position361 := position
{
position362, tokenIndex362 := position, tokenIndex
if buffer[position] != rune('/') {
goto l363
}
position++
if buffer[position] != rune('/') {
goto l363
}
position++
goto l362
l363:
position, tokenIndex = position362, tokenIndex362
if buffer[position] != rune('#') {
goto l360
}
position++
}
l362:
l364:
{
position365, tokenIndex365 := position, tokenIndex
{
position366, tokenIndex366 := position, tokenIndex
if buffer[position] != rune('\n') {
goto l366
}
position++
goto l365
l366:
position, tokenIndex = position366, tokenIndex366
}
if !matchDot() {
goto l365
}
goto l364
l365:
position, tokenIndex = position365, tokenIndex365
}
add(ruleComment, position361)
}
return true
l360:
position, tokenIndex = position360, tokenIndex360
return false
},
/* 27 Label <- <((LocalSymbol / LocalLabel / SymbolName) ':')> */
func() bool {
position367, tokenIndex367 := position, tokenIndex
{
position368 := position
{
position369, tokenIndex369 := position, tokenIndex
if !_rules[ruleLocalSymbol]() {
goto l370
}
goto l369
l370:
position, tokenIndex = position369, tokenIndex369
if !_rules[ruleLocalLabel]() {
goto l371
}
goto l369
l371:
position, tokenIndex = position369, tokenIndex369
if !_rules[ruleSymbolName]() {
goto l367
}
}
l369:
if buffer[position] != rune(':') {
goto l367
}
position++
add(ruleLabel, position368)
}
return true
l367:
position, tokenIndex = position367, tokenIndex367
return false
},
/* 28 SymbolName <- <(([a-z] / [A-Z] / '.' / '_') ([a-z] / [A-Z] / '.' / ([0-9] / [0-9]) / '$' / '_')*)> */
func() bool {
position372, tokenIndex372 := position, tokenIndex
{
position373 := position
{
position374, tokenIndex374 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l375
}
position++
goto l374
l375:
position, tokenIndex = position374, tokenIndex374
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l376
}
position++
goto l374
l376:
position, tokenIndex = position374, tokenIndex374
if buffer[position] != rune('.') {
goto l377
}
position++
goto l374
l377:
position, tokenIndex = position374, tokenIndex374
if buffer[position] != rune('_') {
goto l372
}
position++
}
l374:
l378:
{
position379, tokenIndex379 := position, tokenIndex
{
position380, tokenIndex380 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l381
}
position++
goto l380
l381:
position, tokenIndex = position380, tokenIndex380
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l382
}
position++
goto l380
l382:
position, tokenIndex = position380, tokenIndex380
if buffer[position] != rune('.') {
goto l383
}
position++
goto l380
l383:
position, tokenIndex = position380, tokenIndex380
{
position385, tokenIndex385 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l386
}
position++
goto l385
l386:
position, tokenIndex = position385, tokenIndex385
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l384
}
position++
}
l385:
goto l380
l384:
position, tokenIndex = position380, tokenIndex380
if buffer[position] != rune('$') {
goto l387
}
position++
goto l380
l387:
position, tokenIndex = position380, tokenIndex380
if buffer[position] != rune('_') {
goto l379
}
position++
}
l380:
goto l378
l379:
position, tokenIndex = position379, tokenIndex379
}
add(ruleSymbolName, position373)
}
return true
l372:
position, tokenIndex = position372, tokenIndex372
return false
},
/* 29 LocalSymbol <- <('.' 'L' ([a-z] / [A-Z] / ([a-z] / [A-Z]) / '.' / ([0-9] / [0-9]) / '$' / '_')+)> */
func() bool {
position388, tokenIndex388 := position, tokenIndex
{
position389 := position
if buffer[position] != rune('.') {
goto l388
}
position++
if buffer[position] != rune('L') {
goto l388
}
position++
{
position392, tokenIndex392 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l393
}
position++
goto l392
l393:
position, tokenIndex = position392, tokenIndex392
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l394
}
position++
goto l392
l394:
position, tokenIndex = position392, tokenIndex392
{
position396, tokenIndex396 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l397
}
position++
goto l396
l397:
position, tokenIndex = position396, tokenIndex396
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l395
}
position++
}
l396:
goto l392
l395:
position, tokenIndex = position392, tokenIndex392
if buffer[position] != rune('.') {
goto l398
}
position++
goto l392
l398:
position, tokenIndex = position392, tokenIndex392
{
position400, tokenIndex400 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l401
}
position++
goto l400
l401:
position, tokenIndex = position400, tokenIndex400
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l399
}
position++
}
l400:
goto l392
l399:
position, tokenIndex = position392, tokenIndex392
if buffer[position] != rune('$') {
goto l402
}
position++
goto l392
l402:
position, tokenIndex = position392, tokenIndex392
if buffer[position] != rune('_') {
goto l388
}
position++
}
l392:
l390:
{
position391, tokenIndex391 := position, tokenIndex
{
position403, tokenIndex403 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l404
}
position++
goto l403
l404:
position, tokenIndex = position403, tokenIndex403
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l405
}
position++
goto l403
l405:
position, tokenIndex = position403, tokenIndex403
{
position407, tokenIndex407 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l408
}
position++
goto l407
l408:
position, tokenIndex = position407, tokenIndex407
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l406
}
position++
}
l407:
goto l403
l406:
position, tokenIndex = position403, tokenIndex403
if buffer[position] != rune('.') {
goto l409
}
position++
goto l403
l409:
position, tokenIndex = position403, tokenIndex403
{
position411, tokenIndex411 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l412
}
position++
goto l411
l412:
position, tokenIndex = position411, tokenIndex411
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l410
}
position++
}
l411:
goto l403
l410:
position, tokenIndex = position403, tokenIndex403
if buffer[position] != rune('$') {
goto l413
}
position++
goto l403
l413:
position, tokenIndex = position403, tokenIndex403
if buffer[position] != rune('_') {
goto l391
}
position++
}
l403:
goto l390
l391:
position, tokenIndex = position391, tokenIndex391
}
add(ruleLocalSymbol, position389)
}
return true
l388:
position, tokenIndex = position388, tokenIndex388
return false
},
/* 30 LocalLabel <- <([0-9] ([0-9] / '$')*)> */
func() bool {
position414, tokenIndex414 := position, tokenIndex
{
position415 := position
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l414
}
position++
l416:
{
position417, tokenIndex417 := position, tokenIndex
{
position418, tokenIndex418 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l419
}
position++
goto l418
l419:
position, tokenIndex = position418, tokenIndex418
if buffer[position] != rune('$') {
goto l417
}
position++
}
l418:
goto l416
l417:
position, tokenIndex = position417, tokenIndex417
}
add(ruleLocalLabel, position415)
}
return true
l414:
position, tokenIndex = position414, tokenIndex414
return false
},
/* 31 LocalLabelRef <- <([0-9] ([0-9] / '$')* ('b' / 'f'))> */
func() bool {
position420, tokenIndex420 := position, tokenIndex
{
position421 := position
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l420
}
position++
l422:
{
position423, tokenIndex423 := position, tokenIndex
{
position424, tokenIndex424 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l425
}
position++
goto l424
l425:
position, tokenIndex = position424, tokenIndex424
if buffer[position] != rune('$') {
goto l423
}
position++
}
l424:
goto l422
l423:
position, tokenIndex = position423, tokenIndex423
}
{
position426, tokenIndex426 := position, tokenIndex
if buffer[position] != rune('b') {
goto l427
}
position++
goto l426
l427:
position, tokenIndex = position426, tokenIndex426
if buffer[position] != rune('f') {
goto l420
}
position++
}
l426:
add(ruleLocalLabelRef, position421)
}
return true
l420:
position, tokenIndex = position420, tokenIndex420
return false
},
/* 32 InstructionPrefix <- <(('n' / 'N') ('o' / 'O') ('t' / 'T') ('r' / 'R') ('a' / 'A') ('c' / 'C') ('k' / 'K'))> */
func() bool {
position428, tokenIndex428 := position, tokenIndex
{
position429 := position
{
position430, tokenIndex430 := position, tokenIndex
if buffer[position] != rune('n') {
goto l431
}
position++
goto l430
l431:
position, tokenIndex = position430, tokenIndex430
if buffer[position] != rune('N') {
goto l428
}
position++
}
l430:
{
position432, tokenIndex432 := position, tokenIndex
if buffer[position] != rune('o') {
goto l433
}
position++
goto l432
l433:
position, tokenIndex = position432, tokenIndex432
if buffer[position] != rune('O') {
goto l428
}
position++
}
l432:
{
position434, tokenIndex434 := position, tokenIndex
if buffer[position] != rune('t') {
goto l435
}
position++
goto l434
l435:
position, tokenIndex = position434, tokenIndex434
if buffer[position] != rune('T') {
goto l428
}
position++
}
l434:
{
position436, tokenIndex436 := position, tokenIndex
if buffer[position] != rune('r') {
goto l437
}
position++
goto l436
l437:
position, tokenIndex = position436, tokenIndex436
if buffer[position] != rune('R') {
goto l428
}
position++
}
l436:
{
position438, tokenIndex438 := position, tokenIndex
if buffer[position] != rune('a') {
goto l439
}
position++
goto l438
l439:
position, tokenIndex = position438, tokenIndex438
if buffer[position] != rune('A') {
goto l428
}
position++
}
l438:
{
position440, tokenIndex440 := position, tokenIndex
if buffer[position] != rune('c') {
goto l441
}
position++
goto l440
l441:
position, tokenIndex = position440, tokenIndex440
if buffer[position] != rune('C') {
goto l428
}
position++
}
l440:
{
position442, tokenIndex442 := position, tokenIndex
if buffer[position] != rune('k') {
goto l443
}
position++
goto l442
l443:
position, tokenIndex = position442, tokenIndex442
if buffer[position] != rune('K') {
goto l428
}
position++
}
l442:
add(ruleInstructionPrefix, position429)
}
return true
l428:
position, tokenIndex = position428, tokenIndex428
return false
},
/* 33 Instruction <- <((InstructionPrefix WS)? InstructionName (WS InstructionArg (WS? ',' WS? InstructionArg)*)?)> */
func() bool {
position444, tokenIndex444 := position, tokenIndex
{
position445 := position
{
position446, tokenIndex446 := position, tokenIndex
if !_rules[ruleInstructionPrefix]() {
goto l446
}
if !_rules[ruleWS]() {
goto l446
}
goto l447
l446:
position, tokenIndex = position446, tokenIndex446
}
l447:
if !_rules[ruleInstructionName]() {
goto l444
}
{
position448, tokenIndex448 := position, tokenIndex
if !_rules[ruleWS]() {
goto l448
}
if !_rules[ruleInstructionArg]() {
goto l448
}
l450:
{
position451, tokenIndex451 := position, tokenIndex
{
position452, tokenIndex452 := position, tokenIndex
if !_rules[ruleWS]() {
goto l452
}
goto l453
l452:
position, tokenIndex = position452, tokenIndex452
}
l453:
if buffer[position] != rune(',') {
goto l451
}
position++
{
position454, tokenIndex454 := position, tokenIndex
if !_rules[ruleWS]() {
goto l454
}
goto l455
l454:
position, tokenIndex = position454, tokenIndex454
}
l455:
if !_rules[ruleInstructionArg]() {
goto l451
}
goto l450
l451:
position, tokenIndex = position451, tokenIndex451
}
goto l449
l448:
position, tokenIndex = position448, tokenIndex448
}
l449:
add(ruleInstruction, position445)
}
return true
l444:
position, tokenIndex = position444, tokenIndex444
return false
},
/* 34 InstructionName <- <(([a-z] / [A-Z]) ([a-z] / [A-Z] / '.' / ([0-9] / [0-9]))* ('.' / '+' / '-')?)> */
func() bool {
position456, tokenIndex456 := position, tokenIndex
{
position457 := position
{
position458, tokenIndex458 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l459
}
position++
goto l458
l459:
position, tokenIndex = position458, tokenIndex458
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l456
}
position++
}
l458:
l460:
{
position461, tokenIndex461 := position, tokenIndex
{
position462, tokenIndex462 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l463
}
position++
goto l462
l463:
position, tokenIndex = position462, tokenIndex462
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l464
}
position++
goto l462
l464:
position, tokenIndex = position462, tokenIndex462
if buffer[position] != rune('.') {
goto l465
}
position++
goto l462
l465:
position, tokenIndex = position462, tokenIndex462
{
position466, tokenIndex466 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l467
}
position++
goto l466
l467:
position, tokenIndex = position466, tokenIndex466
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l461
}
position++
}
l466:
}
l462:
goto l460
l461:
position, tokenIndex = position461, tokenIndex461
}
{
position468, tokenIndex468 := position, tokenIndex
{
position470, tokenIndex470 := position, tokenIndex
if buffer[position] != rune('.') {
goto l471
}
position++
goto l470
l471:
position, tokenIndex = position470, tokenIndex470
if buffer[position] != rune('+') {
goto l472
}
position++
goto l470
l472:
position, tokenIndex = position470, tokenIndex470
if buffer[position] != rune('-') {
goto l468
}
position++
}
l470:
goto l469
l468:
position, tokenIndex = position468, tokenIndex468
}
l469:
add(ruleInstructionName, position457)
}
return true
l456:
position, tokenIndex = position456, tokenIndex456
return false
},
/* 35 InstructionArg <- <(IndirectionIndicator? (ARMConstantTweak / RegisterOrConstant / LocalLabelRef / TOCRefHigh / TOCRefLow / GOTLocation / GOTAddress / GOTSymbolOffset / MemoryRef) AVX512Token*)> */
func() bool {
position473, tokenIndex473 := position, tokenIndex
{
position474 := position
{
position475, tokenIndex475 := position, tokenIndex
if !_rules[ruleIndirectionIndicator]() {
goto l475
}
goto l476
l475:
position, tokenIndex = position475, tokenIndex475
}
l476:
{
position477, tokenIndex477 := position, tokenIndex
if !_rules[ruleARMConstantTweak]() {
goto l478
}
goto l477
l478:
position, tokenIndex = position477, tokenIndex477
if !_rules[ruleRegisterOrConstant]() {
goto l479
}
goto l477
l479:
position, tokenIndex = position477, tokenIndex477
if !_rules[ruleLocalLabelRef]() {
goto l480
}
goto l477
l480:
position, tokenIndex = position477, tokenIndex477
if !_rules[ruleTOCRefHigh]() {
goto l481
}
goto l477
l481:
position, tokenIndex = position477, tokenIndex477
if !_rules[ruleTOCRefLow]() {
goto l482
}
goto l477
l482:
position, tokenIndex = position477, tokenIndex477
if !_rules[ruleGOTLocation]() {
goto l483
}
goto l477
l483:
position, tokenIndex = position477, tokenIndex477
if !_rules[ruleGOTAddress]() {
goto l484
}
goto l477
l484:
position, tokenIndex = position477, tokenIndex477
if !_rules[ruleGOTSymbolOffset]() {
goto l485
}
goto l477
l485:
position, tokenIndex = position477, tokenIndex477
if !_rules[ruleMemoryRef]() {
goto l473
}
}
l477:
l486:
{
position487, tokenIndex487 := position, tokenIndex
if !_rules[ruleAVX512Token]() {
goto l487
}
goto l486
l487:
position, tokenIndex = position487, tokenIndex487
}
add(ruleInstructionArg, position474)
}
return true
l473:
position, tokenIndex = position473, tokenIndex473
return false
},
/* 36 GOTLocation <- <('$' '_' 'G' 'L' 'O' 'B' 'A' 'L' '_' 'O' 'F' 'F' 'S' 'E' 'T' '_' 'T' 'A' 'B' 'L' 'E' '_' '-' LocalSymbol)> */
func() bool {
position488, tokenIndex488 := position, tokenIndex
{
position489 := position
if buffer[position] != rune('$') {
goto l488
}
position++
if buffer[position] != rune('_') {
goto l488
}
position++
if buffer[position] != rune('G') {
goto l488
}
position++
if buffer[position] != rune('L') {
goto l488
}
position++
if buffer[position] != rune('O') {
goto l488
}
position++
if buffer[position] != rune('B') {
goto l488
}
position++
if buffer[position] != rune('A') {
goto l488
}
position++
if buffer[position] != rune('L') {
goto l488
}
position++
if buffer[position] != rune('_') {
goto l488
}
position++
if buffer[position] != rune('O') {
goto l488
}
position++
if buffer[position] != rune('F') {
goto l488
}
position++
if buffer[position] != rune('F') {
goto l488
}
position++
if buffer[position] != rune('S') {
goto l488
}
position++
if buffer[position] != rune('E') {
goto l488
}
position++
if buffer[position] != rune('T') {
goto l488
}
position++
if buffer[position] != rune('_') {
goto l488
}
position++
if buffer[position] != rune('T') {
goto l488
}
position++
if buffer[position] != rune('A') {
goto l488
}
position++
if buffer[position] != rune('B') {
goto l488
}
position++
if buffer[position] != rune('L') {
goto l488
}
position++
if buffer[position] != rune('E') {
goto l488
}
position++
if buffer[position] != rune('_') {
goto l488
}
position++
if buffer[position] != rune('-') {
goto l488
}
position++
if !_rules[ruleLocalSymbol]() {
goto l488
}
add(ruleGOTLocation, position489)
}
return true
l488:
position, tokenIndex = position488, tokenIndex488
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 {
position490, tokenIndex490 := position, tokenIndex
{
position491 := position
if buffer[position] != rune('_') {
goto l490
}
position++
if buffer[position] != rune('G') {
goto l490
}
position++
if buffer[position] != rune('L') {
goto l490
}
position++
if buffer[position] != rune('O') {
goto l490
}
position++
if buffer[position] != rune('B') {
goto l490
}
position++
if buffer[position] != rune('A') {
goto l490
}
position++
if buffer[position] != rune('L') {
goto l490
}
position++
if buffer[position] != rune('_') {
goto l490
}
position++
if buffer[position] != rune('O') {
goto l490
}
position++
if buffer[position] != rune('F') {
goto l490
}
position++
if buffer[position] != rune('F') {
goto l490
}
position++
if buffer[position] != rune('S') {
goto l490
}
position++
if buffer[position] != rune('E') {
goto l490
}
position++
if buffer[position] != rune('T') {
goto l490
}
position++
if buffer[position] != rune('_') {
goto l490
}
position++
if buffer[position] != rune('T') {
goto l490
}
position++
if buffer[position] != rune('A') {
goto l490
}
position++
if buffer[position] != rune('B') {
goto l490
}
position++
if buffer[position] != rune('L') {
goto l490
}
position++
if buffer[position] != rune('E') {
goto l490
}
position++
if buffer[position] != rune('_') {
goto l490
}
position++
if buffer[position] != rune('(') {
goto l490
}
position++
if buffer[position] != rune('%') {
goto l490
}
position++
if buffer[position] != rune('r') {
goto l490
}
position++
if buffer[position] != rune('i') {
goto l490
}
position++
if buffer[position] != rune('p') {
goto l490
}
position++
if buffer[position] != rune(')') {
goto l490
}
position++
add(ruleGOTAddress, position491)
}
return true
l490:
position, tokenIndex = position490, tokenIndex490
return false
},
/* 38 GOTSymbolOffset <- <(('$' SymbolName ('@' 'G' 'O' 'T') ('O' 'F' 'F')?) / (':' ('g' / 'G') ('o' / 'O') ('t' / 'T') ':' SymbolName))> */
func() bool {
position492, tokenIndex492 := position, tokenIndex
{
position493 := position
{
position494, tokenIndex494 := position, tokenIndex
if buffer[position] != rune('$') {
goto l495
}
position++
if !_rules[ruleSymbolName]() {
goto l495
}
if buffer[position] != rune('@') {
goto l495
}
position++
if buffer[position] != rune('G') {
goto l495
}
position++
if buffer[position] != rune('O') {
goto l495
}
position++
if buffer[position] != rune('T') {
goto l495
}
position++
{
position496, tokenIndex496 := position, tokenIndex
if buffer[position] != rune('O') {
goto l496
}
position++
if buffer[position] != rune('F') {
goto l496
}
position++
if buffer[position] != rune('F') {
goto l496
}
position++
goto l497
l496:
position, tokenIndex = position496, tokenIndex496
}
l497:
goto l494
l495:
position, tokenIndex = position494, tokenIndex494
if buffer[position] != rune(':') {
goto l492
}
position++
{
position498, tokenIndex498 := position, tokenIndex
if buffer[position] != rune('g') {
goto l499
}
position++
goto l498
l499:
position, tokenIndex = position498, tokenIndex498
if buffer[position] != rune('G') {
goto l492
}
position++
}
l498:
{
position500, tokenIndex500 := position, tokenIndex
if buffer[position] != rune('o') {
goto l501
}
position++
goto l500
l501:
position, tokenIndex = position500, tokenIndex500
if buffer[position] != rune('O') {
goto l492
}
position++
}
l500:
{
position502, tokenIndex502 := position, tokenIndex
if buffer[position] != rune('t') {
goto l503
}
position++
goto l502
l503:
position, tokenIndex = position502, tokenIndex502
if buffer[position] != rune('T') {
goto l492
}
position++
}
l502:
if buffer[position] != rune(':') {
goto l492
}
position++
if !_rules[ruleSymbolName]() {
goto l492
}
}
l494:
add(ruleGOTSymbolOffset, position493)
}
return true
l492:
position, tokenIndex = position492, tokenIndex492
return false
},
/* 39 AVX512Token <- <(WS? '{' '%'? ([0-9] / [a-z])* '}')> */
func() bool {
position504, tokenIndex504 := position, tokenIndex
{
position505 := position
{
position506, tokenIndex506 := position, tokenIndex
if !_rules[ruleWS]() {
goto l506
}
goto l507
l506:
position, tokenIndex = position506, tokenIndex506
}
l507:
if buffer[position] != rune('{') {
goto l504
}
position++
{
position508, tokenIndex508 := position, tokenIndex
if buffer[position] != rune('%') {
goto l508
}
position++
goto l509
l508:
position, tokenIndex = position508, tokenIndex508
}
l509:
l510:
{
position511, tokenIndex511 := position, tokenIndex
{
position512, tokenIndex512 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l513
}
position++
goto l512
l513:
position, tokenIndex = position512, tokenIndex512
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l511
}
position++
}
l512:
goto l510
l511:
position, tokenIndex = position511, tokenIndex511
}
if buffer[position] != rune('}') {
goto l504
}
position++
add(ruleAVX512Token, position505)
}
return true
l504:
position, tokenIndex = position504, tokenIndex504
return false
},
/* 40 TOCRefHigh <- <('.' 'T' 'O' 'C' '.' '-' (('0' 'b') / ('.' 'L' ([a-z] / [A-Z] / '_' / [0-9])+)) ('@' ('h' / 'H') ('a' / 'A')))> */
func() bool {
position514, tokenIndex514 := position, tokenIndex
{
position515 := position
if buffer[position] != rune('.') {
goto l514
}
position++
if buffer[position] != rune('T') {
goto l514
}
position++
if buffer[position] != rune('O') {
goto l514
}
position++
if buffer[position] != rune('C') {
goto l514
}
position++
if buffer[position] != rune('.') {
goto l514
}
position++
if buffer[position] != rune('-') {
goto l514
}
position++
{
position516, tokenIndex516 := position, tokenIndex
if buffer[position] != rune('0') {
goto l517
}
position++
if buffer[position] != rune('b') {
goto l517
}
position++
goto l516
l517:
position, tokenIndex = position516, tokenIndex516
if buffer[position] != rune('.') {
goto l514
}
position++
if buffer[position] != rune('L') {
goto l514
}
position++
{
position520, tokenIndex520 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l521
}
position++
goto l520
l521:
position, tokenIndex = position520, tokenIndex520
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l522
}
position++
goto l520
l522:
position, tokenIndex = position520, tokenIndex520
if buffer[position] != rune('_') {
goto l523
}
position++
goto l520
l523:
position, tokenIndex = position520, tokenIndex520
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l514
}
position++
}
l520:
l518:
{
position519, tokenIndex519 := position, tokenIndex
{
position524, tokenIndex524 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l525
}
position++
goto l524
l525:
position, tokenIndex = position524, tokenIndex524
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l526
}
position++
goto l524
l526:
position, tokenIndex = position524, tokenIndex524
if buffer[position] != rune('_') {
goto l527
}
position++
goto l524
l527:
position, tokenIndex = position524, tokenIndex524
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l519
}
position++
}
l524:
goto l518
l519:
position, tokenIndex = position519, tokenIndex519
}
}
l516:
if buffer[position] != rune('@') {
goto l514
}
position++
{
position528, tokenIndex528 := position, tokenIndex
if buffer[position] != rune('h') {
goto l529
}
position++
goto l528
l529:
position, tokenIndex = position528, tokenIndex528
if buffer[position] != rune('H') {
goto l514
}
position++
}
l528:
{
position530, tokenIndex530 := position, tokenIndex
if buffer[position] != rune('a') {
goto l531
}
position++
goto l530
l531:
position, tokenIndex = position530, tokenIndex530
if buffer[position] != rune('A') {
goto l514
}
position++
}
l530:
add(ruleTOCRefHigh, position515)
}
return true
l514:
position, tokenIndex = position514, tokenIndex514
return false
},
/* 41 TOCRefLow <- <('.' 'T' 'O' 'C' '.' '-' (('0' 'b') / ('.' 'L' ([a-z] / [A-Z] / '_' / [0-9])+)) ('@' ('l' / 'L')))> */
func() bool {
position532, tokenIndex532 := position, tokenIndex
{
position533 := position
if buffer[position] != rune('.') {
goto l532
}
position++
if buffer[position] != rune('T') {
goto l532
}
position++
if buffer[position] != rune('O') {
goto l532
}
position++
if buffer[position] != rune('C') {
goto l532
}
position++
if buffer[position] != rune('.') {
goto l532
}
position++
if buffer[position] != rune('-') {
goto l532
}
position++
{
position534, tokenIndex534 := position, tokenIndex
if buffer[position] != rune('0') {
goto l535
}
position++
if buffer[position] != rune('b') {
goto l535
}
position++
goto l534
l535:
position, tokenIndex = position534, tokenIndex534
if buffer[position] != rune('.') {
goto l532
}
position++
if buffer[position] != rune('L') {
goto l532
}
position++
{
position538, tokenIndex538 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l539
}
position++
goto l538
l539:
position, tokenIndex = position538, tokenIndex538
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l540
}
position++
goto l538
l540:
position, tokenIndex = position538, tokenIndex538
if buffer[position] != rune('_') {
goto l541
}
position++
goto l538
l541:
position, tokenIndex = position538, tokenIndex538
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l532
}
position++
}
l538:
l536:
{
position537, tokenIndex537 := position, tokenIndex
{
position542, tokenIndex542 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l543
}
position++
goto l542
l543:
position, tokenIndex = position542, tokenIndex542
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l544
}
position++
goto l542
l544:
position, tokenIndex = position542, tokenIndex542
if buffer[position] != rune('_') {
goto l545
}
position++
goto l542
l545:
position, tokenIndex = position542, tokenIndex542
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l537
}
position++
}
l542:
goto l536
l537:
position, tokenIndex = position537, tokenIndex537
}
}
l534:
if buffer[position] != rune('@') {
goto l532
}
position++
{
position546, tokenIndex546 := position, tokenIndex
if buffer[position] != rune('l') {
goto l547
}
position++
goto l546
l547:
position, tokenIndex = position546, tokenIndex546
if buffer[position] != rune('L') {
goto l532
}
position++
}
l546:
add(ruleTOCRefLow, position533)
}
return true
l532:
position, tokenIndex = position532, tokenIndex532
return false
},
/* 42 IndirectionIndicator <- <'*'> */
func() bool {
position548, tokenIndex548 := position, tokenIndex
{
position549 := position
if buffer[position] != rune('*') {
goto l548
}
position++
add(ruleIndirectionIndicator, position549)
}
return true
l548:
position, tokenIndex = position548, tokenIndex548
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 {
position550, tokenIndex550 := position, tokenIndex
{
position551 := position
{
position552, tokenIndex552 := position, tokenIndex
if buffer[position] != rune('%') {
goto l553
}
position++
{
position554, tokenIndex554 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l555
}
position++
goto l554
l555:
position, tokenIndex = position554, tokenIndex554
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l553
}
position++
}
l554:
l556:
{
position557, tokenIndex557 := position, tokenIndex
{
position558, tokenIndex558 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l559
}
position++
goto l558
l559:
position, tokenIndex = position558, tokenIndex558
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l560
}
position++
goto l558
l560:
position, tokenIndex = position558, tokenIndex558
{
position561, tokenIndex561 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l562
}
position++
goto l561
l562:
position, tokenIndex = position561, tokenIndex561
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l557
}
position++
}
l561:
}
l558:
goto l556
l557:
position, tokenIndex = position557, tokenIndex557
}
goto l552
l553:
position, tokenIndex = position552, tokenIndex552
{
position564, tokenIndex564 := position, tokenIndex
if buffer[position] != rune('$') {
goto l564
}
position++
goto l565
l564:
position, tokenIndex = position564, tokenIndex564
}
l565:
{
position566, tokenIndex566 := position, tokenIndex
if !_rules[ruleOffset]() {
goto l567
}
if !_rules[ruleOffset]() {
goto l567
}
goto l566
l567:
position, tokenIndex = position566, tokenIndex566
if !_rules[ruleOffset]() {
goto l563
}
}
l566:
goto l552
l563:
position, tokenIndex = position552, tokenIndex552
if buffer[position] != rune('#') {
goto l568
}
position++
if !_rules[ruleOffset]() {
goto l568
}
{
position569, tokenIndex569 := position, tokenIndex
if buffer[position] != rune('*') {
goto l569
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l569
}
position++
l571:
{
position572, tokenIndex572 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l572
}
position++
goto l571
l572:
position, tokenIndex = position572, tokenIndex572
}
{
position573, tokenIndex573 := position, tokenIndex
if buffer[position] != rune('-') {
goto l573
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l573
}
position++
l575:
{
position576, tokenIndex576 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l576
}
position++
goto l575
l576:
position, tokenIndex = position576, tokenIndex576
}
goto l574
l573:
position, tokenIndex = position573, tokenIndex573
}
l574:
goto l570
l569:
position, tokenIndex = position569, tokenIndex569
}
l570:
goto l552
l568:
position, tokenIndex = position552, tokenIndex552
if buffer[position] != rune('#') {
goto l577
}
position++
{
position578, tokenIndex578 := position, tokenIndex
if buffer[position] != rune('~') {
goto l578
}
position++
goto l579
l578:
position, tokenIndex = position578, tokenIndex578
}
l579:
if buffer[position] != rune('(') {
goto l577
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l577
}
position++
{
position580, tokenIndex580 := position, tokenIndex
if !_rules[ruleWS]() {
goto l580
}
goto l581
l580:
position, tokenIndex = position580, tokenIndex580
}
l581:
if buffer[position] != rune('<') {
goto l577
}
position++
if buffer[position] != rune('<') {
goto l577
}
position++
{
position582, tokenIndex582 := position, tokenIndex
if !_rules[ruleWS]() {
goto l582
}
goto l583
l582:
position, tokenIndex = position582, tokenIndex582
}
l583:
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l577
}
position++
if buffer[position] != rune(')') {
goto l577
}
position++
goto l552
l577:
position, tokenIndex = position552, tokenIndex552
if !_rules[ruleARMRegister]() {
goto l550
}
}
l552:
{
position584, tokenIndex584 := position, tokenIndex
{
position585, tokenIndex585 := position, tokenIndex
if buffer[position] != rune('f') {
goto l586
}
position++
goto l585
l586:
position, tokenIndex = position585, tokenIndex585
if buffer[position] != rune('b') {
goto l587
}
position++
goto l585
l587:
position, tokenIndex = position585, tokenIndex585
if buffer[position] != rune(':') {
goto l588
}
position++
goto l585
l588:
position, tokenIndex = position585, tokenIndex585
if buffer[position] != rune('(') {
goto l589
}
position++
goto l585
l589:
position, tokenIndex = position585, tokenIndex585
if buffer[position] != rune('+') {
goto l590
}
position++
goto l585
l590:
position, tokenIndex = position585, tokenIndex585
if buffer[position] != rune('-') {
goto l584
}
position++
}
l585:
goto l550
l584:
position, tokenIndex = position584, tokenIndex584
}
add(ruleRegisterOrConstant, position551)
}
return true
l550:
position, tokenIndex = position550, tokenIndex550
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 {
position591, tokenIndex591 := position, tokenIndex
{
position592 := position
{
position593, tokenIndex593 := position, tokenIndex
{
position595, tokenIndex595 := position, tokenIndex
{
position597, tokenIndex597 := position, tokenIndex
if buffer[position] != rune('u') {
goto l598
}
position++
goto l597
l598:
position, tokenIndex = position597, tokenIndex597
if buffer[position] != rune('s') {
goto l596
}
position++
}
l597:
{
position599, tokenIndex599 := position, tokenIndex
if buffer[position] != rune('x') {
goto l600
}
position++
goto l599
l600:
position, tokenIndex = position599, tokenIndex599
if buffer[position] != rune('X') {
goto l596
}
position++
}
l599:
{
position601, tokenIndex601 := position, tokenIndex
if buffer[position] != rune('t') {
goto l602
}
position++
goto l601
l602:
position, tokenIndex = position601, tokenIndex601
if buffer[position] != rune('T') {
goto l596
}
position++
}
l601:
{
position603, tokenIndex603 := position, tokenIndex
if buffer[position] != rune('x') {
goto l604
}
position++
goto l603
l604:
position, tokenIndex = position603, tokenIndex603
if buffer[position] != rune('w') {
goto l605
}
position++
goto l603
l605:
position, tokenIndex = position603, tokenIndex603
if buffer[position] != rune('h') {
goto l606
}
position++
goto l603
l606:
position, tokenIndex = position603, tokenIndex603
if buffer[position] != rune('b') {
goto l596
}
position++
}
l603:
goto l595
l596:
position, tokenIndex = position595, tokenIndex595
{
position608, tokenIndex608 := position, tokenIndex
if buffer[position] != rune('l') {
goto l609
}
position++
goto l608
l609:
position, tokenIndex = position608, tokenIndex608
if buffer[position] != rune('L') {
goto l607
}
position++
}
l608:
{
position610, tokenIndex610 := position, tokenIndex
if buffer[position] != rune('s') {
goto l611
}
position++
goto l610
l611:
position, tokenIndex = position610, tokenIndex610
if buffer[position] != rune('S') {
goto l607
}
position++
}
l610:
{
position612, tokenIndex612 := position, tokenIndex
if buffer[position] != rune('l') {
goto l613
}
position++
goto l612
l613:
position, tokenIndex = position612, tokenIndex612
if buffer[position] != rune('L') {
goto l607
}
position++
}
l612:
goto l595
l607:
position, tokenIndex = position595, tokenIndex595
{
position615, tokenIndex615 := position, tokenIndex
if buffer[position] != rune('l') {
goto l616
}
position++
goto l615
l616:
position, tokenIndex = position615, tokenIndex615
if buffer[position] != rune('L') {
goto l614
}
position++
}
l615:
{
position617, tokenIndex617 := position, tokenIndex
if buffer[position] != rune('s') {
goto l618
}
position++
goto l617
l618:
position, tokenIndex = position617, tokenIndex617
if buffer[position] != rune('S') {
goto l614
}
position++
}
l617:
{
position619, tokenIndex619 := position, tokenIndex
if buffer[position] != rune('r') {
goto l620
}
position++
goto l619
l620:
position, tokenIndex = position619, tokenIndex619
if buffer[position] != rune('R') {
goto l614
}
position++
}
l619:
goto l595
l614:
position, tokenIndex = position595, tokenIndex595
{
position622, tokenIndex622 := position, tokenIndex
if buffer[position] != rune('r') {
goto l623
}
position++
goto l622
l623:
position, tokenIndex = position622, tokenIndex622
if buffer[position] != rune('R') {
goto l621
}
position++
}
l622:
{
position624, tokenIndex624 := position, tokenIndex
if buffer[position] != rune('o') {
goto l625
}
position++
goto l624
l625:
position, tokenIndex = position624, tokenIndex624
if buffer[position] != rune('O') {
goto l621
}
position++
}
l624:
{
position626, tokenIndex626 := position, tokenIndex
if buffer[position] != rune('r') {
goto l627
}
position++
goto l626
l627:
position, tokenIndex = position626, tokenIndex626
if buffer[position] != rune('R') {
goto l621
}
position++
}
l626:
goto l595
l621:
position, tokenIndex = position595, tokenIndex595
{
position628, tokenIndex628 := position, tokenIndex
if buffer[position] != rune('a') {
goto l629
}
position++
goto l628
l629:
position, tokenIndex = position628, tokenIndex628
if buffer[position] != rune('A') {
goto l594
}
position++
}
l628:
{
position630, tokenIndex630 := position, tokenIndex
if buffer[position] != rune('s') {
goto l631
}
position++
goto l630
l631:
position, tokenIndex = position630, tokenIndex630
if buffer[position] != rune('S') {
goto l594
}
position++
}
l630:
{
position632, tokenIndex632 := position, tokenIndex
if buffer[position] != rune('r') {
goto l633
}
position++
goto l632
l633:
position, tokenIndex = position632, tokenIndex632
if buffer[position] != rune('R') {
goto l594
}
position++
}
l632:
}
l595:
{
position634, tokenIndex634 := position, tokenIndex
if !_rules[ruleWS]() {
goto l634
}
if buffer[position] != rune('#') {
goto l634
}
position++
if !_rules[ruleOffset]() {
goto l634
}
goto l635
l634:
position, tokenIndex = position634, tokenIndex634
}
l635:
goto l593
l594:
position, tokenIndex = position593, tokenIndex593
{
position637, tokenIndex637 := position, tokenIndex
if buffer[position] != rune('m') {
goto l638
}
position++
goto l637
l638:
position, tokenIndex = position637, tokenIndex637
if buffer[position] != rune('M') {
goto l636
}
position++
}
l637:
{
position639, tokenIndex639 := position, tokenIndex
if buffer[position] != rune('u') {
goto l640
}
position++
goto l639
l640:
position, tokenIndex = position639, tokenIndex639
if buffer[position] != rune('U') {
goto l636
}
position++
}
l639:
{
position641, tokenIndex641 := position, tokenIndex
if buffer[position] != rune('l') {
goto l642
}
position++
goto l641
l642:
position, tokenIndex = position641, tokenIndex641
if buffer[position] != rune('L') {
goto l636
}
position++
}
l641:
if buffer[position] != rune(' ') {
goto l636
}
position++
{
position643, tokenIndex643 := position, tokenIndex
if buffer[position] != rune('v') {
goto l644
}
position++
goto l643
l644:
position, tokenIndex = position643, tokenIndex643
if buffer[position] != rune('V') {
goto l636
}
position++
}
l643:
{
position645, tokenIndex645 := position, tokenIndex
if buffer[position] != rune('l') {
goto l646
}
position++
goto l645
l646:
position, tokenIndex = position645, tokenIndex645
if buffer[position] != rune('L') {
goto l636
}
position++
}
l645:
goto l593
l636:
position, tokenIndex = position593, tokenIndex593
{
position647, tokenIndex647 := position, tokenIndex
if buffer[position] != rune('m') {
goto l648
}
position++
goto l647
l648:
position, tokenIndex = position647, tokenIndex647
if buffer[position] != rune('M') {
goto l591
}
position++
}
l647:
{
position649, tokenIndex649 := position, tokenIndex
if buffer[position] != rune('u') {
goto l650
}
position++
goto l649
l650:
position, tokenIndex = position649, tokenIndex649
if buffer[position] != rune('U') {
goto l591
}
position++
}
l649:
{
position651, tokenIndex651 := position, tokenIndex
if buffer[position] != rune('l') {
goto l652
}
position++
goto l651
l652:
position, tokenIndex = position651, tokenIndex651
if buffer[position] != rune('L') {
goto l591
}
position++
}
l651:
if buffer[position] != rune(' ') {
goto l591
}
position++
if buffer[position] != rune('#') {
goto l591
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l591
}
position++
}
l593:
add(ruleARMConstantTweak, position592)
}
return true
l591:
position, tokenIndex = position591, tokenIndex591
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 {
position653, tokenIndex653 := position, tokenIndex
{
position654 := position
{
position655, tokenIndex655 := position, tokenIndex
{
position657, tokenIndex657 := position, tokenIndex
if buffer[position] != rune('s') {
goto l658
}
position++
goto l657
l658:
position, tokenIndex = position657, tokenIndex657
if buffer[position] != rune('S') {
goto l656
}
position++
}
l657:
{
position659, tokenIndex659 := position, tokenIndex
if buffer[position] != rune('p') {
goto l660
}
position++
goto l659
l660:
position, tokenIndex = position659, tokenIndex659
if buffer[position] != rune('P') {
goto l656
}
position++
}
l659:
goto l655
l656:
position, tokenIndex = position655, tokenIndex655
{
position662, tokenIndex662 := position, tokenIndex
if buffer[position] != rune('x') {
goto l663
}
position++
goto l662
l663:
position, tokenIndex = position662, tokenIndex662
if buffer[position] != rune('w') {
goto l664
}
position++
goto l662
l664:
position, tokenIndex = position662, tokenIndex662
if buffer[position] != rune('d') {
goto l665
}
position++
goto l662
l665:
position, tokenIndex = position662, tokenIndex662
if buffer[position] != rune('q') {
goto l666
}
position++
goto l662
l666:
position, tokenIndex = position662, tokenIndex662
if buffer[position] != rune('s') {
goto l667
}
position++
goto l662
l667:
position, tokenIndex = position662, tokenIndex662
if buffer[position] != rune('h') {
goto l668
}
position++
goto l662
l668:
position, tokenIndex = position662, tokenIndex662
if buffer[position] != rune('b') {
goto l661
}
position++
}
l662:
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l661
}
position++
{
position669, tokenIndex669 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l669
}
position++
goto l670
l669:
position, tokenIndex = position669, tokenIndex669
}
l670:
goto l655
l661:
position, tokenIndex = position655, tokenIndex655
{
position672, tokenIndex672 := position, tokenIndex
if buffer[position] != rune('x') {
goto l673
}
position++
goto l672
l673:
position, tokenIndex = position672, tokenIndex672
if buffer[position] != rune('X') {
goto l671
}
position++
}
l672:
{
position674, tokenIndex674 := position, tokenIndex
if buffer[position] != rune('z') {
goto l675
}
position++
goto l674
l675:
position, tokenIndex = position674, tokenIndex674
if buffer[position] != rune('Z') {
goto l671
}
position++
}
l674:
{
position676, tokenIndex676 := position, tokenIndex
if buffer[position] != rune('r') {
goto l677
}
position++
goto l676
l677:
position, tokenIndex = position676, tokenIndex676
if buffer[position] != rune('R') {
goto l671
}
position++
}
l676:
goto l655
l671:
position, tokenIndex = position655, tokenIndex655
{
position679, tokenIndex679 := position, tokenIndex
if buffer[position] != rune('w') {
goto l680
}
position++
goto l679
l680:
position, tokenIndex = position679, tokenIndex679
if buffer[position] != rune('W') {
goto l678
}
position++
}
l679:
{
position681, tokenIndex681 := position, tokenIndex
if buffer[position] != rune('z') {
goto l682
}
position++
goto l681
l682:
position, tokenIndex = position681, tokenIndex681
if buffer[position] != rune('Z') {
goto l678
}
position++
}
l681:
{
position683, tokenIndex683 := position, tokenIndex
if buffer[position] != rune('r') {
goto l684
}
position++
goto l683
l684:
position, tokenIndex = position683, tokenIndex683
if buffer[position] != rune('R') {
goto l678
}
position++
}
l683:
goto l655
l678:
position, tokenIndex = position655, tokenIndex655
{
position686, tokenIndex686 := position, tokenIndex
if buffer[position] != rune('n') {
goto l687
}
position++
goto l686
l687:
position, tokenIndex = position686, tokenIndex686
if buffer[position] != rune('N') {
goto l685
}
position++
}
l686:
{
position688, tokenIndex688 := position, tokenIndex
if buffer[position] != rune('z') {
goto l689
}
position++
goto l688
l689:
position, tokenIndex = position688, tokenIndex688
if buffer[position] != rune('Z') {
goto l685
}
position++
}
l688:
{
position690, tokenIndex690 := position, tokenIndex
if buffer[position] != rune('c') {
goto l691
}
position++
goto l690
l691:
position, tokenIndex = position690, tokenIndex690
if buffer[position] != rune('C') {
goto l685
}
position++
}
l690:
{
position692, tokenIndex692 := position, tokenIndex
if buffer[position] != rune('v') {
goto l693
}
position++
goto l692
l693:
position, tokenIndex = position692, tokenIndex692
if buffer[position] != rune('V') {
goto l685
}
position++
}
l692:
goto l655
l685:
position, tokenIndex = position655, tokenIndex655
if !_rules[ruleSVE2PredicateRegister]() {
goto l694
}
goto l655
l694:
position, tokenIndex = position655, tokenIndex655
if !_rules[ruleARMVectorRegister]() {
goto l695
}
goto l655
l695:
position, tokenIndex = position655, tokenIndex655
if !_rules[ruleSVE2SpecialValue]() {
goto l696
}
goto l655
l696:
position, tokenIndex = position655, tokenIndex655
if buffer[position] != rune('{') {
goto l653
}
position++
{
position697, tokenIndex697 := position, tokenIndex
if !_rules[ruleWS]() {
goto l697
}
goto l698
l697:
position, tokenIndex = position697, tokenIndex697
}
l698:
if !_rules[ruleARMVectorRegister]() {
goto l653
}
l699:
{
position700, tokenIndex700 := position, tokenIndex
if buffer[position] != rune(',') {
goto l700
}
position++
{
position701, tokenIndex701 := position, tokenIndex
if !_rules[ruleWS]() {
goto l701
}
goto l702
l701:
position, tokenIndex = position701, tokenIndex701
}
l702:
if !_rules[ruleARMVectorRegister]() {
goto l700
}
goto l699
l700:
position, tokenIndex = position700, tokenIndex700
}
{
position703, tokenIndex703 := position, tokenIndex
if !_rules[ruleWS]() {
goto l703
}
goto l704
l703:
position, tokenIndex = position703, tokenIndex703
}
l704:
if buffer[position] != rune('}') {
goto l653
}
position++
{
position705, tokenIndex705 := position, tokenIndex
if buffer[position] != rune('[') {
goto l705
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l705
}
position++
{
position707, tokenIndex707 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l707
}
position++
goto l708
l707:
position, tokenIndex = position707, tokenIndex707
}
l708:
if buffer[position] != rune(']') {
goto l705
}
position++
goto l706
l705:
position, tokenIndex = position705, tokenIndex705
}
l706:
}
l655:
add(ruleARMRegister, position654)
}
return true
l653:
position, tokenIndex = position653, tokenIndex653
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 {
position709, tokenIndex709 := position, tokenIndex
{
position710 := position
{
position711, tokenIndex711 := position, tokenIndex
if buffer[position] != rune('p') {
goto l712
}
position++
goto l711
l712:
position, tokenIndex = position711, tokenIndex711
if buffer[position] != rune('v') {
goto l713
}
position++
goto l711
l713:
position, tokenIndex = position711, tokenIndex711
if buffer[position] != rune('z') {
goto l709
}
position++
}
l711:
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l709
}
position++
{
position714, tokenIndex714 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l714
}
position++
goto l715
l714:
position, tokenIndex = position714, tokenIndex714
}
l715:
{
position716, tokenIndex716 := position, tokenIndex
{
position717, tokenIndex717 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l718
}
position++
goto l717
l718:
position, tokenIndex = position717, tokenIndex717
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l719
}
position++
goto l717
l719:
position, tokenIndex = position717, tokenIndex717
{
position721, tokenIndex721 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l722
}
position++
goto l721
l722:
position, tokenIndex = position721, tokenIndex721
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l720
}
position++
}
l721:
goto l717
l720:
position, tokenIndex = position717, tokenIndex717
if buffer[position] != rune('_') {
goto l716
}
position++
}
l717:
goto l709
l716:
position, tokenIndex = position716, tokenIndex716
}
{
position723, tokenIndex723 := position, tokenIndex
if buffer[position] != rune('.') {
goto l723
}
position++
l725:
{
position726, tokenIndex726 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l726
}
position++
goto l725
l726:
position, tokenIndex = position726, tokenIndex726
}
{
position727, tokenIndex727 := position, tokenIndex
if buffer[position] != rune('b') {
goto l728
}
position++
goto l727
l728:
position, tokenIndex = position727, tokenIndex727
if buffer[position] != rune('s') {
goto l729
}
position++
goto l727
l729:
position, tokenIndex = position727, tokenIndex727
if buffer[position] != rune('d') {
goto l730
}
position++
goto l727
l730:
position, tokenIndex = position727, tokenIndex727
if buffer[position] != rune('h') {
goto l731
}
position++
goto l727
l731:
position, tokenIndex = position727, tokenIndex727
if buffer[position] != rune('q') {
goto l723
}
position++
}
l727:
{
position732, tokenIndex732 := position, tokenIndex
if buffer[position] != rune('[') {
goto l732
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l732
}
position++
{
position734, tokenIndex734 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l734
}
position++
goto l735
l734:
position, tokenIndex = position734, tokenIndex734
}
l735:
if buffer[position] != rune(']') {
goto l732
}
position++
goto l733
l732:
position, tokenIndex = position732, tokenIndex732
}
l733:
goto l724
l723:
position, tokenIndex = position723, tokenIndex723
}
l724:
add(ruleARMVectorRegister, position710)
}
return true
l709:
position, tokenIndex = position709, tokenIndex709
return false
},
/* 47 SVE2PredicateRegister <- <(('p' / 'P') [0-9] [0-9]? '/' ('m' / 'M' / ('z' / 'Z')))> */
func() bool {
position736, tokenIndex736 := position, tokenIndex
{
position737 := position
{
position738, tokenIndex738 := position, tokenIndex
if buffer[position] != rune('p') {
goto l739
}
position++
goto l738
l739:
position, tokenIndex = position738, tokenIndex738
if buffer[position] != rune('P') {
goto l736
}
position++
}
l738:
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l736
}
position++
{
position740, tokenIndex740 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l740
}
position++
goto l741
l740:
position, tokenIndex = position740, tokenIndex740
}
l741:
if buffer[position] != rune('/') {
goto l736
}
position++
{
position742, tokenIndex742 := position, tokenIndex
if buffer[position] != rune('m') {
goto l743
}
position++
goto l742
l743:
position, tokenIndex = position742, tokenIndex742
if buffer[position] != rune('M') {
goto l744
}
position++
goto l742
l744:
position, tokenIndex = position742, tokenIndex742
{
position745, tokenIndex745 := position, tokenIndex
if buffer[position] != rune('z') {
goto l746
}
position++
goto l745
l746:
position, tokenIndex = position745, tokenIndex745
if buffer[position] != rune('Z') {
goto l736
}
position++
}
l745:
}
l742:
add(ruleSVE2PredicateRegister, position737)
}
return true
l736:
position, tokenIndex = position736, tokenIndex736
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 {
position747, tokenIndex747 := position, tokenIndex
{
position748 := position
{
position749, tokenIndex749 := position, tokenIndex
{
position751, tokenIndex751 := position, tokenIndex
if buffer[position] != rune('p') {
goto l752
}
position++
goto l751
l752:
position, tokenIndex = position751, tokenIndex751
if buffer[position] != rune('P') {
goto l750
}
position++
}
l751:
{
position753, tokenIndex753 := position, tokenIndex
if buffer[position] != rune('o') {
goto l754
}
position++
goto l753
l754:
position, tokenIndex = position753, tokenIndex753
if buffer[position] != rune('O') {
goto l750
}
position++
}
l753:
{
position755, tokenIndex755 := position, tokenIndex
if buffer[position] != rune('w') {
goto l756
}
position++
goto l755
l756:
position, tokenIndex = position755, tokenIndex755
if buffer[position] != rune('W') {
goto l750
}
position++
}
l755:
if buffer[position] != rune('2') {
goto l750
}
position++
goto l749
l750:
position, tokenIndex = position749, tokenIndex749
{
position758, tokenIndex758 := position, tokenIndex
if buffer[position] != rune('v') {
goto l759
}
position++
goto l758
l759:
position, tokenIndex = position758, tokenIndex758
if buffer[position] != rune('V') {
goto l757
}
position++
}
l758:
{
position760, tokenIndex760 := position, tokenIndex
if buffer[position] != rune('l') {
goto l761
}
position++
goto l760
l761:
position, tokenIndex = position760, tokenIndex760
if buffer[position] != rune('L') {
goto l757
}
position++
}
l760:
{
position762, tokenIndex762 := position, tokenIndex
if buffer[position] != rune('1') {
goto l763
}
position++
goto l762
l763:
position, tokenIndex = position762, tokenIndex762
if buffer[position] != rune('2') {
goto l764
}
position++
goto l762
l764:
position, tokenIndex = position762, tokenIndex762
if buffer[position] != rune('3') {
goto l765
}
position++
goto l762
l765:
position, tokenIndex = position762, tokenIndex762
if buffer[position] != rune('4') {
goto l766
}
position++
goto l762
l766:
position, tokenIndex = position762, tokenIndex762
if buffer[position] != rune('5') {
goto l767
}
position++
goto l762
l767:
position, tokenIndex = position762, tokenIndex762
if buffer[position] != rune('6') {
goto l768
}
position++
goto l762
l768:
position, tokenIndex = position762, tokenIndex762
if buffer[position] != rune('7') {
goto l769
}
position++
goto l762
l769:
position, tokenIndex = position762, tokenIndex762
if buffer[position] != rune('8') {
goto l757
}
position++
}
l762:
{
position770, tokenIndex770 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l770
}
position++
goto l757
l770:
position, tokenIndex = position770, tokenIndex770
}
goto l749
l757:
position, tokenIndex = position749, tokenIndex749
{
position772, tokenIndex772 := position, tokenIndex
if buffer[position] != rune('v') {
goto l773
}
position++
goto l772
l773:
position, tokenIndex = position772, tokenIndex772
if buffer[position] != rune('V') {
goto l771
}
position++
}
l772:
{
position774, tokenIndex774 := position, tokenIndex
if buffer[position] != rune('l') {
goto l775
}
position++
goto l774
l775:
position, tokenIndex = position774, tokenIndex774
if buffer[position] != rune('L') {
goto l771
}
position++
}
l774:
if buffer[position] != rune('1') {
goto l771
}
position++
if buffer[position] != rune('6') {
goto l771
}
position++
goto l749
l771:
position, tokenIndex = position749, tokenIndex749
{
position777, tokenIndex777 := position, tokenIndex
if buffer[position] != rune('v') {
goto l778
}
position++
goto l777
l778:
position, tokenIndex = position777, tokenIndex777
if buffer[position] != rune('V') {
goto l776
}
position++
}
l777:
{
position779, tokenIndex779 := position, tokenIndex
if buffer[position] != rune('l') {
goto l780
}
position++
goto l779
l780:
position, tokenIndex = position779, tokenIndex779
if buffer[position] != rune('L') {
goto l776
}
position++
}
l779:
if buffer[position] != rune('3') {
goto l776
}
position++
if buffer[position] != rune('2') {
goto l776
}
position++
goto l749
l776:
position, tokenIndex = position749, tokenIndex749
{
position782, tokenIndex782 := position, tokenIndex
if buffer[position] != rune('v') {
goto l783
}
position++
goto l782
l783:
position, tokenIndex = position782, tokenIndex782
if buffer[position] != rune('V') {
goto l781
}
position++
}
l782:
{
position784, tokenIndex784 := position, tokenIndex
if buffer[position] != rune('l') {
goto l785
}
position++
goto l784
l785:
position, tokenIndex = position784, tokenIndex784
if buffer[position] != rune('L') {
goto l781
}
position++
}
l784:
if buffer[position] != rune('6') {
goto l781
}
position++
if buffer[position] != rune('4') {
goto l781
}
position++
goto l749
l781:
position, tokenIndex = position749, tokenIndex749
{
position787, tokenIndex787 := position, tokenIndex
if buffer[position] != rune('v') {
goto l788
}
position++
goto l787
l788:
position, tokenIndex = position787, tokenIndex787
if buffer[position] != rune('V') {
goto l786
}
position++
}
l787:
{
position789, tokenIndex789 := position, tokenIndex
if buffer[position] != rune('l') {
goto l790
}
position++
goto l789
l790:
position, tokenIndex = position789, tokenIndex789
if buffer[position] != rune('L') {
goto l786
}
position++
}
l789:
if buffer[position] != rune('1') {
goto l786
}
position++
if buffer[position] != rune('2') {
goto l786
}
position++
if buffer[position] != rune('8') {
goto l786
}
position++
goto l749
l786:
position, tokenIndex = position749, tokenIndex749
{
position792, tokenIndex792 := position, tokenIndex
if buffer[position] != rune('v') {
goto l793
}
position++
goto l792
l793:
position, tokenIndex = position792, tokenIndex792
if buffer[position] != rune('V') {
goto l791
}
position++
}
l792:
{
position794, tokenIndex794 := position, tokenIndex
if buffer[position] != rune('l') {
goto l795
}
position++
goto l794
l795:
position, tokenIndex = position794, tokenIndex794
if buffer[position] != rune('L') {
goto l791
}
position++
}
l794:
if buffer[position] != rune('2') {
goto l791
}
position++
if buffer[position] != rune('5') {
goto l791
}
position++
if buffer[position] != rune('6') {
goto l791
}
position++
goto l749
l791:
position, tokenIndex = position749, tokenIndex749
{
position797, tokenIndex797 := position, tokenIndex
if buffer[position] != rune('m') {
goto l798
}
position++
goto l797
l798:
position, tokenIndex = position797, tokenIndex797
if buffer[position] != rune('M') {
goto l796
}
position++
}
l797:
{
position799, tokenIndex799 := position, tokenIndex
if buffer[position] != rune('u') {
goto l800
}
position++
goto l799
l800:
position, tokenIndex = position799, tokenIndex799
if buffer[position] != rune('U') {
goto l796
}
position++
}
l799:
{
position801, tokenIndex801 := position, tokenIndex
if buffer[position] != rune('l') {
goto l802
}
position++
goto l801
l802:
position, tokenIndex = position801, tokenIndex801
if buffer[position] != rune('L') {
goto l796
}
position++
}
l801:
if buffer[position] != rune('3') {
goto l796
}
position++
goto l749
l796:
position, tokenIndex = position749, tokenIndex749
{
position804, tokenIndex804 := position, tokenIndex
if buffer[position] != rune('m') {
goto l805
}
position++
goto l804
l805:
position, tokenIndex = position804, tokenIndex804
if buffer[position] != rune('M') {
goto l803
}
position++
}
l804:
{
position806, tokenIndex806 := position, tokenIndex
if buffer[position] != rune('u') {
goto l807
}
position++
goto l806
l807:
position, tokenIndex = position806, tokenIndex806
if buffer[position] != rune('U') {
goto l803
}
position++
}
l806:
{
position808, tokenIndex808 := position, tokenIndex
if buffer[position] != rune('l') {
goto l809
}
position++
goto l808
l809:
position, tokenIndex = position808, tokenIndex808
if buffer[position] != rune('L') {
goto l803
}
position++
}
l808:
if buffer[position] != rune('4') {
goto l803
}
position++
goto l749
l803:
position, tokenIndex = position749, tokenIndex749
{
position810, tokenIndex810 := position, tokenIndex
if buffer[position] != rune('a') {
goto l811
}
position++
goto l810
l811:
position, tokenIndex = position810, tokenIndex810
if buffer[position] != rune('A') {
goto l747
}
position++
}
l810:
{
position812, tokenIndex812 := position, tokenIndex
if buffer[position] != rune('l') {
goto l813
}
position++
goto l812
l813:
position, tokenIndex = position812, tokenIndex812
if buffer[position] != rune('L') {
goto l747
}
position++
}
l812:
{
position814, tokenIndex814 := position, tokenIndex
if buffer[position] != rune('l') {
goto l815
}
position++
goto l814
l815:
position, tokenIndex = position814, tokenIndex814
if buffer[position] != rune('L') {
goto l747
}
position++
}
l814:
}
l749:
{
position816, tokenIndex816 := position, tokenIndex
{
position817, tokenIndex817 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l818
}
position++
goto l817
l818:
position, tokenIndex = position817, tokenIndex817
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l819
}
position++
goto l817
l819:
position, tokenIndex = position817, tokenIndex817
{
position821, tokenIndex821 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l822
}
position++
goto l821
l822:
position, tokenIndex = position821, tokenIndex821
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l820
}
position++
}
l821:
goto l817
l820:
position, tokenIndex = position817, tokenIndex817
if buffer[position] != rune('_') {
goto l816
}
position++
}
l817:
goto l747
l816:
position, tokenIndex = position816, tokenIndex816
}
add(ruleSVE2SpecialValue, position748)
}
return true
l747:
position, tokenIndex = position747, tokenIndex747
return false
},
/* 49 MemoryRef <- <((SymbolRef BaseIndexScale) / SymbolRef / Low12BitsSymbolRef / (Offset* BaseIndexScale) / (SegmentRegister Offset BaseIndexScale) / (SegmentRegister BaseIndexScale) / (SegmentRegister Offset) / ARMBaseIndexScale / BaseIndexScale)> */
func() bool {
position823, tokenIndex823 := position, tokenIndex
{
position824 := position
{
position825, tokenIndex825 := position, tokenIndex
if !_rules[ruleSymbolRef]() {
goto l826
}
if !_rules[ruleBaseIndexScale]() {
goto l826
}
goto l825
l826:
position, tokenIndex = position825, tokenIndex825
if !_rules[ruleSymbolRef]() {
goto l827
}
goto l825
l827:
position, tokenIndex = position825, tokenIndex825
if !_rules[ruleLow12BitsSymbolRef]() {
goto l828
}
goto l825
l828:
position, tokenIndex = position825, tokenIndex825
l830:
{
position831, tokenIndex831 := position, tokenIndex
if !_rules[ruleOffset]() {
goto l831
}
goto l830
l831:
position, tokenIndex = position831, tokenIndex831
}
if !_rules[ruleBaseIndexScale]() {
goto l829
}
goto l825
l829:
position, tokenIndex = position825, tokenIndex825
if !_rules[ruleSegmentRegister]() {
goto l832
}
if !_rules[ruleOffset]() {
goto l832
}
if !_rules[ruleBaseIndexScale]() {
goto l832
}
goto l825
l832:
position, tokenIndex = position825, tokenIndex825
if !_rules[ruleSegmentRegister]() {
goto l833
}
if !_rules[ruleBaseIndexScale]() {
goto l833
}
goto l825
l833:
position, tokenIndex = position825, tokenIndex825
if !_rules[ruleSegmentRegister]() {
goto l834
}
if !_rules[ruleOffset]() {
goto l834
}
goto l825
l834:
position, tokenIndex = position825, tokenIndex825
if !_rules[ruleARMBaseIndexScale]() {
goto l835
}
goto l825
l835:
position, tokenIndex = position825, tokenIndex825
if !_rules[ruleBaseIndexScale]() {
goto l823
}
}
l825:
add(ruleMemoryRef, position824)
}
return true
l823:
position, tokenIndex = position823, tokenIndex823
return false
},
/* 50 SymbolRef <- <((Offset* '+')? (LocalSymbol / SymbolName) Offset* ('@' Section Offset*)?)> */
func() bool {
position836, tokenIndex836 := position, tokenIndex
{
position837 := position
{
position838, tokenIndex838 := position, tokenIndex
l840:
{
position841, tokenIndex841 := position, tokenIndex
if !_rules[ruleOffset]() {
goto l841
}
goto l840
l841:
position, tokenIndex = position841, tokenIndex841
}
if buffer[position] != rune('+') {
goto l838
}
position++
goto l839
l838:
position, tokenIndex = position838, tokenIndex838
}
l839:
{
position842, tokenIndex842 := position, tokenIndex
if !_rules[ruleLocalSymbol]() {
goto l843
}
goto l842
l843:
position, tokenIndex = position842, tokenIndex842
if !_rules[ruleSymbolName]() {
goto l836
}
}
l842:
l844:
{
position845, tokenIndex845 := position, tokenIndex
if !_rules[ruleOffset]() {
goto l845
}
goto l844
l845:
position, tokenIndex = position845, tokenIndex845
}
{
position846, tokenIndex846 := position, tokenIndex
if buffer[position] != rune('@') {
goto l846
}
position++
if !_rules[ruleSection]() {
goto l846
}
l848:
{
position849, tokenIndex849 := position, tokenIndex
if !_rules[ruleOffset]() {
goto l849
}
goto l848
l849:
position, tokenIndex = position849, tokenIndex849
}
goto l847
l846:
position, tokenIndex = position846, tokenIndex846
}
l847:
add(ruleSymbolRef, position837)
}
return true
l836:
position, tokenIndex = position836, tokenIndex836
return false
},
/* 51 Low12BitsSymbolRef <- <(':' ('l' / 'L') ('o' / 'O') '1' '2' ':' (LocalSymbol / SymbolName) Offset?)> */
func() bool {
position850, tokenIndex850 := position, tokenIndex
{
position851 := position
if buffer[position] != rune(':') {
goto l850
}
position++
{
position852, tokenIndex852 := position, tokenIndex
if buffer[position] != rune('l') {
goto l853
}
position++
goto l852
l853:
position, tokenIndex = position852, tokenIndex852
if buffer[position] != rune('L') {
goto l850
}
position++
}
l852:
{
position854, tokenIndex854 := position, tokenIndex
if buffer[position] != rune('o') {
goto l855
}
position++
goto l854
l855:
position, tokenIndex = position854, tokenIndex854
if buffer[position] != rune('O') {
goto l850
}
position++
}
l854:
if buffer[position] != rune('1') {
goto l850
}
position++
if buffer[position] != rune('2') {
goto l850
}
position++
if buffer[position] != rune(':') {
goto l850
}
position++
{
position856, tokenIndex856 := position, tokenIndex
if !_rules[ruleLocalSymbol]() {
goto l857
}
goto l856
l857:
position, tokenIndex = position856, tokenIndex856
if !_rules[ruleSymbolName]() {
goto l850
}
}
l856:
{
position858, tokenIndex858 := position, tokenIndex
if !_rules[ruleOffset]() {
goto l858
}
goto l859
l858:
position, tokenIndex = position858, tokenIndex858
}
l859:
add(ruleLow12BitsSymbolRef, position851)
}
return true
l850:
position, tokenIndex = position850, tokenIndex850
return false
},
/* 52 ARMBaseIndexScale <- <('[' ARMRegister (',' WS? (('#' Offset (('*' [0-9]+) / ('*' '(' [0-9]+ Operator [0-9]+ ')') / ('+' [0-9]+)*)?) / ARMGOTLow12 / Low12BitsSymbolRef / ARMRegister) (',' WS? ARMConstantTweak)?)? ']' ARMPostincrement?)> */
func() bool {
position860, tokenIndex860 := position, tokenIndex
{
position861 := position
if buffer[position] != rune('[') {
goto l860
}
position++
if !_rules[ruleARMRegister]() {
goto l860
}
{
position862, tokenIndex862 := position, tokenIndex
if buffer[position] != rune(',') {
goto l862
}
position++
{
position864, tokenIndex864 := position, tokenIndex
if !_rules[ruleWS]() {
goto l864
}
goto l865
l864:
position, tokenIndex = position864, tokenIndex864
}
l865:
{
position866, tokenIndex866 := position, tokenIndex
if buffer[position] != rune('#') {
goto l867
}
position++
if !_rules[ruleOffset]() {
goto l867
}
{
position868, tokenIndex868 := position, tokenIndex
{
position870, tokenIndex870 := position, tokenIndex
if buffer[position] != rune('*') {
goto l871
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l871
}
position++
l872:
{
position873, tokenIndex873 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l873
}
position++
goto l872
l873:
position, tokenIndex = position873, tokenIndex873
}
goto l870
l871:
position, tokenIndex = position870, tokenIndex870
if buffer[position] != rune('*') {
goto l874
}
position++
if buffer[position] != rune('(') {
goto l874
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l874
}
position++
l875:
{
position876, tokenIndex876 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l876
}
position++
goto l875
l876:
position, tokenIndex = position876, tokenIndex876
}
if !_rules[ruleOperator]() {
goto l874
}
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l874
}
position++
l877:
{
position878, tokenIndex878 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l878
}
position++
goto l877
l878:
position, tokenIndex = position878, tokenIndex878
}
if buffer[position] != rune(')') {
goto l874
}
position++
goto l870
l874:
position, tokenIndex = position870, tokenIndex870
l879:
{
position880, tokenIndex880 := position, tokenIndex
if buffer[position] != rune('+') {
goto l880
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l880
}
position++
l881:
{
position882, tokenIndex882 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l882
}
position++
goto l881
l882:
position, tokenIndex = position882, tokenIndex882
}
goto l879
l880:
position, tokenIndex = position880, tokenIndex880
}
}
l870:
goto l869
position, tokenIndex = position868, tokenIndex868
}
l869:
goto l866
l867:
position, tokenIndex = position866, tokenIndex866
if !_rules[ruleARMGOTLow12]() {
goto l883
}
goto l866
l883:
position, tokenIndex = position866, tokenIndex866
if !_rules[ruleLow12BitsSymbolRef]() {
goto l884
}
goto l866
l884:
position, tokenIndex = position866, tokenIndex866
if !_rules[ruleARMRegister]() {
goto l862
}
}
l866:
{
position885, tokenIndex885 := position, tokenIndex
if buffer[position] != rune(',') {
goto l885
}
position++
{
position887, tokenIndex887 := position, tokenIndex
if !_rules[ruleWS]() {
goto l887
}
goto l888
l887:
position, tokenIndex = position887, tokenIndex887
}
l888:
if !_rules[ruleARMConstantTweak]() {
goto l885
}
goto l886
l885:
position, tokenIndex = position885, tokenIndex885
}
l886:
goto l863
l862:
position, tokenIndex = position862, tokenIndex862
}
l863:
if buffer[position] != rune(']') {
goto l860
}
position++
{
position889, tokenIndex889 := position, tokenIndex
if !_rules[ruleARMPostincrement]() {
goto l889
}
goto l890
l889:
position, tokenIndex = position889, tokenIndex889
}
l890:
add(ruleARMBaseIndexScale, position861)
}
return true
l860:
position, tokenIndex = position860, tokenIndex860
return false
},
/* 53 ARMGOTLow12 <- <(':' ('g' / 'G') ('o' / 'O') ('t' / 'T') '_' ('l' / 'L') ('o' / 'O') '1' '2' ':' SymbolName)> */
func() bool {
position891, tokenIndex891 := position, tokenIndex
{
position892 := position
if buffer[position] != rune(':') {
goto l891
}
position++
{
position893, tokenIndex893 := position, tokenIndex
if buffer[position] != rune('g') {
goto l894
}
position++
goto l893
l894:
position, tokenIndex = position893, tokenIndex893
if buffer[position] != rune('G') {
goto l891
}
position++
}
l893:
{
position895, tokenIndex895 := position, tokenIndex
if buffer[position] != rune('o') {
goto l896
}
position++
goto l895
l896:
position, tokenIndex = position895, tokenIndex895
if buffer[position] != rune('O') {
goto l891
}
position++
}
l895:
{
position897, tokenIndex897 := position, tokenIndex
if buffer[position] != rune('t') {
goto l898
}
position++
goto l897
l898:
position, tokenIndex = position897, tokenIndex897
if buffer[position] != rune('T') {
goto l891
}
position++
}
l897:
if buffer[position] != rune('_') {
goto l891
}
position++
{
position899, tokenIndex899 := position, tokenIndex
if buffer[position] != rune('l') {
goto l900
}
position++
goto l899
l900:
position, tokenIndex = position899, tokenIndex899
if buffer[position] != rune('L') {
goto l891
}
position++
}
l899:
{
position901, tokenIndex901 := position, tokenIndex
if buffer[position] != rune('o') {
goto l902
}
position++
goto l901
l902:
position, tokenIndex = position901, tokenIndex901
if buffer[position] != rune('O') {
goto l891
}
position++
}
l901:
if buffer[position] != rune('1') {
goto l891
}
position++
if buffer[position] != rune('2') {
goto l891
}
position++
if buffer[position] != rune(':') {
goto l891
}
position++
if !_rules[ruleSymbolName]() {
goto l891
}
add(ruleARMGOTLow12, position892)
}
return true
l891:
position, tokenIndex = position891, tokenIndex891
return false
},
/* 54 ARMPostincrement <- <'!'> */
func() bool {
position903, tokenIndex903 := position, tokenIndex
{
position904 := position
if buffer[position] != rune('!') {
goto l903
}
position++
add(ruleARMPostincrement, position904)
}
return true
l903:
position, tokenIndex = position903, tokenIndex903
return false
},
/* 55 BaseIndexScale <- <('(' RegisterOrConstant? WS? (',' WS? RegisterOrConstant WS? (',' [0-9]+)?)? ')')> */
func() bool {
position905, tokenIndex905 := position, tokenIndex
{
position906 := position
if buffer[position] != rune('(') {
goto l905
}
position++
{
position907, tokenIndex907 := position, tokenIndex
if !_rules[ruleRegisterOrConstant]() {
goto l907
}
goto l908
l907:
position, tokenIndex = position907, tokenIndex907
}
l908:
{
position909, tokenIndex909 := position, tokenIndex
if !_rules[ruleWS]() {
goto l909
}
goto l910
l909:
position, tokenIndex = position909, tokenIndex909
}
l910:
{
position911, tokenIndex911 := position, tokenIndex
if buffer[position] != rune(',') {
goto l911
}
position++
{
position913, tokenIndex913 := position, tokenIndex
if !_rules[ruleWS]() {
goto l913
}
goto l914
l913:
position, tokenIndex = position913, tokenIndex913
}
l914:
if !_rules[ruleRegisterOrConstant]() {
goto l911
}
{
position915, tokenIndex915 := position, tokenIndex
if !_rules[ruleWS]() {
goto l915
}
goto l916
l915:
position, tokenIndex = position915, tokenIndex915
}
l916:
{
position917, tokenIndex917 := position, tokenIndex
if buffer[position] != rune(',') {
goto l917
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l917
}
position++
l919:
{
position920, tokenIndex920 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l920
}
position++
goto l919
l920:
position, tokenIndex = position920, tokenIndex920
}
goto l918
l917:
position, tokenIndex = position917, tokenIndex917
}
l918:
goto l912
l911:
position, tokenIndex = position911, tokenIndex911
}
l912:
if buffer[position] != rune(')') {
goto l905
}
position++
add(ruleBaseIndexScale, position906)
}
return true
l905:
position, tokenIndex = position905, tokenIndex905
return false
},
/* 56 Operator <- <('+' / '-')> */
func() bool {
position921, tokenIndex921 := position, tokenIndex
{
position922 := position
{
position923, tokenIndex923 := position, tokenIndex
if buffer[position] != rune('+') {
goto l924
}
position++
goto l923
l924:
position, tokenIndex = position923, tokenIndex923
if buffer[position] != rune('-') {
goto l921
}
position++
}
l923:
add(ruleOperator, position922)
}
return true
l921:
position, tokenIndex = position921, tokenIndex921
return false
},
/* 57 Offset <- <('+'? '-'? (('0' ('b' / 'B') ('0' / '1')+) / ('0' ('x' / 'X') ([0-9] / [0-9] / ([a-f] / [A-F]))+) / [0-9]+))> */
func() bool {
position925, tokenIndex925 := position, tokenIndex
{
position926 := position
{
position927, tokenIndex927 := position, tokenIndex
if buffer[position] != rune('+') {
goto l927
}
position++
goto l928
l927:
position, tokenIndex = position927, tokenIndex927
}
l928:
{
position929, tokenIndex929 := position, tokenIndex
if buffer[position] != rune('-') {
goto l929
}
position++
goto l930
l929:
position, tokenIndex = position929, tokenIndex929
}
l930:
{
position931, tokenIndex931 := position, tokenIndex
if buffer[position] != rune('0') {
goto l932
}
position++
{
position933, tokenIndex933 := position, tokenIndex
if buffer[position] != rune('b') {
goto l934
}
position++
goto l933
l934:
position, tokenIndex = position933, tokenIndex933
if buffer[position] != rune('B') {
goto l932
}
position++
}
l933:
{
position937, tokenIndex937 := position, tokenIndex
if buffer[position] != rune('0') {
goto l938
}
position++
goto l937
l938:
position, tokenIndex = position937, tokenIndex937
if buffer[position] != rune('1') {
goto l932
}
position++
}
l937:
l935:
{
position936, tokenIndex936 := position, tokenIndex
{
position939, tokenIndex939 := position, tokenIndex
if buffer[position] != rune('0') {
goto l940
}
position++
goto l939
l940:
position, tokenIndex = position939, tokenIndex939
if buffer[position] != rune('1') {
goto l936
}
position++
}
l939:
goto l935
l936:
position, tokenIndex = position936, tokenIndex936
}
goto l931
l932:
position, tokenIndex = position931, tokenIndex931
if buffer[position] != rune('0') {
goto l941
}
position++
{
position942, tokenIndex942 := position, tokenIndex
if buffer[position] != rune('x') {
goto l943
}
position++
goto l942
l943:
position, tokenIndex = position942, tokenIndex942
if buffer[position] != rune('X') {
goto l941
}
position++
}
l942:
{
position946, tokenIndex946 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l947
}
position++
goto l946
l947:
position, tokenIndex = position946, tokenIndex946
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l948
}
position++
goto l946
l948:
position, tokenIndex = position946, tokenIndex946
{
position949, tokenIndex949 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('f') {
goto l950
}
position++
goto l949
l950:
position, tokenIndex = position949, tokenIndex949
if c := buffer[position]; c < rune('A') || c > rune('F') {
goto l941
}
position++
}
l949:
}
l946:
l944:
{
position945, tokenIndex945 := position, tokenIndex
{
position951, tokenIndex951 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l952
}
position++
goto l951
l952:
position, tokenIndex = position951, tokenIndex951
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l953
}
position++
goto l951
l953:
position, tokenIndex = position951, tokenIndex951
{
position954, tokenIndex954 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('f') {
goto l955
}
position++
goto l954
l955:
position, tokenIndex = position954, tokenIndex954
if c := buffer[position]; c < rune('A') || c > rune('F') {
goto l945
}
position++
}
l954:
}
l951:
goto l944
l945:
position, tokenIndex = position945, tokenIndex945
}
goto l931
l941:
position, tokenIndex = position931, tokenIndex931
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l925
}
position++
l956:
{
position957, tokenIndex957 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l957
}
position++
goto l956
l957:
position, tokenIndex = position957, tokenIndex957
}
}
l931:
add(ruleOffset, position926)
}
return true
l925:
position, tokenIndex = position925, tokenIndex925
return false
},
/* 58 Section <- <([a-z] / [A-Z] / '@')+> */
func() bool {
position958, tokenIndex958 := position, tokenIndex
{
position959 := position
{
position962, tokenIndex962 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l963
}
position++
goto l962
l963:
position, tokenIndex = position962, tokenIndex962
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l964
}
position++
goto l962
l964:
position, tokenIndex = position962, tokenIndex962
if buffer[position] != rune('@') {
goto l958
}
position++
}
l962:
l960:
{
position961, tokenIndex961 := position, tokenIndex
{
position965, tokenIndex965 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l966
}
position++
goto l965
l966:
position, tokenIndex = position965, tokenIndex965
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l967
}
position++
goto l965
l967:
position, tokenIndex = position965, tokenIndex965
if buffer[position] != rune('@') {
goto l961
}
position++
}
l965:
goto l960
l961:
position, tokenIndex = position961, tokenIndex961
}
add(ruleSection, position959)
}
return true
l958:
position, tokenIndex = position958, tokenIndex958
return false
},
/* 59 SegmentRegister <- <('%' ([c-g] / 's') ('s' ':'))> */
func() bool {
position968, tokenIndex968 := position, tokenIndex
{
position969 := position
if buffer[position] != rune('%') {
goto l968
}
position++
{
position970, tokenIndex970 := position, tokenIndex
if c := buffer[position]; c < rune('c') || c > rune('g') {
goto l971
}
position++
goto l970
l971:
position, tokenIndex = position970, tokenIndex970
if buffer[position] != rune('s') {
goto l968
}
position++
}
l970:
if buffer[position] != rune('s') {
goto l968
}
position++
if buffer[position] != rune(':') {
goto l968
}
position++
add(ruleSegmentRegister, position969)
}
return true
l968:
position, tokenIndex = position968, tokenIndex968
return false
},
}
p.rules = _rules
return nil
}