From 057241761e9426c514322ddb17be89f34af83bc2 Mon Sep 17 00:00:00 2001 From: David Benjamin Date: Fri, 1 Sep 2023 11:38:14 -0400 Subject: [PATCH 1/6] runner: Check that the shim HRRs echo the session ID We have a corresponding check on the ServerHello, but not HelloRetryRequest. See also https://github.com/rustls/rustls/pull/1374, where rustls forgot to apply the compatibility logic to HelloRetryRequest. (From the perspective of a TLS-1.2-expecting observer, HelloRetryRequest is the ServerHello, so encoding hacks need to apply to both.) Change-Id: I9b711ea45c54770a76ecfbca8bc992a4eaef6fcd Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/62906 Reviewed-by: Adam Langley Auto-Submit: David Benjamin Commit-Queue: Adam Langley (cherry picked from commit 9404a0b6c98e049094929db483634210560d31fb) --- ssl/test/runner/handshake_client.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ssl/test/runner/handshake_client.go b/ssl/test/runner/handshake_client.go index bb59581e6f..f7388b8c26 100644 --- a/ssl/test/runner/handshake_client.go +++ b/ssl/test/runner/handshake_client.go @@ -997,6 +997,10 @@ func (hs *clientHandshakeState) doTLS13Handshake(msg any) error { if haveHelloRetryRequest { hs.writeServerHash(helloRetryRequest.marshal()) + if !bytes.Equal(hs.hello.sessionID, helloRetryRequest.sessionID) { + return errors.New("tls: ClientHello and HelloRetryRequest session IDs did not match.") + } + if c.config.Bugs.FailIfHelloRetryRequested { return errors.New("tls: unexpected HelloRetryRequest") } @@ -1097,7 +1101,7 @@ func (hs *clientHandshakeState) doTLS13Handshake(msg any) error { } if !bytes.Equal(hs.hello.sessionID, hs.serverHello.sessionID) { - return errors.New("tls: session IDs did not match.") + return errors.New("tls: ClientHello and ServerHello session IDs did not match.") } // Resolve PSK and compute the early secret. From ad1126a29900cfdef960eb2c9d3270fc9f454e9e Mon Sep 17 00:00:00 2001 From: David Benjamin Date: Fri, 1 Sep 2023 15:46:27 -0400 Subject: [PATCH 2/6] Update the warnings on split handshakes and handshake hints Handshake hints work fine with TLS 1.2 resumption now. Also split handshakes is really really dangerous, and I think hints has survived long enough that we can just declare it the successor. Change-Id: Ib5fe5e1b030034b853a96c3404608c56d7b7a7c7 Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/62925 Reviewed-by: Adam Langley Auto-Submit: David Benjamin Commit-Queue: Adam Langley (cherry picked from commit 6ca49385b168f47a50e7172d82a590b218f55e4d) --- include/openssl/ssl.h | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/include/openssl/ssl.h b/include/openssl/ssl.h index 66da9a519b..4e9978eb6b 100644 --- a/include/openssl/ssl.h +++ b/include/openssl/ssl.h @@ -4360,12 +4360,15 @@ OPENSSL_EXPORT int SSL_CTX_set_record_protocol_version(SSL_CTX *ctx, // Handshake hints. // -// *** EXPERIMENTAL — DO NOT USE WITHOUT CHECKING *** +// WARNING: Contact the BoringSSL team before using this API. While this +// mechanism was designed to gracefully recover from version skew and +// configuration mismatch, splitting a single TLS server into multiple services +// is complex. // // Some server deployments make asynchronous RPC calls in both ClientHello // dispatch and private key operations. In TLS handshakes where the private key // operation occurs in the first round-trip, this results in two consecutive RPC -// round-trips. Handshake hints allow the RPC service to predicte a signature. +// round-trips. Handshake hints allow the RPC service to predict a signature. // If correctly predicted, this can skip the second RPC call. // // First, the server installs a certificate selection callback (see @@ -4391,10 +4394,6 @@ OPENSSL_EXPORT int SSL_CTX_set_record_protocol_version(SSL_CTX *ctx, // the private key in later round-trips, such as TLS 1.3 HelloRetryRequest. In // those cases, BoringSSL will not predict a signature as there is no benefit. // Callers must allow for handshakes to complete without a predicted signature. -// -// Handshake hints are supported for TLS 1.3 and partially supported for -// TLS 1.2. TLS 1.2 resumption handshakes are not yet fully hinted. They will -// still work, but may not be as efficient. // SSL_serialize_capabilities writes an opaque byte string to |out| describing // some of |ssl|'s capabilities. It returns one on success and zero on error. @@ -5828,10 +5827,18 @@ BORINGSSL_MAKE_DELETER(SSL_SESSION, SSL_SESSION_free) BORINGSSL_MAKE_UP_REF(SSL_SESSION, SSL_SESSION_up_ref) -// *** EXPERIMENTAL — DO NOT USE WITHOUT CHECKING *** +// *** DEPRECATED EXPERIMENT — DO NOT USE *** // // Split handshakes. // +// WARNING: This mechanism is deprecated and should not be used. It is very +// fragile and difficult to use correctly. The relationship between +// configuration options across the two halves is ill-defined and not +// self-consistent. Additionally, version skew across the two halves risks +// unusual behavior and connection failure. New development should use the +// handshake hints API. Existing deployments should migrate to handshake hints +// to reduce the risk of service outages. +// // Split handshakes allows the handshake part of a TLS connection to be // performed in a different process (or on a different machine) than the data // exchange. This only applies to servers. From bfeb772c3d0769b68852248ad39c7b0c00947ae5 Mon Sep 17 00:00:00 2001 From: Alex Gaynor Date: Fri, 1 Sep 2023 15:32:46 -0400 Subject: [PATCH 3/6] Return the correct value in EVP_CIPHER_CTX_iv_length after EVP_CTRL_AEAD_SET_IVLEN Previously, EVP_CIPHER_CTX_iv_length always returned the cipher's fixed IV length. Now, after modification with EVP_CTRL_AEAD_SET_IVLEN, it returns the correct value. Fixed: 626 Change-Id: Id98c929439850b3e83a80111f35aabebc6e5d47a Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/62907 Commit-Queue: Bob Beck Reviewed-by: Bob Beck (cherry picked from commit db1e9877fdabaf88494e2314cd527f09d5790281) AWS-LC: * Changed EVP_CTRL_GET_IVLEN from 0x25 to 0x19, matching BoringSSL. * Also changed `EVP_CIPHER_CTX_iv_length` to branch for CCM ciphers. --- crypto/cipher_extra/cipher_test.cc | 1 + crypto/fipsmodule/cipher/cipher.c | 11 +++++++++++ crypto/fipsmodule/cipher/e_aes.c | 4 ++++ include/openssl/cipher.h | 2 +- 4 files changed, 17 insertions(+), 1 deletion(-) diff --git a/crypto/cipher_extra/cipher_test.cc b/crypto/cipher_extra/cipher_test.cc index be27a07613..fbef643fb4 100644 --- a/crypto/cipher_extra/cipher_test.cc +++ b/crypto/cipher_extra/cipher_test.cc @@ -218,6 +218,7 @@ static void TestCipherAPI(const EVP_CIPHER *cipher, Operation op, bool padding, ASSERT_LE(iv.size(), size_t{INT_MAX}); ASSERT_TRUE(EVP_CIPHER_CTX_ctrl(ctx.get(), EVP_CTRL_AEAD_SET_IVLEN, static_cast(iv.size()), 0)); + ASSERT_EQ(EVP_CIPHER_CTX_iv_length(ctx.get()), iv.size()); } else { ASSERT_EQ(iv.size(), EVP_CIPHER_CTX_iv_length(ctx.get())); } diff --git a/crypto/fipsmodule/cipher/cipher.c b/crypto/fipsmodule/cipher/cipher.c index 4a50add349..7072994883 100644 --- a/crypto/fipsmodule/cipher/cipher.c +++ b/crypto/fipsmodule/cipher/cipher.c @@ -590,6 +590,17 @@ unsigned EVP_CIPHER_CTX_key_length(const EVP_CIPHER_CTX *ctx) { } unsigned EVP_CIPHER_CTX_iv_length(const EVP_CIPHER_CTX *ctx) { + if (EVP_CIPHER_mode(ctx->cipher) == EVP_CIPH_GCM_MODE || + EVP_CIPHER_mode(ctx->cipher) == EVP_CIPH_CCM_MODE) { + int length; + int res = EVP_CIPHER_CTX_ctrl((EVP_CIPHER_CTX *)ctx, EVP_CTRL_GET_IVLEN, 0, + &length); + // EVP_CIPHER_CTX_ctrl returning an error should be impossible under this + // circumstance. If it somehow did, fallback to the static cipher iv_len. + if (res == 1) { + return length; + } + } return ctx->cipher->iv_len; } diff --git a/crypto/fipsmodule/cipher/e_aes.c b/crypto/fipsmodule/cipher/e_aes.c index 8c54c9c21f..c40be97cb1 100644 --- a/crypto/fipsmodule/cipher/e_aes.c +++ b/crypto/fipsmodule/cipher/e_aes.c @@ -463,6 +463,10 @@ static int aes_gcm_ctrl(EVP_CIPHER_CTX *c, int type, int arg, void *ptr) { gctx->ivlen = arg; return 1; + case EVP_CTRL_GET_IVLEN: + *(int *)ptr = gctx->ivlen; + return 1; + case EVP_CTRL_AEAD_SET_TAG: if (arg <= 0 || arg > 16 || c->encrypt) { return 0; diff --git a/include/openssl/cipher.h b/include/openssl/cipher.h index e337eff3b8..08007d1436 100644 --- a/include/openssl/cipher.h +++ b/include/openssl/cipher.h @@ -590,7 +590,7 @@ OPENSSL_EXPORT void EVP_CIPHER_CTX_set_flags(const EVP_CIPHER_CTX *ctx, #define EVP_CTRL_AEAD_SET_MAC_KEY 0x17 // EVP_CTRL_GCM_SET_IV_INV sets the GCM invocation field, decrypt only #define EVP_CTRL_GCM_SET_IV_INV 0x18 -#define EVP_CTRL_GET_IVLEN 0x25 +#define EVP_CTRL_GET_IVLEN 0x19 // The following constants are unused. #define EVP_GCM_TLS_FIXED_IV_LEN 4 From 775e6c48b43966495f856de6b23f8baa1fb4a97c Mon Sep 17 00:00:00 2001 From: Adam Langley Date: Tue, 5 Sep 2023 16:53:37 -0400 Subject: [PATCH 4/6] acvptool: create fresh variables in loops. Referencing a variable in a closure captures it by _address_. So referencing a loop variable can go horribly wrong: https://go.dev/play/p/f2ivPAIN_bG This is accepted as essentially a bug by Go and will be fixed in a future release (https://github.com/golang/go/wiki/LoopvarExperiment). But, for now at least, work around it. Our tests trim the ACVP inputs to only have a single test case per group in many cases, which hides most of this issue from tests. When we run run full ACVP sets, our modulewrapper is seemingly fast enough not to notice there either. But I've updated one of the tests here by duplicating a test case enough that it catches this a meaningful amount of the time. Change-Id: I8216c00f67636ab7dad927eae4b49ae45ae3cf31 Bug: 646 Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/62965 Reviewed-by: David Benjamin Auto-Submit: Adam Langley Commit-Queue: David Benjamin (cherry picked from commit be84aeed7d21f5e5be37dee3c827175acebb6dda) AWS-LC: * Took only the Go changes. * Conflicts in rsa.go resolved by creating variables in loops. --- util/fipstools/acvp/acvptool/subprocess/aead.go | 3 +++ util/fipstools/acvp/acvptool/subprocess/block.go | 3 +++ util/fipstools/acvp/acvptool/subprocess/drbg.go | 3 +++ util/fipstools/acvp/acvptool/subprocess/ecdsa.go | 4 ++++ util/fipstools/acvp/acvptool/subprocess/hash.go | 3 +++ util/fipstools/acvp/acvptool/subprocess/hkdf.go | 2 ++ util/fipstools/acvp/acvptool/subprocess/hmac.go | 3 +++ util/fipstools/acvp/acvptool/subprocess/kas.go | 3 +++ util/fipstools/acvp/acvptool/subprocess/kasdh.go | 3 +++ util/fipstools/acvp/acvptool/subprocess/kdf.go | 2 ++ util/fipstools/acvp/acvptool/subprocess/keyedMac.go | 2 ++ util/fipstools/acvp/acvptool/subprocess/rsa.go | 9 +++++++++ util/fipstools/acvp/acvptool/subprocess/tls13.go | 2 ++ util/fipstools/acvp/acvptool/subprocess/xts.go | 2 ++ 14 files changed, 44 insertions(+) diff --git a/util/fipstools/acvp/acvptool/subprocess/aead.go b/util/fipstools/acvp/acvptool/subprocess/aead.go index 49b59b7a9d..8fd1081e6f 100644 --- a/util/fipstools/acvp/acvptool/subprocess/aead.go +++ b/util/fipstools/acvp/acvptool/subprocess/aead.go @@ -74,6 +74,7 @@ func (a *aead) Process(vectorSet []byte, m Transactable) (any, error) { // versions of the ACVP documents. You can find fragments in // https://github.com/usnistgov/ACVP.) for _, group := range parsed.Groups { + group := group response := aeadTestGroupResponse{ ID: group.ID, } @@ -117,6 +118,8 @@ func (a *aead) Process(vectorSet []byte, m Transactable) (any, error) { tagBytes := group.TagBits / 8 for _, test := range group.Tests { + test := test + if len(test.KeyHex) != keyBytes*2 { return nil, fmt.Errorf("test case %d/%d contains key %q of length %d, but expected %d-bit key", group.ID, test.ID, test.KeyHex, len(test.KeyHex), group.KeyBits) } diff --git a/util/fipstools/acvp/acvptool/subprocess/block.go b/util/fipstools/acvp/acvptool/subprocess/block.go index 0387e09085..d6e4750336 100644 --- a/util/fipstools/acvp/acvptool/subprocess/block.go +++ b/util/fipstools/acvp/acvptool/subprocess/block.go @@ -299,6 +299,7 @@ func (b *blockCipher) Process(vectorSet []byte, m Transactable) (any, error) { // http://usnistgov.github.io/ACVP/artifacts/draft-celi-acvp-block-ciph-00.html#rfc.section.5.2 // for details about the tests. for _, group := range parsed.Groups { + group := group response := blockCipherTestGroupResponse{ ID: group.ID, } @@ -346,6 +347,8 @@ func (b *blockCipher) Process(vectorSet []byte, m Transactable) (any, error) { } for _, test := range group.Tests { + test := test + if len(test.KeyHex) == 0 && len(test.Key1Hex) > 0 { // 3DES encodes the key differently. test.KeyHex = test.Key1Hex + test.Key2Hex + test.Key3Hex diff --git a/util/fipstools/acvp/acvptool/subprocess/drbg.go b/util/fipstools/acvp/acvptool/subprocess/drbg.go index 6db8a64a31..1e2e6946f1 100644 --- a/util/fipstools/acvp/acvptool/subprocess/drbg.go +++ b/util/fipstools/acvp/acvptool/subprocess/drbg.go @@ -84,6 +84,7 @@ func (d *drbg) Process(vectorSet []byte, m Transactable) (any, error) { // https://pages.nist.gov/ACVP/draft-vassilev-acvp-drbg.html#name-test-vectors // for details about the tests. for _, group := range parsed.Groups { + group := group response := drbgTestGroupResponse{ ID: group.ID, } @@ -97,6 +98,8 @@ func (d *drbg) Process(vectorSet []byte, m Transactable) (any, error) { } for _, test := range group.Tests { + test := test + ent, err := extractField(test.EntropyHex, group.EntropyBits) if err != nil { return nil, fmt.Errorf("failed to extract entropy hex from test case %d/%d: %s", group.ID, test.ID, err) diff --git a/util/fipstools/acvp/acvptool/subprocess/ecdsa.go b/util/fipstools/acvp/acvptool/subprocess/ecdsa.go index c506c35ea1..38fbc79d81 100644 --- a/util/fipstools/acvp/acvptool/subprocess/ecdsa.go +++ b/util/fipstools/acvp/acvptool/subprocess/ecdsa.go @@ -83,6 +83,8 @@ func (e *ecdsa) Process(vectorSet []byte, m Transactable) (any, error) { // https://pages.nist.gov/ACVP/draft-fussell-acvp-ecdsa.html#name-test-vectors // for details about the tests. for _, group := range parsed.Groups { + group := group + if _, ok := e.curves[group.Curve]; !ok { return nil, fmt.Errorf("curve %q in test group %d not supported", group.Curve, group.ID) } @@ -95,6 +97,8 @@ func (e *ecdsa) Process(vectorSet []byte, m Transactable) (any, error) { var qyHex []byte for _, test := range group.Tests { + test := test + var testResp ecdsaTestResponse switch parsed.Mode { diff --git a/util/fipstools/acvp/acvptool/subprocess/hash.go b/util/fipstools/acvp/acvptool/subprocess/hash.go index f9caf85e17..2b46d184a1 100644 --- a/util/fipstools/acvp/acvptool/subprocess/hash.go +++ b/util/fipstools/acvp/acvptool/subprocess/hash.go @@ -86,11 +86,14 @@ func (h *hashPrimitive) Process(vectorSet []byte, m Transactable) (any, error) { // https://pages.nist.gov/ACVP/draft-celi-acvp-sha.html#name-test-vectors // for details about the tests. for _, group := range parsed.Groups { + group := group response := hashTestGroupResponse{ ID: group.ID, } for _, test := range group.Tests { + test := test + if uint64(len(test.MsgHex))*4 != test.BitLength { return nil, fmt.Errorf("test case %d/%d contains hex message of length %d but specifies a bit length of %d", group.ID, test.ID, len(test.MsgHex), test.BitLength) } diff --git a/util/fipstools/acvp/acvptool/subprocess/hkdf.go b/util/fipstools/acvp/acvptool/subprocess/hkdf.go index 5f6aa7f954..4ba3ab2511 100644 --- a/util/fipstools/acvp/acvptool/subprocess/hkdf.go +++ b/util/fipstools/acvp/acvptool/subprocess/hkdf.go @@ -132,6 +132,7 @@ func (k *hkdf) Process(vectorSet []byte, m Transactable) (any, error) { var respGroups []hkdfTestGroupResponse for _, group := range parsed.Groups { + group := group groupResp := hkdfTestGroupResponse{ID: group.ID} // determine the test type @@ -152,6 +153,7 @@ func (k *hkdf) Process(vectorSet []byte, m Transactable) (any, error) { } for _, test := range group.Tests { + test := test testResp := hkdfTestResponse{ID: test.ID} key, salt, err := test.Params.extract() diff --git a/util/fipstools/acvp/acvptool/subprocess/hmac.go b/util/fipstools/acvp/acvptool/subprocess/hmac.go index 185988670f..f27a515470 100644 --- a/util/fipstools/acvp/acvptool/subprocess/hmac.go +++ b/util/fipstools/acvp/acvptool/subprocess/hmac.go @@ -87,6 +87,7 @@ func (h *hmacPrimitive) Process(vectorSet []byte, m Transactable) (any, error) { // https://pages.nist.gov/ACVP/draft-fussell-acvp-mac.html#name-test-vectors // for details about the tests. for _, group := range parsed.Groups { + group := group response := hmacTestGroupResponse{ ID: group.ID, } @@ -95,6 +96,8 @@ func (h *hmacPrimitive) Process(vectorSet []byte, m Transactable) (any, error) { } for _, test := range group.Tests { + test := test + if len(test.MsgHex)*4 != group.MsgBits { return nil, fmt.Errorf("test case %d/%d contains hex message of length %d but specifies a bit length of %d", group.ID, test.ID, len(test.MsgHex), group.MsgBits) } diff --git a/util/fipstools/acvp/acvptool/subprocess/kas.go b/util/fipstools/acvp/acvptool/subprocess/kas.go index 9625334830..c989e8d668 100644 --- a/util/fipstools/acvp/acvptool/subprocess/kas.go +++ b/util/fipstools/acvp/acvptool/subprocess/kas.go @@ -77,6 +77,7 @@ func (k *kas) Process(vectorSet []byte, m Transactable) (any, error) { // See https://pages.nist.gov/ACVP/draft-fussell-acvp-kas-ecc.html#name-test-vectors var ret []kasTestGroupResponse for _, group := range parsed.Groups { + group := group response := kasTestGroupResponse{ ID: group.ID, } @@ -119,6 +120,8 @@ func (k *kas) Process(vectorSet []byte, m Transactable) (any, error) { method := "ECDH/" + group.Curve for _, test := range group.Tests { + test := test + var xHex, yHex, privateKeyHex string if useStaticNamedFields { xHex, yHex, privateKeyHex = test.StaticXHex, test.StaticYHex, test.StaticPrivateKeyHex diff --git a/util/fipstools/acvp/acvptool/subprocess/kasdh.go b/util/fipstools/acvp/acvptool/subprocess/kasdh.go index a9de2e3845..9fcbb2c603 100644 --- a/util/fipstools/acvp/acvptool/subprocess/kasdh.go +++ b/util/fipstools/acvp/acvptool/subprocess/kasdh.go @@ -68,6 +68,7 @@ func (k *kasDH) Process(vectorSet []byte, m Transactable) (any, error) { // See https://pages.nist.gov/ACVP/draft-hammett-acvp-kas-ffc-sp800-56ar3.html var ret []kasDHTestGroupResponse for _, group := range parsed.Groups { + group := group response := kasDHTestGroupResponse{ ID: group.ID, } @@ -110,6 +111,8 @@ func (k *kasDH) Process(vectorSet []byte, m Transactable) (any, error) { const method = "FFDH" for _, test := range group.Tests { + test := test + if len(test.PeerPublicHex) == 0 { return nil, fmt.Errorf("%d/%d is missing peer's key", group.ID, test.ID) } diff --git a/util/fipstools/acvp/acvptool/subprocess/kdf.go b/util/fipstools/acvp/acvptool/subprocess/kdf.go index 136db1a1d0..433f871f99 100644 --- a/util/fipstools/acvp/acvptool/subprocess/kdf.go +++ b/util/fipstools/acvp/acvptool/subprocess/kdf.go @@ -67,6 +67,7 @@ func (k *kdfPrimitive) Process(vectorSet []byte, m Transactable) (any, error) { var respGroups []kdfTestGroupResponse for _, group := range parsed.Groups { + group := group groupResp := kdfTestGroupResponse{ID: group.ID} if group.OutputBits%8 != 0 { @@ -96,6 +97,7 @@ func (k *kdfPrimitive) Process(vectorSet []byte, m Transactable) (any, error) { rand.Read(fixedData) for _, test := range group.Tests { + test := test testResp := kdfTestResponse{ID: test.ID} key, err := hex.DecodeString(test.KeyHex) diff --git a/util/fipstools/acvp/acvptool/subprocess/keyedMac.go b/util/fipstools/acvp/acvptool/subprocess/keyedMac.go index a722ac9a13..3481f64ff4 100644 --- a/util/fipstools/acvp/acvptool/subprocess/keyedMac.go +++ b/util/fipstools/acvp/acvptool/subprocess/keyedMac.go @@ -65,6 +65,7 @@ func (k *keyedMACPrimitive) Process(vectorSet []byte, m Transactable) (any, erro var respGroups []keyedMACTestGroupResponse for _, group := range vs.Groups { + group := group respGroup := keyedMACTestGroupResponse{ID: group.ID} if group.KeyBits%8 != 0 { @@ -90,6 +91,7 @@ func (k *keyedMACPrimitive) Process(vectorSet []byte, m Transactable) (any, erro outputBytes := uint32le(group.MACBits / 8) for _, test := range group.Tests { + test := test respTest := keyedMACTestResponse{ID: test.ID} // Validate input. diff --git a/util/fipstools/acvp/acvptool/subprocess/rsa.go b/util/fipstools/acvp/acvptool/subprocess/rsa.go index 4140c7f560..83941e10ae 100644 --- a/util/fipstools/acvp/acvptool/subprocess/rsa.go +++ b/util/fipstools/acvp/acvptool/subprocess/rsa.go @@ -126,6 +126,7 @@ func processKeyGen(vectorSet []byte, m Transactable) (any, error) { var ret []rsaKeyGenTestGroupResponse for _, group := range parsed.Groups { + group := group // We support both GDT and AFT tests, which are formatted the same and expect the same output. if !(group.Type == "GDT" || group.Type == "AFT") { return nil, fmt.Errorf("RSA KeyGen test group has type %q, but only GDT and AFT tests are supported", group.Type) @@ -136,6 +137,7 @@ func processKeyGen(vectorSet []byte, m Transactable) (any, error) { } for _, test := range group.Tests { + test := test results, err := m.Transact("RSA/keyGen", 5, uint32le(group.ModulusBits)) if err != nil { return nil, err @@ -166,6 +168,8 @@ func processSigGen(vectorSet []byte, m Transactable) (any, error) { var ret []rsaSigGenTestGroupResponse for _, group := range parsed.Groups { + group := group + // GDT means "Generated data test", i.e. "please generate an RSA signature". const expectedType = "GDT" if group.Type != expectedType { @@ -180,6 +184,8 @@ func processSigGen(vectorSet []byte, m Transactable) (any, error) { ver_operation := "RSA/sigVer/" + group.Hash + "/" + group.SigType for _, test := range group.Tests { + test := test + msg, err := hex.DecodeString(test.MessageHex) if err != nil { return nil, fmt.Errorf("test case %d/%d contains invalid hex: %s", group.ID, test.ID, err) @@ -230,6 +236,8 @@ func processSigVer(vectorSet []byte, m Transactable) (any, error) { var ret []rsaSigVerTestGroupResponse for _, group := range parsed.Groups { + group := group + // GDT means "Generated data test", which makes no sense in this context. const expectedType = "GDT" if group.Type != expectedType { @@ -252,6 +260,7 @@ func processSigVer(vectorSet []byte, m Transactable) (any, error) { operation := "RSA/sigVer/" + group.Hash + "/" + group.SigType for _, test := range group.Tests { + test := test msg, err := hex.DecodeString(test.MessageHex) if err != nil { return nil, fmt.Errorf("test case %d/%d contains invalid hex: %s", group.ID, test.ID, err) diff --git a/util/fipstools/acvp/acvptool/subprocess/tls13.go b/util/fipstools/acvp/acvptool/subprocess/tls13.go index 0a853f2507..376ef76064 100644 --- a/util/fipstools/acvp/acvptool/subprocess/tls13.go +++ b/util/fipstools/acvp/acvptool/subprocess/tls13.go @@ -77,9 +77,11 @@ func (k *tls13) Process(vectorSet []byte, m Transactable) (any, error) { var respGroups []tls13TestGroupResponse for _, group := range parsed.Groups { + group := group groupResp := tls13TestGroupResponse{ID: group.ID} for _, test := range group.Tests { + test := test testResp := tls13TestResponse{ID: test.ID} clientHello, err := hex.DecodeString(test.ClientHelloHex) diff --git a/util/fipstools/acvp/acvptool/subprocess/xts.go b/util/fipstools/acvp/acvptool/subprocess/xts.go index 50eb6fdb24..296f59c544 100644 --- a/util/fipstools/acvp/acvptool/subprocess/xts.go +++ b/util/fipstools/acvp/acvptool/subprocess/xts.go @@ -67,6 +67,7 @@ func (h *xts) Process(vectorSet []byte, m Transactable) (any, error) { var ret []xtsTestGroupResponse for _, group := range parsed.Groups { + group := group response := xtsTestGroupResponse{ ID: group.ID, } @@ -88,6 +89,7 @@ func (h *xts) Process(vectorSet []byte, m Transactable) (any, error) { funcName := "AES-XTS/" + group.Direction for _, test := range group.Tests { + test := test if group.KeyLen != len(test.KeyHex)*4/2 { return nil, fmt.Errorf("test case %d/%d contains hex message of length %d but specifies a key length of %d (remember that XTS keys are twice the length of the underlying key size)", group.ID, test.ID, len(test.KeyHex), group.KeyLen) } From 37975c8885627561d5ea1b150dab932f2e4dfd19 Mon Sep 17 00:00:00 2001 From: David Benjamin Date: Thu, 7 Sep 2023 18:32:05 -0400 Subject: [PATCH 5/6] Help the compiler dedup ia32cap and armcap accesses https://boringssl-review.googlesource.com/c/boringssl/+/62585 made the compiler emit multiple CRYPTO_library_init calls in functions which dispatch between a tower of alternatives. Ideally, the compiler would know that at most one call suffices. There doesn't seem to be such an attribute, but we can get the same effect with pure or const attributes. We tie init with returning the capability vector. On Intel, because the vector is so large, we have to go with a weaker version. Somewhat annoyingly, the getter must be out-of-line, because otherwise the compiler inlines first and loses the attribute. I went with pure because we allow our unit tests to mutate OPENSSL_armcap_P, which means the Arm one is, strictly speaking, pure, not const. This slightly reduces optimization potential, but should still allow deduping in most places. Confirmed that aes_init_key now only calls a helper function once. See discussion in https://boringssl-review.googlesource.com/c/boringssl/+/62585/comment/26083b88_b3db2b75/ Bug: 35 Change-Id: I9bc464f0e5a0ed9601017a5037028f906693a137 Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/62985 Auto-Submit: David Benjamin Reviewed-by: Bob Beck Commit-Queue: Bob Beck (cherry picked from commit 15b1f9c6a4f9656e7c172e03064fe7f8e03c666d) AWS-LC: * Only took addition of `OPENSSL_ATTR_PURE` macro. --- crypto/internal.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/crypto/internal.h b/crypto/internal.h index 87a3d77457..6791f4a25e 100644 --- a/crypto/internal.h +++ b/crypto/internal.h @@ -204,6 +204,12 @@ typedef __uint128_t uint128_t; #define OPENSSL_SSE2 #endif +#if defined(__GNUC__) || defined(__clang__) +#define OPENSSL_ATTR_PURE __attribute__((pure)) +#else +#define OPENSSL_ATTR_PURE +#endif + // Pointer utility functions. From 6f785fab5acfa0f0bd2e7d16f289befd87902563 Mon Sep 17 00:00:00 2001 From: Adam Langley Date: Thu, 26 Oct 2023 01:45:05 +0000 Subject: [PATCH 6/6] Teach delocate about a new directive that Clang is using. The latest Clang will generate `.hword`. Change-Id: Ibdb0356049725c758c20f23fc3c9b60a75c28751 Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/63646 Reviewed-by: David Benjamin Auto-Submit: Adam Langley Commit-Queue: David Benjamin (cherry picked from commit 672813c21e7f25d1e5c3475e97779d683ce1ec42) --- util/fipstools/delocate/delocate.peg | 2 +- util/fipstools/delocate/delocate.peg.go | 5502 ++++++++++++----------- 2 files changed, 2793 insertions(+), 2711 deletions(-) diff --git a/util/fipstools/delocate/delocate.peg b/util/fipstools/delocate/delocate.peg index d7c7779543..20d3c32405 100644 --- a/util/fipstools/delocate/delocate.peg +++ b/util/fipstools/delocate/delocate.peg @@ -45,7 +45,7 @@ Arg <- QuotedArg / [[0-9a-z%+\-*_@.]]* QuotedArg <- '"' QuotedText '"' QuotedText <- (EscapedChar / [^"])* LabelContainingDirective <- LabelContainingDirectiveName WS SymbolArgs -LabelContainingDirectiveName <- ".xword" / ".word" / ".long" / ".set" / ".byte" / ".8byte" / ".4byte" / ".quad" / ".tc" / ".localentry" / ".size" / ".type" / ".uleb128" / ".sleb128" +LabelContainingDirectiveName <- ".xword" / ".word" / ".hword" / ".long" / ".set" / ".byte" / ".8byte" / ".4byte" / ".quad" / ".tc" / ".localentry" / ".size" / ".type" / ".uleb128" / ".sleb128" SymbolArgs <- SymbolArg ((WS? ',' WS?) SymbolArg)* SymbolArg <- SymbolExpr SymbolExpr <- SymbolAtom (WS? SymbolOperator WS? SymbolExpr)? diff --git a/util/fipstools/delocate/delocate.peg.go b/util/fipstools/delocate/delocate.peg.go index 37c9fc76f7..62114546c0 100644 --- a/util/fipstools/delocate/delocate.peg.go +++ b/util/fipstools/delocate/delocate.peg.go @@ -1,6 +1,6 @@ package main -// Code generated by ~/go/bin/peg delocate.peg DO NOT EDIT. +// Code generated by /Users/justsmth/go/bin/peg delocate.peg DO NOT EDIT. import ( "fmt" @@ -1427,7 +1427,7 @@ func (p *Asm) Init(options ...func(*Asm) error) error { position, tokenIndex = position145, tokenIndex145 return false }, - /* 13 LabelContainingDirectiveName <- <(('.' ('x' / 'X') ('w' / 'W') ('o' / 'O') ('r' / 'R') ('d' / 'D')) / ('.' ('w' / 'W') ('o' / 'O') ('r' / 'R') ('d' / 'D')) / ('.' ('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'))> */ + /* 13 LabelContainingDirectiveName <- <(('.' ('x' / 'X') ('w' / 'W') ('o' / 'O') ('r' / 'R') ('d' / 'D')) / ('.' ('w' / 'W') ('o' / 'O') ('r' / 'R') ('d' / 'D')) / ('.' ('h' / 'H') ('w' / 'W') ('o' / 'O') ('r' / 'R') ('d' / 'D')) / ('.' ('l' / 'L') ('o' / 'O') ('n' / 'N') ('g' / 'G')) / ('.' ('s' / 'S') ('e' / 'E') ('t' / 'T')) / ('.' ('b' / 'B') ('y' / 'Y') ('t' / 'T') ('e' / 'E')) / ('.' '8' ('b' / 'B') ('y' / 'Y') ('t' / 'T') ('e' / 'E')) / ('.' '4' ('b' / 'B') ('y' / 'Y') ('t' / 'T') ('e' / 'E')) / ('.' ('q' / 'Q') ('u' / 'U') ('a' / 'A') ('d' / 'D')) / ('.' ('t' / 'T') ('c' / 'C')) / ('.' ('l' / 'L') ('o' / 'O') ('c' / 'C') ('a' / 'A') ('l' / 'L') ('e' / 'E') ('n' / 'N') ('t' / 'T') ('r' / 'R') ('y' / 'Y')) / ('.' ('s' / 'S') ('i' / 'I') ('z' / 'Z') ('e' / 'E')) / ('.' ('t' / 'T') ('y' / 'Y') ('p' / 'P') ('e' / 'E')) / ('.' ('u' / 'U') ('l' / 'L') ('e' / 'E') ('b' / 'B') '1' '2' '8') / ('.' ('s' / 'S') ('l' / 'L') ('e' / 'E') ('b' / 'B') '1' '2' '8'))> */ func() bool { position147, tokenIndex147 := position, tokenIndex { @@ -1589,14 +1589,14 @@ func (p *Asm) Init(options ...func(*Asm) error) error { position++ { position171, tokenIndex171 := position, tokenIndex - if buffer[position] != rune('l') { + if buffer[position] != rune('h') { goto l172 } position++ goto l171 l172: position, tokenIndex = position171, tokenIndex171 - if buffer[position] != rune('L') { + if buffer[position] != rune('H') { goto l170 } position++ @@ -1604,14 +1604,14 @@ func (p *Asm) Init(options ...func(*Asm) error) error { l171: { position173, tokenIndex173 := position, tokenIndex - if buffer[position] != rune('o') { + if buffer[position] != rune('w') { goto l174 } position++ goto l173 l174: position, tokenIndex = position173, tokenIndex173 - if buffer[position] != rune('O') { + if buffer[position] != rune('W') { goto l170 } position++ @@ -1619,14 +1619,14 @@ func (p *Asm) Init(options ...func(*Asm) error) error { l173: { position175, tokenIndex175 := position, tokenIndex - if buffer[position] != rune('n') { + if buffer[position] != rune('o') { goto l176 } position++ goto l175 l176: position, tokenIndex = position175, tokenIndex175 - if buffer[position] != rune('N') { + if buffer[position] != rune('O') { goto l170 } position++ @@ -1634,119 +1634,119 @@ func (p *Asm) Init(options ...func(*Asm) error) error { l175: { position177, tokenIndex177 := position, tokenIndex - if buffer[position] != rune('g') { + if buffer[position] != rune('r') { goto l178 } position++ goto l177 l178: position, tokenIndex = position177, tokenIndex177 - if buffer[position] != rune('G') { + if buffer[position] != rune('R') { goto l170 } position++ } l177: - goto l149 - l170: - position, tokenIndex = position149, tokenIndex149 - if buffer[position] != rune('.') { - goto l179 - } - position++ { - position180, tokenIndex180 := position, tokenIndex - if buffer[position] != rune('s') { - goto l181 + position179, tokenIndex179 := position, tokenIndex + if buffer[position] != rune('d') { + goto l180 } position++ - goto l180 - l181: - position, tokenIndex = position180, tokenIndex180 - if buffer[position] != rune('S') { - goto l179 + goto l179 + l180: + position, tokenIndex = position179, tokenIndex179 + if buffer[position] != rune('D') { + goto l170 } position++ } - l180: + l179: + goto l149 + l170: + position, tokenIndex = position149, tokenIndex149 + if buffer[position] != rune('.') { + goto l181 + } + position++ { position182, tokenIndex182 := position, tokenIndex - if buffer[position] != rune('e') { + if buffer[position] != rune('l') { goto l183 } position++ goto l182 l183: position, tokenIndex = position182, tokenIndex182 - if buffer[position] != rune('E') { - goto l179 + if buffer[position] != rune('L') { + goto l181 } position++ } l182: { position184, tokenIndex184 := position, tokenIndex - if buffer[position] != rune('t') { + if buffer[position] != rune('o') { goto l185 } position++ goto l184 l185: position, tokenIndex = position184, tokenIndex184 - if buffer[position] != rune('T') { - goto l179 + if buffer[position] != rune('O') { + goto l181 } position++ } l184: - goto l149 - l179: - position, tokenIndex = position149, tokenIndex149 - if buffer[position] != rune('.') { - goto l186 - } - position++ { - position187, tokenIndex187 := position, tokenIndex - if buffer[position] != rune('b') { - goto l188 + position186, tokenIndex186 := position, tokenIndex + if buffer[position] != rune('n') { + goto l187 } position++ - goto l187 - l188: - position, tokenIndex = position187, tokenIndex187 - if buffer[position] != rune('B') { - goto l186 + goto l186 + l187: + position, tokenIndex = position186, tokenIndex186 + if buffer[position] != rune('N') { + goto l181 } position++ } - l187: + l186: { - position189, tokenIndex189 := position, tokenIndex - if buffer[position] != rune('y') { - goto l190 + position188, tokenIndex188 := position, tokenIndex + if buffer[position] != rune('g') { + goto l189 } position++ - goto l189 - l190: - position, tokenIndex = position189, tokenIndex189 - if buffer[position] != rune('Y') { - goto l186 + goto l188 + l189: + position, tokenIndex = position188, tokenIndex188 + if buffer[position] != rune('G') { + goto l181 } position++ } - l189: + l188: + goto l149 + l181: + position, tokenIndex = position149, tokenIndex149 + if buffer[position] != rune('.') { + goto l190 + } + position++ { position191, tokenIndex191 := position, tokenIndex - if buffer[position] != rune('t') { + if buffer[position] != rune('s') { goto l192 } position++ goto l191 l192: position, tokenIndex = position191, tokenIndex191 - if buffer[position] != rune('T') { - goto l186 + if buffer[position] != rune('S') { + goto l190 } position++ } @@ -1761,694 +1761,776 @@ func (p *Asm) Init(options ...func(*Asm) error) error { l194: position, tokenIndex = position193, tokenIndex193 if buffer[position] != rune('E') { - goto l186 + goto l190 } position++ } l193: - goto l149 - l186: - position, tokenIndex = position149, tokenIndex149 - if buffer[position] != rune('.') { - goto l195 - } - position++ - if buffer[position] != rune('8') { - goto l195 - } - position++ { - position196, tokenIndex196 := position, tokenIndex - if buffer[position] != rune('b') { - goto l197 + position195, tokenIndex195 := position, tokenIndex + if buffer[position] != rune('t') { + goto l196 } position++ - goto l196 - l197: - position, tokenIndex = position196, tokenIndex196 - if buffer[position] != rune('B') { - goto l195 + goto l195 + l196: + position, tokenIndex = position195, tokenIndex195 + if buffer[position] != rune('T') { + goto l190 } position++ } - l196: + l195: + goto l149 + l190: + position, tokenIndex = position149, tokenIndex149 + if buffer[position] != rune('.') { + goto l197 + } + position++ { position198, tokenIndex198 := position, tokenIndex - if buffer[position] != rune('y') { + if buffer[position] != rune('b') { goto l199 } position++ goto l198 l199: position, tokenIndex = position198, tokenIndex198 - if buffer[position] != rune('Y') { - goto l195 + if buffer[position] != rune('B') { + goto l197 } position++ } l198: { position200, tokenIndex200 := position, tokenIndex - if buffer[position] != rune('t') { + if buffer[position] != rune('y') { goto l201 } position++ goto l200 l201: position, tokenIndex = position200, tokenIndex200 - if buffer[position] != rune('T') { - goto l195 + if buffer[position] != rune('Y') { + goto l197 } position++ } l200: { position202, tokenIndex202 := position, tokenIndex - if buffer[position] != rune('e') { + if buffer[position] != rune('t') { goto l203 } position++ goto l202 l203: position, tokenIndex = position202, tokenIndex202 - if buffer[position] != rune('E') { - goto l195 + if buffer[position] != rune('T') { + goto l197 } position++ } l202: + { + position204, tokenIndex204 := position, tokenIndex + if buffer[position] != rune('e') { + goto l205 + } + position++ + goto l204 + l205: + position, tokenIndex = position204, tokenIndex204 + if buffer[position] != rune('E') { + goto l197 + } + position++ + } + l204: goto l149 - l195: + l197: position, tokenIndex = position149, tokenIndex149 if buffer[position] != rune('.') { - goto l204 + goto l206 } position++ - if buffer[position] != rune('4') { - goto l204 + if buffer[position] != rune('8') { + goto l206 } position++ - { - position205, tokenIndex205 := position, tokenIndex - if buffer[position] != rune('b') { - goto l206 - } - position++ - goto l205 - l206: - position, tokenIndex = position205, tokenIndex205 - if buffer[position] != rune('B') { - goto l204 - } - position++ - } - l205: { position207, tokenIndex207 := position, tokenIndex - if buffer[position] != rune('y') { + if buffer[position] != rune('b') { goto l208 } position++ goto l207 l208: position, tokenIndex = position207, tokenIndex207 - if buffer[position] != rune('Y') { - goto l204 + if buffer[position] != rune('B') { + goto l206 } position++ } l207: { position209, tokenIndex209 := position, tokenIndex - if buffer[position] != rune('t') { + if buffer[position] != rune('y') { goto l210 } position++ goto l209 l210: position, tokenIndex = position209, tokenIndex209 - if buffer[position] != rune('T') { - goto l204 + if buffer[position] != rune('Y') { + goto l206 } position++ } l209: { position211, tokenIndex211 := position, tokenIndex - if buffer[position] != rune('e') { + if buffer[position] != rune('t') { goto l212 } position++ goto l211 l212: position, tokenIndex = position211, tokenIndex211 - if buffer[position] != rune('E') { - goto l204 + if buffer[position] != rune('T') { + goto l206 } position++ } l211: - goto l149 - l204: - position, tokenIndex = position149, tokenIndex149 - if buffer[position] != rune('.') { - goto l213 - } - position++ { - position214, tokenIndex214 := position, tokenIndex - if buffer[position] != rune('q') { - goto l215 + position213, tokenIndex213 := position, tokenIndex + if buffer[position] != rune('e') { + goto l214 } position++ - goto l214 - l215: - position, tokenIndex = position214, tokenIndex214 - if buffer[position] != rune('Q') { - goto l213 + goto l213 + l214: + position, tokenIndex = position213, tokenIndex213 + if buffer[position] != rune('E') { + goto l206 } position++ } - l214: + l213: + goto l149 + l206: + position, tokenIndex = position149, tokenIndex149 + if buffer[position] != rune('.') { + goto l215 + } + position++ + if buffer[position] != rune('4') { + goto l215 + } + position++ { position216, tokenIndex216 := position, tokenIndex - if buffer[position] != rune('u') { + if buffer[position] != rune('b') { goto l217 } position++ goto l216 l217: position, tokenIndex = position216, tokenIndex216 - if buffer[position] != rune('U') { - goto l213 + if buffer[position] != rune('B') { + goto l215 } position++ } l216: { position218, tokenIndex218 := position, tokenIndex - if buffer[position] != rune('a') { + if buffer[position] != rune('y') { goto l219 } position++ goto l218 l219: position, tokenIndex = position218, tokenIndex218 - if buffer[position] != rune('A') { - goto l213 + if buffer[position] != rune('Y') { + goto l215 } position++ } l218: { position220, tokenIndex220 := position, tokenIndex - if buffer[position] != rune('d') { + if buffer[position] != rune('t') { goto l221 } position++ goto l220 l221: position, tokenIndex = position220, tokenIndex220 - if buffer[position] != rune('D') { - goto l213 + if buffer[position] != rune('T') { + goto l215 } position++ } l220: - goto l149 - l213: - position, tokenIndex = position149, tokenIndex149 - if buffer[position] != rune('.') { - goto l222 - } - position++ { - position223, tokenIndex223 := position, tokenIndex - if buffer[position] != rune('t') { - goto l224 + position222, tokenIndex222 := position, tokenIndex + if buffer[position] != rune('e') { + goto l223 } position++ - goto l223 - l224: - position, tokenIndex = position223, tokenIndex223 - if buffer[position] != rune('T') { - goto l222 + goto l222 + l223: + position, tokenIndex = position222, tokenIndex222 + if buffer[position] != rune('E') { + goto l215 } position++ } - l223: + l222: + goto l149 + l215: + position, tokenIndex = position149, tokenIndex149 + if buffer[position] != rune('.') { + goto l224 + } + position++ { position225, tokenIndex225 := position, tokenIndex - if buffer[position] != rune('c') { + if buffer[position] != rune('q') { goto l226 } position++ goto l225 l226: position, tokenIndex = position225, tokenIndex225 - if buffer[position] != rune('C') { - goto l222 + if buffer[position] != rune('Q') { + goto l224 } position++ } l225: - goto l149 - l222: - position, tokenIndex = position149, tokenIndex149 - if buffer[position] != rune('.') { - goto l227 - } - position++ { - position228, tokenIndex228 := position, tokenIndex - if buffer[position] != rune('l') { - goto l229 + position227, tokenIndex227 := position, tokenIndex + if buffer[position] != rune('u') { + goto l228 } position++ - goto l228 - l229: - position, tokenIndex = position228, tokenIndex228 - if buffer[position] != rune('L') { - goto l227 + goto l227 + l228: + position, tokenIndex = position227, tokenIndex227 + if buffer[position] != rune('U') { + goto l224 } position++ } - l228: + l227: { - position230, tokenIndex230 := position, tokenIndex - if buffer[position] != rune('o') { - goto l231 + position229, tokenIndex229 := position, tokenIndex + if buffer[position] != rune('a') { + goto l230 } position++ - goto l230 - l231: - position, tokenIndex = position230, tokenIndex230 - if buffer[position] != rune('O') { - goto l227 + goto l229 + l230: + position, tokenIndex = position229, tokenIndex229 + if buffer[position] != rune('A') { + goto l224 } position++ } - l230: + l229: { - position232, tokenIndex232 := position, tokenIndex - if buffer[position] != rune('c') { - goto l233 + position231, tokenIndex231 := position, tokenIndex + if buffer[position] != rune('d') { + goto l232 } position++ - goto l232 - l233: - position, tokenIndex = position232, tokenIndex232 - if buffer[position] != rune('C') { - goto l227 + goto l231 + l232: + position, tokenIndex = position231, tokenIndex231 + if buffer[position] != rune('D') { + goto l224 } position++ } - l232: + l231: + goto l149 + l224: + position, tokenIndex = position149, tokenIndex149 + if buffer[position] != rune('.') { + goto l233 + } + position++ { position234, tokenIndex234 := position, tokenIndex - if buffer[position] != rune('a') { + if buffer[position] != rune('t') { goto l235 } position++ goto l234 l235: position, tokenIndex = position234, tokenIndex234 - if buffer[position] != rune('A') { - goto l227 + if buffer[position] != rune('T') { + goto l233 } position++ } l234: { position236, tokenIndex236 := position, tokenIndex - if buffer[position] != rune('l') { + if buffer[position] != rune('c') { goto l237 } position++ goto l236 l237: position, tokenIndex = position236, tokenIndex236 - if buffer[position] != rune('L') { - goto l227 + if buffer[position] != rune('C') { + goto l233 } position++ } l236: + goto l149 + l233: + position, tokenIndex = position149, tokenIndex149 + if buffer[position] != rune('.') { + goto l238 + } + position++ { - position238, tokenIndex238 := position, tokenIndex - if buffer[position] != rune('e') { - goto l239 + position239, tokenIndex239 := position, tokenIndex + if buffer[position] != rune('l') { + goto l240 } position++ - goto l238 - l239: - position, tokenIndex = position238, tokenIndex238 - if buffer[position] != rune('E') { - goto l227 + goto l239 + l240: + position, tokenIndex = position239, tokenIndex239 + if buffer[position] != rune('L') { + goto l238 } position++ } - l238: + l239: { - position240, tokenIndex240 := position, tokenIndex - if buffer[position] != rune('n') { - goto l241 + position241, tokenIndex241 := position, tokenIndex + if buffer[position] != rune('o') { + goto l242 } position++ - goto l240 - l241: - position, tokenIndex = position240, tokenIndex240 - if buffer[position] != rune('N') { - goto l227 + goto l241 + l242: + position, tokenIndex = position241, tokenIndex241 + if buffer[position] != rune('O') { + goto l238 } position++ } - l240: + l241: { - position242, tokenIndex242 := position, tokenIndex - if buffer[position] != rune('t') { - goto l243 + position243, tokenIndex243 := position, tokenIndex + if buffer[position] != rune('c') { + goto l244 } position++ - goto l242 - l243: - position, tokenIndex = position242, tokenIndex242 - if buffer[position] != rune('T') { - goto l227 + goto l243 + l244: + position, tokenIndex = position243, tokenIndex243 + if buffer[position] != rune('C') { + goto l238 } position++ } - l242: + l243: { - position244, tokenIndex244 := position, tokenIndex - if buffer[position] != rune('r') { - goto l245 + position245, tokenIndex245 := position, tokenIndex + if buffer[position] != rune('a') { + goto l246 } position++ - goto l244 - l245: - position, tokenIndex = position244, tokenIndex244 - if buffer[position] != rune('R') { - goto l227 + goto l245 + l246: + position, tokenIndex = position245, tokenIndex245 + if buffer[position] != rune('A') { + goto l238 } position++ } - l244: + l245: { - position246, tokenIndex246 := position, tokenIndex - if buffer[position] != rune('y') { - goto l247 + position247, tokenIndex247 := position, tokenIndex + if buffer[position] != rune('l') { + goto l248 } position++ - goto l246 - l247: - position, tokenIndex = position246, tokenIndex246 - if buffer[position] != rune('Y') { - goto l227 + goto l247 + l248: + position, tokenIndex = position247, tokenIndex247 + if buffer[position] != rune('L') { + goto l238 } position++ } - l246: - goto l149 - l227: - position, tokenIndex = position149, tokenIndex149 - if buffer[position] != rune('.') { - goto l248 - } - position++ + l247: { position249, tokenIndex249 := position, tokenIndex - if buffer[position] != rune('s') { + if buffer[position] != rune('e') { goto l250 } position++ goto l249 l250: position, tokenIndex = position249, tokenIndex249 - if buffer[position] != rune('S') { - goto l248 + if buffer[position] != rune('E') { + goto l238 } position++ } l249: { position251, tokenIndex251 := position, tokenIndex - if buffer[position] != rune('i') { + if buffer[position] != rune('n') { goto l252 } position++ goto l251 l252: position, tokenIndex = position251, tokenIndex251 - if buffer[position] != rune('I') { - goto l248 + if buffer[position] != rune('N') { + goto l238 } position++ } l251: { position253, tokenIndex253 := position, tokenIndex - if buffer[position] != rune('z') { + if buffer[position] != rune('t') { goto l254 } position++ goto l253 l254: position, tokenIndex = position253, tokenIndex253 - if buffer[position] != rune('Z') { - goto l248 + if buffer[position] != rune('T') { + goto l238 } position++ } l253: { position255, tokenIndex255 := position, tokenIndex - if buffer[position] != rune('e') { + if buffer[position] != rune('r') { goto l256 } position++ goto l255 l256: position, tokenIndex = position255, tokenIndex255 - if buffer[position] != rune('E') { - goto l248 + if buffer[position] != rune('R') { + goto l238 } position++ } l255: - goto l149 - l248: - position, tokenIndex = position149, tokenIndex149 - if buffer[position] != rune('.') { - goto l257 - } - position++ { - position258, tokenIndex258 := position, tokenIndex - if buffer[position] != rune('t') { - goto l259 + position257, tokenIndex257 := position, tokenIndex + if buffer[position] != rune('y') { + goto l258 } position++ - goto l258 - l259: - position, tokenIndex = position258, tokenIndex258 - if buffer[position] != rune('T') { - goto l257 + goto l257 + l258: + position, tokenIndex = position257, tokenIndex257 + if buffer[position] != rune('Y') { + goto l238 } position++ } - l258: + l257: + goto l149 + l238: + position, tokenIndex = position149, tokenIndex149 + if buffer[position] != rune('.') { + goto l259 + } + position++ { position260, tokenIndex260 := position, tokenIndex - if buffer[position] != rune('y') { + if buffer[position] != rune('s') { goto l261 } position++ goto l260 l261: position, tokenIndex = position260, tokenIndex260 - if buffer[position] != rune('Y') { - goto l257 + if buffer[position] != rune('S') { + goto l259 } position++ } l260: { position262, tokenIndex262 := position, tokenIndex - if buffer[position] != rune('p') { + if buffer[position] != rune('i') { goto l263 } position++ goto l262 l263: position, tokenIndex = position262, tokenIndex262 - if buffer[position] != rune('P') { - goto l257 + if buffer[position] != rune('I') { + goto l259 } position++ } l262: { position264, tokenIndex264 := position, tokenIndex - if buffer[position] != rune('e') { + if buffer[position] != rune('z') { goto l265 } position++ goto l264 l265: position, tokenIndex = position264, tokenIndex264 - if buffer[position] != rune('E') { - goto l257 + if buffer[position] != rune('Z') { + goto l259 } position++ } l264: - goto l149 - l257: - position, tokenIndex = position149, tokenIndex149 - if buffer[position] != rune('.') { - goto l266 - } - position++ { - position267, tokenIndex267 := position, tokenIndex - if buffer[position] != rune('u') { - goto l268 + position266, tokenIndex266 := position, tokenIndex + if buffer[position] != rune('e') { + goto l267 } position++ - goto l267 - l268: - position, tokenIndex = position267, tokenIndex267 - if buffer[position] != rune('U') { - goto l266 + goto l266 + l267: + position, tokenIndex = position266, tokenIndex266 + if buffer[position] != rune('E') { + goto l259 } position++ } - l267: + l266: + goto l149 + l259: + position, tokenIndex = position149, tokenIndex149 + if buffer[position] != rune('.') { + goto l268 + } + position++ { position269, tokenIndex269 := position, tokenIndex - if buffer[position] != rune('l') { + if buffer[position] != rune('t') { goto l270 } position++ goto l269 l270: position, tokenIndex = position269, tokenIndex269 - if buffer[position] != rune('L') { - goto l266 + if buffer[position] != rune('T') { + goto l268 } position++ } l269: { position271, tokenIndex271 := position, tokenIndex - if buffer[position] != rune('e') { + if buffer[position] != rune('y') { goto l272 } position++ goto l271 l272: position, tokenIndex = position271, tokenIndex271 - if buffer[position] != rune('E') { - goto l266 + if buffer[position] != rune('Y') { + goto l268 } position++ } l271: { position273, tokenIndex273 := position, tokenIndex - if buffer[position] != rune('b') { + if buffer[position] != rune('p') { goto l274 } position++ goto l273 l274: position, tokenIndex = position273, tokenIndex273 - if buffer[position] != rune('B') { - goto l266 + if buffer[position] != rune('P') { + goto l268 } position++ } l273: + { + position275, tokenIndex275 := position, tokenIndex + if buffer[position] != rune('e') { + goto l276 + } + position++ + goto l275 + l276: + position, tokenIndex = position275, tokenIndex275 + if buffer[position] != rune('E') { + goto l268 + } + position++ + } + l275: + goto l149 + l268: + position, tokenIndex = position149, tokenIndex149 + if buffer[position] != rune('.') { + goto l277 + } + position++ + { + position278, tokenIndex278 := position, tokenIndex + if buffer[position] != rune('u') { + goto l279 + } + position++ + goto l278 + l279: + position, tokenIndex = position278, tokenIndex278 + if buffer[position] != rune('U') { + goto l277 + } + position++ + } + l278: + { + position280, tokenIndex280 := position, tokenIndex + if buffer[position] != rune('l') { + goto l281 + } + position++ + goto l280 + l281: + position, tokenIndex = position280, tokenIndex280 + if buffer[position] != rune('L') { + goto l277 + } + position++ + } + l280: + { + position282, tokenIndex282 := position, tokenIndex + if buffer[position] != rune('e') { + goto l283 + } + position++ + goto l282 + l283: + position, tokenIndex = position282, tokenIndex282 + if buffer[position] != rune('E') { + goto l277 + } + position++ + } + l282: + { + position284, tokenIndex284 := position, tokenIndex + if buffer[position] != rune('b') { + goto l285 + } + position++ + goto l284 + l285: + position, tokenIndex = position284, tokenIndex284 + if buffer[position] != rune('B') { + goto l277 + } + position++ + } + l284: if buffer[position] != rune('1') { - goto l266 + goto l277 } position++ if buffer[position] != rune('2') { - goto l266 + goto l277 } position++ if buffer[position] != rune('8') { - goto l266 + goto l277 } position++ goto l149 - l266: + l277: position, tokenIndex = position149, tokenIndex149 if buffer[position] != rune('.') { goto l147 } position++ { - position275, tokenIndex275 := position, tokenIndex + position286, tokenIndex286 := position, tokenIndex if buffer[position] != rune('s') { - goto l276 + goto l287 } position++ - goto l275 - l276: - position, tokenIndex = position275, tokenIndex275 + goto l286 + l287: + position, tokenIndex = position286, tokenIndex286 if buffer[position] != rune('S') { goto l147 } position++ } - l275: + l286: { - position277, tokenIndex277 := position, tokenIndex + position288, tokenIndex288 := position, tokenIndex if buffer[position] != rune('l') { - goto l278 + goto l289 } position++ - goto l277 - l278: - position, tokenIndex = position277, tokenIndex277 + goto l288 + l289: + position, tokenIndex = position288, tokenIndex288 if buffer[position] != rune('L') { goto l147 } position++ } - l277: + l288: { - position279, tokenIndex279 := position, tokenIndex + position290, tokenIndex290 := position, tokenIndex if buffer[position] != rune('e') { - goto l280 + goto l291 } position++ - goto l279 - l280: - position, tokenIndex = position279, tokenIndex279 + goto l290 + l291: + position, tokenIndex = position290, tokenIndex290 if buffer[position] != rune('E') { goto l147 } position++ } - l279: + l290: { - position281, tokenIndex281 := position, tokenIndex + position292, tokenIndex292 := position, tokenIndex if buffer[position] != rune('b') { - goto l282 + goto l293 } position++ - goto l281 - l282: - position, tokenIndex = position281, tokenIndex281 + goto l292 + l293: + position, tokenIndex = position292, tokenIndex292 if buffer[position] != rune('B') { goto l147 } position++ } - l281: + l292: if buffer[position] != rune('1') { goto l147 } @@ -2472,4868 +2554,4868 @@ func (p *Asm) Init(options ...func(*Asm) error) error { }, /* 14 SymbolArgs <- <(SymbolArg (WS? ',' WS? SymbolArg)*)> */ func() bool { - position283, tokenIndex283 := position, tokenIndex + position294, tokenIndex294 := position, tokenIndex { - position284 := position + position295 := position if !_rules[ruleSymbolArg]() { - goto l283 + goto l294 } - l285: + l296: { - position286, tokenIndex286 := position, tokenIndex + position297, tokenIndex297 := position, tokenIndex { - position287, tokenIndex287 := position, tokenIndex + position298, tokenIndex298 := position, tokenIndex if !_rules[ruleWS]() { - goto l287 + goto l298 } - goto l288 - l287: - position, tokenIndex = position287, tokenIndex287 + goto l299 + l298: + position, tokenIndex = position298, tokenIndex298 } - l288: + l299: if buffer[position] != rune(',') { - goto l286 + goto l297 } position++ { - position289, tokenIndex289 := position, tokenIndex + position300, tokenIndex300 := position, tokenIndex if !_rules[ruleWS]() { - goto l289 + goto l300 } - goto l290 - l289: - position, tokenIndex = position289, tokenIndex289 + goto l301 + l300: + position, tokenIndex = position300, tokenIndex300 } - l290: + l301: if !_rules[ruleSymbolArg]() { - goto l286 + goto l297 } - goto l285 - l286: - position, tokenIndex = position286, tokenIndex286 + goto l296 + l297: + position, tokenIndex = position297, tokenIndex297 } - add(ruleSymbolArgs, position284) + add(ruleSymbolArgs, position295) } return true - l283: - position, tokenIndex = position283, tokenIndex283 + l294: + position, tokenIndex = position294, tokenIndex294 return false }, /* 15 SymbolArg <- */ func() bool { - position291, tokenIndex291 := position, tokenIndex + position302, tokenIndex302 := position, tokenIndex { - position292 := position + position303 := position if !_rules[ruleSymbolExpr]() { - goto l291 + goto l302 } - add(ruleSymbolArg, position292) + add(ruleSymbolArg, position303) } return true - l291: - position, tokenIndex = position291, tokenIndex291 + l302: + position, tokenIndex = position302, tokenIndex302 return false }, /* 16 SymbolExpr <- <(SymbolAtom (WS? SymbolOperator WS? SymbolExpr)?)> */ func() bool { - position293, tokenIndex293 := position, tokenIndex + position304, tokenIndex304 := position, tokenIndex { - position294 := position + position305 := position if !_rules[ruleSymbolAtom]() { - goto l293 + goto l304 } { - position295, tokenIndex295 := position, tokenIndex + position306, tokenIndex306 := position, tokenIndex { - position297, tokenIndex297 := position, tokenIndex + position308, tokenIndex308 := position, tokenIndex if !_rules[ruleWS]() { - goto l297 + goto l308 } - goto l298 - l297: - position, tokenIndex = position297, tokenIndex297 + goto l309 + l308: + position, tokenIndex = position308, tokenIndex308 } - l298: + l309: if !_rules[ruleSymbolOperator]() { - goto l295 + goto l306 } { - position299, tokenIndex299 := position, tokenIndex + position310, tokenIndex310 := position, tokenIndex if !_rules[ruleWS]() { - goto l299 + goto l310 } - goto l300 - l299: - position, tokenIndex = position299, tokenIndex299 + goto l311 + l310: + position, tokenIndex = position310, tokenIndex310 } - l300: + l311: if !_rules[ruleSymbolExpr]() { - goto l295 + goto l306 } - goto l296 - l295: - position, tokenIndex = position295, tokenIndex295 + goto l307 + l306: + position, tokenIndex = position306, tokenIndex306 } - l296: - add(ruleSymbolExpr, position294) + l307: + add(ruleSymbolExpr, position305) } return true - l293: - position, tokenIndex = position293, tokenIndex293 + l304: + position, tokenIndex = position304, tokenIndex304 return false }, /* 17 SymbolAtom <- <(Offset / SymbolType / LocalLabelRef / (LocalSymbol TCMarker?) / (SymbolName Offset) / (SymbolName TCMarker?) / Dot / (OpenParen WS? SymbolExpr WS? CloseParen))> */ func() bool { - position301, tokenIndex301 := position, tokenIndex + position312, tokenIndex312 := position, tokenIndex { - position302 := position + position313 := position { - position303, tokenIndex303 := position, tokenIndex + position314, tokenIndex314 := position, tokenIndex if !_rules[ruleOffset]() { - goto l304 + goto l315 } - goto l303 - l304: - position, tokenIndex = position303, tokenIndex303 + goto l314 + l315: + position, tokenIndex = position314, tokenIndex314 if !_rules[ruleSymbolType]() { - goto l305 + goto l316 } - goto l303 - l305: - position, tokenIndex = position303, tokenIndex303 + goto l314 + l316: + position, tokenIndex = position314, tokenIndex314 if !_rules[ruleLocalLabelRef]() { - goto l306 + goto l317 } - goto l303 - l306: - position, tokenIndex = position303, tokenIndex303 + goto l314 + l317: + position, tokenIndex = position314, tokenIndex314 if !_rules[ruleLocalSymbol]() { - goto l307 + goto l318 } { - position308, tokenIndex308 := position, tokenIndex + position319, tokenIndex319 := position, tokenIndex if !_rules[ruleTCMarker]() { - goto l308 + goto l319 } - goto l309 - l308: - position, tokenIndex = position308, tokenIndex308 + goto l320 + l319: + position, tokenIndex = position319, tokenIndex319 } - l309: - goto l303 - l307: - position, tokenIndex = position303, tokenIndex303 + l320: + goto l314 + l318: + position, tokenIndex = position314, tokenIndex314 if !_rules[ruleSymbolName]() { - goto l310 + goto l321 } if !_rules[ruleOffset]() { - goto l310 + goto l321 } - goto l303 - l310: - position, tokenIndex = position303, tokenIndex303 + goto l314 + l321: + position, tokenIndex = position314, tokenIndex314 if !_rules[ruleSymbolName]() { - goto l311 + goto l322 } { - position312, tokenIndex312 := position, tokenIndex + position323, tokenIndex323 := position, tokenIndex if !_rules[ruleTCMarker]() { - goto l312 + goto l323 } - goto l313 - l312: - position, tokenIndex = position312, tokenIndex312 + goto l324 + l323: + position, tokenIndex = position323, tokenIndex323 } - l313: - goto l303 - l311: - position, tokenIndex = position303, tokenIndex303 + l324: + goto l314 + l322: + position, tokenIndex = position314, tokenIndex314 if !_rules[ruleDot]() { - goto l314 + goto l325 } - goto l303 - l314: - position, tokenIndex = position303, tokenIndex303 + goto l314 + l325: + position, tokenIndex = position314, tokenIndex314 if !_rules[ruleOpenParen]() { - goto l301 + goto l312 } { - position315, tokenIndex315 := position, tokenIndex + position326, tokenIndex326 := position, tokenIndex if !_rules[ruleWS]() { - goto l315 + goto l326 } - goto l316 - l315: - position, tokenIndex = position315, tokenIndex315 + goto l327 + l326: + position, tokenIndex = position326, tokenIndex326 } - l316: + l327: if !_rules[ruleSymbolExpr]() { - goto l301 + goto l312 } { - position317, tokenIndex317 := position, tokenIndex + position328, tokenIndex328 := position, tokenIndex if !_rules[ruleWS]() { - goto l317 + goto l328 } - goto l318 - l317: - position, tokenIndex = position317, tokenIndex317 + goto l329 + l328: + position, tokenIndex = position328, tokenIndex328 } - l318: + l329: if !_rules[ruleCloseParen]() { - goto l301 + goto l312 } } - l303: - add(ruleSymbolAtom, position302) + l314: + add(ruleSymbolAtom, position313) } return true - l301: - position, tokenIndex = position301, tokenIndex301 + l312: + position, tokenIndex = position312, tokenIndex312 return false }, /* 18 SymbolOperator <- <('+' / '-' / '|' / ('<' '<') / ('>' '>'))> */ func() bool { - position319, tokenIndex319 := position, tokenIndex + position330, tokenIndex330 := position, tokenIndex { - position320 := position + position331 := position { - position321, tokenIndex321 := position, tokenIndex + position332, tokenIndex332 := position, tokenIndex if buffer[position] != rune('+') { - goto l322 + goto l333 } position++ - goto l321 - l322: - position, tokenIndex = position321, tokenIndex321 + goto l332 + l333: + position, tokenIndex = position332, tokenIndex332 if buffer[position] != rune('-') { - goto l323 + goto l334 } position++ - goto l321 - l323: - position, tokenIndex = position321, tokenIndex321 + goto l332 + l334: + position, tokenIndex = position332, tokenIndex332 if buffer[position] != rune('|') { - goto l324 + goto l335 } position++ - goto l321 - l324: - position, tokenIndex = position321, tokenIndex321 + goto l332 + l335: + position, tokenIndex = position332, tokenIndex332 if buffer[position] != rune('<') { - goto l325 + goto l336 } position++ if buffer[position] != rune('<') { - goto l325 + goto l336 } position++ - goto l321 - l325: - position, tokenIndex = position321, tokenIndex321 + goto l332 + l336: + position, tokenIndex = position332, tokenIndex332 if buffer[position] != rune('>') { - goto l319 + goto l330 } position++ if buffer[position] != rune('>') { - goto l319 + goto l330 } position++ } - l321: - add(ruleSymbolOperator, position320) + l332: + add(ruleSymbolOperator, position331) } return true - l319: - position, tokenIndex = position319, tokenIndex319 + l330: + position, tokenIndex = position330, tokenIndex330 return false }, /* 19 OpenParen <- <'('> */ func() bool { - position326, tokenIndex326 := position, tokenIndex + position337, tokenIndex337 := position, tokenIndex { - position327 := position + position338 := position if buffer[position] != rune('(') { - goto l326 + goto l337 } position++ - add(ruleOpenParen, position327) + add(ruleOpenParen, position338) } return true - l326: - position, tokenIndex = position326, tokenIndex326 + l337: + position, tokenIndex = position337, tokenIndex337 return false }, /* 20 CloseParen <- <')'> */ func() bool { - position328, tokenIndex328 := position, tokenIndex + position339, tokenIndex339 := position, tokenIndex { - position329 := position + position340 := position if buffer[position] != rune(')') { - goto l328 + goto l339 } position++ - add(ruleCloseParen, position329) + add(ruleCloseParen, position340) } return true - l328: - position, tokenIndex = position328, tokenIndex328 + l339: + position, tokenIndex = position339, tokenIndex339 return false }, /* 21 SymbolType <- <(('@' / '%') (('f' 'u' 'n' 'c' 't' 'i' 'o' 'n') / ('o' 'b' 'j' 'e' 'c' 't')))> */ func() bool { - position330, tokenIndex330 := position, tokenIndex + position341, tokenIndex341 := position, tokenIndex { - position331 := position + position342 := position { - position332, tokenIndex332 := position, tokenIndex + position343, tokenIndex343 := position, tokenIndex if buffer[position] != rune('@') { - goto l333 + goto l344 } position++ - goto l332 - l333: - position, tokenIndex = position332, tokenIndex332 + goto l343 + l344: + position, tokenIndex = position343, tokenIndex343 if buffer[position] != rune('%') { - goto l330 + goto l341 } position++ } - l332: + l343: { - position334, tokenIndex334 := position, tokenIndex + position345, tokenIndex345 := position, tokenIndex if buffer[position] != rune('f') { - goto l335 + goto l346 } position++ if buffer[position] != rune('u') { - goto l335 + goto l346 } position++ if buffer[position] != rune('n') { - goto l335 + goto l346 } position++ if buffer[position] != rune('c') { - goto l335 + goto l346 } position++ if buffer[position] != rune('t') { - goto l335 + goto l346 } position++ if buffer[position] != rune('i') { - goto l335 + goto l346 } position++ if buffer[position] != rune('o') { - goto l335 + goto l346 } position++ if buffer[position] != rune('n') { - goto l335 + goto l346 } position++ - goto l334 - l335: - position, tokenIndex = position334, tokenIndex334 + goto l345 + l346: + position, tokenIndex = position345, tokenIndex345 if buffer[position] != rune('o') { - goto l330 + goto l341 } position++ if buffer[position] != rune('b') { - goto l330 + goto l341 } position++ if buffer[position] != rune('j') { - goto l330 + goto l341 } position++ if buffer[position] != rune('e') { - goto l330 + goto l341 } position++ if buffer[position] != rune('c') { - goto l330 + goto l341 } position++ if buffer[position] != rune('t') { - goto l330 + goto l341 } position++ } - l334: - add(ruleSymbolType, position331) + l345: + add(ruleSymbolType, position342) } return true - l330: - position, tokenIndex = position330, tokenIndex330 + l341: + position, tokenIndex = position341, tokenIndex341 return false }, /* 22 Dot <- <'.'> */ func() bool { - position336, tokenIndex336 := position, tokenIndex + position347, tokenIndex347 := position, tokenIndex { - position337 := position + position348 := position if buffer[position] != rune('.') { - goto l336 + goto l347 } position++ - add(ruleDot, position337) + add(ruleDot, position348) } return true - l336: - position, tokenIndex = position336, tokenIndex336 + l347: + position, tokenIndex = position347, tokenIndex347 return false }, /* 23 TCMarker <- <('[' 'T' 'C' ']')> */ func() bool { - position338, tokenIndex338 := position, tokenIndex + position349, tokenIndex349 := position, tokenIndex { - position339 := position + position350 := position if buffer[position] != rune('[') { - goto l338 + goto l349 } position++ if buffer[position] != rune('T') { - goto l338 + goto l349 } position++ if buffer[position] != rune('C') { - goto l338 + goto l349 } position++ if buffer[position] != rune(']') { - goto l338 + goto l349 } position++ - add(ruleTCMarker, position339) + add(ruleTCMarker, position350) } return true - l338: - position, tokenIndex = position338, tokenIndex338 + l349: + position, tokenIndex = position349, tokenIndex349 return false }, /* 24 EscapedChar <- <('\\' .)> */ func() bool { - position340, tokenIndex340 := position, tokenIndex + position351, tokenIndex351 := position, tokenIndex { - position341 := position + position352 := position if buffer[position] != rune('\\') { - goto l340 + goto l351 } position++ if !matchDot() { - goto l340 + goto l351 } - add(ruleEscapedChar, position341) + add(ruleEscapedChar, position352) } return true - l340: - position, tokenIndex = position340, tokenIndex340 + l351: + position, tokenIndex = position351, tokenIndex351 return false }, /* 25 WS <- <(' ' / '\t')+> */ func() bool { - position342, tokenIndex342 := position, tokenIndex + position353, tokenIndex353 := position, tokenIndex { - position343 := position + position354 := position { - position346, tokenIndex346 := position, tokenIndex + position357, tokenIndex357 := position, tokenIndex if buffer[position] != rune(' ') { - goto l347 + goto l358 } position++ - goto l346 - l347: - position, tokenIndex = position346, tokenIndex346 + goto l357 + l358: + position, tokenIndex = position357, tokenIndex357 if buffer[position] != rune('\t') { - goto l342 + goto l353 } position++ } - l346: - l344: + l357: + l355: { - position345, tokenIndex345 := position, tokenIndex + position356, tokenIndex356 := position, tokenIndex { - position348, tokenIndex348 := position, tokenIndex + position359, tokenIndex359 := position, tokenIndex if buffer[position] != rune(' ') { - goto l349 + goto l360 } position++ - goto l348 - l349: - position, tokenIndex = position348, tokenIndex348 + goto l359 + l360: + position, tokenIndex = position359, tokenIndex359 if buffer[position] != rune('\t') { - goto l345 + goto l356 } position++ } - l348: - goto l344 - l345: - position, tokenIndex = position345, tokenIndex345 + l359: + goto l355 + l356: + position, tokenIndex = position356, tokenIndex356 } - add(ruleWS, position343) + add(ruleWS, position354) } return true - l342: - position, tokenIndex = position342, tokenIndex342 + l353: + position, tokenIndex = position353, tokenIndex353 return false }, /* 26 Comment <- <((('/' '/') / '#') (!'\n' .)*)> */ func() bool { - position350, tokenIndex350 := position, tokenIndex + position361, tokenIndex361 := position, tokenIndex { - position351 := position + position362 := position { - position352, tokenIndex352 := position, tokenIndex + position363, tokenIndex363 := position, tokenIndex if buffer[position] != rune('/') { - goto l353 + goto l364 } position++ if buffer[position] != rune('/') { - goto l353 + goto l364 } position++ - goto l352 - l353: - position, tokenIndex = position352, tokenIndex352 + goto l363 + l364: + position, tokenIndex = position363, tokenIndex363 if buffer[position] != rune('#') { - goto l350 + goto l361 } position++ } - l352: - l354: + l363: + l365: { - position355, tokenIndex355 := position, tokenIndex + position366, tokenIndex366 := position, tokenIndex { - position356, tokenIndex356 := position, tokenIndex + position367, tokenIndex367 := position, tokenIndex if buffer[position] != rune('\n') { - goto l356 + goto l367 } position++ - goto l355 - l356: - position, tokenIndex = position356, tokenIndex356 + goto l366 + l367: + position, tokenIndex = position367, tokenIndex367 } if !matchDot() { - goto l355 + goto l366 } - goto l354 - l355: - position, tokenIndex = position355, tokenIndex355 + goto l365 + l366: + position, tokenIndex = position366, tokenIndex366 } - add(ruleComment, position351) + add(ruleComment, position362) } return true - l350: - position, tokenIndex = position350, tokenIndex350 + l361: + position, tokenIndex = position361, tokenIndex361 return false }, /* 27 Label <- <((LocalSymbol / LocalLabel / SymbolName) ':')> */ func() bool { - position357, tokenIndex357 := position, tokenIndex + position368, tokenIndex368 := position, tokenIndex { - position358 := position + position369 := position { - position359, tokenIndex359 := position, tokenIndex + position370, tokenIndex370 := position, tokenIndex if !_rules[ruleLocalSymbol]() { - goto l360 + goto l371 } - goto l359 - l360: - position, tokenIndex = position359, tokenIndex359 + goto l370 + l371: + position, tokenIndex = position370, tokenIndex370 if !_rules[ruleLocalLabel]() { - goto l361 + goto l372 } - goto l359 - l361: - position, tokenIndex = position359, tokenIndex359 + goto l370 + l372: + position, tokenIndex = position370, tokenIndex370 if !_rules[ruleSymbolName]() { - goto l357 + goto l368 } } - l359: + l370: if buffer[position] != rune(':') { - goto l357 + goto l368 } position++ - add(ruleLabel, position358) + add(ruleLabel, position369) } return true - l357: - position, tokenIndex = position357, tokenIndex357 + l368: + position, tokenIndex = position368, tokenIndex368 return false }, /* 28 SymbolName <- <(([a-z] / [A-Z] / '.' / '_') ([a-z] / [A-Z] / '.' / ([0-9] / [0-9]) / '$' / '_')*)> */ func() bool { - position362, tokenIndex362 := position, tokenIndex + position373, tokenIndex373 := position, tokenIndex { - position363 := position + position374 := position { - position364, tokenIndex364 := position, tokenIndex + position375, tokenIndex375 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { - goto l365 + goto l376 } position++ - goto l364 - l365: - position, tokenIndex = position364, tokenIndex364 + goto l375 + l376: + position, tokenIndex = position375, tokenIndex375 if c := buffer[position]; c < rune('A') || c > rune('Z') { - goto l366 + goto l377 } position++ - goto l364 - l366: - position, tokenIndex = position364, tokenIndex364 + goto l375 + l377: + position, tokenIndex = position375, tokenIndex375 if buffer[position] != rune('.') { - goto l367 + goto l378 } position++ - goto l364 - l367: - position, tokenIndex = position364, tokenIndex364 + goto l375 + l378: + position, tokenIndex = position375, tokenIndex375 if buffer[position] != rune('_') { - goto l362 + goto l373 } position++ } - l364: - l368: + l375: + l379: { - position369, tokenIndex369 := position, tokenIndex + position380, tokenIndex380 := position, tokenIndex { - position370, tokenIndex370 := position, tokenIndex + position381, tokenIndex381 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { - goto l371 + goto l382 } position++ - goto l370 - l371: - position, tokenIndex = position370, tokenIndex370 + goto l381 + l382: + position, tokenIndex = position381, tokenIndex381 if c := buffer[position]; c < rune('A') || c > rune('Z') { - goto l372 + goto l383 } position++ - goto l370 - l372: - position, tokenIndex = position370, tokenIndex370 + goto l381 + l383: + position, tokenIndex = position381, tokenIndex381 if buffer[position] != rune('.') { - goto l373 + goto l384 } position++ - goto l370 - l373: - position, tokenIndex = position370, tokenIndex370 + goto l381 + l384: + position, tokenIndex = position381, tokenIndex381 { - position375, tokenIndex375 := position, tokenIndex + position386, tokenIndex386 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l376 + goto l387 } position++ - goto l375 - l376: - position, tokenIndex = position375, tokenIndex375 + goto l386 + l387: + position, tokenIndex = position386, tokenIndex386 if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l374 + goto l385 } position++ } - l375: - goto l370 - l374: - position, tokenIndex = position370, tokenIndex370 + l386: + goto l381 + l385: + position, tokenIndex = position381, tokenIndex381 if buffer[position] != rune('$') { - goto l377 + goto l388 } position++ - goto l370 - l377: - position, tokenIndex = position370, tokenIndex370 + goto l381 + l388: + position, tokenIndex = position381, tokenIndex381 if buffer[position] != rune('_') { - goto l369 + goto l380 } position++ } - l370: - goto l368 - l369: - position, tokenIndex = position369, tokenIndex369 + l381: + goto l379 + l380: + position, tokenIndex = position380, tokenIndex380 } - add(ruleSymbolName, position363) + add(ruleSymbolName, position374) } return true - l362: - position, tokenIndex = position362, tokenIndex362 + l373: + position, tokenIndex = position373, tokenIndex373 return false }, /* 29 LocalSymbol <- <('.' 'L' ([a-z] / [A-Z] / ([a-z] / [A-Z]) / '.' / ([0-9] / [0-9]) / '$' / '_')+)> */ func() bool { - position378, tokenIndex378 := position, tokenIndex + position389, tokenIndex389 := position, tokenIndex { - position379 := position + position390 := position if buffer[position] != rune('.') { - goto l378 + goto l389 } position++ if buffer[position] != rune('L') { - goto l378 + goto l389 } position++ { - position382, tokenIndex382 := position, tokenIndex + position393, tokenIndex393 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { - goto l383 + goto l394 } position++ - goto l382 - l383: - position, tokenIndex = position382, tokenIndex382 + goto l393 + l394: + position, tokenIndex = position393, tokenIndex393 if c := buffer[position]; c < rune('A') || c > rune('Z') { - goto l384 + goto l395 } position++ - goto l382 - l384: - position, tokenIndex = position382, tokenIndex382 + goto l393 + l395: + position, tokenIndex = position393, tokenIndex393 { - position386, tokenIndex386 := position, tokenIndex + position397, tokenIndex397 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { - goto l387 + goto l398 } position++ - goto l386 - l387: - position, tokenIndex = position386, tokenIndex386 + goto l397 + l398: + position, tokenIndex = position397, tokenIndex397 if c := buffer[position]; c < rune('A') || c > rune('Z') { - goto l385 + goto l396 } position++ } - l386: - goto l382 - l385: - position, tokenIndex = position382, tokenIndex382 + l397: + goto l393 + l396: + position, tokenIndex = position393, tokenIndex393 if buffer[position] != rune('.') { - goto l388 + goto l399 } position++ - goto l382 - l388: - position, tokenIndex = position382, tokenIndex382 + goto l393 + l399: + position, tokenIndex = position393, tokenIndex393 { - position390, tokenIndex390 := position, tokenIndex + position401, tokenIndex401 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l391 + goto l402 } position++ - goto l390 - l391: - position, tokenIndex = position390, tokenIndex390 + goto l401 + l402: + position, tokenIndex = position401, tokenIndex401 if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l389 + goto l400 } position++ } - l390: - goto l382 - l389: - position, tokenIndex = position382, tokenIndex382 + l401: + goto l393 + l400: + position, tokenIndex = position393, tokenIndex393 if buffer[position] != rune('$') { - goto l392 + goto l403 } position++ - goto l382 - l392: - position, tokenIndex = position382, tokenIndex382 + goto l393 + l403: + position, tokenIndex = position393, tokenIndex393 if buffer[position] != rune('_') { - goto l378 + goto l389 } position++ } - l382: - l380: + l393: + l391: { - position381, tokenIndex381 := position, tokenIndex + position392, tokenIndex392 := position, tokenIndex { - position393, tokenIndex393 := position, tokenIndex + position404, tokenIndex404 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { - goto l394 + goto l405 } position++ - goto l393 - l394: - position, tokenIndex = position393, tokenIndex393 + goto l404 + l405: + position, tokenIndex = position404, tokenIndex404 if c := buffer[position]; c < rune('A') || c > rune('Z') { - goto l395 + goto l406 } position++ - goto l393 - l395: - position, tokenIndex = position393, tokenIndex393 + goto l404 + l406: + position, tokenIndex = position404, tokenIndex404 { - position397, tokenIndex397 := position, tokenIndex + position408, tokenIndex408 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { - goto l398 + goto l409 } position++ - goto l397 - l398: - position, tokenIndex = position397, tokenIndex397 + goto l408 + l409: + position, tokenIndex = position408, tokenIndex408 if c := buffer[position]; c < rune('A') || c > rune('Z') { - goto l396 + goto l407 } position++ } - l397: - goto l393 - l396: - position, tokenIndex = position393, tokenIndex393 + l408: + goto l404 + l407: + position, tokenIndex = position404, tokenIndex404 if buffer[position] != rune('.') { - goto l399 + goto l410 } position++ - goto l393 - l399: - position, tokenIndex = position393, tokenIndex393 + goto l404 + l410: + position, tokenIndex = position404, tokenIndex404 { - position401, tokenIndex401 := position, tokenIndex + position412, tokenIndex412 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l402 + goto l413 } position++ - goto l401 - l402: - position, tokenIndex = position401, tokenIndex401 + goto l412 + l413: + position, tokenIndex = position412, tokenIndex412 if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l400 + goto l411 } position++ } - l401: - goto l393 - l400: - position, tokenIndex = position393, tokenIndex393 + l412: + goto l404 + l411: + position, tokenIndex = position404, tokenIndex404 if buffer[position] != rune('$') { - goto l403 + goto l414 } position++ - goto l393 - l403: - position, tokenIndex = position393, tokenIndex393 + goto l404 + l414: + position, tokenIndex = position404, tokenIndex404 if buffer[position] != rune('_') { - goto l381 + goto l392 } position++ } - l393: - goto l380 - l381: - position, tokenIndex = position381, tokenIndex381 + l404: + goto l391 + l392: + position, tokenIndex = position392, tokenIndex392 } - add(ruleLocalSymbol, position379) + add(ruleLocalSymbol, position390) } return true - l378: - position, tokenIndex = position378, tokenIndex378 + l389: + position, tokenIndex = position389, tokenIndex389 return false }, /* 30 LocalLabel <- <([0-9] ([0-9] / '$')*)> */ func() bool { - position404, tokenIndex404 := position, tokenIndex + position415, tokenIndex415 := position, tokenIndex { - position405 := position + position416 := position if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l404 + goto l415 } position++ - l406: + l417: { - position407, tokenIndex407 := position, tokenIndex + position418, tokenIndex418 := position, tokenIndex { - position408, tokenIndex408 := position, tokenIndex + position419, tokenIndex419 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l409 + goto l420 } position++ - goto l408 - l409: - position, tokenIndex = position408, tokenIndex408 + goto l419 + l420: + position, tokenIndex = position419, tokenIndex419 if buffer[position] != rune('$') { - goto l407 + goto l418 } position++ } - l408: - goto l406 - l407: - position, tokenIndex = position407, tokenIndex407 + l419: + goto l417 + l418: + position, tokenIndex = position418, tokenIndex418 } - add(ruleLocalLabel, position405) + add(ruleLocalLabel, position416) } return true - l404: - position, tokenIndex = position404, tokenIndex404 + l415: + position, tokenIndex = position415, tokenIndex415 return false }, /* 31 LocalLabelRef <- <([0-9] ([0-9] / '$')* ('b' / 'f'))> */ func() bool { - position410, tokenIndex410 := position, tokenIndex + position421, tokenIndex421 := position, tokenIndex { - position411 := position + position422 := position if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l410 + goto l421 } position++ - l412: + l423: { - position413, tokenIndex413 := position, tokenIndex + position424, tokenIndex424 := position, tokenIndex { - position414, tokenIndex414 := position, tokenIndex + position425, tokenIndex425 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l415 + goto l426 } position++ - goto l414 - l415: - position, tokenIndex = position414, tokenIndex414 + goto l425 + l426: + position, tokenIndex = position425, tokenIndex425 if buffer[position] != rune('$') { - goto l413 + goto l424 } position++ } - l414: - goto l412 - l413: - position, tokenIndex = position413, tokenIndex413 + l425: + goto l423 + l424: + position, tokenIndex = position424, tokenIndex424 } { - position416, tokenIndex416 := position, tokenIndex + position427, tokenIndex427 := position, tokenIndex if buffer[position] != rune('b') { - goto l417 + goto l428 } position++ - goto l416 - l417: - position, tokenIndex = position416, tokenIndex416 + goto l427 + l428: + position, tokenIndex = position427, tokenIndex427 if buffer[position] != rune('f') { - goto l410 + goto l421 } position++ } - l416: - add(ruleLocalLabelRef, position411) + l427: + add(ruleLocalLabelRef, position422) } return true - l410: - position, tokenIndex = position410, tokenIndex410 + l421: + position, tokenIndex = position421, tokenIndex421 return false }, /* 32 Instruction <- <(InstructionName (WS InstructionArg (WS? ','? WS? InstructionArg)*)?)> */ func() bool { - position418, tokenIndex418 := position, tokenIndex + position429, tokenIndex429 := position, tokenIndex { - position419 := position + position430 := position if !_rules[ruleInstructionName]() { - goto l418 + goto l429 } { - position420, tokenIndex420 := position, tokenIndex + position431, tokenIndex431 := position, tokenIndex if !_rules[ruleWS]() { - goto l420 + goto l431 } if !_rules[ruleInstructionArg]() { - goto l420 + goto l431 } - l422: + l433: { - position423, tokenIndex423 := position, tokenIndex + position434, tokenIndex434 := position, tokenIndex { - position424, tokenIndex424 := position, tokenIndex + position435, tokenIndex435 := position, tokenIndex if !_rules[ruleWS]() { - goto l424 + goto l435 } - goto l425 - l424: - position, tokenIndex = position424, tokenIndex424 + goto l436 + l435: + position, tokenIndex = position435, tokenIndex435 } - l425: + l436: { - position426, tokenIndex426 := position, tokenIndex + position437, tokenIndex437 := position, tokenIndex if buffer[position] != rune(',') { - goto l426 + goto l437 } position++ - goto l427 - l426: - position, tokenIndex = position426, tokenIndex426 + goto l438 + l437: + position, tokenIndex = position437, tokenIndex437 } - l427: + l438: { - position428, tokenIndex428 := position, tokenIndex + position439, tokenIndex439 := position, tokenIndex if !_rules[ruleWS]() { - goto l428 + goto l439 } - goto l429 - l428: - position, tokenIndex = position428, tokenIndex428 + goto l440 + l439: + position, tokenIndex = position439, tokenIndex439 } - l429: + l440: if !_rules[ruleInstructionArg]() { - goto l423 + goto l434 } - goto l422 - l423: - position, tokenIndex = position423, tokenIndex423 + goto l433 + l434: + position, tokenIndex = position434, tokenIndex434 } - goto l421 - l420: - position, tokenIndex = position420, tokenIndex420 + goto l432 + l431: + position, tokenIndex = position431, tokenIndex431 } - l421: - add(ruleInstruction, position419) + l432: + add(ruleInstruction, position430) } return true - l418: - position, tokenIndex = position418, tokenIndex418 + l429: + position, tokenIndex = position429, tokenIndex429 return false }, /* 33 InstructionName <- <(([a-z] / [A-Z]) ([a-z] / [A-Z] / '.' / ([0-9] / [0-9]))* ('.' / '+' / '-')?)> */ func() bool { - position430, tokenIndex430 := position, tokenIndex + position441, tokenIndex441 := position, tokenIndex { - position431 := position + position442 := position { - position432, tokenIndex432 := position, tokenIndex + position443, tokenIndex443 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { - goto l433 + goto l444 } position++ - goto l432 - l433: - position, tokenIndex = position432, tokenIndex432 + goto l443 + l444: + position, tokenIndex = position443, tokenIndex443 if c := buffer[position]; c < rune('A') || c > rune('Z') { - goto l430 + goto l441 } position++ } - l432: - l434: + l443: + l445: { - position435, tokenIndex435 := position, tokenIndex + position446, tokenIndex446 := position, tokenIndex { - position436, tokenIndex436 := position, tokenIndex + position447, tokenIndex447 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { - goto l437 + goto l448 } position++ - goto l436 - l437: - position, tokenIndex = position436, tokenIndex436 + goto l447 + l448: + position, tokenIndex = position447, tokenIndex447 if c := buffer[position]; c < rune('A') || c > rune('Z') { - goto l438 + goto l449 } position++ - goto l436 - l438: - position, tokenIndex = position436, tokenIndex436 + goto l447 + l449: + position, tokenIndex = position447, tokenIndex447 if buffer[position] != rune('.') { - goto l439 + goto l450 } position++ - goto l436 - l439: - position, tokenIndex = position436, tokenIndex436 + goto l447 + l450: + position, tokenIndex = position447, tokenIndex447 { - position440, tokenIndex440 := position, tokenIndex + position451, tokenIndex451 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l441 + goto l452 } position++ - goto l440 - l441: - position, tokenIndex = position440, tokenIndex440 + goto l451 + l452: + position, tokenIndex = position451, tokenIndex451 if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l435 + goto l446 } position++ } - l440: + l451: } - l436: - goto l434 - l435: - position, tokenIndex = position435, tokenIndex435 + l447: + goto l445 + l446: + position, tokenIndex = position446, tokenIndex446 } { - position442, tokenIndex442 := position, tokenIndex + position453, tokenIndex453 := position, tokenIndex { - position444, tokenIndex444 := position, tokenIndex + position455, tokenIndex455 := position, tokenIndex if buffer[position] != rune('.') { - goto l445 + goto l456 } position++ - goto l444 - l445: - position, tokenIndex = position444, tokenIndex444 + goto l455 + l456: + position, tokenIndex = position455, tokenIndex455 if buffer[position] != rune('+') { - goto l446 + goto l457 } position++ - goto l444 - l446: - position, tokenIndex = position444, tokenIndex444 + goto l455 + l457: + position, tokenIndex = position455, tokenIndex455 if buffer[position] != rune('-') { - goto l442 + goto l453 } position++ } - l444: - goto l443 - l442: - position, tokenIndex = position442, tokenIndex442 + l455: + goto l454 + l453: + position, tokenIndex = position453, tokenIndex453 } - l443: - add(ruleInstructionName, position431) + l454: + add(ruleInstructionName, position442) } return true - l430: - position, tokenIndex = position430, tokenIndex430 + l441: + position, tokenIndex = position441, tokenIndex441 return false }, /* 34 InstructionArg <- <(IndirectionIndicator? (ARMConstantTweak / RegisterOrConstant / LocalLabelRef / TOCRefHigh / TOCRefLow / GOTLocation / GOTSymbolOffset / MemoryRef) AVX512Token*)> */ func() bool { - position447, tokenIndex447 := position, tokenIndex + position458, tokenIndex458 := position, tokenIndex { - position448 := position + position459 := position { - position449, tokenIndex449 := position, tokenIndex + position460, tokenIndex460 := position, tokenIndex if !_rules[ruleIndirectionIndicator]() { - goto l449 + goto l460 } - goto l450 - l449: - position, tokenIndex = position449, tokenIndex449 + goto l461 + l460: + position, tokenIndex = position460, tokenIndex460 } - l450: + l461: { - position451, tokenIndex451 := position, tokenIndex + position462, tokenIndex462 := position, tokenIndex if !_rules[ruleARMConstantTweak]() { - goto l452 + goto l463 } - goto l451 - l452: - position, tokenIndex = position451, tokenIndex451 + goto l462 + l463: + position, tokenIndex = position462, tokenIndex462 if !_rules[ruleRegisterOrConstant]() { - goto l453 + goto l464 } - goto l451 - l453: - position, tokenIndex = position451, tokenIndex451 + goto l462 + l464: + position, tokenIndex = position462, tokenIndex462 if !_rules[ruleLocalLabelRef]() { - goto l454 + goto l465 } - goto l451 - l454: - position, tokenIndex = position451, tokenIndex451 + goto l462 + l465: + position, tokenIndex = position462, tokenIndex462 if !_rules[ruleTOCRefHigh]() { - goto l455 + goto l466 } - goto l451 - l455: - position, tokenIndex = position451, tokenIndex451 + goto l462 + l466: + position, tokenIndex = position462, tokenIndex462 if !_rules[ruleTOCRefLow]() { - goto l456 + goto l467 } - goto l451 - l456: - position, tokenIndex = position451, tokenIndex451 + goto l462 + l467: + position, tokenIndex = position462, tokenIndex462 if !_rules[ruleGOTLocation]() { - goto l457 + goto l468 } - goto l451 - l457: - position, tokenIndex = position451, tokenIndex451 + goto l462 + l468: + position, tokenIndex = position462, tokenIndex462 if !_rules[ruleGOTSymbolOffset]() { - goto l458 + goto l469 } - goto l451 - l458: - position, tokenIndex = position451, tokenIndex451 + goto l462 + l469: + position, tokenIndex = position462, tokenIndex462 if !_rules[ruleMemoryRef]() { - goto l447 + goto l458 } } - l451: - l459: + l462: + l470: { - position460, tokenIndex460 := position, tokenIndex + position471, tokenIndex471 := position, tokenIndex if !_rules[ruleAVX512Token]() { - goto l460 + goto l471 } - goto l459 - l460: - position, tokenIndex = position460, tokenIndex460 + goto l470 + l471: + position, tokenIndex = position471, tokenIndex471 } - add(ruleInstructionArg, position448) + add(ruleInstructionArg, position459) } return true - l447: - position, tokenIndex = position447, tokenIndex447 + l458: + position, tokenIndex = position458, tokenIndex458 return false }, /* 35 GOTLocation <- <('$' '_' 'G' 'L' 'O' 'B' 'A' 'L' '_' 'O' 'F' 'F' 'S' 'E' 'T' '_' 'T' 'A' 'B' 'L' 'E' '_' '-' LocalSymbol)> */ func() bool { - position461, tokenIndex461 := position, tokenIndex + position472, tokenIndex472 := position, tokenIndex { - position462 := position + position473 := position if buffer[position] != rune('$') { - goto l461 + goto l472 } position++ if buffer[position] != rune('_') { - goto l461 + goto l472 } position++ if buffer[position] != rune('G') { - goto l461 + goto l472 } position++ if buffer[position] != rune('L') { - goto l461 + goto l472 } position++ if buffer[position] != rune('O') { - goto l461 + goto l472 } position++ if buffer[position] != rune('B') { - goto l461 + goto l472 } position++ if buffer[position] != rune('A') { - goto l461 + goto l472 } position++ if buffer[position] != rune('L') { - goto l461 + goto l472 } position++ if buffer[position] != rune('_') { - goto l461 + goto l472 } position++ if buffer[position] != rune('O') { - goto l461 + goto l472 } position++ if buffer[position] != rune('F') { - goto l461 + goto l472 } position++ if buffer[position] != rune('F') { - goto l461 + goto l472 } position++ if buffer[position] != rune('S') { - goto l461 + goto l472 } position++ if buffer[position] != rune('E') { - goto l461 + goto l472 } position++ if buffer[position] != rune('T') { - goto l461 + goto l472 } position++ if buffer[position] != rune('_') { - goto l461 + goto l472 } position++ if buffer[position] != rune('T') { - goto l461 + goto l472 } position++ if buffer[position] != rune('A') { - goto l461 + goto l472 } position++ if buffer[position] != rune('B') { - goto l461 + goto l472 } position++ if buffer[position] != rune('L') { - goto l461 + goto l472 } position++ if buffer[position] != rune('E') { - goto l461 + goto l472 } position++ if buffer[position] != rune('_') { - goto l461 + goto l472 } position++ if buffer[position] != rune('-') { - goto l461 + goto l472 } position++ if !_rules[ruleLocalSymbol]() { - goto l461 + goto l472 } - add(ruleGOTLocation, position462) + add(ruleGOTLocation, position473) } return true - l461: - position, tokenIndex = position461, tokenIndex461 + l472: + position, tokenIndex = position472, tokenIndex472 return false }, /* 36 GOTSymbolOffset <- <(('$' SymbolName ('@' 'G' 'O' 'T') ('O' 'F' 'F')?) / (':' ('g' / 'G') ('o' / 'O') ('t' / 'T') ':' SymbolName))> */ func() bool { - position463, tokenIndex463 := position, tokenIndex + position474, tokenIndex474 := position, tokenIndex { - position464 := position + position475 := position { - position465, tokenIndex465 := position, tokenIndex + position476, tokenIndex476 := position, tokenIndex if buffer[position] != rune('$') { - goto l466 + goto l477 } position++ if !_rules[ruleSymbolName]() { - goto l466 + goto l477 } if buffer[position] != rune('@') { - goto l466 + goto l477 } position++ if buffer[position] != rune('G') { - goto l466 + goto l477 } position++ if buffer[position] != rune('O') { - goto l466 + goto l477 } position++ if buffer[position] != rune('T') { - goto l466 + goto l477 } position++ { - position467, tokenIndex467 := position, tokenIndex + position478, tokenIndex478 := position, tokenIndex if buffer[position] != rune('O') { - goto l467 + goto l478 } position++ if buffer[position] != rune('F') { - goto l467 + goto l478 } position++ if buffer[position] != rune('F') { - goto l467 + goto l478 } position++ - goto l468 - l467: - position, tokenIndex = position467, tokenIndex467 + goto l479 + l478: + position, tokenIndex = position478, tokenIndex478 } - l468: - goto l465 - l466: - position, tokenIndex = position465, tokenIndex465 + l479: + goto l476 + l477: + position, tokenIndex = position476, tokenIndex476 if buffer[position] != rune(':') { - goto l463 + goto l474 } position++ { - position469, tokenIndex469 := position, tokenIndex + position480, tokenIndex480 := position, tokenIndex if buffer[position] != rune('g') { - goto l470 + goto l481 } position++ - goto l469 - l470: - position, tokenIndex = position469, tokenIndex469 + goto l480 + l481: + position, tokenIndex = position480, tokenIndex480 if buffer[position] != rune('G') { - goto l463 + goto l474 } position++ } - l469: + l480: { - position471, tokenIndex471 := position, tokenIndex + position482, tokenIndex482 := position, tokenIndex if buffer[position] != rune('o') { - goto l472 + goto l483 } position++ - goto l471 - l472: - position, tokenIndex = position471, tokenIndex471 + goto l482 + l483: + position, tokenIndex = position482, tokenIndex482 if buffer[position] != rune('O') { - goto l463 + goto l474 } position++ } - l471: + l482: { - position473, tokenIndex473 := position, tokenIndex + position484, tokenIndex484 := position, tokenIndex if buffer[position] != rune('t') { - goto l474 + goto l485 } position++ - goto l473 - l474: - position, tokenIndex = position473, tokenIndex473 + goto l484 + l485: + position, tokenIndex = position484, tokenIndex484 if buffer[position] != rune('T') { - goto l463 + goto l474 } position++ } - l473: + l484: if buffer[position] != rune(':') { - goto l463 + goto l474 } position++ if !_rules[ruleSymbolName]() { - goto l463 + goto l474 } } - l465: - add(ruleGOTSymbolOffset, position464) + l476: + add(ruleGOTSymbolOffset, position475) } return true - l463: - position, tokenIndex = position463, tokenIndex463 + l474: + position, tokenIndex = position474, tokenIndex474 return false }, /* 37 AVX512Token <- <(WS? '{' '%'? ([0-9] / [a-z])* '}')> */ func() bool { - position475, tokenIndex475 := position, tokenIndex + position486, tokenIndex486 := position, tokenIndex { - position476 := position + position487 := position { - position477, tokenIndex477 := position, tokenIndex + position488, tokenIndex488 := position, tokenIndex if !_rules[ruleWS]() { - goto l477 + goto l488 } - goto l478 - l477: - position, tokenIndex = position477, tokenIndex477 + goto l489 + l488: + position, tokenIndex = position488, tokenIndex488 } - l478: + l489: if buffer[position] != rune('{') { - goto l475 + goto l486 } position++ { - position479, tokenIndex479 := position, tokenIndex + position490, tokenIndex490 := position, tokenIndex if buffer[position] != rune('%') { - goto l479 + goto l490 } position++ - goto l480 - l479: - position, tokenIndex = position479, tokenIndex479 + goto l491 + l490: + position, tokenIndex = position490, tokenIndex490 } - l480: - l481: + l491: + l492: { - position482, tokenIndex482 := position, tokenIndex + position493, tokenIndex493 := position, tokenIndex { - position483, tokenIndex483 := position, tokenIndex + position494, tokenIndex494 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l484 + goto l495 } position++ - goto l483 - l484: - position, tokenIndex = position483, tokenIndex483 + goto l494 + l495: + position, tokenIndex = position494, tokenIndex494 if c := buffer[position]; c < rune('a') || c > rune('z') { - goto l482 + goto l493 } position++ } - l483: - goto l481 - l482: - position, tokenIndex = position482, tokenIndex482 + l494: + goto l492 + l493: + position, tokenIndex = position493, tokenIndex493 } if buffer[position] != rune('}') { - goto l475 + goto l486 } position++ - add(ruleAVX512Token, position476) + add(ruleAVX512Token, position487) } return true - l475: - position, tokenIndex = position475, tokenIndex475 + l486: + position, tokenIndex = position486, tokenIndex486 return false }, /* 38 TOCRefHigh <- <('.' 'T' 'O' 'C' '.' '-' (('0' 'b') / ('.' 'L' ([a-z] / [A-Z] / '_' / [0-9])+)) ('@' ('h' / 'H') ('a' / 'A')))> */ func() bool { - position485, tokenIndex485 := position, tokenIndex + position496, tokenIndex496 := position, tokenIndex { - position486 := position + position497 := position if buffer[position] != rune('.') { - goto l485 + goto l496 } position++ if buffer[position] != rune('T') { - goto l485 + goto l496 } position++ if buffer[position] != rune('O') { - goto l485 + goto l496 } position++ if buffer[position] != rune('C') { - goto l485 + goto l496 } position++ if buffer[position] != rune('.') { - goto l485 + goto l496 } position++ if buffer[position] != rune('-') { - goto l485 + goto l496 } position++ { - position487, tokenIndex487 := position, tokenIndex + position498, tokenIndex498 := position, tokenIndex if buffer[position] != rune('0') { - goto l488 + goto l499 } position++ if buffer[position] != rune('b') { - goto l488 + goto l499 } position++ - goto l487 - l488: - position, tokenIndex = position487, tokenIndex487 + goto l498 + l499: + position, tokenIndex = position498, tokenIndex498 if buffer[position] != rune('.') { - goto l485 + goto l496 } position++ if buffer[position] != rune('L') { - goto l485 + goto l496 } position++ { - position491, tokenIndex491 := position, tokenIndex + position502, tokenIndex502 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { - goto l492 + goto l503 } position++ - goto l491 - l492: - position, tokenIndex = position491, tokenIndex491 + goto l502 + l503: + position, tokenIndex = position502, tokenIndex502 if c := buffer[position]; c < rune('A') || c > rune('Z') { - goto l493 + goto l504 } position++ - goto l491 - l493: - position, tokenIndex = position491, tokenIndex491 + goto l502 + l504: + position, tokenIndex = position502, tokenIndex502 if buffer[position] != rune('_') { - goto l494 + goto l505 } position++ - goto l491 - l494: - position, tokenIndex = position491, tokenIndex491 + goto l502 + l505: + position, tokenIndex = position502, tokenIndex502 if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l485 + goto l496 } position++ } - l491: - l489: + l502: + l500: { - position490, tokenIndex490 := position, tokenIndex + position501, tokenIndex501 := position, tokenIndex { - position495, tokenIndex495 := position, tokenIndex + position506, tokenIndex506 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { - goto l496 + goto l507 } position++ - goto l495 - l496: - position, tokenIndex = position495, tokenIndex495 + goto l506 + l507: + position, tokenIndex = position506, tokenIndex506 if c := buffer[position]; c < rune('A') || c > rune('Z') { - goto l497 + goto l508 } position++ - goto l495 - l497: - position, tokenIndex = position495, tokenIndex495 + goto l506 + l508: + position, tokenIndex = position506, tokenIndex506 if buffer[position] != rune('_') { - goto l498 + goto l509 } position++ - goto l495 - l498: - position, tokenIndex = position495, tokenIndex495 + goto l506 + l509: + position, tokenIndex = position506, tokenIndex506 if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l490 + goto l501 } position++ } - l495: - goto l489 - l490: - position, tokenIndex = position490, tokenIndex490 + l506: + goto l500 + l501: + position, tokenIndex = position501, tokenIndex501 } } - l487: + l498: if buffer[position] != rune('@') { - goto l485 + goto l496 } position++ { - position499, tokenIndex499 := position, tokenIndex + position510, tokenIndex510 := position, tokenIndex if buffer[position] != rune('h') { - goto l500 + goto l511 } position++ - goto l499 - l500: - position, tokenIndex = position499, tokenIndex499 + goto l510 + l511: + position, tokenIndex = position510, tokenIndex510 if buffer[position] != rune('H') { - goto l485 + goto l496 } position++ } - l499: + l510: { - position501, tokenIndex501 := position, tokenIndex + position512, tokenIndex512 := position, tokenIndex if buffer[position] != rune('a') { - goto l502 + goto l513 } position++ - goto l501 - l502: - position, tokenIndex = position501, tokenIndex501 + goto l512 + l513: + position, tokenIndex = position512, tokenIndex512 if buffer[position] != rune('A') { - goto l485 + goto l496 } position++ } - l501: - add(ruleTOCRefHigh, position486) + l512: + add(ruleTOCRefHigh, position497) } return true - l485: - position, tokenIndex = position485, tokenIndex485 + l496: + position, tokenIndex = position496, tokenIndex496 return false }, /* 39 TOCRefLow <- <('.' 'T' 'O' 'C' '.' '-' (('0' 'b') / ('.' 'L' ([a-z] / [A-Z] / '_' / [0-9])+)) ('@' ('l' / 'L')))> */ func() bool { - position503, tokenIndex503 := position, tokenIndex + position514, tokenIndex514 := position, tokenIndex { - position504 := position + position515 := position if buffer[position] != rune('.') { - goto l503 + goto l514 } position++ if buffer[position] != rune('T') { - goto l503 + goto l514 } position++ if buffer[position] != rune('O') { - goto l503 + goto l514 } position++ if buffer[position] != rune('C') { - goto l503 + goto l514 } position++ if buffer[position] != rune('.') { - goto l503 + goto l514 } position++ if buffer[position] != rune('-') { - goto l503 + goto l514 } position++ { - position505, tokenIndex505 := position, tokenIndex + position516, tokenIndex516 := position, tokenIndex if buffer[position] != rune('0') { - goto l506 + goto l517 } position++ if buffer[position] != rune('b') { - goto l506 + goto l517 } position++ - goto l505 - l506: - position, tokenIndex = position505, tokenIndex505 + goto l516 + l517: + position, tokenIndex = position516, tokenIndex516 if buffer[position] != rune('.') { - goto l503 + goto l514 } position++ if buffer[position] != rune('L') { - goto l503 + goto l514 } position++ { - position509, tokenIndex509 := position, tokenIndex + position520, tokenIndex520 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { - goto l510 + goto l521 } position++ - goto l509 - l510: - position, tokenIndex = position509, tokenIndex509 + goto l520 + l521: + position, tokenIndex = position520, tokenIndex520 if c := buffer[position]; c < rune('A') || c > rune('Z') { - goto l511 + goto l522 } position++ - goto l509 - l511: - position, tokenIndex = position509, tokenIndex509 + goto l520 + l522: + position, tokenIndex = position520, tokenIndex520 if buffer[position] != rune('_') { - goto l512 + goto l523 } position++ - goto l509 - l512: - position, tokenIndex = position509, tokenIndex509 + goto l520 + l523: + position, tokenIndex = position520, tokenIndex520 if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l503 + goto l514 } position++ } - l509: - l507: + l520: + l518: { - position508, tokenIndex508 := position, tokenIndex + position519, tokenIndex519 := position, tokenIndex { - position513, tokenIndex513 := position, tokenIndex + position524, tokenIndex524 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { - goto l514 + goto l525 } position++ - goto l513 - l514: - position, tokenIndex = position513, tokenIndex513 + goto l524 + l525: + position, tokenIndex = position524, tokenIndex524 if c := buffer[position]; c < rune('A') || c > rune('Z') { - goto l515 + goto l526 } position++ - goto l513 - l515: - position, tokenIndex = position513, tokenIndex513 + goto l524 + l526: + position, tokenIndex = position524, tokenIndex524 if buffer[position] != rune('_') { - goto l516 + goto l527 } position++ - goto l513 - l516: - position, tokenIndex = position513, tokenIndex513 + goto l524 + l527: + position, tokenIndex = position524, tokenIndex524 if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l508 + goto l519 } position++ } - l513: - goto l507 - l508: - position, tokenIndex = position508, tokenIndex508 + l524: + goto l518 + l519: + position, tokenIndex = position519, tokenIndex519 } } - l505: + l516: if buffer[position] != rune('@') { - goto l503 + goto l514 } position++ { - position517, tokenIndex517 := position, tokenIndex + position528, tokenIndex528 := position, tokenIndex if buffer[position] != rune('l') { - goto l518 + goto l529 } position++ - goto l517 - l518: - position, tokenIndex = position517, tokenIndex517 + goto l528 + l529: + position, tokenIndex = position528, tokenIndex528 if buffer[position] != rune('L') { - goto l503 + goto l514 } position++ } - l517: - add(ruleTOCRefLow, position504) + l528: + add(ruleTOCRefLow, position515) } return true - l503: - position, tokenIndex = position503, tokenIndex503 + l514: + position, tokenIndex = position514, tokenIndex514 return false }, /* 40 IndirectionIndicator <- <'*'> */ func() bool { - position519, tokenIndex519 := position, tokenIndex + position530, tokenIndex530 := position, tokenIndex { - position520 := position + position531 := position if buffer[position] != rune('*') { - goto l519 + goto l530 } position++ - add(ruleIndirectionIndicator, position520) + add(ruleIndirectionIndicator, position531) } return true - l519: - position, tokenIndex = position519, tokenIndex519 + l530: + position, tokenIndex = position530, tokenIndex530 return false }, /* 41 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]+ ')') / ARMRegister) !('f' / 'b' / ':' / '(' / '+' / '-'))> */ func() bool { - position521, tokenIndex521 := position, tokenIndex + position532, tokenIndex532 := position, tokenIndex { - position522 := position + position533 := position { - position523, tokenIndex523 := position, tokenIndex + position534, tokenIndex534 := position, tokenIndex if buffer[position] != rune('%') { - goto l524 + goto l535 } position++ { - position525, tokenIndex525 := position, tokenIndex + position536, tokenIndex536 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { - goto l526 + goto l537 } position++ - goto l525 - l526: - position, tokenIndex = position525, tokenIndex525 + goto l536 + l537: + position, tokenIndex = position536, tokenIndex536 if c := buffer[position]; c < rune('A') || c > rune('Z') { - goto l524 + goto l535 } position++ } - l525: - l527: + l536: + l538: { - position528, tokenIndex528 := position, tokenIndex + position539, tokenIndex539 := position, tokenIndex { - position529, tokenIndex529 := position, tokenIndex + position540, tokenIndex540 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { - goto l530 + goto l541 } position++ - goto l529 - l530: - position, tokenIndex = position529, tokenIndex529 + goto l540 + l541: + position, tokenIndex = position540, tokenIndex540 if c := buffer[position]; c < rune('A') || c > rune('Z') { - goto l531 + goto l542 } position++ - goto l529 - l531: - position, tokenIndex = position529, tokenIndex529 + goto l540 + l542: + position, tokenIndex = position540, tokenIndex540 { - position532, tokenIndex532 := position, tokenIndex + position543, tokenIndex543 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l533 + goto l544 } position++ - goto l532 - l533: - position, tokenIndex = position532, tokenIndex532 + goto l543 + l544: + position, tokenIndex = position543, tokenIndex543 if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l528 + goto l539 } position++ } - l532: + l543: } - l529: - goto l527 - l528: - position, tokenIndex = position528, tokenIndex528 + l540: + goto l538 + l539: + position, tokenIndex = position539, tokenIndex539 } - goto l523 - l524: - position, tokenIndex = position523, tokenIndex523 + goto l534 + l535: + position, tokenIndex = position534, tokenIndex534 if buffer[position] != rune('$') { - goto l534 + goto l545 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l534 + goto l545 } position++ - l535: + l546: { - position536, tokenIndex536 := position, tokenIndex + position547, tokenIndex547 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l536 + goto l547 } position++ - goto l535 - l536: - position, tokenIndex = position536, tokenIndex536 + goto l546 + l547: + position, tokenIndex = position547, tokenIndex547 } { - position537, tokenIndex537 := position, tokenIndex + position548, tokenIndex548 := position, tokenIndex if !_rules[ruleWS]() { - goto l537 + goto l548 } - goto l538 - l537: - position, tokenIndex = position537, tokenIndex537 + goto l549 + l548: + position, tokenIndex = position548, tokenIndex548 } - l538: + l549: if buffer[position] != rune('*') { - goto l534 + goto l545 } position++ { - position539, tokenIndex539 := position, tokenIndex + position550, tokenIndex550 := position, tokenIndex if !_rules[ruleWS]() { - goto l539 + goto l550 } - goto l540 - l539: - position, tokenIndex = position539, tokenIndex539 + goto l551 + l550: + position, tokenIndex = position550, tokenIndex550 } - l540: + l551: if buffer[position] != rune('(') { - goto l534 + goto l545 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l534 + goto l545 } position++ - l541: + l552: { - position542, tokenIndex542 := position, tokenIndex + position553, tokenIndex553 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l542 + goto l553 } position++ - goto l541 - l542: - position, tokenIndex = position542, tokenIndex542 + goto l552 + l553: + position, tokenIndex = position553, tokenIndex553 } { - position543, tokenIndex543 := position, tokenIndex + position554, tokenIndex554 := position, tokenIndex if !_rules[ruleWS]() { - goto l543 + goto l554 } - goto l544 - l543: - position, tokenIndex = position543, tokenIndex543 + goto l555 + l554: + position, tokenIndex = position554, tokenIndex554 } - l544: + l555: if buffer[position] != rune('-') { - goto l534 + goto l545 } position++ { - position545, tokenIndex545 := position, tokenIndex + position556, tokenIndex556 := position, tokenIndex if !_rules[ruleWS]() { - goto l545 + goto l556 } - goto l546 - l545: - position, tokenIndex = position545, tokenIndex545 + goto l557 + l556: + position, tokenIndex = position556, tokenIndex556 } - l546: + l557: if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l534 + goto l545 } position++ - l547: + l558: { - position548, tokenIndex548 := position, tokenIndex + position559, tokenIndex559 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l548 + goto l559 } position++ - goto l547 - l548: - position, tokenIndex = position548, tokenIndex548 + goto l558 + l559: + position, tokenIndex = position559, tokenIndex559 } if buffer[position] != rune(')') { - goto l534 + goto l545 } position++ - goto l523 - l534: - position, tokenIndex = position523, tokenIndex523 + goto l534 + l545: + position, tokenIndex = position534, tokenIndex534 { - position550, tokenIndex550 := position, tokenIndex + position561, tokenIndex561 := position, tokenIndex if buffer[position] != rune('$') { - goto l550 + goto l561 } position++ - goto l551 - l550: - position, tokenIndex = position550, tokenIndex550 + goto l562 + l561: + position, tokenIndex = position561, tokenIndex561 } - l551: + l562: { - position552, tokenIndex552 := position, tokenIndex + position563, tokenIndex563 := position, tokenIndex if !_rules[ruleOffset]() { - goto l553 + goto l564 } if !_rules[ruleOffset]() { - goto l553 + goto l564 } - goto l552 - l553: - position, tokenIndex = position552, tokenIndex552 + goto l563 + l564: + position, tokenIndex = position563, tokenIndex563 if !_rules[ruleOffset]() { - goto l549 + goto l560 } } - l552: - goto l523 - l549: - position, tokenIndex = position523, tokenIndex523 + l563: + goto l534 + l560: + position, tokenIndex = position534, tokenIndex534 if buffer[position] != rune('#') { - goto l554 + goto l565 } position++ if !_rules[ruleOffset]() { - goto l554 + goto l565 } { - position555, tokenIndex555 := position, tokenIndex + position566, tokenIndex566 := position, tokenIndex if buffer[position] != rune('*') { - goto l555 + goto l566 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l555 + goto l566 } position++ - l557: + l568: { - position558, tokenIndex558 := position, tokenIndex + position569, tokenIndex569 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l558 + goto l569 } position++ - goto l557 - l558: - position, tokenIndex = position558, tokenIndex558 + goto l568 + l569: + position, tokenIndex = position569, tokenIndex569 } { - position559, tokenIndex559 := position, tokenIndex + position570, tokenIndex570 := position, tokenIndex if buffer[position] != rune('-') { - goto l559 + goto l570 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l559 + goto l570 } position++ - l561: + l572: { - position562, tokenIndex562 := position, tokenIndex + position573, tokenIndex573 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l562 + goto l573 } position++ - goto l561 - l562: - position, tokenIndex = position562, tokenIndex562 + goto l572 + l573: + position, tokenIndex = position573, tokenIndex573 } - goto l560 - l559: - position, tokenIndex = position559, tokenIndex559 - } - l560: - goto l556 - l555: - position, tokenIndex = position555, tokenIndex555 - } - l556: - goto l523 - l554: - position, tokenIndex = position523, tokenIndex523 + goto l571 + l570: + position, tokenIndex = position570, tokenIndex570 + } + l571: + goto l567 + l566: + position, tokenIndex = position566, tokenIndex566 + } + l567: + goto l534 + l565: + position, tokenIndex = position534, tokenIndex534 if buffer[position] != rune('#') { - goto l563 + goto l574 } position++ { - position564, tokenIndex564 := position, tokenIndex + position575, tokenIndex575 := position, tokenIndex if buffer[position] != rune('~') { - goto l564 + goto l575 } position++ - goto l565 - l564: - position, tokenIndex = position564, tokenIndex564 + goto l576 + l575: + position, tokenIndex = position575, tokenIndex575 } - l565: + l576: if buffer[position] != rune('(') { - goto l563 + goto l574 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l563 + goto l574 } position++ { - position566, tokenIndex566 := position, tokenIndex + position577, tokenIndex577 := position, tokenIndex if !_rules[ruleWS]() { - goto l566 + goto l577 } - goto l567 - l566: - position, tokenIndex = position566, tokenIndex566 + goto l578 + l577: + position, tokenIndex = position577, tokenIndex577 } - l567: + l578: if buffer[position] != rune('<') { - goto l563 + goto l574 } position++ if buffer[position] != rune('<') { - goto l563 + goto l574 } position++ { - position568, tokenIndex568 := position, tokenIndex + position579, tokenIndex579 := position, tokenIndex if !_rules[ruleWS]() { - goto l568 + goto l579 } - goto l569 - l568: - position, tokenIndex = position568, tokenIndex568 + goto l580 + l579: + position, tokenIndex = position579, tokenIndex579 } - l569: + l580: if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l563 + goto l574 } position++ { - position570, tokenIndex570 := position, tokenIndex + position581, tokenIndex581 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l570 + goto l581 } position++ - goto l571 - l570: - position, tokenIndex = position570, tokenIndex570 + goto l582 + l581: + position, tokenIndex = position581, tokenIndex581 } - l571: + l582: if buffer[position] != rune(')') { - goto l563 + goto l574 } position++ - goto l523 - l563: - position, tokenIndex = position523, tokenIndex523 + goto l534 + l574: + position, tokenIndex = position534, tokenIndex534 { - position573, tokenIndex573 := position, tokenIndex + position584, tokenIndex584 := position, tokenIndex if buffer[position] != rune('#') { - goto l574 + goto l585 } position++ - goto l573 - l574: - position, tokenIndex = position573, tokenIndex573 + goto l584 + l585: + position, tokenIndex = position584, tokenIndex584 if buffer[position] != rune('$') { - goto l572 + goto l583 } position++ } - l573: + l584: { - position575, tokenIndex575 := position, tokenIndex + position586, tokenIndex586 := position, tokenIndex if buffer[position] != rune('~') { - goto l575 + goto l586 } position++ - goto l576 - l575: - position, tokenIndex = position575, tokenIndex575 + goto l587 + l586: + position, tokenIndex = position586, tokenIndex586 } - l576: + l587: { - position577, tokenIndex577 := position, tokenIndex + position588, tokenIndex588 := position, tokenIndex if buffer[position] != rune('0') { - goto l577 + goto l588 } position++ if buffer[position] != rune('x') { - goto l577 + goto l588 } position++ - goto l578 - l577: - position, tokenIndex = position577, tokenIndex577 + goto l589 + l588: + position, tokenIndex = position588, tokenIndex588 } - l578: + l589: { - position581, tokenIndex581 := position, tokenIndex + position592, tokenIndex592 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l582 + goto l593 } position++ - goto l581 - l582: - position, tokenIndex = position581, tokenIndex581 + goto l592 + l593: + position, tokenIndex = position592, tokenIndex592 if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l583 + goto l594 } position++ - goto l581 - l583: - position, tokenIndex = position581, tokenIndex581 + goto l592 + l594: + position, tokenIndex = position592, tokenIndex592 { - position584, tokenIndex584 := position, tokenIndex + position595, tokenIndex595 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('f') { - goto l585 + goto l596 } position++ - goto l584 - l585: - position, tokenIndex = position584, tokenIndex584 + goto l595 + l596: + position, tokenIndex = position595, tokenIndex595 if c := buffer[position]; c < rune('A') || c > rune('F') { - goto l572 + goto l583 } position++ } - l584: + l595: } - l581: - l579: + l592: + l590: { - position580, tokenIndex580 := position, tokenIndex + position591, tokenIndex591 := position, tokenIndex { - position586, tokenIndex586 := position, tokenIndex + position597, tokenIndex597 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l587 + goto l598 } position++ - goto l586 - l587: - position, tokenIndex = position586, tokenIndex586 + goto l597 + l598: + position, tokenIndex = position597, tokenIndex597 if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l588 + goto l599 } position++ - goto l586 - l588: - position, tokenIndex = position586, tokenIndex586 + goto l597 + l599: + position, tokenIndex = position597, tokenIndex597 { - position589, tokenIndex589 := position, tokenIndex + position600, tokenIndex600 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('f') { - goto l590 + goto l601 } position++ - goto l589 - l590: - position, tokenIndex = position589, tokenIndex589 + goto l600 + l601: + position, tokenIndex = position600, tokenIndex600 if c := buffer[position]; c < rune('A') || c > rune('F') { - goto l580 + goto l591 } position++ } - l589: + l600: } - l586: - goto l579 - l580: - position, tokenIndex = position580, tokenIndex580 + l597: + goto l590 + l591: + position, tokenIndex = position591, tokenIndex591 } - goto l523 - l572: - position, tokenIndex = position523, tokenIndex523 + goto l534 + l583: + position, tokenIndex = position534, tokenIndex534 if buffer[position] != rune('$') { - goto l591 + goto l602 } position++ if buffer[position] != rune('(') { - goto l591 + goto l602 } position++ if buffer[position] != rune('-') { - goto l591 + goto l602 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l591 + goto l602 } position++ - l592: + l603: { - position593, tokenIndex593 := position, tokenIndex + position604, tokenIndex604 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l593 + goto l604 } position++ - goto l592 - l593: - position, tokenIndex = position593, tokenIndex593 + goto l603 + l604: + position, tokenIndex = position604, tokenIndex604 } if buffer[position] != rune(')') { - goto l591 + goto l602 } position++ - goto l523 - l591: - position, tokenIndex = position523, tokenIndex523 + goto l534 + l602: + position, tokenIndex = position534, tokenIndex534 if !_rules[ruleARMRegister]() { - goto l521 + goto l532 } } - l523: + l534: { - position594, tokenIndex594 := position, tokenIndex + position605, tokenIndex605 := position, tokenIndex { - position595, tokenIndex595 := position, tokenIndex + position606, tokenIndex606 := position, tokenIndex if buffer[position] != rune('f') { - goto l596 + goto l607 } position++ - goto l595 - l596: - position, tokenIndex = position595, tokenIndex595 + goto l606 + l607: + position, tokenIndex = position606, tokenIndex606 if buffer[position] != rune('b') { - goto l597 + goto l608 } position++ - goto l595 - l597: - position, tokenIndex = position595, tokenIndex595 + goto l606 + l608: + position, tokenIndex = position606, tokenIndex606 if buffer[position] != rune(':') { - goto l598 + goto l609 } position++ - goto l595 - l598: - position, tokenIndex = position595, tokenIndex595 + goto l606 + l609: + position, tokenIndex = position606, tokenIndex606 if buffer[position] != rune('(') { - goto l599 + goto l610 } position++ - goto l595 - l599: - position, tokenIndex = position595, tokenIndex595 + goto l606 + l610: + position, tokenIndex = position606, tokenIndex606 if buffer[position] != rune('+') { - goto l600 + goto l611 } position++ - goto l595 - l600: - position, tokenIndex = position595, tokenIndex595 + goto l606 + l611: + position, tokenIndex = position606, tokenIndex606 if buffer[position] != rune('-') { - goto l594 + goto l605 } position++ } - l595: - goto l521 - l594: - position, tokenIndex = position594, tokenIndex594 + l606: + goto l532 + l605: + position, tokenIndex = position605, tokenIndex605 } - add(ruleRegisterOrConstant, position522) + add(ruleRegisterOrConstant, position533) } return true - l521: - position, tokenIndex = position521, tokenIndex521 + l532: + position, tokenIndex = position532, tokenIndex532 return false }, /* 42 ARMConstantTweak <- <(((('u' / 's') (('x' / 'X') ('t' / 'T')) ('x' / 'w' / 'h' / 'b')) / (('l' / 'L') ('s' / 'S') ('l' / 'L')) / (('l' / 'L') ('s' / 'S') ('r' / 'R')) / (('r' / 'R') ('o' / 'O') ('r' / 'R')) / (('a' / 'A') ('s' / 'S') ('r' / 'R'))) (WS '#'? Offset)?)> */ func() bool { - position601, tokenIndex601 := position, tokenIndex + position612, tokenIndex612 := position, tokenIndex { - position602 := position + position613 := position { - position603, tokenIndex603 := position, tokenIndex + position614, tokenIndex614 := position, tokenIndex { - position605, tokenIndex605 := position, tokenIndex + position616, tokenIndex616 := position, tokenIndex if buffer[position] != rune('u') { - goto l606 + goto l617 } position++ - goto l605 - l606: - position, tokenIndex = position605, tokenIndex605 + goto l616 + l617: + position, tokenIndex = position616, tokenIndex616 if buffer[position] != rune('s') { - goto l604 + goto l615 } position++ } - l605: + l616: { - position607, tokenIndex607 := position, tokenIndex + position618, tokenIndex618 := position, tokenIndex if buffer[position] != rune('x') { - goto l608 + goto l619 } position++ - goto l607 - l608: - position, tokenIndex = position607, tokenIndex607 + goto l618 + l619: + position, tokenIndex = position618, tokenIndex618 if buffer[position] != rune('X') { - goto l604 + goto l615 } position++ } - l607: + l618: { - position609, tokenIndex609 := position, tokenIndex + position620, tokenIndex620 := position, tokenIndex if buffer[position] != rune('t') { - goto l610 + goto l621 } position++ - goto l609 - l610: - position, tokenIndex = position609, tokenIndex609 + goto l620 + l621: + position, tokenIndex = position620, tokenIndex620 if buffer[position] != rune('T') { - goto l604 + goto l615 } position++ } - l609: + l620: { - position611, tokenIndex611 := position, tokenIndex + position622, tokenIndex622 := position, tokenIndex if buffer[position] != rune('x') { - goto l612 + goto l623 } position++ - goto l611 - l612: - position, tokenIndex = position611, tokenIndex611 + goto l622 + l623: + position, tokenIndex = position622, tokenIndex622 if buffer[position] != rune('w') { - goto l613 + goto l624 } position++ - goto l611 - l613: - position, tokenIndex = position611, tokenIndex611 + goto l622 + l624: + position, tokenIndex = position622, tokenIndex622 if buffer[position] != rune('h') { - goto l614 + goto l625 } position++ - goto l611 - l614: - position, tokenIndex = position611, tokenIndex611 + goto l622 + l625: + position, tokenIndex = position622, tokenIndex622 if buffer[position] != rune('b') { - goto l604 + goto l615 } position++ } - l611: - goto l603 - l604: - position, tokenIndex = position603, tokenIndex603 + l622: + goto l614 + l615: + position, tokenIndex = position614, tokenIndex614 { - position616, tokenIndex616 := position, tokenIndex + position627, tokenIndex627 := position, tokenIndex if buffer[position] != rune('l') { - goto l617 + goto l628 } position++ - goto l616 - l617: - position, tokenIndex = position616, tokenIndex616 + goto l627 + l628: + position, tokenIndex = position627, tokenIndex627 if buffer[position] != rune('L') { - goto l615 + goto l626 } position++ } - l616: + l627: { - position618, tokenIndex618 := position, tokenIndex + position629, tokenIndex629 := position, tokenIndex if buffer[position] != rune('s') { - goto l619 + goto l630 } position++ - goto l618 - l619: - position, tokenIndex = position618, tokenIndex618 + goto l629 + l630: + position, tokenIndex = position629, tokenIndex629 if buffer[position] != rune('S') { - goto l615 + goto l626 } position++ } - l618: + l629: { - position620, tokenIndex620 := position, tokenIndex + position631, tokenIndex631 := position, tokenIndex if buffer[position] != rune('l') { - goto l621 + goto l632 } position++ - goto l620 - l621: - position, tokenIndex = position620, tokenIndex620 + goto l631 + l632: + position, tokenIndex = position631, tokenIndex631 if buffer[position] != rune('L') { - goto l615 + goto l626 } position++ } - l620: - goto l603 - l615: - position, tokenIndex = position603, tokenIndex603 + l631: + goto l614 + l626: + position, tokenIndex = position614, tokenIndex614 { - position623, tokenIndex623 := position, tokenIndex + position634, tokenIndex634 := position, tokenIndex if buffer[position] != rune('l') { - goto l624 + goto l635 } position++ - goto l623 - l624: - position, tokenIndex = position623, tokenIndex623 + goto l634 + l635: + position, tokenIndex = position634, tokenIndex634 if buffer[position] != rune('L') { - goto l622 + goto l633 } position++ } - l623: + l634: { - position625, tokenIndex625 := position, tokenIndex + position636, tokenIndex636 := position, tokenIndex if buffer[position] != rune('s') { - goto l626 + goto l637 } position++ - goto l625 - l626: - position, tokenIndex = position625, tokenIndex625 + goto l636 + l637: + position, tokenIndex = position636, tokenIndex636 if buffer[position] != rune('S') { - goto l622 + goto l633 } position++ } - l625: + l636: { - position627, tokenIndex627 := position, tokenIndex + position638, tokenIndex638 := position, tokenIndex if buffer[position] != rune('r') { - goto l628 + goto l639 } position++ - goto l627 - l628: - position, tokenIndex = position627, tokenIndex627 + goto l638 + l639: + position, tokenIndex = position638, tokenIndex638 if buffer[position] != rune('R') { - goto l622 + goto l633 } position++ } - l627: - goto l603 - l622: - position, tokenIndex = position603, tokenIndex603 + l638: + goto l614 + l633: + position, tokenIndex = position614, tokenIndex614 { - position630, tokenIndex630 := position, tokenIndex + position641, tokenIndex641 := position, tokenIndex if buffer[position] != rune('r') { - goto l631 + goto l642 } position++ - goto l630 - l631: - position, tokenIndex = position630, tokenIndex630 + goto l641 + l642: + position, tokenIndex = position641, tokenIndex641 if buffer[position] != rune('R') { - goto l629 + goto l640 } position++ } - l630: + l641: { - position632, tokenIndex632 := position, tokenIndex + position643, tokenIndex643 := position, tokenIndex if buffer[position] != rune('o') { - goto l633 + goto l644 } position++ - goto l632 - l633: - position, tokenIndex = position632, tokenIndex632 + goto l643 + l644: + position, tokenIndex = position643, tokenIndex643 if buffer[position] != rune('O') { - goto l629 + goto l640 } position++ } - l632: + l643: { - position634, tokenIndex634 := position, tokenIndex + position645, tokenIndex645 := position, tokenIndex if buffer[position] != rune('r') { - goto l635 + goto l646 } position++ - goto l634 - l635: - position, tokenIndex = position634, tokenIndex634 + goto l645 + l646: + position, tokenIndex = position645, tokenIndex645 if buffer[position] != rune('R') { - goto l629 + goto l640 } position++ } - l634: - goto l603 - l629: - position, tokenIndex = position603, tokenIndex603 + l645: + goto l614 + l640: + position, tokenIndex = position614, tokenIndex614 { - position636, tokenIndex636 := position, tokenIndex + position647, tokenIndex647 := position, tokenIndex if buffer[position] != rune('a') { - goto l637 + goto l648 } position++ - goto l636 - l637: - position, tokenIndex = position636, tokenIndex636 + goto l647 + l648: + position, tokenIndex = position647, tokenIndex647 if buffer[position] != rune('A') { - goto l601 + goto l612 } position++ } - l636: + l647: { - position638, tokenIndex638 := position, tokenIndex + position649, tokenIndex649 := position, tokenIndex if buffer[position] != rune('s') { - goto l639 + goto l650 } position++ - goto l638 - l639: - position, tokenIndex = position638, tokenIndex638 + goto l649 + l650: + position, tokenIndex = position649, tokenIndex649 if buffer[position] != rune('S') { - goto l601 + goto l612 } position++ } - l638: + l649: { - position640, tokenIndex640 := position, tokenIndex + position651, tokenIndex651 := position, tokenIndex if buffer[position] != rune('r') { - goto l641 + goto l652 } position++ - goto l640 - l641: - position, tokenIndex = position640, tokenIndex640 + goto l651 + l652: + position, tokenIndex = position651, tokenIndex651 if buffer[position] != rune('R') { - goto l601 + goto l612 } position++ } - l640: + l651: } - l603: + l614: { - position642, tokenIndex642 := position, tokenIndex + position653, tokenIndex653 := position, tokenIndex if !_rules[ruleWS]() { - goto l642 + goto l653 } { - position644, tokenIndex644 := position, tokenIndex + position655, tokenIndex655 := position, tokenIndex if buffer[position] != rune('#') { - goto l644 + goto l655 } position++ - goto l645 - l644: - position, tokenIndex = position644, tokenIndex644 + goto l656 + l655: + position, tokenIndex = position655, tokenIndex655 } - l645: + l656: if !_rules[ruleOffset]() { - goto l642 + goto l653 } - goto l643 - l642: - position, tokenIndex = position642, tokenIndex642 + goto l654 + l653: + position, tokenIndex = position653, tokenIndex653 } - l643: - add(ruleARMConstantTweak, position602) + l654: + add(ruleARMConstantTweak, position613) } return true - l601: - position, tokenIndex = position601, tokenIndex601 + l612: + position, tokenIndex = position612, tokenIndex612 return false }, /* 43 ARMRegister <- <((('s' / 'S') ('p' / 'P')) / (('x' / 'w' / 'd' / 'q' / 's' / 'h' / 'b') [0-9] [0-9]?) / (('x' / 'X') ('z' / 'Z') ('r' / 'R')) / (('w' / 'W') ('z' / 'Z') ('r' / 'R')) / (('n' / 'N') ('z' / 'Z') ('c' / 'C') ('v' / 'V')) / ARMVectorRegister / ('{' WS? ARMVectorRegister WS? ((',' / '-') WS? ARMVectorRegister)* WS? '}' ('[' [0-9] [0-9]? ']')?))> */ func() bool { - position646, tokenIndex646 := position, tokenIndex + position657, tokenIndex657 := position, tokenIndex { - position647 := position + position658 := position { - position648, tokenIndex648 := position, tokenIndex + position659, tokenIndex659 := position, tokenIndex { - position650, tokenIndex650 := position, tokenIndex + position661, tokenIndex661 := position, tokenIndex if buffer[position] != rune('s') { - goto l651 + goto l662 } position++ - goto l650 - l651: - position, tokenIndex = position650, tokenIndex650 + goto l661 + l662: + position, tokenIndex = position661, tokenIndex661 if buffer[position] != rune('S') { - goto l649 + goto l660 } position++ } - l650: + l661: { - position652, tokenIndex652 := position, tokenIndex + position663, tokenIndex663 := position, tokenIndex if buffer[position] != rune('p') { - goto l653 + goto l664 } position++ - goto l652 - l653: - position, tokenIndex = position652, tokenIndex652 + goto l663 + l664: + position, tokenIndex = position663, tokenIndex663 if buffer[position] != rune('P') { - goto l649 + goto l660 } position++ } - l652: - goto l648 - l649: - position, tokenIndex = position648, tokenIndex648 + l663: + goto l659 + l660: + position, tokenIndex = position659, tokenIndex659 { - position655, tokenIndex655 := position, tokenIndex + position666, tokenIndex666 := position, tokenIndex if buffer[position] != rune('x') { - goto l656 + goto l667 } position++ - goto l655 - l656: - position, tokenIndex = position655, tokenIndex655 + goto l666 + l667: + position, tokenIndex = position666, tokenIndex666 if buffer[position] != rune('w') { - goto l657 + goto l668 } position++ - goto l655 - l657: - position, tokenIndex = position655, tokenIndex655 + goto l666 + l668: + position, tokenIndex = position666, tokenIndex666 if buffer[position] != rune('d') { - goto l658 + goto l669 } position++ - goto l655 - l658: - position, tokenIndex = position655, tokenIndex655 + goto l666 + l669: + position, tokenIndex = position666, tokenIndex666 if buffer[position] != rune('q') { - goto l659 + goto l670 } position++ - goto l655 - l659: - position, tokenIndex = position655, tokenIndex655 + goto l666 + l670: + position, tokenIndex = position666, tokenIndex666 if buffer[position] != rune('s') { - goto l660 + goto l671 } position++ - goto l655 - l660: - position, tokenIndex = position655, tokenIndex655 + goto l666 + l671: + position, tokenIndex = position666, tokenIndex666 if buffer[position] != rune('h') { - goto l661 + goto l672 } position++ - goto l655 - l661: - position, tokenIndex = position655, tokenIndex655 + goto l666 + l672: + position, tokenIndex = position666, tokenIndex666 if buffer[position] != rune('b') { - goto l654 + goto l665 } position++ } - l655: + l666: if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l654 + goto l665 } position++ { - position662, tokenIndex662 := position, tokenIndex + position673, tokenIndex673 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l662 + goto l673 } position++ - goto l663 - l662: - position, tokenIndex = position662, tokenIndex662 + goto l674 + l673: + position, tokenIndex = position673, tokenIndex673 } - l663: - goto l648 - l654: - position, tokenIndex = position648, tokenIndex648 + l674: + goto l659 + l665: + position, tokenIndex = position659, tokenIndex659 { - position665, tokenIndex665 := position, tokenIndex + position676, tokenIndex676 := position, tokenIndex if buffer[position] != rune('x') { - goto l666 + goto l677 } position++ - goto l665 - l666: - position, tokenIndex = position665, tokenIndex665 + goto l676 + l677: + position, tokenIndex = position676, tokenIndex676 if buffer[position] != rune('X') { - goto l664 + goto l675 } position++ } - l665: + l676: { - position667, tokenIndex667 := position, tokenIndex + position678, tokenIndex678 := position, tokenIndex if buffer[position] != rune('z') { - goto l668 + goto l679 } position++ - goto l667 - l668: - position, tokenIndex = position667, tokenIndex667 + goto l678 + l679: + position, tokenIndex = position678, tokenIndex678 if buffer[position] != rune('Z') { - goto l664 + goto l675 } position++ } - l667: + l678: { - position669, tokenIndex669 := position, tokenIndex + position680, tokenIndex680 := position, tokenIndex if buffer[position] != rune('r') { - goto l670 + goto l681 } position++ - goto l669 - l670: - position, tokenIndex = position669, tokenIndex669 + goto l680 + l681: + position, tokenIndex = position680, tokenIndex680 if buffer[position] != rune('R') { - goto l664 + goto l675 } position++ } - l669: - goto l648 - l664: - position, tokenIndex = position648, tokenIndex648 + l680: + goto l659 + l675: + position, tokenIndex = position659, tokenIndex659 { - position672, tokenIndex672 := position, tokenIndex + position683, tokenIndex683 := position, tokenIndex if buffer[position] != rune('w') { - goto l673 + goto l684 } position++ - goto l672 - l673: - position, tokenIndex = position672, tokenIndex672 + goto l683 + l684: + position, tokenIndex = position683, tokenIndex683 if buffer[position] != rune('W') { - goto l671 + goto l682 } position++ } - l672: + l683: { - position674, tokenIndex674 := position, tokenIndex + position685, tokenIndex685 := position, tokenIndex if buffer[position] != rune('z') { - goto l675 + goto l686 } position++ - goto l674 - l675: - position, tokenIndex = position674, tokenIndex674 + goto l685 + l686: + position, tokenIndex = position685, tokenIndex685 if buffer[position] != rune('Z') { - goto l671 + goto l682 } position++ } - l674: + l685: { - position676, tokenIndex676 := position, tokenIndex + position687, tokenIndex687 := position, tokenIndex if buffer[position] != rune('r') { - goto l677 + goto l688 } position++ - goto l676 - l677: - position, tokenIndex = position676, tokenIndex676 + goto l687 + l688: + position, tokenIndex = position687, tokenIndex687 if buffer[position] != rune('R') { - goto l671 + goto l682 } position++ } - l676: - goto l648 - l671: - position, tokenIndex = position648, tokenIndex648 + l687: + goto l659 + l682: + position, tokenIndex = position659, tokenIndex659 { - position679, tokenIndex679 := position, tokenIndex + position690, tokenIndex690 := position, tokenIndex if buffer[position] != rune('n') { - goto l680 + goto l691 } position++ - goto l679 - l680: - position, tokenIndex = position679, tokenIndex679 + goto l690 + l691: + position, tokenIndex = position690, tokenIndex690 if buffer[position] != rune('N') { - goto l678 + goto l689 } position++ } - l679: + l690: { - position681, tokenIndex681 := position, tokenIndex + position692, tokenIndex692 := position, tokenIndex if buffer[position] != rune('z') { - goto l682 + goto l693 } position++ - goto l681 - l682: - position, tokenIndex = position681, tokenIndex681 + goto l692 + l693: + position, tokenIndex = position692, tokenIndex692 if buffer[position] != rune('Z') { - goto l678 + goto l689 } position++ } - l681: + l692: { - position683, tokenIndex683 := position, tokenIndex + position694, tokenIndex694 := position, tokenIndex if buffer[position] != rune('c') { - goto l684 + goto l695 } position++ - goto l683 - l684: - position, tokenIndex = position683, tokenIndex683 + goto l694 + l695: + position, tokenIndex = position694, tokenIndex694 if buffer[position] != rune('C') { - goto l678 + goto l689 } position++ } - l683: + l694: { - position685, tokenIndex685 := position, tokenIndex + position696, tokenIndex696 := position, tokenIndex if buffer[position] != rune('v') { - goto l686 + goto l697 } position++ - goto l685 - l686: - position, tokenIndex = position685, tokenIndex685 + goto l696 + l697: + position, tokenIndex = position696, tokenIndex696 if buffer[position] != rune('V') { - goto l678 + goto l689 } position++ } - l685: - goto l648 - l678: - position, tokenIndex = position648, tokenIndex648 + l696: + goto l659 + l689: + position, tokenIndex = position659, tokenIndex659 if !_rules[ruleARMVectorRegister]() { - goto l687 + goto l698 } - goto l648 - l687: - position, tokenIndex = position648, tokenIndex648 + goto l659 + l698: + position, tokenIndex = position659, tokenIndex659 if buffer[position] != rune('{') { - goto l646 + goto l657 } position++ { - position688, tokenIndex688 := position, tokenIndex + position699, tokenIndex699 := position, tokenIndex if !_rules[ruleWS]() { - goto l688 + goto l699 } - goto l689 - l688: - position, tokenIndex = position688, tokenIndex688 + goto l700 + l699: + position, tokenIndex = position699, tokenIndex699 } - l689: + l700: if !_rules[ruleARMVectorRegister]() { - goto l646 + goto l657 } { - position690, tokenIndex690 := position, tokenIndex + position701, tokenIndex701 := position, tokenIndex if !_rules[ruleWS]() { - goto l690 + goto l701 } - goto l691 - l690: - position, tokenIndex = position690, tokenIndex690 + goto l702 + l701: + position, tokenIndex = position701, tokenIndex701 } - l691: - l692: + l702: + l703: { - position693, tokenIndex693 := position, tokenIndex + position704, tokenIndex704 := position, tokenIndex { - position694, tokenIndex694 := position, tokenIndex + position705, tokenIndex705 := position, tokenIndex if buffer[position] != rune(',') { - goto l695 + goto l706 } position++ - goto l694 - l695: - position, tokenIndex = position694, tokenIndex694 + goto l705 + l706: + position, tokenIndex = position705, tokenIndex705 if buffer[position] != rune('-') { - goto l693 + goto l704 } position++ } - l694: + l705: { - position696, tokenIndex696 := position, tokenIndex + position707, tokenIndex707 := position, tokenIndex if !_rules[ruleWS]() { - goto l696 + goto l707 } - goto l697 - l696: - position, tokenIndex = position696, tokenIndex696 + goto l708 + l707: + position, tokenIndex = position707, tokenIndex707 } - l697: + l708: if !_rules[ruleARMVectorRegister]() { - goto l693 + goto l704 } - goto l692 - l693: - position, tokenIndex = position693, tokenIndex693 + goto l703 + l704: + position, tokenIndex = position704, tokenIndex704 } { - position698, tokenIndex698 := position, tokenIndex + position709, tokenIndex709 := position, tokenIndex if !_rules[ruleWS]() { - goto l698 + goto l709 } - goto l699 - l698: - position, tokenIndex = position698, tokenIndex698 + goto l710 + l709: + position, tokenIndex = position709, tokenIndex709 } - l699: + l710: if buffer[position] != rune('}') { - goto l646 + goto l657 } position++ { - position700, tokenIndex700 := position, tokenIndex + position711, tokenIndex711 := position, tokenIndex if buffer[position] != rune('[') { - goto l700 + goto l711 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l700 + goto l711 } position++ { - position702, tokenIndex702 := position, tokenIndex + position713, tokenIndex713 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l702 + goto l713 } position++ - goto l703 - l702: - position, tokenIndex = position702, tokenIndex702 + goto l714 + l713: + position, tokenIndex = position713, tokenIndex713 } - l703: + l714: if buffer[position] != rune(']') { - goto l700 + goto l711 } position++ - goto l701 - l700: - position, tokenIndex = position700, tokenIndex700 + goto l712 + l711: + position, tokenIndex = position711, tokenIndex711 } - l701: + l712: } - l648: - add(ruleARMRegister, position647) + l659: + add(ruleARMRegister, position658) } return true - l646: - position, tokenIndex = position646, tokenIndex646 + l657: + position, tokenIndex = position657, tokenIndex657 return false }, /* 44 ARMVectorRegister <- <(('v' / 'V') [0-9] [0-9]? ('.' [0-9]* ('b' / 's' / 'd' / 'h' / 'q') ('[' [0-9] [0-9]? ']')?)?)> */ func() bool { - position704, tokenIndex704 := position, tokenIndex + position715, tokenIndex715 := position, tokenIndex { - position705 := position + position716 := position { - position706, tokenIndex706 := position, tokenIndex + position717, tokenIndex717 := position, tokenIndex if buffer[position] != rune('v') { - goto l707 + goto l718 } position++ - goto l706 - l707: - position, tokenIndex = position706, tokenIndex706 + goto l717 + l718: + position, tokenIndex = position717, tokenIndex717 if buffer[position] != rune('V') { - goto l704 + goto l715 } position++ } - l706: + l717: if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l704 + goto l715 } position++ { - position708, tokenIndex708 := position, tokenIndex + position719, tokenIndex719 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l708 + goto l719 } position++ - goto l709 - l708: - position, tokenIndex = position708, tokenIndex708 + goto l720 + l719: + position, tokenIndex = position719, tokenIndex719 } - l709: + l720: { - position710, tokenIndex710 := position, tokenIndex + position721, tokenIndex721 := position, tokenIndex if buffer[position] != rune('.') { - goto l710 + goto l721 } position++ - l712: + l723: { - position713, tokenIndex713 := position, tokenIndex + position724, tokenIndex724 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l713 + goto l724 } position++ - goto l712 - l713: - position, tokenIndex = position713, tokenIndex713 + goto l723 + l724: + position, tokenIndex = position724, tokenIndex724 } { - position714, tokenIndex714 := position, tokenIndex + position725, tokenIndex725 := position, tokenIndex if buffer[position] != rune('b') { - goto l715 + goto l726 } position++ - goto l714 - l715: - position, tokenIndex = position714, tokenIndex714 + goto l725 + l726: + position, tokenIndex = position725, tokenIndex725 if buffer[position] != rune('s') { - goto l716 + goto l727 } position++ - goto l714 - l716: - position, tokenIndex = position714, tokenIndex714 + goto l725 + l727: + position, tokenIndex = position725, tokenIndex725 if buffer[position] != rune('d') { - goto l717 + goto l728 } position++ - goto l714 - l717: - position, tokenIndex = position714, tokenIndex714 + goto l725 + l728: + position, tokenIndex = position725, tokenIndex725 if buffer[position] != rune('h') { - goto l718 + goto l729 } position++ - goto l714 - l718: - position, tokenIndex = position714, tokenIndex714 + goto l725 + l729: + position, tokenIndex = position725, tokenIndex725 if buffer[position] != rune('q') { - goto l710 + goto l721 } position++ } - l714: + l725: { - position719, tokenIndex719 := position, tokenIndex + position730, tokenIndex730 := position, tokenIndex if buffer[position] != rune('[') { - goto l719 + goto l730 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l719 + goto l730 } position++ { - position721, tokenIndex721 := position, tokenIndex + position732, tokenIndex732 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l721 + goto l732 } position++ - goto l722 - l721: - position, tokenIndex = position721, tokenIndex721 + goto l733 + l732: + position, tokenIndex = position732, tokenIndex732 } - l722: + l733: if buffer[position] != rune(']') { - goto l719 + goto l730 } position++ - goto l720 - l719: - position, tokenIndex = position719, tokenIndex719 + goto l731 + l730: + position, tokenIndex = position730, tokenIndex730 } - l720: - goto l711 - l710: - position, tokenIndex = position710, tokenIndex710 + l731: + goto l722 + l721: + position, tokenIndex = position721, tokenIndex721 } - l711: - add(ruleARMVectorRegister, position705) + l722: + add(ruleARMVectorRegister, position716) } return true - l704: - position, tokenIndex = position704, tokenIndex704 + l715: + position, tokenIndex = position715, tokenIndex715 return false }, /* 45 MemoryRef <- <((SymbolRef BaseIndexScale) / SymbolRef / Low12BitsSymbolRef / (Offset* BaseIndexScale) / (SegmentRegister Offset BaseIndexScale) / (SegmentRegister BaseIndexScale) / (SegmentRegister Offset) / ARMBaseIndexScale / BaseIndexScale)> */ func() bool { - position723, tokenIndex723 := position, tokenIndex + position734, tokenIndex734 := position, tokenIndex { - position724 := position + position735 := position { - position725, tokenIndex725 := position, tokenIndex + position736, tokenIndex736 := position, tokenIndex if !_rules[ruleSymbolRef]() { - goto l726 + goto l737 } if !_rules[ruleBaseIndexScale]() { - goto l726 + goto l737 } - goto l725 - l726: - position, tokenIndex = position725, tokenIndex725 + goto l736 + l737: + position, tokenIndex = position736, tokenIndex736 if !_rules[ruleSymbolRef]() { - goto l727 + goto l738 } - goto l725 - l727: - position, tokenIndex = position725, tokenIndex725 + goto l736 + l738: + position, tokenIndex = position736, tokenIndex736 if !_rules[ruleLow12BitsSymbolRef]() { - goto l728 + goto l739 } - goto l725 - l728: - position, tokenIndex = position725, tokenIndex725 - l730: + goto l736 + l739: + position, tokenIndex = position736, tokenIndex736 + l741: { - position731, tokenIndex731 := position, tokenIndex + position742, tokenIndex742 := position, tokenIndex if !_rules[ruleOffset]() { - goto l731 + goto l742 } - goto l730 - l731: - position, tokenIndex = position731, tokenIndex731 + goto l741 + l742: + position, tokenIndex = position742, tokenIndex742 } if !_rules[ruleBaseIndexScale]() { - goto l729 + goto l740 } - goto l725 - l729: - position, tokenIndex = position725, tokenIndex725 + goto l736 + l740: + position, tokenIndex = position736, tokenIndex736 if !_rules[ruleSegmentRegister]() { - goto l732 + goto l743 } if !_rules[ruleOffset]() { - goto l732 + goto l743 } if !_rules[ruleBaseIndexScale]() { - goto l732 + goto l743 } - goto l725 - l732: - position, tokenIndex = position725, tokenIndex725 + goto l736 + l743: + position, tokenIndex = position736, tokenIndex736 if !_rules[ruleSegmentRegister]() { - goto l733 + goto l744 } if !_rules[ruleBaseIndexScale]() { - goto l733 + goto l744 } - goto l725 - l733: - position, tokenIndex = position725, tokenIndex725 + goto l736 + l744: + position, tokenIndex = position736, tokenIndex736 if !_rules[ruleSegmentRegister]() { - goto l734 + goto l745 } if !_rules[ruleOffset]() { - goto l734 + goto l745 } - goto l725 - l734: - position, tokenIndex = position725, tokenIndex725 + goto l736 + l745: + position, tokenIndex = position736, tokenIndex736 if !_rules[ruleARMBaseIndexScale]() { - goto l735 + goto l746 } - goto l725 - l735: - position, tokenIndex = position725, tokenIndex725 + goto l736 + l746: + position, tokenIndex = position736, tokenIndex736 if !_rules[ruleBaseIndexScale]() { - goto l723 + goto l734 } } - l725: - add(ruleMemoryRef, position724) + l736: + add(ruleMemoryRef, position735) } return true - l723: - position, tokenIndex = position723, tokenIndex723 + l734: + position, tokenIndex = position734, tokenIndex734 return false }, /* 46 SymbolRef <- <((Offset* '+')? (LocalSymbol / SymbolName) Offset* ('@' Section Offset*)?)> */ func() bool { - position736, tokenIndex736 := position, tokenIndex + position747, tokenIndex747 := position, tokenIndex { - position737 := position + position748 := position { - position738, tokenIndex738 := position, tokenIndex - l740: + position749, tokenIndex749 := position, tokenIndex + l751: { - position741, tokenIndex741 := position, tokenIndex + position752, tokenIndex752 := position, tokenIndex if !_rules[ruleOffset]() { - goto l741 + goto l752 } - goto l740 - l741: - position, tokenIndex = position741, tokenIndex741 + goto l751 + l752: + position, tokenIndex = position752, tokenIndex752 } if buffer[position] != rune('+') { - goto l738 + goto l749 } position++ - goto l739 - l738: - position, tokenIndex = position738, tokenIndex738 + goto l750 + l749: + position, tokenIndex = position749, tokenIndex749 } - l739: + l750: { - position742, tokenIndex742 := position, tokenIndex + position753, tokenIndex753 := position, tokenIndex if !_rules[ruleLocalSymbol]() { - goto l743 + goto l754 } - goto l742 - l743: - position, tokenIndex = position742, tokenIndex742 + goto l753 + l754: + position, tokenIndex = position753, tokenIndex753 if !_rules[ruleSymbolName]() { - goto l736 + goto l747 } } - l742: - l744: + l753: + l755: { - position745, tokenIndex745 := position, tokenIndex + position756, tokenIndex756 := position, tokenIndex if !_rules[ruleOffset]() { - goto l745 + goto l756 } - goto l744 - l745: - position, tokenIndex = position745, tokenIndex745 + goto l755 + l756: + position, tokenIndex = position756, tokenIndex756 } { - position746, tokenIndex746 := position, tokenIndex + position757, tokenIndex757 := position, tokenIndex if buffer[position] != rune('@') { - goto l746 + goto l757 } position++ if !_rules[ruleSection]() { - goto l746 + goto l757 } - l748: + l759: { - position749, tokenIndex749 := position, tokenIndex + position760, tokenIndex760 := position, tokenIndex if !_rules[ruleOffset]() { - goto l749 + goto l760 } - goto l748 - l749: - position, tokenIndex = position749, tokenIndex749 + goto l759 + l760: + position, tokenIndex = position760, tokenIndex760 } - goto l747 - l746: - position, tokenIndex = position746, tokenIndex746 + goto l758 + l757: + position, tokenIndex = position757, tokenIndex757 } - l747: - add(ruleSymbolRef, position737) + l758: + add(ruleSymbolRef, position748) } return true - l736: - position, tokenIndex = position736, tokenIndex736 + l747: + position, tokenIndex = position747, tokenIndex747 return false }, /* 47 Low12BitsSymbolRef <- <(':' ('l' / 'L') ('o' / 'O') '1' '2' ':' (LocalSymbol / SymbolName) Offset?)> */ func() bool { - position750, tokenIndex750 := position, tokenIndex + position761, tokenIndex761 := position, tokenIndex { - position751 := position + position762 := position if buffer[position] != rune(':') { - goto l750 + goto l761 } position++ { - position752, tokenIndex752 := position, tokenIndex + position763, tokenIndex763 := position, tokenIndex if buffer[position] != rune('l') { - goto l753 + goto l764 } position++ - goto l752 - l753: - position, tokenIndex = position752, tokenIndex752 + goto l763 + l764: + position, tokenIndex = position763, tokenIndex763 if buffer[position] != rune('L') { - goto l750 + goto l761 } position++ } - l752: + l763: { - position754, tokenIndex754 := position, tokenIndex + position765, tokenIndex765 := position, tokenIndex if buffer[position] != rune('o') { - goto l755 + goto l766 } position++ - goto l754 - l755: - position, tokenIndex = position754, tokenIndex754 + goto l765 + l766: + position, tokenIndex = position765, tokenIndex765 if buffer[position] != rune('O') { - goto l750 + goto l761 } position++ } - l754: + l765: if buffer[position] != rune('1') { - goto l750 + goto l761 } position++ if buffer[position] != rune('2') { - goto l750 + goto l761 } position++ if buffer[position] != rune(':') { - goto l750 + goto l761 } position++ { - position756, tokenIndex756 := position, tokenIndex + position767, tokenIndex767 := position, tokenIndex if !_rules[ruleLocalSymbol]() { - goto l757 + goto l768 } - goto l756 - l757: - position, tokenIndex = position756, tokenIndex756 + goto l767 + l768: + position, tokenIndex = position767, tokenIndex767 if !_rules[ruleSymbolName]() { - goto l750 + goto l761 } } - l756: + l767: { - position758, tokenIndex758 := position, tokenIndex + position769, tokenIndex769 := position, tokenIndex if !_rules[ruleOffset]() { - goto l758 + goto l769 } - goto l759 - l758: - position, tokenIndex = position758, tokenIndex758 + goto l770 + l769: + position, tokenIndex = position769, tokenIndex769 } - l759: - add(ruleLow12BitsSymbolRef, position751) + l770: + add(ruleLow12BitsSymbolRef, position762) } return true - l750: - position, tokenIndex = position750, tokenIndex750 + l761: + position, tokenIndex = position761, tokenIndex761 return false }, /* 48 ARMBaseIndexScale <- <('[' ARMRegister (',' WS? (('#'? Offset (('*' [0-9]+) / ('*' '(' [0-9]+ Operator [0-9]+ ')') / ('+' [0-9]+)*)?) / ('#'? ARMGOTLow12) / ('#'? Low12BitsSymbolRef) / ARMRegister) (',' WS? ARMConstantTweak)?)? ']' ARMPostincrement?)> */ func() bool { - position760, tokenIndex760 := position, tokenIndex + position771, tokenIndex771 := position, tokenIndex { - position761 := position + position772 := position if buffer[position] != rune('[') { - goto l760 + goto l771 } position++ if !_rules[ruleARMRegister]() { - goto l760 + goto l771 } { - position762, tokenIndex762 := position, tokenIndex + position773, tokenIndex773 := position, tokenIndex if buffer[position] != rune(',') { - goto l762 + goto l773 } position++ { - position764, tokenIndex764 := position, tokenIndex + position775, tokenIndex775 := position, tokenIndex if !_rules[ruleWS]() { - goto l764 + goto l775 } - goto l765 - l764: - position, tokenIndex = position764, tokenIndex764 + goto l776 + l775: + position, tokenIndex = position775, tokenIndex775 } - l765: + l776: { - position766, tokenIndex766 := position, tokenIndex + position777, tokenIndex777 := position, tokenIndex { - position768, tokenIndex768 := position, tokenIndex + position779, tokenIndex779 := position, tokenIndex if buffer[position] != rune('#') { - goto l768 + goto l779 } position++ - goto l769 - l768: - position, tokenIndex = position768, tokenIndex768 + goto l780 + l779: + position, tokenIndex = position779, tokenIndex779 } - l769: + l780: if !_rules[ruleOffset]() { - goto l767 + goto l778 } { - position770, tokenIndex770 := position, tokenIndex + position781, tokenIndex781 := position, tokenIndex { - position772, tokenIndex772 := position, tokenIndex + position783, tokenIndex783 := position, tokenIndex if buffer[position] != rune('*') { - goto l773 + goto l784 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l773 + goto l784 } position++ - l774: + l785: { - position775, tokenIndex775 := position, tokenIndex + position786, tokenIndex786 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l775 + goto l786 } position++ - goto l774 - l775: - position, tokenIndex = position775, tokenIndex775 + goto l785 + l786: + position, tokenIndex = position786, tokenIndex786 } - goto l772 - l773: - position, tokenIndex = position772, tokenIndex772 + goto l783 + l784: + position, tokenIndex = position783, tokenIndex783 if buffer[position] != rune('*') { - goto l776 + goto l787 } position++ if buffer[position] != rune('(') { - goto l776 + goto l787 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l776 + goto l787 } position++ - l777: + l788: { - position778, tokenIndex778 := position, tokenIndex + position789, tokenIndex789 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l778 + goto l789 } position++ - goto l777 - l778: - position, tokenIndex = position778, tokenIndex778 + goto l788 + l789: + position, tokenIndex = position789, tokenIndex789 } if !_rules[ruleOperator]() { - goto l776 + goto l787 } if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l776 + goto l787 } position++ - l779: + l790: { - position780, tokenIndex780 := position, tokenIndex + position791, tokenIndex791 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l780 + goto l791 } position++ - goto l779 - l780: - position, tokenIndex = position780, tokenIndex780 + goto l790 + l791: + position, tokenIndex = position791, tokenIndex791 } if buffer[position] != rune(')') { - goto l776 + goto l787 } position++ - goto l772 - l776: - position, tokenIndex = position772, tokenIndex772 - l781: + goto l783 + l787: + position, tokenIndex = position783, tokenIndex783 + l792: { - position782, tokenIndex782 := position, tokenIndex + position793, tokenIndex793 := position, tokenIndex if buffer[position] != rune('+') { - goto l782 + goto l793 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l782 + goto l793 } position++ - l783: + l794: { - position784, tokenIndex784 := position, tokenIndex + position795, tokenIndex795 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l784 + goto l795 } position++ - goto l783 - l784: - position, tokenIndex = position784, tokenIndex784 + goto l794 + l795: + position, tokenIndex = position795, tokenIndex795 } - goto l781 - l782: - position, tokenIndex = position782, tokenIndex782 + goto l792 + l793: + position, tokenIndex = position793, tokenIndex793 } } - l772: - goto l771 + l783: + goto l782 - position, tokenIndex = position770, tokenIndex770 + position, tokenIndex = position781, tokenIndex781 } - l771: - goto l766 - l767: - position, tokenIndex = position766, tokenIndex766 + l782: + goto l777 + l778: + position, tokenIndex = position777, tokenIndex777 { - position786, tokenIndex786 := position, tokenIndex + position797, tokenIndex797 := position, tokenIndex if buffer[position] != rune('#') { - goto l786 + goto l797 } position++ - goto l787 - l786: - position, tokenIndex = position786, tokenIndex786 + goto l798 + l797: + position, tokenIndex = position797, tokenIndex797 } - l787: + l798: if !_rules[ruleARMGOTLow12]() { - goto l785 + goto l796 } - goto l766 - l785: - position, tokenIndex = position766, tokenIndex766 + goto l777 + l796: + position, tokenIndex = position777, tokenIndex777 { - position789, tokenIndex789 := position, tokenIndex + position800, tokenIndex800 := position, tokenIndex if buffer[position] != rune('#') { - goto l789 + goto l800 } position++ - goto l790 - l789: - position, tokenIndex = position789, tokenIndex789 + goto l801 + l800: + position, tokenIndex = position800, tokenIndex800 } - l790: + l801: if !_rules[ruleLow12BitsSymbolRef]() { - goto l788 + goto l799 } - goto l766 - l788: - position, tokenIndex = position766, tokenIndex766 + goto l777 + l799: + position, tokenIndex = position777, tokenIndex777 if !_rules[ruleARMRegister]() { - goto l762 + goto l773 } } - l766: + l777: { - position791, tokenIndex791 := position, tokenIndex + position802, tokenIndex802 := position, tokenIndex if buffer[position] != rune(',') { - goto l791 + goto l802 } position++ { - position793, tokenIndex793 := position, tokenIndex + position804, tokenIndex804 := position, tokenIndex if !_rules[ruleWS]() { - goto l793 + goto l804 } - goto l794 - l793: - position, tokenIndex = position793, tokenIndex793 + goto l805 + l804: + position, tokenIndex = position804, tokenIndex804 } - l794: + l805: if !_rules[ruleARMConstantTweak]() { - goto l791 + goto l802 } - goto l792 - l791: - position, tokenIndex = position791, tokenIndex791 + goto l803 + l802: + position, tokenIndex = position802, tokenIndex802 } - l792: - goto l763 - l762: - position, tokenIndex = position762, tokenIndex762 + l803: + goto l774 + l773: + position, tokenIndex = position773, tokenIndex773 } - l763: + l774: if buffer[position] != rune(']') { - goto l760 + goto l771 } position++ { - position795, tokenIndex795 := position, tokenIndex + position806, tokenIndex806 := position, tokenIndex if !_rules[ruleARMPostincrement]() { - goto l795 + goto l806 } - goto l796 - l795: - position, tokenIndex = position795, tokenIndex795 + goto l807 + l806: + position, tokenIndex = position806, tokenIndex806 } - l796: - add(ruleARMBaseIndexScale, position761) + l807: + add(ruleARMBaseIndexScale, position772) } return true - l760: - position, tokenIndex = position760, tokenIndex760 + l771: + position, tokenIndex = position771, tokenIndex771 return false }, /* 49 ARMGOTLow12 <- <(':' ('g' / 'G') ('o' / 'O') ('t' / 'T') '_' ('l' / 'L') ('o' / 'O') '1' '2' ':' SymbolName)> */ func() bool { - position797, tokenIndex797 := position, tokenIndex + position808, tokenIndex808 := position, tokenIndex { - position798 := position + position809 := position if buffer[position] != rune(':') { - goto l797 + goto l808 } position++ { - position799, tokenIndex799 := position, tokenIndex + position810, tokenIndex810 := position, tokenIndex if buffer[position] != rune('g') { - goto l800 + goto l811 } position++ - goto l799 - l800: - position, tokenIndex = position799, tokenIndex799 + goto l810 + l811: + position, tokenIndex = position810, tokenIndex810 if buffer[position] != rune('G') { - goto l797 + goto l808 } position++ } - l799: + l810: { - position801, tokenIndex801 := position, tokenIndex + position812, tokenIndex812 := position, tokenIndex if buffer[position] != rune('o') { - goto l802 + goto l813 } position++ - goto l801 - l802: - position, tokenIndex = position801, tokenIndex801 + goto l812 + l813: + position, tokenIndex = position812, tokenIndex812 if buffer[position] != rune('O') { - goto l797 + goto l808 } position++ } - l801: + l812: { - position803, tokenIndex803 := position, tokenIndex + position814, tokenIndex814 := position, tokenIndex if buffer[position] != rune('t') { - goto l804 + goto l815 } position++ - goto l803 - l804: - position, tokenIndex = position803, tokenIndex803 + goto l814 + l815: + position, tokenIndex = position814, tokenIndex814 if buffer[position] != rune('T') { - goto l797 + goto l808 } position++ } - l803: + l814: if buffer[position] != rune('_') { - goto l797 + goto l808 } position++ { - position805, tokenIndex805 := position, tokenIndex + position816, tokenIndex816 := position, tokenIndex if buffer[position] != rune('l') { - goto l806 + goto l817 } position++ - goto l805 - l806: - position, tokenIndex = position805, tokenIndex805 + goto l816 + l817: + position, tokenIndex = position816, tokenIndex816 if buffer[position] != rune('L') { - goto l797 + goto l808 } position++ } - l805: + l816: { - position807, tokenIndex807 := position, tokenIndex + position818, tokenIndex818 := position, tokenIndex if buffer[position] != rune('o') { - goto l808 + goto l819 } position++ - goto l807 - l808: - position, tokenIndex = position807, tokenIndex807 + goto l818 + l819: + position, tokenIndex = position818, tokenIndex818 if buffer[position] != rune('O') { - goto l797 + goto l808 } position++ } - l807: + l818: if buffer[position] != rune('1') { - goto l797 + goto l808 } position++ if buffer[position] != rune('2') { - goto l797 + goto l808 } position++ if buffer[position] != rune(':') { - goto l797 + goto l808 } position++ if !_rules[ruleSymbolName]() { - goto l797 + goto l808 } - add(ruleARMGOTLow12, position798) + add(ruleARMGOTLow12, position809) } return true - l797: - position, tokenIndex = position797, tokenIndex797 + l808: + position, tokenIndex = position808, tokenIndex808 return false }, /* 50 ARMPostincrement <- <'!'> */ func() bool { - position809, tokenIndex809 := position, tokenIndex + position820, tokenIndex820 := position, tokenIndex { - position810 := position + position821 := position if buffer[position] != rune('!') { - goto l809 + goto l820 } position++ - add(ruleARMPostincrement, position810) + add(ruleARMPostincrement, position821) } return true - l809: - position, tokenIndex = position809, tokenIndex809 + l820: + position, tokenIndex = position820, tokenIndex820 return false }, /* 51 BaseIndexScale <- <('(' RegisterOrConstant? WS? (',' WS? RegisterOrConstant WS? (',' [0-9]+)?)? ')')> */ func() bool { - position811, tokenIndex811 := position, tokenIndex + position822, tokenIndex822 := position, tokenIndex { - position812 := position + position823 := position if buffer[position] != rune('(') { - goto l811 + goto l822 } position++ { - position813, tokenIndex813 := position, tokenIndex + position824, tokenIndex824 := position, tokenIndex if !_rules[ruleRegisterOrConstant]() { - goto l813 + goto l824 } - goto l814 - l813: - position, tokenIndex = position813, tokenIndex813 + goto l825 + l824: + position, tokenIndex = position824, tokenIndex824 } - l814: + l825: { - position815, tokenIndex815 := position, tokenIndex + position826, tokenIndex826 := position, tokenIndex if !_rules[ruleWS]() { - goto l815 + goto l826 } - goto l816 - l815: - position, tokenIndex = position815, tokenIndex815 + goto l827 + l826: + position, tokenIndex = position826, tokenIndex826 } - l816: + l827: { - position817, tokenIndex817 := position, tokenIndex + position828, tokenIndex828 := position, tokenIndex if buffer[position] != rune(',') { - goto l817 + goto l828 } position++ { - position819, tokenIndex819 := position, tokenIndex + position830, tokenIndex830 := position, tokenIndex if !_rules[ruleWS]() { - goto l819 + goto l830 } - goto l820 - l819: - position, tokenIndex = position819, tokenIndex819 + goto l831 + l830: + position, tokenIndex = position830, tokenIndex830 } - l820: + l831: if !_rules[ruleRegisterOrConstant]() { - goto l817 + goto l828 } { - position821, tokenIndex821 := position, tokenIndex + position832, tokenIndex832 := position, tokenIndex if !_rules[ruleWS]() { - goto l821 + goto l832 } - goto l822 - l821: - position, tokenIndex = position821, tokenIndex821 + goto l833 + l832: + position, tokenIndex = position832, tokenIndex832 } - l822: + l833: { - position823, tokenIndex823 := position, tokenIndex + position834, tokenIndex834 := position, tokenIndex if buffer[position] != rune(',') { - goto l823 + goto l834 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l823 + goto l834 } position++ - l825: + l836: { - position826, tokenIndex826 := position, tokenIndex + position837, tokenIndex837 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l826 + goto l837 } position++ - goto l825 - l826: - position, tokenIndex = position826, tokenIndex826 + goto l836 + l837: + position, tokenIndex = position837, tokenIndex837 } - goto l824 - l823: - position, tokenIndex = position823, tokenIndex823 + goto l835 + l834: + position, tokenIndex = position834, tokenIndex834 } - l824: - goto l818 - l817: - position, tokenIndex = position817, tokenIndex817 + l835: + goto l829 + l828: + position, tokenIndex = position828, tokenIndex828 } - l818: + l829: if buffer[position] != rune(')') { - goto l811 + goto l822 } position++ - add(ruleBaseIndexScale, position812) + add(ruleBaseIndexScale, position823) } return true - l811: - position, tokenIndex = position811, tokenIndex811 + l822: + position, tokenIndex = position822, tokenIndex822 return false }, /* 52 Operator <- <('+' / '-')> */ func() bool { - position827, tokenIndex827 := position, tokenIndex + position838, tokenIndex838 := position, tokenIndex { - position828 := position + position839 := position { - position829, tokenIndex829 := position, tokenIndex + position840, tokenIndex840 := position, tokenIndex if buffer[position] != rune('+') { - goto l830 + goto l841 } position++ - goto l829 - l830: - position, tokenIndex = position829, tokenIndex829 + goto l840 + l841: + position, tokenIndex = position840, tokenIndex840 if buffer[position] != rune('-') { - goto l827 + goto l838 } position++ } - l829: - add(ruleOperator, position828) + l840: + add(ruleOperator, position839) } return true - l827: - position, tokenIndex = position827, tokenIndex827 + l838: + position, tokenIndex = position838, tokenIndex838 return false }, /* 53 OffsetOperator <- <('+' / '-' / '*')> */ func() bool { - position831, tokenIndex831 := position, tokenIndex + position842, tokenIndex842 := position, tokenIndex { - position832 := position + position843 := position { - position833, tokenIndex833 := position, tokenIndex + position844, tokenIndex844 := position, tokenIndex if buffer[position] != rune('+') { - goto l834 + goto l845 } position++ - goto l833 - l834: - position, tokenIndex = position833, tokenIndex833 + goto l844 + l845: + position, tokenIndex = position844, tokenIndex844 if buffer[position] != rune('-') { - goto l835 + goto l846 } position++ - goto l833 - l835: - position, tokenIndex = position833, tokenIndex833 + goto l844 + l846: + position, tokenIndex = position844, tokenIndex844 if buffer[position] != rune('*') { - goto l831 + goto l842 } position++ } - l833: - add(ruleOffsetOperator, position832) + l844: + add(ruleOffsetOperator, position843) } return true - l831: - position, tokenIndex = position831, tokenIndex831 + l842: + position, tokenIndex = position842, tokenIndex842 return false }, /* 54 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]+)?) / ('(' [0-9]+ WS? OffsetOperator WS? [0-9]+ ')' OffsetOperator [0-9]+ OffsetOperator [0-9]+) / ('(' [0-9]+ WS? OffsetOperator WS? [0-9]+ ')' OffsetOperator [0-9]+ !'x') / ('(' [0-9]+ WS? OffsetOperator WS? [0-9]+ ')') / ('(' [0-9]+ WS? OffsetOperator WS? [0-9]+ WS? OffsetOperator WS? [0-9]+ ')')) !([a-z] / [A-Z]))))> */ func() bool { - position836, tokenIndex836 := position, tokenIndex + position847, tokenIndex847 := position, tokenIndex { - position837 := position + position848 := position { - position838, tokenIndex838 := position, tokenIndex + position849, tokenIndex849 := position, tokenIndex if buffer[position] != rune('+') { - goto l838 + goto l849 } position++ - goto l839 - l838: - position, tokenIndex = position838, tokenIndex838 + goto l850 + l849: + position, tokenIndex = position849, tokenIndex849 } - l839: + l850: { - position840, tokenIndex840 := position, tokenIndex + position851, tokenIndex851 := position, tokenIndex if buffer[position] != rune('-') { - goto l840 + goto l851 } position++ - goto l841 - l840: - position, tokenIndex = position840, tokenIndex840 + goto l852 + l851: + position, tokenIndex = position851, tokenIndex851 } - l841: + l852: { - position842, tokenIndex842 := position, tokenIndex + position853, tokenIndex853 := position, tokenIndex if buffer[position] != rune('0') { - goto l843 + goto l854 } position++ { - position844, tokenIndex844 := position, tokenIndex + position855, tokenIndex855 := position, tokenIndex if buffer[position] != rune('b') { - goto l845 + goto l856 } position++ - goto l844 - l845: - position, tokenIndex = position844, tokenIndex844 + goto l855 + l856: + position, tokenIndex = position855, tokenIndex855 if buffer[position] != rune('B') { - goto l843 + goto l854 } position++ } - l844: + l855: { - position848, tokenIndex848 := position, tokenIndex + position859, tokenIndex859 := position, tokenIndex if buffer[position] != rune('0') { - goto l849 + goto l860 } position++ - goto l848 - l849: - position, tokenIndex = position848, tokenIndex848 + goto l859 + l860: + position, tokenIndex = position859, tokenIndex859 if buffer[position] != rune('1') { - goto l843 + goto l854 } position++ } - l848: - l846: + l859: + l857: { - position847, tokenIndex847 := position, tokenIndex + position858, tokenIndex858 := position, tokenIndex { - position850, tokenIndex850 := position, tokenIndex + position861, tokenIndex861 := position, tokenIndex if buffer[position] != rune('0') { - goto l851 + goto l862 } position++ - goto l850 - l851: - position, tokenIndex = position850, tokenIndex850 + goto l861 + l862: + position, tokenIndex = position861, tokenIndex861 if buffer[position] != rune('1') { - goto l847 + goto l858 } position++ } - l850: - goto l846 - l847: - position, tokenIndex = position847, tokenIndex847 + l861: + goto l857 + l858: + position, tokenIndex = position858, tokenIndex858 } - goto l842 - l843: - position, tokenIndex = position842, tokenIndex842 + goto l853 + l854: + position, tokenIndex = position853, tokenIndex853 if buffer[position] != rune('0') { - goto l852 + goto l863 } position++ { - position853, tokenIndex853 := position, tokenIndex + position864, tokenIndex864 := position, tokenIndex if buffer[position] != rune('x') { - goto l854 + goto l865 } position++ - goto l853 - l854: - position, tokenIndex = position853, tokenIndex853 + goto l864 + l865: + position, tokenIndex = position864, tokenIndex864 if buffer[position] != rune('X') { - goto l852 + goto l863 } position++ } - l853: + l864: { - position857, tokenIndex857 := position, tokenIndex + position868, tokenIndex868 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l858 + goto l869 } position++ - goto l857 - l858: - position, tokenIndex = position857, tokenIndex857 + goto l868 + l869: + position, tokenIndex = position868, tokenIndex868 if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l859 + goto l870 } position++ - goto l857 - l859: - position, tokenIndex = position857, tokenIndex857 + goto l868 + l870: + position, tokenIndex = position868, tokenIndex868 { - position860, tokenIndex860 := position, tokenIndex + position871, tokenIndex871 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('f') { - goto l861 + goto l872 } position++ - goto l860 - l861: - position, tokenIndex = position860, tokenIndex860 + goto l871 + l872: + position, tokenIndex = position871, tokenIndex871 if c := buffer[position]; c < rune('A') || c > rune('F') { - goto l852 + goto l863 } position++ } - l860: + l871: } - l857: - l855: + l868: + l866: { - position856, tokenIndex856 := position, tokenIndex + position867, tokenIndex867 := position, tokenIndex { - position862, tokenIndex862 := position, tokenIndex + position873, tokenIndex873 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l863 + goto l874 } position++ - goto l862 - l863: - position, tokenIndex = position862, tokenIndex862 + goto l873 + l874: + position, tokenIndex = position873, tokenIndex873 if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l864 + goto l875 } position++ - goto l862 - l864: - position, tokenIndex = position862, tokenIndex862 + goto l873 + l875: + position, tokenIndex = position873, tokenIndex873 { - position865, tokenIndex865 := position, tokenIndex + position876, tokenIndex876 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('f') { - goto l866 + goto l877 } position++ - goto l865 - l866: - position, tokenIndex = position865, tokenIndex865 + goto l876 + l877: + position, tokenIndex = position876, tokenIndex876 if c := buffer[position]; c < rune('A') || c > rune('F') { - goto l856 + goto l867 } position++ } - l865: + l876: } - l862: - goto l855 - l856: - position, tokenIndex = position856, tokenIndex856 + l873: + goto l866 + l867: + position, tokenIndex = position867, tokenIndex867 } - goto l842 - l852: - position, tokenIndex = position842, tokenIndex842 + goto l853 + l863: + position, tokenIndex = position853, tokenIndex853 { - position867, tokenIndex867 := position, tokenIndex + position878, tokenIndex878 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l868 + goto l879 } position++ - l869: + l880: { - position870, tokenIndex870 := position, tokenIndex + position881, tokenIndex881 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l870 + goto l881 } position++ - goto l869 - l870: - position, tokenIndex = position870, tokenIndex870 + goto l880 + l881: + position, tokenIndex = position881, tokenIndex881 } if !_rules[ruleWS]() { - goto l868 + goto l879 } if !_rules[ruleOffsetOperator]() { - goto l868 + goto l879 } if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l868 + goto l879 } position++ - l871: + l882: { - position872, tokenIndex872 := position, tokenIndex + position883, tokenIndex883 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l872 + goto l883 } position++ - goto l871 - l872: - position, tokenIndex = position872, tokenIndex872 + goto l882 + l883: + position, tokenIndex = position883, tokenIndex883 } - goto l867 - l868: - position, tokenIndex = position867, tokenIndex867 + goto l878 + l879: + position, tokenIndex = position878, tokenIndex878 if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l873 + goto l884 } position++ - l874: + l885: { - position875, tokenIndex875 := position, tokenIndex + position886, tokenIndex886 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l875 + goto l886 } position++ - goto l874 - l875: - position, tokenIndex = position875, tokenIndex875 + goto l885 + l886: + position, tokenIndex = position886, tokenIndex886 } { - position876, tokenIndex876 := position, tokenIndex + position887, tokenIndex887 := position, tokenIndex if !_rules[ruleOffsetOperator]() { - goto l876 + goto l887 } if buffer[position] != rune('(') { - goto l876 + goto l887 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l876 + goto l887 } position++ - l878: + l889: { - position879, tokenIndex879 := position, tokenIndex + position890, tokenIndex890 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l879 + goto l890 } position++ - goto l878 - l879: - position, tokenIndex = position879, tokenIndex879 + goto l889 + l890: + position, tokenIndex = position890, tokenIndex890 } if !_rules[ruleOffsetOperator]() { - goto l876 + goto l887 } if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l876 + goto l887 } position++ - l880: + l891: { - position881, tokenIndex881 := position, tokenIndex + position892, tokenIndex892 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l881 + goto l892 } position++ - goto l880 - l881: - position, tokenIndex = position881, tokenIndex881 + goto l891 + l892: + position, tokenIndex = position892, tokenIndex892 } if buffer[position] != rune(')') { - goto l876 + goto l887 } position++ - goto l877 - l876: - position, tokenIndex = position876, tokenIndex876 + goto l888 + l887: + position, tokenIndex = position887, tokenIndex887 } - l877: - goto l867 - l873: - position, tokenIndex = position867, tokenIndex867 + l888: + goto l878 + l884: + position, tokenIndex = position878, tokenIndex878 if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l882 + goto l893 } position++ - l883: + l894: { - position884, tokenIndex884 := position, tokenIndex + position895, tokenIndex895 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l884 + goto l895 } position++ - goto l883 - l884: - position, tokenIndex = position884, tokenIndex884 + goto l894 + l895: + position, tokenIndex = position895, tokenIndex895 } { - position885, tokenIndex885 := position, tokenIndex + position896, tokenIndex896 := position, tokenIndex if !_rules[ruleOffsetOperator]() { - goto l885 + goto l896 } if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l885 + goto l896 } position++ - l887: + l898: { - position888, tokenIndex888 := position, tokenIndex + position899, tokenIndex899 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l888 + goto l899 } position++ - goto l887 - l888: - position, tokenIndex = position888, tokenIndex888 + goto l898 + l899: + position, tokenIndex = position899, tokenIndex899 } if !_rules[ruleOffsetOperator]() { - goto l885 + goto l896 } if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l885 + goto l896 } position++ - l889: + l900: { - position890, tokenIndex890 := position, tokenIndex + position901, tokenIndex901 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l890 + goto l901 } position++ - goto l889 - l890: - position, tokenIndex = position890, tokenIndex890 + goto l900 + l901: + position, tokenIndex = position901, tokenIndex901 } - goto l886 - l885: - position, tokenIndex = position885, tokenIndex885 + goto l897 + l896: + position, tokenIndex = position896, tokenIndex896 } - l886: - goto l867 - l882: - position, tokenIndex = position867, tokenIndex867 + l897: + goto l878 + l893: + position, tokenIndex = position878, tokenIndex878 if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l891 + goto l902 } position++ - l892: + l903: { - position893, tokenIndex893 := position, tokenIndex + position904, tokenIndex904 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l893 + goto l904 } position++ - goto l892 - l893: - position, tokenIndex = position893, tokenIndex893 + goto l903 + l904: + position, tokenIndex = position904, tokenIndex904 } { - position894, tokenIndex894 := position, tokenIndex + position905, tokenIndex905 := position, tokenIndex if !_rules[ruleOffsetOperator]() { - goto l894 + goto l905 } if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l894 + goto l905 } position++ - l896: + l907: { - position897, tokenIndex897 := position, tokenIndex + position908, tokenIndex908 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l897 + goto l908 } position++ - goto l896 - l897: - position, tokenIndex = position897, tokenIndex897 + goto l907 + l908: + position, tokenIndex = position908, tokenIndex908 } - goto l895 - l894: - position, tokenIndex = position894, tokenIndex894 + goto l906 + l905: + position, tokenIndex = position905, tokenIndex905 } - l895: - goto l867 - l891: - position, tokenIndex = position867, tokenIndex867 + l906: + goto l878 + l902: + position, tokenIndex = position878, tokenIndex878 if buffer[position] != rune('(') { - goto l898 + goto l909 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l898 + goto l909 } position++ - l899: + l910: { - position900, tokenIndex900 := position, tokenIndex + position911, tokenIndex911 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l900 + goto l911 } position++ - goto l899 - l900: - position, tokenIndex = position900, tokenIndex900 + goto l910 + l911: + position, tokenIndex = position911, tokenIndex911 } { - position901, tokenIndex901 := position, tokenIndex + position912, tokenIndex912 := position, tokenIndex if !_rules[ruleWS]() { - goto l901 + goto l912 } - goto l902 - l901: - position, tokenIndex = position901, tokenIndex901 + goto l913 + l912: + position, tokenIndex = position912, tokenIndex912 } - l902: + l913: if !_rules[ruleOffsetOperator]() { - goto l898 + goto l909 } { - position903, tokenIndex903 := position, tokenIndex + position914, tokenIndex914 := position, tokenIndex if !_rules[ruleWS]() { - goto l903 + goto l914 } - goto l904 - l903: - position, tokenIndex = position903, tokenIndex903 + goto l915 + l914: + position, tokenIndex = position914, tokenIndex914 } - l904: + l915: if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l898 + goto l909 } position++ - l905: + l916: { - position906, tokenIndex906 := position, tokenIndex + position917, tokenIndex917 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l906 + goto l917 } position++ - goto l905 - l906: - position, tokenIndex = position906, tokenIndex906 + goto l916 + l917: + position, tokenIndex = position917, tokenIndex917 } if buffer[position] != rune(')') { - goto l898 + goto l909 } position++ if !_rules[ruleOffsetOperator]() { - goto l898 + goto l909 } if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l898 + goto l909 } position++ - l907: + l918: { - position908, tokenIndex908 := position, tokenIndex + position919, tokenIndex919 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l908 + goto l919 } position++ - goto l907 - l908: - position, tokenIndex = position908, tokenIndex908 + goto l918 + l919: + position, tokenIndex = position919, tokenIndex919 } if !_rules[ruleOffsetOperator]() { - goto l898 + goto l909 } if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l898 + goto l909 } position++ - l909: + l920: { - position910, tokenIndex910 := position, tokenIndex + position921, tokenIndex921 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l910 + goto l921 } position++ - goto l909 - l910: - position, tokenIndex = position910, tokenIndex910 + goto l920 + l921: + position, tokenIndex = position921, tokenIndex921 } - goto l867 - l898: - position, tokenIndex = position867, tokenIndex867 + goto l878 + l909: + position, tokenIndex = position878, tokenIndex878 if buffer[position] != rune('(') { - goto l911 + goto l922 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l911 + goto l922 } position++ - l912: + l923: { - position913, tokenIndex913 := position, tokenIndex + position924, tokenIndex924 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l913 + goto l924 } position++ - goto l912 - l913: - position, tokenIndex = position913, tokenIndex913 + goto l923 + l924: + position, tokenIndex = position924, tokenIndex924 } { - position914, tokenIndex914 := position, tokenIndex + position925, tokenIndex925 := position, tokenIndex if !_rules[ruleWS]() { - goto l914 + goto l925 } - goto l915 - l914: - position, tokenIndex = position914, tokenIndex914 + goto l926 + l925: + position, tokenIndex = position925, tokenIndex925 } - l915: + l926: if !_rules[ruleOffsetOperator]() { - goto l911 + goto l922 } { - position916, tokenIndex916 := position, tokenIndex + position927, tokenIndex927 := position, tokenIndex if !_rules[ruleWS]() { - goto l916 + goto l927 } - goto l917 - l916: - position, tokenIndex = position916, tokenIndex916 + goto l928 + l927: + position, tokenIndex = position927, tokenIndex927 } - l917: + l928: if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l911 + goto l922 } position++ - l918: + l929: { - position919, tokenIndex919 := position, tokenIndex + position930, tokenIndex930 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l919 + goto l930 } position++ - goto l918 - l919: - position, tokenIndex = position919, tokenIndex919 + goto l929 + l930: + position, tokenIndex = position930, tokenIndex930 } if buffer[position] != rune(')') { - goto l911 + goto l922 } position++ if !_rules[ruleOffsetOperator]() { - goto l911 + goto l922 } if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l911 + goto l922 } position++ - l920: + l931: { - position921, tokenIndex921 := position, tokenIndex + position932, tokenIndex932 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l921 + goto l932 } position++ - goto l920 - l921: - position, tokenIndex = position921, tokenIndex921 + goto l931 + l932: + position, tokenIndex = position932, tokenIndex932 } { - position922, tokenIndex922 := position, tokenIndex + position933, tokenIndex933 := position, tokenIndex if buffer[position] != rune('x') { - goto l922 + goto l933 } position++ - goto l911 - l922: - position, tokenIndex = position922, tokenIndex922 + goto l922 + l933: + position, tokenIndex = position933, tokenIndex933 } - goto l867 - l911: - position, tokenIndex = position867, tokenIndex867 + goto l878 + l922: + position, tokenIndex = position878, tokenIndex878 if buffer[position] != rune('(') { - goto l923 + goto l934 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l923 + goto l934 } position++ - l924: + l935: { - position925, tokenIndex925 := position, tokenIndex + position936, tokenIndex936 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l925 + goto l936 } position++ - goto l924 - l925: - position, tokenIndex = position925, tokenIndex925 + goto l935 + l936: + position, tokenIndex = position936, tokenIndex936 } { - position926, tokenIndex926 := position, tokenIndex + position937, tokenIndex937 := position, tokenIndex if !_rules[ruleWS]() { - goto l926 + goto l937 } - goto l927 - l926: - position, tokenIndex = position926, tokenIndex926 + goto l938 + l937: + position, tokenIndex = position937, tokenIndex937 } - l927: + l938: if !_rules[ruleOffsetOperator]() { - goto l923 + goto l934 } { - position928, tokenIndex928 := position, tokenIndex + position939, tokenIndex939 := position, tokenIndex if !_rules[ruleWS]() { - goto l928 + goto l939 } - goto l929 - l928: - position, tokenIndex = position928, tokenIndex928 + goto l940 + l939: + position, tokenIndex = position939, tokenIndex939 } - l929: + l940: if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l923 + goto l934 } position++ - l930: + l941: { - position931, tokenIndex931 := position, tokenIndex + position942, tokenIndex942 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l931 + goto l942 } position++ - goto l930 - l931: - position, tokenIndex = position931, tokenIndex931 + goto l941 + l942: + position, tokenIndex = position942, tokenIndex942 } if buffer[position] != rune(')') { - goto l923 + goto l934 } position++ - goto l867 - l923: - position, tokenIndex = position867, tokenIndex867 + goto l878 + l934: + position, tokenIndex = position878, tokenIndex878 if buffer[position] != rune('(') { - goto l836 + goto l847 } position++ if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l836 + goto l847 } position++ - l932: + l943: { - position933, tokenIndex933 := position, tokenIndex + position944, tokenIndex944 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l933 + goto l944 } position++ - goto l932 - l933: - position, tokenIndex = position933, tokenIndex933 + goto l943 + l944: + position, tokenIndex = position944, tokenIndex944 } { - position934, tokenIndex934 := position, tokenIndex + position945, tokenIndex945 := position, tokenIndex if !_rules[ruleWS]() { - goto l934 + goto l945 } - goto l935 - l934: - position, tokenIndex = position934, tokenIndex934 + goto l946 + l945: + position, tokenIndex = position945, tokenIndex945 } - l935: + l946: if !_rules[ruleOffsetOperator]() { - goto l836 + goto l847 } { - position936, tokenIndex936 := position, tokenIndex + position947, tokenIndex947 := position, tokenIndex if !_rules[ruleWS]() { - goto l936 + goto l947 } - goto l937 - l936: - position, tokenIndex = position936, tokenIndex936 + goto l948 + l947: + position, tokenIndex = position947, tokenIndex947 } - l937: + l948: if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l836 + goto l847 } position++ - l938: + l949: { - position939, tokenIndex939 := position, tokenIndex + position950, tokenIndex950 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l939 + goto l950 } position++ - goto l938 - l939: - position, tokenIndex = position939, tokenIndex939 + goto l949 + l950: + position, tokenIndex = position950, tokenIndex950 } { - position940, tokenIndex940 := position, tokenIndex + position951, tokenIndex951 := position, tokenIndex if !_rules[ruleWS]() { - goto l940 + goto l951 } - goto l941 - l940: - position, tokenIndex = position940, tokenIndex940 + goto l952 + l951: + position, tokenIndex = position951, tokenIndex951 } - l941: + l952: if !_rules[ruleOffsetOperator]() { - goto l836 + goto l847 } { - position942, tokenIndex942 := position, tokenIndex + position953, tokenIndex953 := position, tokenIndex if !_rules[ruleWS]() { - goto l942 + goto l953 } - goto l943 - l942: - position, tokenIndex = position942, tokenIndex942 + goto l954 + l953: + position, tokenIndex = position953, tokenIndex953 } - l943: + l954: if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l836 + goto l847 } position++ - l944: + l955: { - position945, tokenIndex945 := position, tokenIndex + position956, tokenIndex956 := position, tokenIndex if c := buffer[position]; c < rune('0') || c > rune('9') { - goto l945 + goto l956 } position++ - goto l944 - l945: - position, tokenIndex = position945, tokenIndex945 + goto l955 + l956: + position, tokenIndex = position956, tokenIndex956 } if buffer[position] != rune(')') { - goto l836 + goto l847 } position++ } - l867: + l878: { - position946, tokenIndex946 := position, tokenIndex + position957, tokenIndex957 := position, tokenIndex { - position947, tokenIndex947 := position, tokenIndex + position958, tokenIndex958 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { - goto l948 + goto l959 } position++ - goto l947 - l948: - position, tokenIndex = position947, tokenIndex947 + goto l958 + l959: + position, tokenIndex = position958, tokenIndex958 if c := buffer[position]; c < rune('A') || c > rune('Z') { - goto l946 + goto l957 } position++ } - l947: - goto l836 - l946: - position, tokenIndex = position946, tokenIndex946 + l958: + goto l847 + l957: + position, tokenIndex = position957, tokenIndex957 } } - l842: - add(ruleOffset, position837) + l853: + add(ruleOffset, position848) } return true - l836: - position, tokenIndex = position836, tokenIndex836 + l847: + position, tokenIndex = position847, tokenIndex847 return false }, /* 55 Section <- <([a-z] / [A-Z] / '@')+> */ func() bool { - position949, tokenIndex949 := position, tokenIndex + position960, tokenIndex960 := position, tokenIndex { - position950 := position + position961 := position { - position953, tokenIndex953 := position, tokenIndex + position964, tokenIndex964 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { - goto l954 + goto l965 } position++ - goto l953 - l954: - position, tokenIndex = position953, tokenIndex953 + goto l964 + l965: + position, tokenIndex = position964, tokenIndex964 if c := buffer[position]; c < rune('A') || c > rune('Z') { - goto l955 + goto l966 } position++ - goto l953 - l955: - position, tokenIndex = position953, tokenIndex953 + goto l964 + l966: + position, tokenIndex = position964, tokenIndex964 if buffer[position] != rune('@') { - goto l949 + goto l960 } position++ } - l953: - l951: + l964: + l962: { - position952, tokenIndex952 := position, tokenIndex + position963, tokenIndex963 := position, tokenIndex { - position956, tokenIndex956 := position, tokenIndex + position967, tokenIndex967 := position, tokenIndex if c := buffer[position]; c < rune('a') || c > rune('z') { - goto l957 + goto l968 } position++ - goto l956 - l957: - position, tokenIndex = position956, tokenIndex956 + goto l967 + l968: + position, tokenIndex = position967, tokenIndex967 if c := buffer[position]; c < rune('A') || c > rune('Z') { - goto l958 + goto l969 } position++ - goto l956 - l958: - position, tokenIndex = position956, tokenIndex956 + goto l967 + l969: + position, tokenIndex = position967, tokenIndex967 if buffer[position] != rune('@') { - goto l952 + goto l963 } position++ } - l956: - goto l951 - l952: - position, tokenIndex = position952, tokenIndex952 + l967: + goto l962 + l963: + position, tokenIndex = position963, tokenIndex963 } - add(ruleSection, position950) + add(ruleSection, position961) } return true - l949: - position, tokenIndex = position949, tokenIndex949 + l960: + position, tokenIndex = position960, tokenIndex960 return false }, /* 56 SegmentRegister <- <('%' ([c-g] / 's') ('s' ':'))> */ func() bool { - position959, tokenIndex959 := position, tokenIndex + position970, tokenIndex970 := position, tokenIndex { - position960 := position + position971 := position if buffer[position] != rune('%') { - goto l959 + goto l970 } position++ { - position961, tokenIndex961 := position, tokenIndex + position972, tokenIndex972 := position, tokenIndex if c := buffer[position]; c < rune('c') || c > rune('g') { - goto l962 + goto l973 } position++ - goto l961 - l962: - position, tokenIndex = position961, tokenIndex961 + goto l972 + l973: + position, tokenIndex = position972, tokenIndex972 if buffer[position] != rune('s') { - goto l959 + goto l970 } position++ } - l961: + l972: if buffer[position] != rune('s') { - goto l959 + goto l970 } position++ if buffer[position] != rune(':') { - goto l959 + goto l970 } position++ - add(ruleSegmentRegister, position960) + add(ruleSegmentRegister, position971) } return true - l959: - position, tokenIndex = position959, tokenIndex959 + l970: + position, tokenIndex = position970, tokenIndex970 return false }, }