commit 6673a24701eb6e7e559775dd833e71a7760adbf3 Author: sevki Date: Fri May 24 12:15:04 2024 +0100 initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..05ff2e4 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +book +target diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..c3125c5 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,2281 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "addr2line" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "ahash" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" +dependencies = [ + "cfg-if", + "once_cell", + "version_check", + "zerocopy", +] + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "allocator-api2" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" + +[[package]] +name = "anyhow" +version = "1.0.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25bdb32cbbdce2b519a9cd7df3a678443100e265d5e25ca763b7572a5104f5f3" + +[[package]] +name = "arc-swap" +version = "1.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457" + +[[package]] +name = "arrayvec" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" + +[[package]] +name = "ascii-canvas" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8824ecca2e851cec16968d54a01dd372ef8f95b244fb84b84e70128be347c3c6" +dependencies = [ + "term", +] + +[[package]] +name = "autocfg" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" + +[[package]] +name = "backtrace" +version = "0.3.71" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d" +dependencies = [ + "addr2line", + "cc", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", + "serde", +] + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "base64-simd" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "781dd20c3aff0bd194fe7d2a977dd92f21c173891f3a03b677359e5fa457e5d5" +dependencies = [ + "simd-abstraction", +] + +[[package]] +name = "binary-merge" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597bb81c80a54b6a4381b23faba8d7774b144c94cbd1d6fe3f1329bd776554ab" + +[[package]] +name = "bit-set" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" + +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty", + "radium", + "tap", + "wyz", +] + +[[package]] +name = "brownstone" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5839ee4f953e811bfdcf223f509cb2c6a3e1447959b0bff459405575bc17f22" +dependencies = [ + "arrayvec", +] + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" + +[[package]] +name = "cc" +version = "1.0.97" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "099a5357d84c4c61eb35fc8eafa9a79a902c2f76911e5747ced4e032edd8d9b4" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "console" +version = "0.15.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb" +dependencies = [ + "encode_unicode", + "lazy_static", + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "core2" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "239fa3ae9b63c2dc74bd3fa852d4792b8b305ae64eeede946265b6af62f1fff3" +dependencies = [ + "memchr", +] + +[[package]] +name = "cpp_demangle" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e8227005286ec39567949b33df9896bcadfa6051bccca2488129f108ca23119" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crc16" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "338089f42c427b86394a5ee60ff321da23a5c89c9d89514c829687b26359fcff" + +[[package]] +name = "crc32fast" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3855a8a784b474f333699ef2bbca9db2c4a1f6d9088a90a2d25b1eb53111eaa" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1137cd7e7fc0fb5d3c5a8678be38ec56e819125d8d7907411fe24ccb943faca8" +dependencies = [ + "crossbeam-channel", + "crossbeam-deque", + "crossbeam-epoch", + "crossbeam-queue", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab3db02a9c5b5121e1e42fbdb1aeb65f5e02624cc58c43f2884c6ccac0b82f95" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-queue" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df0346b5d5e76ac2fe4e327c5fd1118d6be7c51dfb18f9b7922923f287471e35" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" + +[[package]] +name = "crunchy" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" + +[[package]] +name = "darling" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d706e75d87e35569db781a9b5e2416cff1236a47ed380831f959382ccd5f858" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0c960ae2da4de88a91b2d920c2a7233b400bc33cb28453a2987822d8392519b" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 1.0.109", +] + +[[package]] +name = "darling_macro" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b5a2f4ac4969822c62224815d069952656cadc7084fdca9751e6d959189b72" +dependencies = [ + "darling_core", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "dashmap" +version = "5.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" +dependencies = [ + "cfg-if", + "hashbrown", + "lock_api", + "once_cell", + "parking_lot_core", +] + +[[package]] +name = "data-encoding" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" + +[[package]] +name = "debugid" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef552e6f588e446098f6ba40d89ac146c8c7b64aade83c051ee00bb5d2bc18d" +dependencies = [ + "serde", + "uuid", +] + +[[package]] +name = "deranged" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +dependencies = [ + "powerfmt", +] + +[[package]] +name = "dirs-next" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" +dependencies = [ + "cfg-if", + "dirs-sys-next", +] + +[[package]] +name = "dirs-sys-next" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" +dependencies = [ + "libc", + "redox_users", + "winapi", +] + +[[package]] +name = "dmsort" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0bc8fbe9441c17c9f46f75dfe27fa1ddb6c68a461ccaed0481419219d4f10d3" + +[[package]] +name = "either" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a47c1c47d2f5964e29c61246e81db715514cd532db6b5116a25ea3c03d6780a2" + +[[package]] +name = "elementtree" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3efd4742acf458718a6456e0adf0b4d734d6b783e452bbf1ac36bf31f4085cb3" +dependencies = [ + "string_cache", +] + +[[package]] +name = "elsa" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d98e71ae4df57d214182a2e5cb90230c0192c6ddfcaa05c36453d46a54713e10" +dependencies = [ + "stable_deref_trait", +] + +[[package]] +name = "ena" +version = "0.14.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d248bdd43ce613d87415282f69b9bb99d947d290b10962dd6c56233312c2ad5" +dependencies = [ + "log", +] + +[[package]] +name = "encode_unicode" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" + +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "errno" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "eyre" +version = "0.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cd915d99f24784cdc19fd37ef22b97e3ff0ae756c7e492e9fbfe897d61e2aec" +dependencies = [ + "indenter", + "once_cell", +] + +[[package]] +name = "fallible-iterator" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" + +[[package]] +name = "fallible-iterator" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649" + +[[package]] +name = "fastrand" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" + +[[package]] +name = "fastvlq" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91264802066db11aa1bb46c294231afd8765d078ea3200986b444fd223539eaf" +dependencies = [ + "core2", +] + +[[package]] +name = "fixedbitset" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" + +[[package]] +name = "flate2" +version = "1.0.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "form_urlencoded" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + +[[package]] +name = "futures" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" + +[[package]] +name = "futures-executor" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" + +[[package]] +name = "futures-macro" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.63", +] + +[[package]] +name = "futures-sink" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" + +[[package]] +name = "futures-task" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" + +[[package]] +name = "futures-util" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "getrandom" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "gimli" +version = "0.28.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" +dependencies = [ + "fallible-iterator 0.3.0", + "stable_deref_trait", +] + +[[package]] +name = "goblin" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f27c1b4369c2cd341b5de549380158b105a04c331be5db9110eef7b6d2742134" +dependencies = [ + "log", + "plain", + "scroll", +] + +[[package]] +name = "hashbrown" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +dependencies = [ + "ahash", + "allocator-api2", +] + +[[package]] +name = "hashlink" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8094feaf31ff591f651a2664fb9cfd92bba7a60ce3197265e9482ebe753c8f7" +dependencies = [ + "hashbrown", +] + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "hermit-abi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "if_chain" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb56e1aa765b4b4f3aadfab769793b7087bb03a4ea4920644a6d238e2df5b9ed" + +[[package]] +name = "indent_write" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cfe9645a18782869361d9c8732246be7b410ad4e919d3609ebabdac00ba12c3" + +[[package]] +name = "indenter" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683" + +[[package]] +name = "indexmap" +version = "2.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" +dependencies = [ + "equivalent", + "hashbrown", +] + +[[package]] +name = "inplace-vec-builder" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf64c2edc8226891a71f127587a2861b132d2b942310843814d5001d99a1d307" +dependencies = [ + "smallvec", +] + +[[package]] +name = "insta" +version = "1.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "810ae6042d48e2c9e9215043563a58a80b877bc863228a74cf10c49d4620a6f5" +dependencies = [ + "console", + "lazy_static", + "linked-hash-map", + "similar", +] + +[[package]] +name = "is-terminal" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f23ff5ef2b80d608d61efee834934d862cd92461afc0560dedf493e4c033738b" +dependencies = [ + "hermit-abi", + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "itertools" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" + +[[package]] +name = "joinery" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72167d68f5fce3b8655487b8038691a3c9984ee769590f93f2a631f4ad64e4f5" + +[[package]] +name = "lalrpop" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55cb077ad656299f160924eb2912aa147d7339ea7d69e1b5517326fdcec3c1ca" +dependencies = [ + "ascii-canvas", + "bit-set", + "ena", + "itertools", + "lalrpop-util", + "petgraph", + "pico-args", + "regex", + "regex-syntax", + "string_cache", + "term", + "tiny-keccak", + "unicode-xid", + "walkdir", +] + +[[package]] +name = "lalrpop-util" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "507460a910eb7b32ee961886ff48539633b788a36b65692b95f225b844c82553" +dependencies = [ + "regex-automata", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "leb128" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67" + +[[package]] +name = "libc" +version = "0.2.154" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae743338b92ff9146ce83992f766a31066a91a8c84a45e0e9f21e7cf6de6d346" + +[[package]] +name = "libm" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" + +[[package]] +name = "libredox" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" +dependencies = [ + "bitflags 2.5.0", + "libc", +] + +[[package]] +name = "libsrc" +version = "0.1.0" +dependencies = [ + "anyhow", + "bitflags 2.5.0", + "insta", + "lalrpop", + "lalrpop-util", + "okstd", + "phf_codegen", + "proptest", + "salsa-2022", + "salsa-2022-macros", + "stringzilla", + "syn 2.0.63", + "tiny-keccak", +] + +[[package]] +name = "linked-hash-map" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" + +[[package]] +name = "linux-raw-sys" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" + +[[package]] +name = "lock_api" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" + +[[package]] +name = "maybe-owned" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4facc753ae494aeb6e3c22f839b158aebd4f9270f55cd3c79906c45476c47ab4" + +[[package]] +name = "memchr" +version = "2.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" + +[[package]] +name = "memmap2" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe751422e4a8caa417e13c3ea66452215d7d63e19e604f4980461212f3ae1322" +dependencies = [ + "libc", +] + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "miniz_oxide" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" +dependencies = [ + "adler", +] + +[[package]] +name = "mio" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" +dependencies = [ + "libc", + "wasi", + "windows-sys 0.48.0", +] + +[[package]] +name = "msvc-demangler" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfb67c6dd0fa9b00619c41c5700b6f92d5f418be49b45ddb9970fbd4569df3c8" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "new_debug_unreachable" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "nom-supreme" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bd3ae6c901f1959588759ff51c95d24b491ecb9ff91aa9c2ef4acc5b1dcab27" +dependencies = [ + "brownstone", + "indent_write", + "joinery", + "memchr", + "nom", +] + +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", + "libm", +] + +[[package]] +name = "num_cpus" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "object" +version = "0.32.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" +dependencies = [ + "memchr", +] + +[[package]] +name = "ok_macros" +version = "0.1.0" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "slog", + "syn 2.0.63", +] + +[[package]] +name = "okstd" +version = "0.1.0" +dependencies = [ + "anyhow", + "backtrace", + "base64", + "crc16", + "fastvlq", + "futures", + "hex", + "num_cpus", + "ok_macros", + "rustc-demangle", + "serde", + "serde_json", + "slog", + "slog-scope", + "slog-term", + "sourcemap", + "symbolic", + "termcolor", + "tokio", + "url", +] + +[[package]] +name = "once_cell" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" + +[[package]] +name = "outref" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f222829ae9293e33a9f5e9f440c6760a3d450a64affe1846486b140db81c1f4" + +[[package]] +name = "parking_lot" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e4af0ca4f6caed20e900d564c242b8e5d4903fdacf31d3daf527b66fe6f42fb" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-targets 0.52.5", +] + +[[package]] +name = "pdb" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82040a392923abe6279c00ab4aff62d5250d1c8555dc780e4b02783a7aa74863" +dependencies = [ + "fallible-iterator 0.2.0", + "scroll", + "uuid", +] + +[[package]] +name = "pdb-addr2line" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4e89a9f2f40b2389ba6da0814c8044bf942bece03dffa1514f84e3b525f4f9a" +dependencies = [ + "bitflags 1.3.2", + "elsa", + "maybe-owned", + "pdb", + "range-collections", + "thiserror", +] + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "petgraph" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" +dependencies = [ + "fixedbitset", + "indexmap", +] + +[[package]] +name = "phf_codegen" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fb1c3a8bc4dd4e5cfce29b44ffc14bedd2ee294559a294e2a4d4c9e9a6a13cd" +dependencies = [ + "phf_generator", + "phf_shared", +] + +[[package]] +name = "phf_generator" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6" +dependencies = [ + "phf_shared", + "rand", +] + +[[package]] +name = "phf_shared" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" +dependencies = [ + "siphasher", +] + +[[package]] +name = "pico-args" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315" + +[[package]] +name = "pin-project-lite" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "plain" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + +[[package]] +name = "precomputed-hash" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" + +[[package]] +name = "proc-macro2" +version = "1.0.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ad3d49ab951a01fbaafe34f2ec74122942fe18a3f9814c3268f1bb72042131b" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "proptest" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31b476131c3c86cb68032fdc5cb6d5a1045e3e42d96b69fa599fd77701e1f5bf" +dependencies = [ + "bit-set", + "bit-vec", + "bitflags 2.5.0", + "lazy_static", + "num-traits", + "rand", + "rand_chacha", + "rand_xorshift", + "regex-syntax", + "rusty-fork", + "tempfile", + "unarray", +] + +[[package]] +name = "quick-error" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" + +[[package]] +name = "quote" +version = "1.0.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] + +[[package]] +name = "rand_xorshift" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" +dependencies = [ + "rand_core", +] + +[[package]] +name = "range-collections" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61fdfd79629e2b44a1d34b4d227957174cb858e6b86ee45fad114edbcfc903ab" +dependencies = [ + "binary-merge", + "inplace-vec-builder", + "smallvec", +] + +[[package]] +name = "redox_syscall" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "469052894dcb553421e483e4209ee581a45100d31b4018de03e5a7ad86374a7e" +dependencies = [ + "bitflags 2.5.0", +] + +[[package]] +name = "redox_users" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" +dependencies = [ + "getrandom", + "libredox", + "thiserror", +] + +[[package]] +name = "regex" +version = "1.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" + +[[package]] +name = "rustc-demangle" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" + +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] +name = "rustc_version" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" +dependencies = [ + "semver 0.9.0", +] + +[[package]] +name = "rustix" +version = "0.38.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" +dependencies = [ + "bitflags 2.5.0", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.52.0", +] + +[[package]] +name = "rustversion" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" + +[[package]] +name = "rusty-fork" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb3dcc6e454c328bb824492db107ab7c0ae8fcffe4ad210136ef014458c1bc4f" +dependencies = [ + "fnv", + "quick-error", + "tempfile", + "wait-timeout", +] + +[[package]] +name = "ryu" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" + +[[package]] +name = "salsa-2022" +version = "0.1.0" +source = "git+https://github.com/salsa-rs/salsa.git?branch=master#05b4e3ebdcdc47730cdd359e7e97fb2470527279" +dependencies = [ + "arc-swap", + "crossbeam", + "crossbeam-utils", + "dashmap", + "hashlink", + "indexmap", + "log", + "parking_lot", + "rustc-hash", + "salsa-2022-macros", + "smallvec", +] + +[[package]] +name = "salsa-2022-macros" +version = "0.1.0" +source = "git+https://github.com/salsa-rs/salsa.git?branch=master#05b4e3ebdcdc47730cdd359e7e97fb2470527279" +dependencies = [ + "eyre", + "heck", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "scroll" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04c565b551bafbef4157586fa379538366e4385d42082f255bfd96e4fe8519da" +dependencies = [ + "scroll_derive", +] + +[[package]] +name = "scroll_derive" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1db149f81d46d2deba7cd3c50772474707729550221e69588478ebf9ada425ae" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.63", +] + +[[package]] +name = "semver" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" +dependencies = [ + "semver-parser", +] + +[[package]] +name = "semver" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" + +[[package]] +name = "semver-parser" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" + +[[package]] +name = "serde" +version = "1.0.202" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "226b61a0d411b2ba5ff6d7f73a476ac4f8bb900373459cd00fab8512828ba395" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.202" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6048858004bcff69094cd972ed40a32500f153bd3be9f716b2eed2e8217c4838" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.63", +] + +[[package]] +name = "serde_json" +version = "1.0.117" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "signal-hook-registry" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" +dependencies = [ + "libc", +] + +[[package]] +name = "simd-abstraction" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cadb29c57caadc51ff8346233b5cec1d240b68ce55cf1afc764818791876987" +dependencies = [ + "outref", +] + +[[package]] +name = "similar" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa42c91313f1d05da9b26f267f931cf178d4aba455b4c4622dd7355eb80c6640" + +[[package]] +name = "siphasher" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" + +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] + +[[package]] +name = "slog" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8347046d4ebd943127157b94d63abb990fcf729dc4e9978927fdf4ac3c998d06" + +[[package]] +name = "slog-scope" +version = "4.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f95a4b4c3274cd2869549da82b57ccc930859bdbf5bcea0424bc5f140b3c786" +dependencies = [ + "arc-swap", + "lazy_static", + "slog", +] + +[[package]] +name = "slog-term" +version = "2.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6e022d0b998abfe5c3782c1f03551a596269450ccd677ea51c56f8b214610e8" +dependencies = [ + "is-terminal", + "slog", + "term", + "thread_local", + "time", +] + +[[package]] +name = "smallvec" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" + +[[package]] +name = "socket2" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "sourcemap" +version = "8.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "208d40b9e8cad9f93613778ea295ed8f3c2b1824217c6cfc7219d3f6f45b96d4" +dependencies = [ + "base64-simd", + "bitvec", + "data-encoding", + "debugid", + "if_chain", + "rustc-hash", + "rustc_version", + "serde", + "serde_json", + "unicode-id-start", + "url", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "string_cache" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b" +dependencies = [ + "new_debug_unreachable", + "once_cell", + "parking_lot", + "phf_shared", + "precomputed-hash", + "serde", +] + +[[package]] +name = "stringzilla" +version = "3.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9a1352f8eeb0d30185b926e5199036f193e48be49731bf87f461ba0e0a46e6c" +dependencies = [ + "cc", +] + +[[package]] +name = "strsim" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6446ced80d6c486436db5c078dde11a9f73d42b57fb273121e160b84f63d894c" + +[[package]] +name = "symbolic" +version = "12.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05ec4f53c56d7ee8809c2322925d362e193bcc7bbe7e777a3304b34ea7e85a36" +dependencies = [ + "symbolic-common", + "symbolic-debuginfo", + "symbolic-demangle", + "symbolic-symcache", +] + +[[package]] +name = "symbolic-common" +version = "12.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cccfffbc6bb3bb2d3a26cd2077f4d055f6808d266f9d4d158797a4c60510dfe" +dependencies = [ + "debugid", + "memmap2", + "serde", + "stable_deref_trait", + "uuid", +] + +[[package]] +name = "symbolic-debuginfo" +version = "12.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb52777be67777947c5a159f1b6e8bfe4473d91fad7e5d4aff85ee4d3963cc04" +dependencies = [ + "debugid", + "dmsort", + "elementtree", + "elsa", + "fallible-iterator 0.3.0", + "flate2", + "gimli", + "goblin", + "lazy_static", + "nom", + "nom-supreme", + "once_cell", + "parking_lot", + "pdb-addr2line", + "regex", + "scroll", + "serde", + "serde_json", + "smallvec", + "symbolic-common", + "symbolic-ppdb", + "thiserror", + "wasmparser", + "zip", +] + +[[package]] +name = "symbolic-demangle" +version = "12.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76a99812da4020a67e76c4eb41f08c87364c14170495ff780f30dd519c221a68" +dependencies = [ + "cc", + "cpp_demangle", + "msvc-demangler", + "rustc-demangle", + "symbolic-common", +] + +[[package]] +name = "symbolic-ppdb" +version = "12.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dace84623ccc926886fc880c36e2a81af4b17f8276abc4d77dc947ca3c6c8f8c" +dependencies = [ + "flate2", + "indexmap", + "serde", + "serde_json", + "symbolic-common", + "thiserror", + "uuid", + "watto", +] + +[[package]] +name = "symbolic-symcache" +version = "12.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5bddf351855de48a9b9deb1ef1a755e228ee2902fbeb8ef255e2522afd6dae" +dependencies = [ + "indexmap", + "symbolic-common", + "symbolic-debuginfo", + "thiserror", + "tracing", + "watto", +] + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.63" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf5be731623ca1a1fb7d8be6f261a3be6d3e2337b8a1f97be944d020c8fcb704" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + +[[package]] +name = "tempfile" +version = "3.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" +dependencies = [ + "cfg-if", + "fastrand", + "rustix", + "windows-sys 0.52.0", +] + +[[package]] +name = "term" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c59df8ac95d96ff9bede18eb7300b0fda5e5d8d90960e76f8e14ae765eedbf1f" +dependencies = [ + "dirs-next", + "rustversion", + "winapi", +] + +[[package]] +name = "termcolor" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "thiserror" +version = "1.0.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "579e9083ca58dd9dcf91a9923bb9054071b9ebbd800b342194c9feb0ee89fc18" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2470041c06ec3ac1ab38d0356a6119054dedaea53e12fbefc0de730a1c08524" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.63", +] + +[[package]] +name = "thread_local" +version = "1.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" +dependencies = [ + "cfg-if", + "once_cell", +] + +[[package]] +name = "time" +version = "0.3.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" + +[[package]] +name = "time-macros" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tiny-keccak" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +dependencies = [ + "crunchy", +] + +[[package]] +name = "tinyvec" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1adbebffeca75fcfd058afa480fb6c0b81e165a0323f9c9d39c9697e37c46787" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio", + "num_cpus", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "windows-sys 0.48.0", +] + +[[package]] +name = "tokio-macros" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.63", +] + +[[package]] +name = "tracing" +version = "0.1.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +dependencies = [ + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.63", +] + +[[package]] +name = "tracing-core" +version = "0.1.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +dependencies = [ + "once_cell", +] + +[[package]] +name = "unarray" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" + +[[package]] +name = "unicode-bidi" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" + +[[package]] +name = "unicode-id-start" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8f73150333cb58412db36f2aca8f2875b013049705cc77b94ded70a1ab1f5da" + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "unicode-normalization" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-xid" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" + +[[package]] +name = "url" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", +] + +[[package]] +name = "uuid" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a183cf7feeba97b4dd1c0d46788634f6221d87fa961b305bed08c851829efcc0" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "wait-timeout" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6" +dependencies = [ + "libc", +] + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasmparser" +version = "0.118.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77f1154f1ab868e2a01d9834a805faca7bf8b50d041b4ca714d005d0dab1c50c" +dependencies = [ + "indexmap", + "semver 1.0.23", +] + +[[package]] +name = "watto" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6746b5315e417144282a047ebb82260d45c92d09bf653fa9ec975e3809be942b" +dependencies = [ + "leb128", + "thiserror", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.5", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" +dependencies = [ + "windows_aarch64_gnullvm 0.52.5", + "windows_aarch64_msvc 0.52.5", + "windows_i686_gnu 0.52.5", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.5", + "windows_x86_64_gnu 0.52.5", + "windows_x86_64_gnullvm 0.52.5", + "windows_x86_64_msvc 0.52.5", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" + +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + +[[package]] +name = "zerocopy" +version = "0.7.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae87e3fcd617500e5d106f0380cf7b77f3c6092aae37191433159dda23cfb087" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.63", +] + +[[package]] +name = "zip" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261" +dependencies = [ + "byteorder", + "crc32fast", + "crossbeam-utils", + "flate2", +] diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..f2261d6 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,31 @@ +[package] +name = "libsrc" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html +[features] +default = ["lalrpop"] + +[build-dependencies] +lalrpop = { version = "0.20.2", optional = true } +anyhow = "1.0.45" +phf_codegen = "0.10" +tiny-keccak = { version = "2", features = ["sha3"] } + + +[dependencies] +salsa = { git = "https://github.com/salsa-rs/salsa.git", branch = "master", package = "salsa-2022" } +salsa-macros = { git = "https://github.com/salsa-rs/salsa.git", branch = "master", package = "salsa-2022-macros" } +insta = "1.38.0" +lalrpop = "0.20.2" +lalrpop-util = { version = "0.20.2", features = ["lexer", "unicode"] } +okstd = { version = "0.1.0", path = "../okstd", features = [ +], default-features = false } +proptest = "1.4.0" +stringzilla = "3.8.1" +syn = "2.0.60" +bitflags = "2.5.0" +[dev-dependencies] +insta = "1.38.0" +proptest = "1.4.0" diff --git a/book.toml b/book.toml new file mode 100644 index 0000000..8d1c77e --- /dev/null +++ b/book.toml @@ -0,0 +1,17 @@ +[book] +authors = ["@sevki"] +language = "en" +multilingual = true +src = "docs" + +# additional css https://raw.githubusercontent.com/oknotokcomputer/okcss/main/ok.css +[output.html] +additional-css = ["ok.css"] +theme = "../theme" +default-theme = "dark" +git-repository-url = "https://github.com/oknotokcomputer/roar" +preferred-dark-theme = "rust" + +[preprocessor.svgbob] + +[preprocessor.alerts] diff --git a/build.rs b/build.rs new file mode 100644 index 0000000..655367e --- /dev/null +++ b/build.rs @@ -0,0 +1,100 @@ +use core::panic; +use std::fmt::Write as _; +use std::fs::File; +use std::io::{BufRead, BufReader, BufWriter, Write}; +use std::path::PathBuf; +use tiny_keccak::{Hasher, Sha3}; + +const SOURCE: &str = "src/parser/src.lalrpop"; +const TARGET: &str = "parser/src.rs"; + +fn main() -> anyhow::Result<()> { + println!("cargo:rerun-if-changed={SOURCE}"); + + try_lalrpop(SOURCE, TARGET)?; + + Ok(()) +} + +fn requires_lalrpop(source: &str, target: &str) -> bool { + let target = if let Ok(target) = File::open(target) { + target + } else { + println!("cargo:warning={TARGET} doesn't exist. regenerate."); + return true; + }; + + let sha_prefix = "// sha3: "; + let sha3_line = BufReader::with_capacity(128, target) + .lines() + .find_map(|line| { + let line = line.unwrap(); + line.starts_with(sha_prefix).then_some(line) + }) + .expect("no sha3 line?"); + let expected_sha3_str = sha3_line.strip_prefix(sha_prefix).unwrap(); + + let actual_sha3 = { + let mut hasher = Sha3::v256(); + let mut f = BufReader::new(File::open(source).unwrap()); + let mut line = String::new(); + while f.read_line(&mut line).unwrap() != 0 { + if line.ends_with('\n') { + line.pop(); + if line.ends_with('\r') { + line.pop(); + } + } + hasher.update(line.as_bytes()); + hasher.update(b"\n"); + line.clear(); + } + let mut hash = [0u8; 32]; + hasher.finalize(&mut hash); + hash + }; + let eq = sha_equal(expected_sha3_str, &actual_sha3); + if !eq { + println!("cargo:warning={TARGET} hash expected: {expected_sha3_str}"); + let mut actual_sha3_str = String::new(); + for byte in actual_sha3 { + write!(actual_sha3_str, "{byte:02x}").unwrap(); + } + println!("cargo:warning={TARGET} hash actual: {actual_sha3_str}"); + } + !eq +} + +fn try_lalrpop(source: &str, target: &str) -> anyhow::Result<()> { + if !requires_lalrpop(source, target) { + return Ok(()); + } + + #[cfg(feature = "lalrpop")] + { + lalrpop::process_root().expect("running lalrpop failed"); + + let full_path = PathBuf::from(env!("CARGO_MANIFEST_DIR")).join(SOURCE); + let path = full_path.to_str().unwrap(); + println!("cargo:rerun-if-changed={}", path); + let p = lalrpop::Configuration::new() + .generate_in_source_tree() + .process_file(path).expect("msg"); + Ok(()) + } + + #[cfg(not(feature = "lalrpop"))] + panic!("try: cargo build --manifest-path=compiler/parser/Cargo.toml --features=lalrpop"); +} + +fn sha_equal(expected_sha3_str: &str, actual_sha3: &[u8; 32]) -> bool { + if expected_sha3_str.len() != 64 { + panic!("lalrpop version? hash bug is fixed in 0.19.8"); + } + + let mut expected_sha3 = [0u8; 32]; + for (i, b) in expected_sha3.iter_mut().enumerate() { + *b = u8::from_str_radix(&expected_sha3_str[i * 2..][..2], 16).unwrap(); + } + *actual_sha3 == expected_sha3 +} diff --git a/docs/0intro.md b/docs/0intro.md new file mode 100644 index 0000000..49f03da --- /dev/null +++ b/docs/0intro.md @@ -0,0 +1,43 @@ + + + +# src Language + +`src` is a domain specific language for manipulating source code and building, progressively distiributed apps or [PDA](https://fistfulofbytes.com/progressive-distributed-apps/). + +It draws a lot of inspiration from [Effekt](https://www.effekt-lang.org/) and [Koka](https://koka-lang.github.io/koka/doc/kokaspec.html) languages. + +`src` is main aim is to provide a gradually distributed programming +environment for building software. + +It tries to achive these goals by providing a thin veneer over the operating systems `libc` or equivalent by treating the syscalls to the operating system as effects. + +Therefore the operating system becomes the [effect handler](https://effect-handlers.org/) for the execution environment. + +```src +use { host } from std + +effect Make: async + throws + execs + reads + writes { + catch() [throws] + await(f: Future) [async, throws] -> T + exec(arg0: string, args: stringvec) [Make] -> i32 +} + +struct Local { + host: host +} + +impl Make for Local { + fn catch(self) [throws] { + } + fn await(f: Future) [async, trhows] -> T { + yield() + } + fn exec(self, arg0: string, args: vec) [Vm] -> i32 { + self.host.read("jobserver").await + if self.host.exec(arg0, args) { + raise(1) + } + } +} +``` diff --git a/docs/SUMMARY.md b/docs/SUMMARY.md new file mode 100644 index 0000000..b9d57ec --- /dev/null +++ b/docs/SUMMARY.md @@ -0,0 +1,5 @@ +# Summary + +- [Intro](0intro.md) +- [Examples](examples.md) + - [Language](language/0intro.md) \ No newline at end of file diff --git a/docs/examples.md b/docs/examples.md new file mode 100644 index 0000000..abe2378 --- /dev/null +++ b/docs/examples.md @@ -0,0 +1,30 @@ +# Examples + +```src +use { native_fs, native_exec } from host +use { fs } from std + +struct Innitguv { + fs: native_fs, + exec: native_exec + current_pid: i32 +} + +impl Exec for Innitguv { + fn exec(&self, arg0: str, args: vec) [nd, exec, await] -> i32 { + let path = arg0 + let pid = self.exec.exec(path, args) + if pid == -1 { + return -1 + } + self.current_pid = pid + yield() + } +} + +impl Actor for Innitguv { + fn recv(&self, msg: Message) [recv, await] { + self.exec(msg.path, msg.args) + } +} +``` \ No newline at end of file diff --git a/docs/language/0intro.md b/docs/language/0intro.md new file mode 100644 index 0000000..388adfa --- /dev/null +++ b/docs/language/0intro.md @@ -0,0 +1,6 @@ +# Language + +## Specification +```rust,ignore +{{#include ../../src/parser/src.lalrpop}} +``` \ No newline at end of file diff --git a/docs/taocp.png b/docs/taocp.png new file mode 100644 index 0000000..e4aef3d Binary files /dev/null and b/docs/taocp.png differ diff --git a/ok.css b/ok.css new file mode 100644 index 0000000..d2fb1e5 --- /dev/null +++ b/ok.css @@ -0,0 +1,2982 @@ +/* + * okcss + * oknotok.computer 2024 + */ + +/*!***************************************************************************\ + NES.css Framework + Version: development + +\*****************************************************************************/ /*! + * Bootstrap Reboot v4.1.3 (https://getbootstrap.com/) + * Copyright 2011-2018 The Bootstrap Authors + * Copyright 2011-2018 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md) + */ +/* cyrillic-ext */ +@font-face { + font-family: "Press Start 2P"; + font-style: normal; + font-weight: 400; + src: url(https://fonts.gstatic.com/s/pressstart2p/v15/e3t4euO8T-267oIAQAu6jDQyK3nYivN04w.woff2) + format("woff2"); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, + U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: "Press Start 2P"; + font-style: normal; + font-weight: 400; + src: url(https://fonts.gstatic.com/s/pressstart2p/v15/e3t4euO8T-267oIAQAu6jDQyK3nRivN04w.woff2) + format("woff2"); + unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* greek */ +@font-face { + font-family: "Press Start 2P"; + font-style: normal; + font-weight: 400; + src: url(https://fonts.gstatic.com/s/pressstart2p/v15/e3t4euO8T-267oIAQAu6jDQyK3nWivN04w.woff2) + format("woff2"); + unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, + U+03A3-03FF; +} +/* latin-ext */ +@font-face { + font-family: "Press Start 2P"; + font-style: normal; + font-weight: 400; + src: url(https://fonts.gstatic.com/s/pressstart2p/v15/e3t4euO8T-267oIAQAu6jDQyK3nbivN04w.woff2) + format("woff2"); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, + U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Press Start 2P"; + font-style: normal; + font-weight: 400; + src: url(https://fonts.gstatic.com/s/pressstart2p/v15/e3t4euO8T-267oIAQAu6jDQyK3nVivM.woff2) + format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, + U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, + U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} + +*, +::after, +::before { + box-sizing: border-box; +} +html { + font-family: sans-serif; + line-height: 1.15; + -webkit-text-size-adjust: 100%; + -ms-overflow-style: scrollbar; + -webkit-tap-highlight-color: transparent; +} +@-ms-viewport { + width: device-width; +} +article, +aside, +figcaption, +figure, +footer, +header, +hgroup, +main, +nav, +section { + display: block; +} +body { + margin: 0; + font-family: + -apple-system, + BlinkMacSystemFont, + "Segoe UI", + Roboto, + "Helvetica Neue", + Arial, + Noto Sans, + sans-serif, + "Apple Color Emoji", + "Segoe UI Emoji", + "Segoe UI Symbol", + "Noto Color Emoji"; + /* font-size: .5rem; */ + font-weight: 400; + line-height: 1.5; + /* color: #212529; */ + text-align: left; + background-color: #fff; +} +[tabindex="-1"]:focus { + outline: 0 !important; +} +hr { + box-sizing: content-box; + height: 0; + overflow: visible; +} +h1, +h2, +h3, +h4, +h5, +h6 { + margin-top: 0; + margin-bottom: 0.5rem; +} +p { + margin-top: 0; + margin-bottom: 1rem; +} +abbr[data-original-title], +abbr[title] { + -webkit-text-decoration: underline dotted; + text-decoration: underline; + text-decoration: underline dotted; + cursor: help; + border-bottom: 0; +} +address { + margin-bottom: 1rem; + font-style: normal; + line-height: inherit; +} +dl, +ol, +ul { + margin-top: 0; + margin-bottom: 1rem; +} +ol ol, +ol ul, +ul ol, +ul ul { + margin-bottom: 0; +} +dt { + font-weight: 700; +} +dd { + margin-bottom: 0.5rem; + margin-left: 0; +} +blockquote { + margin: 0 0 1rem; +} +b, +strong { + font-weight: bolder; +} +small { + font-size: 80%; +} +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} +sub { + bottom: -0.25em; +} +sup { + top: -0.5em; +} +a { + color: #007bff; + text-decoration: none; + background-color: transparent; +} +a:hover { + color: #0056b3; + text-decoration: underline; +} +a:not([href]):not([tabindex]) { + color: inherit; + text-decoration: none; +} +a:not([href]):not([tabindex]):focus, +a:not([href]):not([tabindex]):hover { + color: inherit; + text-decoration: none; +} +a:not([href]):not([tabindex]):focus { + outline: 0; +} +code, +kbd, +pre, +samp { + font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", + "Courier New", monospace; + /* font-size: 1em; */ +} +pre { + margin-top: 0; + margin-bottom: 1rem; + overflow: auto; + -ms-overflow-style: scrollbar; +} +figure { + margin: 0 0 1rem; +} +img { + vertical-align: middle; + border-style: none; +} +svg { + overflow: hidden; + vertical-align: middle; +} +table { + border-collapse: collapse; +} +caption { + padding-top: 0.75rem; + padding-bottom: 0.75rem; + color: #6c757d; + text-align: left; + caption-side: bottom; +} +th { + text-align: inherit; +} +label { + display: inline-block; + margin-bottom: 0.5rem; +} +button { + border-radius: 0; +} +button, +input, +optgroup, +select, +textarea { + margin: 0; + font-family: inherit; + font-size: inherit; + line-height: inherit; +} +button, +input { + overflow: visible; +} +button, +select { + text-transform: none; +} +[type="button"], +[type="reset"], +[type="submit"], +button { + -webkit-appearance: button; + appearance: button; +} +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner, +button::-moz-focus-inner { + padding: 0; + border-style: none; +} +button:focus { + outline: 1px dotted; + outline: 5px auto -webkit-focus-ring-color; +} +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; + padding: 0; +} +input[type="date"], +input[type="datetime-local"], +input[type="month"], +input[type="time"] { + -webkit-appearance: listbox; + appearance: listbox; +} +textarea { + overflow: auto; + resize: vertical; +} +fieldset { + min-width: 0; + padding: 0; + margin: 0; + border: 0; +} +legend { + display: block; + width: 100%; + max-width: 100%; + padding: 0; + margin-bottom: 0.5rem; + font-size: 1.5rem; + line-height: inherit; + color: inherit; + white-space: normal; +} +progress { + vertical-align: baseline; +} +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button { + height: auto; +} +[type="search"] { + outline-offset: -2px; + -webkit-appearance: none; + appearance: none; +} +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} +::-webkit-file-upload-button { + font: inherit; + -webkit-appearance: button; +} +output { + display: inline-block; +} +summary { + display: list-item; + cursor: pointer; +} +template { + display: none; +} +[hidden] { + display: none !important; +} +body, +code, +html, +kbd, +pre, +samp { + font-family: "Press Start 2P"; +} +html { + cursor: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAABFklEQVRYR9WXURLDIAhE6/0PbSdOtUpcd1Gnpv1KGpTHBpCE1/cXq+vrMph7dGvXZTtpfW10DCA5jrH1H0Jhs5E0hnZdCR+vb5S8Nn8mQCeS9BdSalYJqMBjAGzq59xAESN7VFVUgV8AZB/dZBR7QTFDCqGquvUBVVoEtgIwpQRzmANSFHgWQKExHdIrPeuMvQNDarXe6nC/AutgV3JW+6bgqQLeV8FekRtgV+ToDKEKnACYKsfZjjkam7a0ZpYTytwmgainpC3HvwBocgKOxqRjehoR9DFKNFYtOwCGYCszobeCbl26N6yyQ6g8X/Wex/rBPsNEV6qAMaJPMynIHQCoSqS9JSMmwef51LflTgCRszU7DvAGiV6mHWfsaVUAAAAASUVORK5CYII=), + auto; +} +body { + /* font-size: 12px; */ + /* color: #212529; */ + background-color: #fff; + -webkit-font-smoothing: antialiased; +} +label { + cursor: inherit; +} +a, +button { + cursor: + url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAzElEQVRYR+2X0Q6AIAhF5f8/2jYXZkwEjNSVvVUjDpcrGgT7FUkI2D9xRfQETwNIiWO85wfINfQUEyxBG2ArsLwC0jioGt5zFcwF4OYDPi/mBYKm4t0U8ATgRm3ThFoAqkhNgWkA0jJLvaOVSs7j3qMnSgXWBMiWPXe94QqMBMBc1VZIvaTu5u5pQewq0EqNZvIEMCmxAawK0DNkay9QmfFNAJUXfgGgUkLaE7j/h8fnASkxHTz0DGIBMCnBeeM7AArpUd3mz2x3C7wADglA8BcWMZhZAAAAAElFTkSuQmCC) + 14 0, + pointer; +} +[type="button"], +[type="reset"], +[type="submit"], +button { + -webkit-appearance: none; + appearance: none; +} +input[type="checkbox"], +input[type="radio"] { + outline: 0; +} +@keyframes blink { + 0% { + opacity: 1; + } + 50% { + opacity: 0; + } +} +.nes-balloon, +.nes-balloon.is-dark, +.nes-btn, +.nes-container.is-rounded, +.nes-container.is-rounded.is-dark, +.nes-dialog.is-rounded, +.nes-dialog.is-rounded.is-dark, +.nes-input, +.nes-progress, +.nes-progress.is-rounded, +.nes-select select, +.nes-table.is-bordered, +.nes-table.is-dark.is-bordered, +.nes-textarea { + border-style: solid; + border-width: 4px; +} +.nes-pointer { + cursor: + url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAzElEQVRYR+2X0Q6AIAhF5f8/2jYXZkwEjNSVvVUjDpcrGgT7FUkI2D9xRfQETwNIiWO85wfINfQUEyxBG2ArsLwC0jioGt5zFcwF4OYDPi/mBYKm4t0U8ATgRm3ThFoAqkhNgWkA0jJLvaOVSs7j3qMnSgXWBMiWPXe94QqMBMBc1VZIvaTu5u5pQewq0EqNZvIEMCmxAawK0DNkay9QmfFNAJUXfgGgUkLaE7j/h8fnASkxHTz0DGIBMCnBeeM7AArpUd3mz2x3C7wADglA8BcWMZhZAAAAAElFTkSuQmCC) + 14 0, + pointer; +} +.nes-avatar { + width: 32px; + height: 32px; +} +.nes-avatar.is-rounded { + border-radius: 50px; +} +.nes-avatar.is-small { + width: 16px; + height: 16px; +} +.nes-avatar.is-small.is-rounded { + border-radius: 50px; +} +.nes-avatar.is-medium { + width: 48px; + height: 48px; +} +.nes-avatar.is-medium.is-rounded { + border-radius: 50px; +} +.nes-avatar.is-large { + width: 64px; + height: 64px; +} +.nes-avatar.is-large.is-rounded { + border-radius: 50px; +} +.nes-badge { + position: relative; + display: inline-block; + width: 10.5em; + height: 1.875em; + margin: 0.5em; + font-size: 0.9em; + white-space: nowrap; + vertical-align: top; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.nes-badge.is-splited span.is-dark:first-child { + position: absolute; + top: 0; + width: 50%; + color: #fff; + text-align: center; + background-color: #212529; + left: 0; + box-shadow: + 0 0.5em #212529, + 0 -0.5em #212529, + 0 0 #212529, + -0.5em 0 #212529; +} +.nes-badge.is-splited span.is-dark:last-child { + position: absolute; + top: 0; + width: 50%; + color: #fff; + text-align: center; + background-color: #212529; + right: 0; + box-shadow: + 0 0.5em #212529, + 0 -0.5em #212529, + 0.5em 0 #212529, + 0 0 #212529; +} +.nes-badge.is-icon { + width: 5.25em; +} +.nes-badge.is-icon span.is-dark:first-child { + display: flex; + align-items: center; + justify-content: center; + width: 2.7em; + font-size: 0.5em; + color: #fff; + text-align: center; + background-color: #212529; + position: absolute; + top: -2.8em; + left: -2.7em; + height: 2.7em; +} +.nes-badge.is-icon span.is-dark:last-child { + display: inline-block; + align-items: center; + justify-content: center; + width: 6em; + font-size: 0.88em; + color: #fff; + text-align: center; + background-color: #212529; + box-shadow: + 0 0.5em #212529, + 0 -0.5em #212529, + 0.5em 0 #212529, + -0.5em 0 #212529; +} +.nes-badge span.is-dark:first-child { + position: absolute; + top: 0; + width: 100%; + color: #fff; + text-align: center; + background-color: #212529; + box-shadow: + 0 0.5em #212529, + 0 -0.5em #212529, + 0.5em 0 #212529, + -0.5em 0 #212529; +} +.nes-badge.is-splited span.is-primary:first-child { + position: absolute; + top: 0; + width: 50%; + color: #fff; + text-align: center; + background-color: #209cee; + left: 0; + box-shadow: + 0 0.5em #209cee, + 0 -0.5em #209cee, + 0 0 #209cee, + -0.5em 0 #209cee; +} +.nes-badge.is-splited span.is-primary:last-child { + position: absolute; + top: 0; + width: 50%; + color: #fff; + text-align: center; + background-color: #209cee; + right: 0; + box-shadow: + 0 0.5em #209cee, + 0 -0.5em #209cee, + 0.5em 0 #209cee, + 0 0 #209cee; +} +.nes-badge.is-icon { + width: 5.25em; +} +.nes-badge.is-icon span.is-primary:first-child { + display: flex; + align-items: center; + justify-content: center; + width: 2.7em; + font-size: 0.5em; + color: #fff; + text-align: center; + background-color: #209cee; + position: absolute; + top: -2.8em; + left: -2.7em; + height: 2.7em; +} +.nes-badge.is-icon span.is-primary:last-child { + display: inline-block; + align-items: center; + justify-content: center; + width: 6em; + font-size: 0.88em; + color: #fff; + text-align: center; + background-color: #209cee; + box-shadow: + 0 0.5em #209cee, + 0 -0.5em #209cee, + 0.5em 0 #209cee, + -0.5em 0 #209cee; +} +.nes-badge span.is-primary:first-child { + position: absolute; + top: 0; + width: 100%; + color: #fff; + text-align: center; + background-color: #209cee; + box-shadow: + 0 0.5em #209cee, + 0 -0.5em #209cee, + 0.5em 0 #209cee, + -0.5em 0 #209cee; +} +.nes-badge.is-splited span.is-success:first-child { + position: absolute; + top: 0; + width: 50%; + color: #fff; + text-align: center; + background-color: #92cc41; + left: 0; + box-shadow: + 0 0.5em #92cc41, + 0 -0.5em #92cc41, + 0 0 #92cc41, + -0.5em 0 #92cc41; +} +.nes-badge.is-splited span.is-success:last-child { + position: absolute; + top: 0; + width: 50%; + color: #fff; + text-align: center; + background-color: #92cc41; + right: 0; + box-shadow: + 0 0.5em #92cc41, + 0 -0.5em #92cc41, + 0.5em 0 #92cc41, + 0 0 #92cc41; +} +.nes-badge.is-icon { + width: 5.25em; +} +.nes-badge.is-icon span.is-success:first-child { + display: flex; + align-items: center; + justify-content: center; + width: 2.7em; + font-size: 0.5em; + color: #fff; + text-align: center; + background-color: #92cc41; + position: absolute; + top: -2.8em; + left: -2.7em; + height: 2.7em; +} +.nes-badge.is-icon span.is-success:last-child { + display: inline-block; + align-items: center; + justify-content: center; + width: 6em; + font-size: 0.88em; + color: #fff; + text-align: center; + background-color: #92cc41; + box-shadow: + 0 0.5em #92cc41, + 0 -0.5em #92cc41, + 0.5em 0 #92cc41, + -0.5em 0 #92cc41; +} +.nes-badge span.is-success:first-child { + position: absolute; + top: 0; + width: 100%; + color: #fff; + text-align: center; + background-color: #92cc41; + box-shadow: + 0 0.5em #92cc41, + 0 -0.5em #92cc41, + 0.5em 0 #92cc41, + -0.5em 0 #92cc41; +} +.nes-badge.is-splited span.is-warning:first-child { + position: absolute; + top: 0; + width: 50%; + color: #212529; + text-align: center; + background-color: #f7d51d; + left: 0; + box-shadow: + 0 0.5em #f7d51d, + 0 -0.5em #f7d51d, + 0 0 #f7d51d, + -0.5em 0 #f7d51d; +} +.nes-badge.is-splited span.is-warning:last-child { + position: absolute; + top: 0; + width: 50%; + color: #212529; + text-align: center; + background-color: #f7d51d; + right: 0; + box-shadow: + 0 0.5em #f7d51d, + 0 -0.5em #f7d51d, + 0.5em 0 #f7d51d, + 0 0 #f7d51d; +} +.nes-badge.is-icon { + width: 5.25em; +} +.nes-badge.is-icon span.is-warning:first-child { + display: flex; + align-items: center; + justify-content: center; + width: 2.7em; + font-size: 0.5em; + color: #212529; + text-align: center; + background-color: #f7d51d; + position: absolute; + top: -2.8em; + left: -2.7em; + height: 2.7em; +} +.nes-badge.is-icon span.is-warning:last-child { + display: inline-block; + align-items: center; + justify-content: center; + width: 6em; + font-size: 0.88em; + color: #212529; + text-align: center; + background-color: #f7d51d; + box-shadow: + 0 0.5em #f7d51d, + 0 -0.5em #f7d51d, + 0.5em 0 #f7d51d, + -0.5em 0 #f7d51d; +} +.nes-badge span.is-warning:first-child { + position: absolute; + top: 0; + width: 100%; + color: #212529; + text-align: center; + background-color: #f7d51d; + box-shadow: + 0 0.5em #f7d51d, + 0 -0.5em #f7d51d, + 0.5em 0 #f7d51d, + -0.5em 0 #f7d51d; +} +.nes-badge.is-splited span.is-error:first-child { + position: absolute; + top: 0; + width: 50%; + color: #fff; + text-align: center; + background-color: #e76e55; + left: 0; + box-shadow: + 0 0.5em #e76e55, + 0 -0.5em #e76e55, + 0 0 #e76e55, + -0.5em 0 #e76e55; +} +.nes-badge.is-splited span.is-error:last-child { + position: absolute; + top: 0; + width: 50%; + color: #fff; + text-align: center; + background-color: #e76e55; + right: 0; + box-shadow: + 0 0.5em #e76e55, + 0 -0.5em #e76e55, + 0.5em 0 #e76e55, + 0 0 #e76e55; +} +.nes-badge.is-icon { + width: 5.25em; +} +.nes-badge.is-icon span.is-error:first-child { + display: flex; + align-items: center; + justify-content: center; + width: 2.7em; + font-size: 0.5em; + color: #fff; + text-align: center; + background-color: #e76e55; + position: absolute; + top: -2.8em; + left: -2.7em; + height: 2.7em; +} +.nes-badge.is-icon span.is-error:last-child { + display: inline-block; + align-items: center; + justify-content: center; + width: 6em; + font-size: 0.88em; + color: #fff; + text-align: center; + background-color: #e76e55; + box-shadow: + 0 0.5em #e76e55, + 0 -0.5em #e76e55, + 0.5em 0 #e76e55, + -0.5em 0 #e76e55; +} +.nes-badge span.is-error:first-child { + position: absolute; + top: 0; + width: 100%; + color: #fff; + text-align: center; + background-color: #e76e55; + box-shadow: + 0 0.5em #e76e55, + 0 -0.5em #e76e55, + 0.5em 0 #e76e55, + -0.5em 0 #e76e55; +} +.nes-balloon { + border-image-slice: 3; + border-image-width: 3; + border-image-repeat: stretch; + border-image-source: url('data:image/svg+xml;utf8,'); + border-image-outset: 2; + position: relative; + display: inline-block; + padding: 1rem 1.5rem; + margin: 8px; + margin-bottom: 30px; + background-color: #fff; +} +@media all and (-webkit-min-device-pixel-ratio: 0) and (min-resolution: 0.001dpcm) { + .nes-balloon { + border-image-repeat: space; + } +} +@supports (-moz-appearance: meterbar) { + .nes-balloon { + border-image-repeat: stretch; + } +} +.nes-balloon > :last-child { + margin-bottom: 0; +} +.nes-balloon::after, +.nes-balloon::before { + position: absolute; + content: ""; +} +.nes-balloon.is-dark { + border-image-slice: 3; + border-image-width: 3; + border-image-repeat: stretch; + border-image-source: url('data:image/svg+xml;utf8,'); + border-image-outset: 0; + color: #fff; + background: #212529; + border-image-outset: 2; + box-shadow: 0 0 0 8px #212529; +} +@media all and (-webkit-min-device-pixel-ratio: 0) and (min-resolution: 0.001dpcm) { + .nes-balloon.is-dark { + border-image-repeat: space; + } +} +@supports (-moz-appearance: meterbar) { + .nes-balloon.is-dark { + border-image-repeat: stretch; + } +} +.nes-balloon.is-dark.from-left::before, +.nes-balloon.is-dark.from-right::before { + background-color: #212529; + border-color: #fff; +} +.nes-balloon.is-dark.from-left::after, +.nes-balloon.is-dark.from-right::after { + color: #fff; + background-color: #212529; +} +.nes-balloon.is-dark.from-left::before { + box-shadow: -5px 10px 0 6px #212529; +} +.nes-balloon.is-dark.from-left::after { + box-shadow: + -4px 0, + 4px 0, + -4px 4px #212529, + 0 4px, + -8px 4px, + -4px 8px, + -8px 8px; +} +.nes-balloon.is-dark.from-right::before { + box-shadow: 5px 10px 0 6px #212529; +} +.nes-balloon.is-dark.from-right::after { + box-shadow: + -4px 0, + 4px 0, + 4px 4px #212529, + 0 4px, + 8px 4px, + 4px 8px, + 8px 8px; +} +.nes-balloon.from-left::after, +.nes-balloon.from-left::before { + left: 2rem; +} +.nes-balloon.from-left::before { + bottom: -14px; + width: 26px; + height: 10px; + background-color: #fff; + border-right: 4px solid #212529; + border-left: 4px solid #212529; +} +.nes-balloon.from-left::after { + bottom: -18px; + width: 18px; + height: 4px; + margin-right: 8px; + color: #212529; + background-color: #fff; + box-shadow: + -4px 0, + 4px 0, + -4px 4px #fff, + 0 4px, + -8px 4px, + -4px 8px, + -8px 8px; +} +.nes-balloon.from-right::after, +.nes-balloon.from-right::before { + right: 2rem; +} +.nes-balloon.from-right::before { + bottom: -14px; + width: 26px; + height: 10px; + background-color: #fff; + border-right: 4px solid #212529; + border-left: 4px solid #212529; +} +.nes-balloon.from-right::after { + bottom: -18px; + width: 18px; + height: 4px; + margin-left: 8px; + background-color: #fff; + box-shadow: + -4px 0, + 4px 0, + 4px 4px #fff, + 0 4px, + 8px 4px, + 4px 8px, + 8px 8px; +} +.nes-btn { + border-image-slice: 2; + border-image-width: 2; + border-image-repeat: stretch; + border-image-source: url('data:image/svg+xml;utf8,'); + border-image-outset: 2; + position: relative; + display: inline-block; + padding: 6px 8px; + margin: 4px; + text-align: center; + vertical-align: middle; + cursor: + url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAzElEQVRYR+2X0Q6AIAhF5f8/2jYXZkwEjNSVvVUjDpcrGgT7FUkI2D9xRfQETwNIiWO85wfINfQUEyxBG2ArsLwC0jioGt5zFcwF4OYDPi/mBYKm4t0U8ATgRm3ThFoAqkhNgWkA0jJLvaOVSs7j3qMnSgXWBMiWPXe94QqMBMBc1VZIvaTu5u5pQewq0EqNZvIEMCmxAawK0DNkay9QmfFNAJUXfgGgUkLaE7j/h8fnASkxHTz0DGIBMCnBeeM7AArpUd3mz2x3C7wADglA8BcWMZhZAAAAAElFTkSuQmCC) + 14 0, + pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + color: #212529; + background-color: #fff; +} +@media all and (-webkit-min-device-pixel-ratio: 0) and (min-resolution: 0.001dpcm) { + .nes-btn { + border-image-repeat: space; + } +} +@supports (-moz-appearance: meterbar) { + .nes-btn { + border-image-repeat: stretch; + } +} +.nes-btn::after { + position: absolute; + top: -4px; + right: -4px; + bottom: -4px; + left: -4px; + content: ""; + box-shadow: inset -4px -4px #adafbc; +} +.nes-btn:hover { + color: #212529; + text-decoration: none; + background-color: #e7e7e7; +} +.nes-btn:hover::after { + box-shadow: inset -6px -6px #adafbc; +} +.nes-btn:focus { + box-shadow: 0 0 0 6px rgba(173, 175, 188, 0.3); +} +.nes-btn:active:not(.is-disabled)::after { + box-shadow: inset 4px 4px #adafbc; +} +.nes-btn:focus { + outline: 0; +} +.nes-btn.is-disabled, +.nes-btn.is-disabled:focus, +.nes-btn.is-disabled:hover { + color: #212529; + cursor: not-allowed; + background-color: #d3d3d3; + box-shadow: inset -4px -4px #adafbc; + opacity: 0.6; +} +.nes-btn.is-primary { + color: #fff; + background-color: #209cee; +} +.nes-btn.is-primary::after { + position: absolute; + top: -4px; + right: -4px; + bottom: -4px; + left: -4px; + content: ""; + box-shadow: inset -4px -4px #006bb3; +} +.nes-btn.is-primary:hover { + color: #fff; + text-decoration: none; + background-color: #108de0; +} +.nes-btn.is-primary:hover::after { + box-shadow: inset -6px -6px #006bb3; +} +.nes-btn.is-primary:focus { + box-shadow: 0 0 0 6px rgba(0, 107, 179, 0.3); +} +.nes-btn.is-primary:active:not(.is-disabled)::after { + box-shadow: inset 4px 4px #006bb3; +} +.nes-btn.is-success { + color: #fff; + background-color: #92cc41; +} +.nes-btn.is-success::after { + position: absolute; + top: -4px; + right: -4px; + bottom: -4px; + left: -4px; + content: ""; + box-shadow: inset -4px -4px #4aa52e; +} +.nes-btn.is-success:hover { + color: #fff; + text-decoration: none; + background-color: #76c442; +} +.nes-btn.is-success:hover::after { + box-shadow: inset -6px -6px #4aa52e; +} +.nes-btn.is-success:focus { + box-shadow: 0 0 0 6px rgba(74, 165, 46, 0.3); +} +.nes-btn.is-success:active:not(.is-disabled)::after { + box-shadow: inset 4px 4px #4aa52e; +} +.nes-btn.is-warning { + color: #212529; + background-color: #f7d51d; +} +.nes-btn.is-warning::after { + position: absolute; + top: -4px; + right: -4px; + bottom: -4px; + left: -4px; + content: ""; + box-shadow: inset -4px -4px #e59400; +} +.nes-btn.is-warning:hover { + color: #212529; + text-decoration: none; + background-color: #f2c409; +} +.nes-btn.is-warning:hover::after { + box-shadow: inset -6px -6px #e59400; +} +.nes-btn.is-warning:focus { + box-shadow: 0 0 0 6px rgba(229, 148, 0, 0.3); +} +.nes-btn.is-warning:active:not(.is-disabled)::after { + box-shadow: inset 4px 4px #e59400; +} +.nes-btn.is-error { + color: #fff; + background-color: #e76e55; +} +.nes-btn.is-error::after { + position: absolute; + top: -4px; + right: -4px; + bottom: -4px; + left: -4px; + content: ""; + box-shadow: inset -4px -4px #8c2022; +} +.nes-btn.is-error:hover { + color: #fff; + text-decoration: none; + background-color: #ce372b; +} +.nes-btn.is-error:hover::after { + box-shadow: inset -6px -6px #8c2022; +} +.nes-btn.is-error:focus { + box-shadow: 0 0 0 6px rgba(140, 32, 34, 0.3); +} +.nes-btn.is-error:active:not(.is-disabled)::after { + box-shadow: inset 4px 4px #8c2022; +} +.nes-btn input[type="file"] { + position: absolute; + pointer-events: none; + opacity: 0; +} +.nes-container { + position: relative; + padding: 1.5rem 2rem; + border-color: #000; + border-style: solid; + border-width: 4px; +} +.nes-container > :last-child { + margin-bottom: 0; +} +.nes-container.is-centered { + text-align: center; +} +.nes-container.is-right { + text-align: right; +} +.nes-container.with-title > .title { + display: table; + padding: 0 0.5rem; + margin: -1.8rem 0 1rem; + /* font-size: 1rem; */ + background-color: #fff; +} +.nes-container.with-title.is-centered > .title { + margin: -2rem auto 1rem; +} +.nes-container.with-title.is-right > .title { + margin: -2rem 0 1rem auto; +} +.nes-container.is-dark { + position: relative; + margin: 4px; + color: #fff; + background-color: #212529; + border-color: #fff; +} +.nes-container.is-dark::after { + position: absolute; + top: -7.2px; + right: -7.2px; + bottom: -7.2px; + left: -7.2px; + z-index: -1; + content: ""; + background-color: #212529; +} +.nes-container.is-dark.with-title > .title { + color: #fff; + background-color: #212529; +} +.nes-container.is-rounded { + border-image-slice: 3; + border-image-width: 3; + border-image-repeat: stretch; + border-image-source: url('data:image/svg+xml;utf8,'); + border-image-outset: 2; + padding: 1rem 1.5rem; + margin: 4px; +} +@media all and (-webkit-min-device-pixel-ratio: 0) and (min-resolution: 0.001dpcm) { + .nes-container.is-rounded { + border-image-repeat: space; + } +} +@supports (-moz-appearance: meterbar) { + .nes-container.is-rounded { + border-image-repeat: stretch; + } +} +.nes-container.is-rounded.with-title > .title { + margin-top: -1.5rem; +} +.nes-container.is-rounded.with-title.is-centered > .title { + margin: -1.5rem auto 1rem; +} +.nes-container.is-rounded.with-title.is-right > .title { + margin: -1.5rem 0 1rem auto; +} +.nes-container.is-rounded.is-dark { + border-image-slice: 3; + border-image-width: 3; + border-image-repeat: stretch; + border-image-source: url('data:image/svg+xml;utf8,'); + border-image-outset: 0; +} +@media all and (-webkit-min-device-pixel-ratio: 0) and (min-resolution: 0.001dpcm) { + .nes-container.is-rounded.is-dark { + border-image-repeat: space; + } +} +@supports (-moz-appearance: meterbar) { + .nes-container.is-rounded.is-dark { + border-image-repeat: stretch; + } +} +.nes-container.is-rounded.is-dark::after { + content: none; +} +.nes-container.is-rounded.is-dark.with-title > .title { + margin-top: -1.3rem; +} +.nes-container.is-rounded.is-dark.with-title.is-centered > .title { + margin: -1.3rem auto 1rem; +} +.nes-container.is-rounded.is-dark.with-title.is-right > .title { + margin: -1.3rem 0 1rem auto; +} +.nes-dialog { + padding: 1.5rem 2rem; + border-width: 4px; +} +.nes-dialog::-webkit-backdrop, +.nes-dialog > .backdrop { + background-color: rgba(0, 0, 0, 0.3); +} +.nes-dialog::backdrop, +.nes-dialog > .backdrop { + background-color: rgba(0, 0, 0, 0.3); +} +.nes-dialog > :last-child { + margin-bottom: 0; +} +.nes-dialog.is-rounded { + border-image-slice: 3; + border-image-width: 3; + border-image-repeat: stretch; + border-image-source: url('data:image/svg+xml;utf8,'); + border-image-outset: 2; +} +@media all and (-webkit-min-device-pixel-ratio: 0) and (min-resolution: 0.001dpcm) { + .nes-dialog.is-rounded { + border-image-repeat: space; + } +} +@supports (-moz-appearance: meterbar) { + .nes-dialog.is-rounded { + border-image-repeat: stretch; + } +} +.nes-dialog.is-rounded.is-dark { + border-image-slice: 3; + border-image-width: 3; + border-image-repeat: stretch; + border-image-source: url('data:image/svg+xml;utf8,'); + border-image-outset: 0; +} +@media all and (-webkit-min-device-pixel-ratio: 0) and (min-resolution: 0.001dpcm) { + .nes-dialog.is-rounded.is-dark { + border-image-repeat: space; + } +} +@supports (-moz-appearance: meterbar) { + .nes-dialog.is-rounded.is-dark { + border-image-repeat: stretch; + } +} +.nes-dialog.is-dark { + color: #fff; + background-color: #212529; + border-color: #fff; +} +.nes-dialog.is-dark:not(.is-rounded)::before { + position: absolute; + top: -8px; + right: -8px; + bottom: -8px; + left: -8px; + z-index: -1; + content: ""; + border: 4px solid #212529; +} +.nes-list { + list-style-type: none; +} +.nes-list li { + position: relative; +} +.nes-list.is-disc li::before { + position: absolute; + top: calc(50% - 8px); + left: -22px; + content: ""; + width: 2px; + height: 2px; + color: #212529; + box-shadow: + 8px 2px, + 10px 2px, + 6px 4px, + 8px 4px, + 10px 4px, + 12px 4px, + 4px 6px, + 6px 6px, + 8px 6px, + 10px 6px, + 12px 6px, + 14px 6px, + 4px 8px, + 6px 8px, + 8px 8px, + 10px 8px, + 12px 8px, + 14px 8px, + 6px 10px, + 8px 10px, + 10px 10px, + 12px 10px, + 8px 12px, + 10px 12px; +} +@supports (-moz-appearance: meterbar) { + .nes-list.is-disc li::before { + box-shadow: + 8px 2px 0 0.02em, + 10px 2px 0 0.02em, + 6px 4px 0 0.02em, + 8px 4px 0 0.02em, + 10px 4px 0 0.02em, + 12px 4px 0 0.02em, + 4px 6px 0 0.02em, + 6px 6px 0 0.02em, + 8px 6px 0 0.02em, + 10px 6px 0 0.02em, + 12px 6px 0 0.02em, + 14px 6px 0 0.02em, + 4px 8px 0 0.02em, + 6px 8px 0 0.02em, + 8px 8px 0 0.02em, + 10px 8px 0 0.02em, + 12px 8px 0 0.02em, + 14px 8px 0 0.02em, + 6px 10px 0 0.02em, + 8px 10px 0 0.02em, + 10px 10px 0 0.02em, + 12px 10px 0 0.02em, + 8px 12px 0 0.02em, + 10px 12px 0 0.02em; + } +} +.nes-list.is-circle li::before { + position: absolute; + top: calc(50% - 8px); + left: -22px; + content: ""; + width: 2px; + height: 2px; + color: #212529; + box-shadow: + 8px 2px, + 10px 2px, + 6px 4px, + 8px 4px, + 10px 4px, + 12px 4px, + 4px 6px, + 6px 6px, + 12px 6px, + 14px 6px, + 4px 8px, + 6px 8px, + 12px 8px, + 14px 8px, + 6px 10px, + 8px 10px, + 10px 10px, + 12px 10px, + 8px 12px, + 10px 12px; +} +@supports (-moz-appearance: meterbar) { + .nes-list.is-circle li::before { + box-shadow: + 8px 2px 0 0.02em, + 10px 2px 0 0.02em, + 6px 4px 0 0.02em, + 8px 4px 0 0.02em, + 10px 4px 0 0.02em, + 12px 4px 0 0.02em, + 4px 6px 0 0.02em, + 6px 6px 0 0.02em, + 12px 6px 0 0.02em, + 14px 6px 0 0.02em, + 4px 8px 0 0.02em, + 6px 8px 0 0.02em, + 12px 8px 0 0.02em, + 14px 8px 0 0.02em, + 6px 10px 0 0.02em, + 8px 10px 0 0.02em, + 10px 10px 0 0.02em, + 12px 10px 0 0.02em, + 8px 12px 0 0.02em, + 10px 12px 0 0.02em; + } +} +.nes-progress { + border-image-slice: 2; + border-image-width: 2; + border-image-repeat: stretch; + border-image-source: url('data:image/svg+xml;utf8,'); + border-image-outset: 2; + width: 100%; + height: 48px; + margin: 4px; + color: #212529; + background-color: #fff; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; +} +@media all and (-webkit-min-device-pixel-ratio: 0) and (min-resolution: 0.001dpcm) { + .nes-progress { + border-image-repeat: space; + } +} +@supports (-moz-appearance: meterbar) { + .nes-progress { + border-image-repeat: stretch; + } +} +.nes-progress::-webkit-progress-bar { + background-color: #fff; +} +.nes-progress::-webkit-progress-value { + background-color: #212529; +} +.nes-progress::-moz-progress-bar { + background-color: #212529; +} +.nes-progress::-ms-fill { + background-color: #212529; + border: none; +} +.nes-progress.is-rounded { + border-image-slice: 3; + border-image-width: 3; + border-image-repeat: stretch; + border-image-source: url('data:image/svg+xml;utf8,'); + border-image-outset: 2; +} +@media all and (-webkit-min-device-pixel-ratio: 0) and (min-resolution: 0.001dpcm) { + .nes-progress.is-rounded { + border-image-repeat: space; + } +} +@supports (-moz-appearance: meterbar) { + .nes-progress.is-rounded { + border-image-repeat: stretch; + } +} +.nes-progress.is-primary::-webkit-progress-bar { + background-color: #fff; +} +.nes-progress.is-primary::-webkit-progress-value { + background-color: #209cee; +} +.nes-progress.is-primary::-moz-progress-bar { + background-color: #209cee; +} +.nes-progress.is-primary::-ms-fill { + background-color: #209cee; + border: none; +} +.nes-progress.is-success::-webkit-progress-bar { + background-color: #fff; +} +.nes-progress.is-success::-webkit-progress-value { + background-color: #92cc41; +} +.nes-progress.is-success::-moz-progress-bar { + background-color: #92cc41; +} +.nes-progress.is-success::-ms-fill { + background-color: #92cc41; + border: none; +} +.nes-progress.is-warning::-webkit-progress-bar { + background-color: #fff; +} +.nes-progress.is-warning::-webkit-progress-value { + background-color: #f7d51d; +} +.nes-progress.is-warning::-moz-progress-bar { + background-color: #f7d51d; +} +.nes-progress.is-warning::-ms-fill { + background-color: #f7d51d; + border: none; +} +.nes-progress.is-error::-webkit-progress-bar { + background-color: #fff; +} +.nes-progress.is-error::-webkit-progress-value { + background-color: #e76e55; +} +.nes-progress.is-error::-moz-progress-bar { + background-color: #e76e55; +} +.nes-progress.is-error::-ms-fill { + background-color: #e76e55; + border: none; +} +.nes-progress.is-pattern::-webkit-progress-value { + background-color: #212529; + background-image: linear-gradient( + 45deg, + #fff 25%, + transparent 25%, + transparent 75%, + #fff 75%, + #fff + ), + linear-gradient( + 45deg, + #fff 25%, + transparent 25%, + transparent 75%, + #fff 75%, + #fff + ); + background-position: + 0 0, + 10px 10px; + background-size: 20px 20px; +} +.nes-progress.is-pattern::-moz-progress-bar { + background-color: #212529; + background-image: + -moz-linear-gradient( + 45deg, + #fff 25%, + transparent 25%, + transparent 75%, + #fff 75%, + #fff + ), + -moz-linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff + 75%, #fff); + background-position: + 0 0, + 10px 10px; + background-size: 20px 20px; +} +.nes-progress.is-pattern::-ms-fill { + background-color: #212529; + background-image: linear-gradient( + 45deg, + #fff 25%, + transparent 25%, + transparent 75%, + #fff 75%, + #fff + ), + linear-gradient( + 45deg, + #fff 25%, + transparent 25%, + transparent 75%, + #fff 75%, + #fff + ); + background-position: + 0 0, + 10px 10px; + background-size: 20px 20px; + border: none; +} +.nes-table-responsive { + max-width: 100%; + overflow-x: auto; + overflow-y: hidden; +} +.nes-table { + table-layout: fixed; + background-color: #fff; +} +.nes-table tr { + margin-left: -0.25em; +} +.nes-table td, +.nes-table th { + position: relative; + padding: 0.5rem; + word-wrap: break-word; + border-color: #212529; + border-style: solid; + border-width: 0 0.25em 0.25em 0; +} +.nes-table td:last-child, +.nes-table th:last-child { + border-right-width: 0; +} +.nes-table td::after, +.nes-table td::before, +.nes-table th::after, +.nes-table th::before { + position: absolute; + display: block; + width: 0.25em; + height: 0.25em; + content: ""; + background-color: #212529; +} +.nes-table td::after, +.nes-table th::after { + bottom: -0.25em; + left: -0.25em; +} +.nes-table td::before, +.nes-table th::before { + top: -0.25em; + right: -0.25em; +} +.nes-table td:last-child::before, +.nes-table th:last-child::before { + top: initial; + bottom: -0.25em; +} +.nes-table.is-centered th { + text-align: center; +} +.nes-table.is-bordered { + margin: 4px; + border-spacing: 0; + border-collapse: separate; + border-image-slice: 2; + border-image-width: 2; + border-image-repeat: stretch; + border-image-source: url('data:image/svg+xml;utf8,'); + border-image-outset: 2; +} +@media all and (-webkit-min-device-pixel-ratio: 0) and (min-resolution: 0.001dpcm) { + .nes-table.is-bordered { + border-image-repeat: space; + } +} +@supports (-moz-appearance: meterbar) { + .nes-table.is-bordered { + border-image-repeat: stretch; + } +} +.nes-table.is-dark { + color: #fff; + background-color: #212529; +} +.nes-table.is-dark::before { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + content: ""; +} +.nes-table.is-dark.is-bordered { + border-image-slice: 2; + border-image-width: 2; + border-image-repeat: stretch; + border-image-source: url('data:image/svg+xml;utf8,'); + border-image-outset: 0; +} +@media all and (-webkit-min-device-pixel-ratio: 0) and (min-resolution: 0.001dpcm) { + .nes-table.is-dark.is-bordered { + border-image-repeat: space; + } +} +@supports (-moz-appearance: meterbar) { + .nes-table.is-dark.is-bordered { + border-image-repeat: stretch; + } +} +.nes-table.is-dark td, +.nes-table.is-dark th { + border-color: #fff; +} +.nes-table.is-dark td::after, +.nes-table.is-dark td::before, +.nes-table.is-dark th::after, +.nes-table.is-dark th::before { + display: none; +} +.nes-table tbody tr:last-child td, +.nes-table tbody tr:last-child th, +.nes-table thead:last-child tr:last-child td, +.nes-table thead:last-child tr:last-child th { + border-bottom-width: 0; +} +.nes-table tbody tr:last-child td:first-child::after, +.nes-table tbody tr:last-child td:last-child::before, +.nes-table tbody tr:last-child th:first-child::after, +.nes-table tbody tr:last-child th:last-child::before, +.nes-table thead:last-child tr:last-child td:first-child::after, +.nes-table thead:last-child tr:last-child td:last-child::before, +.nes-table thead:last-child tr:last-child th:first-child::after, +.nes-table thead:last-child tr:last-child th:last-child::before { + display: none; +} +.nes-text.is-primary { + color: #209cee; +} +.nes-text.is-success { + color: #92cc41; +} +.nes-text.is-warning { + color: #f7d51d; +} +.nes-text.is-error { + color: #e76e55; +} +.nes-text.is-disabled { + color: #d3d3d3; +} +.nes-input, +.nes-textarea { + border-image-slice: 2; + border-image-width: 2; + border-image-repeat: stretch; + border-image-source: url('data:image/svg+xml;utf8,'); + border-image-outset: 2; + width: calc(100% - 8px); + padding: 0.5rem 1rem; + margin: 4px; + background-clip: padding-box; +} +@media all and (-webkit-min-device-pixel-ratio: 0) and (min-resolution: 0.001dpcm) { + .nes-input, + .nes-textarea { + border-image-repeat: space; + } +} +@supports (-moz-appearance: meterbar) { + .nes-input, + .nes-textarea { + border-image-repeat: stretch; + } +} +.nes-input.is-dark, +.nes-textarea.is-dark { + border-image-source: url('data:image/svg+xml;utf8,'); + outline-color: #e7e7e7; + color: #fff; + background-color: #212529; +} +.nes-input.is-success, +.nes-textarea.is-success { + border-image-source: url('data:image/svg+xml;utf8,'); + outline-color: #76c442; +} +.nes-input.is-warning, +.nes-textarea.is-warning { + border-image-source: url('data:image/svg+xml;utf8,'); + outline-color: #f2c409; +} +.nes-input.is-error, +.nes-textarea.is-error { + border-image-source: url('data:image/svg+xml;utf8,'); + outline-color: #ce372b; +} +.nes-field > label { + display: block; +} +.nes-field .nes-input, +.nes-field .nes-textarea { + display: block; +} +.nes-field.is-inline { + display: flex; + align-items: center; +} +.nes-field.is-inline > label { + flex-basis: 0; + flex-grow: 1; + margin: 0; + margin-right: 1.5rem; + text-align: right; +} +.nes-field.is-inline .nes-input, +.nes-field.is-inline .nes-textarea { + flex-basis: 0; + flex-grow: 5; +} +@media screen and (max-width: 768px) { + .nes-field.is-inline { + display: block; + } + .nes-field.is-inline > label { + margin-bottom: 0.5rem; + text-align: left; + } + .nes-field.is-inline .nes-input { + max-width: 100%; + } +} +.nes-radio { + margin-right: 20px; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + width: 1px; + height: 1px; + padding: 0; + overflow: hidden; + clip: rect(0 0 0 0); + white-space: nowrap; + border: 0; + -webkit-clip-path: inset(50%); + clip-path: inset(50%); +} +.nes-radio + span { + position: relative; + cursor: + url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAzElEQVRYR+2X0Q6AIAhF5f8/2jYXZkwEjNSVvVUjDpcrGgT7FUkI2D9xRfQETwNIiWO85wfINfQUEyxBG2ArsLwC0jioGt5zFcwF4OYDPi/mBYKm4t0U8ATgRm3ThFoAqkhNgWkA0jJLvaOVSs7j3qMnSgXWBMiWPXe94QqMBMBc1VZIvaTu5u5pQewq0EqNZvIEMCmxAawK0DNkay9QmfFNAJUXfgGgUkLaE7j/h8fnASkxHTz0DGIBMCnBeeM7AArpUd3mz2x3C7wADglA8BcWMZhZAAAAAElFTkSuQmCC) + 14 0, + pointer; +} +.nes-radio:checked + span::before { + position: absolute; + top: -2px; + left: -20px; + content: ""; + width: 2px; + height: 2px; + color: #212529; + box-shadow: + 2px 2px, + 4px 2px, + 2px 4px, + 4px 4px, + 6px 4px, + 8px 4px, + 2px 6px, + 4px 6px, + 6px 6px, + 8px 6px, + 10px 6px, + 2px 8px, + 4px 8px, + 6px 8px, + 8px 8px, + 10px 8px, + 12px 8px, + 2px 10px, + 4px 10px, + 6px 10px, + 8px 10px, + 10px 10px, + 2px 12px, + 4px 12px, + 6px 12px, + 8px 12px, + 2px 14px, + 4px 14px; +} +@supports (-moz-appearance: meterbar) { + .nes-radio:checked + span::before { + box-shadow: + 2px 2px 0 0.02em, + 4px 2px 0 0.02em, + 2px 4px 0 0.02em, + 4px 4px 0 0.02em, + 6px 4px 0 0.02em, + 8px 4px 0 0.02em, + 2px 6px 0 0.02em, + 4px 6px 0 0.02em, + 6px 6px 0 0.02em, + 8px 6px 0 0.02em, + 10px 6px 0 0.02em, + 2px 8px 0 0.02em, + 4px 8px 0 0.02em, + 6px 8px 0 0.02em, + 8px 8px 0 0.02em, + 10px 8px 0 0.02em, + 12px 8px 0 0.02em, + 2px 10px 0 0.02em, + 4px 10px 0 0.02em, + 6px 10px 0 0.02em, + 8px 10px 0 0.02em, + 10px 10px 0 0.02em, + 2px 12px 0 0.02em, + 4px 12px 0 0.02em, + 6px 12px 0 0.02em, + 8px 12px 0 0.02em, + 2px 14px 0 0.02em, + 4px 14px 0 0.02em; + } +} +.nes-radio:checked:focus + span::before, +.nes-radio:checked:hover + span::before { + animation: blink 1s infinite steps(1); +} +.nes-radio:checked:focus + span::before { + width: 2px; + height: 2px; + color: #adafbc; + box-shadow: + 2px 2px, + 4px 2px, + 2px 4px, + 4px 4px, + 6px 4px, + 8px 4px, + 2px 6px, + 4px 6px, + 6px 6px, + 8px 6px, + 10px 6px, + 2px 8px, + 4px 8px, + 6px 8px, + 8px 8px, + 10px 8px, + 12px 8px, + 2px 10px, + 4px 10px, + 6px 10px, + 8px 10px, + 10px 10px, + 2px 12px, + 4px 12px, + 6px 12px, + 8px 12px, + 2px 14px, + 4px 14px; +} +@supports (-moz-appearance: meterbar) { + .nes-radio:checked:focus + span::before { + box-shadow: + 2px 2px 0 0.02em, + 4px 2px 0 0.02em, + 2px 4px 0 0.02em, + 4px 4px 0 0.02em, + 6px 4px 0 0.02em, + 8px 4px 0 0.02em, + 2px 6px 0 0.02em, + 4px 6px 0 0.02em, + 6px 6px 0 0.02em, + 8px 6px 0 0.02em, + 10px 6px 0 0.02em, + 2px 8px 0 0.02em, + 4px 8px 0 0.02em, + 6px 8px 0 0.02em, + 8px 8px 0 0.02em, + 10px 8px 0 0.02em, + 12px 8px 0 0.02em, + 2px 10px 0 0.02em, + 4px 10px 0 0.02em, + 6px 10px 0 0.02em, + 8px 10px 0 0.02em, + 10px 10px 0 0.02em, + 2px 12px 0 0.02em, + 4px 12px 0 0.02em, + 6px 12px 0 0.02em, + 8px 12px 0 0.02em, + 2px 14px 0 0.02em, + 4px 14px 0 0.02em; + } +} +.nes-radio.is-dark + span { + color: #fff; +} +.nes-radio.is-dark + span::before { + color: #fff; +} +.nes-radio.is-dark:checked + span::before { + width: 2px; + height: 2px; + color: #adafbc; + box-shadow: + 2px 2px, + 4px 2px, + 2px 4px, + 4px 4px, + 6px 4px, + 8px 4px, + 2px 6px, + 4px 6px, + 6px 6px, + 8px 6px, + 10px 6px, + 2px 8px, + 4px 8px, + 6px 8px, + 8px 8px, + 10px 8px, + 12px 8px, + 2px 10px, + 4px 10px, + 6px 10px, + 8px 10px, + 10px 10px, + 2px 12px, + 4px 12px, + 6px 12px, + 8px 12px, + 2px 14px, + 4px 14px; + color: #fff; +} +@supports (-moz-appearance: meterbar) { + .nes-radio.is-dark:checked + span::before { + box-shadow: + 2px 2px 0 0.02em, + 4px 2px 0 0.02em, + 2px 4px 0 0.02em, + 4px 4px 0 0.02em, + 6px 4px 0 0.02em, + 8px 4px 0 0.02em, + 2px 6px 0 0.02em, + 4px 6px 0 0.02em, + 6px 6px 0 0.02em, + 8px 6px 0 0.02em, + 10px 6px 0 0.02em, + 2px 8px 0 0.02em, + 4px 8px 0 0.02em, + 6px 8px 0 0.02em, + 8px 8px 0 0.02em, + 10px 8px 0 0.02em, + 12px 8px 0 0.02em, + 2px 10px 0 0.02em, + 4px 10px 0 0.02em, + 6px 10px 0 0.02em, + 8px 10px 0 0.02em, + 10px 10px 0 0.02em, + 2px 12px 0 0.02em, + 4px 12px 0 0.02em, + 6px 12px 0 0.02em, + 8px 12px 0 0.02em, + 2px 14px 0 0.02em, + 4px 14px 0 0.02em; + } +} +.nes-radio.is-dark:checked:focus + span::before { + width: 2px; + height: 2px; + color: #adafbc; + box-shadow: + 2px 2px, + 4px 2px, + 2px 4px, + 4px 4px, + 6px 4px, + 8px 4px, + 2px 6px, + 4px 6px, + 6px 6px, + 8px 6px, + 10px 6px, + 2px 8px, + 4px 8px, + 6px 8px, + 8px 8px, + 10px 8px, + 12px 8px, + 2px 10px, + 4px 10px, + 6px 10px, + 8px 10px, + 10px 10px, + 2px 12px, + 4px 12px, + 6px 12px, + 8px 12px, + 2px 14px, + 4px 14px; + color: #fff; +} +@supports (-moz-appearance: meterbar) { + .nes-radio.is-dark:checked:focus + span::before { + box-shadow: + 2px 2px 0 0.02em, + 4px 2px 0 0.02em, + 2px 4px 0 0.02em, + 4px 4px 0 0.02em, + 6px 4px 0 0.02em, + 8px 4px 0 0.02em, + 2px 6px 0 0.02em, + 4px 6px 0 0.02em, + 6px 6px 0 0.02em, + 8px 6px 0 0.02em, + 10px 6px 0 0.02em, + 2px 8px 0 0.02em, + 4px 8px 0 0.02em, + 6px 8px 0 0.02em, + 8px 8px 0 0.02em, + 10px 8px 0 0.02em, + 12px 8px 0 0.02em, + 2px 10px 0 0.02em, + 4px 10px 0 0.02em, + 6px 10px 0 0.02em, + 8px 10px 0 0.02em, + 10px 10px 0 0.02em, + 2px 12px 0 0.02em, + 4px 12px 0 0.02em, + 6px 12px 0 0.02em, + 8px 12px 0 0.02em, + 2px 14px 0 0.02em, + 4px 14px 0 0.02em; + } +} +.nes-checkbox { + margin-left: 28px; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + width: 1px; + height: 1px; + padding: 0; + overflow: hidden; + clip: rect(0 0 0 0); + white-space: nowrap; + border: 0; + -webkit-clip-path: inset(50%); + clip-path: inset(50%); +} +.nes-checkbox + span { + position: relative; + cursor: + url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAzElEQVRYR+2X0Q6AIAhF5f8/2jYXZkwEjNSVvVUjDpcrGgT7FUkI2D9xRfQETwNIiWO85wfINfQUEyxBG2ArsLwC0jioGt5zFcwF4OYDPi/mBYKm4t0U8ATgRm3ThFoAqkhNgWkA0jJLvaOVSs7j3qMnSgXWBMiWPXe94QqMBMBc1VZIvaTu5u5pQewq0EqNZvIEMCmxAawK0DNkay9QmfFNAJUXfgGgUkLaE7j/h8fnASkxHTz0DGIBMCnBeeM7AArpUd3mz2x3C7wADglA8BcWMZhZAAAAAElFTkSuQmCC) + 14 0, + pointer; +} +.nes-checkbox + span::before, +.nes-checkbox:checked + span::before { + position: absolute; + top: -3px; + left: -28px; + content: ""; +} +.nes-checkbox + span::before { + width: 2px; + height: 2px; + color: #212529; + box-shadow: + 2px 2px, + 4px 2px, + 6px 2px, + 8px 2px, + 10px 2px, + 12px 2px, + 14px 2px, + 16px 2px, + 2px 4px, + 16px 4px, + 2px 6px, + 16px 6px, + 2px 8px, + 16px 8px, + 2px 10px, + 16px 10px, + 2px 12px, + 16px 12px, + 2px 14px, + 16px 14px, + 2px 16px, + 4px 16px, + 6px 16px, + 8px 16px, + 10px 16px, + 12px 16px, + 14px 16px, + 16px 16px; +} +@supports (-moz-appearance: meterbar) { + .nes-checkbox + span::before { + box-shadow: + 2px 2px 0 0.02em, + 4px 2px 0 0.02em, + 6px 2px 0 0.02em, + 8px 2px 0 0.02em, + 10px 2px 0 0.02em, + 12px 2px 0 0.02em, + 14px 2px 0 0.02em, + 16px 2px 0 0.02em, + 2px 4px 0 0.02em, + 16px 4px 0 0.02em, + 2px 6px 0 0.02em, + 16px 6px 0 0.02em, + 2px 8px 0 0.02em, + 16px 8px 0 0.02em, + 2px 10px 0 0.02em, + 16px 10px 0 0.02em, + 2px 12px 0 0.02em, + 16px 12px 0 0.02em, + 2px 14px 0 0.02em, + 16px 14px 0 0.02em, + 2px 16px 0 0.02em, + 4px 16px 0 0.02em, + 6px 16px 0 0.02em, + 8px 16px 0 0.02em, + 10px 16px 0 0.02em, + 12px 16px 0 0.02em, + 14px 16px 0 0.02em, + 16px 16px 0 0.02em; + } +} +.nes-checkbox:focus + span::before { + width: 2px; + height: 2px; + color: #adafbc; + box-shadow: + 2px 2px, + 4px 2px, + 6px 2px, + 8px 2px, + 10px 2px, + 12px 2px, + 14px 2px, + 16px 2px, + 2px 4px, + 16px 4px, + 2px 6px, + 16px 6px, + 2px 8px, + 16px 8px, + 2px 10px, + 16px 10px, + 2px 12px, + 16px 12px, + 2px 14px, + 16px 14px, + 2px 16px, + 4px 16px, + 6px 16px, + 8px 16px, + 10px 16px, + 12px 16px, + 14px 16px, + 16px 16px; +} +@supports (-moz-appearance: meterbar) { + .nes-checkbox:focus + span::before { + box-shadow: + 2px 2px 0 0.02em, + 4px 2px 0 0.02em, + 6px 2px 0 0.02em, + 8px 2px 0 0.02em, + 10px 2px 0 0.02em, + 12px 2px 0 0.02em, + 14px 2px 0 0.02em, + 16px 2px 0 0.02em, + 2px 4px 0 0.02em, + 16px 4px 0 0.02em, + 2px 6px 0 0.02em, + 16px 6px 0 0.02em, + 2px 8px 0 0.02em, + 16px 8px 0 0.02em, + 2px 10px 0 0.02em, + 16px 10px 0 0.02em, + 2px 12px 0 0.02em, + 16px 12px 0 0.02em, + 2px 14px 0 0.02em, + 16px 14px 0 0.02em, + 2px 16px 0 0.02em, + 4px 16px 0 0.02em, + 6px 16px 0 0.02em, + 8px 16px 0 0.02em, + 10px 16px 0 0.02em, + 12px 16px 0 0.02em, + 14px 16px 0 0.02em, + 16px 16px 0 0.02em; + } +} +.nes-checkbox:checked + span::before { + width: 2px; + height: 2px; + color: #212529; + box-shadow: + 2px 2px, + 4px 2px, + 6px 2px, + 8px 2px, + 10px 2px, + 12px 2px, + 14px 2px, + 18px 2px, + 20px 2px, + 2px 4px, + 16px 4px, + 18px 4px, + 20px 4px, + 2px 6px, + 14px 6px, + 16px 6px, + 2px 8px, + 4px 8px, + 12px 8px, + 14px 8px, + 2px 10px, + 4px 10px, + 6px 10px, + 10px 10px, + 12px 10px, + 16px 10px, + 2px 12px, + 6px 12px, + 8px 12px, + 10px 12px, + 16px 12px, + 2px 14px, + 8px 14px, + 16px 14px, + 2px 16px, + 4px 16px, + 6px 16px, + 8px 16px, + 10px 16px, + 12px 16px, + 14px 16px, + 16px 16px; +} +@supports (-moz-appearance: meterbar) { + .nes-checkbox:checked + span::before { + box-shadow: + 2px 2px 0 0.02em, + 4px 2px 0 0.02em, + 6px 2px 0 0.02em, + 8px 2px 0 0.02em, + 10px 2px 0 0.02em, + 12px 2px 0 0.02em, + 14px 2px 0 0.02em, + 18px 2px 0 0.02em, + 20px 2px 0 0.02em, + 2px 4px 0 0.02em, + 16px 4px 0 0.02em, + 18px 4px 0 0.02em, + 20px 4px 0 0.02em, + 2px 6px 0 0.02em, + 14px 6px 0 0.02em, + 16px 6px 0 0.02em, + 2px 8px 0 0.02em, + 4px 8px 0 0.02em, + 12px 8px 0 0.02em, + 14px 8px 0 0.02em, + 2px 10px 0 0.02em, + 4px 10px 0 0.02em, + 6px 10px 0 0.02em, + 10px 10px 0 0.02em, + 12px 10px 0 0.02em, + 16px 10px 0 0.02em, + 2px 12px 0 0.02em, + 6px 12px 0 0.02em, + 8px 12px 0 0.02em, + 10px 12px 0 0.02em, + 16px 12px 0 0.02em, + 2px 14px 0 0.02em, + 8px 14px 0 0.02em, + 16px 14px 0 0.02em, + 2px 16px 0 0.02em, + 4px 16px 0 0.02em, + 6px 16px 0 0.02em, + 8px 16px 0 0.02em, + 10px 16px 0 0.02em, + 12px 16px 0 0.02em, + 14px 16px 0 0.02em, + 16px 16px 0 0.02em; + } +} +.nes-checkbox:checked:focus + span::before { + width: 2px; + height: 2px; + color: #adafbc; + box-shadow: + 2px 2px, + 4px 2px, + 6px 2px, + 8px 2px, + 10px 2px, + 12px 2px, + 14px 2px, + 18px 2px #212529, + 20px 2px #212529, + 2px 4px, + 16px 4px #212529, + 18px 4px #212529, + 20px 4px #212529, + 2px 6px #212529, + 14px 6px #212529, + 16px 6px #212529, + 2px 8px #212529, + 4px 8px #212529, + 12px 8px #212529, + 14px 8px #212529, + 2px 10px, + 4px 10px #212529, + 6px 10px #212529, + 10px 10px #212529, + 12px 10px #212529, + 16px 10px, + 2px 12px, + 6px 12px #212529, + 8px 12px #212529, + 10px 12px #212529, + 16px 12px, + 2px 14px, + 8px 14px #212529, + 16px 14px, + 2px 16px, + 4px 16px, + 6px 16px, + 8px 16px, + 10px 16px, + 12px 16px, + 14px 16px, + 16px 16px; +} +@supports (-moz-appearance: meterbar) { + .nes-checkbox:checked:focus + span::before { + box-shadow: + 2px 2px 0 0.02em, + 4px 2px 0 0.02em, + 6px 2px 0 0.02em, + 8px 2px 0 0.02em, + 10px 2px 0 0.02em, + 12px 2px 0 0.02em, + 14px 2px 0 0.02em, + 18px 2px 0 0.02em #212529, + 20px 2px 0 0.02em #212529, + 2px 4px 0 0.02em, + 16px 4px 0 0.02em #212529, + 18px 4px 0 0.02em #212529, + 20px 4px 0 0.02em #212529, + 2px 6px 0 0.02em #212529, + 14px 6px 0 0.02em #212529, + 16px 6px 0 0.02em #212529, + 2px 8px 0 0.02em #212529, + 4px 8px 0 0.02em #212529, + 12px 8px 0 0.02em #212529, + 14px 8px 0 0.02em #212529, + 2px 10px 0 0.02em, + 4px 10px 0 0.02em #212529, + 6px 10px 0 0.02em #212529, + 10px 10px 0 0.02em #212529, + 12px 10px 0 0.02em #212529, + 16px 10px 0 0.02em, + 2px 12px 0 0.02em, + 6px 12px 0 0.02em #212529, + 8px 12px 0 0.02em #212529, + 10px 12px 0 0.02em #212529, + 16px 12px 0 0.02em, + 2px 14px 0 0.02em, + 8px 14px 0 0.02em #212529, + 16px 14px 0 0.02em, + 2px 16px 0 0.02em, + 4px 16px 0 0.02em, + 6px 16px 0 0.02em, + 8px 16px 0 0.02em, + 10px 16px 0 0.02em, + 12px 16px 0 0.02em, + 14px 16px 0 0.02em, + 16px 16px 0 0.02em; + } +} +.nes-checkbox.is-dark + span { + color: #fff; +} +.nes-checkbox.is-dark + span::before { + color: #fff; +} +.nes-checkbox.is-dark:checked + span::before { + width: 2px; + height: 2px; + color: #adafbc; + box-shadow: + 2px 2px, + 4px 2px, + 6px 2px, + 8px 2px, + 10px 2px, + 12px 2px, + 14px 2px, + 18px 2px #fff, + 20px 2px #fff, + 2px 4px, + 16px 4px #fff, + 18px 4px #fff, + 20px 4px #fff, + 2px 6px #fff, + 14px 6px #fff, + 16px 6px #fff, + 2px 8px #fff, + 4px 8px #fff, + 12px 8px #fff, + 14px 8px #fff, + 2px 10px, + 4px 10px #fff, + 6px 10px #fff, + 10px 10px #fff, + 12px 10px #fff, + 16px 10px, + 2px 12px, + 6px 12px #fff, + 8px 12px #fff, + 10px 12px #fff, + 16px 12px, + 2px 14px, + 8px 14px #fff, + 16px 14px, + 2px 16px, + 4px 16px, + 6px 16px, + 8px 16px, + 10px 16px, + 12px 16px, + 14px 16px, + 16px 16px; + color: #fff; +} +@supports (-moz-appearance: meterbar) { + .nes-checkbox.is-dark:checked + span::before { + box-shadow: + 2px 2px 0 0.02em, + 4px 2px 0 0.02em, + 6px 2px 0 0.02em, + 8px 2px 0 0.02em, + 10px 2px 0 0.02em, + 12px 2px 0 0.02em, + 14px 2px 0 0.02em, + 18px 2px 0 0.02em #fff, + 20px 2px 0 0.02em #fff, + 2px 4px 0 0.02em, + 16px 4px 0 0.02em #fff, + 18px 4px 0 0.02em #fff, + 20px 4px 0 0.02em #fff, + 2px 6px 0 0.02em #fff, + 14px 6px 0 0.02em #fff, + 16px 6px 0 0.02em #fff, + 2px 8px 0 0.02em #fff, + 4px 8px 0 0.02em #fff, + 12px 8px 0 0.02em #fff, + 14px 8px 0 0.02em #fff, + 2px 10px 0 0.02em, + 4px 10px 0 0.02em #fff, + 6px 10px 0 0.02em #fff, + 10px 10px 0 0.02em #fff, + 12px 10px 0 0.02em #fff, + 16px 10px 0 0.02em, + 2px 12px 0 0.02em, + 6px 12px 0 0.02em #fff, + 8px 12px 0 0.02em #fff, + 10px 12px 0 0.02em #fff, + 16px 12px 0 0.02em, + 2px 14px 0 0.02em, + 8px 14px 0 0.02em #fff, + 16px 14px 0 0.02em, + 2px 16px 0 0.02em, + 4px 16px 0 0.02em, + 6px 16px 0 0.02em, + 8px 16px 0 0.02em, + 10px 16px 0 0.02em, + 12px 16px 0 0.02em, + 14px 16px 0 0.02em, + 16px 16px 0 0.02em; + } +} +.nes-checkbox.is-dark:checked:focus + span::before { + width: 2px; + height: 2px; + color: #adafbc; + box-shadow: + 2px 2px, + 4px 2px, + 6px 2px, + 8px 2px, + 10px 2px, + 12px 2px, + 14px 2px, + 18px 2px #fff, + 20px 2px #fff, + 2px 4px, + 16px 4px #fff, + 18px 4px #fff, + 20px 4px #fff, + 2px 6px #fff, + 14px 6px #fff, + 16px 6px #fff, + 2px 8px #fff, + 4px 8px #fff, + 12px 8px #fff, + 14px 8px #fff, + 2px 10px, + 4px 10px #fff, + 6px 10px #fff, + 10px 10px #fff, + 12px 10px #fff, + 16px 10px, + 2px 12px, + 6px 12px #fff, + 8px 12px #fff, + 10px 12px #fff, + 16px 12px, + 2px 14px, + 8px 14px #fff, + 16px 14px, + 2px 16px, + 4px 16px, + 6px 16px, + 8px 16px, + 10px 16px, + 12px 16px, + 14px 16px, + 16px 16px; + color: #fff; +} +@supports (-moz-appearance: meterbar) { + .nes-checkbox.is-dark:checked:focus + span::before { + box-shadow: + 2px 2px 0 0.02em, + 4px 2px 0 0.02em, + 6px 2px 0 0.02em, + 8px 2px 0 0.02em, + 10px 2px 0 0.02em, + 12px 2px 0 0.02em, + 14px 2px 0 0.02em, + 18px 2px 0 0.02em #fff, + 20px 2px 0 0.02em #fff, + 2px 4px 0 0.02em, + 16px 4px 0 0.02em #fff, + 18px 4px 0 0.02em #fff, + 20px 4px 0 0.02em #fff, + 2px 6px 0 0.02em #fff, + 14px 6px 0 0.02em #fff, + 16px 6px 0 0.02em #fff, + 2px 8px 0 0.02em #fff, + 4px 8px 0 0.02em #fff, + 12px 8px 0 0.02em #fff, + 14px 8px 0 0.02em #fff, + 2px 10px 0 0.02em, + 4px 10px 0 0.02em #fff, + 6px 10px 0 0.02em #fff, + 10px 10px 0 0.02em #fff, + 12px 10px 0 0.02em #fff, + 16px 10px 0 0.02em, + 2px 12px 0 0.02em, + 6px 12px 0 0.02em #fff, + 8px 12px 0 0.02em #fff, + 10px 12px 0 0.02em #fff, + 16px 12px 0 0.02em, + 2px 14px 0 0.02em, + 8px 14px 0 0.02em #fff, + 16px 14px 0 0.02em, + 2px 16px 0 0.02em, + 4px 16px 0 0.02em, + 6px 16px 0 0.02em, + 8px 16px 0 0.02em, + 10px 16px 0 0.02em, + 12px 16px 0 0.02em, + 14px 16px 0 0.02em, + 16px 16px 0 0.02em; + } +} +.nes-select { + position: relative; + width: calc(100% - 8px); + margin: 4px; +} +.nes-select select { + border-image-slice: 2; + border-image-width: 2; + border-image-repeat: stretch; + border-image-source: url('data:image/svg+xml;utf8,'); + border-image-outset: 2; + width: 100%; + padding: 0.5rem 2.5rem 0.5rem 1rem; + cursor: + url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAzElEQVRYR+2X0Q6AIAhF5f8/2jYXZkwEjNSVvVUjDpcrGgT7FUkI2D9xRfQETwNIiWO85wfINfQUEyxBG2ArsLwC0jioGt5zFcwF4OYDPi/mBYKm4t0U8ATgRm3ThFoAqkhNgWkA0jJLvaOVSs7j3qMnSgXWBMiWPXe94QqMBMBc1VZIvaTu5u5pQewq0EqNZvIEMCmxAawK0DNkay9QmfFNAJUXfgGgUkLaE7j/h8fnASkxHTz0DGIBMCnBeeM7AArpUd3mz2x3C7wADglA8BcWMZhZAAAAAElFTkSuQmCC) + 14 0, + pointer; + border-radius: 0; + outline-color: #e7e7e7; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; +} +@media all and (-webkit-min-device-pixel-ratio: 0) and (min-resolution: 0.001dpcm) { + .nes-select select { + border-image-repeat: space; + } +} +@supports (-moz-appearance: meterbar) { + .nes-select select { + border-image-repeat: stretch; + } +} +.nes-select select:invalid { + color: #adafbc; +} +.nes-select.is-dark select { + color: #fff; + background-color: #212529; +} +.nes-select::after { + width: 3px; + height: 3px; + color: #212529; + box-shadow: + 3px 3px, + 6px 3px, + 9px 3px, + 12px 3px, + 15px 3px, + 18px 3px, + 21px 3px, + 3px 6px, + 6px 6px, + 9px 6px, + 12px 6px, + 15px 6px, + 18px 6px, + 21px 6px, + 6px 9px, + 9px 9px, + 12px 9px, + 15px 9px, + 18px 9px, + 6px 12px, + 9px 12px, + 12px 12px, + 15px 12px, + 18px 12px, + 9px 15px, + 12px 15px, + 15px 15px, + 12px 18px; + position: absolute; + top: calc(50% - 11px); + right: 36px; + pointer-events: none; + content: ""; +} +@supports (-moz-appearance: meterbar) { + .nes-select::after { + box-shadow: + 3px 3px 0 0.02em, + 6px 3px 0 0.02em, + 9px 3px 0 0.02em, + 12px 3px 0 0.02em, + 15px 3px 0 0.02em, + 18px 3px 0 0.02em, + 21px 3px 0 0.02em, + 3px 6px 0 0.02em, + 6px 6px 0 0.02em, + 9px 6px 0 0.02em, + 12px 6px 0 0.02em, + 15px 6px 0 0.02em, + 18px 6px 0 0.02em, + 21px 6px 0 0.02em, + 6px 9px 0 0.02em, + 9px 9px 0 0.02em, + 12px 9px 0 0.02em, + 15px 9px 0 0.02em, + 18px 9px 0 0.02em, + 6px 12px 0 0.02em, + 9px 12px 0 0.02em, + 12px 12px 0 0.02em, + 15px 12px 0 0.02em, + 18px 12px 0 0.02em, + 9px 15px 0 0.02em, + 12px 15px 0 0.02em, + 15px 15px 0 0.02em, + 12px 18px 0 0.02em; + } +} +.nes-select.is-success::after { + color: #92cc41; +} +.nes-select.is-success select { + border-image-source: url('data:image/svg+xml;utf8,'); + outline-color: #76c442; +} +.nes-select.is-warning::after { + color: #f7d51d; +} +.nes-select.is-warning select { + border-image-source: url('data:image/svg+xml;utf8,'); + outline-color: #f2c409; +} +.nes-select.is-error::after { + color: #e76e55; +} +.nes-select.is-error select { + border-image-source: url('data:image/svg+xml;utf8,'); + outline-color: #ce372b; +} +.nes-select.is-dark::after { + color: #fff; +} +.nes-select.is-dark select { + border-image-source: url('data:image/svg+xml;utf8,'); + outline-color: #e7e7e7; +} +@import url("https://fonts.googleapis.com/css2?family=Press+Start+2P&display=swap"); +body { + font-family: "Press Start 2P", cursive; + background-color: rgb(167, 154, 113); + /* color: rgb(0, 0, 0); */ + margin: 1rem; +} +h1, +h2, +h3, +h4, +h5, +h6 { + font-family: "Press Start 2P", cursive; + color: rgb(0, 0, 0); +} +.btn { + font-family: "Press Start 2P", cursive; + border: 2px solid rgb(0, 0, 0); + background-color: rgb(255, 102, 0); + color: rgb(255, 255, 255); + padding: 8px 16px; + text-align: center; + text-decoration: none; + display: inline-block; + /* font-size: 16px; */ + cursor: pointer; +} +.btn:hover { + background-color: rgb(255, 0, 0); +} +.box { + border: 2px solid rgb(0, 0, 0); + background-color: rgb(255, 255, 255); + padding: 16px; + margin-bottom: 16px; +} +.container { + width: 100%; + max-width: 960px; + margin: 0px auto; + padding: 0px 16px; +} +a { + color: rgb(116, 41, 51); +} +.row { + display: flex; + flex-wrap: wrap; + margin: 0px -8px; +} +.col { + flex: 1 1 0%; + padding: 0px 8px; +} +input[type="text"], +input[type="email"], +input[type="password"], +textarea { + width: 100%; + padding: 8px; + border: 2px solid rgb(0, 0, 0); + background-color: rgb(255, 255, 255); + box-sizing: border-box; + margin-bottom: 16px; +} +label { + display: block; + font-weight: bold; + margin-bottom: 8px; +} +nav { + background-color: rgb(0, 0, 0); + padding: 16px; +} +nav ul { + list-style-type: none; + margin: 0px; + padding: 0px; +} +nav ul li { + display: inline; + margin-right: 16px; +} +nav ul li a { + color: rgb(255, 255, 255); + text-decoration: none; + font-size: 0.8em !important; +} +pre { + padding: 16px; + overflow-x: auto; +} +nav, +pre +code { + font-family: "Press Start 2P", cursive !important; + font-size: x-small !important; +} + +main { + margin: 0px auto; + max-width: 800px; +} + +.nes-btn{ + /* font-size: 1.1em; */ +} +#content.content { + height: calc(100vh - 104px); +} + +.inclusive-sans-regular { + font-family: "Inclusive Sans", sans-serif; + font-weight: 400; + font-style: normal; +} + +.inclusive-sans-regular-italic { + font-family: "Inclusive Sans", sans-serif; + font-weight: 400; + font-style: italic; +} + +body { + font-family: "Inclusive Sans", sans-serif; + font-weight: 400; + font-style: normal; +} + +.sidebar { + font-size: x-small !important; +} \ No newline at end of file diff --git a/proptest-regressions/lexer/lexer_prop_tests.txt b/proptest-regressions/lexer/lexer_prop_tests.txt new file mode 100644 index 0000000..0855930 --- /dev/null +++ b/proptest-regressions/lexer/lexer_prop_tests.txt @@ -0,0 +1,16 @@ +# Seeds for failure cases proptest has generated in the past. It is +# automatically read and these particular cases re-run before any +# novel cases are generated. +# +# It is recommended to check this file in to source control so that +# everyone who runs the test benefits from these saved cases. +cc 1c83167e024771d976df58234003dac45ba031f887e42fa2b061acf1a1370cb2 # shrinks to string = "\"#A\"" +cc fcd774e0a6ebcde805b7b7e5f476e7f93c232d572f0bf4c04e24da0e58cb1888 # shrinks to rnd = ("yzzwjqmyhiqofkfmuwzwibirqlbm", 7) +cc f8cfea8e580b693c74835373498e4d90e0fb5999d6e8829e428af48ad1c41dea # shrinks to rnd = ("ebnicpjotxbnflxi", 4) +cc 260dbc051bb574f18d0222da79697035cf1f9a0385d6e35082558a2173098aa4 # shrinks to rnd = ("djmooxmjjdocvtacweycdtky", 8) +cc 3f2143c462bdd5113f5580c05acab2508c0ad23c9bc09811fc3b7477101c48ed # shrinks to rnd = ("aa", 1) +cc 57751377005060ccb986d37941310b6a76eb50bab6bd26e774c42e319b01bdff # shrinks to rnd = ("a", 1) +cc 1bb75d4dad1c2903dfbdc6ebc91c09af7fa197de6a0d454f4bf94e4ca2107ef7 # shrinks to rnd = ("pxqoxoktdyppluvr", 3) +cc 861504c1bde04633ced8c7c2ba53300b17c5c33a33576455f31ea0381cd84822 # shrinks to rnd = ("ugetuobzjwwggmlvfaldp", 3) +cc 61d685f319f26003a845170ab7aec02e26eb3696b0531bbc4eed3d9d139e5ed6 # shrinks to rnd = ("a", 1) +cc f708e7be5415e8f960e050cd92279d78c905068f4307bdd97208910e5ed6f037 # shrinks to rnd = ("spvytpknoqtgglxefqbi", 1) diff --git a/proptest-regressions/lexer/lexer_tests.txt b/proptest-regressions/lexer/lexer_tests.txt new file mode 100644 index 0000000..1075d2a --- /dev/null +++ b/proptest-regressions/lexer/lexer_tests.txt @@ -0,0 +1,7 @@ +# Seeds for failure cases proptest has generated in the past. It is +# automatically read and these particular cases re-run before any +# novel cases are generated. +# +# It is recommended to check this file in to source control so that +# everyone who runs the test benefits from these saved cases. +cc 539eafd927ae06585e452c563dbd935506987f19333d5d97a7e47e769cb4fb78 # shrinks to input = "¡" diff --git a/proptest-regressions/parser/parser_prop_tests.txt b/proptest-regressions/parser/parser_prop_tests.txt new file mode 100644 index 0000000..0837e04 --- /dev/null +++ b/proptest-regressions/parser/parser_prop_tests.txt @@ -0,0 +1,14 @@ +# Seeds for failure cases proptest has generated in the past. It is +# automatically read and these particular cases re-run before any +# novel cases are generated. +# +# It is recommended to check this file in to source control so that +# everyone who runs the test benefits from these saved cases. +cc 53ed407a7836b80d1aeb8237943360dc417a3b4ff1d09cccf98ad30d4e5daf0b # shrinks to s = "self" +cc 25c567f936eb3aef0681be73d32fc06584db01b9cb8be5ee01e5d99b75f183e5 # shrinks to s = 0.0 +cc 2c4f316af5e79461d0e55217d80b990b0bf3f5857bca9dc0116c15a113e721ea # shrinks to s = ("26496402", "8", "+") +cc 10570f46a35ba69ae6f950da4381e32d5eea576a431fa733c68fe0de437bd1a9 # shrinks to s = 0, n = 0 +cc 849502590009964980943dc6b028f19129755e96a35e61fef820103c7a47141e # shrinks to s = "true", n = 208438984 +cc 3c31cefc4aa84bb451917c892bd0210df9d1c09c9860763bc56eb19fc93b660e # shrinks to s = "true", n = 0 +cc 8d077c98fec19684acd476a9013ce5c9c19e6f0f9bad1b187eddea4d4103ac21 # shrinks to s = "true" +cc 8e3bd3186714efb1f2255d04318cb0f90a271cf4fdcba60a302b9210f41366cf # shrinks to s = ("-379538130", "0", "+") diff --git a/proptest-regressions/parser/parser_tests.txt b/proptest-regressions/parser/parser_tests.txt new file mode 100644 index 0000000..747b5b7 --- /dev/null +++ b/proptest-regressions/parser/parser_tests.txt @@ -0,0 +1,14 @@ +# Seeds for failure cases proptest has generated in the past. It is +# automatically read and these particular cases re-run before any +# novel cases are generated. +# +# It is recommended to check this file in to source control so that +# everyone who runs the test benefits from these saved cases. +cc f4b12d9127d638ad4a31ad4c95b20d10138f371fe1ae926525e66fdac917c823 # shrinks to s = 0 +cc 8479b82e178bfabc6b68933111be0bf965b5e6b258f0eac472b431518f39fca3 # shrinks to s = "\"" +cc 92cd10d9b071770069af466193eec50a9363a1a56469c922f05a71a3d25f2b20 # shrinks to s = "\\" +cc 1b5e71738bc9301b8164e86be87ffa4819af75b3fab471597050fb8bbf044fbe # shrinks to s = "null" +cc 39e17d0930f1f7ceae8389177f28a2c43b3233541c7a49854fc23635fcb8f216 # shrinks to s = ("a", "18447000000000000000") +cc d4e50e6c8c2a24006e7a78ad8b3d23f24089e6f7eaa32f1e42afd83eb82a10fb # shrinks to s = ("4043826871", "2280852354", "*") +cc c64ace410e7d4926e2910b3161690270c72c6dd321820e02791b879ed656437d # shrinks to s = "^" +cc 6dde019e8b018f1bcf0eee378c4f0b24a2a412d357011a64770eca7ec4c17e6d # shrinks to s = "true", n = "\"\"" diff --git a/src/compiler/checks.rs b/src/compiler/checks.rs new file mode 100644 index 0000000..e69de29 diff --git a/src/compiler/db.rs b/src/compiler/db.rs new file mode 100644 index 0000000..d5ccc76 --- /dev/null +++ b/src/compiler/db.rs @@ -0,0 +1,64 @@ +use std::sync::{Arc, Mutex}; + +use salsa::DebugWithDb; + +use crate::{ + lexer::{self, Lexer, Token}, + Db, +}; + +use super::text::SourceProgram; + +#[derive(Default)] +#[salsa::db(crate::Jar)] +pub(crate) struct Database { + storage: salsa::Storage, + + // The logs are only used for testing and demonstrating reuse: + // + logs: Option>>>, +} + +impl Database { + /// Enable logging of each salsa event. + #[cfg(test)] + pub fn enable_logging(self) -> Self { + assert!(self.logs.is_none()); + Self { + storage: self.storage, + logs: Some(Default::default()), + } + } + + #[cfg(test)] + pub fn take_logs(&mut self) -> Vec { + if let Some(logs) = &self.logs { + std::mem::take(&mut *logs.lock().unwrap()) + } else { + panic!("logs not enabled"); + } + } +} + +impl salsa::Database for Database { + fn salsa_event(&self, event: salsa::Event) { + eprintln!("Event: {event:?}"); + // Log interesting events, if logging is enabled + if let Some(logs) = &self.logs { + // don't log boring events + if let salsa::EventKind::WillExecute { .. } = event.kind { + logs.lock() + .unwrap() + .push(format!("Event: {:?}", event.debug(self))); + } + } + } +} +impl salsa::ParallelDatabase for Database { + fn snapshot(&self) -> salsa::Snapshot { + salsa::Snapshot::new(Database { + storage: self.storage.snapshot(), + logs: self.logs.clone(), + }) + } +} diff --git a/src/compiler/errors.rs b/src/compiler/errors.rs new file mode 100644 index 0000000..ae3924a --- /dev/null +++ b/src/compiler/errors.rs @@ -0,0 +1,76 @@ +use std::ops::Range; + +use crate::Db; + +use super::text::SourceProgram; + + +pub struct Errors<'a>(Vec, &'a str>>); + +impl<'a> From, &'a str>>> + for Errors<'a> +{ + fn from( + errors: Vec, &'a str>>, + ) -> Self { + Self(errors) + } +} + +impl<'a> IntoIterator for Errors<'a> { + type Item = Range; + + type IntoIter = > as IntoIterator>::IntoIter; + + fn into_iter(self) -> Self::IntoIter { + self.0 + .into_iter() + .map(|error| match error.error { + lalrpop_util::ParseError::InvalidToken { location } => location..location, + lalrpop_util::ParseError::UnrecognizedEof { location, expected } => { + location..location + } + lalrpop_util::ParseError::UnrecognizedToken { token, expected } => token.0..token.2, + lalrpop_util::ParseError::ExtraToken { token } => token.0..token.2, + lalrpop_util::ParseError::User { error } => todo!(), + }) + .collect::>() + .into_iter() + } +} + + +fn handle_errors(errors: Vec>, src: &str) -> String { + let mut pretty = String::new(); + let mut last_end = 0; + + for error in errors { + match error.error { + lalrpop_util::ParseError::InvalidToken { location } => todo!(), + lalrpop_util::ParseError::UnrecognizedEof { location, expected } => todo!(), + lalrpop_util::ParseError::UnrecognizedToken { token, expected } => { + // find the line and column of the start and end tokens, + // and print the line with a caret pointing to the error + let start = token.0; + let end = token.2; + let start_line = src[..start].rfind('\n').map_or(0, |i| i + 1); + let end_line = src[end..].find('\n').map_or(src.len(), |i| end + i); + let line = &src[start_line..end_line]; + let start_col = start - start_line; + let end_col = end - start_line; + // pretty.push_str(&src[last_end..start]); + pretty.push_str(&format!("error: unexpected token {:?}, expected one of {:?}\n", token.1, expected)); + pretty.push_str(&line); + pretty.push_str("\n"); + pretty.push_str(&" ".repeat(start_col)); + pretty.push_str(&"^".repeat(end_col - start_col)); + last_end = end; + }, + lalrpop_util::ParseError::ExtraToken { token } => todo!(), + lalrpop_util::ParseError::User { error } => todo!(), + }; + + } + // pretty.push_str(&src[last_end..]); + pretty +} \ No newline at end of file diff --git a/src/compiler/ir.rs b/src/compiler/ir.rs new file mode 100644 index 0000000..85e3876 --- /dev/null +++ b/src/compiler/ir.rs @@ -0,0 +1,63 @@ +#![allow(clippy::needless_borrow)] + +use salsa::*; +use std::{ + array::IntoIter, + collections::BTreeMap, + path::Iter, + sync::{Arc, Mutex}, +}; + +use crate::{parser::ast}; + +#[salsa::tracked] +pub struct Program { + #[return_ref] + pub modul: Vec, + #[return_ref] + pub symbols: BTreeMap, +} + +#[salsa::tracked] +pub struct Function { + #[return_ref] + pub name: String, + + #[return_ref] + pub body: Vec>, + + #[return_ref] + pub effects: Vec, +} + +#[salsa::interned] +pub struct InternedEffect { + pub effect: String, +} + +#[salsa::interned] +pub struct Symbol { + #[return_ref] + pub symbol: Mangled, +} + +#[salsa::tracked] +pub struct EffectDef { + #[return_ref] + pub effect: ast::EffectDef, +} + +#[salsa::tracked] +pub struct Import { + #[return_ref] + pub imports: Vec, + #[return_ref] + pub module: String, +} + +#[salsa::interned] +pub struct Mangled { + #[return_ref] + pub mangled: String, +} + diff --git a/src/compiler/mod.rs b/src/compiler/mod.rs new file mode 100644 index 0000000..8b8df02 --- /dev/null +++ b/src/compiler/mod.rs @@ -0,0 +1,81 @@ +use std::{ + collections::BTreeMap, + ops::{Range, RangeBounds}, +}; + +use crate::{ + compiler::{errors::Errors, text::{Position, Span, Spanned}}, + parser::ast::{self, EffectDef, Module}, + Db, +}; + +use self::text::SourceProgram; + +mod db; +mod errors; +pub mod ir; +mod tests; +pub mod text; + + +#[salsa::tracked] +pub fn compile(db: &dyn Db, src: SourceProgram) -> ir::Program { + let mut errors: Vec> = vec![]; + let wrapper = crate::lexer::TripleIterator::new(src.text(db)); + let t = crate::parser::src::SourceParser::new().parse(&mut errors, wrapper); + // let mut errors_in_positions: Vec = vec![]; + if !errors.is_empty() { + for error_range in Into::::into(errors) { + text::to_spans(db, src); + } + panic!(); + } + + let modul = t.unwrap(); + let mut symbol_table = BTreeMap::new(); + for toplevel in modul.0 { + match *toplevel { + ast::Expression::BinaryExpression(_) => todo!(), + ast::Expression::Bool(_) => todo!(), + ast::Expression::Integer(_) => todo!(), + ast::Expression::Float(_) => todo!(), + ast::Expression::Ident(_) => todo!(), + ast::Expression::Binding(_) => todo!(), + ast::Expression::FnCall(_) => todo!(), + ast::Expression::String(_) => todo!(), + ast::Expression::FnDef(_) => {} + ast::Expression::ShellCommand(_, _) => todo!(), + ast::Expression::EffectDef(_) => todo!(), + ast::Expression::StructDef(_) => todo!(), + ast::Expression::UseDef(usedef) => { + let import = + ir::Import::new(db, usedef.0.into_iter().map(|x| x.0).collect(), usedef.1 .0); + for import in add_imports(db, import) { + symbol_table.insert(import, ir::Symbol::new(db, import)); + } + } + ast::Expression::Keyword(_) => todo!(), + ast::Expression::ImplDef(_) => todo!(), + ast::Expression::Branch(_) => todo!(), + ast::Expression::Error => todo!(), + } + } + let program = ir::Program::new(db, vec![], symbol_table); + + program +} + +#[salsa::tracked] +pub fn compile_effect(db: &dyn Db, effect: ir::EffectDef) {} + +#[salsa::tracked] +pub fn add_imports(db: &dyn Db, import: ir::Import) -> Vec { + let mut mangled = vec![]; + for imp in import.imports(db) { + mangled.push(ir::Mangled::new( + db, + format!("{}_{}", import.module(db), imp), + )); + } + mangled +} diff --git a/src/compiler/std/mod.rs b/src/compiler/std/mod.rs new file mode 100644 index 0000000..e69de29 diff --git a/src/compiler/tests.rs b/src/compiler/tests.rs new file mode 100644 index 0000000..9bad191 --- /dev/null +++ b/src/compiler/tests.rs @@ -0,0 +1,42 @@ +#[cfg(test)] +#[okstd::test] +fn debug() { + use salsa::{database::AsSalsaDatabase, storage::HasJarsDyn}; + + use super::{db, text::SourceProgram}; + + let src = r#"use { native_fs, native_exec } from host +use { fs } from std + +struct Innitguv { + fs: native_fs, + exec: native_exec + current_pid: i32 +} + +impl Exec for Innitguv { + fn exec(&self, arg0: str, args: vec) [nd, exec, await] -> i32 { + let path = arg0 + let pid = self.exec.exec(path, args) + if pid == -1 { + raise(-1) + } + self.current_pid = pid + yield() + } +} + +impl Actor for Innitguv { + fn recv(&self, msg: Message) [recv, await] { + self.exec(msg.path, msg.args) + } +}"#; + let db = &crate::compiler::db::Database::default().enable_logging(); + + let prog = SourceProgram::new(db, src.to_string()); + let res = super::compile(db, prog); + println!("{:?}", prog); + println!("{:?}", res.symbols(db)); + let modul = res.modul(db); + println!("{:?}", modul); +} diff --git a/src/compiler/text.rs b/src/compiler/text.rs new file mode 100644 index 0000000..99a3dc1 --- /dev/null +++ b/src/compiler/text.rs @@ -0,0 +1,155 @@ +use std::ops::Range; + +use bitflags::bitflags; +use crate::Db; + +/// Represents the source program text. +#[salsa::input] +pub struct SourceProgram { + #[return_ref] + pub text: String, +} + +/// Represents a spanned piece of code. +#[salsa::interned] +pub struct Spanned { + /// The span of the code. + #[return_ref] + pub span: Span, + + /// The source program associated with the code. + #[return_ref] + pub src: SourceProgram, + + /// The position of the code in the source program. + #[return_ref] + pub pos: Position, +} + +/// Represents a span of text. +#[salsa::interned] +pub struct Span { + /// The range of the span in the source program text. + pub span: (usize, usize), +} + +/// Represents a position in the source code. +#[salsa::interned] +pub struct Position { + /// The line number of the position. + l: usize, + + /// The column number of the position. + c: usize, +} + +/// Represents the source map of the program. +#[salsa::tracked] +pub struct SourceMap { + #[return_ref] + pub tokens: Vec, +} + +#[salsa::tracked] +pub fn calculate_line_lengths(db: &dyn Db, src: SourceProgram) -> Vec { + src.text(db).lines().map(|x| x.len()).collect() +} + +// spanoverlap is a bitflag that is used to determine how two spans overlap +// it is used to determine if a token is within a line +// it is rare a token will span multiple lines but it is possible +bitflags! { + #[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)] + pub struct SpanOverlap: u8 { + const NONE = 0b0000; + const START = 0b0001; + const END = 0b0010; + const BOTH = 0b0011; + } +} + +#[inline] +fn cmp_range(a: &Range, b: &Range) -> SpanOverlap { + let mut overlap = SpanOverlap::NONE; + if a.contains(&b.start) { + overlap |= SpanOverlap::START; + } + if a.contains(&b.end) { + overlap |= SpanOverlap::END; + } + overlap +} + + +/// todo(sevki): split this into two functions +#[salsa::tracked] +pub fn to_spans(db: &dyn Db, src: SourceProgram) -> SourceMap { + let line_lengths: Vec> = calculate_line_lengths(db, src) + .into_iter() + .scan(0, |acc, x| { + let range = *acc..*acc + x; + *acc += x; + Some(range) + }) + .collect(); + + // reverse the line lengths and make it peakable essentially + // turinging it into a stack + let mut line_lengths = line_lengths.into_iter().enumerate().rev().peekable(); + + let mut spans = vec![]; + + let lexer = crate::lexer::Lexer::new(src.text(db), 0); + // this is sort of a zip~ish operation. + // we have to arrays that we are iterating over. One is build cheaply, the line lengths + // and the other is built expensively, the lexer. + // Lexer tokens have a start and end position, and we want to map these to the line lengths + // first we iterate over the lexer tokens + for token in lexer { + let size = token.end - token.start; + // then we peek at the first line + let mut start: Option<(usize, usize)> = None; + loop { + if let Some((line_no, span)) = line_lengths.clone().peek() { + // if the token is within the line + let overlap = cmp_range(&span, &(token.start..token.end)); + if overlap == SpanOverlap::NONE && start.is_none() { + // if the token is not within the line + line_lengths.next(); + } + if overlap == SpanOverlap::START || overlap == SpanOverlap::BOTH { + // if the token is within the line + start = Some((*line_no, span.start)); + // we do not need to iterate more. + break; + } + } + } + + if start.is_none() { + // if the token is not within the line + break; + } + let start = start.unwrap(); + let leading_chars = src.text(db).get(start.1..token.start); + let column = leading_chars.map(|x| x.chars().count()).unwrap_or(0); + /* + ```text + 1,1 7 + | | + # Intro + 8 lorem ipsum dolor sit amet + │ + 13 byte start + 6th column, 2nd line + ``` + */ + spans.push(Spanned::new( + db, + Span::new(db, (token.start, token.end)), + src, + Position::new(db, start.0, column), + )); + } + SourceMap::new(db, spans) +} diff --git a/src/lexer/lexer_prop_tests.rs b/src/lexer/lexer_prop_tests.rs new file mode 100644 index 0000000..0583499 --- /dev/null +++ b/src/lexer/lexer_prop_tests.rs @@ -0,0 +1,12 @@ +use super::*; +use proptest::{num::i32, prelude::*}; + +proptest! { + #[test] + fn test_strings(rnd in ("[a-z]+", 1..10)) { + let input = format!(r#"let {} = "{}""#, rnd.0, rnd.1); + let lexer = Lexer::new(&input, 0); + let tokens: Vec> = lexer.collect(); + assert_eq!(tokens.len(), 4); + } +} diff --git a/src/lexer/lexer_snap_tests.rs b/src/lexer/lexer_snap_tests.rs new file mode 100644 index 0000000..401a999 --- /dev/null +++ b/src/lexer/lexer_snap_tests.rs @@ -0,0 +1,306 @@ +use crate::lexer::{Lexer, TokenStreamDisplay}; + +use insta::assert_snapshot; +use okstd::prelude::*; + +#[cfg(test)] +#[okstd::test] +fn test_empty_lexer() { + let input = " "; + let lexer = Lexer::new(input, 0); + let actual_tokens = lexer.map_while(|t| Some(t)).collect::>(); + assert_snapshot!(TokenStreamDisplay::from(actual_tokens), @r###" + "###); +} + +#[okstd::test] +fn test_1_plus_1() { + let input = "1 + 1"; + let lexer = Lexer::new(input, 0); + let actual_tokens = lexer.map_while(|t| Some(t)).collect::>(); + assert_snapshot!(TokenStreamDisplay::from(actual_tokens), @r###" + - Integer(1), 1:1 + - Plus, 1:3 + - Integer(1), 1:5 + "###); +} + +#[okstd::test] +fn test_1_plus_1_plus_1() { + let input = "1 + 1 + 1"; + let lexer = Lexer::new(input, 0); + let actual_tokens = lexer.map_while(|t| Some(t)).collect::>(); + assert_snapshot!(TokenStreamDisplay::from(actual_tokens), @r###" + - Integer(1), 1:1 + - Plus, 1:3 + - Integer(1), 1:5 + - Plus, 1:7 + - Integer(1), 1:9 + "###); +} + +#[okstd::test] +fn test_1_plus_1_plus_1_plus_1() { + let input = "1 + 1 / 1 % 1"; + let lexer = Lexer::new(input, 0); + let actual_tokens = lexer.map_while(|t| Some(t)).collect::>(); + assert_snapshot!(TokenStreamDisplay::from(actual_tokens), @r###" + - Integer(1), 1:1 + - Plus, 1:3 + - Integer(1), 1:5 + - Divide, 1:7 + - Integer(1), 1:9 + - Percent, 1:11 + - Integer(1), 1:13 + "###); +} + +#[okstd::test] +fn test_let_a_equals_1() { + let input = "let a = 1"; + let lexer = Lexer::new(input, 0); + let actual_tokens = lexer.map_while(|t| Some(t)).collect::>(); + assert_snapshot!(TokenStreamDisplay::from(actual_tokens), @r###" + - Word(Let), 1:3 + - Word(Ident("a")), 1:5 + - Equals, 1:7 + - Integer(1), 1:9 + "###); +} + +#[okstd::test] +fn test_let_a_equals_1_plus_1() { + let input = "let a = 1 + 1"; + let lexer = Lexer::new(input, 0); + let actual_tokens = lexer.map_while(|t| Some(t)).collect::>(); + assert_snapshot!(TokenStreamDisplay::from(actual_tokens), @r###" + - Word(Let), 1:3 + - Word(Ident("a")), 1:5 + - Equals, 1:7 + - Integer(1), 1:9 + - Plus, 1:11 + - Integer(1), 1:13 + "###); +} + +#[okstd::test] +fn test_let_a_equals_1_plus_3_point_14() { + let input = "let a = 1 + 3.14"; + let lexer = Lexer::new(input, 0); + let actual_tokens = lexer.map_while(|t| Some(t)).collect::>(); + assert_snapshot!(TokenStreamDisplay::from(actual_tokens), @r###" + - Word(Let), 1:3 + - Word(Ident("a")), 1:5 + - Equals, 1:7 + - Integer(1), 1:9 + - Plus, 1:11 + - Float(3.14), 1:16 + "###); +} + +#[okstd::test] +fn test_let_a_equals_1_plus_3_point_14_plus_1() { + let input = "let a = 1 + 3.14 + 1"; + let lexer = Lexer::new(input, 0); + let actual_tokens = lexer.map_while(|t| Some(t)).collect::>(); + assert_snapshot!(TokenStreamDisplay::from(actual_tokens), @r###" + - Word(Let), 1:3 + - Word(Ident("a")), 1:5 + - Equals, 1:7 + - Integer(1), 1:9 + - Plus, 1:11 + - Float(3.14), 1:16 + - Plus, 1:18 + - Integer(1), 1:20 + "###); +} + +#[okstd::test] +fn test_fn_foo() { + let input = "fn foo() {}"; + let lexer = Lexer::new(input, 0); + let actual_tokens = lexer.map_while(|t| Some(t)).collect::>(); + assert_snapshot!(TokenStreamDisplay::from(actual_tokens), @r###" + - Word(Fn), 1:2 + - Word(Ident("foo")), 1:6 + - LeftParen, 1:7 + - RightParen, 1:8 + - LeftBrace, 1:10 + - RightBrace, 1:11 + "###); +} + +#[okstd::test] +fn test_fn_foo_bar() { + let input = "fn foo(bar) {}"; + let lexer = Lexer::new(input, 0); + let actual_tokens = lexer.map_while(|t| Some(t)).collect::>(); + assert_snapshot!(TokenStreamDisplay::from(actual_tokens), @r###" + - Word(Fn), 1:2 + - Word(Ident("foo")), 1:6 + - LeftParen, 1:7 + - Word(Ident("bar")), 1:10 + - RightParen, 1:11 + - LeftBrace, 1:13 + - RightBrace, 1:14 + "###); +} + +#[okstd::test] +fn test_fn_foo_bar_baz() { + let input = "fn foo(bar, baz) { + +}"; + let lexer = Lexer::new(input, 0); + let actual_tokens = lexer.map_while(|t| Some(t)).collect::>(); + assert_snapshot!(TokenStreamDisplay::from(actual_tokens), @r###" + - Word(Fn), 1:2 + - Word(Ident("foo")), 1:6 + - LeftParen, 1:7 + - Word(Ident("bar")), 1:10 + - Comma, 1:11 + - Word(Ident("baz")), 1:15 + - RightParen, 1:16 + - LeftBrace, 1:18 + - NewLine, 2:0 + - NewLine, 3:0 + - RightBrace, 3:1 + "###); +} + +#[okstd::test] +fn test_fn_foo_bar_baz_qux() { + let input = "fn foo(bar, baz) { + qux() +}"; + let lexer = Lexer::new(input, 0); + let actual_tokens = lexer.map_while(|t| Some(t)).collect::>(); + assert_snapshot!(TokenStreamDisplay::from(actual_tokens), @r###" + - Word(Fn), 1:2 + - Word(Ident("foo")), 1:6 + - LeftParen, 1:7 + - Word(Ident("bar")), 1:10 + - Comma, 1:11 + - Word(Ident("baz")), 1:15 + - RightParen, 1:16 + - LeftBrace, 1:18 + - NewLine, 2:0 + - Word(Ident("qux")), 2:7 + - LeftParen, 2:8 + - RightParen, 2:9 + - NewLine, 3:0 + - RightBrace, 3:1 + "###); +} + +#[okstd::test] +fn test_fn_foo_bar_baz_qux_quux() { + let input = "fn foo(bar, baz) { + qux(quux) +}"; + let lexer = Lexer::new(input, 0); + let actual_tokens = lexer.map_while(|t| Some(t)).collect::>(); + assert_snapshot!(TokenStreamDisplay::from(actual_tokens), @r###" + - Word(Fn), 1:2 + - Word(Ident("foo")), 1:6 + - LeftParen, 1:7 + - Word(Ident("bar")), 1:10 + - Comma, 1:11 + - Word(Ident("baz")), 1:15 + - RightParen, 1:16 + - LeftBrace, 1:18 + - NewLine, 2:0 + - Word(Ident("qux")), 2:7 + - LeftParen, 2:8 + - Word(Ident("quux")), 2:12 + - RightParen, 2:13 + - NewLine, 3:0 + - RightBrace, 3:1 + "###); +} + +#[okstd::test] +fn test_fn_foo_bar_baz_qux_quux_quuz() { + let input = "fn foo(bar, baz) { + qux(quux, 3.14,0xdeadbeef) +}"; + let lexer = Lexer::new(input, 0); + let actual_tokens = lexer.map_while(|t| Some(t)).collect::>(); + assert_snapshot!(TokenStreamDisplay::from(actual_tokens), @r###" + - Word(Fn), 1:2 + - Word(Ident("foo")), 1:6 + - LeftParen, 1:7 + - Word(Ident("bar")), 1:10 + - Comma, 1:11 + - Word(Ident("baz")), 1:15 + - RightParen, 1:16 + - LeftBrace, 1:18 + - NewLine, 2:0 + - Word(Ident("qux")), 2:7 + - LeftParen, 2:8 + - Word(Ident("quux")), 2:12 + - Comma, 2:13 + - Float(3.14), 2:18 + - Comma, 2:19 + - Integer(3735928559), 2:29 + - RightParen, 2:30 + - NewLine, 3:0 + - RightBrace, 3:1 + "###); +} + +#[okstd::test] +fn test_func_with_genetics() { + let input = "fn foo(bar: T)[throws, awaits, execs] { + qux() +}"; + let lexer = Lexer::new(input, 0); + let actual_tokens = lexer.map_while(|t| Some(t)).collect::>(); + assert_snapshot!(TokenStreamDisplay::from(actual_tokens), @r###" + - Word(Fn), 1:2 + - Word(Ident("foo")), 1:6 + - LessThan, 1:7 + - Word(Ident("T")), 1:8 + - GreaterThan, 1:9 + - LeftParen, 1:10 + - Word(Ident("bar")), 1:13 + - Colon, 1:14 + - Word(Ident("T")), 1:16 + - RightParen, 1:17 + - LeftBracket, 1:18 + - Word(Ident("throws")), 1:24 + - Comma, 1:25 + - Word(Ident("awaits")), 1:32 + - Comma, 1:33 + - Word(Ident("execs")), 1:39 + - RightBracket, 1:40 + - LeftBrace, 1:42 + - NewLine, 2:0 + - Word(Ident("qux")), 2:7 + - LeftParen, 2:8 + - RightParen, 2:9 + - NewLine, 3:0 + - RightBrace, 3:1 + "###); +} + +#[okstd::test] +fn test_func_call_with_genetics() { + let input = "foo(bar: T)[vm]"; + let lexer = Lexer::new(input, 0); + let actual_tokens = lexer.map_while(|t| Some(t)).collect::>(); + assert_snapshot!(TokenStreamDisplay::from(actual_tokens), @r###" + - Word(Ident("foo")), 1:3 + - LessThan, 1:4 + - Word(Ident("T")), 1:5 + - GreaterThan, 1:6 + - LeftParen, 1:7 + - Word(Ident("bar")), 1:10 + - Colon, 1:11 + - Word(Ident("T")), 1:13 + - RightParen, 1:14 + - LeftBracket, 1:15 + - Word(Ident("vm")), 1:17 + - RightBracket, 1:18 + "###); +} diff --git a/src/lexer/mod.rs b/src/lexer/mod.rs new file mode 100644 index 0000000..bdba109 --- /dev/null +++ b/src/lexer/mod.rs @@ -0,0 +1,987 @@ +/* +lexer.rs is a lexer for the src language +*/ + +use std::{fmt::Display, iter::Iterator, iter::Peekable, str::Chars}; + +use lalrpop_util::{ + lexer::Token as LAToken, + state_machine::{ParserDefinition, TokenTriple}, +}; +use okstd::prelude::*; +use syn::token; + +// Identifier +#[derive(Debug, PartialEq, Clone, Copy)] +pub enum Variable<'input> { + // $$ is the process ID of the shell + ProcessID, + // $! is the process ID of the last background command + LastBackgroundProcessID, + // $? is the exit status of the last command executed + LastCommandExitStatus, + // $- is the current option flags as specified upon invocation, by the set built-in command, or by the shell invocation environment + CurrentOptionFlags, + // $@ is the positional parameters, starting from one + PositionalParameters, + // $# is the number of positional parameters in decimal + PositionalParametersCount, + // $0 is the name of the shell or shell script + ShellName, + // $1...$9 are the positional parameters, starting from zero + PositionalParameter(usize), + // ${parameter} is the value of the variable parameter + Parameter(&'input str), + // ${parameter:-word} is the value of the variable parameter if it is set; otherwise, the expansion of word is substituted + ParameterDefault(&'input str, &'input str), +} + +impl<'input> Display for Variable<'input> { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + match self { + Variable::ProcessID => write!(f, "$$"), + Variable::LastBackgroundProcessID => write!(f, "$!"), + Variable::LastCommandExitStatus => write!(f, "$?"), + Variable::CurrentOptionFlags => write!(f, "$-"), + Variable::PositionalParameters => write!(f, "$@"), + Variable::PositionalParametersCount => write!(f, "$#"), + Variable::ShellName => write!(f, "$0"), + Variable::PositionalParameter(i) => write!(f, "${}", i), + Variable::Parameter(p) => write!(f, "${}", p), + Variable::ParameterDefault(p, w) => write!(f, "${}:{}", p, w), + } + } +} + +// LexicalError +#[derive(Debug, PartialEq, Clone)] +pub enum LexicalError { + // Unexpected character + UnexpectedCharacter(char), + // Unterminated string + UnterminatedString, + // Invalid number format + InvalidNumberFormat, + // Invalid variable format + InvalidVariableFormat, + // Unexpected end of input + UnexpectedEndOfInput, + // Invalid state emission + InvalidStateEmission(State), +} + +type Result = std::result::Result; + +#[derive(Debug, PartialEq, Clone)] +pub struct Spanned { + pub node: T, + pub start: usize, + pub end: usize, + pub pos: P, +} + +impl Display for Spanned> { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!( + f, + "{:?}, start: {} end: {}", + self.node, self.start, self.end + ) + } +} + +impl Spanned { + pub fn new(node: T, start: usize, end: usize, pos: P) -> Self { + Spanned { + node, + start, + end, + pos, + } + } + + pub fn len(&self) -> usize { + self.end - self.start + } +} + +// Position struct +#[derive(Debug, PartialEq, Clone, Copy, Default)] +pub struct Position { + pub line: usize, + pub col: usize, + pub size: usize, +} + +// new function for Position +impl Position { + pub fn new(line: usize, col: usize, size: usize) -> Self { + Self { line, col, size } + } +} + +// display trait implementation for Position +impl std::fmt::Display for Position { + fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { + write!( + f, + "line: {}, col: {}, size: {}", + self.line, self.col, self.size + ) + } +} + +// display trait implementation for Token +impl std::fmt::Display for Token<'_> { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(f, "{:?}", self) + } +} + +#[derive(Debug, PartialEq, Clone)] +pub enum Word<'input> { + Let, + Const, + Fn, + If, + Else, + Return, + Match, + For, + While, + Break, + Continue, + True, + False, + Null, + Action, + Enum, + Impl, + Import, + None, + Struct, + Effect, + When, + Use, + From, + Where, + Self_, + Ident(&'input str), + FnIdent(&'input str), + Any(&'input str), +} + +impl<'input> Word<'input> { + fn chars(&self) -> Chars<'_> { + match self { + Word::Let => "let".chars(), + Word::Const => "const".chars(), + Word::Fn => "fn".chars(), + Word::If => "if".chars(), + Word::Else => "else".chars(), + Word::Return => "return".chars(), + Word::Match => "match".chars(), + Word::For => "for".chars(), + Word::While => "while".chars(), + Word::Break => "break".chars(), + Word::Continue => "continue".chars(), + Word::True => "true".chars(), + Word::False => "false".chars(), + Word::Null => "null".chars(), + Word::When => "when".chars(), + Word::Ident(ident) => ident.chars(), + Word::FnIdent(ident) => ident.chars(), + Word::Any(word) => word.chars(), + Word::Action => "action".chars(), + Word::Enum => "enum".chars(), + Word::Impl => "impl".chars(), + Word::Import => "import".chars(), + Word::None => "none".chars(), + Word::Struct => "struct".chars(), + Word::Effect => "effect".chars(), + Word::Use => "use".chars(), + Word::From => "from".chars(), + Word::Where => "where".chars(), + Word::Self_ => "self".chars(), + } + } +} + +// token types debug +#[derive(Debug, PartialEq, Clone)] +pub enum Token<'input> { + // Operators + Pipe, // | + Ampersand, // & + Semicolon, // ; + Equals, // = + // Redirections + LessThan, // < + GreaterThan, // > + // Identifiers + Variable(Variable<'input>), // $a-z, $A-Z, $0-9, $_ + // Literals + Word(Word<'input>), // a-z, A-Z, 0-9, _ + String(&'input str), // "..." + // Comments + Comment(&'input str), // # + // Numbers + Integer(i64), // 0-9 + Float(f64), // 0-9 + // Special + Eof, // EOF + NewLine, // \n + LeftParen, // ( + RightParen, // ) + LeftBrace, // { + RightBrace, // } + LeftBracket, // [ + RightBracket, // ] + Comma, // , + Dot, // . + Colon, // : + Underscore, // _ + Minus, // - + Plus, // + + Arrow, // -> + FatArrow, // => + Divide, // / + Multiply, // * + Percent, // % + Dollar, // $ + Exclamation, // ! + Question, // ? + Tilde, // ~ + At, // @ + Caret, // ^ + Shebang, // #! +} + +impl<'input> Token<'input> { + fn to_chars(&'input self) -> Chars<'input> { + match self { + Token::Pipe => "|".chars(), + Token::Ampersand => "&".chars(), + Token::Semicolon => ";".chars(), + Token::Equals => "=".chars(), + Token::LessThan => "<".chars(), + Token::GreaterThan => ">".chars(), + Token::Variable(identifier) => { + // Implement the conversion to chars for Variable + // based on its fields + "".chars() + } + Token::Word(word) => word.chars(), + Token::String(string) => string.chars(), + Token::Comment(comment) => comment.chars(), + Token::Integer(number) => "".chars(), + Token::Float(number) => "".chars(), + Token::Eof => "".chars(), + Token::NewLine => "\n".chars(), + Token::LeftParen => "(".chars(), + Token::RightParen => ")".chars(), + Token::LeftBrace => "{".chars(), + Token::RightBrace => "}".chars(), + Token::LeftBracket => "[".chars(), + Token::RightBracket => "]".chars(), + Token::Comma => ",".chars(), + Token::Colon => ":".chars(), + Token::Underscore => "_".chars(), + Token::Minus => "-".chars(), + Token::Plus => "+".chars(), + Token::Arrow => "->".chars(), + Token::FatArrow => "=>".chars(), + Token::Divide => "/".chars(), + Token::Multiply => "*".chars(), + Token::Percent => "%".chars(), + Token::Dollar => "$".chars(), + Token::Exclamation => "!".chars(), + Token::Question => "?".chars(), + Token::Tilde => "~".chars(), + Token::At => "@".chars(), + Token::Caret => "^".chars(), + Token::Dot => ".".chars(), + Token::Shebang => "#!".chars(), + } + } +} + +impl<'input> Iterator for Token<'input> { + type Item = char; + + fn next(&mut self) -> Option { + self.to_chars().next() + } +} + +pub struct Lexer<'input> { + input: &'input str, + pos: usize, + line: usize, + col: usize, + state: State, + buffer: String, + peekable: Peekable>, + last_char: Option, +} + +impl<'input> Lexer<'input> { + pub fn new(input: &'input str, pos: usize) -> Self { + Self { + input, + pos, + line: 1, + col: 1, + state: State::Program, + buffer: String::new(), + peekable: input.chars().peekable(), + last_char: None, + } + } +} + +#[derive(Debug, PartialEq, Clone, Copy)] +enum Quotation { + Single, + Double, +} + +#[derive(Debug, PartialEq, Clone, Copy)] +enum State { + Comment, + Eof, + NewLine, + String(Quotation), + Op, + Variable, + Word, + Number, + Program, + Shebang, + Any, +} +macro_rules! set_state { + ($self:expr, $state:expr;) => {{ + $self.state = $state; + }}; +} +macro_rules! emit { + ($self:expr, $state:expr => ?) => {{ + let r = $self.emit_buffer().unwrap(); + $self.buffer.clear(); + emit!($self, $state => r) + }}; + ($self:expr, $state:expr => $token:expr) => {{ + let start = $self.pos; + match $token { + Token::Integer (number ) => { + for c in number.to_string().chars() { + debug!("c: {}", c); + $self.advance(c); + } + } + Token::Float ( number ) => { + for c in number.to_string().chars() { + $self.advance(c); + } + } + _ => { + for c in $token.to_chars() { + $self.advance(c); + } + } + } + let end = $self.pos; + let pos = Position::new( + $self.line, + $self.col - $self.buffer.len() - 1, + end - start, + ); + $self.state = $state; + let token = $token; + let token = Spanned::new(token, start, end, pos); + Ok(token) + }}; +} + +// Lexer trait implementation +impl<'input> Lexer<'input> { + pub fn input(&self) -> &'input str { + self.input + } + + fn push(&mut self) -> bool { + let c = self.peekable.next().unwrap(); + self.buffer.push(c); + let finished = (self.pos as i32) + self.buffer.len() as i32 >= self.input.len() as i32; + finished + } + + fn ignore(&mut self) -> bool { + let c = self.peekable.next().unwrap(); + self.advance(c) + } + + fn advance(&mut self, c: char) -> bool { + if self.pos + 1 > self.input.len() { + unreachable!("pos: {}, input.len: {}", self.pos, self.input.len()); + } + self.pos += 1; + self.last_char = Some(c); + if c == '\n' { + self.line += 1; + self.col = 1; + } else { + self.col += 1; + } + let finished = self.pos >= self.input.len(); + finished + } + + fn peek(&mut self) -> Option { + return self.peekable.peek().copied(); + } + + // emit emit's the current token + fn emit_buffer(&mut self) -> Result> { + let start = self.pos; + let end = self.pos + self.buffer.len(); + + match self.state { + // these states cannot emit tokens + State::Program => Err(LexicalError::InvalidStateEmission(State::Program)), + State::Op => Ok(match self.buffer.chars().next().unwrap() { + '(' => Token::LeftParen, + ')' => Token::RightParen, + '{' => Token::LeftBrace, + '}' => Token::RightBrace, + '>' => Token::GreaterThan, + '<' => Token::LessThan, + '|' => Token::Pipe, + '&' => Token::Ampersand, + ';' => Token::Semicolon, + ',' => Token::Comma, + ':' => Token::Colon, + '_' => Token::Underscore, + '+' => Token::Plus, + '*' => Token::Multiply, + '[' => Token::LeftBracket, + ']' => Token::RightBracket, + '%' => Token::Percent, + '@' => Token::At, + '/' => Token::Divide, + '-' => { + if self.buffer.len() == 1 { + Token::Minus + } else if self.buffer == "->" { + Token::Arrow + } else { + unreachable!("unexpected character: {}", self.buffer) + } + } + '=' => Token::Equals, + _ => unreachable!( + "unexpected character: {} in state: {:?}", + self.buffer, self.state + ), + }), + State::Any => Err(LexicalError::InvalidStateEmission(State::Any)), + // these states can emit tokens + State::Comment => { + let comment = self + .input + .get(start..end) + .ok_or(LexicalError::UnexpectedEndOfInput)?; + Ok(Token::Comment(comment)) + } + State::Variable => { + let variable = self.buffer.clone(); + let identifier = match variable.as_str() { + "$$" => Variable::ProcessID, + "$?" => Variable::LastCommandExitStatus, + "$!" => Variable::LastBackgroundProcessID, + "$-" => Variable::CurrentOptionFlags, + "$0" => Variable::ShellName, + "$#" => Variable::PositionalParametersCount, + _ => { + if variable.starts_with('$') && variable.len() > 1 { + let number = variable[1..] + .parse() + .map_err(|_| LexicalError::InvalidVariableFormat)?; + Variable::PositionalParameter(number) + } else { + let var = self + .input + .get(start..end) + .ok_or(LexicalError::UnexpectedEndOfInput)?; + Variable::Parameter(var) + } + } + }; + + Ok(Token::Variable(identifier)) + } + State::Word => { + let word = self + .input + .get(start..end) + .ok_or(LexicalError::UnexpectedEndOfInput)?; + let word = match word { + "let" => Word::Let, + "const" => Word::Const, + "fn" => Word::Fn, + "if" => Word::If, + "else" => Word::Else, + "return" => Word::Return, + "match" => Word::Match, + "for" => Word::For, + "while" => Word::While, + "break" => Word::Break, + "continue" => Word::Continue, + "true" => Word::True, + "false" => Word::False, + "null" => Word::Null, + "action" => Word::Action, + "enum" => Word::Enum, + "impl" => Word::Impl, + "import" => Word::Import, + "none" => Word::None, + "struct" => Word::Struct, + "effect" => Word::Effect, + "when" => Word::When, + "use" => Word::Use, + "from" => Word::From, + "where" => Word::Where, + "self" => Word::Self_, + _ => { + Word::Ident(word) + // } + } + }; + Ok(Token::Word(word)) + } + State::String(Quotation) => { + let last_char = self.buffer.chars().last(); + let quote = if Quotation == Quotation::Double { + Some('"') + } else { + Some('\'') + }; + if last_char != quote { + panic!("expected: {:?}, got: {:?}", quote, last_char); + return Err(LexicalError::UnterminatedString); + } + let string = self + .input + .get(start..end) + .expect("shoulld've done something"); + Ok(Token::String(string)) + } + State::Number => { + let number = self.buffer.clone(); + if number.contains('.') { + let float = number + .parse() + .map_err(|_| LexicalError::InvalidNumberFormat)?; + + Ok(Token::Float(float)) + } else if number.starts_with("0x") { + let integer = i64::from_str_radix(&number[2..], 16) + .map_err(|_| LexicalError::InvalidNumberFormat)?; + Ok(Token::Integer(integer)) + } else { + let integer = number + .parse() + .map_err(|_| LexicalError::InvalidNumberFormat)?; + Ok(Token::Integer(integer)) + } + } + State::NewLine => Ok(Token::NewLine), + State::Eof => Ok(Token::Eof), + State::Shebang => Ok(Token::Shebang), + } + } + + fn skip_ws(&mut self) -> Result<()> { + while let Some(c) = self.peek() { + match c { + ' ' => { + self.ignore(); + } + '\t' => { + self.ignore(); + } + '#' => { + set_state!(self, State::Comment;); + return Ok(()); + } + '"' => { + set_state!(self, State::String(Quotation::Double);); + return Ok(()); + } + '\'' => { + set_state!(self, State::String(Quotation::Single);); + return Ok(()); + } + '$' => { + set_state!(self, State::Variable;); + return Ok(()); + } + 'a'..='z' | 'A'..='Z' | '_' => { + set_state!(self, State::Word;); + return Ok(()); + } + '0'..='9' => { + set_state!(self, State::Number;); + return Ok(()); + } + '\n' => { + set_state!(self, State::NewLine;); + return Ok(()); + } + '(' | ')' | '{' | '}' | '>' | '<' | '|' | '&' | ';' | ',' | ':' | '+' | '*' + | '[' | ']' | '%' | '@' | '/' | '-' | '=' | '!' => { + set_state!(self, State::Op;); + debug!("to state: {:?}", self.state); + return Ok(()); + } + _ => { + return Err(LexicalError::UnexpectedCharacter(c))?; + } + } + if self.pos >= self.input.len() { + break; + } + } + if self.pos >= self.input.len() { + set_state!(self, State::Eof;); + } + Ok(()) + } + + fn consume_op(&mut self) -> Result>> { + if let Some(c) = self.peek() { + debug!("consume_op: {}", c); + if self.state != State::Op { + return Err(LexicalError::InvalidStateEmission(self.state))?; + } + match c { + '(' | ')' | '{' | '}' | '>' | '<' | '|' | '&' | ';' | ',' | ':' | '_' | '+' + | '/' | '*' | '[' | ']' | '%' | '@' => { + let state = if self.push() { State::Eof } else { State::Any }; + return emit!(self, state => ?); + } + '=' => { + self.push(); + if let Some('>') = self.peek() { + self.push(); + return emit!(self, State::Any => ?); + } else { + let state = if self.pos == self.input.len() { + State::Eof + } else { + State::Any + }; + return emit!(self, state => ?); + } + } // - and -> + '-' => { + self.push(); + match self.peek() { + Some('>') => { + self.push(); + return emit!(self, State::Any => ?); + } + Some('0'..='9') => { + set_state!(self, State::Number;); + return self.consume_number(); + } + _ => { + let state = if self.push() { State::Eof } else { State::Any }; + return emit!(self, state => ?); + } + } + } + '/' => { + let state = if self.push() { State::Eof } else { State::Any }; + match self.peek() { + Some(' ') => { + return emit!(self, state => ?); + } + _ => { + return emit!(self, state => ?); + } + } + } // / and /directory/file + '!' => { + let state = if self.push() { State::Eof } else { State::Any }; + if let Some('#') = self.peek() { + self.push(); + return emit!(self, State::Any => ?); + } else { + return emit!(self, state => ?); + } + } + _ => { + panic!("unexpected character: '{}'", c); + return emit!(self, State::Any => ?); + } + } + } + emit!(self, self.state=> Token::Eof) + } + + // comment state + fn consume_comment(&mut self) -> Result>> { + loop { + match self.peek() { + Some('!') => { + let state = if self.push() { State::Eof } else { State::Any }; + set_state!(self, State::Shebang;); + return emit!(self, state => ?); + } + Some('\n') => { + return emit!(self, State::NewLine => ?); + } + // if the option is none, break + None => { + return emit!(self, State::Any => ?); + } + _ => { + if self.push() { + return emit!(self, State::Eof => ?); + } + } + } + } + } + + // consume word + fn consume_word(&mut self) -> Result>> { + while let Some(c) = self.peek() { + match c { + 'a'..='z' | 'A'..='Z' | '0'..='9' | '-' | '.' | '/' | '_' => { + if self.push() { + return emit!(self, State::Eof => ?); + } + } + _ => { + break; + } + } + } + return emit!(self, State::Any => ?); + } + + // consume number + fn consume_number(&mut self) -> Result>> { + debug!("consume_number"); + while let Some(c) = self.peek() { + match c { + '0'..='9' => { + if self.push() { + debug!("finished"); + return emit!(self, State::Eof => ?); + } + } + // . is only allowed once + '.' => { + if self.buffer.contains('.') { + break; + } else if self.push() { + // this is a violation as it is not a number + // so panic + return Err(LexicalError::InvalidNumberFormat); + } + } + // if the first character is a 0, then the next character can be x + 'x' => { + if self.buffer.starts_with('0') { + if self.push() { + debug!("buffer: {}", self.buffer); + return emit!(self, State::Number => ?); + } + } else { + break; + } + } + // also hex numbers, only if the buffer starts with 0x + 'a'..='f' | 'A'..='F' => { + if self.buffer.starts_with("0x") { + if self.push() { + debug!("buffer: {}", self.buffer); + return emit!(self, State::Number => ?); + } + } + // handle scientific notation + else if self.buffer.contains(".") && c == 'e' { + if self.push() { + debug!("buffer: {}", self.buffer); + return emit!(self, State::Number => ?); + } + } else { + break; + } + } + _ => { + debug!("breaking"); + return emit!(self, State::Any => ?); + } + } + } + return emit!(self, State::Eof => ?); + } + + fn consume_newline(&mut self) -> Result>> { + match self.peek() { + Some('\n') => { + let state = if self.push() { State::Eof } else { State::Any }; + return emit!(self, state => ?); + } + _ => { + return emit!(self, State::Any => Token::NewLine); + } + } + } + + fn consume_string_literal(&mut self, quotation: Quotation) -> Result>> { + // loop until the you see the same quotation mark as the one you started with + // or if you see an escape character + self.push(); + while let Some(c) = self.peek() { + match c { + '"' => { + if quotation == Quotation::Double { + let state = if self.push() { State::Eof } else { State::Any }; + return emit!(self, state => ?); + } + } + '\'' => { + if quotation == Quotation::Single { + let state = if self.push() { State::Eof } else { State::Any }; + return emit!(self, state => ?); + } + } + _ => { + if self.push() { + self.state = State::Eof; + break; + } + } + } + } + panic!("unexpected state: {:?}", self.state); + } + + fn consume_variable(&mut self) -> Result>> { + // ignore $ + self.ignore(); + while let Some(c) = self.peek() { + match c { + 'a'..='z' | 'A'..='Z' | '0'..='9' | '-' | '.' => { + if self.push() { + return emit!(self, State::Any => ?); + } + } + _ => { + break; + } + } + } + return emit!(self, State::Op => ?); + } +} + +// Iterator Trait implementation for self< +impl<'input> Iterator for Lexer<'input> { + type Item = Spanned>; + + fn next(&mut self) -> Option { + if self.pos >= self.input.len() && self.state != State::Eof { + self.state = State::Eof; + return None; + } else if self.pos >= self.input.len() { + return None; + } + + if self.state == State::Program || self.state == State::Any { + self.skip_ws().unwrap(); + } + let res = match self.state { + State::Op => self.consume_op(), + State::Comment => self.consume_comment(), + State::Eof => { + return None; + } + State::NewLine => self.consume_newline(), + State::String(quotation) => self.consume_string_literal(quotation), + State::Variable => self.consume_variable(), + State::Word => self.consume_word(), + State::Number => self.consume_number(), + State::Any | State::Program => unreachable!(), + State::Shebang => todo!(), + }; + debug!( + ">>> state: {:?}, res: {:?}, pos: {}, line: {}, col: {}", + self.state, res, self.pos, self.line, self.col + ); + self.buffer.clear(); + match res { + Ok(token) => { + match token.node { + Token::Eof => { + return None; + } + _ => {} + } + return Some(token); + } + _ => { + return None; + } + } + panic!("unexpected state: {:?}", self.state); + } +} + +struct TokenStreamDisplay<'input>(Vec>>); + +impl Display for TokenStreamDisplay<'_> { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + for token in &self.0 { + write!( + f, + "- {}, {}:{}\n", + token.node, token.pos.line, token.pos.col + )?; + } + Ok(()) + } +} + +impl<'input> From>>> for TokenStreamDisplay<'input> { + fn from(tokens: Vec>>) -> Self { + TokenStreamDisplay(tokens) + } +} + +mod lexer_prop_tests; +mod lexer_snap_tests; + +pub struct TripleIterator<'input>(Lexer<'input>); + +impl<'input> TripleIterator<'input> { + pub fn new(input: &'input str) -> Self { + TripleIterator(Lexer::new(input, 0)) + } +} + +impl<'input> Iterator for TripleIterator<'input> { + type Item = (usize, Token<'input>, usize); + + fn next(&mut self) -> Option { + let token = self.0.next()?; + debug!("token: {:?}", token); + Some((token.start, token.node, token.end)) + } +} diff --git a/src/lib.rs b/src/lib.rs new file mode 100644 index 0000000..1478685 --- /dev/null +++ b/src/lib.rs @@ -0,0 +1,33 @@ +pub mod lexer; +pub mod parser; +pub mod compiler; + +use compiler::text; +use parser::ast; + +use crate::compiler::ir; + +#[salsa::jar(db = Db)] +pub struct Jar( + compiler::compile, + compiler::compile_effect, + compiler::add_imports, + text::to_spans, + text::calculate_line_lengths, + text::Span, + text::Spanned, + text::Position, + text::SourceMap, + text::SourceProgram, + ir::Program, + ir::Function, + ir::InternedEffect, + ir::Symbol, + ir::EffectDef, + ir::Import, + ir::Mangled, +); + +pub trait Db: salsa::DbWithJar {} + +impl Db for DB where DB: ?Sized + salsa::DbWithJar {} diff --git a/src/parser/ast.rs b/src/parser/ast.rs new file mode 100644 index 0000000..84894bf --- /dev/null +++ b/src/parser/ast.rs @@ -0,0 +1,188 @@ +use std::fmt::Display; + +use proptest::prelude::*; + +pub const ANON_FN_NAME: &str = "anonymous"; + +#[derive(PartialEq, Debug, Clone)] +pub struct Ident(pub String, pub Option>); + +#[derive(PartialEq, Debug)] +pub struct StringLit(pub String); + +#[derive(PartialEq, Debug)] +pub struct Binding(pub Ident, pub Box); + +#[derive(PartialEq, Debug)] +pub enum Literal { + Bool(bool), + Float(f64), + Integer(i64), + String(String), +} + +#[derive(PartialEq, Debug)] +pub enum Keyword { + None, + Some, + Let, + Action, + Saga, + Fn, + If, + Else, + Match, + Arrow, + Struct, + SelfValue, + When, + Effect, + Impl, + Use, + From, + Where, + Self_, +} +#[derive(PartialEq, Debug)] +pub enum Value { + Literal(Literal), + Ident(Ident), +} + +#[derive(PartialEq, Debug)] +pub struct Block(pub Vec); + +#[derive(PartialEq, Debug)] +pub struct Tuple(pub Vec); +#[derive(PartialEq, Debug)] +pub struct Array(pub Vec); + +#[derive(PartialEq, Debug)] +pub struct BinaryOperation { + pub lhs: Box, + pub op: Operator, + pub rhs: Box, +} + +#[derive(PartialEq, Debug)] +pub struct FnCall(pub Ident, pub Vec>); + +#[derive(PartialEq, Debug)] +pub enum Expression { + BinaryExpression(BinaryOperation), + Bool(bool), + Integer(i64), + Float(f64), + Ident(Ident), + Binding(Binding), + FnCall(FnCall), + String(String), + FnDef(FnDef), + ShellCommand(Vec, Vec>), + EffectDef(EffectDef), + StructDef(StructDef), + UseDef(UseDef), + Keyword(Keyword), + ImplDef(ImplDef), + Branch(Branch), + Error, +} + +#[derive(PartialEq, Debug)] +pub struct Field(pub Ident, pub Ident); + +#[derive(PartialEq, Debug)] +pub enum FnArg { + Reciever, + Field(Field) +} + +#[derive(PartialEq, Debug)] +pub struct Prototype { + pub name: Ident, + pub args: Vec, + pub ret: Option, + pub effects: Vec, +} + +#[derive(PartialEq, Debug)] +pub struct FnDef( + pub Prototype, + pub Block>, + pub Vec<(Ident, Block>)>, +); + +#[derive(PartialEq, Debug)] +pub enum Whitespace { + Space, + Tab, + Newline, +} + +#[derive(PartialEq, Debug, Clone)] +pub enum Operator { + Add, + Sub, + Mul, + Div, + Modulo, + Increment, + Decrement, + Maybe, + Not, + Neg, +} + +impl Arbitrary for Operator { + type Parameters = (); + type Strategy = BoxedStrategy; + + fn arbitrary_with(_args: ()) -> Self::Strategy { + prop_oneof![ + Just(Operator::Add), + Just(Operator::Sub), + Just(Operator::Mul), + Just(Operator::Div), + ] + .boxed() + } +} + +impl Display for Operator { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + let op = match self { + Operator::Add => "+", + Operator::Sub => "-", + Operator::Mul => "*", + Operator::Div => "/", + Operator::Modulo => "%", + Operator::Increment => "++", + Operator::Decrement => "--", + Operator::Maybe => "?", + Operator::Not => "!", + Operator::Neg => "-", + }; + write!(f, "{}", op) + } +} + +#[derive(PartialEq, Debug)] +pub struct StructDef(pub Ident, pub Block); + +#[derive(PartialEq, Debug)] +pub struct FnIdent(pub Ident); + +#[derive(PartialEq, Debug)] +pub struct EffectDef(pub Ident, pub Vec, pub Block); + +#[derive(PartialEq, Debug)] +pub struct UseDef(pub Vec, pub Ident); + +#[derive(PartialEq, Debug)] +pub struct ImplDef(pub Ident, pub Option, pub Block>); + +#[derive(PartialEq, Debug)] +pub struct Branch(pub Box, pub Vec<(Expression, Block>)>); + +#[derive(PartialEq, Debug)] +pub struct Module(pub Vec>); \ No newline at end of file diff --git a/src/parser/errors.rs b/src/parser/errors.rs new file mode 100644 index 0000000..ffaa424 --- /dev/null +++ b/src/parser/errors.rs @@ -0,0 +1,33 @@ +pub fn pretty_errors<'input>(src: &'input str, errors: Vec>) -> String { + let mut pretty = String::new(); + let mut last_end = 0; + for error in errors { + match error.error { + lalrpop_util::ParseError::InvalidToken { location } => todo!(), + lalrpop_util::ParseError::UnrecognizedEof { location, expected } => todo!(), + lalrpop_util::ParseError::UnrecognizedToken { token, expected } => { + // find the line and column of the start and end tokens, + // and print the line with a caret pointing to the error + let start = token.0; + let end = token.2; + let start_line = src[..start].rfind('\n').map_or(0, |i| i + 1); + let end_line = src[end..].find('\n').map_or(src.len(), |i| end + i); + let line = &src[start_line..end_line]; + let start_col = start - start_line; + let end_col = end - start_line; + // pretty.push_str(&src[last_end..start]); + pretty.push_str(&format!("error: unexpected token {:?}, expected one of {:?}\n", token.1, expected)); + pretty.push_str(&line); + pretty.push_str("\n"); + pretty.push_str(&" ".repeat(start_col)); + pretty.push_str(&"^".repeat(end_col - start_col)); + last_end = end; + }, + lalrpop_util::ParseError::ExtraToken { token } => todo!(), + lalrpop_util::ParseError::User { error } => todo!(), + }; + + } + // pretty.push_str(&src[last_end..]); + pretty +} diff --git a/src/parser/mod.rs b/src/parser/mod.rs new file mode 100644 index 0000000..a500533 --- /dev/null +++ b/src/parser/mod.rs @@ -0,0 +1,8 @@ +use lalrpop_util::lalrpop_mod; + +mod parser_snap_tests; +mod string; +pub mod ast; +mod errors; + +pub mod src; \ No newline at end of file diff --git a/src/parser/parser_snap_tests.rs b/src/parser/parser_snap_tests.rs new file mode 100644 index 0000000..30cc700 --- /dev/null +++ b/src/parser/parser_snap_tests.rs @@ -0,0 +1,111 @@ +use crate::lexer::Lexer; +use crate::parser::errors::pretty_errors; +use insta::assert_snapshot; +use okstd::prelude::*; + +#[cfg(test)] +#[okstd::test] +fn test_empty_parser() { + let input = " "; + let mut errors = vec![]; + let wrapper = crate::lexer::TripleIterator::new(input); + let t = crate::parser::src::SourceParser::new().parse(&mut errors, wrapper); + assert!(errors.is_empty()); + assert_snapshot!(format!("{:#?}", t.unwrap()), @r###" + Module( + [], + ) + "###); +} + +#[okstd::test] +fn test_fn_call_parser_with_multiple_args_and_strings() { + let input = "fn some()[] {let a = some_fnExpr(1, \"2\", 3)}"; + let mut errors = vec![]; + let wrapper = crate::lexer::TripleIterator::new(input); + let t = crate::parser::src::SourceParser::new().parse(&mut errors, wrapper); + if !errors.is_empty() { + panic!("{}", pretty_errors(&input, errors)); + } + assert_snapshot!(format!("{:#?}", t.unwrap())); +} + +#[okstd::test] +fn test_fn_def_parser() { + let input = r#"fn call(a:b, b:c) [throws, awaits, execs] { + call(1+1) + let a = 1 + } when throws { + raise(1) + }"#; + let mut errors = vec![]; + let wrapper = crate::lexer::TripleIterator::new(input); + let t = crate::parser::src::SourceParser::new().parse(&mut errors, wrapper); + assert!(errors.is_empty()); + assert_snapshot!(format!("{:#?}", t.unwrap())); +} + +#[okstd::test] +fn test_effect() { + let input = r#"effect VM: async + throws + execs { + catch() [] + await(f: Future) [] -> T + exec(arg0: string, args: stringvec) [] + }"#; + let mut errors = vec![]; + let wrapper = crate::lexer::TripleIterator::new(input); + let t = crate::parser::src::SourceParser::new().parse(&mut errors, wrapper); + assert!(errors.is_empty()); + assert_snapshot!(format!("{:#?}", t.unwrap())); +} + +#[okstd::test] +fn test_struct_parser() { + let input = r#"struct VM { + a: string + b: string + }"#; + let mut errors = vec![]; + let wrapper = crate::lexer::TripleIterator::new(input); + let t = crate::parser::src::SourceParser::new().parse(&mut errors, wrapper); + assert!(errors.is_empty()); + assert_snapshot!(format!("{:#?}", t.unwrap())); +} + +#[okstd::test] +fn test_enum_parser() { + let input = r#"use { exec } from host + + effect Make: async + throws + execs + reads + writes { + catch() [throws] + await(f: Future) [async, throws] -> T + exec(arg0: string, args: stringvec) [Make] -> i32 + read(name: string) [reads] -> string + write(name: string, value: string) [writes] + } + + struct Local { + host: host + } + + impl Make for Local { + fn catch(self) [throws] { + } + fn await(f: Future) [async, trhows] -> T { + yield() + } + fn exec(self, arg0: string, args: vec) [Vm] -> i32 { + self.host.read("jobserver") + if self.host.exec(arg0, args) { + raise(1) + } + } + }"#; + let mut errors: Vec> = vec![]; + let wrapper = crate::lexer::TripleIterator::new(input); + let t = crate::parser::src::SourceParser::new().parse(&mut errors, wrapper); + if !errors.is_empty() { + panic!("{}", pretty_errors(&input, errors)); + } + assert_snapshot!(format!("{:#?}", t.unwrap())); +} diff --git a/src/parser/snapshots/libsrc__parser__parser_snap_tests__old_test_test_effect.snap b/src/parser/snapshots/libsrc__parser__parser_snap_tests__old_test_test_effect.snap new file mode 100644 index 0000000..b2d31ec --- /dev/null +++ b/src/parser/snapshots/libsrc__parser__parser_snap_tests__old_test_test_effect.snap @@ -0,0 +1,118 @@ +--- +source: src/parser/parser_snap_tests.rs +expression: "format!(\"{:#?}\", t.unwrap())" +--- +Module( + [ + EffectDef( + EffectDef( + Ident( + "VM", + None, + ), + [ + Ident( + "async", + None, + ), + Ident( + "throws", + None, + ), + Ident( + "execs", + None, + ), + ], + Block( + [ + Prototype { + name: Ident( + "catch", + None, + ), + args: [], + ret: None, + effects: [], + }, + Prototype { + name: Ident( + "await", + Some( + [ + Ident( + "T", + None, + ), + ], + ), + ), + args: [ + Field( + Field( + Ident( + "f", + None, + ), + Ident( + "Future", + Some( + [ + Ident( + "T", + None, + ), + ], + ), + ), + ), + ), + ], + ret: Some( + Ident( + "T", + None, + ), + ), + effects: [], + }, + Prototype { + name: Ident( + "exec", + None, + ), + args: [ + Field( + Field( + Ident( + "arg0", + None, + ), + Ident( + "string", + None, + ), + ), + ), + Field( + Field( + Ident( + "args", + None, + ), + Ident( + "stringvec", + None, + ), + ), + ), + ], + ret: None, + effects: [], + }, + ], + ), + ), + ), + ], +) diff --git a/src/parser/snapshots/libsrc__parser__parser_snap_tests__old_test_test_enum_parser.snap b/src/parser/snapshots/libsrc__parser__parser_snap_tests__old_test_test_enum_parser.snap new file mode 100644 index 0000000..33abb61 --- /dev/null +++ b/src/parser/snapshots/libsrc__parser__parser_snap_tests__old_test_test_enum_parser.snap @@ -0,0 +1,384 @@ +--- +source: src/parser/parser_snap_tests.rs +expression: "format!(\"{:#?}\", t.unwrap())" +--- +Module( + [ + UseDef( + UseDef( + [ + Ident( + "crosmvm", + None, + ), + ], + Ident( + "std", + None, + ), + ), + ), + EffectDef( + EffectDef( + Ident( + "Vm", + None, + ), + [ + Ident( + "async", + None, + ), + Ident( + "throws", + None, + ), + Ident( + "execs", + None, + ), + ], + Block( + [ + Prototype { + name: Ident( + "catch", + None, + ), + args: [], + ret: None, + effects: [ + Ident( + "throws", + None, + ), + ], + }, + Prototype { + name: Ident( + "await", + Some( + [ + Ident( + "T", + None, + ), + ], + ), + ), + args: [ + Field( + Field( + Ident( + "f", + None, + ), + Ident( + "Future", + Some( + [ + Ident( + "T", + None, + ), + ], + ), + ), + ), + ), + ], + ret: Some( + Ident( + "T", + None, + ), + ), + effects: [ + Ident( + "async", + None, + ), + Ident( + "throws", + None, + ), + ], + }, + Prototype { + name: Ident( + "exec", + None, + ), + args: [ + Field( + Field( + Ident( + "arg0", + None, + ), + Ident( + "string", + None, + ), + ), + ), + Field( + Field( + Ident( + "args", + None, + ), + Ident( + "stringvec", + None, + ), + ), + ), + ], + ret: Some( + Ident( + "i32", + None, + ), + ), + effects: [ + Ident( + "Vm", + None, + ), + ], + }, + ], + ), + ), + ), + StructDef( + StructDef( + Ident( + "coopvm", + None, + ), + Block( + [], + ), + ), + ), + ImplDef( + ImplDef( + Ident( + "Vm", + None, + ), + Some( + Ident( + "coopvm", + None, + ), + ), + Block( + [ + FnDef( + FnDef( + Prototype { + name: Ident( + "catch", + None, + ), + args: [ + Reciever, + ], + ret: None, + effects: [ + Ident( + "throws", + None, + ), + ], + }, + Block( + [], + ), + [], + ), + ), + FnDef( + FnDef( + Prototype { + name: Ident( + "await", + Some( + [ + Ident( + "T", + None, + ), + ], + ), + ), + args: [ + Field( + Field( + Ident( + "f", + None, + ), + Ident( + "Future", + Some( + [ + Ident( + "T", + None, + ), + ], + ), + ), + ), + ), + ], + ret: Some( + Ident( + "T", + None, + ), + ), + effects: [ + Ident( + "async", + None, + ), + Ident( + "trhows", + None, + ), + ], + }, + Block( + [ + FnCall( + FnCall( + Ident( + "yield", + None, + ), + [], + ), + ), + ], + ), + [], + ), + ), + FnDef( + FnDef( + Prototype { + name: Ident( + "exec", + None, + ), + args: [ + Reciever, + Field( + Field( + Ident( + "arg0", + None, + ), + Ident( + "string", + None, + ), + ), + ), + Field( + Field( + Ident( + "args", + None, + ), + Ident( + "vec", + Some( + [ + Ident( + "string", + None, + ), + ], + ), + ), + ), + ), + ], + ret: Some( + Ident( + "i32", + None, + ), + ), + effects: [ + Ident( + "Vm", + None, + ), + ], + }, + Block( + [ + Branch( + Branch( + FnCall( + FnCall( + Ident( + "self.exec", + None, + ), + [ + Ident( + Ident( + "arg0", + None, + ), + ), + Ident( + Ident( + "args", + None, + ), + ), + ], + ), + ), + [ + ( + Bool( + true, + ), + Block( + [ + FnCall( + FnCall( + Ident( + "raise", + None, + ), + [], + ), + ), + ], + ), + ), + ], + ), + ), + ], + ), + [], + ), + ), + ], + ), + ), + ), + ], +) diff --git a/src/parser/snapshots/libsrc__parser__parser_snap_tests__old_test_test_enum_parser.snap.new b/src/parser/snapshots/libsrc__parser__parser_snap_tests__old_test_test_enum_parser.snap.new new file mode 100644 index 0000000..b1d9869 --- /dev/null +++ b/src/parser/snapshots/libsrc__parser__parser_snap_tests__old_test_test_enum_parser.snap.new @@ -0,0 +1,492 @@ +--- +source: src/parser/parser_snap_tests.rs +assertion_line: 110 +expression: "format!(\"{:#?}\", t.unwrap())" +--- +Module( + [ + UseDef( + UseDef( + [ + Ident( + "exec", + None, + ), + ], + Ident( + "host", + None, + ), + ), + ), + EffectDef( + EffectDef( + Ident( + "Make", + None, + ), + [ + Ident( + "async", + None, + ), + Ident( + "throws", + None, + ), + Ident( + "execs", + None, + ), + Ident( + "reads", + None, + ), + Ident( + "writes", + None, + ), + ], + Block( + [ + Prototype { + name: Ident( + "catch", + None, + ), + args: [], + ret: None, + effects: [ + Ident( + "throws", + None, + ), + ], + }, + Prototype { + name: Ident( + "await", + Some( + [ + Ident( + "T", + None, + ), + ], + ), + ), + args: [ + Field( + Field( + Ident( + "f", + None, + ), + Ident( + "Future", + Some( + [ + Ident( + "T", + None, + ), + ], + ), + ), + ), + ), + ], + ret: Some( + Ident( + "T", + None, + ), + ), + effects: [ + Ident( + "async", + None, + ), + Ident( + "throws", + None, + ), + ], + }, + Prototype { + name: Ident( + "exec", + None, + ), + args: [ + Field( + Field( + Ident( + "arg0", + None, + ), + Ident( + "string", + None, + ), + ), + ), + Field( + Field( + Ident( + "args", + None, + ), + Ident( + "stringvec", + None, + ), + ), + ), + ], + ret: Some( + Ident( + "i32", + None, + ), + ), + effects: [ + Ident( + "Make", + None, + ), + ], + }, + Prototype { + name: Ident( + "read", + None, + ), + args: [ + Field( + Field( + Ident( + "name", + None, + ), + Ident( + "string", + None, + ), + ), + ), + ], + ret: Some( + Ident( + "string", + None, + ), + ), + effects: [ + Ident( + "reads", + None, + ), + ], + }, + Prototype { + name: Ident( + "write", + None, + ), + args: [ + Field( + Field( + Ident( + "name", + None, + ), + Ident( + "string", + None, + ), + ), + ), + Field( + Field( + Ident( + "value", + None, + ), + Ident( + "string", + None, + ), + ), + ), + ], + ret: None, + effects: [ + Ident( + "writes", + None, + ), + ], + }, + ], + ), + ), + ), + StructDef( + StructDef( + Ident( + "Local", + None, + ), + Block( + [ + Field( + Ident( + "host", + None, + ), + Ident( + "host", + None, + ), + ), + ], + ), + ), + ), + ImplDef( + ImplDef( + Ident( + "Make", + None, + ), + Some( + Ident( + "Local", + None, + ), + ), + Block( + [ + FnDef( + FnDef( + Prototype { + name: Ident( + "catch", + None, + ), + args: [ + Reciever, + ], + ret: None, + effects: [ + Ident( + "throws", + None, + ), + ], + }, + Block( + [], + ), + [], + ), + ), + FnDef( + FnDef( + Prototype { + name: Ident( + "await", + Some( + [ + Ident( + "T", + None, + ), + ], + ), + ), + args: [ + Field( + Field( + Ident( + "f", + None, + ), + Ident( + "Future", + Some( + [ + Ident( + "T", + None, + ), + ], + ), + ), + ), + ), + ], + ret: Some( + Ident( + "T", + None, + ), + ), + effects: [ + Ident( + "async", + None, + ), + Ident( + "trhows", + None, + ), + ], + }, + Block( + [ + FnCall( + FnCall( + Ident( + "yield", + None, + ), + [], + ), + ), + ], + ), + [], + ), + ), + FnDef( + FnDef( + Prototype { + name: Ident( + "exec", + None, + ), + args: [ + Reciever, + Field( + Field( + Ident( + "arg0", + None, + ), + Ident( + "string", + None, + ), + ), + ), + Field( + Field( + Ident( + "args", + None, + ), + Ident( + "vec", + Some( + [ + Ident( + "string", + None, + ), + ], + ), + ), + ), + ), + ], + ret: Some( + Ident( + "i32", + None, + ), + ), + effects: [ + Ident( + "Vm", + None, + ), + ], + }, + Block( + [ + FnCall( + FnCall( + Ident( + "self.host.read", + None, + ), + [ + String( + "jobserver", + ), + ], + ), + ), + Branch( + Branch( + FnCall( + FnCall( + Ident( + "self.host.exec", + None, + ), + [ + Ident( + Ident( + "arg0", + None, + ), + ), + Ident( + Ident( + "args", + None, + ), + ), + ], + ), + ), + [ + ( + Bool( + true, + ), + Block( + [ + FnCall( + FnCall( + Ident( + "raise", + None, + ), + [ + Integer( + 1, + ), + ], + ), + ), + ], + ), + ), + ], + ), + ), + ], + ), + [], + ), + ), + ], + ), + ), + ), + ], +) diff --git a/src/parser/snapshots/libsrc__parser__parser_snap_tests__old_test_test_fn_call_parser_with_multiple_args_and_strings.snap b/src/parser/snapshots/libsrc__parser__parser_snap_tests__old_test_test_fn_call_parser_with_multiple_args_and_strings.snap new file mode 100644 index 0000000..88e7c09 --- /dev/null +++ b/src/parser/snapshots/libsrc__parser__parser_snap_tests__old_test_test_fn_call_parser_with_multiple_args_and_strings.snap @@ -0,0 +1,53 @@ +--- +source: src/parser/parser_snap_tests.rs +expression: "format!(\"{:#?}\", t.unwrap())" +--- +Module( + [ + FnDef( + FnDef( + Prototype { + name: Ident( + "some", + None, + ), + args: [], + ret: None, + effects: [], + }, + Block( + [ + Binding( + Binding( + Ident( + "a", + None, + ), + FnCall( + FnCall( + Ident( + "some_fnExpr", + None, + ), + [ + Integer( + 1, + ), + String( + "2", + ), + Integer( + 3, + ), + ], + ), + ), + ), + ), + ], + ), + [], + ), + ), + ], +) diff --git a/src/parser/snapshots/libsrc__parser__parser_snap_tests__old_test_test_fn_def_parser.snap b/src/parser/snapshots/libsrc__parser__parser_snap_tests__old_test_test_fn_def_parser.snap new file mode 100644 index 0000000..2d55495 --- /dev/null +++ b/src/parser/snapshots/libsrc__parser__parser_snap_tests__old_test_test_fn_def_parser.snap @@ -0,0 +1,120 @@ +--- +source: src/parser/parser_snap_tests.rs +expression: "format!(\"{:#?}\", t.unwrap())" +--- +Module( + [ + FnDef( + FnDef( + Prototype { + name: Ident( + "call", + None, + ), + args: [ + Field( + Field( + Ident( + "a", + None, + ), + Ident( + "b", + None, + ), + ), + ), + Field( + Field( + Ident( + "b", + None, + ), + Ident( + "c", + None, + ), + ), + ), + ], + ret: None, + effects: [ + Ident( + "throws", + None, + ), + Ident( + "awaits", + None, + ), + Ident( + "execs", + None, + ), + ], + }, + Block( + [ + FnCall( + FnCall( + Ident( + "call", + None, + ), + [ + BinaryExpression( + BinaryOperation { + lhs: Integer( + 1, + ), + op: Add, + rhs: Integer( + 1, + ), + }, + ), + ], + ), + ), + Binding( + Binding( + Ident( + "a", + None, + ), + Integer( + 1, + ), + ), + ), + ], + ), + [ + ( + Ident( + "throws", + None, + ), + Block( + [ + FnCall( + FnCall( + Ident( + "raise", + None, + ), + [ + Integer( + 1, + ), + ], + ), + ), + ], + ), + ), + ], + ), + ), + ], +) diff --git a/src/parser/snapshots/libsrc__parser__parser_snap_tests__old_test_test_struct_parser.snap b/src/parser/snapshots/libsrc__parser__parser_snap_tests__old_test_test_struct_parser.snap new file mode 100644 index 0000000..8988de3 --- /dev/null +++ b/src/parser/snapshots/libsrc__parser__parser_snap_tests__old_test_test_struct_parser.snap @@ -0,0 +1,40 @@ +--- +source: src/parser/parser_snap_tests.rs +expression: "format!(\"{:#?}\", t.unwrap())" +--- +Module( + [ + StructDef( + StructDef( + Ident( + "VM", + None, + ), + Block( + [ + Field( + Ident( + "a", + None, + ), + Ident( + "string", + None, + ), + ), + Field( + Ident( + "b", + None, + ), + Ident( + "string", + None, + ), + ), + ], + ), + ), + ), + ], +) diff --git a/src/parser/src.lalrpop b/src/parser/src.lalrpop new file mode 100644 index 0000000..76887c2 --- /dev/null +++ b/src/parser/src.lalrpop @@ -0,0 +1,362 @@ +use std::str::FromStr; + +use crate::parser::string::apply_string_escapes; +use super::ast::*; +use lalrpop_util::{ErrorRecovery, ParseError}; +use crate::lexer::{Position, Token, Word, Variable}; +use okstd::prelude::*; + +#[LALR] +grammar<'input, 'err>(errors: &'err mut Vec, &'static str>>); + +extern { + type Location = usize; + + enum Token<'input> { + // Operators + "|" => Token::Pipe, // | + "&" => Token::Ampersand, // & + ";" => Token::Semicolon, // ; + "=" => Token::Equals, // = + // Redirections + "<" => Token::LessThan, // < + ">" => Token::GreaterThan, // > + // Identifiers + // "param" => Variable::Parameter(<&'input str>), // var + // "param_default" => Variable::ParameterDefault(<&'input str>, <&'input str>), // var = value + // "positional_param" => Variable::PositionalParameter(), // $var + // Literals + "true" => Token::Word(Word::True), // true + "none" => Token::Word(Word::None), // none + "false" => Token::Word(Word::False), // false + "null" => Token::Word(Word::Null), // null + "fn" => Token::Word(Word::Fn), // fn + "if" => Token::Word(Word::If), // if + "else" => Token::Word(Word::Else), // else + "match" => Token::Word(Word::Match), // match + "let" => Token::Word(Word::Let), // let + "import" => Token::Word(Word::Import), // import + "action" => Token::Word(Word::Action), // action + "struct" => Token::Word(Word::Struct), // struct + "enum" => Token::Word(Word::Enum), // enum + "effect" => Token::Word(Word::Effect), // trait + "impl" => Token::Word(Word::Impl), // impl + "when" => Token::Word(Word::When), // when + "use" => Token::Word(Word::Use), // use + "from" => Token::Word(Word::From), // from + "where" => Token::Word(Word::Where), // where + "self" => Token::Word(Word::Self_), // self + "for" => Token::Word(Word::For), // for + + "#!" => Token::Shebang, // #! + + "ident" => Token::Word(Word::Ident(<&'input str>)), // a-z, A-Z, 0-9, _ + "string" => Token::String(<&'input str>), // "..." + // Comments + "comment" => Token::Comment(<&'input str>), // # + // Numbers + "int" => Token::Integer(), // 0-9 + "float" => Token::Float(), // [0-9]*.0-9+ + // Special + "eof" => Token::Eof, // EOF + "\n" => Token::NewLine, // \n + "(" => Token::LeftParen, // ( + ")" => Token::RightParen, // ) + "{" => Token::LeftBrace, // { + "}" => Token::RightBrace, // } + "[" => Token::LeftBracket, // [ + "]" => Token::RightBracket, // ] + "," => Token::Comma, // , + ":" => Token::Colon, // : + "." => Token::Dot, // . + "-" => Token::Minus, // - + "+" => Token::Plus, // + + "/" => Token::Divide, // / + "*" => Token::Multiply, // * + "%" => Token::Percent, // % + "$" => Token::Dollar, // $ + "!" => Token::Exclamation, // ! + "?" => Token::Question, // ? + "~" => Token::Tilde, // ~ + "@" => Token::At, // @ + "^" => Token::Caret, // ^ + "->" => Token::Arrow, // -> + "=>" => Token::FatArrow, // => + } +} + +Spanned: (usize, T, usize) = { + <@L> <@R> => (<>) +}; + +Path: Vec = { + )*> => match e { + None => v, + Some(e) => { + v.push(e); + v + } + } +} + +Lines: Vec = { + "\n")*> => match e { + None => v, + Some(e) => { + v.push(e); + v + } + } +} + +Comma: Vec = { // (0) + ",")*> => match e { // (1) + None=> v, + Some(e) => { + v.push(e); + v + } + } +}; + + +Plus: Vec = { + "+")*> => match e { // (1) + None=> v, + Some(e) => { + v.push(e); + v + } + } +}; + + +None: Expression = "none" => Expression::Keyword(Keyword::None); +When: Expression = "when" => Expression::Keyword(Keyword::When); +Fn: Expression = "fn" => Expression::Keyword(Keyword::Fn); +Let: Expression = "let" => Expression::Keyword(Keyword::Let); +Effect: Expression = "effect" => Expression::Keyword(Keyword::Effect); +Struct: Expression = "struct" => Expression::Keyword(Keyword::Struct); +Impl: Expression = "impl" => Expression::Keyword(Keyword::Impl); +Use: Expression = "use" => Expression::Keyword(Keyword::Use); +From: Expression = "from" => Expression::Keyword(Keyword::From); +Where: Expression = "where" => Expression::Keyword(Keyword::Where); +Self_: Expression = "self" => Expression::Keyword(Keyword::Self_); +Else: Expression = "else" => Expression::Keyword(Keyword::Else); +If: Expression = "if" => Expression::Keyword(Keyword::If); +True: Expression = "true" => Expression::Bool(true); +False: Expression = "false" => Expression::Bool(false); + +Consecutive: bool = { + Consecutive > > => match l.2 == r.0, + L => false +}; + +Ident: Ident = { + => Ident(i.to_string(), None), +}; + +IdentWithGenerics: Ident = { + "<" > ">" => Ident(i.to_string(), Some(g)), +}; + +IdentOrIdentWithGenerics: Ident = { + => i, + => i, +}; + +Punctuated: Vec = { + )*> => match e { + None => v, + Some(e) => { + v.push(e); + v + } + } +}; + + +Atom: Value = { + #[precedence(level="0")] + => Value::Literal(Literal::Integer(i)), + => Value::Literal(Literal::Float(f)), + => { + let start = 1; + let end = s.len() - 1; + Value::Literal(Literal::String(s.get(start..end).expect(format!("malformed string {s}, strings must be quoted").as_str()).to_string())) + }, + #[precedence(level="1")] + => Value::Ident(i), +}; + +Expression: Box = { + #[precedence(level="1")] + Term, + + #[precedence(level="2")] #[assoc(side="left")] + "*" => { + Box::new(Expression::BinaryExpression(BinaryOperation { + lhs, + op: Operator::Mul, + rhs + })) + }, + "/" => { + Box::new(Expression::BinaryExpression(BinaryOperation { + lhs, + op: Operator::Div, + rhs + })) + }, + + #[precedence(level="3")] #[assoc(side="left")] + "+" => { + Box::new(Expression::BinaryExpression(BinaryOperation { + lhs, + op: Operator::Add, + rhs + })) + }, + "-" => { + Box::new(Expression::BinaryExpression(BinaryOperation { + lhs, + op: Operator::Sub, + rhs + })) + }, +} + +Field: Field = { + ":" => Field(name, ty) +} + +TypeParameters: Vec = + "<" > ">"; + +FnArg: FnArg = { + => FnArg::Reciever, + => FnArg::Field(field), +} + +Prototype: Prototype = { + "("> ")" "[" > "]" " Ident)?> => { + let ret = match ret { + None => None, + Some(r) => Some(r.1), + }; + Prototype{name, args, ret, effects} + } +} + + +String: Box = { + => { + let start = 1; + let end = s.len() - 1; + Box::new(Expression::String(s.get(start..end).expect(format!("malformed string {s}, strings must be quoted").as_str()).to_string())) + }, +} + + +FnCall: Box = { + "(" > ")" "]")?> => Box::new(Expression::FnCall(FnCall(name, args))) +} + +Term: Box = { + => <>, + => { + Box::new(Expression::Integer(val)) + }, + => { + Box::new(Expression::Ident(i)) + }, + => <>, + => Box::new(<>), + => Box::new(<>), + "(" ")", +} + +Block: Block = { + "{" ("\n"?) > "}" => Block(lines) +} + +WhenBlock: (Ident,Block>) = { + When > => (i, lines) +} + + +FnDef: Box = { + Fn > => Box::new(Expression::FnDef(FnDef(proto, block, handlers))), +} + +EffectDef: Box = { + Effect ":" > > => Box::new(Expression::EffectDef(EffectDef(i, effects,block))), +} + +ShellComponent: Box = { + => Box::new(Expression::String((s).to_string())), + => Box::new(Expression::Ident(i)), +} + +ShebangLine: Box = { + "#!" => Box::new(Expression::ShellCommand(path.into_iter().map(|i| i.1.into()).collect(), components)), +} + +StructDef: Box = { + Struct > => Box::new(Expression::StructDef(StructDef(i, fields))), +} + +IfDef: Box = { + If > => { + let branch = Branch ( + cond, + vec![ + (Expression::Bool(true), if_), + ] + ); + Box::new(Expression::Branch(branch)) + }, + If > Else > => { + let branch = Branch ( + cond, + vec![ + (Expression::Bool(true), if_), + (Expression::Bool(false), else_), + ] + ); + Box::new(Expression::Branch(branch)) + }, +} + +Statement: Box = { + #[precedence(level="0")] + => <>, + #[precedence(level="1")] + Let "=" => Box::new(Expression::Binding(Binding(name, value))), + => <>, +} + +UseDef: Box = { + Use "{" > "}" From => Box::new(Expression::UseDef(UseDef(imports, i))), +} + +ImplDef: Box = { + Impl > => Box::new(Expression::ImplDef(ImplDef(i, t.map(|t| t.1), lines))), +} + + +TopLevel: Box = { + => <>, + => <>, + => <>, + => <>, + => <>, +} + +pub Source: Module = { + => Module(expr.into_iter().map(|e| e.1).collect()), + ! => { + errors.push(<>); + Module(vec![]) + } +}; diff --git a/src/parser/src.rs b/src/parser/src.rs new file mode 100644 index 0000000..1287b60 --- /dev/null +++ b/src/parser/src.rs @@ -0,0 +1,12968 @@ +// auto-generated: "lalrpop 0.20.2" +// sha3: 58a0b50c7ef28fe4c687287586df7da9739726b0ed43438d355383eb2237332f +use std::str::FromStr; +use crate::parser::string::apply_string_escapes; +use super::ast::*; +use lalrpop_util::{ErrorRecovery, ParseError}; +use crate::lexer::{Position, Token, Word, Variable}; +use okstd::prelude::*; +#[allow(unused_extern_crates)] +extern crate lalrpop_util as __lalrpop_util; +#[allow(unused_imports)] +use self::__lalrpop_util::state_machine as __state_machine; +extern crate core; +extern crate alloc; + +#[rustfmt::skip] +#[allow(non_snake_case, non_camel_case_types, unused_mut, unused_variables, unused_imports, unused_parens, clippy::needless_lifetimes, clippy::type_complexity, clippy::needless_return, clippy::too_many_arguments, clippy::never_loop, clippy::match_single_binding, clippy::needless_raw_string_hashes)] +mod __parse__Source { + + use std::str::FromStr; + use crate::parser::string::apply_string_escapes; + use super::super::ast::*; + use lalrpop_util::{ErrorRecovery, ParseError}; + use crate::lexer::{Position, Token, Word, Variable}; + use okstd::prelude::*; + #[allow(unused_extern_crates)] + extern crate lalrpop_util as __lalrpop_util; + #[allow(unused_imports)] + use self::__lalrpop_util::state_machine as __state_machine; + extern crate core; + extern crate alloc; + use super::__ToTriple; + #[allow(dead_code)] + pub(crate) enum __Symbol<'input> + { + Variant0(Token<'input>), + Variant1(&'input str), + Variant2(f64), + Variant3(i64), + Variant4(__lalrpop_util::ErrorRecovery, &'static str>), + Variant5(alloc::vec::Vec>), + Variant6(core::option::Option>), + Variant7((Token<'input>, Ident)), + Variant8(core::option::Option<(Token<'input>, Ident)>), + Variant9(alloc::vec::Vec<(Token<'input>, Ident)>), + Variant10(Ident), + Variant11(core::option::Option), + Variant12((alloc::vec::Vec>, Box)), + Variant13(alloc::vec::Vec<(alloc::vec::Vec>, Box)>), + Variant14(Box), + Variant15(alloc::vec::Vec>), + Variant16(Field), + Variant17(alloc::vec::Vec), + Variant18(FnArg), + Variant19(alloc::vec::Vec), + Variant20(alloc::vec::Vec), + Variant21(Prototype), + Variant22(alloc::vec::Vec), + Variant23((Ident, Block>)), + Variant24(alloc::vec::Vec<(Ident, Block>)>), + Variant25(Value), + Variant26(Block), + Variant27(Block>), + Variant28(Block), + Variant29(Vec>), + Variant30(Vec), + Variant31(Vec), + Variant32(Expression), + Variant33(core::option::Option>), + Variant34(core::option::Option), + Variant35(core::option::Option), + Variant36(Vec), + Variant37(Vec), + Variant38(core::option::Option), + Variant39(Module), + } + const __ACTION: &[i16] = &[ + // State 0 + 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 70, 0, 0, 0, 0, 0, 0, 71, + // State 1 + 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 70, 0, 0, 0, 0, 0, 0, 0, + // State 2 + 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 70, 0, 0, 0, 0, 0, 0, 0, + // State 3 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 4 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 5 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 6 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 7 + 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 70, 0, 0, 0, 0, 0, 0, 0, + // State 8 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, + // State 9 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, + // State 10 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, + // State 11 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -103, 0, 0, + // State 12 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -165, 0, 0, 0, 0, + // State 13 + 0, 0, 0, 0, 0, 0, 0, -99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 14 + -129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -129, 0, 0, 0, 0, 0, -129, 0, 0, 0, 0, -129, 0, 0, 0, 0, 0, 0, 0, 0, -129, 0, -129, 94, 0, 0, 0, -129, 0, 0, + // State 15 + 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 101, 0, 0, 0, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -160, 0, 0, + // State 16 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 17 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 18 + 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -152, 0, 0, + // State 19 + 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -148, 0, 0, + // State 20 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -105, 0, 0, 0, -105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -105, 0, 0, + // State 21 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, 0, 0, 0, 0, + // State 22 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, + // State 23 + 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 24 + -130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -130, 0, 0, 0, 0, 0, -130, 0, 0, 0, 0, -130, 0, 0, 0, 0, 0, 0, 0, 0, -130, 0, -130, 94, 0, 0, 0, -130, 0, 0, + // State 25 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 26 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 101, 0, 0, 0, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -162, 0, 0, + // State 27 + 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, 0, 0, 0, 0, 80, 0, 0, 0, 127, 0, 0, 0, 0, 0, 128, 0, 129, 0, 0, 0, 0, 0, 0, 0, 0, + // State 28 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 29 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 101, 0, 0, 0, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -160, 0, 0, + // State 30 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, + // State 31 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -154, 0, 0, + // State 32 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -152, 0, 0, + // State 33 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -150, 0, 0, + // State 34 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -148, 0, 0, + // State 35 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 36 + 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -156, 0, 0, + // State 37 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 38 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, + // State 39 + 0, 0, 0, 0, 0, 0, 42, -95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, 0, 0, 0, 0, 80, 0, 0, 0, 127, 0, 0, 0, 0, 0, 128, 0, 129, 0, 0, 0, 0, 0, 0, 0, 0, + // State 40 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, + // State 41 + 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, 0, 0, 0, 0, 80, 0, 0, 0, 127, 0, 0, 0, 0, 0, 128, 0, 129, 0, 0, 0, 0, 0, 0, 0, 0, + // State 42 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 43 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -158, 0, 0, + // State 44 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -156, 0, 0, + // State 45 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 46 + 0, 0, 0, 0, 0, 0, 42, -97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, 0, 0, 0, 0, 80, 0, 0, 0, 127, 0, 0, 0, 0, 0, 128, 0, 129, 0, 0, 0, 0, 0, 0, 0, 0, + // State 47 + -141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141, 0, 0, + // State 48 + 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, 0, 0, 0, 0, 80, 0, 0, 0, 127, 0, 0, 0, 0, 0, 128, 0, 129, 0, 0, 0, 0, 0, 0, 0, 0, + // State 49 + 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, 0, 0, 0, 0, 80, 0, 0, 0, 127, 0, 0, 0, 0, 0, 128, 0, 129, 0, 0, 0, 0, 0, 0, 0, 0, + // State 50 + 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, 0, 0, 0, 0, 80, 0, 0, 0, 127, 0, 0, 0, 0, 0, 128, 0, 129, 0, 0, 0, 0, 0, 0, 0, 0, + // State 51 + 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, 0, 0, 0, 0, 80, 0, 0, 0, 127, 0, 0, 0, 0, 0, 128, 0, 129, 0, 0, 0, 0, 0, 0, 0, 0, + // State 52 + 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, 0, 0, 0, 0, 80, 0, 0, 0, 127, 0, 0, 0, 0, 0, 128, 0, 129, 0, 0, 0, 0, 0, 0, 0, 0, + // State 53 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, + // State 54 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 55 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 56 + -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -199, 0, 0, 0, 0, 0, -199, 0, 0, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, -199, 0, -199, 0, 0, 0, 0, 0, 0, 0, + // State 57 + -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, 0, 0, 0, 0, 0, -198, 0, 0, 0, 0, -198, 0, 0, 0, 0, 0, 0, 0, 0, -198, 0, -198, 0, 0, 0, 0, 0, 0, 0, + // State 58 + -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, 0, 0, 0, 0, -202, 0, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, -202, 0, 0, 0, 0, 0, 0, 0, + // State 59 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 60 + -200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -200, 0, 0, 0, 0, 0, -200, 0, 0, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, -200, 0, -200, 0, 0, 0, 0, 0, 0, 0, + // State 61 + -22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -22, 0, 0, 0, 0, 0, -22, 0, 0, 0, 0, -22, 0, 0, 0, 0, 0, 0, 0, 0, -22, 0, -22, 0, 0, 0, 0, 0, 0, 0, + // State 62 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, + // State 63 + -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, 0, 0, 0, -201, 0, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, + // State 64 + -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, -3, 0, 0, 0, 0, 0, 0, 0, + // State 65 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 66 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 67 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 68 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 69 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -205, 0, 0, 0, 0, + // State 70 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 71 + -23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -23, 0, 0, 0, 0, 0, -23, 0, 0, 0, 0, -23, 0, 0, 0, 0, 0, 0, 0, 0, -23, 0, -23, 0, 0, 0, 0, 0, 0, 0, + // State 72 + -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, -4, 0, -4, 0, 0, 0, 0, 0, 0, 0, + // State 73 + -24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, 0, -24, 0, -24, 0, 0, 0, 0, 0, 0, 0, + // State 74 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 75 + -134, 0, 0, 0, 0, 0, 0, 0, 0, -134, -134, 0, 0, 0, 0, -134, 0, 0, -134, 0, -134, 0, 0, 0, -134, 0, 0, 0, -134, 0, 0, 0, 0, 0, -134, -134, 0, 0, 0, -134, 0, 0, 0, 0, 0, 0, 0, 0, -134, 0, -134, 0, 0, -134, 0, -134, 0, 0, + // State 76 + -137, 0, 0, 0, 0, 0, -137, -137, 0, 0, -137, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -137, 0, 0, + // State 77 + 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 78 + -138, 0, 0, 0, 0, 0, -138, -138, 0, 0, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -138, 0, 0, + // State 79 + -134, 0, 0, 0, 0, 0, -134, -134, -134, -134, -134, -134, 0, 0, -134, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -134, 0, -134, 0, 0, + // State 80 + -25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -25, 0, 0, 0, 0, 0, -25, 0, 0, 0, 0, -25, 0, 0, 0, 0, 0, 0, 0, 0, -25, 0, -25, 0, 0, 0, 0, 0, 0, 0, + // State 81 + -145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -145, 0, 0, 0, 0, 0, -145, 0, 0, 0, 0, -145, 0, 0, 0, 0, 0, 0, 0, 0, -145, 0, -145, 0, 0, 0, 0, 0, 0, 0, + // State 82 + -190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -190, 0, 0, 0, 0, 0, -190, 0, 0, 0, 0, -190, 0, 0, 0, 0, 0, 0, 0, 0, -190, 0, -190, 0, 0, 0, 0, 0, 0, 0, + // State 83 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, + // State 84 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, + // State 85 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -164, 0, 0, 0, 0, + // State 86 + 0, 0, 0, 0, 0, 0, 0, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 87 + 0, 0, 0, 0, 0, 0, 0, -124, 0, 0, -124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 88 + 0, 0, 0, 0, 0, 0, 0, -98, 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 89 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 90 + 0, 0, 0, 0, 0, 0, 0, -123, 0, 0, -123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 91 + 0, 0, 0, 0, 0, 0, 0, -172, 0, 0, -172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 92 + -79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, 0, -79, 0, -79, -79, 0, 0, 0, -79, 0, 0, + // State 93 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 94 + -185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -185, 0, 0, + // State 95 + 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 96 + -183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -183, 0, 0, + // State 97 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 131, 0, 0, + // State 98 + 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -159, 0, 0, + // State 99 + -184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -184, 0, 0, + // State 100 + 0, 0, 0, 0, 0, 0, -140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -140, 0, 0, 0, 0, -140, 0, 0, 0, -140, 0, 0, 0, 0, 0, -140, 0, -140, 0, 0, 0, 0, 0, 0, 0, 0, + // State 101 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 102 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 103 + 137, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -151, 0, 0, + // State 104 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, 0, 0, + // State 105 + 141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -147, 0, 0, + // State 106 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, + // State 107 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, -104, 0, 0, 0, -104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -104, 0, 0, + // State 108 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -59, 0, 0, 0, -59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -59, 0, 0, + // State 109 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, 0, 0, 0, 0, + // State 110 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -54, 0, 0, 0, 0, + // State 111 + -107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -107, 0, 0, 0, 0, 0, -107, 0, 0, 0, 0, -107, 0, 0, 0, 0, 0, 0, 0, 0, -107, 0, -107, 0, 0, 0, 0, 0, 0, 0, + // State 112 + 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 149, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 113 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 114 + 0, 0, 0, 0, 0, 0, 0, -44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -44, 0, 0, 0, 0, 0, 0, 0, 0, -44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 115 + -80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -80, 0, 0, 0, 0, 0, -80, 0, 0, 0, 0, -80, 0, 0, 0, 0, 0, 0, 0, 0, -80, 0, -80, -80, 0, 0, 0, -80, 0, 0, + // State 116 + 152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -161, 0, 0, + // State 117 + -115, 0, 0, 0, 0, 0, 0, -115, -115, -115, -115, -115, 0, 0, -115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -115, 0, -115, 0, 0, + // State 118 + -111, 0, 0, 0, 0, 0, 0, -111, 51, -111, -111, -111, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, 0, -111, 0, 0, + // State 119 + -196, 0, 0, 0, 0, 0, 0, -196, -196, -196, -196, -196, 0, 0, -196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -196, 0, -196, 0, 0, + // State 120 + -194, 0, 0, 0, 0, 0, 0, -194, -194, -194, -194, -194, 0, 0, -194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -194, 0, -194, 0, 0, + // State 121 + -193, 0, 0, 0, 0, 0, -137, -193, -193, -193, -193, -193, 0, 0, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0, -193, 0, 0, + // State 122 + -191, 0, 0, 0, 0, 0, 0, -191, -191, -191, -191, -191, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0, -191, 0, 0, + // State 123 + -112, 0, 0, 0, 0, 0, 0, -112, -112, -112, -112, -112, 0, 0, -112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, 0, -112, 0, 0, + // State 124 + -195, 0, 0, 0, 0, 0, 0, -195, -195, -195, -195, -195, 0, 0, -195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -195, 0, -195, 0, 0, + // State 125 + -118, 0, 0, 0, 0, 0, 0, -118, -118, -118, -118, -118, 0, 0, -118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -118, 0, -118, 0, 0, + // State 126 + -192, 0, 0, 0, 0, 0, 0, -192, -192, -192, -192, -192, 0, 0, -192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, 0, -192, 0, 0, + // State 127 + -188, 0, 0, 0, 0, 0, 0, -188, -188, -188, -188, -188, 0, 0, -188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -188, 0, -188, 0, 0, + // State 128 + -203, 0, 0, 0, 0, 0, 0, -203, -203, -203, -203, -203, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 0, -203, 0, 0, + // State 129 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 130 + -93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -93, -93, 0, 0, 0, 0, -93, 0, 0, 0, 0, -93, 0, 0, 0, 0, 0, 0, 0, 0, -93, 0, -93, -93, 0, 0, 0, -93, 0, 0, + // State 131 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, -69, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, + // State 132 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 156, 0, 0, + // State 133 + -139, 0, 0, 0, 0, 0, -139, -139, 0, 0, -139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -139, 0, 0, + // State 134 + -144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -144, 0, 0, 0, 0, 0, -144, 0, 0, 0, 0, -144, 0, 0, 0, 0, 0, 0, 0, 0, -144, 0, -144, 0, 0, 0, 0, 0, 0, 0, + // State 135 + 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -153, 0, 0, + // State 136 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -49, 0, 0, + // State 137 + -89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -89, 0, 0, 0, 0, 0, -89, 0, 0, 0, 0, -89, 0, 0, 0, 0, 0, 0, 0, 0, -89, 0, -89, 0, 0, 0, 0, 0, 0, 0, + // State 138 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 0, 0, + // State 139 + 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -149, 0, 0, + // State 140 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -39, 0, 0, + // State 141 + -87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -87, 0, 0, 0, 0, 0, -87, 0, 0, 0, 0, -87, 0, 0, 0, 0, 0, 0, 0, 0, -87, 0, -87, 0, 0, 0, 0, 0, 0, 0, + // State 142 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 160, 0, 0, + // State 143 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -60, 0, 0, 0, -60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -60, 0, 0, + // State 144 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -133, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 145 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -55, 0, 0, 0, 0, + // State 146 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 163, 0, 0, + // State 147 + 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -155, 0, 0, + // State 148 + 0, 0, 0, 0, 0, 0, 0, -45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -45, 0, 0, 0, 0, 0, 0, 0, 0, -45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 149 + -119, 0, 0, 0, 0, 0, 0, -119, 0, 0, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, 0, 0, + // State 150 + -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208, 0, 0, 0, 0, 0, -208, 0, 0, 0, 0, -208, 0, 0, 0, 0, 0, 0, 0, 0, -208, 0, -208, -208, 0, 0, 0, -208, 0, 0, + // State 151 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, -70, 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, 0, 0, + // State 152 + 0, 0, 0, 0, 0, 0, 0, 168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 153 + 0, 0, 0, 0, 0, 0, 0, -94, 0, 49, 169, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 154 + 0, 0, 0, 0, 0, 0, 0, 175, 0, 49, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 155 + -92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -92, -92, 0, 0, 0, 0, -92, 0, 0, 0, 0, -92, 0, 0, 0, 0, 0, 0, 0, 0, -92, 0, -92, -92, 0, 0, 0, -92, 0, 0, + // State 156 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -50, 0, 0, + // State 157 + -88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -88, 0, 0, 0, 0, 0, -88, 0, 0, 0, 0, -88, 0, 0, 0, 0, 0, 0, 0, 0, -88, 0, -88, 0, 0, 0, 0, 0, 0, 0, + // State 158 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -40, 0, 0, + // State 159 + -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -86, 0, 0, 0, 0, 0, -86, 0, 0, 0, 0, -86, 0, 0, 0, 0, 0, 0, 0, 0, -86, 0, -86, 0, 0, 0, 0, 0, 0, 0, + // State 160 + -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, 0, -206, 0, -206, 0, 0, 0, 0, 0, 0, 0, + // State 161 + 177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -157, 0, 0, + // State 162 + -91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -91, 0, 0, 0, 0, 0, -91, 0, 0, 0, 0, -91, 0, 0, 0, 0, 0, 0, 0, 0, -91, 0, -91, 0, 0, 0, 0, 0, 0, 0, + // State 163 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -64, 0, 0, + // State 164 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 178, 0, 0, + // State 165 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 166 + 0, 0, 0, 0, 0, 0, 0, -96, 0, 49, 180, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 167 + -128, 0, 0, 0, 0, 0, 0, -128, -128, -128, -128, -128, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 0, -128, 0, 0, + // State 168 + 0, 0, 0, 0, 0, 0, -34, -34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -34, 0, 0, 0, 0, -34, 0, 0, 0, -34, 0, 0, 0, 0, 0, -34, 0, -34, 0, 0, 0, 0, 0, 0, 0, 0, + // State 169 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -108, 0, 0, 0, 0, + // State 170 + -109, 0, 0, 0, 0, 0, 0, -109, 51, -109, -109, -109, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -109, 0, -109, 0, 0, + // State 171 + -110, 0, 0, 0, 0, 0, 0, -110, 51, -110, -110, -110, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, 0, -110, 0, 0, + // State 172 + -113, 0, 0, 0, 0, 0, 0, -113, -113, -113, -113, -113, 0, 0, -113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, 0, -113, 0, 0, + // State 173 + -114, 0, 0, 0, 0, 0, 0, -114, -114, -114, -114, -114, 0, 0, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, 0, -114, 0, 0, + // State 174 + -197, 0, 0, 0, 0, 0, 0, -197, -197, -197, -197, -197, 0, 0, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, 0, -197, 0, 0, + // State 175 + -182, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -182, 0, 0, + // State 176 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -65, 0, 0, + // State 177 + -90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -90, 0, 0, 0, 0, 0, -90, 0, 0, 0, 0, -90, 0, 0, 0, 0, 0, 0, 0, 0, -90, 0, -90, 0, 0, 0, 0, 0, 0, 0, + // State 178 + -169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -169, 0, -169, 0, 0, + // State 179 + 0, 0, 0, 0, 0, 0, -35, -35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -35, 0, 0, 0, 0, -35, 0, 0, 0, -35, 0, 0, 0, 0, 0, -35, 0, -35, 0, 0, 0, 0, 0, 0, 0, 0, + // State 180 + -142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, 0, 0, + // State 181 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 182 + -168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, 0, -168, 0, 0, + // State 183 + -127, 0, 0, 0, 0, 0, 0, -127, -127, -127, -127, -127, 0, 0, -127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -127, 0, -127, 0, 0, + ]; + fn __action(state: i16, integer: usize) -> i16 { + __ACTION[(state as usize) * 58 + integer] + } + const __EOF_ACTION: &[i16] = &[ + // State 0 + -179, + // State 1 + 0, + // State 2 + -180, + // State 3 + 0, + // State 4 + 0, + // State 5 + 0, + // State 6 + 0, + // State 7 + 0, + // State 8 + 0, + // State 9 + 0, + // State 10 + 0, + // State 11 + 0, + // State 12 + 0, + // State 13 + 0, + // State 14 + -129, + // State 15 + 0, + // State 16 + 0, + // State 17 + 0, + // State 18 + 0, + // State 19 + 0, + // State 20 + 0, + // State 21 + 0, + // State 22 + 0, + // State 23 + 0, + // State 24 + -130, + // State 25 + 0, + // State 26 + 0, + // State 27 + 0, + // State 28 + 0, + // State 29 + 0, + // State 30 + 0, + // State 31 + 0, + // State 32 + 0, + // State 33 + 0, + // State 34 + 0, + // State 35 + 0, + // State 36 + 0, + // State 37 + 0, + // State 38 + 0, + // State 39 + 0, + // State 40 + 0, + // State 41 + 0, + // State 42 + 0, + // State 43 + 0, + // State 44 + 0, + // State 45 + 0, + // State 46 + 0, + // State 47 + 0, + // State 48 + 0, + // State 49 + 0, + // State 50 + 0, + // State 51 + 0, + // State 52 + 0, + // State 53 + 0, + // State 54 + 0, + // State 55 + 0, + // State 56 + -199, + // State 57 + -198, + // State 58 + -202, + // State 59 + -210, + // State 60 + -200, + // State 61 + -22, + // State 62 + 0, + // State 63 + -201, + // State 64 + 0, + // State 65 + 0, + // State 66 + 0, + // State 67 + 0, + // State 68 + 0, + // State 69 + 0, + // State 70 + -181, + // State 71 + -23, + // State 72 + 0, + // State 73 + -24, + // State 74 + 0, + // State 75 + -134, + // State 76 + 0, + // State 77 + 0, + // State 78 + 0, + // State 79 + 0, + // State 80 + -25, + // State 81 + -145, + // State 82 + -190, + // State 83 + 0, + // State 84 + 0, + // State 85 + 0, + // State 86 + 0, + // State 87 + 0, + // State 88 + 0, + // State 89 + 0, + // State 90 + 0, + // State 91 + 0, + // State 92 + -79, + // State 93 + 0, + // State 94 + 0, + // State 95 + 0, + // State 96 + 0, + // State 97 + 0, + // State 98 + 0, + // State 99 + 0, + // State 100 + 0, + // State 101 + 0, + // State 102 + 0, + // State 103 + 0, + // State 104 + 0, + // State 105 + 0, + // State 106 + 0, + // State 107 + 0, + // State 108 + 0, + // State 109 + 0, + // State 110 + 0, + // State 111 + -107, + // State 112 + 0, + // State 113 + 0, + // State 114 + 0, + // State 115 + -80, + // State 116 + 0, + // State 117 + 0, + // State 118 + 0, + // State 119 + 0, + // State 120 + 0, + // State 121 + 0, + // State 122 + 0, + // State 123 + 0, + // State 124 + 0, + // State 125 + 0, + // State 126 + 0, + // State 127 + 0, + // State 128 + 0, + // State 129 + 0, + // State 130 + -93, + // State 131 + 0, + // State 132 + 0, + // State 133 + 0, + // State 134 + -144, + // State 135 + 0, + // State 136 + 0, + // State 137 + -89, + // State 138 + 0, + // State 139 + 0, + // State 140 + 0, + // State 141 + -87, + // State 142 + 0, + // State 143 + 0, + // State 144 + 0, + // State 145 + 0, + // State 146 + 0, + // State 147 + 0, + // State 148 + 0, + // State 149 + 0, + // State 150 + -208, + // State 151 + 0, + // State 152 + 0, + // State 153 + 0, + // State 154 + 0, + // State 155 + -92, + // State 156 + 0, + // State 157 + -88, + // State 158 + 0, + // State 159 + -86, + // State 160 + -206, + // State 161 + 0, + // State 162 + -91, + // State 163 + 0, + // State 164 + 0, + // State 165 + 0, + // State 166 + 0, + // State 167 + 0, + // State 168 + 0, + // State 169 + 0, + // State 170 + 0, + // State 171 + 0, + // State 172 + 0, + // State 173 + 0, + // State 174 + 0, + // State 175 + 0, + // State 176 + 0, + // State 177 + -90, + // State 178 + 0, + // State 179 + 0, + // State 180 + 0, + // State 181 + 0, + // State 182 + 0, + // State 183 + 0, + ]; + fn __goto(state: i16, nt: usize) -> i16 { + match nt { + 1 => match state { + 2 => 7, + _ => 1, + }, + 12 => 2, + 18 => 46, + 21 => 33, + 24 => 23, + 27 => 31, + 30 => 21, + 33 => 20, + 36 => 43, + 39 => 26, + 45 => 24, + 48 => 82, + 49 => match state { + 30 => 134, + _ => 81, + }, + 50 => 111, + 51 => match state { + 40 => 47, + 38 => 150, + 53 => 180, + _ => 14, + }, + 52 => 152, + 53 => 86, + 54 => match state { + 16 => 102, + 45 => 165, + _ => 83, + }, + 55 => 3, + 56 => 56, + 57 => 53, + 58 => match state { + 39 => 153, + 41 => 154, + 46 => 166, + 52 => 175, + _ => 40, + }, + 59 => match state { + 50 => 172, + 51 => 173, + _ => 117, + }, + 60 => match state { + 48 => 170, + 49 => 171, + _ => 118, + }, + 62 => 119, + 63 => match state { + 19 | 34 => 105, + 33 => 139, + _ => 87, + }, + 65 => 4, + 66 => match state { + 23 => 112, + _ => 88, + }, + 68 => match state { + 15 | 26 | 29 => 94, + _ => 120, + }, + 69 => match state { + 18 | 32 => 103, + 31 => 135, + _ => 57, + }, + 71 => 42, + 72 => match state { + 5 => 9, + 6 => 10, + 17 => 30, + 25 => 38, + 3 => 74, + 11 | 16 | 45 => 84, + 12 => 85, + 13 | 19 | 23 | 33..=34 => 89, + 20 => 107, + 21 => 109, + 27 | 39 | 41 | 46 | 48..=52 => 121, + 28 => 129, + 42 => 160, + 54 => 181, + 55 => 182, + _ => 76, + }, + 74 => match state { + 4 | 36 | 43..=44 => 77, + 37 => 149, + _ => 95, + }, + 75 => 78, + 76 => 27, + 77 => 96, + 78 => 5, + 79 => 58, + 80 => 28, + 81 => match state { + 34 => 142, + _ => 106, + }, + 82 => match state { + 32 => 138, + _ => 104, + }, + 83 => match state { + 44 => 164, + _ => 146, + }, + 84 => match state { + 29 => 132, + _ => 97, + }, + 86 => 22, + 87 => match state { + 4 => 8, + 43 => 161, + _ => 147, + }, + 89 => 90, + 92 => 59, + 93 => match state { + 26 => 116, + _ => 98, + }, + 94 => 99, + 96 => 122, + 97 => 6, + 98 => 60, + 99 => 123, + 100 => match state { + 1 => 71, + 2 => 73, + 7 => 80, + _ => 61, + }, + 101 => 124, + 103 => 62, + 104 => 63, + 105 => 25, + 106 => match state { + 24 => 115, + _ => 92, + }, + _ => 0, + } + } + const __TERMINAL: &[&str] = &[ + r###""\n""###, + r###""!""###, + r###""#!""###, + r###""$""###, + r###""%""###, + r###""&""###, + r###""(""###, + r###"")""###, + r###""*""###, + r###""+""###, + r###"",""###, + r###""-""###, + r###""->""###, + r###"".""###, + r###""/""###, + r###"":""###, + r###"";""###, + r###""<""###, + r###""=""###, + r###""=>""###, + r###"">""###, + r###""?""###, + r###""@""###, + r###""[""###, + r###""]""###, + r###""^""###, + r###""action""###, + r###""comment""###, + r###""effect""###, + r###""else""###, + r###""enum""###, + r###""eof""###, + r###""false""###, + r###""float""###, + r###""fn""###, + r###""for""###, + r###""from""###, + r###""ident""###, + r###""if""###, + r###""impl""###, + r###""import""###, + r###""int""###, + r###""let""###, + r###""match""###, + r###""none""###, + r###""null""###, + r###""self""###, + r###""string""###, + r###""struct""###, + r###""true""###, + r###""use""###, + r###""when""###, + r###""where""###, + r###""{""###, + r###""|""###, + r###""}""###, + r###""~""###, + ]; + fn __expected_tokens(__state: i16) -> alloc::vec::Vec { + __TERMINAL.iter().enumerate().filter_map(|(index, terminal)| { + let next_state = __action(__state, index); + if next_state == 0 { + None + } else { + Some(alloc::string::ToString::to_string(terminal)) + } + }).collect() + } + fn __expected_tokens_from_states< + 'input, + 'err, + >( + __states: &[i16], + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> alloc::vec::Vec + where + 'input: 'err, + 'static: 'err, + { + __TERMINAL.iter().enumerate().filter_map(|(index, terminal)| { + if __accepts(None, __states, Some(index), core::marker::PhantomData::<(&(), &())>) { + Some(alloc::string::ToString::to_string(terminal)) + } else { + None + } + }).collect() + } + struct __StateMachine<'input, 'err> + where 'input: 'err, 'static: 'err + { + errors: &'err mut Vec, &'static str>>, + __phantom: core::marker::PhantomData<(&'input (), &'err ())>, + } + impl<'input, 'err> __state_machine::ParserDefinition for __StateMachine<'input, 'err> + where 'input: 'err, 'static: 'err + { + type Location = usize; + type Error = &'static str; + type Token = Token<'input>; + type TokenIndex = usize; + type Symbol = __Symbol<'input>; + type Success = Module; + type StateIndex = i16; + type Action = i16; + type ReduceIndex = i16; + type NonterminalIndex = usize; + + #[inline] + fn start_location(&self) -> Self::Location { + Default::default() + } + + #[inline] + fn start_state(&self) -> Self::StateIndex { + 0 + } + + #[inline] + fn token_to_index(&self, token: &Self::Token) -> Option { + __token_to_integer(token, core::marker::PhantomData::<(&(), &())>) + } + + #[inline] + fn action(&self, state: i16, integer: usize) -> i16 { + __action(state, integer) + } + + #[inline] + fn error_action(&self, state: i16) -> i16 { + __action(state, 58 - 1) + } + + #[inline] + fn eof_action(&self, state: i16) -> i16 { + __EOF_ACTION[state as usize] + } + + #[inline] + fn goto(&self, state: i16, nt: usize) -> i16 { + __goto(state, nt) + } + + fn token_to_symbol(&self, token_index: usize, token: Self::Token) -> Self::Symbol { + __token_to_symbol(token_index, token, core::marker::PhantomData::<(&(), &())>) + } + + fn expected_tokens(&self, state: i16) -> alloc::vec::Vec { + __expected_tokens(state) + } + + fn expected_tokens_from_states(&self, states: &[i16]) -> alloc::vec::Vec { + __expected_tokens_from_states(states, core::marker::PhantomData::<(&(), &())>) + } + + #[inline] + fn uses_error_recovery(&self) -> bool { + true + } + + #[inline] + fn error_recovery_symbol( + &self, + recovery: __state_machine::ErrorRecovery, + ) -> Self::Symbol { + __Symbol::Variant4(recovery) + } + + fn reduce( + &mut self, + action: i16, + start_location: Option<&Self::Location>, + states: &mut alloc::vec::Vec, + symbols: &mut alloc::vec::Vec<__state_machine::SymbolTriple>, + ) -> Option<__state_machine::ParseResult> { + __reduce( + self.errors, + action, + start_location, + states, + symbols, + core::marker::PhantomData::<(&(), &())>, + ) + } + + fn simulate_reduce(&self, action: i16) -> __state_machine::SimulatedReduce { + __simulate_reduce(action, core::marker::PhantomData::<(&(), &())>) + } + } + fn __token_to_integer< + 'input, + 'err, + >( + __token: &Token<'input>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> Option + { + match *__token { + Token::NewLine if true => Some(0), + Token::Exclamation if true => Some(1), + Token::Shebang if true => Some(2), + Token::Dollar if true => Some(3), + Token::Percent if true => Some(4), + Token::Ampersand if true => Some(5), + Token::LeftParen if true => Some(6), + Token::RightParen if true => Some(7), + Token::Multiply if true => Some(8), + Token::Plus if true => Some(9), + Token::Comma if true => Some(10), + Token::Minus if true => Some(11), + Token::Arrow if true => Some(12), + Token::Dot if true => Some(13), + Token::Divide if true => Some(14), + Token::Colon if true => Some(15), + Token::Semicolon if true => Some(16), + Token::LessThan if true => Some(17), + Token::Equals if true => Some(18), + Token::FatArrow if true => Some(19), + Token::GreaterThan if true => Some(20), + Token::Question if true => Some(21), + Token::At if true => Some(22), + Token::LeftBracket if true => Some(23), + Token::RightBracket if true => Some(24), + Token::Caret if true => Some(25), + Token::Word(Word::Action) if true => Some(26), + Token::Comment(_) if true => Some(27), + Token::Word(Word::Effect) if true => Some(28), + Token::Word(Word::Else) if true => Some(29), + Token::Word(Word::Enum) if true => Some(30), + Token::Eof if true => Some(31), + Token::Word(Word::False) if true => Some(32), + Token::Float(_) if true => Some(33), + Token::Word(Word::Fn) if true => Some(34), + Token::Word(Word::For) if true => Some(35), + Token::Word(Word::From) if true => Some(36), + Token::Word(Word::Ident(_)) if true => Some(37), + Token::Word(Word::If) if true => Some(38), + Token::Word(Word::Impl) if true => Some(39), + Token::Word(Word::Import) if true => Some(40), + Token::Integer(_) if true => Some(41), + Token::Word(Word::Let) if true => Some(42), + Token::Word(Word::Match) if true => Some(43), + Token::Word(Word::None) if true => Some(44), + Token::Word(Word::Null) if true => Some(45), + Token::Word(Word::Self_) if true => Some(46), + Token::String(_) if true => Some(47), + Token::Word(Word::Struct) if true => Some(48), + Token::Word(Word::True) if true => Some(49), + Token::Word(Word::Use) if true => Some(50), + Token::Word(Word::When) if true => Some(51), + Token::Word(Word::Where) if true => Some(52), + Token::LeftBrace if true => Some(53), + Token::Pipe if true => Some(54), + Token::RightBrace if true => Some(55), + Token::Tilde if true => Some(56), + _ => None, + } + } + fn __token_to_symbol< + 'input, + 'err, + >( + __token_index: usize, + __token: Token<'input>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> __Symbol<'input> + { + #[allow(clippy::manual_range_patterns)]match __token_index { + 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 28 | 29 | 30 | 31 | 32 | 34 | 35 | 36 | 38 | 39 | 40 | 42 | 43 | 44 | 45 | 46 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 => __Symbol::Variant0(__token), + 27 | 37 | 47 => match __token { + Token::Comment(__tok0) | Token::Word(Word::Ident(__tok0)) | Token::String(__tok0) if true => __Symbol::Variant1(__tok0), + _ => unreachable!(), + }, + 33 => match __token { + Token::Float(__tok0) if true => __Symbol::Variant2(__tok0), + _ => unreachable!(), + }, + 41 => match __token { + Token::Integer(__tok0) if true => __Symbol::Variant3(__tok0), + _ => unreachable!(), + }, + _ => unreachable!(), + } + } + fn __simulate_reduce< + 'input, + 'err, + >( + __reduce_index: i16, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> __state_machine::SimulatedReduce<__StateMachine<'input, 'err>> + where + 'input: 'err, + 'static: 'err, + { + match __reduce_index { + 0 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 0, + } + } + 1 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 0, + } + } + 2 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 1, + } + } + 3 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 1, + } + } + 4 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 2, + } + } + 5 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 2, + } + } + 6 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 3, + } + } + 7 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 4, + } + } + 8 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 4, + } + } + 9 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 5, + } + } + 10 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 6, + } + } + 11 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 6, + } + } + 12 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 7, + } + } + 13 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 7, + } + } + 14 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 8, + } + } + 15 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 9, + } + } + 16 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 9, + } + } + 17 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 10, + } + } + 18 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 10, + } + } + 19 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 11, + } + } + 20 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 11, + } + } + 21 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 12, + } + } + 22 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 12, + } + } + 23 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 12, + } + } + 24 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 12, + } + } + 25 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 13, + } + } + 26 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 13, + } + } + 27 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 14, + } + } + 28 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 15, + } + } + 29 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 15, + } + } + 30 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 16, + } + } + 31 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 17, + } + } + 32 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 17, + } + } + 33 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 18, + } + } + 34 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 18, + } + } + 35 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 19, + } + } + 36 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 20, + } + } + 37 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 20, + } + } + 38 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 21, + } + } + 39 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 21, + } + } + 40 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 22, + } + } + 41 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 23, + } + } + 42 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 23, + } + } + 43 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 24, + } + } + 44 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 24, + } + } + 45 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 25, + } + } + 46 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 26, + } + } + 47 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 26, + } + } + 48 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 27, + } + } + 49 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 27, + } + } + 50 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 28, + } + } + 51 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 29, + } + } + 52 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 29, + } + } + 53 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 30, + } + } + 54 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 30, + } + } + 55 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 31, + } + } + 56 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 32, + } + } + 57 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 32, + } + } + 58 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 33, + } + } + 59 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 33, + } + } + 60 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 34, + } + } + 61 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 35, + } + } + 62 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 35, + } + } + 63 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 36, + } + } + 64 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 36, + } + } + 65 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 37, + } + } + 66 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 38, + } + } + 67 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 38, + } + } + 68 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 39, + } + } + 69 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 39, + } + } + 70 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 40, + } + } + 71 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 41, + } + } + 72 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 41, + } + } + 73 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 42, + } + } + 74 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 42, + } + } + 75 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 43, + } + } + 76 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 44, + } + } + 77 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 44, + } + } + 78 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 45, + } + } + 79 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 45, + } + } + 80 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 46, + } + } + 81 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 46, + } + } + 82 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 47, + } + } + 83 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 47, + } + } + 84 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 47, + } + } + 85 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 48, + } + } + 86 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 48, + } + } + 87 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 49, + } + } + 88 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 49, + } + } + 89 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 50, + } + } + 90 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 50, + } + } + 91 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 51, + } + } + 92 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 51, + } + } + 93 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 52, + } + } + 94 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 52, + } + } + 95 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 52, + } + } + 96 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 52, + } + } + 97 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 53, + } + } + 98 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 53, + } + } + 99 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 53, + } + } + 100 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 53, + } + } + 101 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 54, + } + } + 102 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 54, + } + } + 103 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 54, + } + } + 104 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 54, + } + } + 105 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 55, + } + } + 106 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 5, + nonterminal_produced: 56, + } + } + 107 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 57, + } + } + 108 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 58, + } + } + 109 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 58, + } + } + 110 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 58, + } + } + 111 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 59, + } + } + 112 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 60, + } + } + 113 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 60, + } + } + 114 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 60, + } + } + 115 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 61, + } + } + 116 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 61, + } + } + 117 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 62, + } + } + 118 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 63, + } + } + 119 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 64, + } + } + 120 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 64, + } + } + 121 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 65, + } + } + 122 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 66, + } + } + 123 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 66, + } + } + 124 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 67, + } + } + 125 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 67, + } + } + 126 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 7, + nonterminal_produced: 68, + } + } + 127 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 68, + } + } + 128 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 69, + } + } + 129 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 69, + } + } + 130 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 70, + } + } + 131 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 70, + } + } + 132 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 71, + } + } + 133 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 72, + } + } + 134 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 73, + } + } + 135 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 73, + } + } + 136 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 74, + } + } + 137 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 74, + } + } + 138 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 75, + } + } + 139 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 76, + } + } + 140 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 77, + } + } + 141 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 5, + nonterminal_produced: 77, + } + } + 142 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 78, + } + } + 143 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 5, + nonterminal_produced: 79, + } + } + 144 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 79, + } + } + 145 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 80, + } + } + 146 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 81, + } + } + 147 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 81, + } + } + 148 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 81, + } + } + 149 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 81, + } + } + 150 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 82, + } + } + 151 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 82, + } + } + 152 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 82, + } + } + 153 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 82, + } + } + 154 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 83, + } + } + 155 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 83, + } + } + 156 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 83, + } + } + 157 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 83, + } + } + 158 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 84, + } + } + 159 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 84, + } + } + 160 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 84, + } + } + 161 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 84, + } + } + 162 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 85, + } + } + 163 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 86, + } + } + 164 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 86, + } + } + 165 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 86, + } + } + 166 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 86, + } + } + 167 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 9, + nonterminal_produced: 87, + } + } + 168 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 7, + nonterminal_produced: 87, + } + } + 169 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 88, + } + } + 170 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 88, + } + } + 171 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 89, + } + } + 172 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 90, + } + } + 173 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 90, + } + } + 174 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 90, + } + } + 175 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 90, + } + } + 176 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 91, + } + } + 177 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 91, + } + } + 178 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 92, + } + } + 179 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 92, + } + } + 180 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 92, + } + } + 181 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 93, + } + } + 182 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 93, + } + } + 183 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 93, + } + } + 184 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 94, + } + } + 185 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 95, + } + } + 186 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 95, + } + } + 187 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 96, + } + } + 188 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 97, + } + } + 189 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 98, + } + } + 190 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 99, + } + } + 191 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 99, + } + } + 192 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 99, + } + } + 193 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 99, + } + } + 194 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 99, + } + } + 195 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 99, + } + } + 196 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 99, + } + } + 197 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 100, + } + } + 198 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 100, + } + } + 199 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 100, + } + } + 200 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 100, + } + } + 201 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 100, + } + } + 202 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 101, + } + } + 203 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 102, + } + } + 204 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 103, + } + } + 205 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 6, + nonterminal_produced: 104, + } + } + 206 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 105, + } + } + 207 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 106, + } + } + 208 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 107, + } + } + 209 => __state_machine::SimulatedReduce::Accept, + _ => panic!("invalid reduction index {}", __reduce_index) + } + } + pub struct SourceParser { + _priv: (), + } + + impl Default for SourceParser { fn default() -> Self { Self::new() } } + impl SourceParser { + pub fn new() -> SourceParser { + SourceParser { + _priv: (), + } + } + + #[allow(dead_code)] + pub fn parse< + 'input, + 'err, + __TOKEN: __ToTriple<'input, 'err, >, + __TOKENS: IntoIterator, + >( + &self, + errors: &'err mut Vec, &'static str>>, + __tokens0: __TOKENS, + ) -> Result, &'static str>> + { + let __tokens = __tokens0.into_iter(); + let mut __tokens = __tokens.map(|t| __ToTriple::to_triple(t)); + __state_machine::Parser::drive( + __StateMachine { + errors, + __phantom: core::marker::PhantomData::<(&(), &())>, + }, + __tokens, + ) + } + } + fn __accepts< + 'input, + 'err, + >( + __error_state: Option, + __states: &[i16], + __opt_integer: Option, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> bool + where + 'input: 'err, + 'static: 'err, + { + let mut __states = __states.to_vec(); + __states.extend(__error_state); + loop { + let mut __states_len = __states.len(); + let __top = __states[__states_len - 1]; + let __action = match __opt_integer { + None => __EOF_ACTION[__top as usize], + Some(__integer) => __action(__top, __integer), + }; + if __action == 0 { return false; } + if __action > 0 { return true; } + let (__to_pop, __nt) = match __simulate_reduce(-(__action + 1), core::marker::PhantomData::<(&(), &())>) { + __state_machine::SimulatedReduce::Reduce { + states_to_pop, nonterminal_produced + } => (states_to_pop, nonterminal_produced), + __state_machine::SimulatedReduce::Accept => return true, + }; + __states_len -= __to_pop; + __states.truncate(__states_len); + let __top = __states[__states_len - 1]; + let __next_state = __goto(__top, __nt); + __states.push(__next_state); + } + } + fn __reduce< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __action: i16, + __lookahead_start: Option<&usize>, + __states: &mut alloc::vec::Vec, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> Option, &'static str>>> + { + let (__pop_states, __nonterminal) = match __action { + 0 => { + __reduce0(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 1 => { + __reduce1(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 2 => { + __reduce2(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 3 => { + __reduce3(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 4 => { + __reduce4(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 5 => { + __reduce5(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 6 => { + __reduce6(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 7 => { + __reduce7(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 8 => { + __reduce8(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 9 => { + __reduce9(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 10 => { + __reduce10(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 11 => { + __reduce11(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 12 => { + __reduce12(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 13 => { + __reduce13(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 14 => { + __reduce14(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 15 => { + __reduce15(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 16 => { + __reduce16(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 17 => { + __reduce17(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 18 => { + __reduce18(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 19 => { + __reduce19(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 20 => { + __reduce20(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 21 => { + __reduce21(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 22 => { + __reduce22(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 23 => { + __reduce23(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 24 => { + __reduce24(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 25 => { + __reduce25(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 26 => { + __reduce26(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 27 => { + __reduce27(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 28 => { + __reduce28(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 29 => { + __reduce29(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 30 => { + __reduce30(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 31 => { + __reduce31(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 32 => { + __reduce32(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 33 => { + __reduce33(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 34 => { + __reduce34(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 35 => { + __reduce35(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 36 => { + __reduce36(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 37 => { + __reduce37(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 38 => { + __reduce38(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 39 => { + __reduce39(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 40 => { + __reduce40(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 41 => { + __reduce41(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 42 => { + __reduce42(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 43 => { + __reduce43(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 44 => { + __reduce44(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 45 => { + __reduce45(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 46 => { + __reduce46(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 47 => { + __reduce47(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 48 => { + __reduce48(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 49 => { + __reduce49(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 50 => { + __reduce50(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 51 => { + __reduce51(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 52 => { + __reduce52(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 53 => { + __reduce53(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 54 => { + __reduce54(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 55 => { + __reduce55(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 56 => { + __reduce56(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 57 => { + __reduce57(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 58 => { + __reduce58(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 59 => { + __reduce59(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 60 => { + __reduce60(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 61 => { + __reduce61(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 62 => { + __reduce62(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 63 => { + __reduce63(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 64 => { + __reduce64(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 65 => { + __reduce65(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 66 => { + __reduce66(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 67 => { + __reduce67(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 68 => { + __reduce68(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 69 => { + __reduce69(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 70 => { + __reduce70(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 71 => { + __reduce71(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 72 => { + __reduce72(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 73 => { + __reduce73(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 74 => { + __reduce74(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 75 => { + __reduce75(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 76 => { + __reduce76(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 77 => { + __reduce77(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 78 => { + __reduce78(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 79 => { + __reduce79(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 80 => { + __reduce80(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 81 => { + __reduce81(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 82 => { + __reduce82(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 83 => { + __reduce83(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 84 => { + __reduce84(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 85 => { + __reduce85(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 86 => { + __reduce86(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 87 => { + __reduce87(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 88 => { + __reduce88(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 89 => { + __reduce89(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 90 => { + __reduce90(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 91 => { + __reduce91(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 92 => { + __reduce92(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 93 => { + __reduce93(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 94 => { + __reduce94(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 95 => { + __reduce95(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 96 => { + __reduce96(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 97 => { + __reduce97(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 98 => { + __reduce98(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 99 => { + __reduce99(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 100 => { + __reduce100(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 101 => { + __reduce101(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 102 => { + __reduce102(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 103 => { + __reduce103(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 104 => { + __reduce104(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 105 => { + __reduce105(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 106 => { + __reduce106(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 107 => { + __reduce107(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 108 => { + __reduce108(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 109 => { + __reduce109(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 110 => { + __reduce110(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 111 => { + __reduce111(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 112 => { + __reduce112(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 113 => { + __reduce113(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 114 => { + __reduce114(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 115 => { + __reduce115(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 116 => { + __reduce116(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 117 => { + __reduce117(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 118 => { + __reduce118(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 119 => { + __reduce119(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 120 => { + __reduce120(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 121 => { + __reduce121(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 122 => { + __reduce122(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 123 => { + __reduce123(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 124 => { + __reduce124(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 125 => { + __reduce125(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 126 => { + __reduce126(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 127 => { + __reduce127(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 128 => { + __reduce128(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 129 => { + __reduce129(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 130 => { + __reduce130(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 131 => { + __reduce131(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 132 => { + __reduce132(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 133 => { + __reduce133(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 134 => { + __reduce134(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 135 => { + __reduce135(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 136 => { + __reduce136(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 137 => { + __reduce137(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 138 => { + __reduce138(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 139 => { + __reduce139(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 140 => { + __reduce140(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 141 => { + __reduce141(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 142 => { + __reduce142(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 143 => { + __reduce143(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 144 => { + __reduce144(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 145 => { + __reduce145(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 146 => { + __reduce146(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 147 => { + __reduce147(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 148 => { + __reduce148(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 149 => { + __reduce149(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 150 => { + __reduce150(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 151 => { + __reduce151(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 152 => { + __reduce152(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 153 => { + __reduce153(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 154 => { + __reduce154(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 155 => { + __reduce155(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 156 => { + __reduce156(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 157 => { + __reduce157(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 158 => { + __reduce158(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 159 => { + __reduce159(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 160 => { + __reduce160(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 161 => { + __reduce161(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 162 => { + __reduce162(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 163 => { + __reduce163(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 164 => { + __reduce164(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 165 => { + __reduce165(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 166 => { + __reduce166(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 167 => { + __reduce167(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 168 => { + __reduce168(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 169 => { + __reduce169(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 170 => { + __reduce170(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 171 => { + __reduce171(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 172 => { + __reduce172(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 173 => { + __reduce173(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 174 => { + __reduce174(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 175 => { + __reduce175(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 176 => { + __reduce176(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 177 => { + __reduce177(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 178 => { + __reduce178(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 179 => { + __reduce179(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 180 => { + __reduce180(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 181 => { + __reduce181(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 182 => { + __reduce182(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 183 => { + __reduce183(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 184 => { + __reduce184(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 185 => { + __reduce185(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 186 => { + __reduce186(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 187 => { + __reduce187(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 188 => { + __reduce188(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 189 => { + __reduce189(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 190 => { + __reduce190(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 191 => { + __reduce191(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 192 => { + __reduce192(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 193 => { + __reduce193(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 194 => { + __reduce194(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 195 => { + __reduce195(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 196 => { + __reduce196(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 197 => { + __reduce197(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 198 => { + __reduce198(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 199 => { + __reduce199(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 200 => { + __reduce200(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 201 => { + __reduce201(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 202 => { + __reduce202(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 203 => { + __reduce203(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 204 => { + __reduce204(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 205 => { + __reduce205(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 206 => { + __reduce206(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 207 => { + __reduce207(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 208 => { + __reduce208(errors, __lookahead_start, __symbols, core::marker::PhantomData::<(&(), &())>) + } + 209 => { + // __Source = Source => ActionFn(0); + let __sym0 = __pop_Variant39(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action0::<>(errors, __sym0); + return Some(Ok(__nt)); + } + _ => panic!("invalid action code {}", __action) + }; + let __states_len = __states.len(); + __states.truncate(__states_len - __pop_states); + let __state = *__states.last().unwrap(); + let __next_state = __goto(__state, __nonterminal); + __states.push(__next_state); + None + } + #[inline(never)] + fn __symbol_type_mismatch() -> ! { + panic!("symbol type mismatch") + } + fn __pop_Variant23< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, (Ident, Block>), usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant23(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant7< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, (Token<'input>, Ident), usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant7(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant12< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, (alloc::vec::Vec>, Box), usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant12(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant27< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Block>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant27(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant26< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Block, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant26(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant28< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Block, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant28(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant14< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Box, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant14(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant32< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Expression, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant32(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant16< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Field, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant16(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant18< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, FnArg, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant18(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant10< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Ident, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant10(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant39< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Module, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant39(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant21< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Prototype, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant21(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant0< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Token<'input>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant0(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant25< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Value, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant25(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant29< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Vec>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant29(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant36< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Vec, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant36(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant30< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Vec, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant30(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant31< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Vec, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant31(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant37< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Vec, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant37(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant4< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, __lalrpop_util::ErrorRecovery, &'static str>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant4(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant24< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, alloc::vec::Vec<(Ident, Block>)>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant24(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant9< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, alloc::vec::Vec<(Token<'input>, Ident)>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant9(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant13< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, alloc::vec::Vec<(alloc::vec::Vec>, Box)>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant13(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant15< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, alloc::vec::Vec>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant15(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant17< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, alloc::vec::Vec, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant17(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant19< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, alloc::vec::Vec, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant19(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant20< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, alloc::vec::Vec, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant20(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant22< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, alloc::vec::Vec, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant22(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant5< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, alloc::vec::Vec>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant5(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant8< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, core::option::Option<(Token<'input>, Ident)>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant8(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant33< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, core::option::Option>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant33(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant34< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, core::option::Option, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant34(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant35< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, core::option::Option, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant35(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant11< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, core::option::Option, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant11(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant38< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, core::option::Option, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant38(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant6< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, core::option::Option>, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant6(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant2< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, f64, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant2(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant3< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, i64, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant3(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant1< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant1(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __reduce0< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // "\n"* = => ActionFn(71); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); + let __end = __start; + let __nt = super::__action71::<>(errors, &__start, &__end); + __symbols.push((__start, __Symbol::Variant5(__nt), __end)); + (0, 0) + } + fn __reduce1< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // "\n"* = "\n"+ => ActionFn(72); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action72::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant5(__nt), __end)); + (1, 0) + } + fn __reduce2< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // "\n"+ = "\n" => ActionFn(130); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action130::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant5(__nt), __end)); + (1, 1) + } + fn __reduce3< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // "\n"+ = "\n"+, "\n" => ActionFn(131); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action131::<>(errors, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant5(__nt), __end)); + (2, 1) + } + fn __reduce4< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // "\n"? = "\n" => ActionFn(128); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action128::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant6(__nt), __end)); + (1, 2) + } + fn __reduce5< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // "\n"? = => ActionFn(129); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); + let __end = __start; + let __nt = super::__action129::<>(errors, &__start, &__end); + __symbols.push((__start, __Symbol::Variant6(__nt), __end)); + (0, 2) + } + fn __reduce6< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ("->" Ident) = "->", Ident => ActionFn(96); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant10(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action96::<>(errors, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + (2, 3) + } + fn __reduce7< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ("->" Ident)? = "->", Ident => ActionFn(174); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant10(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action174::<>(errors, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (2, 4) + } + fn __reduce8< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ("->" Ident)? = => ActionFn(95); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); + let __end = __start; + let __nt = super::__action95::<>(errors, &__start, &__end); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (0, 4) + } + fn __reduce9< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ("/" Ident) = "/", Ident => ActionFn(83); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant10(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action83::<>(errors, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + (2, 5) + } + fn __reduce10< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ("/" Ident)* = => ActionFn(81); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); + let __end = __start; + let __nt = super::__action81::<>(errors, &__start, &__end); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (0, 6) + } + fn __reduce11< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ("/" Ident)* = ("/" Ident)+ => ActionFn(82); + let __sym0 = __pop_Variant9(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action82::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (1, 6) + } + fn __reduce12< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ("/" Ident)+ = "/", Ident => ActionFn(177); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant10(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action177::<>(errors, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (2, 7) + } + fn __reduce13< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ("/" Ident)+ = ("/" Ident)+, "/", Ident => ActionFn(178); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant10(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant9(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action178::<>(errors, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (3, 7) + } + fn __reduce14< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ("[" "]") = "[", Ident, "]" => ActionFn(92); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant10(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action92::<>(errors, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant10(__nt), __end)); + (3, 8) + } + fn __reduce15< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ("[" "]")? = "[", Ident, "]" => ActionFn(181); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant10(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action181::<>(errors, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); + (3, 9) + } + fn __reduce16< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ("[" "]")? = => ActionFn(91); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); + let __end = __start; + let __nt = super::__action91::<>(errors, &__start, &__end); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); + (0, 9) + } + fn __reduce17< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ("\n"* TopLevel) = TopLevel => ActionFn(170); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action170::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (1, 10) + } + fn __reduce18< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ("\n"* TopLevel) = "\n"+, TopLevel => ActionFn(171); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant14(__symbols); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action171::<>(errors, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (2, 10) + } + fn __reduce19< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ("\n"* TopLevel)* = => ActionFn(68); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); + let __end = __start; + let __nt = super::__action68::<>(errors, &__start, &__end); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (0, 11) + } + fn __reduce20< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ("\n"* TopLevel)* = ("\n"* TopLevel)+ => ActionFn(69); + let __sym0 = __pop_Variant13(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action69::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (1, 11) + } + fn __reduce21< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ("\n"* TopLevel)+ = TopLevel => ActionFn(184); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action184::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (1, 12) + } + fn __reduce22< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ("\n"* TopLevel)+ = "\n"+, TopLevel => ActionFn(185); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant14(__symbols); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action185::<>(errors, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (2, 12) + } + fn __reduce23< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ("\n"* TopLevel)+ = ("\n"* TopLevel)+, TopLevel => ActionFn(186); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant14(__symbols); + let __sym0 = __pop_Variant13(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action186::<>(errors, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (2, 12) + } + fn __reduce24< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ("\n"* TopLevel)+ = ("\n"* TopLevel)+, "\n"+, TopLevel => ActionFn(187); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant14(__symbols); + let __sym1 = __pop_Variant5(__symbols); + let __sym0 = __pop_Variant13(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action187::<>(errors, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (3, 12) + } + fn __reduce25< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ("\n"?) = "\n" => ActionFn(172); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action172::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant6(__nt), __end)); + (1, 13) + } + fn __reduce26< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ("\n"?) = => ActionFn(173); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); + let __end = __start; + let __nt = super::__action173::<>(errors, &__start, &__end); + __symbols.push((__start, __Symbol::Variant6(__nt), __end)); + (0, 13) + } + fn __reduce27< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ("for" Ident) = "for", Ident => ActionFn(76); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant10(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action76::<>(errors, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + (2, 14) + } + fn __reduce28< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ("for" Ident)? = "for", Ident => ActionFn(198); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant10(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action198::<>(errors, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (2, 15) + } + fn __reduce29< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ("for" Ident)? = => ActionFn(75); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); + let __end = __start; + let __nt = super::__action75::<>(errors, &__start, &__end); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (0, 15) + } + fn __reduce30< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ( ",") = Expression, "," => ActionFn(111); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action111::<>(errors, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (2, 16) + } + fn __reduce31< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ( ",")* = => ActionFn(109); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); + let __end = __start; + let __nt = super::__action109::<>(errors, &__start, &__end); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (0, 17) + } + fn __reduce32< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ( ",")* = ( ",")+ => ActionFn(110); + let __sym0 = __pop_Variant15(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action110::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (1, 17) + } + fn __reduce33< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ( ",")+ = Expression, "," => ActionFn(201); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action201::<>(errors, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (2, 18) + } + fn __reduce34< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ( ",")+ = ( ",")+, Expression, "," => ActionFn(202); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant14(__symbols); + let __sym0 = __pop_Variant15(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action202::<>(errors, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (3, 18) + } + fn __reduce35< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ( "\n") = Field, "\n" => ActionFn(143); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action143::<>(errors, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (2, 19) + } + fn __reduce36< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ( "\n")* = => ActionFn(141); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); + let __end = __start; + let __nt = super::__action141::<>(errors, &__start, &__end); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (0, 20) + } + fn __reduce37< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ( "\n")* = ( "\n")+ => ActionFn(142); + let __sym0 = __pop_Variant17(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action142::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (1, 20) + } + fn __reduce38< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ( "\n")+ = Field, "\n" => ActionFn(205); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action205::<>(errors, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (2, 21) + } + fn __reduce39< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ( "\n")+ = ( "\n")+, Field, "\n" => ActionFn(206); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant17(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action206::<>(errors, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (3, 21) + } + fn __reduce40< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ( ",") = FnArg, "," => ActionFn(106); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant18(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action106::<>(errors, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant18(__nt), __end)); + (2, 22) + } + fn __reduce41< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ( ",")* = => ActionFn(104); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); + let __end = __start; + let __nt = super::__action104::<>(errors, &__start, &__end); + __symbols.push((__start, __Symbol::Variant19(__nt), __end)); + (0, 23) + } + fn __reduce42< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ( ",")* = ( ",")+ => ActionFn(105); + let __sym0 = __pop_Variant19(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action105::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant19(__nt), __end)); + (1, 23) + } + fn __reduce43< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ( ",")+ = FnArg, "," => ActionFn(209); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant18(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action209::<>(errors, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant19(__nt), __end)); + (2, 24) + } + fn __reduce44< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ( ",")+ = ( ",")+, FnArg, "," => ActionFn(210); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant18(__symbols); + let __sym0 = __pop_Variant19(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action210::<>(errors, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant19(__nt), __end)); + (3, 24) + } + fn __reduce45< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ( "\n") = FnDef, "\n" => ActionFn(138); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action138::<>(errors, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (2, 25) + } + fn __reduce46< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ( "\n")* = => ActionFn(136); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); + let __end = __start; + let __nt = super::__action136::<>(errors, &__start, &__end); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (0, 26) + } + fn __reduce47< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ( "\n")* = ( "\n")+ => ActionFn(137); + let __sym0 = __pop_Variant15(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action137::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (1, 26) + } + fn __reduce48< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ( "\n")+ = FnDef, "\n" => ActionFn(213); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action213::<>(errors, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (2, 27) + } + fn __reduce49< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ( "\n")+ = ( "\n")+, FnDef, "\n" => ActionFn(214); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant14(__symbols); + let __sym0 = __pop_Variant15(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action214::<>(errors, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (3, 27) + } + fn __reduce50< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ( "+") = Ident, "+" => ActionFn(119); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant10(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action119::<>(errors, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant10(__nt), __end)); + (2, 28) + } + fn __reduce51< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ( "+")* = => ActionFn(117); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); + let __end = __start; + let __nt = super::__action117::<>(errors, &__start, &__end); + __symbols.push((__start, __Symbol::Variant20(__nt), __end)); + (0, 29) + } + fn __reduce52< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ( "+")* = ( "+")+ => ActionFn(118); + let __sym0 = __pop_Variant20(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action118::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant20(__nt), __end)); + (1, 29) + } + fn __reduce53< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ( "+")+ = Ident, "+" => ActionFn(217); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant10(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action217::<>(errors, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant20(__nt), __end)); + (2, 30) + } + fn __reduce54< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ( "+")+ = ( "+")+, Ident, "+" => ActionFn(218); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant10(__symbols); + let __sym0 = __pop_Variant20(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action218::<>(errors, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant20(__nt), __end)); + (3, 30) + } + fn __reduce55< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ( ",") = Ident, "," => ActionFn(101); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant10(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action101::<>(errors, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant10(__nt), __end)); + (2, 31) + } + fn __reduce56< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ( ",")* = => ActionFn(99); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); + let __end = __start; + let __nt = super::__action99::<>(errors, &__start, &__end); + __symbols.push((__start, __Symbol::Variant20(__nt), __end)); + (0, 32) + } + fn __reduce57< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ( ",")* = ( ",")+ => ActionFn(100); + let __sym0 = __pop_Variant20(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action100::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant20(__nt), __end)); + (1, 32) + } + fn __reduce58< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ( ",")+ = Ident, "," => ActionFn(221); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant10(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action221::<>(errors, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant20(__nt), __end)); + (2, 33) + } + fn __reduce59< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ( ",")+ = ( ",")+, Ident, "," => ActionFn(222); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant10(__symbols); + let __sym0 = __pop_Variant20(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action222::<>(errors, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant20(__nt), __end)); + (3, 33) + } + fn __reduce60< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ( "\n") = Prototype, "\n" => ActionFn(148); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant21(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action148::<>(errors, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant21(__nt), __end)); + (2, 34) + } + fn __reduce61< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ( "\n")* = => ActionFn(146); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); + let __end = __start; + let __nt = super::__action146::<>(errors, &__start, &__end); + __symbols.push((__start, __Symbol::Variant22(__nt), __end)); + (0, 35) + } + fn __reduce62< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ( "\n")* = ( "\n")+ => ActionFn(147); + let __sym0 = __pop_Variant22(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action147::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant22(__nt), __end)); + (1, 35) + } + fn __reduce63< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ( "\n")+ = Prototype, "\n" => ActionFn(225); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant21(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action225::<>(errors, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant22(__nt), __end)); + (2, 36) + } + fn __reduce64< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ( "\n")+ = ( "\n")+, Prototype, "\n" => ActionFn(226); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant21(__symbols); + let __sym0 = __pop_Variant22(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action226::<>(errors, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant22(__nt), __end)); + (3, 36) + } + fn __reduce65< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ( "\n") = Statement, "\n" => ActionFn(155); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action155::<>(errors, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (2, 37) + } + fn __reduce66< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ( "\n")* = => ActionFn(153); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); + let __end = __start; + let __nt = super::__action153::<>(errors, &__start, &__end); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (0, 38) + } + fn __reduce67< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ( "\n")* = ( "\n")+ => ActionFn(154); + let __sym0 = __pop_Variant15(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action154::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (1, 38) + } + fn __reduce68< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ( "\n")+ = Statement, "\n" => ActionFn(229); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action229::<>(errors, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (2, 39) + } + fn __reduce69< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ( "\n")+ = ( "\n")+, Statement, "\n" => ActionFn(230); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant14(__symbols); + let __sym0 = __pop_Variant15(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action230::<>(errors, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (3, 39) + } + fn __reduce70< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // (ShellComponent) = ShellComponent => ActionFn(80); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action80::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 40) + } + fn __reduce71< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // (ShellComponent)* = => ActionFn(78); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); + let __end = __start; + let __nt = super::__action78::<>(errors, &__start, &__end); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (0, 41) + } + fn __reduce72< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // (ShellComponent)* = (ShellComponent)+ => ActionFn(79); + let __sym0 = __pop_Variant15(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action79::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (1, 41) + } + fn __reduce73< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // (ShellComponent)+ = ShellComponent => ActionFn(233); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action233::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (1, 42) + } + fn __reduce74< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // (ShellComponent)+ = (ShellComponent)+, ShellComponent => ActionFn(234); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant14(__symbols); + let __sym0 = __pop_Variant15(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action234::<>(errors, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (2, 42) + } + fn __reduce75< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // (WhenBlock) = WhenBlock => ActionFn(88); + let __sym0 = __pop_Variant23(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action88::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant23(__nt), __end)); + (1, 43) + } + fn __reduce76< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // (WhenBlock)* = => ActionFn(86); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); + let __end = __start; + let __nt = super::__action86::<>(errors, &__start, &__end); + __symbols.push((__start, __Symbol::Variant24(__nt), __end)); + (0, 44) + } + fn __reduce77< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // (WhenBlock)* = (WhenBlock)+ => ActionFn(87); + let __sym0 = __pop_Variant24(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action87::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant24(__nt), __end)); + (1, 44) + } + fn __reduce78< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // (WhenBlock)+ = WhenBlock => ActionFn(239); + let __sym0 = __pop_Variant23(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action239::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant24(__nt), __end)); + (1, 45) + } + fn __reduce79< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // (WhenBlock)+ = (WhenBlock)+, WhenBlock => ActionFn(240); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant23(__symbols); + let __sym0 = __pop_Variant24(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action240::<>(errors, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant24(__nt), __end)); + (2, 45) + } + fn __reduce80< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Atom = Ident => ActionFn(23); + let __sym0 = __pop_Variant10(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action23::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant25(__nt), __end)); + (1, 46) + } + fn __reduce81< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Atom = Atom0 => ActionFn(24); + let __sym0 = __pop_Variant25(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action24::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant25(__nt), __end)); + (1, 46) + } + fn __reduce82< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Atom0 = "int" => ActionFn(20); + let __sym0 = __pop_Variant3(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action20::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant25(__nt), __end)); + (1, 47) + } + fn __reduce83< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Atom0 = "float" => ActionFn(21); + let __sym0 = __pop_Variant2(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action21::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant25(__nt), __end)); + (1, 47) + } + fn __reduce84< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Atom0 = "string" => ActionFn(22); + let __sym0 = __pop_Variant1(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action22::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant25(__nt), __end)); + (1, 47) + } + fn __reduce85< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Block = "{", "\n", Lines, "}" => ActionFn(190); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant36(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = super::__action190::<>(errors, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant26(__nt), __end)); + (4, 48) + } + fn __reduce86< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Block = "{", Lines, "}" => ActionFn(191); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant36(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action191::<>(errors, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant26(__nt), __end)); + (3, 48) + } + fn __reduce87< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Block = "{", "\n", Lines, "}" => ActionFn(192); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant29(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = super::__action192::<>(errors, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant27(__nt), __end)); + (4, 49) + } + fn __reduce88< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Block = "{", Lines, "}" => ActionFn(193); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant29(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action193::<>(errors, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant27(__nt), __end)); + (3, 49) + } + fn __reduce89< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Block = "{", "\n", Lines, "}" => ActionFn(194); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant37(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = super::__action194::<>(errors, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant28(__nt), __end)); + (4, 50) + } + fn __reduce90< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Block = "{", Lines, "}" => ActionFn(195); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant37(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action195::<>(errors, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant28(__nt), __end)); + (3, 50) + } + fn __reduce91< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Block = "{", "\n", Lines, "}" => ActionFn(196); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant29(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = super::__action196::<>(errors, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant27(__nt), __end)); + (4, 51) + } + fn __reduce92< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Block = "{", Lines, "}" => ActionFn(197); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant29(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action197::<>(errors, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant27(__nt), __end)); + (3, 51) + } + fn __reduce93< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Comma = Expression => ActionFn(243); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action243::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant29(__nt), __end)); + (1, 52) + } + fn __reduce94< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Comma = => ActionFn(244); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); + let __end = __start; + let __nt = super::__action244::<>(errors, &__start, &__end); + __symbols.push((__start, __Symbol::Variant29(__nt), __end)); + (0, 52) + } + fn __reduce95< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Comma = ( ",")+, Expression => ActionFn(245); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant14(__symbols); + let __sym0 = __pop_Variant15(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action245::<>(errors, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant29(__nt), __end)); + (2, 52) + } + fn __reduce96< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Comma = ( ",")+ => ActionFn(246); + let __sym0 = __pop_Variant15(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action246::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant29(__nt), __end)); + (1, 52) + } + fn __reduce97< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Comma = FnArg => ActionFn(251); + let __sym0 = __pop_Variant18(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action251::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant30(__nt), __end)); + (1, 53) + } + fn __reduce98< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Comma = => ActionFn(252); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); + let __end = __start; + let __nt = super::__action252::<>(errors, &__start, &__end); + __symbols.push((__start, __Symbol::Variant30(__nt), __end)); + (0, 53) + } + fn __reduce99< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Comma = ( ",")+, FnArg => ActionFn(253); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant18(__symbols); + let __sym0 = __pop_Variant19(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action253::<>(errors, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant30(__nt), __end)); + (2, 53) + } + fn __reduce100< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Comma = ( ",")+ => ActionFn(254); + let __sym0 = __pop_Variant19(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action254::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant30(__nt), __end)); + (1, 53) + } + fn __reduce101< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Comma = Ident => ActionFn(259); + let __sym0 = __pop_Variant10(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action259::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant31(__nt), __end)); + (1, 54) + } + fn __reduce102< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Comma = => ActionFn(260); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); + let __end = __start; + let __nt = super::__action260::<>(errors, &__start, &__end); + __symbols.push((__start, __Symbol::Variant31(__nt), __end)); + (0, 54) + } + fn __reduce103< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Comma = ( ",")+, Ident => ActionFn(261); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant10(__symbols); + let __sym0 = __pop_Variant20(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action261::<>(errors, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant31(__nt), __end)); + (2, 54) + } + fn __reduce104< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Comma = ( ",")+ => ActionFn(262); + let __sym0 = __pop_Variant20(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action262::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant31(__nt), __end)); + (1, 54) + } + fn __reduce105< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Effect = "effect" => ActionFn(5); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action5::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant32(__nt), __end)); + (1, 55) + } + fn __reduce106< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // EffectDef = Effect, Ident, ":", Plus, Block => ActionFn(48); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant28(__symbols); + let __sym3 = __pop_Variant31(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant10(__symbols); + let __sym0 = __pop_Variant32(__symbols); + let __start = __sym0.0; + let __end = __sym4.2; + let __nt = super::__action48::<>(errors, __sym0, __sym1, __sym2, __sym3, __sym4); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (5, 56) + } + fn __reduce107< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Else = "else" => ActionFn(12); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action12::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant32(__nt), __end)); + (1, 57) + } + fn __reduce108< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Expression = Expression, "+", Expression2 => ActionFn(29); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant14(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action29::<>(errors, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (3, 58) + } + fn __reduce109< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Expression = Expression, "-", Expression2 => ActionFn(30); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant14(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action30::<>(errors, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (3, 58) + } + fn __reduce110< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Expression = Expression2 => ActionFn(31); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action31::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 58) + } + fn __reduce111< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Expression1 = Term => ActionFn(25); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action25::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 59) + } + fn __reduce112< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Expression2 = Expression2, "*", Expression1 => ActionFn(26); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant14(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action26::<>(errors, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (3, 60) + } + fn __reduce113< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Expression2 = Expression2, "/", Expression1 => ActionFn(27); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant14(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action27::<>(errors, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (3, 60) + } + fn __reduce114< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Expression2 = Expression1 => ActionFn(28); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action28::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 60) + } + fn __reduce115< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Expression? = Expression => ActionFn(107); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action107::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant33(__nt), __end)); + (1, 61) + } + fn __reduce116< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Expression? = => ActionFn(108); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); + let __end = __start; + let __nt = super::__action108::<>(errors, &__start, &__end); + __symbols.push((__start, __Symbol::Variant33(__nt), __end)); + (0, 61) + } + fn __reduce117< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // False = "false" => ActionFn(15); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action15::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant32(__nt), __end)); + (1, 62) + } + fn __reduce118< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Field = Ident, ":", IdentOrIdentWithGenerics => ActionFn(32); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant10(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant10(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action32::<>(errors, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (3, 63) + } + fn __reduce119< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Field? = Field => ActionFn(139); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action139::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant34(__nt), __end)); + (1, 64) + } + fn __reduce120< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Field? = => ActionFn(140); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); + let __end = __start; + let __nt = super::__action140::<>(errors, &__start, &__end); + __symbols.push((__start, __Symbol::Variant34(__nt), __end)); + (0, 64) + } + fn __reduce121< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Fn = "fn" => ActionFn(3); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action3::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant32(__nt), __end)); + (1, 65) + } + fn __reduce122< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // FnArg = Self_ => ActionFn(34); + let __sym0 = __pop_Variant32(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action34::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant18(__nt), __end)); + (1, 66) + } + fn __reduce123< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // FnArg = Field => ActionFn(35); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action35::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant18(__nt), __end)); + (1, 66) + } + fn __reduce124< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // FnArg? = FnArg => ActionFn(102); + let __sym0 = __pop_Variant18(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action102::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant35(__nt), __end)); + (1, 67) + } + fn __reduce125< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // FnArg? = => ActionFn(103); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); + let __end = __start; + let __nt = super::__action103::<>(errors, &__start, &__end); + __symbols.push((__start, __Symbol::Variant35(__nt), __end)); + (0, 67) + } + fn __reduce126< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // FnCall = IdentOrIdentWithGenerics, "(", Comma, ")", "[", Ident, "]" => ActionFn(182); + assert!(__symbols.len() >= 7); + let __sym6 = __pop_Variant0(__symbols); + let __sym5 = __pop_Variant10(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant29(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant10(__symbols); + let __start = __sym0.0; + let __end = __sym6.2; + let __nt = super::__action182::<>(errors, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (7, 68) + } + fn __reduce127< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // FnCall = IdentOrIdentWithGenerics, "(", Comma, ")" => ActionFn(183); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant29(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant10(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = super::__action183::<>(errors, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (4, 68) + } + fn __reduce128< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // FnDef = Fn, Prototype, Block => ActionFn(241); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant27(__symbols); + let __sym1 = __pop_Variant21(__symbols); + let __sym0 = __pop_Variant32(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action241::<>(errors, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (3, 69) + } + fn __reduce129< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // FnDef = Fn, Prototype, Block, (WhenBlock)+ => ActionFn(242); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant24(__symbols); + let __sym2 = __pop_Variant27(__symbols); + let __sym1 = __pop_Variant21(__symbols); + let __sym0 = __pop_Variant32(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = super::__action242::<>(errors, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (4, 69) + } + fn __reduce130< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // FnDef? = FnDef => ActionFn(134); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action134::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant33(__nt), __end)); + (1, 70) + } + fn __reduce131< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // FnDef? = => ActionFn(135); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); + let __end = __start; + let __nt = super::__action135::<>(errors, &__start, &__end); + __symbols.push((__start, __Symbol::Variant33(__nt), __end)); + (0, 70) + } + fn __reduce132< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // From = "from" => ActionFn(9); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action9::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant32(__nt), __end)); + (1, 71) + } + fn __reduce133< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Ident = "ident" => ActionFn(16); + let __sym0 = __pop_Variant1(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action16::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant10(__nt), __end)); + (1, 72) + } + fn __reduce134< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Ident? = Ident => ActionFn(115); + let __sym0 = __pop_Variant10(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action115::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); + (1, 73) + } + fn __reduce135< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Ident? = => ActionFn(116); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); + let __end = __start; + let __nt = super::__action116::<>(errors, &__start, &__end); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); + (0, 73) + } + fn __reduce136< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // IdentOrIdentWithGenerics = Ident => ActionFn(18); + let __sym0 = __pop_Variant10(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action18::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant10(__nt), __end)); + (1, 74) + } + fn __reduce137< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // IdentOrIdentWithGenerics = IdentWithGenerics => ActionFn(19); + let __sym0 = __pop_Variant10(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action19::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant10(__nt), __end)); + (1, 74) + } + fn __reduce138< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // IdentWithGenerics = "ident", "<", Comma, ">" => ActionFn(17); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant31(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant1(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = super::__action17::<>(errors, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant10(__nt), __end)); + (4, 75) + } + fn __reduce139< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // If = "if" => ActionFn(13); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action13::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant32(__nt), __end)); + (1, 76) + } + fn __reduce140< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // IfDef = If, Expression, Block => ActionFn(53); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant27(__symbols); + let __sym1 = __pop_Variant14(__symbols); + let __sym0 = __pop_Variant32(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action53::<>(errors, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (3, 77) + } + fn __reduce141< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // IfDef = If, Expression, Block, Else, Block => ActionFn(54); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant27(__symbols); + let __sym3 = __pop_Variant32(__symbols); + let __sym2 = __pop_Variant27(__symbols); + let __sym1 = __pop_Variant14(__symbols); + let __sym0 = __pop_Variant32(__symbols); + let __start = __sym0.0; + let __end = __sym4.2; + let __nt = super::__action54::<>(errors, __sym0, __sym1, __sym2, __sym3, __sym4); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (5, 77) + } + fn __reduce142< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Impl = "impl" => ActionFn(7); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action7::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant32(__nt), __end)); + (1, 78) + } + fn __reduce143< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ImplDef = Impl, Ident, "for", Ident, Block => ActionFn(199); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant27(__symbols); + let __sym3 = __pop_Variant10(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant10(__symbols); + let __sym0 = __pop_Variant32(__symbols); + let __start = __sym0.0; + let __end = __sym4.2; + let __nt = super::__action199::<>(errors, __sym0, __sym1, __sym2, __sym3, __sym4); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (5, 79) + } + fn __reduce144< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ImplDef = Impl, Ident, Block => ActionFn(200); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant27(__symbols); + let __sym1 = __pop_Variant10(__symbols); + let __sym0 = __pop_Variant32(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action200::<>(errors, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (3, 79) + } + fn __reduce145< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Let = "let" => ActionFn(4); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action4::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant32(__nt), __end)); + (1, 80) + } + fn __reduce146< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Lines = Field => ActionFn(247); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action247::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant36(__nt), __end)); + (1, 81) + } + fn __reduce147< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Lines = => ActionFn(248); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); + let __end = __start; + let __nt = super::__action248::<>(errors, &__start, &__end); + __symbols.push((__start, __Symbol::Variant36(__nt), __end)); + (0, 81) + } + fn __reduce148< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Lines = ( "\n")+, Field => ActionFn(249); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant17(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action249::<>(errors, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant36(__nt), __end)); + (2, 81) + } + fn __reduce149< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Lines = ( "\n")+ => ActionFn(250); + let __sym0 = __pop_Variant17(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action250::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant36(__nt), __end)); + (1, 81) + } + fn __reduce150< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Lines = FnDef => ActionFn(255); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action255::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant29(__nt), __end)); + (1, 82) + } + fn __reduce151< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Lines = => ActionFn(256); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); + let __end = __start; + let __nt = super::__action256::<>(errors, &__start, &__end); + __symbols.push((__start, __Symbol::Variant29(__nt), __end)); + (0, 82) + } + fn __reduce152< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Lines = ( "\n")+, FnDef => ActionFn(257); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant14(__symbols); + let __sym0 = __pop_Variant15(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action257::<>(errors, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant29(__nt), __end)); + (2, 82) + } + fn __reduce153< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Lines = ( "\n")+ => ActionFn(258); + let __sym0 = __pop_Variant15(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action258::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant29(__nt), __end)); + (1, 82) + } + fn __reduce154< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Lines = Prototype => ActionFn(267); + let __sym0 = __pop_Variant21(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action267::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant37(__nt), __end)); + (1, 83) + } + fn __reduce155< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Lines = => ActionFn(268); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); + let __end = __start; + let __nt = super::__action268::<>(errors, &__start, &__end); + __symbols.push((__start, __Symbol::Variant37(__nt), __end)); + (0, 83) + } + fn __reduce156< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Lines = ( "\n")+, Prototype => ActionFn(269); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant21(__symbols); + let __sym0 = __pop_Variant22(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action269::<>(errors, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant37(__nt), __end)); + (2, 83) + } + fn __reduce157< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Lines = ( "\n")+ => ActionFn(270); + let __sym0 = __pop_Variant22(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action270::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant37(__nt), __end)); + (1, 83) + } + fn __reduce158< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Lines = Statement => ActionFn(271); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action271::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant29(__nt), __end)); + (1, 84) + } + fn __reduce159< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Lines = => ActionFn(272); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); + let __end = __start; + let __nt = super::__action272::<>(errors, &__start, &__end); + __symbols.push((__start, __Symbol::Variant29(__nt), __end)); + (0, 84) + } + fn __reduce160< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Lines = ( "\n")+, Statement => ActionFn(273); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant14(__symbols); + let __sym0 = __pop_Variant15(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action273::<>(errors, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant29(__nt), __end)); + (2, 84) + } + fn __reduce161< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Lines = ( "\n")+ => ActionFn(274); + let __sym0 = __pop_Variant15(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action274::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant29(__nt), __end)); + (1, 84) + } + fn __reduce162< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // None = "none" => ActionFn(1); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant32(__nt), __end)); + (1, 85) + } + fn __reduce163< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Plus = Ident => ActionFn(263); + let __sym0 = __pop_Variant10(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action263::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant31(__nt), __end)); + (1, 86) + } + fn __reduce164< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Plus = => ActionFn(264); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); + let __end = __start; + let __nt = super::__action264::<>(errors, &__start, &__end); + __symbols.push((__start, __Symbol::Variant31(__nt), __end)); + (0, 86) + } + fn __reduce165< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Plus = ( "+")+, Ident => ActionFn(265); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant10(__symbols); + let __sym0 = __pop_Variant20(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action265::<>(errors, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant31(__nt), __end)); + (2, 86) + } + fn __reduce166< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Plus = ( "+")+ => ActionFn(266); + let __sym0 = __pop_Variant20(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action266::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant31(__nt), __end)); + (1, 86) + } + fn __reduce167< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Prototype = IdentOrIdentWithGenerics, "(", Comma, ")", "[", Comma, "]", "->", Ident => ActionFn(175); + assert!(__symbols.len() >= 9); + let __sym8 = __pop_Variant10(__symbols); + let __sym7 = __pop_Variant0(__symbols); + let __sym6 = __pop_Variant0(__symbols); + let __sym5 = __pop_Variant31(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant30(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant10(__symbols); + let __start = __sym0.0; + let __end = __sym8.2; + let __nt = super::__action175::<>(errors, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8); + __symbols.push((__start, __Symbol::Variant21(__nt), __end)); + (9, 87) + } + fn __reduce168< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Prototype = IdentOrIdentWithGenerics, "(", Comma, ")", "[", Comma, "]" => ActionFn(176); + assert!(__symbols.len() >= 7); + let __sym6 = __pop_Variant0(__symbols); + let __sym5 = __pop_Variant31(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant30(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant10(__symbols); + let __start = __sym0.0; + let __end = __sym6.2; + let __nt = super::__action176::<>(errors, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6); + __symbols.push((__start, __Symbol::Variant21(__nt), __end)); + (7, 87) + } + fn __reduce169< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Prototype? = Prototype => ActionFn(144); + let __sym0 = __pop_Variant21(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action144::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (1, 88) + } + fn __reduce170< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Prototype? = => ActionFn(145); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); + let __end = __start; + let __nt = super::__action145::<>(errors, &__start, &__end); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (0, 88) + } + fn __reduce171< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Self_ = "self" => ActionFn(11); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action11::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant32(__nt), __end)); + (1, 89) + } + fn __reduce172< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ShebangLine = "#!" => ActionFn(235); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action235::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 90) + } + fn __reduce173< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ShebangLine = "#!", (ShellComponent)+ => ActionFn(236); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant15(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action236::<>(errors, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (2, 90) + } + fn __reduce174< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ShebangLine = "#!", ("/" Ident)+ => ActionFn(237); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant9(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action237::<>(errors, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (2, 90) + } + fn __reduce175< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ShebangLine = "#!", ("/" Ident)+, (ShellComponent)+ => ActionFn(238); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant15(__symbols); + let __sym1 = __pop_Variant9(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action238::<>(errors, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (3, 90) + } + fn __reduce176< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ShellComponent = "string" => ActionFn(49); + let __sym0 = __pop_Variant1(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action49::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 91) + } + fn __reduce177< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // ShellComponent = Ident => ActionFn(50); + let __sym0 = __pop_Variant10(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action50::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 91) + } + fn __reduce178< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Source = => ActionFn(188); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); + let __end = __start; + let __nt = super::__action188::<>(errors, &__start, &__end); + __symbols.push((__start, __Symbol::Variant39(__nt), __end)); + (0, 92) + } + fn __reduce179< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Source = ("\n"* TopLevel)+ => ActionFn(189); + let __sym0 = __pop_Variant13(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action189::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant39(__nt), __end)); + (1, 92) + } + fn __reduce180< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Source = error => ActionFn(67); + let __sym0 = __pop_Variant4(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action67::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant39(__nt), __end)); + (1, 92) + } + fn __reduce181< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Statement = Let, Ident, "=", Expression => ActionFn(56); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant14(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant10(__symbols); + let __sym0 = __pop_Variant32(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = super::__action56::<>(errors, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (4, 93) + } + fn __reduce182< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Statement = IfDef => ActionFn(57); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action57::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 93) + } + fn __reduce183< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Statement = Statement0 => ActionFn(58); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action58::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 93) + } + fn __reduce184< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Statement0 = FnCall => ActionFn(55); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action55::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 94) + } + fn __reduce185< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Statement? = Statement => ActionFn(151); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action151::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant33(__nt), __end)); + (1, 95) + } + fn __reduce186< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Statement? = => ActionFn(152); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2)).unwrap_or_default(); + let __end = __start; + let __nt = super::__action152::<>(errors, &__start, &__end); + __symbols.push((__start, __Symbol::Variant33(__nt), __end)); + (0, 95) + } + fn __reduce187< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // String = "string" => ActionFn(37); + let __sym0 = __pop_Variant1(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action37::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 96) + } + fn __reduce188< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Struct = "struct" => ActionFn(6); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action6::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant32(__nt), __end)); + (1, 97) + } + fn __reduce189< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // StructDef = Struct, Ident, Block => ActionFn(52); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant26(__symbols); + let __sym1 = __pop_Variant10(__symbols); + let __sym0 = __pop_Variant32(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action52::<>(errors, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (3, 98) + } + fn __reduce190< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Term = String => ActionFn(39); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action39::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 99) + } + fn __reduce191< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Term = "int" => ActionFn(40); + let __sym0 = __pop_Variant3(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action40::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 99) + } + fn __reduce192< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Term = Ident => ActionFn(41); + let __sym0 = __pop_Variant10(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action41::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 99) + } + fn __reduce193< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Term = FnCall => ActionFn(42); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action42::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 99) + } + fn __reduce194< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Term = True => ActionFn(43); + let __sym0 = __pop_Variant32(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action43::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 99) + } + fn __reduce195< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Term = False => ActionFn(44); + let __sym0 = __pop_Variant32(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action44::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 99) + } + fn __reduce196< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Term = "(", Expression, ")" => ActionFn(45); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant14(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action45::<>(errors, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (3, 99) + } + fn __reduce197< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // TopLevel = FnDef => ActionFn(61); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action61::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 100) + } + fn __reduce198< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // TopLevel = EffectDef => ActionFn(62); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action62::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 100) + } + fn __reduce199< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // TopLevel = StructDef => ActionFn(63); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action63::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 100) + } + fn __reduce200< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // TopLevel = UseDef => ActionFn(64); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action64::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 100) + } + fn __reduce201< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // TopLevel = ImplDef => ActionFn(65); + let __sym0 = __pop_Variant14(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action65::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 100) + } + fn __reduce202< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // True = "true" => ActionFn(14); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action14::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant32(__nt), __end)); + (1, 101) + } + fn __reduce203< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // TypeParameters = "<", Comma, ">" => ActionFn(33); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant31(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action33::<>(errors, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant31(__nt), __end)); + (3, 102) + } + fn __reduce204< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Use = "use" => ActionFn(8); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action8::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant32(__nt), __end)); + (1, 103) + } + fn __reduce205< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // UseDef = Use, "{", Comma, "}", From, Ident => ActionFn(59); + assert!(__symbols.len() >= 6); + let __sym5 = __pop_Variant10(__symbols); + let __sym4 = __pop_Variant32(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant31(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant32(__symbols); + let __start = __sym0.0; + let __end = __sym5.2; + let __nt = super::__action59::<>(errors, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5); + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (6, 104) + } + fn __reduce206< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // When = "when" => ActionFn(2); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action2::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant32(__nt), __end)); + (1, 105) + } + fn __reduce207< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // WhenBlock = When, Ident, Block => ActionFn(46); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant27(__symbols); + let __sym1 = __pop_Variant10(__symbols); + let __sym0 = __pop_Variant32(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action46::<>(errors, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant23(__nt), __end)); + (3, 106) + } + fn __reduce208< + 'input, + 'err, + >( + errors: &'err mut Vec, &'static str>>, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input (), &'err ())>, + ) -> (usize, usize) + { + // Where = "where" => ActionFn(10); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action10::<>(errors, __sym0); + __symbols.push((__start, __Symbol::Variant32(__nt), __end)); + (1, 107) + } +} +#[allow(unused_imports)] +pub use self::__parse__Source::SourceParser; + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action0< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, __0, _): (usize, Module, usize), +) -> Module +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action1< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, __0, _): (usize, Token<'input>, usize), +) -> Expression +{ + Expression::Keyword(Keyword::None) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action2< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, __0, _): (usize, Token<'input>, usize), +) -> Expression +{ + Expression::Keyword(Keyword::When) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action3< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, __0, _): (usize, Token<'input>, usize), +) -> Expression +{ + Expression::Keyword(Keyword::Fn) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action4< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, __0, _): (usize, Token<'input>, usize), +) -> Expression +{ + Expression::Keyword(Keyword::Let) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action5< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, __0, _): (usize, Token<'input>, usize), +) -> Expression +{ + Expression::Keyword(Keyword::Effect) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action6< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, __0, _): (usize, Token<'input>, usize), +) -> Expression +{ + Expression::Keyword(Keyword::Struct) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action7< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, __0, _): (usize, Token<'input>, usize), +) -> Expression +{ + Expression::Keyword(Keyword::Impl) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action8< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, __0, _): (usize, Token<'input>, usize), +) -> Expression +{ + Expression::Keyword(Keyword::Use) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action9< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, __0, _): (usize, Token<'input>, usize), +) -> Expression +{ + Expression::Keyword(Keyword::From) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action10< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, __0, _): (usize, Token<'input>, usize), +) -> Expression +{ + Expression::Keyword(Keyword::Where) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action11< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, __0, _): (usize, Token<'input>, usize), +) -> Expression +{ + Expression::Keyword(Keyword::Self_) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action12< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, __0, _): (usize, Token<'input>, usize), +) -> Expression +{ + Expression::Keyword(Keyword::Else) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action13< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, __0, _): (usize, Token<'input>, usize), +) -> Expression +{ + Expression::Keyword(Keyword::If) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action14< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, __0, _): (usize, Token<'input>, usize), +) -> Expression +{ + Expression::Bool(true) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action15< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, __0, _): (usize, Token<'input>, usize), +) -> Expression +{ + Expression::Bool(false) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action16< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, i, _): (usize, &'input str, usize), +) -> Ident +{ + Ident(i.to_string(), None) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action17< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, i, _): (usize, &'input str, usize), + (_, _, _): (usize, Token<'input>, usize), + (_, g, _): (usize, Vec, usize), + (_, _, _): (usize, Token<'input>, usize), +) -> Ident +{ + Ident(i.to_string(), Some(g)) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action18< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, i, _): (usize, Ident, usize), +) -> Ident +{ + i +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action19< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, i, _): (usize, Ident, usize), +) -> Ident +{ + i +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action20< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, i, _): (usize, i64, usize), +) -> Value +{ + Value::Literal(Literal::Integer(i)) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action21< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, f, _): (usize, f64, usize), +) -> Value +{ + Value::Literal(Literal::Float(f)) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action22< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, s, _): (usize, &'input str, usize), +) -> Value +{ + { + let start = 1; + let end = s.len() - 1; + Value::Literal(Literal::String(s.get(start..end).expect(format!("malformed string {s}, strings must be quoted").as_str()).to_string())) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action23< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, i, _): (usize, Ident, usize), +) -> Value +{ + Value::Ident(i) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action24< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, __0, _): (usize, Value, usize), +) -> Value +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action25< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, __0, _): (usize, Box, usize), +) -> Box +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action26< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, lhs, _): (usize, Box, usize), + (_, _, _): (usize, Token<'input>, usize), + (_, rhs, _): (usize, Box, usize), +) -> Box +{ + { + Box::new(Expression::BinaryExpression(BinaryOperation { + lhs, + op: Operator::Mul, + rhs + })) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action27< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, lhs, _): (usize, Box, usize), + (_, _, _): (usize, Token<'input>, usize), + (_, rhs, _): (usize, Box, usize), +) -> Box +{ + { + Box::new(Expression::BinaryExpression(BinaryOperation { + lhs, + op: Operator::Div, + rhs + })) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action28< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, __0, _): (usize, Box, usize), +) -> Box +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action29< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, lhs, _): (usize, Box, usize), + (_, _, _): (usize, Token<'input>, usize), + (_, rhs, _): (usize, Box, usize), +) -> Box +{ + { + Box::new(Expression::BinaryExpression(BinaryOperation { + lhs, + op: Operator::Add, + rhs + })) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action30< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, lhs, _): (usize, Box, usize), + (_, _, _): (usize, Token<'input>, usize), + (_, rhs, _): (usize, Box, usize), +) -> Box +{ + { + Box::new(Expression::BinaryExpression(BinaryOperation { + lhs, + op: Operator::Sub, + rhs + })) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action31< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, __0, _): (usize, Box, usize), +) -> Box +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action32< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, name, _): (usize, Ident, usize), + (_, _, _): (usize, Token<'input>, usize), + (_, ty, _): (usize, Ident, usize), +) -> Field +{ + Field(name, ty) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action33< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, _, _): (usize, Token<'input>, usize), + (_, __0, _): (usize, Vec, usize), + (_, _, _): (usize, Token<'input>, usize), +) -> Vec +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action34< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, self_, _): (usize, Expression, usize), +) -> FnArg +{ + FnArg::Reciever +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action35< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, field, _): (usize, Field, usize), +) -> FnArg +{ + FnArg::Field(field) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action36< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, name, _): (usize, Ident, usize), + (_, _, _): (usize, Token<'input>, usize), + (_, args, _): (usize, Vec, usize), + (_, _, _): (usize, Token<'input>, usize), + (_, _, _): (usize, Token<'input>, usize), + (_, effects, _): (usize, Vec, usize), + (_, _, _): (usize, Token<'input>, usize), + (_, ret, _): (usize, core::option::Option<(Token<'input>, Ident)>, usize), +) -> Prototype +{ + { + let ret = match ret { + None => None, + Some(r) => Some(r.1), + }; + Prototype{name, args, ret, effects} + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action37< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, s, _): (usize, &'input str, usize), +) -> Box +{ + { + let start = 1; + let end = s.len() - 1; + Box::new(Expression::String(s.get(start..end).expect(format!("malformed string {s}, strings must be quoted").as_str()).to_string())) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action38< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, name, _): (usize, Ident, usize), + (_, _, _): (usize, Token<'input>, usize), + (_, args, _): (usize, Vec>, usize), + (_, _, _): (usize, Token<'input>, usize), + (_, i, _): (usize, core::option::Option, usize), +) -> Box +{ + Box::new(Expression::FnCall(FnCall(name, args))) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action39< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, s, _): (usize, Box, usize), +) -> Box +{ + s +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action40< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, val, _): (usize, i64, usize), +) -> Box +{ + { + Box::new(Expression::Integer(val)) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action41< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, i, _): (usize, Ident, usize), +) -> Box +{ + { + Box::new(Expression::Ident(i)) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action42< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, f, _): (usize, Box, usize), +) -> Box +{ + f +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action43< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, true_, _): (usize, Expression, usize), +) -> Box +{ + Box::new(true_) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action44< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, false_, _): (usize, Expression, usize), +) -> Box +{ + Box::new(false_) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action45< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, _, _): (usize, Token<'input>, usize), + (_, __0, _): (usize, Box, usize), + (_, _, _): (usize, Token<'input>, usize), +) -> Box +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action46< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, _, _): (usize, Expression, usize), + (_, i, _): (usize, Ident, usize), + (_, lines, _): (usize, Block>, usize), +) -> (Ident, Block>) +{ + (i, lines) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action47< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, _, _): (usize, Expression, usize), + (_, proto, _): (usize, Prototype, usize), + (_, block, _): (usize, Block>, usize), + (_, handlers, _): (usize, alloc::vec::Vec<(Ident, Block>)>, usize), +) -> Box +{ + Box::new(Expression::FnDef(FnDef(proto, block, handlers))) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action48< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, _, _): (usize, Expression, usize), + (_, i, _): (usize, Ident, usize), + (_, _, _): (usize, Token<'input>, usize), + (_, effects, _): (usize, Vec, usize), + (_, block, _): (usize, Block, usize), +) -> Box +{ + Box::new(Expression::EffectDef(EffectDef(i, effects,block))) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action49< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, s, _): (usize, &'input str, usize), +) -> Box +{ + Box::new(Expression::String((s).to_string())) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action50< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, i, _): (usize, Ident, usize), +) -> Box +{ + Box::new(Expression::Ident(i)) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action51< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, _, _): (usize, Token<'input>, usize), + (_, path, _): (usize, alloc::vec::Vec<(Token<'input>, Ident)>, usize), + (_, components, _): (usize, alloc::vec::Vec>, usize), +) -> Box +{ + Box::new(Expression::ShellCommand(path.into_iter().map(|i| i.1.into()).collect(), components)) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action52< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, _, _): (usize, Expression, usize), + (_, i, _): (usize, Ident, usize), + (_, fields, _): (usize, Block, usize), +) -> Box +{ + Box::new(Expression::StructDef(StructDef(i, fields))) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action53< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, _, _): (usize, Expression, usize), + (_, cond, _): (usize, Box, usize), + (_, if_, _): (usize, Block>, usize), +) -> Box +{ + { + let branch = Branch ( + cond, + vec![ + (Expression::Bool(true), if_), + ] + ); + Box::new(Expression::Branch(branch)) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action54< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, _, _): (usize, Expression, usize), + (_, cond, _): (usize, Box, usize), + (_, if_, _): (usize, Block>, usize), + (_, _, _): (usize, Expression, usize), + (_, else_, _): (usize, Block>, usize), +) -> Box +{ + { + let branch = Branch ( + cond, + vec![ + (Expression::Bool(true), if_), + (Expression::Bool(false), else_), + ] + ); + Box::new(Expression::Branch(branch)) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action55< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, __0, _): (usize, Box, usize), +) -> Box +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action56< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, _, _): (usize, Expression, usize), + (_, name, _): (usize, Ident, usize), + (_, _, _): (usize, Token<'input>, usize), + (_, value, _): (usize, Box, usize), +) -> Box +{ + Box::new(Expression::Binding(Binding(name, value))) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action57< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, __0, _): (usize, Box, usize), +) -> Box +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action58< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, __0, _): (usize, Box, usize), +) -> Box +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action59< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, _, _): (usize, Expression, usize), + (_, _, _): (usize, Token<'input>, usize), + (_, imports, _): (usize, Vec, usize), + (_, _, _): (usize, Token<'input>, usize), + (_, _, _): (usize, Expression, usize), + (_, i, _): (usize, Ident, usize), +) -> Box +{ + Box::new(Expression::UseDef(UseDef(imports, i))) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action60< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, _, _): (usize, Expression, usize), + (_, i, _): (usize, Ident, usize), + (_, t, _): (usize, core::option::Option<(Token<'input>, Ident)>, usize), + (_, lines, _): (usize, Block>, usize), +) -> Box +{ + Box::new(Expression::ImplDef(ImplDef(i, t.map(|t| t.1), lines))) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action61< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, __0, _): (usize, Box, usize), +) -> Box +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action62< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, __0, _): (usize, Box, usize), +) -> Box +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action63< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, __0, _): (usize, Box, usize), +) -> Box +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action64< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, __0, _): (usize, Box, usize), +) -> Box +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action65< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, __0, _): (usize, Box, usize), +) -> Box +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action66< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, expr, _): (usize, alloc::vec::Vec<(alloc::vec::Vec>, Box)>, usize), +) -> Module +{ + Module(expr.into_iter().map(|e| e.1).collect()) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action67< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, __0, _): (usize, __lalrpop_util::ErrorRecovery, &'static str>, usize), +) -> Module +{ + { + errors.push(__0); + Module(vec![]) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action68< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __lookbehind: &usize, + __lookahead: &usize, +) -> alloc::vec::Vec<(alloc::vec::Vec>, Box)> +{ + alloc::vec![] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action69< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, v, _): (usize, alloc::vec::Vec<(alloc::vec::Vec>, Box)>, usize), +) -> alloc::vec::Vec<(alloc::vec::Vec>, Box)> +{ + v +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action70< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, __0, _): (usize, alloc::vec::Vec>, usize), + (_, __1, _): (usize, Box, usize), +) -> (alloc::vec::Vec>, Box) +{ + (__0, __1) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action71< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __lookbehind: &usize, + __lookahead: &usize, +) -> alloc::vec::Vec> +{ + alloc::vec![] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action72< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, v, _): (usize, alloc::vec::Vec>, usize), +) -> alloc::vec::Vec> +{ + v +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action73< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, _, _): (usize, Token<'input>, usize), + (_, _, _): (usize, core::option::Option>, usize), + (_, lines, _): (usize, Vec>, usize), + (_, _, _): (usize, Token<'input>, usize), +) -> Block> +{ + Block(lines) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action74< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, __0, _): (usize, (Token<'input>, Ident), usize), +) -> core::option::Option<(Token<'input>, Ident)> +{ + Some(__0) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action75< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __lookbehind: &usize, + __lookahead: &usize, +) -> core::option::Option<(Token<'input>, Ident)> +{ + None +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action76< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, __0, _): (usize, Token<'input>, usize), + (_, __1, _): (usize, Ident, usize), +) -> (Token<'input>, Ident) +{ + (__0, __1) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action77< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, _, _): (usize, Token<'input>, usize), + (_, _, _): (usize, core::option::Option>, usize), + (_, lines, _): (usize, Vec, usize), + (_, _, _): (usize, Token<'input>, usize), +) -> Block +{ + Block(lines) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action78< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __lookbehind: &usize, + __lookahead: &usize, +) -> alloc::vec::Vec> +{ + alloc::vec![] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action79< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, v, _): (usize, alloc::vec::Vec>, usize), +) -> alloc::vec::Vec> +{ + v +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action80< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, __0, _): (usize, Box, usize), +) -> Box +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action81< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __lookbehind: &usize, + __lookahead: &usize, +) -> alloc::vec::Vec<(Token<'input>, Ident)> +{ + alloc::vec![] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action82< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, v, _): (usize, alloc::vec::Vec<(Token<'input>, Ident)>, usize), +) -> alloc::vec::Vec<(Token<'input>, Ident)> +{ + v +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action83< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, __0, _): (usize, Token<'input>, usize), + (_, __1, _): (usize, Ident, usize), +) -> (Token<'input>, Ident) +{ + (__0, __1) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action84< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, _, _): (usize, Token<'input>, usize), + (_, _, _): (usize, core::option::Option>, usize), + (_, lines, _): (usize, Vec, usize), + (_, _, _): (usize, Token<'input>, usize), +) -> Block +{ + Block(lines) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action85< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, mut v, _): (usize, alloc::vec::Vec, usize), + (_, e, _): (usize, core::option::Option, usize), +) -> Vec +{ + match e { // (1) + None=> v, + Some(e) => { + v.push(e); + v + } + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action86< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __lookbehind: &usize, + __lookahead: &usize, +) -> alloc::vec::Vec<(Ident, Block>)> +{ + alloc::vec![] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action87< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, v, _): (usize, alloc::vec::Vec<(Ident, Block>)>, usize), +) -> alloc::vec::Vec<(Ident, Block>)> +{ + v +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action88< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, __0, _): (usize, (Ident, Block>), usize), +) -> (Ident, Block>) +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action89< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, _, _): (usize, Token<'input>, usize), + (_, _, _): (usize, core::option::Option>, usize), + (_, lines, _): (usize, Vec>, usize), + (_, _, _): (usize, Token<'input>, usize), +) -> Block> +{ + Block(lines) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action90< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, __0, _): (usize, Ident, usize), +) -> core::option::Option +{ + Some(__0) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action91< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __lookbehind: &usize, + __lookahead: &usize, +) -> core::option::Option +{ + None +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action92< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, _, _): (usize, Token<'input>, usize), + (_, __0, _): (usize, Ident, usize), + (_, _, _): (usize, Token<'input>, usize), +) -> Ident +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action93< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, mut v, _): (usize, alloc::vec::Vec>, usize), + (_, e, _): (usize, core::option::Option>, usize), +) -> Vec> +{ + match e { // (1) + None=> v, + Some(e) => { + v.push(e); + v + } + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action94< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, __0, _): (usize, (Token<'input>, Ident), usize), +) -> core::option::Option<(Token<'input>, Ident)> +{ + Some(__0) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action95< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __lookbehind: &usize, + __lookahead: &usize, +) -> core::option::Option<(Token<'input>, Ident)> +{ + None +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action96< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, __0, _): (usize, Token<'input>, usize), + (_, __1, _): (usize, Ident, usize), +) -> (Token<'input>, Ident) +{ + (__0, __1) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action97< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, mut v, _): (usize, alloc::vec::Vec, usize), + (_, e, _): (usize, core::option::Option, usize), +) -> Vec +{ + match e { // (1) + None=> v, + Some(e) => { + v.push(e); + v + } + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action98< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, mut v, _): (usize, alloc::vec::Vec, usize), + (_, e, _): (usize, core::option::Option, usize), +) -> Vec +{ + match e { // (1) + None=> v, + Some(e) => { + v.push(e); + v + } + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action99< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __lookbehind: &usize, + __lookahead: &usize, +) -> alloc::vec::Vec +{ + alloc::vec![] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action100< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, v, _): (usize, alloc::vec::Vec, usize), +) -> alloc::vec::Vec +{ + v +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action101< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, __0, _): (usize, Ident, usize), + (_, _, _): (usize, Token<'input>, usize), +) -> Ident +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action102< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, __0, _): (usize, FnArg, usize), +) -> core::option::Option +{ + Some(__0) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action103< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __lookbehind: &usize, + __lookahead: &usize, +) -> core::option::Option +{ + None +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action104< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __lookbehind: &usize, + __lookahead: &usize, +) -> alloc::vec::Vec +{ + alloc::vec![] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action105< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, v, _): (usize, alloc::vec::Vec, usize), +) -> alloc::vec::Vec +{ + v +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action106< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, __0, _): (usize, FnArg, usize), + (_, _, _): (usize, Token<'input>, usize), +) -> FnArg +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action107< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, __0, _): (usize, Box, usize), +) -> core::option::Option> +{ + Some(__0) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action108< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __lookbehind: &usize, + __lookahead: &usize, +) -> core::option::Option> +{ + None +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action109< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __lookbehind: &usize, + __lookahead: &usize, +) -> alloc::vec::Vec> +{ + alloc::vec![] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action110< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, v, _): (usize, alloc::vec::Vec>, usize), +) -> alloc::vec::Vec> +{ + v +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action111< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, __0, _): (usize, Box, usize), + (_, _, _): (usize, Token<'input>, usize), +) -> Box +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action112< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, mut v, _): (usize, alloc::vec::Vec>, usize), + (_, e, _): (usize, core::option::Option>, usize), +) -> Vec> +{ + match e { + None => v, + Some(e) => { + v.push(e); + v + } + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action113< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, __0, _): (usize, (Ident, Block>), usize), +) -> alloc::vec::Vec<(Ident, Block>)> +{ + alloc::vec![__0] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action114< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, v, _): (usize, alloc::vec::Vec<(Ident, Block>)>, usize), + (_, e, _): (usize, (Ident, Block>), usize), +) -> alloc::vec::Vec<(Ident, Block>)> +{ + { let mut v = v; v.push(e); v } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action115< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, __0, _): (usize, Ident, usize), +) -> core::option::Option +{ + Some(__0) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action116< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __lookbehind: &usize, + __lookahead: &usize, +) -> core::option::Option +{ + None +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action117< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __lookbehind: &usize, + __lookahead: &usize, +) -> alloc::vec::Vec +{ + alloc::vec![] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action118< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, v, _): (usize, alloc::vec::Vec, usize), +) -> alloc::vec::Vec +{ + v +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action119< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, __0, _): (usize, Ident, usize), + (_, _, _): (usize, Token<'input>, usize), +) -> Ident +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action120< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, mut v, _): (usize, alloc::vec::Vec, usize), + (_, e, _): (usize, core::option::Option, usize), +) -> Vec +{ + match e { + None => v, + Some(e) => { + v.push(e); + v + } + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action121< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, __0, _): (usize, (Token<'input>, Ident), usize), +) -> alloc::vec::Vec<(Token<'input>, Ident)> +{ + alloc::vec![__0] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action122< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, v, _): (usize, alloc::vec::Vec<(Token<'input>, Ident)>, usize), + (_, e, _): (usize, (Token<'input>, Ident), usize), +) -> alloc::vec::Vec<(Token<'input>, Ident)> +{ + { let mut v = v; v.push(e); v } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action123< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, __0, _): (usize, Box, usize), +) -> alloc::vec::Vec> +{ + alloc::vec![__0] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action124< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, v, _): (usize, alloc::vec::Vec>, usize), + (_, e, _): (usize, Box, usize), +) -> alloc::vec::Vec> +{ + { let mut v = v; v.push(e); v } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action125< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, mut v, _): (usize, alloc::vec::Vec, usize), + (_, e, _): (usize, core::option::Option, usize), +) -> Vec +{ + match e { + None => v, + Some(e) => { + v.push(e); + v + } + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action126< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, mut v, _): (usize, alloc::vec::Vec>, usize), + (_, e, _): (usize, core::option::Option>, usize), +) -> Vec> +{ + match e { + None => v, + Some(e) => { + v.push(e); + v + } + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action127< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, __0, _): (usize, core::option::Option>, usize), +) -> core::option::Option> +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action128< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, __0, _): (usize, Token<'input>, usize), +) -> core::option::Option> +{ + Some(__0) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action129< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __lookbehind: &usize, + __lookahead: &usize, +) -> core::option::Option> +{ + None +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action130< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, __0, _): (usize, Token<'input>, usize), +) -> alloc::vec::Vec> +{ + alloc::vec![__0] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action131< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, v, _): (usize, alloc::vec::Vec>, usize), + (_, e, _): (usize, Token<'input>, usize), +) -> alloc::vec::Vec> +{ + { let mut v = v; v.push(e); v } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action132< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, __0, _): (usize, (alloc::vec::Vec>, Box), usize), +) -> alloc::vec::Vec<(alloc::vec::Vec>, Box)> +{ + alloc::vec![__0] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action133< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, v, _): (usize, alloc::vec::Vec<(alloc::vec::Vec>, Box)>, usize), + (_, e, _): (usize, (alloc::vec::Vec>, Box), usize), +) -> alloc::vec::Vec<(alloc::vec::Vec>, Box)> +{ + { let mut v = v; v.push(e); v } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action134< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, __0, _): (usize, Box, usize), +) -> core::option::Option> +{ + Some(__0) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action135< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __lookbehind: &usize, + __lookahead: &usize, +) -> core::option::Option> +{ + None +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action136< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __lookbehind: &usize, + __lookahead: &usize, +) -> alloc::vec::Vec> +{ + alloc::vec![] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action137< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, v, _): (usize, alloc::vec::Vec>, usize), +) -> alloc::vec::Vec> +{ + v +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action138< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, __0, _): (usize, Box, usize), + (_, _, _): (usize, Token<'input>, usize), +) -> Box +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action139< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, __0, _): (usize, Field, usize), +) -> core::option::Option +{ + Some(__0) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action140< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __lookbehind: &usize, + __lookahead: &usize, +) -> core::option::Option +{ + None +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action141< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __lookbehind: &usize, + __lookahead: &usize, +) -> alloc::vec::Vec +{ + alloc::vec![] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action142< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, v, _): (usize, alloc::vec::Vec, usize), +) -> alloc::vec::Vec +{ + v +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action143< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, __0, _): (usize, Field, usize), + (_, _, _): (usize, Token<'input>, usize), +) -> Field +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action144< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, __0, _): (usize, Prototype, usize), +) -> core::option::Option +{ + Some(__0) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action145< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __lookbehind: &usize, + __lookahead: &usize, +) -> core::option::Option +{ + None +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action146< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __lookbehind: &usize, + __lookahead: &usize, +) -> alloc::vec::Vec +{ + alloc::vec![] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action147< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, v, _): (usize, alloc::vec::Vec, usize), +) -> alloc::vec::Vec +{ + v +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action148< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, __0, _): (usize, Prototype, usize), + (_, _, _): (usize, Token<'input>, usize), +) -> Prototype +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action149< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, __0, _): (usize, Ident, usize), +) -> alloc::vec::Vec +{ + alloc::vec![__0] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action150< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, v, _): (usize, alloc::vec::Vec, usize), + (_, e, _): (usize, Ident, usize), +) -> alloc::vec::Vec +{ + { let mut v = v; v.push(e); v } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action151< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, __0, _): (usize, Box, usize), +) -> core::option::Option> +{ + Some(__0) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action152< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __lookbehind: &usize, + __lookahead: &usize, +) -> core::option::Option> +{ + None +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action153< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __lookbehind: &usize, + __lookahead: &usize, +) -> alloc::vec::Vec> +{ + alloc::vec![] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action154< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, v, _): (usize, alloc::vec::Vec>, usize), +) -> alloc::vec::Vec> +{ + v +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action155< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, __0, _): (usize, Box, usize), + (_, _, _): (usize, Token<'input>, usize), +) -> Box +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action156< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, __0, _): (usize, Box, usize), +) -> alloc::vec::Vec> +{ + alloc::vec![__0] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action157< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, v, _): (usize, alloc::vec::Vec>, usize), + (_, e, _): (usize, Box, usize), +) -> alloc::vec::Vec> +{ + { let mut v = v; v.push(e); v } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action158< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, __0, _): (usize, FnArg, usize), +) -> alloc::vec::Vec +{ + alloc::vec![__0] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action159< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, v, _): (usize, alloc::vec::Vec, usize), + (_, e, _): (usize, FnArg, usize), +) -> alloc::vec::Vec +{ + { let mut v = v; v.push(e); v } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action160< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, __0, _): (usize, Ident, usize), +) -> alloc::vec::Vec +{ + alloc::vec![__0] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action161< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, v, _): (usize, alloc::vec::Vec, usize), + (_, e, _): (usize, Ident, usize), +) -> alloc::vec::Vec +{ + { let mut v = v; v.push(e); v } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action162< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, __0, _): (usize, Box, usize), +) -> alloc::vec::Vec> +{ + alloc::vec![__0] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action163< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, v, _): (usize, alloc::vec::Vec>, usize), + (_, e, _): (usize, Box, usize), +) -> alloc::vec::Vec> +{ + { let mut v = v; v.push(e); v } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action164< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, __0, _): (usize, Prototype, usize), +) -> alloc::vec::Vec +{ + alloc::vec![__0] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action165< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, v, _): (usize, alloc::vec::Vec, usize), + (_, e, _): (usize, Prototype, usize), +) -> alloc::vec::Vec +{ + { let mut v = v; v.push(e); v } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action166< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, __0, _): (usize, Field, usize), +) -> alloc::vec::Vec +{ + alloc::vec![__0] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action167< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, v, _): (usize, alloc::vec::Vec, usize), + (_, e, _): (usize, Field, usize), +) -> alloc::vec::Vec +{ + { let mut v = v; v.push(e); v } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action168< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, __0, _): (usize, Box, usize), +) -> alloc::vec::Vec> +{ + alloc::vec![__0] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, clippy::just_underscores_and_digits)] +fn __action169< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + (_, v, _): (usize, alloc::vec::Vec>, usize), + (_, e, _): (usize, Box, usize), +) -> alloc::vec::Vec> +{ + { let mut v = v; v.push(e); v } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action170< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, Box, usize), +) -> (alloc::vec::Vec>, Box) +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action71( + errors, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action70( + errors, + __temp0, + __0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action171< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, alloc::vec::Vec>, usize), + __1: (usize, Box, usize), +) -> (alloc::vec::Vec>, Box) +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action72( + errors, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action70( + errors, + __temp0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action172< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, Token<'input>, usize), +) -> core::option::Option> +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action128( + errors, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action127( + errors, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action173< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __lookbehind: &usize, + __lookahead: &usize, +) -> core::option::Option> +{ + let __start0 = *__lookbehind; + let __end0 = *__lookahead; + let __temp0 = __action129( + errors, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action127( + errors, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action174< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, Token<'input>, usize), + __1: (usize, Ident, usize), +) -> core::option::Option<(Token<'input>, Ident)> +{ + let __start0 = __0.0; + let __end0 = __1.2; + let __temp0 = __action96( + errors, + __0, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action94( + errors, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action175< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, Ident, usize), + __1: (usize, Token<'input>, usize), + __2: (usize, Vec, usize), + __3: (usize, Token<'input>, usize), + __4: (usize, Token<'input>, usize), + __5: (usize, Vec, usize), + __6: (usize, Token<'input>, usize), + __7: (usize, Token<'input>, usize), + __8: (usize, Ident, usize), +) -> Prototype +{ + let __start0 = __7.0; + let __end0 = __8.2; + let __temp0 = __action174( + errors, + __7, + __8, + ); + let __temp0 = (__start0, __temp0, __end0); + __action36( + errors, + __0, + __1, + __2, + __3, + __4, + __5, + __6, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action176< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, Ident, usize), + __1: (usize, Token<'input>, usize), + __2: (usize, Vec, usize), + __3: (usize, Token<'input>, usize), + __4: (usize, Token<'input>, usize), + __5: (usize, Vec, usize), + __6: (usize, Token<'input>, usize), +) -> Prototype +{ + let __start0 = __6.2; + let __end0 = __6.2; + let __temp0 = __action95( + errors, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action36( + errors, + __0, + __1, + __2, + __3, + __4, + __5, + __6, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action177< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, Token<'input>, usize), + __1: (usize, Ident, usize), +) -> alloc::vec::Vec<(Token<'input>, Ident)> +{ + let __start0 = __0.0; + let __end0 = __1.2; + let __temp0 = __action83( + errors, + __0, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action121( + errors, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action178< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, alloc::vec::Vec<(Token<'input>, Ident)>, usize), + __1: (usize, Token<'input>, usize), + __2: (usize, Ident, usize), +) -> alloc::vec::Vec<(Token<'input>, Ident)> +{ + let __start0 = __1.0; + let __end0 = __2.2; + let __temp0 = __action83( + errors, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action122( + errors, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action179< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, Token<'input>, usize), + __1: (usize, alloc::vec::Vec>, usize), +) -> Box +{ + let __start0 = __0.2; + let __end0 = __1.0; + let __temp0 = __action81( + errors, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action51( + errors, + __0, + __temp0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action180< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, Token<'input>, usize), + __1: (usize, alloc::vec::Vec<(Token<'input>, Ident)>, usize), + __2: (usize, alloc::vec::Vec>, usize), +) -> Box +{ + let __start0 = __1.0; + let __end0 = __1.2; + let __temp0 = __action82( + errors, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action51( + errors, + __0, + __temp0, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action181< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, Token<'input>, usize), + __1: (usize, Ident, usize), + __2: (usize, Token<'input>, usize), +) -> core::option::Option +{ + let __start0 = __0.0; + let __end0 = __2.2; + let __temp0 = __action92( + errors, + __0, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action90( + errors, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action182< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, Ident, usize), + __1: (usize, Token<'input>, usize), + __2: (usize, Vec>, usize), + __3: (usize, Token<'input>, usize), + __4: (usize, Token<'input>, usize), + __5: (usize, Ident, usize), + __6: (usize, Token<'input>, usize), +) -> Box +{ + let __start0 = __4.0; + let __end0 = __6.2; + let __temp0 = __action181( + errors, + __4, + __5, + __6, + ); + let __temp0 = (__start0, __temp0, __end0); + __action38( + errors, + __0, + __1, + __2, + __3, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action183< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, Ident, usize), + __1: (usize, Token<'input>, usize), + __2: (usize, Vec>, usize), + __3: (usize, Token<'input>, usize), +) -> Box +{ + let __start0 = __3.2; + let __end0 = __3.2; + let __temp0 = __action91( + errors, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action38( + errors, + __0, + __1, + __2, + __3, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action184< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, Box, usize), +) -> alloc::vec::Vec<(alloc::vec::Vec>, Box)> +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action170( + errors, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action132( + errors, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action185< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, alloc::vec::Vec>, usize), + __1: (usize, Box, usize), +) -> alloc::vec::Vec<(alloc::vec::Vec>, Box)> +{ + let __start0 = __0.0; + let __end0 = __1.2; + let __temp0 = __action171( + errors, + __0, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action132( + errors, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action186< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, alloc::vec::Vec<(alloc::vec::Vec>, Box)>, usize), + __1: (usize, Box, usize), +) -> alloc::vec::Vec<(alloc::vec::Vec>, Box)> +{ + let __start0 = __1.0; + let __end0 = __1.2; + let __temp0 = __action170( + errors, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action133( + errors, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action187< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, alloc::vec::Vec<(alloc::vec::Vec>, Box)>, usize), + __1: (usize, alloc::vec::Vec>, usize), + __2: (usize, Box, usize), +) -> alloc::vec::Vec<(alloc::vec::Vec>, Box)> +{ + let __start0 = __1.0; + let __end0 = __2.2; + let __temp0 = __action171( + errors, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action133( + errors, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action188< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __lookbehind: &usize, + __lookahead: &usize, +) -> Module +{ + let __start0 = *__lookbehind; + let __end0 = *__lookahead; + let __temp0 = __action68( + errors, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action66( + errors, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action189< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, alloc::vec::Vec<(alloc::vec::Vec>, Box)>, usize), +) -> Module +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action69( + errors, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action66( + errors, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action190< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, Token<'input>, usize), + __1: (usize, Token<'input>, usize), + __2: (usize, Vec, usize), + __3: (usize, Token<'input>, usize), +) -> Block +{ + let __start0 = __1.0; + let __end0 = __1.2; + let __temp0 = __action172( + errors, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action77( + errors, + __0, + __temp0, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action191< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, Token<'input>, usize), + __1: (usize, Vec, usize), + __2: (usize, Token<'input>, usize), +) -> Block +{ + let __start0 = __0.2; + let __end0 = __1.0; + let __temp0 = __action173( + errors, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action77( + errors, + __0, + __temp0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action192< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, Token<'input>, usize), + __1: (usize, Token<'input>, usize), + __2: (usize, Vec>, usize), + __3: (usize, Token<'input>, usize), +) -> Block> +{ + let __start0 = __1.0; + let __end0 = __1.2; + let __temp0 = __action172( + errors, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action73( + errors, + __0, + __temp0, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action193< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, Token<'input>, usize), + __1: (usize, Vec>, usize), + __2: (usize, Token<'input>, usize), +) -> Block> +{ + let __start0 = __0.2; + let __end0 = __1.0; + let __temp0 = __action173( + errors, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action73( + errors, + __0, + __temp0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action194< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, Token<'input>, usize), + __1: (usize, Token<'input>, usize), + __2: (usize, Vec, usize), + __3: (usize, Token<'input>, usize), +) -> Block +{ + let __start0 = __1.0; + let __end0 = __1.2; + let __temp0 = __action172( + errors, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action84( + errors, + __0, + __temp0, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action195< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, Token<'input>, usize), + __1: (usize, Vec, usize), + __2: (usize, Token<'input>, usize), +) -> Block +{ + let __start0 = __0.2; + let __end0 = __1.0; + let __temp0 = __action173( + errors, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action84( + errors, + __0, + __temp0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action196< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, Token<'input>, usize), + __1: (usize, Token<'input>, usize), + __2: (usize, Vec>, usize), + __3: (usize, Token<'input>, usize), +) -> Block> +{ + let __start0 = __1.0; + let __end0 = __1.2; + let __temp0 = __action172( + errors, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action89( + errors, + __0, + __temp0, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action197< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, Token<'input>, usize), + __1: (usize, Vec>, usize), + __2: (usize, Token<'input>, usize), +) -> Block> +{ + let __start0 = __0.2; + let __end0 = __1.0; + let __temp0 = __action173( + errors, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action89( + errors, + __0, + __temp0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action198< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, Token<'input>, usize), + __1: (usize, Ident, usize), +) -> core::option::Option<(Token<'input>, Ident)> +{ + let __start0 = __0.0; + let __end0 = __1.2; + let __temp0 = __action76( + errors, + __0, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action74( + errors, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action199< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, Expression, usize), + __1: (usize, Ident, usize), + __2: (usize, Token<'input>, usize), + __3: (usize, Ident, usize), + __4: (usize, Block>, usize), +) -> Box +{ + let __start0 = __2.0; + let __end0 = __3.2; + let __temp0 = __action198( + errors, + __2, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action60( + errors, + __0, + __1, + __temp0, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action200< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, Expression, usize), + __1: (usize, Ident, usize), + __2: (usize, Block>, usize), +) -> Box +{ + let __start0 = __1.2; + let __end0 = __2.0; + let __temp0 = __action75( + errors, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action60( + errors, + __0, + __1, + __temp0, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action201< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, Box, usize), + __1: (usize, Token<'input>, usize), +) -> alloc::vec::Vec> +{ + let __start0 = __0.0; + let __end0 = __1.2; + let __temp0 = __action111( + errors, + __0, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action156( + errors, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action202< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, alloc::vec::Vec>, usize), + __1: (usize, Box, usize), + __2: (usize, Token<'input>, usize), +) -> alloc::vec::Vec> +{ + let __start0 = __1.0; + let __end0 = __2.2; + let __temp0 = __action111( + errors, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action157( + errors, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action203< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, core::option::Option>, usize), +) -> Vec> +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action109( + errors, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action93( + errors, + __temp0, + __0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action204< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, alloc::vec::Vec>, usize), + __1: (usize, core::option::Option>, usize), +) -> Vec> +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action110( + errors, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action93( + errors, + __temp0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action205< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, Field, usize), + __1: (usize, Token<'input>, usize), +) -> alloc::vec::Vec +{ + let __start0 = __0.0; + let __end0 = __1.2; + let __temp0 = __action143( + errors, + __0, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action166( + errors, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action206< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, alloc::vec::Vec, usize), + __1: (usize, Field, usize), + __2: (usize, Token<'input>, usize), +) -> alloc::vec::Vec +{ + let __start0 = __1.0; + let __end0 = __2.2; + let __temp0 = __action143( + errors, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action167( + errors, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action207< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, core::option::Option, usize), +) -> Vec +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action141( + errors, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action125( + errors, + __temp0, + __0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action208< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, alloc::vec::Vec, usize), + __1: (usize, core::option::Option, usize), +) -> Vec +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action142( + errors, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action125( + errors, + __temp0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action209< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, FnArg, usize), + __1: (usize, Token<'input>, usize), +) -> alloc::vec::Vec +{ + let __start0 = __0.0; + let __end0 = __1.2; + let __temp0 = __action106( + errors, + __0, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action158( + errors, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action210< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, alloc::vec::Vec, usize), + __1: (usize, FnArg, usize), + __2: (usize, Token<'input>, usize), +) -> alloc::vec::Vec +{ + let __start0 = __1.0; + let __end0 = __2.2; + let __temp0 = __action106( + errors, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action159( + errors, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action211< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, core::option::Option, usize), +) -> Vec +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action104( + errors, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action97( + errors, + __temp0, + __0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action212< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, alloc::vec::Vec, usize), + __1: (usize, core::option::Option, usize), +) -> Vec +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action105( + errors, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action97( + errors, + __temp0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action213< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, Box, usize), + __1: (usize, Token<'input>, usize), +) -> alloc::vec::Vec> +{ + let __start0 = __0.0; + let __end0 = __1.2; + let __temp0 = __action138( + errors, + __0, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action168( + errors, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action214< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, alloc::vec::Vec>, usize), + __1: (usize, Box, usize), + __2: (usize, Token<'input>, usize), +) -> alloc::vec::Vec> +{ + let __start0 = __1.0; + let __end0 = __2.2; + let __temp0 = __action138( + errors, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action169( + errors, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action215< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, core::option::Option>, usize), +) -> Vec> +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action136( + errors, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action126( + errors, + __temp0, + __0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action216< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, alloc::vec::Vec>, usize), + __1: (usize, core::option::Option>, usize), +) -> Vec> +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action137( + errors, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action126( + errors, + __temp0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action217< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, Ident, usize), + __1: (usize, Token<'input>, usize), +) -> alloc::vec::Vec +{ + let __start0 = __0.0; + let __end0 = __1.2; + let __temp0 = __action119( + errors, + __0, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action149( + errors, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action218< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, alloc::vec::Vec, usize), + __1: (usize, Ident, usize), + __2: (usize, Token<'input>, usize), +) -> alloc::vec::Vec +{ + let __start0 = __1.0; + let __end0 = __2.2; + let __temp0 = __action119( + errors, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action150( + errors, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action219< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, core::option::Option, usize), +) -> Vec +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action117( + errors, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action85( + errors, + __temp0, + __0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action220< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, alloc::vec::Vec, usize), + __1: (usize, core::option::Option, usize), +) -> Vec +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action118( + errors, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action85( + errors, + __temp0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action221< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, Ident, usize), + __1: (usize, Token<'input>, usize), +) -> alloc::vec::Vec +{ + let __start0 = __0.0; + let __end0 = __1.2; + let __temp0 = __action101( + errors, + __0, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action160( + errors, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action222< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, alloc::vec::Vec, usize), + __1: (usize, Ident, usize), + __2: (usize, Token<'input>, usize), +) -> alloc::vec::Vec +{ + let __start0 = __1.0; + let __end0 = __2.2; + let __temp0 = __action101( + errors, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action161( + errors, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action223< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, core::option::Option, usize), +) -> Vec +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action99( + errors, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action98( + errors, + __temp0, + __0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action224< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, alloc::vec::Vec, usize), + __1: (usize, core::option::Option, usize), +) -> Vec +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action100( + errors, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action98( + errors, + __temp0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action225< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, Prototype, usize), + __1: (usize, Token<'input>, usize), +) -> alloc::vec::Vec +{ + let __start0 = __0.0; + let __end0 = __1.2; + let __temp0 = __action148( + errors, + __0, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action164( + errors, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action226< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, alloc::vec::Vec, usize), + __1: (usize, Prototype, usize), + __2: (usize, Token<'input>, usize), +) -> alloc::vec::Vec +{ + let __start0 = __1.0; + let __end0 = __2.2; + let __temp0 = __action148( + errors, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action165( + errors, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action227< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, core::option::Option, usize), +) -> Vec +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action146( + errors, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action120( + errors, + __temp0, + __0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action228< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, alloc::vec::Vec, usize), + __1: (usize, core::option::Option, usize), +) -> Vec +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action147( + errors, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action120( + errors, + __temp0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action229< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, Box, usize), + __1: (usize, Token<'input>, usize), +) -> alloc::vec::Vec> +{ + let __start0 = __0.0; + let __end0 = __1.2; + let __temp0 = __action155( + errors, + __0, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action162( + errors, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action230< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, alloc::vec::Vec>, usize), + __1: (usize, Box, usize), + __2: (usize, Token<'input>, usize), +) -> alloc::vec::Vec> +{ + let __start0 = __1.0; + let __end0 = __2.2; + let __temp0 = __action155( + errors, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action163( + errors, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action231< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, core::option::Option>, usize), +) -> Vec> +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action153( + errors, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action112( + errors, + __temp0, + __0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action232< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, alloc::vec::Vec>, usize), + __1: (usize, core::option::Option>, usize), +) -> Vec> +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action154( + errors, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action112( + errors, + __temp0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action233< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, Box, usize), +) -> alloc::vec::Vec> +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action80( + errors, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action123( + errors, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action234< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, alloc::vec::Vec>, usize), + __1: (usize, Box, usize), +) -> alloc::vec::Vec> +{ + let __start0 = __1.0; + let __end0 = __1.2; + let __temp0 = __action80( + errors, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action124( + errors, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action235< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, Token<'input>, usize), +) -> Box +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action78( + errors, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action179( + errors, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action236< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, Token<'input>, usize), + __1: (usize, alloc::vec::Vec>, usize), +) -> Box +{ + let __start0 = __1.0; + let __end0 = __1.2; + let __temp0 = __action79( + errors, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action179( + errors, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action237< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, Token<'input>, usize), + __1: (usize, alloc::vec::Vec<(Token<'input>, Ident)>, usize), +) -> Box +{ + let __start0 = __1.2; + let __end0 = __1.2; + let __temp0 = __action78( + errors, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action180( + errors, + __0, + __1, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action238< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, Token<'input>, usize), + __1: (usize, alloc::vec::Vec<(Token<'input>, Ident)>, usize), + __2: (usize, alloc::vec::Vec>, usize), +) -> Box +{ + let __start0 = __2.0; + let __end0 = __2.2; + let __temp0 = __action79( + errors, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action180( + errors, + __0, + __1, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action239< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, (Ident, Block>), usize), +) -> alloc::vec::Vec<(Ident, Block>)> +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action88( + errors, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action113( + errors, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action240< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, alloc::vec::Vec<(Ident, Block>)>, usize), + __1: (usize, (Ident, Block>), usize), +) -> alloc::vec::Vec<(Ident, Block>)> +{ + let __start0 = __1.0; + let __end0 = __1.2; + let __temp0 = __action88( + errors, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action114( + errors, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action241< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, Expression, usize), + __1: (usize, Prototype, usize), + __2: (usize, Block>, usize), +) -> Box +{ + let __start0 = __2.2; + let __end0 = __2.2; + let __temp0 = __action86( + errors, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action47( + errors, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action242< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, Expression, usize), + __1: (usize, Prototype, usize), + __2: (usize, Block>, usize), + __3: (usize, alloc::vec::Vec<(Ident, Block>)>, usize), +) -> Box +{ + let __start0 = __3.0; + let __end0 = __3.2; + let __temp0 = __action87( + errors, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action47( + errors, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action243< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, Box, usize), +) -> Vec> +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action107( + errors, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action203( + errors, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action244< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __lookbehind: &usize, + __lookahead: &usize, +) -> Vec> +{ + let __start0 = *__lookbehind; + let __end0 = *__lookahead; + let __temp0 = __action108( + errors, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action203( + errors, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action245< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, alloc::vec::Vec>, usize), + __1: (usize, Box, usize), +) -> Vec> +{ + let __start0 = __1.0; + let __end0 = __1.2; + let __temp0 = __action107( + errors, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action204( + errors, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action246< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, alloc::vec::Vec>, usize), +) -> Vec> +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action108( + errors, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action204( + errors, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action247< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, Field, usize), +) -> Vec +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action139( + errors, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action207( + errors, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action248< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __lookbehind: &usize, + __lookahead: &usize, +) -> Vec +{ + let __start0 = *__lookbehind; + let __end0 = *__lookahead; + let __temp0 = __action140( + errors, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action207( + errors, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action249< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, alloc::vec::Vec, usize), + __1: (usize, Field, usize), +) -> Vec +{ + let __start0 = __1.0; + let __end0 = __1.2; + let __temp0 = __action139( + errors, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action208( + errors, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action250< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, alloc::vec::Vec, usize), +) -> Vec +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action140( + errors, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action208( + errors, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action251< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, FnArg, usize), +) -> Vec +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action102( + errors, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action211( + errors, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action252< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __lookbehind: &usize, + __lookahead: &usize, +) -> Vec +{ + let __start0 = *__lookbehind; + let __end0 = *__lookahead; + let __temp0 = __action103( + errors, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action211( + errors, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action253< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, alloc::vec::Vec, usize), + __1: (usize, FnArg, usize), +) -> Vec +{ + let __start0 = __1.0; + let __end0 = __1.2; + let __temp0 = __action102( + errors, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action212( + errors, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action254< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, alloc::vec::Vec, usize), +) -> Vec +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action103( + errors, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action212( + errors, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action255< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, Box, usize), +) -> Vec> +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action134( + errors, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action215( + errors, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action256< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __lookbehind: &usize, + __lookahead: &usize, +) -> Vec> +{ + let __start0 = *__lookbehind; + let __end0 = *__lookahead; + let __temp0 = __action135( + errors, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action215( + errors, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action257< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, alloc::vec::Vec>, usize), + __1: (usize, Box, usize), +) -> Vec> +{ + let __start0 = __1.0; + let __end0 = __1.2; + let __temp0 = __action134( + errors, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action216( + errors, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action258< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, alloc::vec::Vec>, usize), +) -> Vec> +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action135( + errors, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action216( + errors, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action259< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, Ident, usize), +) -> Vec +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action115( + errors, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action223( + errors, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action260< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __lookbehind: &usize, + __lookahead: &usize, +) -> Vec +{ + let __start0 = *__lookbehind; + let __end0 = *__lookahead; + let __temp0 = __action116( + errors, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action223( + errors, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action261< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, alloc::vec::Vec, usize), + __1: (usize, Ident, usize), +) -> Vec +{ + let __start0 = __1.0; + let __end0 = __1.2; + let __temp0 = __action115( + errors, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action224( + errors, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action262< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, alloc::vec::Vec, usize), +) -> Vec +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action116( + errors, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action224( + errors, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action263< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, Ident, usize), +) -> Vec +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action115( + errors, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action219( + errors, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action264< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __lookbehind: &usize, + __lookahead: &usize, +) -> Vec +{ + let __start0 = *__lookbehind; + let __end0 = *__lookahead; + let __temp0 = __action116( + errors, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action219( + errors, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action265< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, alloc::vec::Vec, usize), + __1: (usize, Ident, usize), +) -> Vec +{ + let __start0 = __1.0; + let __end0 = __1.2; + let __temp0 = __action115( + errors, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action220( + errors, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action266< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, alloc::vec::Vec, usize), +) -> Vec +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action116( + errors, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action220( + errors, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action267< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, Prototype, usize), +) -> Vec +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action144( + errors, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action227( + errors, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action268< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __lookbehind: &usize, + __lookahead: &usize, +) -> Vec +{ + let __start0 = *__lookbehind; + let __end0 = *__lookahead; + let __temp0 = __action145( + errors, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action227( + errors, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action269< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, alloc::vec::Vec, usize), + __1: (usize, Prototype, usize), +) -> Vec +{ + let __start0 = __1.0; + let __end0 = __1.2; + let __temp0 = __action144( + errors, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action228( + errors, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action270< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, alloc::vec::Vec, usize), +) -> Vec +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action145( + errors, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action228( + errors, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action271< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, Box, usize), +) -> Vec> +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action151( + errors, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action231( + errors, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action272< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __lookbehind: &usize, + __lookahead: &usize, +) -> Vec> +{ + let __start0 = *__lookbehind; + let __end0 = *__lookahead; + let __temp0 = __action152( + errors, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action231( + errors, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action273< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, alloc::vec::Vec>, usize), + __1: (usize, Box, usize), +) -> Vec> +{ + let __start0 = __1.0; + let __end0 = __1.2; + let __temp0 = __action151( + errors, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action232( + errors, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments, clippy::needless_lifetimes, + clippy::just_underscores_and_digits)] +fn __action274< + 'input, + 'err, +>( + errors: &'err mut Vec, &'static str>>, + __0: (usize, alloc::vec::Vec>, usize), +) -> Vec> +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action152( + errors, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action232( + errors, + __0, + __temp0, + ) +} +#[allow(clippy::type_complexity, dead_code)] + +pub trait __ToTriple<'input, 'err, > +{ + fn to_triple(value: Self) -> Result<(usize,Token<'input>,usize), __lalrpop_util::ParseError, &'static str>>; +} + +impl<'input, 'err, > __ToTriple<'input, 'err, > for (usize, Token<'input>, usize) +{ + fn to_triple(value: Self) -> Result<(usize,Token<'input>,usize), __lalrpop_util::ParseError, &'static str>> { + Ok(value) + } +} +impl<'input, 'err, > __ToTriple<'input, 'err, > for Result<(usize, Token<'input>, usize), &'static str> +{ + fn to_triple(value: Self) -> Result<(usize,Token<'input>,usize), __lalrpop_util::ParseError, &'static str>> { + match value { + Ok(v) => Ok(v), + Err(error) => Err(__lalrpop_util::ParseError::User { error }), + } + } +} diff --git a/src/parser/string.rs b/src/parser/string.rs new file mode 100644 index 0000000..593e8f9 --- /dev/null +++ b/src/parser/string.rs @@ -0,0 +1,46 @@ +use std::str::Chars; +use stringzilla::{sz, StringZilla}; +use syn::spanned::Spanned as _; + +use crate::lexer::{self, Spanned}; + +#[derive(Debug, PartialEq)] +pub enum ParseError { + UnexpectedChar(char), + UnterminatedString, +} + +impl std::fmt::Display for ParseError { + fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { + match self { + ParseError::UnexpectedChar(c) => write!(f, "unexpected character: '{}'", c), + ParseError::UnterminatedString => write!(f, "unterminated string"), + } + } +} + +impl std::error::Error for ParseError {} + +pub fn apply_string_escapes(content: &str) -> std::borrow::Cow { + let s = syn::LitStr::new(content, content.span()); + s.token().to_string().into() +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_apply_string_escapes() { + assert_eq!(apply_string_escapes(r#"hello"#), "\"hello\""); + } + #[test] + fn test_apply_string_escapes_with_escaped_quote() { + assert_eq!(apply_string_escapes(r#"hello" world"#), r#""hello\" world""#); + } + + #[test] + fn test_apply_string_escapes_with_escaped_backslash() { + assert_eq!(apply_string_escapes(r#"hello\" world"#), r#""hello\\\" world""#); + } +}