util/fipstools/delocate/delocate.peg.go (7,942 lines of code) (raw):
package main
// Code generated by /Users/andhop/go/bin/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
ruleZeroDirective
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
ruleInstruction
ruleInstructionName
ruleInstructionArg
ruleGOTLocation
ruleGOTSymbolOffset
ruleAVX512Token
ruleTOCRefHigh
ruleTOCRefLow
ruleIndirectionIndicator
ruleRegisterOrConstant
ruleARMConstantTweak
ruleARMRegister
ruleARMVectorRegister
ruleSVE2PredicateRegister
ruleARMRegisterBoundary
ruleMemoryRef
ruleSymbolRef
ruleLow12BitsSymbolRef
ruleARMBaseIndexScale
ruleARMGOTLow12
ruleARMPostincrement
ruleBaseIndexScale
ruleOperator
ruleOffsetOperator
ruleS2nBignumHelper
ruleOffset
ruleSection
ruleSegmentRegister
)
var rul3s = [...]string{
"Unknown",
"AsmFile",
"Statement",
"GlobalDirective",
"Directive",
"DirectiveName",
"LocationDirective",
"ZeroDirective",
"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",
"Instruction",
"InstructionName",
"InstructionArg",
"GOTLocation",
"GOTSymbolOffset",
"AVX512Token",
"TOCRefHigh",
"TOCRefLow",
"IndirectionIndicator",
"RegisterOrConstant",
"ARMConstantTweak",
"ARMRegister",
"ARMVectorRegister",
"SVE2PredicateRegister",
"ARMRegisterBoundary",
"MemoryRef",
"SymbolRef",
"Low12BitsSymbolRef",
"ARMBaseIndexScale",
"ARMGOTLow12",
"ARMPostincrement",
"BaseIndexScale",
"Operator",
"OffsetOperator",
"S2nBignumHelper",
"Offset",
"Section",
"SegmentRegister",
}
type token32 struct {
pegRule
begin, end uint32
}
func (t *token32) String() string {
return fmt.Sprintf("\x1B[34m%v\x1B[m %v %v", rul3s[t.pegRule], t.begin, t.end)
}
type node32 struct {
token32
up, next *node32
}
func (node *node32) print(w io.Writer, pretty bool, buffer string) {
var print func(node *node32, depth int)
print = func(node *node32, depth int) {
for node != nil {
for c := 0; c < depth; c++ {
fmt.Fprintf(w, " ")
}
rule := rul3s[node.pegRule]
quote := strconv.Quote(string(([]rune(buffer)[node.begin:node.end])))
if !pretty {
fmt.Fprintf(w, "%v %v\n", rule, quote)
} else {
fmt.Fprintf(w, "\x1B[36m%v\x1B[m %v\n", rule, quote)
}
if node.up != nil {
print(node.up, depth+1)
}
node = node.next
}
}
print(node, 0)
}
func (node *node32) Print(w io.Writer, buffer string) {
node.print(w, false, buffer)
}
func (node *node32) PrettyPrint(w io.Writer, buffer string) {
node.print(w, true, buffer)
}
type tokens32 struct {
tree []token32
}
func (t *tokens32) Trim(length uint32) {
t.tree = t.tree[:length]
}
func (t *tokens32) Print() {
for _, token := range t.tree {
fmt.Println(token.String())
}
}
func (t *tokens32) AST() *node32 {
type element struct {
node *node32
down *element
}
tokens := t.Tokens()
var stack *element
for _, token := range tokens {
if token.begin == token.end {
continue
}
node := &node32{token32: token}
for stack != nil && stack.node.begin >= token.begin && stack.node.end <= token.end {
stack.node.next = node.up
node.up = stack.node
stack = stack.down
}
stack = &element{node: node, down: stack}
}
if stack != nil {
return stack.node
}
return nil
}
func (t *tokens32) PrintSyntaxTree(buffer string) {
t.AST().Print(os.Stdout, buffer)
}
func (t *tokens32) WriteSyntaxTree(w io.Writer, buffer string) {
t.AST().Print(w, buffer)
}
func (t *tokens32) PrettyPrintSyntaxTree(buffer string) {
t.AST().PrettyPrint(os.Stdout, buffer)
}
func (t *tokens32) Add(rule pegRule, begin, end, index uint32) {
tree, i := t.tree, int(index)
if i >= len(tree) {
t.tree = append(tree, token32{pegRule: rule, begin: begin, end: end})
return
}
tree[i] = token32{pegRule: rule, begin: begin, end: end}
}
func (t *tokens32) Tokens() []token32 {
return t.tree
}
type Asm struct {
Buffer string
buffer []rune
rules [62]func() bool
parse func(rule ...int) error
reset func()
Pretty bool
tokens32
}
func (p *Asm) Parse(rule ...int) error {
return p.parse(rule...)
}
func (p *Asm) Reset() {
p.reset()
}
type textPosition struct {
line, symbol int
}
type textPositionMap map[int]textPosition
func translatePositions(buffer []rune, positions []int) textPositionMap {
length, translations, j, line, symbol := len(positions), make(textPositionMap, len(positions)), 0, 1, 0
sort.Ints(positions)
search:
for i, c := range buffer {
if c == '\n' {
line, symbol = line+1, 0
} else {
symbol++
}
if i == positions[j] {
translations[positions[j]] = textPosition{line, symbol}
for j++; j < length; j++ {
if i != positions[j] {
continue search
}
}
break search
}
}
return translations
}
type parseError struct {
p *Asm
max token32
}
func (e *parseError) Error() string {
tokens, err := []token32{e.max}, "\n"
positions, p := make([]int, 2*len(tokens)), 0
for _, token := range tokens {
positions[p], p = int(token.begin), p+1
positions[p], p = int(token.end), p+1
}
translations := translatePositions(e.p.buffer, positions)
format := "parse error near %v (line %v symbol %v - line %v symbol %v):\n%v\n"
if e.p.Pretty {
format = "parse error near \x1B[34m%v\x1B[m (line %v symbol %v - line %v symbol %v):\n%v\n"
}
for _, token := range tokens {
begin, end := int(token.begin), int(token.end)
err += fmt.Sprintf(format,
rul3s[token.pegRule],
translations[begin].line, translations[begin].symbol,
translations[end].line, translations[end].symbol,
strconv.Quote(string(e.p.buffer[begin:end])))
}
return err
}
func (p *Asm) PrintSyntaxTree() {
if p.Pretty {
p.tokens32.PrettyPrintSyntaxTree(p.Buffer)
} else {
p.tokens32.PrintSyntaxTree(p.Buffer)
}
}
func (p *Asm) WriteSyntaxTree(w io.Writer) {
p.tokens32.WriteSyntaxTree(w, p.Buffer)
}
func (p *Asm) SprintSyntaxTree() string {
var bldr strings.Builder
p.WriteSyntaxTree(&bldr)
return bldr.String()
}
func Pretty(pretty bool) func(*Asm) error {
return func(p *Asm) error {
p.Pretty = pretty
return nil
}
}
func Size(size int) func(*Asm) error {
return func(p *Asm) error {
p.tokens32 = tokens32{tree: make([]token32, 0, size)}
return nil
}
}
func (p *Asm) Init(options ...func(*Asm) error) error {
var (
max token32
position, tokenIndex uint32
buffer []rune
)
for _, option := range options {
err := option(p)
if err != nil {
return err
}
}
p.reset = func() {
max = token32{}
position, tokenIndex = 0, 0
p.buffer = []rune(p.Buffer)
if len(p.buffer) == 0 || p.buffer[len(p.buffer)-1] != endSymbol {
p.buffer = append(p.buffer, endSymbol)
}
buffer = p.buffer
}
p.reset()
_rules := p.rules
tree := p.tokens32
p.parse = func(rule ...int) error {
r := 1
if len(rule) > 0 {
r = rule[0]
}
matches := p.rules[r]()
p.tokens32 = tree
if matches {
p.Trim(tokenIndex)
return nil
}
return &parseError{p, max}
}
add := func(rule pegRule, begin uint32) {
tree.Add(rule, begin, position, tokenIndex)
tokenIndex++
if begin != position && position > max.end {
max = token32{rule, begin, position}
}
}
matchDot := func() bool {
if buffer[position] != endSymbol {
position++
return true
}
return false
}
/*matchChar := func(c byte) bool {
if buffer[position] == c {
position++
return true
}
return false
}*/
/*matchRange := func(lower byte, upper byte) bool {
if c := buffer[position]; c >= lower && c <= upper {
position++
return true
}
return false
}*/
_rules = [...]func() bool{
nil,
/* 0 AsmFile <- <(Statement* !.)> */
func() bool {
position0, tokenIndex0 := position, tokenIndex
{
position1 := position
l2:
{
position3, tokenIndex3 := position, tokenIndex
if !_rules[ruleStatement]() {
goto l3
}
goto l2
l3:
position, tokenIndex = position3, tokenIndex3
}
{
position4, tokenIndex4 := position, tokenIndex
if !matchDot() {
goto l4
}
goto l0
l4:
position, tokenIndex = position4, tokenIndex4
}
add(ruleAsmFile, position1)
}
return true
l0:
position, tokenIndex = position0, tokenIndex0
return false
},
/* 1 Statement <- <(WS? (Label / ((GlobalDirective / LocationDirective / LabelContainingDirective / ZeroDirective / 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[ruleZeroDirective]() {
goto l15
}
goto l11
l15:
position, tokenIndex = position11, tokenIndex11
if !_rules[ruleInstruction]() {
goto l16
}
goto l11
l16:
position, tokenIndex = position11, tokenIndex11
if !_rules[ruleDirective]() {
goto l17
}
goto l11
l17:
position, tokenIndex = position11, tokenIndex11
if !_rules[ruleComment]() {
goto l18
}
goto l11
l18:
position, tokenIndex = position11, tokenIndex11
}
l11:
{
position19, tokenIndex19 := position, tokenIndex
if !_rules[ruleWS]() {
goto l19
}
goto l20
l19:
position, tokenIndex = position19, tokenIndex19
}
l20:
{
position21, tokenIndex21 := position, tokenIndex
{
position23, tokenIndex23 := position, tokenIndex
if !_rules[ruleComment]() {
goto l23
}
goto l24
l23:
position, tokenIndex = position23, tokenIndex23
}
l24:
if buffer[position] != rune('\n') {
goto l22
}
position++
goto l21
l22:
position, tokenIndex = position21, tokenIndex21
if buffer[position] != rune(';') {
goto l5
}
position++
}
l21:
}
l9:
add(ruleStatement, position6)
}
return true
l5:
position, tokenIndex = position5, tokenIndex5
return false
},
/* 2 GlobalDirective <- <((('.' ('g' / 'G') ('l' / 'L') ('o' / 'O') ('b' / 'B') ('a' / 'A') ('l' / 'L')) / ('.' ('g' / 'G') ('l' / 'L') ('o' / 'O') ('b' / 'B') ('l' / 'L'))) WS SymbolName)> */
func() bool {
position25, tokenIndex25 := position, tokenIndex
{
position26 := position
{
position27, tokenIndex27 := position, tokenIndex
if buffer[position] != rune('.') {
goto l28
}
position++
{
position29, tokenIndex29 := position, tokenIndex
if buffer[position] != rune('g') {
goto l30
}
position++
goto l29
l30:
position, tokenIndex = position29, tokenIndex29
if buffer[position] != rune('G') {
goto l28
}
position++
}
l29:
{
position31, tokenIndex31 := position, tokenIndex
if buffer[position] != rune('l') {
goto l32
}
position++
goto l31
l32:
position, tokenIndex = position31, tokenIndex31
if buffer[position] != rune('L') {
goto l28
}
position++
}
l31:
{
position33, tokenIndex33 := position, tokenIndex
if buffer[position] != rune('o') {
goto l34
}
position++
goto l33
l34:
position, tokenIndex = position33, tokenIndex33
if buffer[position] != rune('O') {
goto l28
}
position++
}
l33:
{
position35, tokenIndex35 := position, tokenIndex
if buffer[position] != rune('b') {
goto l36
}
position++
goto l35
l36:
position, tokenIndex = position35, tokenIndex35
if buffer[position] != rune('B') {
goto l28
}
position++
}
l35:
{
position37, tokenIndex37 := position, tokenIndex
if buffer[position] != rune('a') {
goto l38
}
position++
goto l37
l38:
position, tokenIndex = position37, tokenIndex37
if buffer[position] != rune('A') {
goto l28
}
position++
}
l37:
{
position39, tokenIndex39 := position, tokenIndex
if buffer[position] != rune('l') {
goto l40
}
position++
goto l39
l40:
position, tokenIndex = position39, tokenIndex39
if buffer[position] != rune('L') {
goto l28
}
position++
}
l39:
goto l27
l28:
position, tokenIndex = position27, tokenIndex27
if buffer[position] != rune('.') {
goto l25
}
position++
{
position41, tokenIndex41 := position, tokenIndex
if buffer[position] != rune('g') {
goto l42
}
position++
goto l41
l42:
position, tokenIndex = position41, tokenIndex41
if buffer[position] != rune('G') {
goto l25
}
position++
}
l41:
{
position43, tokenIndex43 := position, tokenIndex
if buffer[position] != rune('l') {
goto l44
}
position++
goto l43
l44:
position, tokenIndex = position43, tokenIndex43
if buffer[position] != rune('L') {
goto l25
}
position++
}
l43:
{
position45, tokenIndex45 := position, tokenIndex
if buffer[position] != rune('o') {
goto l46
}
position++
goto l45
l46:
position, tokenIndex = position45, tokenIndex45
if buffer[position] != rune('O') {
goto l25
}
position++
}
l45:
{
position47, tokenIndex47 := position, tokenIndex
if buffer[position] != rune('b') {
goto l48
}
position++
goto l47
l48:
position, tokenIndex = position47, tokenIndex47
if buffer[position] != rune('B') {
goto l25
}
position++
}
l47:
{
position49, tokenIndex49 := position, tokenIndex
if buffer[position] != rune('l') {
goto l50
}
position++
goto l49
l50:
position, tokenIndex = position49, tokenIndex49
if buffer[position] != rune('L') {
goto l25
}
position++
}
l49:
}
l27:
if !_rules[ruleWS]() {
goto l25
}
if !_rules[ruleSymbolName]() {
goto l25
}
add(ruleGlobalDirective, position26)
}
return true
l25:
position, tokenIndex = position25, tokenIndex25
return false
},
/* 3 Directive <- <('.' DirectiveName (WS Args)?)> */
func() bool {
position51, tokenIndex51 := position, tokenIndex
{
position52 := position
if buffer[position] != rune('.') {
goto l51
}
position++
if !_rules[ruleDirectiveName]() {
goto l51
}
{
position53, tokenIndex53 := position, tokenIndex
if !_rules[ruleWS]() {
goto l53
}
if !_rules[ruleArgs]() {
goto l53
}
goto l54
l53:
position, tokenIndex = position53, tokenIndex53
}
l54:
add(ruleDirective, position52)
}
return true
l51:
position, tokenIndex = position51, tokenIndex51
return false
},
/* 4 DirectiveName <- <([a-z] / [A-Z] / ([0-9] / [0-9]) / '_')+> */
func() bool {
position55, tokenIndex55 := position, tokenIndex
{
position56 := position
{
position59, tokenIndex59 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l60
}
position++
goto l59
l60:
position, tokenIndex = position59, tokenIndex59
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l61
}
position++
goto l59
l61:
position, tokenIndex = position59, tokenIndex59
{
position63, tokenIndex63 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l64
}
position++
goto l63
l64:
position, tokenIndex = position63, tokenIndex63
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l62
}
position++
}
l63:
goto l59
l62:
position, tokenIndex = position59, tokenIndex59
if buffer[position] != rune('_') {
goto l55
}
position++
}
l59:
l57:
{
position58, tokenIndex58 := position, tokenIndex
{
position65, tokenIndex65 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l66
}
position++
goto l65
l66:
position, tokenIndex = position65, tokenIndex65
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l67
}
position++
goto l65
l67:
position, tokenIndex = position65, tokenIndex65
{
position69, tokenIndex69 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l70
}
position++
goto l69
l70:
position, tokenIndex = position69, tokenIndex69
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l68
}
position++
}
l69:
goto l65
l68:
position, tokenIndex = position65, tokenIndex65
if buffer[position] != rune('_') {
goto l58
}
position++
}
l65:
goto l57
l58:
position, tokenIndex = position58, tokenIndex58
}
add(ruleDirectiveName, position56)
}
return true
l55:
position, tokenIndex = position55, tokenIndex55
return false
},
/* 5 LocationDirective <- <(FileDirective / LocDirective)> */
func() bool {
position71, tokenIndex71 := position, tokenIndex
{
position72 := position
{
position73, tokenIndex73 := position, tokenIndex
if !_rules[ruleFileDirective]() {
goto l74
}
goto l73
l74:
position, tokenIndex = position73, tokenIndex73
if !_rules[ruleLocDirective]() {
goto l71
}
}
l73:
add(ruleLocationDirective, position72)
}
return true
l71:
position, tokenIndex = position71, tokenIndex71
return false
},
/* 6 ZeroDirective <- <('.' ('z' / 'Z') ('e' / 'E') ('r' / 'R') ('o' / 'O') WS (!('#' / '\n') .)+)> */
func() bool {
position75, tokenIndex75 := position, tokenIndex
{
position76 := position
if buffer[position] != rune('.') {
goto l75
}
position++
{
position77, tokenIndex77 := position, tokenIndex
if buffer[position] != rune('z') {
goto l78
}
position++
goto l77
l78:
position, tokenIndex = position77, tokenIndex77
if buffer[position] != rune('Z') {
goto l75
}
position++
}
l77:
{
position79, tokenIndex79 := position, tokenIndex
if buffer[position] != rune('e') {
goto l80
}
position++
goto l79
l80:
position, tokenIndex = position79, tokenIndex79
if buffer[position] != rune('E') {
goto l75
}
position++
}
l79:
{
position81, tokenIndex81 := position, tokenIndex
if buffer[position] != rune('r') {
goto l82
}
position++
goto l81
l82:
position, tokenIndex = position81, tokenIndex81
if buffer[position] != rune('R') {
goto l75
}
position++
}
l81:
{
position83, tokenIndex83 := position, tokenIndex
if buffer[position] != rune('o') {
goto l84
}
position++
goto l83
l84:
position, tokenIndex = position83, tokenIndex83
if buffer[position] != rune('O') {
goto l75
}
position++
}
l83:
if !_rules[ruleWS]() {
goto l75
}
{
position87, tokenIndex87 := position, tokenIndex
{
position88, tokenIndex88 := position, tokenIndex
if buffer[position] != rune('#') {
goto l89
}
position++
goto l88
l89:
position, tokenIndex = position88, tokenIndex88
if buffer[position] != rune('\n') {
goto l87
}
position++
}
l88:
goto l75
l87:
position, tokenIndex = position87, tokenIndex87
}
if !matchDot() {
goto l75
}
l85:
{
position86, tokenIndex86 := position, tokenIndex
{
position90, tokenIndex90 := position, tokenIndex
{
position91, tokenIndex91 := position, tokenIndex
if buffer[position] != rune('#') {
goto l92
}
position++
goto l91
l92:
position, tokenIndex = position91, tokenIndex91
if buffer[position] != rune('\n') {
goto l90
}
position++
}
l91:
goto l86
l90:
position, tokenIndex = position90, tokenIndex90
}
if !matchDot() {
goto l86
}
goto l85
l86:
position, tokenIndex = position86, tokenIndex86
}
add(ruleZeroDirective, position76)
}
return true
l75:
position, tokenIndex = position75, tokenIndex75
return false
},
/* 7 FileDirective <- <('.' ('f' / 'F') ('i' / 'I') ('l' / 'L') ('e' / 'E') WS (!('#' / '\n') .)+)> */
func() bool {
position93, tokenIndex93 := position, tokenIndex
{
position94 := position
if buffer[position] != rune('.') {
goto l93
}
position++
{
position95, tokenIndex95 := position, tokenIndex
if buffer[position] != rune('f') {
goto l96
}
position++
goto l95
l96:
position, tokenIndex = position95, tokenIndex95
if buffer[position] != rune('F') {
goto l93
}
position++
}
l95:
{
position97, tokenIndex97 := position, tokenIndex
if buffer[position] != rune('i') {
goto l98
}
position++
goto l97
l98:
position, tokenIndex = position97, tokenIndex97
if buffer[position] != rune('I') {
goto l93
}
position++
}
l97:
{
position99, tokenIndex99 := position, tokenIndex
if buffer[position] != rune('l') {
goto l100
}
position++
goto l99
l100:
position, tokenIndex = position99, tokenIndex99
if buffer[position] != rune('L') {
goto l93
}
position++
}
l99:
{
position101, tokenIndex101 := position, tokenIndex
if buffer[position] != rune('e') {
goto l102
}
position++
goto l101
l102:
position, tokenIndex = position101, tokenIndex101
if buffer[position] != rune('E') {
goto l93
}
position++
}
l101:
if !_rules[ruleWS]() {
goto l93
}
{
position105, tokenIndex105 := position, tokenIndex
{
position106, tokenIndex106 := position, tokenIndex
if buffer[position] != rune('#') {
goto l107
}
position++
goto l106
l107:
position, tokenIndex = position106, tokenIndex106
if buffer[position] != rune('\n') {
goto l105
}
position++
}
l106:
goto l93
l105:
position, tokenIndex = position105, tokenIndex105
}
if !matchDot() {
goto l93
}
l103:
{
position104, tokenIndex104 := position, tokenIndex
{
position108, tokenIndex108 := position, tokenIndex
{
position109, tokenIndex109 := position, tokenIndex
if buffer[position] != rune('#') {
goto l110
}
position++
goto l109
l110:
position, tokenIndex = position109, tokenIndex109
if buffer[position] != rune('\n') {
goto l108
}
position++
}
l109:
goto l104
l108:
position, tokenIndex = position108, tokenIndex108
}
if !matchDot() {
goto l104
}
goto l103
l104:
position, tokenIndex = position104, tokenIndex104
}
add(ruleFileDirective, position94)
}
return true
l93:
position, tokenIndex = position93, tokenIndex93
return false
},
/* 8 LocDirective <- <('.' ('l' / 'L') ('o' / 'O') ('c' / 'C') WS (!('#' / '/' / '\n') .)+)> */
func() bool {
position111, tokenIndex111 := position, tokenIndex
{
position112 := position
if buffer[position] != rune('.') {
goto l111
}
position++
{
position113, tokenIndex113 := position, tokenIndex
if buffer[position] != rune('l') {
goto l114
}
position++
goto l113
l114:
position, tokenIndex = position113, tokenIndex113
if buffer[position] != rune('L') {
goto l111
}
position++
}
l113:
{
position115, tokenIndex115 := position, tokenIndex
if buffer[position] != rune('o') {
goto l116
}
position++
goto l115
l116:
position, tokenIndex = position115, tokenIndex115
if buffer[position] != rune('O') {
goto l111
}
position++
}
l115:
{
position117, tokenIndex117 := position, tokenIndex
if buffer[position] != rune('c') {
goto l118
}
position++
goto l117
l118:
position, tokenIndex = position117, tokenIndex117
if buffer[position] != rune('C') {
goto l111
}
position++
}
l117:
if !_rules[ruleWS]() {
goto l111
}
{
position121, tokenIndex121 := position, tokenIndex
{
position122, tokenIndex122 := position, tokenIndex
if buffer[position] != rune('#') {
goto l123
}
position++
goto l122
l123:
position, tokenIndex = position122, tokenIndex122
if buffer[position] != rune('/') {
goto l124
}
position++
goto l122
l124:
position, tokenIndex = position122, tokenIndex122
if buffer[position] != rune('\n') {
goto l121
}
position++
}
l122:
goto l111
l121:
position, tokenIndex = position121, tokenIndex121
}
if !matchDot() {
goto l111
}
l119:
{
position120, tokenIndex120 := position, tokenIndex
{
position125, tokenIndex125 := position, tokenIndex
{
position126, tokenIndex126 := position, tokenIndex
if buffer[position] != rune('#') {
goto l127
}
position++
goto l126
l127:
position, tokenIndex = position126, tokenIndex126
if buffer[position] != rune('/') {
goto l128
}
position++
goto l126
l128:
position, tokenIndex = position126, tokenIndex126
if buffer[position] != rune('\n') {
goto l125
}
position++
}
l126:
goto l120
l125:
position, tokenIndex = position125, tokenIndex125
}
if !matchDot() {
goto l120
}
goto l119
l120:
position, tokenIndex = position120, tokenIndex120
}
add(ruleLocDirective, position112)
}
return true
l111:
position, tokenIndex = position111, tokenIndex111
return false
},
/* 9 Args <- <(Arg (WS? ',' WS? Arg)*)> */
func() bool {
position129, tokenIndex129 := position, tokenIndex
{
position130 := position
if !_rules[ruleArg]() {
goto l129
}
l131:
{
position132, tokenIndex132 := position, tokenIndex
{
position133, tokenIndex133 := position, tokenIndex
if !_rules[ruleWS]() {
goto l133
}
goto l134
l133:
position, tokenIndex = position133, tokenIndex133
}
l134:
if buffer[position] != rune(',') {
goto l132
}
position++
{
position135, tokenIndex135 := position, tokenIndex
if !_rules[ruleWS]() {
goto l135
}
goto l136
l135:
position, tokenIndex = position135, tokenIndex135
}
l136:
if !_rules[ruleArg]() {
goto l132
}
goto l131
l132:
position, tokenIndex = position132, tokenIndex132
}
add(ruleArgs, position130)
}
return true
l129:
position, tokenIndex = position129, tokenIndex129
return false
},
/* 10 Arg <- <(QuotedArg / ([0-9] / [0-9] / ([a-z] / [A-Z]) / '%' / '+' / '-' / '*' / '_' / '@' / '.')*)> */
func() bool {
{
position138 := position
{
position139, tokenIndex139 := position, tokenIndex
if !_rules[ruleQuotedArg]() {
goto l140
}
goto l139
l140:
position, tokenIndex = position139, tokenIndex139
l141:
{
position142, tokenIndex142 := position, tokenIndex
{
position143, tokenIndex143 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l144
}
position++
goto l143
l144:
position, tokenIndex = position143, tokenIndex143
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l145
}
position++
goto l143
l145:
position, tokenIndex = position143, tokenIndex143
{
position147, tokenIndex147 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l148
}
position++
goto l147
l148:
position, tokenIndex = position147, tokenIndex147
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l146
}
position++
}
l147:
goto l143
l146:
position, tokenIndex = position143, tokenIndex143
if buffer[position] != rune('%') {
goto l149
}
position++
goto l143
l149:
position, tokenIndex = position143, tokenIndex143
if buffer[position] != rune('+') {
goto l150
}
position++
goto l143
l150:
position, tokenIndex = position143, tokenIndex143
if buffer[position] != rune('-') {
goto l151
}
position++
goto l143
l151:
position, tokenIndex = position143, tokenIndex143
if buffer[position] != rune('*') {
goto l152
}
position++
goto l143
l152:
position, tokenIndex = position143, tokenIndex143
if buffer[position] != rune('_') {
goto l153
}
position++
goto l143
l153:
position, tokenIndex = position143, tokenIndex143
if buffer[position] != rune('@') {
goto l154
}
position++
goto l143
l154:
position, tokenIndex = position143, tokenIndex143
if buffer[position] != rune('.') {
goto l142
}
position++
}
l143:
goto l141
l142:
position, tokenIndex = position142, tokenIndex142
}
}
l139:
add(ruleArg, position138)
}
return true
},
/* 11 QuotedArg <- <('"' QuotedText '"')> */
func() bool {
position155, tokenIndex155 := position, tokenIndex
{
position156 := position
if buffer[position] != rune('"') {
goto l155
}
position++
if !_rules[ruleQuotedText]() {
goto l155
}
if buffer[position] != rune('"') {
goto l155
}
position++
add(ruleQuotedArg, position156)
}
return true
l155:
position, tokenIndex = position155, tokenIndex155
return false
},
/* 12 QuotedText <- <(EscapedChar / (!'"' .))*> */
func() bool {
{
position158 := position
l159:
{
position160, tokenIndex160 := position, tokenIndex
{
position161, tokenIndex161 := position, tokenIndex
if !_rules[ruleEscapedChar]() {
goto l162
}
goto l161
l162:
position, tokenIndex = position161, tokenIndex161
{
position163, tokenIndex163 := position, tokenIndex
if buffer[position] != rune('"') {
goto l163
}
position++
goto l160
l163:
position, tokenIndex = position163, tokenIndex163
}
if !matchDot() {
goto l160
}
}
l161:
goto l159
l160:
position, tokenIndex = position160, tokenIndex160
}
add(ruleQuotedText, position158)
}
return true
},
/* 13 LabelContainingDirective <- <(LabelContainingDirectiveName WS SymbolArgs)> */
func() bool {
position164, tokenIndex164 := position, tokenIndex
{
position165 := position
if !_rules[ruleLabelContainingDirectiveName]() {
goto l164
}
if !_rules[ruleWS]() {
goto l164
}
if !_rules[ruleSymbolArgs]() {
goto l164
}
add(ruleLabelContainingDirective, position165)
}
return true
l164:
position, tokenIndex = position164, tokenIndex164
return false
},
/* 14 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 {
position166, tokenIndex166 := position, tokenIndex
{
position167 := position
{
position168, tokenIndex168 := position, tokenIndex
if buffer[position] != rune('.') {
goto l169
}
position++
{
position170, tokenIndex170 := position, tokenIndex
if buffer[position] != rune('x') {
goto l171
}
position++
goto l170
l171:
position, tokenIndex = position170, tokenIndex170
if buffer[position] != rune('X') {
goto l169
}
position++
}
l170:
{
position172, tokenIndex172 := position, tokenIndex
if buffer[position] != rune('w') {
goto l173
}
position++
goto l172
l173:
position, tokenIndex = position172, tokenIndex172
if buffer[position] != rune('W') {
goto l169
}
position++
}
l172:
{
position174, tokenIndex174 := position, tokenIndex
if buffer[position] != rune('o') {
goto l175
}
position++
goto l174
l175:
position, tokenIndex = position174, tokenIndex174
if buffer[position] != rune('O') {
goto l169
}
position++
}
l174:
{
position176, tokenIndex176 := position, tokenIndex
if buffer[position] != rune('r') {
goto l177
}
position++
goto l176
l177:
position, tokenIndex = position176, tokenIndex176
if buffer[position] != rune('R') {
goto l169
}
position++
}
l176:
{
position178, tokenIndex178 := position, tokenIndex
if buffer[position] != rune('d') {
goto l179
}
position++
goto l178
l179:
position, tokenIndex = position178, tokenIndex178
if buffer[position] != rune('D') {
goto l169
}
position++
}
l178:
goto l168
l169:
position, tokenIndex = position168, tokenIndex168
if buffer[position] != rune('.') {
goto l180
}
position++
{
position181, tokenIndex181 := position, tokenIndex
if buffer[position] != rune('w') {
goto l182
}
position++
goto l181
l182:
position, tokenIndex = position181, tokenIndex181
if buffer[position] != rune('W') {
goto l180
}
position++
}
l181:
{
position183, tokenIndex183 := position, tokenIndex
if buffer[position] != rune('o') {
goto l184
}
position++
goto l183
l184:
position, tokenIndex = position183, tokenIndex183
if buffer[position] != rune('O') {
goto l180
}
position++
}
l183:
{
position185, tokenIndex185 := position, tokenIndex
if buffer[position] != rune('r') {
goto l186
}
position++
goto l185
l186:
position, tokenIndex = position185, tokenIndex185
if buffer[position] != rune('R') {
goto l180
}
position++
}
l185:
{
position187, tokenIndex187 := position, tokenIndex
if buffer[position] != rune('d') {
goto l188
}
position++
goto l187
l188:
position, tokenIndex = position187, tokenIndex187
if buffer[position] != rune('D') {
goto l180
}
position++
}
l187:
goto l168
l180:
position, tokenIndex = position168, tokenIndex168
if buffer[position] != rune('.') {
goto l189
}
position++
{
position190, tokenIndex190 := position, tokenIndex
if buffer[position] != rune('h') {
goto l191
}
position++
goto l190
l191:
position, tokenIndex = position190, tokenIndex190
if buffer[position] != rune('H') {
goto l189
}
position++
}
l190:
{
position192, tokenIndex192 := position, tokenIndex
if buffer[position] != rune('w') {
goto l193
}
position++
goto l192
l193:
position, tokenIndex = position192, tokenIndex192
if buffer[position] != rune('W') {
goto l189
}
position++
}
l192:
{
position194, tokenIndex194 := position, tokenIndex
if buffer[position] != rune('o') {
goto l195
}
position++
goto l194
l195:
position, tokenIndex = position194, tokenIndex194
if buffer[position] != rune('O') {
goto l189
}
position++
}
l194:
{
position196, tokenIndex196 := position, tokenIndex
if buffer[position] != rune('r') {
goto l197
}
position++
goto l196
l197:
position, tokenIndex = position196, tokenIndex196
if buffer[position] != rune('R') {
goto l189
}
position++
}
l196:
{
position198, tokenIndex198 := position, tokenIndex
if buffer[position] != rune('d') {
goto l199
}
position++
goto l198
l199:
position, tokenIndex = position198, tokenIndex198
if buffer[position] != rune('D') {
goto l189
}
position++
}
l198:
goto l168
l189:
position, tokenIndex = position168, tokenIndex168
if buffer[position] != rune('.') {
goto l200
}
position++
{
position201, tokenIndex201 := position, tokenIndex
if buffer[position] != rune('l') {
goto l202
}
position++
goto l201
l202:
position, tokenIndex = position201, tokenIndex201
if buffer[position] != rune('L') {
goto l200
}
position++
}
l201:
{
position203, tokenIndex203 := position, tokenIndex
if buffer[position] != rune('o') {
goto l204
}
position++
goto l203
l204:
position, tokenIndex = position203, tokenIndex203
if buffer[position] != rune('O') {
goto l200
}
position++
}
l203:
{
position205, tokenIndex205 := position, tokenIndex
if buffer[position] != rune('n') {
goto l206
}
position++
goto l205
l206:
position, tokenIndex = position205, tokenIndex205
if buffer[position] != rune('N') {
goto l200
}
position++
}
l205:
{
position207, tokenIndex207 := position, tokenIndex
if buffer[position] != rune('g') {
goto l208
}
position++
goto l207
l208:
position, tokenIndex = position207, tokenIndex207
if buffer[position] != rune('G') {
goto l200
}
position++
}
l207:
goto l168
l200:
position, tokenIndex = position168, tokenIndex168
if buffer[position] != rune('.') {
goto l209
}
position++
{
position210, tokenIndex210 := position, tokenIndex
if buffer[position] != rune('s') {
goto l211
}
position++
goto l210
l211:
position, tokenIndex = position210, tokenIndex210
if buffer[position] != rune('S') {
goto l209
}
position++
}
l210:
{
position212, tokenIndex212 := position, tokenIndex
if buffer[position] != rune('e') {
goto l213
}
position++
goto l212
l213:
position, tokenIndex = position212, tokenIndex212
if buffer[position] != rune('E') {
goto l209
}
position++
}
l212:
{
position214, tokenIndex214 := position, tokenIndex
if buffer[position] != rune('t') {
goto l215
}
position++
goto l214
l215:
position, tokenIndex = position214, tokenIndex214
if buffer[position] != rune('T') {
goto l209
}
position++
}
l214:
goto l168
l209:
position, tokenIndex = position168, tokenIndex168
if buffer[position] != rune('.') {
goto l216
}
position++
{
position217, tokenIndex217 := position, tokenIndex
if buffer[position] != rune('b') {
goto l218
}
position++
goto l217
l218:
position, tokenIndex = position217, tokenIndex217
if buffer[position] != rune('B') {
goto l216
}
position++
}
l217:
{
position219, tokenIndex219 := position, tokenIndex
if buffer[position] != rune('y') {
goto l220
}
position++
goto l219
l220:
position, tokenIndex = position219, tokenIndex219
if buffer[position] != rune('Y') {
goto l216
}
position++
}
l219:
{
position221, tokenIndex221 := position, tokenIndex
if buffer[position] != rune('t') {
goto l222
}
position++
goto l221
l222:
position, tokenIndex = position221, tokenIndex221
if buffer[position] != rune('T') {
goto l216
}
position++
}
l221:
{
position223, tokenIndex223 := position, tokenIndex
if buffer[position] != rune('e') {
goto l224
}
position++
goto l223
l224:
position, tokenIndex = position223, tokenIndex223
if buffer[position] != rune('E') {
goto l216
}
position++
}
l223:
goto l168
l216:
position, tokenIndex = position168, tokenIndex168
if buffer[position] != rune('.') {
goto l225
}
position++
if buffer[position] != rune('8') {
goto l225
}
position++
{
position226, tokenIndex226 := position, tokenIndex
if buffer[position] != rune('b') {
goto l227
}
position++
goto l226
l227:
position, tokenIndex = position226, tokenIndex226
if buffer[position] != rune('B') {
goto l225
}
position++
}
l226:
{
position228, tokenIndex228 := position, tokenIndex
if buffer[position] != rune('y') {
goto l229
}
position++
goto l228
l229:
position, tokenIndex = position228, tokenIndex228
if buffer[position] != rune('Y') {
goto l225
}
position++
}
l228:
{
position230, tokenIndex230 := position, tokenIndex
if buffer[position] != rune('t') {
goto l231
}
position++
goto l230
l231:
position, tokenIndex = position230, tokenIndex230
if buffer[position] != rune('T') {
goto l225
}
position++
}
l230:
{
position232, tokenIndex232 := position, tokenIndex
if buffer[position] != rune('e') {
goto l233
}
position++
goto l232
l233:
position, tokenIndex = position232, tokenIndex232
if buffer[position] != rune('E') {
goto l225
}
position++
}
l232:
goto l168
l225:
position, tokenIndex = position168, tokenIndex168
if buffer[position] != rune('.') {
goto l234
}
position++
if buffer[position] != rune('4') {
goto l234
}
position++
{
position235, tokenIndex235 := position, tokenIndex
if buffer[position] != rune('b') {
goto l236
}
position++
goto l235
l236:
position, tokenIndex = position235, tokenIndex235
if buffer[position] != rune('B') {
goto l234
}
position++
}
l235:
{
position237, tokenIndex237 := position, tokenIndex
if buffer[position] != rune('y') {
goto l238
}
position++
goto l237
l238:
position, tokenIndex = position237, tokenIndex237
if buffer[position] != rune('Y') {
goto l234
}
position++
}
l237:
{
position239, tokenIndex239 := position, tokenIndex
if buffer[position] != rune('t') {
goto l240
}
position++
goto l239
l240:
position, tokenIndex = position239, tokenIndex239
if buffer[position] != rune('T') {
goto l234
}
position++
}
l239:
{
position241, tokenIndex241 := position, tokenIndex
if buffer[position] != rune('e') {
goto l242
}
position++
goto l241
l242:
position, tokenIndex = position241, tokenIndex241
if buffer[position] != rune('E') {
goto l234
}
position++
}
l241:
goto l168
l234:
position, tokenIndex = position168, tokenIndex168
if buffer[position] != rune('.') {
goto l243
}
position++
{
position244, tokenIndex244 := position, tokenIndex
if buffer[position] != rune('q') {
goto l245
}
position++
goto l244
l245:
position, tokenIndex = position244, tokenIndex244
if buffer[position] != rune('Q') {
goto l243
}
position++
}
l244:
{
position246, tokenIndex246 := position, tokenIndex
if buffer[position] != rune('u') {
goto l247
}
position++
goto l246
l247:
position, tokenIndex = position246, tokenIndex246
if buffer[position] != rune('U') {
goto l243
}
position++
}
l246:
{
position248, tokenIndex248 := position, tokenIndex
if buffer[position] != rune('a') {
goto l249
}
position++
goto l248
l249:
position, tokenIndex = position248, tokenIndex248
if buffer[position] != rune('A') {
goto l243
}
position++
}
l248:
{
position250, tokenIndex250 := position, tokenIndex
if buffer[position] != rune('d') {
goto l251
}
position++
goto l250
l251:
position, tokenIndex = position250, tokenIndex250
if buffer[position] != rune('D') {
goto l243
}
position++
}
l250:
goto l168
l243:
position, tokenIndex = position168, tokenIndex168
if buffer[position] != rune('.') {
goto l252
}
position++
{
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 l252
}
position++
}
l253:
{
position255, tokenIndex255 := position, tokenIndex
if buffer[position] != rune('c') {
goto l256
}
position++
goto l255
l256:
position, tokenIndex = position255, tokenIndex255
if buffer[position] != rune('C') {
goto l252
}
position++
}
l255:
goto l168
l252:
position, tokenIndex = position168, tokenIndex168
if buffer[position] != rune('.') {
goto l257
}
position++
{
position258, tokenIndex258 := position, tokenIndex
if buffer[position] != rune('l') {
goto l259
}
position++
goto l258
l259:
position, tokenIndex = position258, tokenIndex258
if buffer[position] != rune('L') {
goto l257
}
position++
}
l258:
{
position260, tokenIndex260 := position, tokenIndex
if buffer[position] != rune('o') {
goto l261
}
position++
goto l260
l261:
position, tokenIndex = position260, tokenIndex260
if buffer[position] != rune('O') {
goto l257
}
position++
}
l260:
{
position262, tokenIndex262 := position, tokenIndex
if buffer[position] != rune('c') {
goto l263
}
position++
goto l262
l263:
position, tokenIndex = position262, tokenIndex262
if buffer[position] != rune('C') {
goto l257
}
position++
}
l262:
{
position264, tokenIndex264 := position, tokenIndex
if buffer[position] != rune('a') {
goto l265
}
position++
goto l264
l265:
position, tokenIndex = position264, tokenIndex264
if buffer[position] != rune('A') {
goto l257
}
position++
}
l264:
{
position266, tokenIndex266 := position, tokenIndex
if buffer[position] != rune('l') {
goto l267
}
position++
goto l266
l267:
position, tokenIndex = position266, tokenIndex266
if buffer[position] != rune('L') {
goto l257
}
position++
}
l266:
{
position268, tokenIndex268 := position, tokenIndex
if buffer[position] != rune('e') {
goto l269
}
position++
goto l268
l269:
position, tokenIndex = position268, tokenIndex268
if buffer[position] != rune('E') {
goto l257
}
position++
}
l268:
{
position270, tokenIndex270 := position, tokenIndex
if buffer[position] != rune('n') {
goto l271
}
position++
goto l270
l271:
position, tokenIndex = position270, tokenIndex270
if buffer[position] != rune('N') {
goto l257
}
position++
}
l270:
{
position272, tokenIndex272 := position, tokenIndex
if buffer[position] != rune('t') {
goto l273
}
position++
goto l272
l273:
position, tokenIndex = position272, tokenIndex272
if buffer[position] != rune('T') {
goto l257
}
position++
}
l272:
{
position274, tokenIndex274 := position, tokenIndex
if buffer[position] != rune('r') {
goto l275
}
position++
goto l274
l275:
position, tokenIndex = position274, tokenIndex274
if buffer[position] != rune('R') {
goto l257
}
position++
}
l274:
{
position276, tokenIndex276 := position, tokenIndex
if buffer[position] != rune('y') {
goto l277
}
position++
goto l276
l277:
position, tokenIndex = position276, tokenIndex276
if buffer[position] != rune('Y') {
goto l257
}
position++
}
l276:
goto l168
l257:
position, tokenIndex = position168, tokenIndex168
if buffer[position] != rune('.') {
goto l278
}
position++
{
position279, tokenIndex279 := position, tokenIndex
if buffer[position] != rune('s') {
goto l280
}
position++
goto l279
l280:
position, tokenIndex = position279, tokenIndex279
if buffer[position] != rune('S') {
goto l278
}
position++
}
l279:
{
position281, tokenIndex281 := position, tokenIndex
if buffer[position] != rune('i') {
goto l282
}
position++
goto l281
l282:
position, tokenIndex = position281, tokenIndex281
if buffer[position] != rune('I') {
goto l278
}
position++
}
l281:
{
position283, tokenIndex283 := position, tokenIndex
if buffer[position] != rune('z') {
goto l284
}
position++
goto l283
l284:
position, tokenIndex = position283, tokenIndex283
if buffer[position] != rune('Z') {
goto l278
}
position++
}
l283:
{
position285, tokenIndex285 := position, tokenIndex
if buffer[position] != rune('e') {
goto l286
}
position++
goto l285
l286:
position, tokenIndex = position285, tokenIndex285
if buffer[position] != rune('E') {
goto l278
}
position++
}
l285:
goto l168
l278:
position, tokenIndex = position168, tokenIndex168
if buffer[position] != rune('.') {
goto l287
}
position++
{
position288, tokenIndex288 := position, tokenIndex
if buffer[position] != rune('t') {
goto l289
}
position++
goto l288
l289:
position, tokenIndex = position288, tokenIndex288
if buffer[position] != rune('T') {
goto l287
}
position++
}
l288:
{
position290, tokenIndex290 := position, tokenIndex
if buffer[position] != rune('y') {
goto l291
}
position++
goto l290
l291:
position, tokenIndex = position290, tokenIndex290
if buffer[position] != rune('Y') {
goto l287
}
position++
}
l290:
{
position292, tokenIndex292 := position, tokenIndex
if buffer[position] != rune('p') {
goto l293
}
position++
goto l292
l293:
position, tokenIndex = position292, tokenIndex292
if buffer[position] != rune('P') {
goto l287
}
position++
}
l292:
{
position294, tokenIndex294 := position, tokenIndex
if buffer[position] != rune('e') {
goto l295
}
position++
goto l294
l295:
position, tokenIndex = position294, tokenIndex294
if buffer[position] != rune('E') {
goto l287
}
position++
}
l294:
goto l168
l287:
position, tokenIndex = position168, tokenIndex168
if buffer[position] != rune('.') {
goto l296
}
position++
{
position297, tokenIndex297 := position, tokenIndex
if buffer[position] != rune('u') {
goto l298
}
position++
goto l297
l298:
position, tokenIndex = position297, tokenIndex297
if buffer[position] != rune('U') {
goto l296
}
position++
}
l297:
{
position299, tokenIndex299 := position, tokenIndex
if buffer[position] != rune('l') {
goto l300
}
position++
goto l299
l300:
position, tokenIndex = position299, tokenIndex299
if buffer[position] != rune('L') {
goto l296
}
position++
}
l299:
{
position301, tokenIndex301 := position, tokenIndex
if buffer[position] != rune('e') {
goto l302
}
position++
goto l301
l302:
position, tokenIndex = position301, tokenIndex301
if buffer[position] != rune('E') {
goto l296
}
position++
}
l301:
{
position303, tokenIndex303 := position, tokenIndex
if buffer[position] != rune('b') {
goto l304
}
position++
goto l303
l304:
position, tokenIndex = position303, tokenIndex303
if buffer[position] != rune('B') {
goto l296
}
position++
}
l303:
if buffer[position] != rune('1') {
goto l296
}
position++
if buffer[position] != rune('2') {
goto l296
}
position++
if buffer[position] != rune('8') {
goto l296
}
position++
goto l168
l296:
position, tokenIndex = position168, tokenIndex168
if buffer[position] != rune('.') {
goto l166
}
position++
{
position305, tokenIndex305 := position, tokenIndex
if buffer[position] != rune('s') {
goto l306
}
position++
goto l305
l306:
position, tokenIndex = position305, tokenIndex305
if buffer[position] != rune('S') {
goto l166
}
position++
}
l305:
{
position307, tokenIndex307 := position, tokenIndex
if buffer[position] != rune('l') {
goto l308
}
position++
goto l307
l308:
position, tokenIndex = position307, tokenIndex307
if buffer[position] != rune('L') {
goto l166
}
position++
}
l307:
{
position309, tokenIndex309 := position, tokenIndex
if buffer[position] != rune('e') {
goto l310
}
position++
goto l309
l310:
position, tokenIndex = position309, tokenIndex309
if buffer[position] != rune('E') {
goto l166
}
position++
}
l309:
{
position311, tokenIndex311 := position, tokenIndex
if buffer[position] != rune('b') {
goto l312
}
position++
goto l311
l312:
position, tokenIndex = position311, tokenIndex311
if buffer[position] != rune('B') {
goto l166
}
position++
}
l311:
if buffer[position] != rune('1') {
goto l166
}
position++
if buffer[position] != rune('2') {
goto l166
}
position++
if buffer[position] != rune('8') {
goto l166
}
position++
}
l168:
add(ruleLabelContainingDirectiveName, position167)
}
return true
l166:
position, tokenIndex = position166, tokenIndex166
return false
},
/* 15 SymbolArgs <- <(SymbolArg (WS? ',' WS? SymbolArg)*)> */
func() bool {
position313, tokenIndex313 := position, tokenIndex
{
position314 := position
if !_rules[ruleSymbolArg]() {
goto l313
}
l315:
{
position316, tokenIndex316 := position, tokenIndex
{
position317, tokenIndex317 := position, tokenIndex
if !_rules[ruleWS]() {
goto l317
}
goto l318
l317:
position, tokenIndex = position317, tokenIndex317
}
l318:
if buffer[position] != rune(',') {
goto l316
}
position++
{
position319, tokenIndex319 := position, tokenIndex
if !_rules[ruleWS]() {
goto l319
}
goto l320
l319:
position, tokenIndex = position319, tokenIndex319
}
l320:
if !_rules[ruleSymbolArg]() {
goto l316
}
goto l315
l316:
position, tokenIndex = position316, tokenIndex316
}
add(ruleSymbolArgs, position314)
}
return true
l313:
position, tokenIndex = position313, tokenIndex313
return false
},
/* 16 SymbolArg <- <SymbolExpr> */
func() bool {
position321, tokenIndex321 := position, tokenIndex
{
position322 := position
if !_rules[ruleSymbolExpr]() {
goto l321
}
add(ruleSymbolArg, position322)
}
return true
l321:
position, tokenIndex = position321, tokenIndex321
return false
},
/* 17 SymbolExpr <- <(SymbolAtom (WS? SymbolOperator WS? SymbolExpr)?)> */
func() bool {
position323, tokenIndex323 := position, tokenIndex
{
position324 := position
if !_rules[ruleSymbolAtom]() {
goto l323
}
{
position325, tokenIndex325 := position, tokenIndex
{
position327, tokenIndex327 := position, tokenIndex
if !_rules[ruleWS]() {
goto l327
}
goto l328
l327:
position, tokenIndex = position327, tokenIndex327
}
l328:
if !_rules[ruleSymbolOperator]() {
goto l325
}
{
position329, tokenIndex329 := position, tokenIndex
if !_rules[ruleWS]() {
goto l329
}
goto l330
l329:
position, tokenIndex = position329, tokenIndex329
}
l330:
if !_rules[ruleSymbolExpr]() {
goto l325
}
goto l326
l325:
position, tokenIndex = position325, tokenIndex325
}
l326:
add(ruleSymbolExpr, position324)
}
return true
l323:
position, tokenIndex = position323, tokenIndex323
return false
},
/* 18 SymbolAtom <- <(Offset / SymbolType / LocalLabelRef / (LocalSymbol TCMarker?) / (SymbolName Offset) / (SymbolName TCMarker?) / Dot / (OpenParen WS? SymbolExpr WS? CloseParen))> */
func() bool {
position331, tokenIndex331 := position, tokenIndex
{
position332 := position
{
position333, tokenIndex333 := position, tokenIndex
if !_rules[ruleOffset]() {
goto l334
}
goto l333
l334:
position, tokenIndex = position333, tokenIndex333
if !_rules[ruleSymbolType]() {
goto l335
}
goto l333
l335:
position, tokenIndex = position333, tokenIndex333
if !_rules[ruleLocalLabelRef]() {
goto l336
}
goto l333
l336:
position, tokenIndex = position333, tokenIndex333
if !_rules[ruleLocalSymbol]() {
goto l337
}
{
position338, tokenIndex338 := position, tokenIndex
if !_rules[ruleTCMarker]() {
goto l338
}
goto l339
l338:
position, tokenIndex = position338, tokenIndex338
}
l339:
goto l333
l337:
position, tokenIndex = position333, tokenIndex333
if !_rules[ruleSymbolName]() {
goto l340
}
if !_rules[ruleOffset]() {
goto l340
}
goto l333
l340:
position, tokenIndex = position333, tokenIndex333
if !_rules[ruleSymbolName]() {
goto l341
}
{
position342, tokenIndex342 := position, tokenIndex
if !_rules[ruleTCMarker]() {
goto l342
}
goto l343
l342:
position, tokenIndex = position342, tokenIndex342
}
l343:
goto l333
l341:
position, tokenIndex = position333, tokenIndex333
if !_rules[ruleDot]() {
goto l344
}
goto l333
l344:
position, tokenIndex = position333, tokenIndex333
if !_rules[ruleOpenParen]() {
goto l331
}
{
position345, tokenIndex345 := position, tokenIndex
if !_rules[ruleWS]() {
goto l345
}
goto l346
l345:
position, tokenIndex = position345, tokenIndex345
}
l346:
if !_rules[ruleSymbolExpr]() {
goto l331
}
{
position347, tokenIndex347 := position, tokenIndex
if !_rules[ruleWS]() {
goto l347
}
goto l348
l347:
position, tokenIndex = position347, tokenIndex347
}
l348:
if !_rules[ruleCloseParen]() {
goto l331
}
}
l333:
add(ruleSymbolAtom, position332)
}
return true
l331:
position, tokenIndex = position331, tokenIndex331
return false
},
/* 19 SymbolOperator <- <('+' / '-' / '|' / ('<' '<') / ('>' '>'))> */
func() bool {
position349, tokenIndex349 := position, tokenIndex
{
position350 := position
{
position351, tokenIndex351 := position, tokenIndex
if buffer[position] != rune('+') {
goto l352
}
position++
goto l351
l352:
position, tokenIndex = position351, tokenIndex351
if buffer[position] != rune('-') {
goto l353
}
position++
goto l351
l353:
position, tokenIndex = position351, tokenIndex351
if buffer[position] != rune('|') {
goto l354
}
position++
goto l351
l354:
position, tokenIndex = position351, tokenIndex351
if buffer[position] != rune('<') {
goto l355
}
position++
if buffer[position] != rune('<') {
goto l355
}
position++
goto l351
l355:
position, tokenIndex = position351, tokenIndex351
if buffer[position] != rune('>') {
goto l349
}
position++
if buffer[position] != rune('>') {
goto l349
}
position++
}
l351:
add(ruleSymbolOperator, position350)
}
return true
l349:
position, tokenIndex = position349, tokenIndex349
return false
},
/* 20 OpenParen <- <'('> */
func() bool {
position356, tokenIndex356 := position, tokenIndex
{
position357 := position
if buffer[position] != rune('(') {
goto l356
}
position++
add(ruleOpenParen, position357)
}
return true
l356:
position, tokenIndex = position356, tokenIndex356
return false
},
/* 21 CloseParen <- <')'> */
func() bool {
position358, tokenIndex358 := position, tokenIndex
{
position359 := position
if buffer[position] != rune(')') {
goto l358
}
position++
add(ruleCloseParen, position359)
}
return true
l358:
position, tokenIndex = position358, tokenIndex358
return false
},
/* 22 SymbolType <- <(('@' / '%') (('f' 'u' 'n' 'c' 't' 'i' 'o' 'n') / ('o' 'b' 'j' 'e' 'c' 't')))> */
func() bool {
position360, tokenIndex360 := position, tokenIndex
{
position361 := position
{
position362, tokenIndex362 := position, tokenIndex
if buffer[position] != rune('@') {
goto l363
}
position++
goto l362
l363:
position, tokenIndex = position362, tokenIndex362
if buffer[position] != rune('%') {
goto l360
}
position++
}
l362:
{
position364, tokenIndex364 := position, tokenIndex
if buffer[position] != rune('f') {
goto l365
}
position++
if buffer[position] != rune('u') {
goto l365
}
position++
if buffer[position] != rune('n') {
goto l365
}
position++
if buffer[position] != rune('c') {
goto l365
}
position++
if buffer[position] != rune('t') {
goto l365
}
position++
if buffer[position] != rune('i') {
goto l365
}
position++
if buffer[position] != rune('o') {
goto l365
}
position++
if buffer[position] != rune('n') {
goto l365
}
position++
goto l364
l365:
position, tokenIndex = position364, tokenIndex364
if buffer[position] != rune('o') {
goto l360
}
position++
if buffer[position] != rune('b') {
goto l360
}
position++
if buffer[position] != rune('j') {
goto l360
}
position++
if buffer[position] != rune('e') {
goto l360
}
position++
if buffer[position] != rune('c') {
goto l360
}
position++
if buffer[position] != rune('t') {
goto l360
}
position++
}
l364:
add(ruleSymbolType, position361)
}
return true
l360:
position, tokenIndex = position360, tokenIndex360
return false
},
/* 23 Dot <- <'.'> */
func() bool {
position366, tokenIndex366 := position, tokenIndex
{
position367 := position
if buffer[position] != rune('.') {
goto l366
}
position++
add(ruleDot, position367)
}
return true
l366:
position, tokenIndex = position366, tokenIndex366
return false
},
/* 24 TCMarker <- <('[' 'T' 'C' ']')> */
func() bool {
position368, tokenIndex368 := position, tokenIndex
{
position369 := position
if buffer[position] != rune('[') {
goto l368
}
position++
if buffer[position] != rune('T') {
goto l368
}
position++
if buffer[position] != rune('C') {
goto l368
}
position++
if buffer[position] != rune(']') {
goto l368
}
position++
add(ruleTCMarker, position369)
}
return true
l368:
position, tokenIndex = position368, tokenIndex368
return false
},
/* 25 EscapedChar <- <('\\' .)> */
func() bool {
position370, tokenIndex370 := position, tokenIndex
{
position371 := position
if buffer[position] != rune('\\') {
goto l370
}
position++
if !matchDot() {
goto l370
}
add(ruleEscapedChar, position371)
}
return true
l370:
position, tokenIndex = position370, tokenIndex370
return false
},
/* 26 WS <- <(' ' / '\t')+> */
func() bool {
position372, tokenIndex372 := position, tokenIndex
{
position373 := position
{
position376, tokenIndex376 := position, tokenIndex
if buffer[position] != rune(' ') {
goto l377
}
position++
goto l376
l377:
position, tokenIndex = position376, tokenIndex376
if buffer[position] != rune('\t') {
goto l372
}
position++
}
l376:
l374:
{
position375, tokenIndex375 := position, tokenIndex
{
position378, tokenIndex378 := position, tokenIndex
if buffer[position] != rune(' ') {
goto l379
}
position++
goto l378
l379:
position, tokenIndex = position378, tokenIndex378
if buffer[position] != rune('\t') {
goto l375
}
position++
}
l378:
goto l374
l375:
position, tokenIndex = position375, tokenIndex375
}
add(ruleWS, position373)
}
return true
l372:
position, tokenIndex = position372, tokenIndex372
return false
},
/* 27 Comment <- <((('/' '/') / '#') (!'\n' .)*)> */
func() bool {
position380, tokenIndex380 := position, tokenIndex
{
position381 := position
{
position382, tokenIndex382 := position, tokenIndex
if buffer[position] != rune('/') {
goto l383
}
position++
if buffer[position] != rune('/') {
goto l383
}
position++
goto l382
l383:
position, tokenIndex = position382, tokenIndex382
if buffer[position] != rune('#') {
goto l380
}
position++
}
l382:
l384:
{
position385, tokenIndex385 := position, tokenIndex
{
position386, tokenIndex386 := position, tokenIndex
if buffer[position] != rune('\n') {
goto l386
}
position++
goto l385
l386:
position, tokenIndex = position386, tokenIndex386
}
if !matchDot() {
goto l385
}
goto l384
l385:
position, tokenIndex = position385, tokenIndex385
}
add(ruleComment, position381)
}
return true
l380:
position, tokenIndex = position380, tokenIndex380
return false
},
/* 28 Label <- <((LocalSymbol / LocalLabel / SymbolName) ':')> */
func() bool {
position387, tokenIndex387 := position, tokenIndex
{
position388 := position
{
position389, tokenIndex389 := position, tokenIndex
if !_rules[ruleLocalSymbol]() {
goto l390
}
goto l389
l390:
position, tokenIndex = position389, tokenIndex389
if !_rules[ruleLocalLabel]() {
goto l391
}
goto l389
l391:
position, tokenIndex = position389, tokenIndex389
if !_rules[ruleSymbolName]() {
goto l387
}
}
l389:
if buffer[position] != rune(':') {
goto l387
}
position++
add(ruleLabel, position388)
}
return true
l387:
position, tokenIndex = position387, tokenIndex387
return false
},
/* 29 SymbolName <- <(([a-z] / [A-Z] / '.' / '_') ([a-z] / [A-Z] / '.' / ([0-9] / [0-9]) / '$' / '_')*)> */
func() bool {
position392, tokenIndex392 := position, tokenIndex
{
position393 := position
{
position394, tokenIndex394 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l395
}
position++
goto l394
l395:
position, tokenIndex = position394, tokenIndex394
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l396
}
position++
goto l394
l396:
position, tokenIndex = position394, tokenIndex394
if buffer[position] != rune('.') {
goto l397
}
position++
goto l394
l397:
position, tokenIndex = position394, tokenIndex394
if buffer[position] != rune('_') {
goto l392
}
position++
}
l394:
l398:
{
position399, tokenIndex399 := position, tokenIndex
{
position400, tokenIndex400 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l401
}
position++
goto l400
l401:
position, tokenIndex = position400, tokenIndex400
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l402
}
position++
goto l400
l402:
position, tokenIndex = position400, tokenIndex400
if buffer[position] != rune('.') {
goto l403
}
position++
goto l400
l403:
position, tokenIndex = position400, tokenIndex400
{
position405, tokenIndex405 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l406
}
position++
goto l405
l406:
position, tokenIndex = position405, tokenIndex405
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l404
}
position++
}
l405:
goto l400
l404:
position, tokenIndex = position400, tokenIndex400
if buffer[position] != rune('$') {
goto l407
}
position++
goto l400
l407:
position, tokenIndex = position400, tokenIndex400
if buffer[position] != rune('_') {
goto l399
}
position++
}
l400:
goto l398
l399:
position, tokenIndex = position399, tokenIndex399
}
add(ruleSymbolName, position393)
}
return true
l392:
position, tokenIndex = position392, tokenIndex392
return false
},
/* 30 LocalSymbol <- <('.' 'L' ([a-z] / [A-Z] / ([a-z] / [A-Z]) / '.' / ([0-9] / [0-9]) / '$' / '_')+)> */
func() bool {
position408, tokenIndex408 := position, tokenIndex
{
position409 := position
if buffer[position] != rune('.') {
goto l408
}
position++
if buffer[position] != rune('L') {
goto l408
}
position++
{
position412, tokenIndex412 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l413
}
position++
goto l412
l413:
position, tokenIndex = position412, tokenIndex412
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l414
}
position++
goto l412
l414:
position, tokenIndex = position412, tokenIndex412
{
position416, tokenIndex416 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l417
}
position++
goto l416
l417:
position, tokenIndex = position416, tokenIndex416
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l415
}
position++
}
l416:
goto l412
l415:
position, tokenIndex = position412, tokenIndex412
if buffer[position] != rune('.') {
goto l418
}
position++
goto l412
l418:
position, tokenIndex = position412, tokenIndex412
{
position420, tokenIndex420 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l421
}
position++
goto l420
l421:
position, tokenIndex = position420, tokenIndex420
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l419
}
position++
}
l420:
goto l412
l419:
position, tokenIndex = position412, tokenIndex412
if buffer[position] != rune('$') {
goto l422
}
position++
goto l412
l422:
position, tokenIndex = position412, tokenIndex412
if buffer[position] != rune('_') {
goto l408
}
position++
}
l412:
l410:
{
position411, tokenIndex411 := position, tokenIndex
{
position423, tokenIndex423 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l424
}
position++
goto l423
l424:
position, tokenIndex = position423, tokenIndex423
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l425
}
position++
goto l423
l425:
position, tokenIndex = position423, tokenIndex423
{
position427, tokenIndex427 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l428
}
position++
goto l427
l428:
position, tokenIndex = position427, tokenIndex427
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l426
}
position++
}
l427:
goto l423
l426:
position, tokenIndex = position423, tokenIndex423
if buffer[position] != rune('.') {
goto l429
}
position++
goto l423
l429:
position, tokenIndex = position423, tokenIndex423
{
position431, tokenIndex431 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l432
}
position++
goto l431
l432:
position, tokenIndex = position431, tokenIndex431
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l430
}
position++
}
l431:
goto l423
l430:
position, tokenIndex = position423, tokenIndex423
if buffer[position] != rune('$') {
goto l433
}
position++
goto l423
l433:
position, tokenIndex = position423, tokenIndex423
if buffer[position] != rune('_') {
goto l411
}
position++
}
l423:
goto l410
l411:
position, tokenIndex = position411, tokenIndex411
}
add(ruleLocalSymbol, position409)
}
return true
l408:
position, tokenIndex = position408, tokenIndex408
return false
},
/* 31 LocalLabel <- <([0-9] ([0-9] / '$')*)> */
func() bool {
position434, tokenIndex434 := position, tokenIndex
{
position435 := position
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l434
}
position++
l436:
{
position437, tokenIndex437 := position, tokenIndex
{
position438, tokenIndex438 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l439
}
position++
goto l438
l439:
position, tokenIndex = position438, tokenIndex438
if buffer[position] != rune('$') {
goto l437
}
position++
}
l438:
goto l436
l437:
position, tokenIndex = position437, tokenIndex437
}
add(ruleLocalLabel, position435)
}
return true
l434:
position, tokenIndex = position434, tokenIndex434
return false
},
/* 32 LocalLabelRef <- <([0-9] ([0-9] / '$')* ('b' / 'f'))> */
func() bool {
position440, tokenIndex440 := position, tokenIndex
{
position441 := position
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l440
}
position++
l442:
{
position443, tokenIndex443 := position, tokenIndex
{
position444, tokenIndex444 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l445
}
position++
goto l444
l445:
position, tokenIndex = position444, tokenIndex444
if buffer[position] != rune('$') {
goto l443
}
position++
}
l444:
goto l442
l443:
position, tokenIndex = position443, tokenIndex443
}
{
position446, tokenIndex446 := position, tokenIndex
if buffer[position] != rune('b') {
goto l447
}
position++
goto l446
l447:
position, tokenIndex = position446, tokenIndex446
if buffer[position] != rune('f') {
goto l440
}
position++
}
l446:
add(ruleLocalLabelRef, position441)
}
return true
l440:
position, tokenIndex = position440, tokenIndex440
return false
},
/* 33 Instruction <- <(InstructionName (WS InstructionArg (WS? ','? WS? InstructionArg)*)?)> */
func() bool {
position448, tokenIndex448 := position, tokenIndex
{
position449 := position
if !_rules[ruleInstructionName]() {
goto l448
}
{
position450, tokenIndex450 := position, tokenIndex
if !_rules[ruleWS]() {
goto l450
}
if !_rules[ruleInstructionArg]() {
goto l450
}
l452:
{
position453, tokenIndex453 := position, tokenIndex
{
position454, tokenIndex454 := position, tokenIndex
if !_rules[ruleWS]() {
goto l454
}
goto l455
l454:
position, tokenIndex = position454, tokenIndex454
}
l455:
{
position456, tokenIndex456 := position, tokenIndex
if buffer[position] != rune(',') {
goto l456
}
position++
goto l457
l456:
position, tokenIndex = position456, tokenIndex456
}
l457:
{
position458, tokenIndex458 := position, tokenIndex
if !_rules[ruleWS]() {
goto l458
}
goto l459
l458:
position, tokenIndex = position458, tokenIndex458
}
l459:
if !_rules[ruleInstructionArg]() {
goto l453
}
goto l452
l453:
position, tokenIndex = position453, tokenIndex453
}
goto l451
l450:
position, tokenIndex = position450, tokenIndex450
}
l451:
add(ruleInstruction, position449)
}
return true
l448:
position, tokenIndex = position448, tokenIndex448
return false
},
/* 34 InstructionName <- <(([a-z] / [A-Z]) ([a-z] / [A-Z] / '.' / ([0-9] / [0-9]))* ('.' / '+' / '-')?)> */
func() bool {
position460, tokenIndex460 := position, tokenIndex
{
position461 := position
{
position462, tokenIndex462 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l463
}
position++
goto l462
l463:
position, tokenIndex = position462, tokenIndex462
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l460
}
position++
}
l462:
l464:
{
position465, tokenIndex465 := position, tokenIndex
{
position466, tokenIndex466 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l467
}
position++
goto l466
l467:
position, tokenIndex = position466, tokenIndex466
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l468
}
position++
goto l466
l468:
position, tokenIndex = position466, tokenIndex466
if buffer[position] != rune('.') {
goto l469
}
position++
goto l466
l469:
position, tokenIndex = position466, tokenIndex466
{
position470, tokenIndex470 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l471
}
position++
goto l470
l471:
position, tokenIndex = position470, tokenIndex470
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l465
}
position++
}
l470:
}
l466:
goto l464
l465:
position, tokenIndex = position465, tokenIndex465
}
{
position472, tokenIndex472 := position, tokenIndex
{
position474, tokenIndex474 := position, tokenIndex
if buffer[position] != rune('.') {
goto l475
}
position++
goto l474
l475:
position, tokenIndex = position474, tokenIndex474
if buffer[position] != rune('+') {
goto l476
}
position++
goto l474
l476:
position, tokenIndex = position474, tokenIndex474
if buffer[position] != rune('-') {
goto l472
}
position++
}
l474:
goto l473
l472:
position, tokenIndex = position472, tokenIndex472
}
l473:
add(ruleInstructionName, position461)
}
return true
l460:
position, tokenIndex = position460, tokenIndex460
return false
},
/* 35 InstructionArg <- <(IndirectionIndicator? (ARMConstantTweak / RegisterOrConstant / LocalLabelRef / TOCRefHigh / TOCRefLow / GOTLocation / GOTSymbolOffset / MemoryRef / AVX512Token))> */
func() bool {
position477, tokenIndex477 := position, tokenIndex
{
position478 := position
{
position479, tokenIndex479 := position, tokenIndex
if !_rules[ruleIndirectionIndicator]() {
goto l479
}
goto l480
l479:
position, tokenIndex = position479, tokenIndex479
}
l480:
{
position481, tokenIndex481 := position, tokenIndex
if !_rules[ruleARMConstantTweak]() {
goto l482
}
goto l481
l482:
position, tokenIndex = position481, tokenIndex481
if !_rules[ruleRegisterOrConstant]() {
goto l483
}
goto l481
l483:
position, tokenIndex = position481, tokenIndex481
if !_rules[ruleLocalLabelRef]() {
goto l484
}
goto l481
l484:
position, tokenIndex = position481, tokenIndex481
if !_rules[ruleTOCRefHigh]() {
goto l485
}
goto l481
l485:
position, tokenIndex = position481, tokenIndex481
if !_rules[ruleTOCRefLow]() {
goto l486
}
goto l481
l486:
position, tokenIndex = position481, tokenIndex481
if !_rules[ruleGOTLocation]() {
goto l487
}
goto l481
l487:
position, tokenIndex = position481, tokenIndex481
if !_rules[ruleGOTSymbolOffset]() {
goto l488
}
goto l481
l488:
position, tokenIndex = position481, tokenIndex481
if !_rules[ruleMemoryRef]() {
goto l489
}
goto l481
l489:
position, tokenIndex = position481, tokenIndex481
if !_rules[ruleAVX512Token]() {
goto l477
}
}
l481:
add(ruleInstructionArg, position478)
}
return true
l477:
position, tokenIndex = position477, tokenIndex477
return false
},
/* 36 GOTLocation <- <('$' '_' 'G' 'L' 'O' 'B' 'A' 'L' '_' 'O' 'F' 'F' 'S' 'E' 'T' '_' 'T' 'A' 'B' 'L' 'E' '_' '-' LocalSymbol)> */
func() bool {
position490, tokenIndex490 := position, tokenIndex
{
position491 := position
if buffer[position] != rune('$') {
goto l490
}
position++
if buffer[position] != rune('_') {
goto l490
}
position++
if buffer[position] != rune('G') {
goto l490
}
position++
if buffer[position] != rune('L') {
goto l490
}
position++
if buffer[position] != rune('O') {
goto l490
}
position++
if buffer[position] != rune('B') {
goto l490
}
position++
if buffer[position] != rune('A') {
goto l490
}
position++
if buffer[position] != rune('L') {
goto l490
}
position++
if buffer[position] != rune('_') {
goto l490
}
position++
if buffer[position] != rune('O') {
goto l490
}
position++
if buffer[position] != rune('F') {
goto l490
}
position++
if buffer[position] != rune('F') {
goto l490
}
position++
if buffer[position] != rune('S') {
goto l490
}
position++
if buffer[position] != rune('E') {
goto l490
}
position++
if buffer[position] != rune('T') {
goto l490
}
position++
if buffer[position] != rune('_') {
goto l490
}
position++
if buffer[position] != rune('T') {
goto l490
}
position++
if buffer[position] != rune('A') {
goto l490
}
position++
if buffer[position] != rune('B') {
goto l490
}
position++
if buffer[position] != rune('L') {
goto l490
}
position++
if buffer[position] != rune('E') {
goto l490
}
position++
if buffer[position] != rune('_') {
goto l490
}
position++
if buffer[position] != rune('-') {
goto l490
}
position++
if !_rules[ruleLocalSymbol]() {
goto l490
}
add(ruleGOTLocation, position491)
}
return true
l490:
position, tokenIndex = position490, tokenIndex490
return false
},
/* 37 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
},
/* 38 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
},
/* 39 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
},
/* 40 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
},
/* 41 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
},
/* 42 RegisterOrConstant <- <((('%' ([a-z] / [A-Z]) ([a-z] / [A-Z] / ([0-9] / [0-9]))*) / ('$' [0-9]+ WS? '*' WS? '(' [0-9]+ WS? '-' WS? [0-9]+ ')') / ('$'? ((Offset Offset) / Offset)) / ('#' Offset ('*' [0-9]+ ('-' [0-9] [0-9]*)?)?) / ('#' '~'? '(' [0-9] WS? ('<' '<') WS? [0-9] [0-9]? ')') / (('#' / '$') '~'? ('0' 'x')? ([0-9] / [0-9] / ([a-f] / [A-F]))+) / ('$' '(' '-' [0-9]+ ')') / ('#' '(' [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
if buffer[position] != rune('$') {
goto l563
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l563
}
position++
l564:
{
position565, tokenIndex565 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l565
}
position++
goto l564
l565:
position, tokenIndex = position565, tokenIndex565
}
{
position566, tokenIndex566 := position, tokenIndex
if !_rules[ruleWS]() {
goto l566
}
goto l567
l566:
position, tokenIndex = position566, tokenIndex566
}
l567:
if buffer[position] != rune('*') {
goto l563
}
position++
{
position568, tokenIndex568 := position, tokenIndex
if !_rules[ruleWS]() {
goto l568
}
goto l569
l568:
position, tokenIndex = position568, tokenIndex568
}
l569:
if buffer[position] != rune('(') {
goto l563
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l563
}
position++
l570:
{
position571, tokenIndex571 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l571
}
position++
goto l570
l571:
position, tokenIndex = position571, tokenIndex571
}
{
position572, tokenIndex572 := position, tokenIndex
if !_rules[ruleWS]() {
goto l572
}
goto l573
l572:
position, tokenIndex = position572, tokenIndex572
}
l573:
if buffer[position] != rune('-') {
goto l563
}
position++
{
position574, tokenIndex574 := position, tokenIndex
if !_rules[ruleWS]() {
goto l574
}
goto l575
l574:
position, tokenIndex = position574, tokenIndex574
}
l575:
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l563
}
position++
l576:
{
position577, tokenIndex577 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l577
}
position++
goto l576
l577:
position, tokenIndex = position577, tokenIndex577
}
if buffer[position] != rune(')') {
goto l563
}
position++
goto l552
l563:
position, tokenIndex = position552, tokenIndex552
{
position579, tokenIndex579 := position, tokenIndex
if buffer[position] != rune('$') {
goto l579
}
position++
goto l580
l579:
position, tokenIndex = position579, tokenIndex579
}
l580:
{
position581, tokenIndex581 := position, tokenIndex
if !_rules[ruleOffset]() {
goto l582
}
if !_rules[ruleOffset]() {
goto l582
}
goto l581
l582:
position, tokenIndex = position581, tokenIndex581
if !_rules[ruleOffset]() {
goto l578
}
}
l581:
goto l552
l578:
position, tokenIndex = position552, tokenIndex552
if buffer[position] != rune('#') {
goto l583
}
position++
if !_rules[ruleOffset]() {
goto l583
}
{
position584, tokenIndex584 := position, tokenIndex
if buffer[position] != rune('*') {
goto l584
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l584
}
position++
l586:
{
position587, tokenIndex587 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l587
}
position++
goto l586
l587:
position, tokenIndex = position587, tokenIndex587
}
{
position588, tokenIndex588 := position, tokenIndex
if buffer[position] != rune('-') {
goto l588
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l588
}
position++
l590:
{
position591, tokenIndex591 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l591
}
position++
goto l590
l591:
position, tokenIndex = position591, tokenIndex591
}
goto l589
l588:
position, tokenIndex = position588, tokenIndex588
}
l589:
goto l585
l584:
position, tokenIndex = position584, tokenIndex584
}
l585:
goto l552
l583:
position, tokenIndex = position552, tokenIndex552
if buffer[position] != rune('#') {
goto l592
}
position++
{
position593, tokenIndex593 := position, tokenIndex
if buffer[position] != rune('~') {
goto l593
}
position++
goto l594
l593:
position, tokenIndex = position593, tokenIndex593
}
l594:
if buffer[position] != rune('(') {
goto l592
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l592
}
position++
{
position595, tokenIndex595 := position, tokenIndex
if !_rules[ruleWS]() {
goto l595
}
goto l596
l595:
position, tokenIndex = position595, tokenIndex595
}
l596:
if buffer[position] != rune('<') {
goto l592
}
position++
if buffer[position] != rune('<') {
goto l592
}
position++
{
position597, tokenIndex597 := position, tokenIndex
if !_rules[ruleWS]() {
goto l597
}
goto l598
l597:
position, tokenIndex = position597, tokenIndex597
}
l598:
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l592
}
position++
{
position599, tokenIndex599 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l599
}
position++
goto l600
l599:
position, tokenIndex = position599, tokenIndex599
}
l600:
if buffer[position] != rune(')') {
goto l592
}
position++
goto l552
l592:
position, tokenIndex = position552, tokenIndex552
{
position602, tokenIndex602 := position, tokenIndex
if buffer[position] != rune('#') {
goto l603
}
position++
goto l602
l603:
position, tokenIndex = position602, tokenIndex602
if buffer[position] != rune('$') {
goto l601
}
position++
}
l602:
{
position604, tokenIndex604 := position, tokenIndex
if buffer[position] != rune('~') {
goto l604
}
position++
goto l605
l604:
position, tokenIndex = position604, tokenIndex604
}
l605:
{
position606, tokenIndex606 := position, tokenIndex
if buffer[position] != rune('0') {
goto l606
}
position++
if buffer[position] != rune('x') {
goto l606
}
position++
goto l607
l606:
position, tokenIndex = position606, tokenIndex606
}
l607:
{
position610, tokenIndex610 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l611
}
position++
goto l610
l611:
position, tokenIndex = position610, tokenIndex610
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l612
}
position++
goto l610
l612:
position, tokenIndex = position610, tokenIndex610
{
position613, tokenIndex613 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('f') {
goto l614
}
position++
goto l613
l614:
position, tokenIndex = position613, tokenIndex613
if c := buffer[position]; c < rune('A') || c > rune('F') {
goto l601
}
position++
}
l613:
}
l610:
l608:
{
position609, tokenIndex609 := position, tokenIndex
{
position615, tokenIndex615 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l616
}
position++
goto l615
l616:
position, tokenIndex = position615, tokenIndex615
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l617
}
position++
goto l615
l617:
position, tokenIndex = position615, tokenIndex615
{
position618, tokenIndex618 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('f') {
goto l619
}
position++
goto l618
l619:
position, tokenIndex = position618, tokenIndex618
if c := buffer[position]; c < rune('A') || c > rune('F') {
goto l609
}
position++
}
l618:
}
l615:
goto l608
l609:
position, tokenIndex = position609, tokenIndex609
}
goto l552
l601:
position, tokenIndex = position552, tokenIndex552
if buffer[position] != rune('$') {
goto l620
}
position++
if buffer[position] != rune('(') {
goto l620
}
position++
if buffer[position] != rune('-') {
goto l620
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l620
}
position++
l621:
{
position622, tokenIndex622 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l622
}
position++
goto l621
l622:
position, tokenIndex = position622, tokenIndex622
}
if buffer[position] != rune(')') {
goto l620
}
position++
goto l552
l620:
position, tokenIndex = position552, tokenIndex552
if buffer[position] != rune('#') {
goto l623
}
position++
if buffer[position] != rune('(') {
goto l623
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l623
}
position++
l624:
{
position625, tokenIndex625 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l625
}
position++
goto l624
l625:
position, tokenIndex = position625, tokenIndex625
}
if buffer[position] != rune(')') {
goto l623
}
position++
goto l552
l623:
position, tokenIndex = position552, tokenIndex552
if !_rules[ruleARMRegister]() {
goto l550
}
}
l552:
{
position626, tokenIndex626 := position, tokenIndex
{
position627, tokenIndex627 := position, tokenIndex
if buffer[position] != rune('f') {
goto l628
}
position++
goto l627
l628:
position, tokenIndex = position627, tokenIndex627
if buffer[position] != rune('b') {
goto l629
}
position++
goto l627
l629:
position, tokenIndex = position627, tokenIndex627
if buffer[position] != rune(':') {
goto l630
}
position++
goto l627
l630:
position, tokenIndex = position627, tokenIndex627
if buffer[position] != rune('(') {
goto l631
}
position++
goto l627
l631:
position, tokenIndex = position627, tokenIndex627
if buffer[position] != rune('+') {
goto l632
}
position++
goto l627
l632:
position, tokenIndex = position627, tokenIndex627
if buffer[position] != rune('-') {
goto l626
}
position++
}
l627:
goto l550
l626:
position, tokenIndex = position626, tokenIndex626
}
add(ruleRegisterOrConstant, position551)
}
return true
l550:
position, tokenIndex = position550, tokenIndex550
return false
},
/* 43 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')) / (('r' / 'R') ('o' / 'O') ('l' / 'L')) / (('a' / 'A') ('s' / 'S') ('r' / 'R')) / (('a' / 'A') ('s' / 'S') ('l' / 'L')) / (('m' / 'M') ('s' / 'S') ('l' / 'L'))) !([A-Z] / [a-z] / [0-9] / '_'))) (WS '#'? Offset)?) / (('m' / 'M') ('u' / 'U') ('l' / 'L') ' ' ('v' / 'V') ('l' / 'L')))> */
func() bool {
position633, tokenIndex633 := position, tokenIndex
{
position634 := position
{
position635, tokenIndex635 := position, tokenIndex
{
position637, tokenIndex637 := position, tokenIndex
{
position639, tokenIndex639 := position, tokenIndex
if buffer[position] != rune('u') {
goto l640
}
position++
goto l639
l640:
position, tokenIndex = position639, tokenIndex639
if buffer[position] != rune('s') {
goto l638
}
position++
}
l639:
{
position641, tokenIndex641 := position, tokenIndex
if buffer[position] != rune('x') {
goto l642
}
position++
goto l641
l642:
position, tokenIndex = position641, tokenIndex641
if buffer[position] != rune('X') {
goto l638
}
position++
}
l641:
{
position643, tokenIndex643 := position, tokenIndex
if buffer[position] != rune('t') {
goto l644
}
position++
goto l643
l644:
position, tokenIndex = position643, tokenIndex643
if buffer[position] != rune('T') {
goto l638
}
position++
}
l643:
{
position645, tokenIndex645 := position, tokenIndex
if buffer[position] != rune('x') {
goto l646
}
position++
goto l645
l646:
position, tokenIndex = position645, tokenIndex645
if buffer[position] != rune('w') {
goto l647
}
position++
goto l645
l647:
position, tokenIndex = position645, tokenIndex645
if buffer[position] != rune('h') {
goto l648
}
position++
goto l645
l648:
position, tokenIndex = position645, tokenIndex645
if buffer[position] != rune('b') {
goto l638
}
position++
}
l645:
goto l637
l638:
position, tokenIndex = position637, tokenIndex637
{
position649, tokenIndex649 := position, tokenIndex
{
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 l650
}
position++
}
l651:
{
position653, tokenIndex653 := position, tokenIndex
if buffer[position] != rune('s') {
goto l654
}
position++
goto l653
l654:
position, tokenIndex = position653, tokenIndex653
if buffer[position] != rune('S') {
goto l650
}
position++
}
l653:
{
position655, tokenIndex655 := position, tokenIndex
if buffer[position] != rune('l') {
goto l656
}
position++
goto l655
l656:
position, tokenIndex = position655, tokenIndex655
if buffer[position] != rune('L') {
goto l650
}
position++
}
l655:
goto l649
l650:
position, tokenIndex = position649, tokenIndex649
{
position658, tokenIndex658 := position, tokenIndex
if buffer[position] != rune('l') {
goto l659
}
position++
goto l658
l659:
position, tokenIndex = position658, tokenIndex658
if buffer[position] != rune('L') {
goto l657
}
position++
}
l658:
{
position660, tokenIndex660 := position, tokenIndex
if buffer[position] != rune('s') {
goto l661
}
position++
goto l660
l661:
position, tokenIndex = position660, tokenIndex660
if buffer[position] != rune('S') {
goto l657
}
position++
}
l660:
{
position662, tokenIndex662 := position, tokenIndex
if buffer[position] != rune('r') {
goto l663
}
position++
goto l662
l663:
position, tokenIndex = position662, tokenIndex662
if buffer[position] != rune('R') {
goto l657
}
position++
}
l662:
goto l649
l657:
position, tokenIndex = position649, tokenIndex649
{
position665, tokenIndex665 := position, tokenIndex
if buffer[position] != rune('r') {
goto l666
}
position++
goto l665
l666:
position, tokenIndex = position665, tokenIndex665
if buffer[position] != rune('R') {
goto l664
}
position++
}
l665:
{
position667, tokenIndex667 := position, tokenIndex
if buffer[position] != rune('o') {
goto l668
}
position++
goto l667
l668:
position, tokenIndex = position667, tokenIndex667
if buffer[position] != rune('O') {
goto l664
}
position++
}
l667:
{
position669, tokenIndex669 := position, tokenIndex
if buffer[position] != rune('r') {
goto l670
}
position++
goto l669
l670:
position, tokenIndex = position669, tokenIndex669
if buffer[position] != rune('R') {
goto l664
}
position++
}
l669:
goto l649
l664:
position, tokenIndex = position649, tokenIndex649
{
position672, tokenIndex672 := position, tokenIndex
if buffer[position] != rune('r') {
goto l673
}
position++
goto l672
l673:
position, tokenIndex = position672, tokenIndex672
if buffer[position] != rune('R') {
goto l671
}
position++
}
l672:
{
position674, tokenIndex674 := position, tokenIndex
if buffer[position] != rune('o') {
goto l675
}
position++
goto l674
l675:
position, tokenIndex = position674, tokenIndex674
if buffer[position] != rune('O') {
goto l671
}
position++
}
l674:
{
position676, tokenIndex676 := position, tokenIndex
if buffer[position] != rune('l') {
goto l677
}
position++
goto l676
l677:
position, tokenIndex = position676, tokenIndex676
if buffer[position] != rune('L') {
goto l671
}
position++
}
l676:
goto l649
l671:
position, tokenIndex = position649, tokenIndex649
{
position679, tokenIndex679 := position, tokenIndex
if buffer[position] != rune('a') {
goto l680
}
position++
goto l679
l680:
position, tokenIndex = position679, tokenIndex679
if buffer[position] != rune('A') {
goto l678
}
position++
}
l679:
{
position681, tokenIndex681 := position, tokenIndex
if buffer[position] != rune('s') {
goto l682
}
position++
goto l681
l682:
position, tokenIndex = position681, tokenIndex681
if buffer[position] != rune('S') {
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 l649
l678:
position, tokenIndex = position649, tokenIndex649
{
position686, tokenIndex686 := position, tokenIndex
if buffer[position] != rune('a') {
goto l687
}
position++
goto l686
l687:
position, tokenIndex = position686, tokenIndex686
if buffer[position] != rune('A') {
goto l685
}
position++
}
l686:
{
position688, tokenIndex688 := position, tokenIndex
if buffer[position] != rune('s') {
goto l689
}
position++
goto l688
l689:
position, tokenIndex = position688, tokenIndex688
if buffer[position] != rune('S') {
goto l685
}
position++
}
l688:
{
position690, tokenIndex690 := position, tokenIndex
if buffer[position] != rune('l') {
goto l691
}
position++
goto l690
l691:
position, tokenIndex = position690, tokenIndex690
if buffer[position] != rune('L') {
goto l685
}
position++
}
l690:
goto l649
l685:
position, tokenIndex = position649, tokenIndex649
{
position692, tokenIndex692 := position, tokenIndex
if buffer[position] != rune('m') {
goto l693
}
position++
goto l692
l693:
position, tokenIndex = position692, tokenIndex692
if buffer[position] != rune('M') {
goto l636
}
position++
}
l692:
{
position694, tokenIndex694 := position, tokenIndex
if buffer[position] != rune('s') {
goto l695
}
position++
goto l694
l695:
position, tokenIndex = position694, tokenIndex694
if buffer[position] != rune('S') {
goto l636
}
position++
}
l694:
{
position696, tokenIndex696 := position, tokenIndex
if buffer[position] != rune('l') {
goto l697
}
position++
goto l696
l697:
position, tokenIndex = position696, tokenIndex696
if buffer[position] != rune('L') {
goto l636
}
position++
}
l696:
}
l649:
{
position698, tokenIndex698 := position, tokenIndex
{
position699, tokenIndex699 := position, tokenIndex
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l700
}
position++
goto l699
l700:
position, tokenIndex = position699, tokenIndex699
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l701
}
position++
goto l699
l701:
position, tokenIndex = position699, tokenIndex699
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l702
}
position++
goto l699
l702:
position, tokenIndex = position699, tokenIndex699
if buffer[position] != rune('_') {
goto l698
}
position++
}
l699:
goto l636
l698:
position, tokenIndex = position698, tokenIndex698
}
}
l637:
{
position703, tokenIndex703 := position, tokenIndex
if !_rules[ruleWS]() {
goto l703
}
{
position705, tokenIndex705 := position, tokenIndex
if buffer[position] != rune('#') {
goto l705
}
position++
goto l706
l705:
position, tokenIndex = position705, tokenIndex705
}
l706:
if !_rules[ruleOffset]() {
goto l703
}
goto l704
l703:
position, tokenIndex = position703, tokenIndex703
}
l704:
goto l635
l636:
position, tokenIndex = position635, tokenIndex635
{
position707, tokenIndex707 := position, tokenIndex
if buffer[position] != rune('m') {
goto l708
}
position++
goto l707
l708:
position, tokenIndex = position707, tokenIndex707
if buffer[position] != rune('M') {
goto l633
}
position++
}
l707:
{
position709, tokenIndex709 := position, tokenIndex
if buffer[position] != rune('u') {
goto l710
}
position++
goto l709
l710:
position, tokenIndex = position709, tokenIndex709
if buffer[position] != rune('U') {
goto l633
}
position++
}
l709:
{
position711, tokenIndex711 := position, tokenIndex
if buffer[position] != rune('l') {
goto l712
}
position++
goto l711
l712:
position, tokenIndex = position711, tokenIndex711
if buffer[position] != rune('L') {
goto l633
}
position++
}
l711:
if buffer[position] != rune(' ') {
goto l633
}
position++
{
position713, tokenIndex713 := position, tokenIndex
if buffer[position] != rune('v') {
goto l714
}
position++
goto l713
l714:
position, tokenIndex = position713, tokenIndex713
if buffer[position] != rune('V') {
goto l633
}
position++
}
l713:
{
position715, tokenIndex715 := position, tokenIndex
if buffer[position] != rune('l') {
goto l716
}
position++
goto l715
l716:
position, tokenIndex = position715, tokenIndex715
if buffer[position] != rune('L') {
goto l633
}
position++
}
l715:
}
l635:
add(ruleARMConstantTweak, position634)
}
return true
l633:
position, tokenIndex = position633, tokenIndex633
return false
},
/* 44 ARMRegister <- <((('s' / 'S') ('p' / 'P')) / (('x' / 'w' / 'd' / 'q' / 's' / 'h' / 'b') [0-9] [0-9]? !ARMRegisterBoundary) / (('x' / 'X') ('z' / 'Z') ('r' / 'R')) / (('w' / 'W') ('z' / 'Z') ('r' / 'R')) / (('n' / 'N') ('z' / 'Z') ('c' / 'C') ('v' / 'V')) / ARMVectorRegister / SVE2PredicateRegister / ('{' WS? ARMVectorRegister WS? ((',' / '-') WS? ARMVectorRegister)* WS? '}' ('[' [0-9] [0-9]? ']')?))> */
func() bool {
position717, tokenIndex717 := position, tokenIndex
{
position718 := position
{
position719, tokenIndex719 := position, tokenIndex
{
position721, tokenIndex721 := position, tokenIndex
if buffer[position] != rune('s') {
goto l722
}
position++
goto l721
l722:
position, tokenIndex = position721, tokenIndex721
if buffer[position] != rune('S') {
goto l720
}
position++
}
l721:
{
position723, tokenIndex723 := position, tokenIndex
if buffer[position] != rune('p') {
goto l724
}
position++
goto l723
l724:
position, tokenIndex = position723, tokenIndex723
if buffer[position] != rune('P') {
goto l720
}
position++
}
l723:
goto l719
l720:
position, tokenIndex = position719, tokenIndex719
{
position726, tokenIndex726 := position, tokenIndex
if buffer[position] != rune('x') {
goto l727
}
position++
goto l726
l727:
position, tokenIndex = position726, tokenIndex726
if buffer[position] != rune('w') {
goto l728
}
position++
goto l726
l728:
position, tokenIndex = position726, tokenIndex726
if buffer[position] != rune('d') {
goto l729
}
position++
goto l726
l729:
position, tokenIndex = position726, tokenIndex726
if buffer[position] != rune('q') {
goto l730
}
position++
goto l726
l730:
position, tokenIndex = position726, tokenIndex726
if buffer[position] != rune('s') {
goto l731
}
position++
goto l726
l731:
position, tokenIndex = position726, tokenIndex726
if buffer[position] != rune('h') {
goto l732
}
position++
goto l726
l732:
position, tokenIndex = position726, tokenIndex726
if buffer[position] != rune('b') {
goto l725
}
position++
}
l726:
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l725
}
position++
{
position733, tokenIndex733 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l733
}
position++
goto l734
l733:
position, tokenIndex = position733, tokenIndex733
}
l734:
{
position735, tokenIndex735 := position, tokenIndex
if !_rules[ruleARMRegisterBoundary]() {
goto l735
}
goto l725
l735:
position, tokenIndex = position735, tokenIndex735
}
goto l719
l725:
position, tokenIndex = position719, tokenIndex719
{
position737, tokenIndex737 := position, tokenIndex
if buffer[position] != rune('x') {
goto l738
}
position++
goto l737
l738:
position, tokenIndex = position737, tokenIndex737
if buffer[position] != rune('X') {
goto l736
}
position++
}
l737:
{
position739, tokenIndex739 := position, tokenIndex
if buffer[position] != rune('z') {
goto l740
}
position++
goto l739
l740:
position, tokenIndex = position739, tokenIndex739
if buffer[position] != rune('Z') {
goto l736
}
position++
}
l739:
{
position741, tokenIndex741 := position, tokenIndex
if buffer[position] != rune('r') {
goto l742
}
position++
goto l741
l742:
position, tokenIndex = position741, tokenIndex741
if buffer[position] != rune('R') {
goto l736
}
position++
}
l741:
goto l719
l736:
position, tokenIndex = position719, tokenIndex719
{
position744, tokenIndex744 := position, tokenIndex
if buffer[position] != rune('w') {
goto l745
}
position++
goto l744
l745:
position, tokenIndex = position744, tokenIndex744
if buffer[position] != rune('W') {
goto l743
}
position++
}
l744:
{
position746, tokenIndex746 := position, tokenIndex
if buffer[position] != rune('z') {
goto l747
}
position++
goto l746
l747:
position, tokenIndex = position746, tokenIndex746
if buffer[position] != rune('Z') {
goto l743
}
position++
}
l746:
{
position748, tokenIndex748 := position, tokenIndex
if buffer[position] != rune('r') {
goto l749
}
position++
goto l748
l749:
position, tokenIndex = position748, tokenIndex748
if buffer[position] != rune('R') {
goto l743
}
position++
}
l748:
goto l719
l743:
position, tokenIndex = position719, tokenIndex719
{
position751, tokenIndex751 := position, tokenIndex
if buffer[position] != rune('n') {
goto l752
}
position++
goto l751
l752:
position, tokenIndex = position751, tokenIndex751
if buffer[position] != rune('N') {
goto l750
}
position++
}
l751:
{
position753, tokenIndex753 := position, tokenIndex
if buffer[position] != rune('z') {
goto l754
}
position++
goto l753
l754:
position, tokenIndex = position753, tokenIndex753
if buffer[position] != rune('Z') {
goto l750
}
position++
}
l753:
{
position755, tokenIndex755 := position, tokenIndex
if buffer[position] != rune('c') {
goto l756
}
position++
goto l755
l756:
position, tokenIndex = position755, tokenIndex755
if buffer[position] != rune('C') {
goto l750
}
position++
}
l755:
{
position757, tokenIndex757 := position, tokenIndex
if buffer[position] != rune('v') {
goto l758
}
position++
goto l757
l758:
position, tokenIndex = position757, tokenIndex757
if buffer[position] != rune('V') {
goto l750
}
position++
}
l757:
goto l719
l750:
position, tokenIndex = position719, tokenIndex719
if !_rules[ruleARMVectorRegister]() {
goto l759
}
goto l719
l759:
position, tokenIndex = position719, tokenIndex719
if !_rules[ruleSVE2PredicateRegister]() {
goto l760
}
goto l719
l760:
position, tokenIndex = position719, tokenIndex719
if buffer[position] != rune('{') {
goto l717
}
position++
{
position761, tokenIndex761 := position, tokenIndex
if !_rules[ruleWS]() {
goto l761
}
goto l762
l761:
position, tokenIndex = position761, tokenIndex761
}
l762:
if !_rules[ruleARMVectorRegister]() {
goto l717
}
{
position763, tokenIndex763 := position, tokenIndex
if !_rules[ruleWS]() {
goto l763
}
goto l764
l763:
position, tokenIndex = position763, tokenIndex763
}
l764:
l765:
{
position766, tokenIndex766 := position, tokenIndex
{
position767, tokenIndex767 := position, tokenIndex
if buffer[position] != rune(',') {
goto l768
}
position++
goto l767
l768:
position, tokenIndex = position767, tokenIndex767
if buffer[position] != rune('-') {
goto l766
}
position++
}
l767:
{
position769, tokenIndex769 := position, tokenIndex
if !_rules[ruleWS]() {
goto l769
}
goto l770
l769:
position, tokenIndex = position769, tokenIndex769
}
l770:
if !_rules[ruleARMVectorRegister]() {
goto l766
}
goto l765
l766:
position, tokenIndex = position766, tokenIndex766
}
{
position771, tokenIndex771 := position, tokenIndex
if !_rules[ruleWS]() {
goto l771
}
goto l772
l771:
position, tokenIndex = position771, tokenIndex771
}
l772:
if buffer[position] != rune('}') {
goto l717
}
position++
{
position773, tokenIndex773 := position, tokenIndex
if buffer[position] != rune('[') {
goto l773
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l773
}
position++
{
position775, tokenIndex775 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l775
}
position++
goto l776
l775:
position, tokenIndex = position775, tokenIndex775
}
l776:
if buffer[position] != rune(']') {
goto l773
}
position++
goto l774
l773:
position, tokenIndex = position773, tokenIndex773
}
l774:
}
l719:
add(ruleARMRegister, position718)
}
return true
l717:
position, tokenIndex = position717, tokenIndex717
return false
},
/* 45 ARMVectorRegister <- <(('v' / 'z') [0-9] [0-9]? ('.' [0-9]* ('b' / 's' / 'd' / 'h' / 'q' / 'B' / 'S' / 'D' / 'H' / 'Q') ('[' [0-9] [0-9]? ']')?)?)> */
func() bool {
position777, tokenIndex777 := position, tokenIndex
{
position778 := position
{
position779, tokenIndex779 := position, tokenIndex
if buffer[position] != rune('v') {
goto l780
}
position++
goto l779
l780:
position, tokenIndex = position779, tokenIndex779
if buffer[position] != rune('z') {
goto l777
}
position++
}
l779:
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l777
}
position++
{
position781, tokenIndex781 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l781
}
position++
goto l782
l781:
position, tokenIndex = position781, tokenIndex781
}
l782:
{
position783, tokenIndex783 := position, tokenIndex
if buffer[position] != rune('.') {
goto l783
}
position++
l785:
{
position786, tokenIndex786 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l786
}
position++
goto l785
l786:
position, tokenIndex = position786, tokenIndex786
}
{
position787, tokenIndex787 := position, tokenIndex
if buffer[position] != rune('b') {
goto l788
}
position++
goto l787
l788:
position, tokenIndex = position787, tokenIndex787
if buffer[position] != rune('s') {
goto l789
}
position++
goto l787
l789:
position, tokenIndex = position787, tokenIndex787
if buffer[position] != rune('d') {
goto l790
}
position++
goto l787
l790:
position, tokenIndex = position787, tokenIndex787
if buffer[position] != rune('h') {
goto l791
}
position++
goto l787
l791:
position, tokenIndex = position787, tokenIndex787
if buffer[position] != rune('q') {
goto l792
}
position++
goto l787
l792:
position, tokenIndex = position787, tokenIndex787
if buffer[position] != rune('B') {
goto l793
}
position++
goto l787
l793:
position, tokenIndex = position787, tokenIndex787
if buffer[position] != rune('S') {
goto l794
}
position++
goto l787
l794:
position, tokenIndex = position787, tokenIndex787
if buffer[position] != rune('D') {
goto l795
}
position++
goto l787
l795:
position, tokenIndex = position787, tokenIndex787
if buffer[position] != rune('H') {
goto l796
}
position++
goto l787
l796:
position, tokenIndex = position787, tokenIndex787
if buffer[position] != rune('Q') {
goto l783
}
position++
}
l787:
{
position797, tokenIndex797 := position, tokenIndex
if buffer[position] != rune('[') {
goto l797
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l797
}
position++
{
position799, tokenIndex799 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l799
}
position++
goto l800
l799:
position, tokenIndex = position799, tokenIndex799
}
l800:
if buffer[position] != rune(']') {
goto l797
}
position++
goto l798
l797:
position, tokenIndex = position797, tokenIndex797
}
l798:
goto l784
l783:
position, tokenIndex = position783, tokenIndex783
}
l784:
add(ruleARMVectorRegister, position778)
}
return true
l777:
position, tokenIndex = position777, tokenIndex777
return false
},
/* 46 SVE2PredicateRegister <- <(('p' / 'P') [0-9] [0-9]? '/' ('m' / 'M' / 'z' / 'Z'))> */
func() bool {
position801, tokenIndex801 := position, tokenIndex
{
position802 := position
{
position803, tokenIndex803 := position, tokenIndex
if buffer[position] != rune('p') {
goto l804
}
position++
goto l803
l804:
position, tokenIndex = position803, tokenIndex803
if buffer[position] != rune('P') {
goto l801
}
position++
}
l803:
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l801
}
position++
{
position805, tokenIndex805 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l805
}
position++
goto l806
l805:
position, tokenIndex = position805, tokenIndex805
}
l806:
if buffer[position] != rune('/') {
goto l801
}
position++
{
position807, tokenIndex807 := position, tokenIndex
if buffer[position] != rune('m') {
goto l808
}
position++
goto l807
l808:
position, tokenIndex = position807, tokenIndex807
if buffer[position] != rune('M') {
goto l809
}
position++
goto l807
l809:
position, tokenIndex = position807, tokenIndex807
if buffer[position] != rune('z') {
goto l810
}
position++
goto l807
l810:
position, tokenIndex = position807, tokenIndex807
if buffer[position] != rune('Z') {
goto l801
}
position++
}
l807:
add(ruleSVE2PredicateRegister, position802)
}
return true
l801:
position, tokenIndex = position801, tokenIndex801
return false
},
/* 47 ARMRegisterBoundary <- <([a-z] / [A-Z] / [0-9] / '_')> */
func() bool {
position811, tokenIndex811 := position, tokenIndex
{
position812 := position
{
position813, tokenIndex813 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l814
}
position++
goto l813
l814:
position, tokenIndex = position813, tokenIndex813
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l815
}
position++
goto l813
l815:
position, tokenIndex = position813, tokenIndex813
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l816
}
position++
goto l813
l816:
position, tokenIndex = position813, tokenIndex813
if buffer[position] != rune('_') {
goto l811
}
position++
}
l813:
add(ruleARMRegisterBoundary, position812)
}
return true
l811:
position, tokenIndex = position811, tokenIndex811
return false
},
/* 48 MemoryRef <- <((SymbolRef BaseIndexScale) / SymbolRef / Low12BitsSymbolRef / (Offset* BaseIndexScale) / (SegmentRegister Offset BaseIndexScale) / (SegmentRegister BaseIndexScale) / (SegmentRegister Offset) / ARMBaseIndexScale / BaseIndexScale)> */
func() bool {
position817, tokenIndex817 := position, tokenIndex
{
position818 := position
{
position819, tokenIndex819 := position, tokenIndex
if !_rules[ruleSymbolRef]() {
goto l820
}
if !_rules[ruleBaseIndexScale]() {
goto l820
}
goto l819
l820:
position, tokenIndex = position819, tokenIndex819
if !_rules[ruleSymbolRef]() {
goto l821
}
goto l819
l821:
position, tokenIndex = position819, tokenIndex819
if !_rules[ruleLow12BitsSymbolRef]() {
goto l822
}
goto l819
l822:
position, tokenIndex = position819, tokenIndex819
l824:
{
position825, tokenIndex825 := position, tokenIndex
if !_rules[ruleOffset]() {
goto l825
}
goto l824
l825:
position, tokenIndex = position825, tokenIndex825
}
if !_rules[ruleBaseIndexScale]() {
goto l823
}
goto l819
l823:
position, tokenIndex = position819, tokenIndex819
if !_rules[ruleSegmentRegister]() {
goto l826
}
if !_rules[ruleOffset]() {
goto l826
}
if !_rules[ruleBaseIndexScale]() {
goto l826
}
goto l819
l826:
position, tokenIndex = position819, tokenIndex819
if !_rules[ruleSegmentRegister]() {
goto l827
}
if !_rules[ruleBaseIndexScale]() {
goto l827
}
goto l819
l827:
position, tokenIndex = position819, tokenIndex819
if !_rules[ruleSegmentRegister]() {
goto l828
}
if !_rules[ruleOffset]() {
goto l828
}
goto l819
l828:
position, tokenIndex = position819, tokenIndex819
if !_rules[ruleARMBaseIndexScale]() {
goto l829
}
goto l819
l829:
position, tokenIndex = position819, tokenIndex819
if !_rules[ruleBaseIndexScale]() {
goto l817
}
}
l819:
add(ruleMemoryRef, position818)
}
return true
l817:
position, tokenIndex = position817, tokenIndex817
return false
},
/* 49 SymbolRef <- <((Offset* '+')? (LocalSymbol / SymbolName) Offset* ('@' Section Offset*)?)> */
func() bool {
position830, tokenIndex830 := position, tokenIndex
{
position831 := position
{
position832, tokenIndex832 := position, tokenIndex
l834:
{
position835, tokenIndex835 := position, tokenIndex
if !_rules[ruleOffset]() {
goto l835
}
goto l834
l835:
position, tokenIndex = position835, tokenIndex835
}
if buffer[position] != rune('+') {
goto l832
}
position++
goto l833
l832:
position, tokenIndex = position832, tokenIndex832
}
l833:
{
position836, tokenIndex836 := position, tokenIndex
if !_rules[ruleLocalSymbol]() {
goto l837
}
goto l836
l837:
position, tokenIndex = position836, tokenIndex836
if !_rules[ruleSymbolName]() {
goto l830
}
}
l836:
l838:
{
position839, tokenIndex839 := position, tokenIndex
if !_rules[ruleOffset]() {
goto l839
}
goto l838
l839:
position, tokenIndex = position839, tokenIndex839
}
{
position840, tokenIndex840 := position, tokenIndex
if buffer[position] != rune('@') {
goto l840
}
position++
if !_rules[ruleSection]() {
goto l840
}
l842:
{
position843, tokenIndex843 := position, tokenIndex
if !_rules[ruleOffset]() {
goto l843
}
goto l842
l843:
position, tokenIndex = position843, tokenIndex843
}
goto l841
l840:
position, tokenIndex = position840, tokenIndex840
}
l841:
add(ruleSymbolRef, position831)
}
return true
l830:
position, tokenIndex = position830, tokenIndex830
return false
},
/* 50 Low12BitsSymbolRef <- <(':' ('l' / 'L') ('o' / 'O') '1' '2' ':' (LocalSymbol / SymbolName) Offset?)> */
func() bool {
position844, tokenIndex844 := position, tokenIndex
{
position845 := position
if buffer[position] != rune(':') {
goto l844
}
position++
{
position846, tokenIndex846 := position, tokenIndex
if buffer[position] != rune('l') {
goto l847
}
position++
goto l846
l847:
position, tokenIndex = position846, tokenIndex846
if buffer[position] != rune('L') {
goto l844
}
position++
}
l846:
{
position848, tokenIndex848 := position, tokenIndex
if buffer[position] != rune('o') {
goto l849
}
position++
goto l848
l849:
position, tokenIndex = position848, tokenIndex848
if buffer[position] != rune('O') {
goto l844
}
position++
}
l848:
if buffer[position] != rune('1') {
goto l844
}
position++
if buffer[position] != rune('2') {
goto l844
}
position++
if buffer[position] != rune(':') {
goto l844
}
position++
{
position850, tokenIndex850 := position, tokenIndex
if !_rules[ruleLocalSymbol]() {
goto l851
}
goto l850
l851:
position, tokenIndex = position850, tokenIndex850
if !_rules[ruleSymbolName]() {
goto l844
}
}
l850:
{
position852, tokenIndex852 := position, tokenIndex
if !_rules[ruleOffset]() {
goto l852
}
goto l853
l852:
position, tokenIndex = position852, tokenIndex852
}
l853:
add(ruleLow12BitsSymbolRef, position845)
}
return true
l844:
position, tokenIndex = position844, tokenIndex844
return false
},
/* 51 ARMBaseIndexScale <- <('[' ARMRegister (',' WS? (('#'? Offset (('*' [0-9]+) / ('*' '(' [0-9]+ Operator [0-9]+ ')') / ('+' [0-9]+)*)?) / ('#'? ARMGOTLow12) / ('#'? Low12BitsSymbolRef) / ARMRegister) (',' WS? ARMConstantTweak)?)? ']' ARMPostincrement?)> */
func() bool {
position854, tokenIndex854 := position, tokenIndex
{
position855 := position
if buffer[position] != rune('[') {
goto l854
}
position++
if !_rules[ruleARMRegister]() {
goto l854
}
{
position856, tokenIndex856 := position, tokenIndex
if buffer[position] != rune(',') {
goto l856
}
position++
{
position858, tokenIndex858 := position, tokenIndex
if !_rules[ruleWS]() {
goto l858
}
goto l859
l858:
position, tokenIndex = position858, tokenIndex858
}
l859:
{
position860, tokenIndex860 := position, tokenIndex
{
position862, tokenIndex862 := position, tokenIndex
if buffer[position] != rune('#') {
goto l862
}
position++
goto l863
l862:
position, tokenIndex = position862, tokenIndex862
}
l863:
if !_rules[ruleOffset]() {
goto l861
}
{
position864, tokenIndex864 := position, tokenIndex
{
position866, tokenIndex866 := position, tokenIndex
if buffer[position] != rune('*') {
goto l867
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l867
}
position++
l868:
{
position869, tokenIndex869 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l869
}
position++
goto l868
l869:
position, tokenIndex = position869, tokenIndex869
}
goto l866
l867:
position, tokenIndex = position866, tokenIndex866
if buffer[position] != rune('*') {
goto l870
}
position++
if buffer[position] != rune('(') {
goto l870
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l870
}
position++
l871:
{
position872, tokenIndex872 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l872
}
position++
goto l871
l872:
position, tokenIndex = position872, tokenIndex872
}
if !_rules[ruleOperator]() {
goto l870
}
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l870
}
position++
l873:
{
position874, tokenIndex874 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l874
}
position++
goto l873
l874:
position, tokenIndex = position874, tokenIndex874
}
if buffer[position] != rune(')') {
goto l870
}
position++
goto l866
l870:
position, tokenIndex = position866, tokenIndex866
l875:
{
position876, tokenIndex876 := position, tokenIndex
if buffer[position] != rune('+') {
goto l876
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l876
}
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
}
goto l875
l876:
position, tokenIndex = position876, tokenIndex876
}
}
l866:
goto l865
position, tokenIndex = position864, tokenIndex864
}
l865:
goto l860
l861:
position, tokenIndex = position860, tokenIndex860
{
position880, tokenIndex880 := position, tokenIndex
if buffer[position] != rune('#') {
goto l880
}
position++
goto l881
l880:
position, tokenIndex = position880, tokenIndex880
}
l881:
if !_rules[ruleARMGOTLow12]() {
goto l879
}
goto l860
l879:
position, tokenIndex = position860, tokenIndex860
{
position883, tokenIndex883 := position, tokenIndex
if buffer[position] != rune('#') {
goto l883
}
position++
goto l884
l883:
position, tokenIndex = position883, tokenIndex883
}
l884:
if !_rules[ruleLow12BitsSymbolRef]() {
goto l882
}
goto l860
l882:
position, tokenIndex = position860, tokenIndex860
if !_rules[ruleARMRegister]() {
goto l856
}
}
l860:
{
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 l857
l856:
position, tokenIndex = position856, tokenIndex856
}
l857:
if buffer[position] != rune(']') {
goto l854
}
position++
{
position889, tokenIndex889 := position, tokenIndex
if !_rules[ruleARMPostincrement]() {
goto l889
}
goto l890
l889:
position, tokenIndex = position889, tokenIndex889
}
l890:
add(ruleARMBaseIndexScale, position855)
}
return true
l854:
position, tokenIndex = position854, tokenIndex854
return false
},
/* 52 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
},
/* 53 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
},
/* 54 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
},
/* 55 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
},
/* 56 OffsetOperator <- <('+' / '-' / '*')> */
func() bool {
position925, tokenIndex925 := position, tokenIndex
{
position926 := position
{
position927, tokenIndex927 := position, tokenIndex
if buffer[position] != rune('+') {
goto l928
}
position++
goto l927
l928:
position, tokenIndex = position927, tokenIndex927
if buffer[position] != rune('-') {
goto l929
}
position++
goto l927
l929:
position, tokenIndex = position927, tokenIndex927
if buffer[position] != rune('*') {
goto l925
}
position++
}
l927:
add(ruleOffsetOperator, position926)
}
return true
l925:
position, tokenIndex = position925, tokenIndex925
return false
},
/* 57 S2nBignumHelper <- <('(' [0-9]+ WS? OffsetOperator WS? [0-9]+ ')' WS? OffsetOperator? WS?)> */
func() bool {
position930, tokenIndex930 := position, tokenIndex
{
position931 := position
if buffer[position] != rune('(') {
goto l930
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l930
}
position++
l932:
{
position933, tokenIndex933 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l933
}
position++
goto l932
l933:
position, tokenIndex = position933, tokenIndex933
}
{
position934, tokenIndex934 := position, tokenIndex
if !_rules[ruleWS]() {
goto l934
}
goto l935
l934:
position, tokenIndex = position934, tokenIndex934
}
l935:
if !_rules[ruleOffsetOperator]() {
goto l930
}
{
position936, tokenIndex936 := position, tokenIndex
if !_rules[ruleWS]() {
goto l936
}
goto l937
l936:
position, tokenIndex = position936, tokenIndex936
}
l937:
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l930
}
position++
l938:
{
position939, tokenIndex939 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l939
}
position++
goto l938
l939:
position, tokenIndex = position939, tokenIndex939
}
if buffer[position] != rune(')') {
goto l930
}
position++
{
position940, tokenIndex940 := position, tokenIndex
if !_rules[ruleWS]() {
goto l940
}
goto l941
l940:
position, tokenIndex = position940, tokenIndex940
}
l941:
{
position942, tokenIndex942 := position, tokenIndex
if !_rules[ruleOffsetOperator]() {
goto l942
}
goto l943
l942:
position, tokenIndex = position942, tokenIndex942
}
l943:
{
position944, tokenIndex944 := position, tokenIndex
if !_rules[ruleWS]() {
goto l944
}
goto l945
l944:
position, tokenIndex = position944, tokenIndex944
}
l945:
add(ruleS2nBignumHelper, position931)
}
return true
l930:
position, tokenIndex = position930, tokenIndex930
return false
},
/* 58 Offset <- <('+'? '-'? (('0' ('b' / 'B') ('0' / '1')+) / ('0' ('x' / 'X') ([0-9] / [0-9] / ([a-f] / [A-F]))+) / ((([0-9]+ WS OffsetOperator [0-9]+) / ([0-9]+ (OffsetOperator '(' [0-9]+ OffsetOperator [0-9]+ ')')?) / ([0-9]+ (OffsetOperator [0-9]+ OffsetOperator [0-9]+)?) / ([0-9]+ (OffsetOperator [0-9]+)?) / (S2nBignumHelper S2nBignumHelper (S2nBignumHelper ([0-9]+ OffsetOperator)? [0-9]+ OffsetOperator)? [0-9]+) / (S2nBignumHelper [0-9]+ ((WS? OffsetOperator [0-9]+ (WS? OffsetOperator [0-9]+)?) / !'x')) / S2nBignumHelper / ('(' [0-9]+ WS? OffsetOperator WS? [0-9]+ WS? OffsetOperator WS? [0-9]+ ')')) !([a-z] / [A-Z]))))> */
func() bool {
position946, tokenIndex946 := position, tokenIndex
{
position947 := position
{
position948, tokenIndex948 := position, tokenIndex
if buffer[position] != rune('+') {
goto l948
}
position++
goto l949
l948:
position, tokenIndex = position948, tokenIndex948
}
l949:
{
position950, tokenIndex950 := position, tokenIndex
if buffer[position] != rune('-') {
goto l950
}
position++
goto l951
l950:
position, tokenIndex = position950, tokenIndex950
}
l951:
{
position952, tokenIndex952 := position, tokenIndex
if buffer[position] != rune('0') {
goto l953
}
position++
{
position954, tokenIndex954 := position, tokenIndex
if buffer[position] != rune('b') {
goto l955
}
position++
goto l954
l955:
position, tokenIndex = position954, tokenIndex954
if buffer[position] != rune('B') {
goto l953
}
position++
}
l954:
{
position958, tokenIndex958 := position, tokenIndex
if buffer[position] != rune('0') {
goto l959
}
position++
goto l958
l959:
position, tokenIndex = position958, tokenIndex958
if buffer[position] != rune('1') {
goto l953
}
position++
}
l958:
l956:
{
position957, tokenIndex957 := position, tokenIndex
{
position960, tokenIndex960 := position, tokenIndex
if buffer[position] != rune('0') {
goto l961
}
position++
goto l960
l961:
position, tokenIndex = position960, tokenIndex960
if buffer[position] != rune('1') {
goto l957
}
position++
}
l960:
goto l956
l957:
position, tokenIndex = position957, tokenIndex957
}
goto l952
l953:
position, tokenIndex = position952, tokenIndex952
if buffer[position] != rune('0') {
goto l962
}
position++
{
position963, tokenIndex963 := position, tokenIndex
if buffer[position] != rune('x') {
goto l964
}
position++
goto l963
l964:
position, tokenIndex = position963, tokenIndex963
if buffer[position] != rune('X') {
goto l962
}
position++
}
l963:
{
position967, tokenIndex967 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l968
}
position++
goto l967
l968:
position, tokenIndex = position967, tokenIndex967
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l969
}
position++
goto l967
l969:
position, tokenIndex = position967, tokenIndex967
{
position970, tokenIndex970 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('f') {
goto l971
}
position++
goto l970
l971:
position, tokenIndex = position970, tokenIndex970
if c := buffer[position]; c < rune('A') || c > rune('F') {
goto l962
}
position++
}
l970:
}
l967:
l965:
{
position966, tokenIndex966 := position, tokenIndex
{
position972, tokenIndex972 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l973
}
position++
goto l972
l973:
position, tokenIndex = position972, tokenIndex972
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l974
}
position++
goto l972
l974:
position, tokenIndex = position972, tokenIndex972
{
position975, tokenIndex975 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('f') {
goto l976
}
position++
goto l975
l976:
position, tokenIndex = position975, tokenIndex975
if c := buffer[position]; c < rune('A') || c > rune('F') {
goto l966
}
position++
}
l975:
}
l972:
goto l965
l966:
position, tokenIndex = position966, tokenIndex966
}
goto l952
l962:
position, tokenIndex = position952, tokenIndex952
{
position977, tokenIndex977 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l978
}
position++
l979:
{
position980, tokenIndex980 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l980
}
position++
goto l979
l980:
position, tokenIndex = position980, tokenIndex980
}
if !_rules[ruleWS]() {
goto l978
}
if !_rules[ruleOffsetOperator]() {
goto l978
}
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l978
}
position++
l981:
{
position982, tokenIndex982 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l982
}
position++
goto l981
l982:
position, tokenIndex = position982, tokenIndex982
}
goto l977
l978:
position, tokenIndex = position977, tokenIndex977
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l983
}
position++
l984:
{
position985, tokenIndex985 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l985
}
position++
goto l984
l985:
position, tokenIndex = position985, tokenIndex985
}
{
position986, tokenIndex986 := position, tokenIndex
if !_rules[ruleOffsetOperator]() {
goto l986
}
if buffer[position] != rune('(') {
goto l986
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l986
}
position++
l988:
{
position989, tokenIndex989 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l989
}
position++
goto l988
l989:
position, tokenIndex = position989, tokenIndex989
}
if !_rules[ruleOffsetOperator]() {
goto l986
}
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l986
}
position++
l990:
{
position991, tokenIndex991 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l991
}
position++
goto l990
l991:
position, tokenIndex = position991, tokenIndex991
}
if buffer[position] != rune(')') {
goto l986
}
position++
goto l987
l986:
position, tokenIndex = position986, tokenIndex986
}
l987:
goto l977
l983:
position, tokenIndex = position977, tokenIndex977
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l992
}
position++
l993:
{
position994, tokenIndex994 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l994
}
position++
goto l993
l994:
position, tokenIndex = position994, tokenIndex994
}
{
position995, tokenIndex995 := position, tokenIndex
if !_rules[ruleOffsetOperator]() {
goto l995
}
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l995
}
position++
l997:
{
position998, tokenIndex998 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l998
}
position++
goto l997
l998:
position, tokenIndex = position998, tokenIndex998
}
if !_rules[ruleOffsetOperator]() {
goto l995
}
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l995
}
position++
l999:
{
position1000, tokenIndex1000 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l1000
}
position++
goto l999
l1000:
position, tokenIndex = position1000, tokenIndex1000
}
goto l996
l995:
position, tokenIndex = position995, tokenIndex995
}
l996:
goto l977
l992:
position, tokenIndex = position977, tokenIndex977
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l1001
}
position++
l1002:
{
position1003, tokenIndex1003 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l1003
}
position++
goto l1002
l1003:
position, tokenIndex = position1003, tokenIndex1003
}
{
position1004, tokenIndex1004 := position, tokenIndex
if !_rules[ruleOffsetOperator]() {
goto l1004
}
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l1004
}
position++
l1006:
{
position1007, tokenIndex1007 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l1007
}
position++
goto l1006
l1007:
position, tokenIndex = position1007, tokenIndex1007
}
goto l1005
l1004:
position, tokenIndex = position1004, tokenIndex1004
}
l1005:
goto l977
l1001:
position, tokenIndex = position977, tokenIndex977
if !_rules[ruleS2nBignumHelper]() {
goto l1008
}
if !_rules[ruleS2nBignumHelper]() {
goto l1008
}
{
position1009, tokenIndex1009 := position, tokenIndex
if !_rules[ruleS2nBignumHelper]() {
goto l1009
}
{
position1011, tokenIndex1011 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l1011
}
position++
l1013:
{
position1014, tokenIndex1014 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l1014
}
position++
goto l1013
l1014:
position, tokenIndex = position1014, tokenIndex1014
}
if !_rules[ruleOffsetOperator]() {
goto l1011
}
goto l1012
l1011:
position, tokenIndex = position1011, tokenIndex1011
}
l1012:
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l1009
}
position++
l1015:
{
position1016, tokenIndex1016 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l1016
}
position++
goto l1015
l1016:
position, tokenIndex = position1016, tokenIndex1016
}
if !_rules[ruleOffsetOperator]() {
goto l1009
}
goto l1010
l1009:
position, tokenIndex = position1009, tokenIndex1009
}
l1010:
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l1008
}
position++
l1017:
{
position1018, tokenIndex1018 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l1018
}
position++
goto l1017
l1018:
position, tokenIndex = position1018, tokenIndex1018
}
goto l977
l1008:
position, tokenIndex = position977, tokenIndex977
if !_rules[ruleS2nBignumHelper]() {
goto l1019
}
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l1019
}
position++
l1020:
{
position1021, tokenIndex1021 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l1021
}
position++
goto l1020
l1021:
position, tokenIndex = position1021, tokenIndex1021
}
{
position1022, tokenIndex1022 := position, tokenIndex
{
position1024, tokenIndex1024 := position, tokenIndex
if !_rules[ruleWS]() {
goto l1024
}
goto l1025
l1024:
position, tokenIndex = position1024, tokenIndex1024
}
l1025:
if !_rules[ruleOffsetOperator]() {
goto l1023
}
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l1023
}
position++
l1026:
{
position1027, tokenIndex1027 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l1027
}
position++
goto l1026
l1027:
position, tokenIndex = position1027, tokenIndex1027
}
{
position1028, tokenIndex1028 := position, tokenIndex
{
position1030, tokenIndex1030 := position, tokenIndex
if !_rules[ruleWS]() {
goto l1030
}
goto l1031
l1030:
position, tokenIndex = position1030, tokenIndex1030
}
l1031:
if !_rules[ruleOffsetOperator]() {
goto l1028
}
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l1028
}
position++
l1032:
{
position1033, tokenIndex1033 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l1033
}
position++
goto l1032
l1033:
position, tokenIndex = position1033, tokenIndex1033
}
goto l1029
l1028:
position, tokenIndex = position1028, tokenIndex1028
}
l1029:
goto l1022
l1023:
position, tokenIndex = position1022, tokenIndex1022
{
position1034, tokenIndex1034 := position, tokenIndex
if buffer[position] != rune('x') {
goto l1034
}
position++
goto l1019
l1034:
position, tokenIndex = position1034, tokenIndex1034
}
}
l1022:
goto l977
l1019:
position, tokenIndex = position977, tokenIndex977
if !_rules[ruleS2nBignumHelper]() {
goto l1035
}
goto l977
l1035:
position, tokenIndex = position977, tokenIndex977
if buffer[position] != rune('(') {
goto l946
}
position++
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l946
}
position++
l1036:
{
position1037, tokenIndex1037 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l1037
}
position++
goto l1036
l1037:
position, tokenIndex = position1037, tokenIndex1037
}
{
position1038, tokenIndex1038 := position, tokenIndex
if !_rules[ruleWS]() {
goto l1038
}
goto l1039
l1038:
position, tokenIndex = position1038, tokenIndex1038
}
l1039:
if !_rules[ruleOffsetOperator]() {
goto l946
}
{
position1040, tokenIndex1040 := position, tokenIndex
if !_rules[ruleWS]() {
goto l1040
}
goto l1041
l1040:
position, tokenIndex = position1040, tokenIndex1040
}
l1041:
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l946
}
position++
l1042:
{
position1043, tokenIndex1043 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l1043
}
position++
goto l1042
l1043:
position, tokenIndex = position1043, tokenIndex1043
}
{
position1044, tokenIndex1044 := position, tokenIndex
if !_rules[ruleWS]() {
goto l1044
}
goto l1045
l1044:
position, tokenIndex = position1044, tokenIndex1044
}
l1045:
if !_rules[ruleOffsetOperator]() {
goto l946
}
{
position1046, tokenIndex1046 := position, tokenIndex
if !_rules[ruleWS]() {
goto l1046
}
goto l1047
l1046:
position, tokenIndex = position1046, tokenIndex1046
}
l1047:
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l946
}
position++
l1048:
{
position1049, tokenIndex1049 := position, tokenIndex
if c := buffer[position]; c < rune('0') || c > rune('9') {
goto l1049
}
position++
goto l1048
l1049:
position, tokenIndex = position1049, tokenIndex1049
}
if buffer[position] != rune(')') {
goto l946
}
position++
}
l977:
{
position1050, tokenIndex1050 := position, tokenIndex
{
position1051, tokenIndex1051 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l1052
}
position++
goto l1051
l1052:
position, tokenIndex = position1051, tokenIndex1051
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l1050
}
position++
}
l1051:
goto l946
l1050:
position, tokenIndex = position1050, tokenIndex1050
}
}
l952:
add(ruleOffset, position947)
}
return true
l946:
position, tokenIndex = position946, tokenIndex946
return false
},
/* 59 Section <- <([a-z] / [A-Z] / '@')+> */
func() bool {
position1053, tokenIndex1053 := position, tokenIndex
{
position1054 := position
{
position1057, tokenIndex1057 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l1058
}
position++
goto l1057
l1058:
position, tokenIndex = position1057, tokenIndex1057
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l1059
}
position++
goto l1057
l1059:
position, tokenIndex = position1057, tokenIndex1057
if buffer[position] != rune('@') {
goto l1053
}
position++
}
l1057:
l1055:
{
position1056, tokenIndex1056 := position, tokenIndex
{
position1060, tokenIndex1060 := position, tokenIndex
if c := buffer[position]; c < rune('a') || c > rune('z') {
goto l1061
}
position++
goto l1060
l1061:
position, tokenIndex = position1060, tokenIndex1060
if c := buffer[position]; c < rune('A') || c > rune('Z') {
goto l1062
}
position++
goto l1060
l1062:
position, tokenIndex = position1060, tokenIndex1060
if buffer[position] != rune('@') {
goto l1056
}
position++
}
l1060:
goto l1055
l1056:
position, tokenIndex = position1056, tokenIndex1056
}
add(ruleSection, position1054)
}
return true
l1053:
position, tokenIndex = position1053, tokenIndex1053
return false
},
/* 60 SegmentRegister <- <('%' ([c-g] / 's') ('s' ':'))> */
func() bool {
position1063, tokenIndex1063 := position, tokenIndex
{
position1064 := position
if buffer[position] != rune('%') {
goto l1063
}
position++
{
position1065, tokenIndex1065 := position, tokenIndex
if c := buffer[position]; c < rune('c') || c > rune('g') {
goto l1066
}
position++
goto l1065
l1066:
position, tokenIndex = position1065, tokenIndex1065
if buffer[position] != rune('s') {
goto l1063
}
position++
}
l1065:
if buffer[position] != rune('s') {
goto l1063
}
position++
if buffer[position] != rune(':') {
goto l1063
}
position++
add(ruleSegmentRegister, position1064)
}
return true
l1063:
position, tokenIndex = position1063, tokenIndex1063
return false
},
}
p.rules = _rules
return nil
}