diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 18d6fdb400..a2942f9733 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -122,9 +122,9 @@ At time of writing, the repository includes the following crates: intermediate representation. The backend for `ruff_python_formatter`. - `crates/ruff_index`: library crate inspired by `rustc_index`. - `crates/ruff_macros`: proc macro crate containing macros used by Ruff. -- `crates/ruff_python_ast`: library crate containing Python-specific AST types and utilities. Note - that the AST schema itself is defined in the - [rustpython-ast](https://github.com/astral-sh/RustPython-Parser) crate. +- `crates/ruff_python_ast`: library crate containing Python-specific AST types and utilities. +- `crates/ruff_python_codegen`: library crate containing utilities for generating Python source code. +- `crates/ruff_python_codegen`: library crate containing utilities for generating Python source code. - `crates/ruff_python_formatter`: library crate implementing the Python formatter. Emits an intermediate representation for each node, which `ruff_formatter` prints based on the configured line length. @@ -135,8 +135,7 @@ At time of writing, the repository includes the following crates: the names of all built-in exceptions and which standard library types are immutable. - `crates/ruff_python_trivia`: library crate containing Python-specific trivia utilities (e.g., for analyzing indentation, newlines, etc.). -- `crates/ruff_rustpython`: library crate containing `RustPython`-specific utilities. -- `crates/ruff_textwrap`: library crate to indent and dedent Python source code. +- `crates/ruff_python_parser`: library crate containing the Python parser. - `crates/ruff_wasm`: library crate for exposing Ruff as a WebAssembly module. Powers the [Ruff Playground](https://play.ruff.rs/). diff --git a/Cargo.lock b/Cargo.lock index 08cdd31917..fb8fd38f09 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -133,6 +133,15 @@ dependencies = [ "os_str_bytes", ] +[[package]] +name = "ascii-canvas" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8824ecca2e851cec16968d54a01dd372ef8f95b244fb84b84e70128be347c3c6" +dependencies = [ + "term", +] + [[package]] name = "assert_cmd" version = "2.0.11" @@ -169,6 +178,21 @@ dependencies = [ "serde", ] +[[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" @@ -609,6 +633,16 @@ dependencies = [ "dirs-sys 0.4.1", ] +[[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" version = "0.3.7" @@ -632,6 +666,17 @@ dependencies = [ "windows-sys 0.48.0", ] +[[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 = "doc-comment" version = "0.3.3" @@ -656,6 +701,15 @@ version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" +[[package]] +name = "ena" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c533630cf40e9caa44bd91aadc88a75d75a4c3a12b4cfde353cbed41daa1e1f1" +dependencies = [ + "log", +] + [[package]] name = "encode_unicode" version = "0.3.6" @@ -732,6 +786,12 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "fixedbitset" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" + [[package]] name = "flake8-to-ruff" version = "0.0.280" @@ -1099,6 +1159,28 @@ dependencies = [ "libc", ] +[[package]] +name = "lalrpop" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da4081d44f4611b66c6dd725e6de3169f9f63905421e8626fcb86b6a898998b8" +dependencies = [ + "ascii-canvas", + "bit-set", + "diff", + "ena", + "is-terminal", + "itertools", + "lalrpop-util", + "petgraph", + "regex", + "regex-syntax 0.7.3", + "string_cache", + "term", + "tiny-keccak", + "unicode-xid", +] + [[package]] name = "lalrpop-util" version = "0.20.0" @@ -1199,6 +1281,16 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09fc20d2ca12cb9f044c93e3bd6d32d523e6e2ec3db4f7b2939cd99026ecd3f0" +[[package]] +name = "lock_api" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" +dependencies = [ + "autocfg", + "scopeguard", +] + [[package]] name = "log" version = "0.4.19" @@ -1277,6 +1369,12 @@ version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "308d96db8debc727c3fd9744aac51751243420e46edf401010908da7f8d5e57c" +[[package]] +name = "new_debug_unreachable" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54" + [[package]] name = "nextest-workspace-hack" version = "0.1.0" @@ -1421,6 +1519,29 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" +[[package]] +name = "parking_lot" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall 0.3.5", + "smallvec", + "windows-targets 0.48.1", +] + [[package]] name = "paste" version = "1.0.13" @@ -1512,13 +1633,23 @@ version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" +[[package]] +name = "petgraph" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4dd7d28ee937e54fe3080c91faa1c3a46c06de6252988a7f4592ba2310ef22a4" +dependencies = [ + "fixedbitset", + "indexmap 1.9.3", +] + [[package]] name = "phf" version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc" dependencies = [ - "phf_shared", + "phf_shared 0.11.2", ] [[package]] @@ -1528,7 +1659,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e8d39688d359e6b34654d328e262234662d16cc0f60ec8dcbe5e718709342a5a" dependencies = [ "phf_generator", - "phf_shared", + "phf_shared 0.11.2", ] [[package]] @@ -1537,10 +1668,19 @@ version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0" dependencies = [ - "phf_shared", + "phf_shared 0.11.2", "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 = "phf_shared" version = "0.11.2" @@ -1601,6 +1741,18 @@ version = "1.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "767eb9f07d4a5ebcb39bbf2d452058a93c011373abf6832e24194a1c3f004794" +[[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 = "predicates" version = "3.0.3" @@ -1725,6 +1877,18 @@ 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", ] @@ -1733,6 +1897,9 @@ name = "rand_core" version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] [[package]] name = "rayon" @@ -1907,6 +2074,7 @@ dependencies = [ "ruff_python_ast", "ruff_python_codegen", "ruff_python_index", + "ruff_python_literal", "ruff_python_parser", "ruff_python_semantic", "ruff_python_stdlib", @@ -1914,9 +2082,6 @@ dependencies = [ "ruff_source_file", "ruff_text_size", "rustc-hash", - "rustpython-ast", - "rustpython-format", - "rustpython-parser", "schemars", "semver", "serde", @@ -1947,8 +2112,7 @@ dependencies = [ "ruff", "ruff_python_ast", "ruff_python_formatter", - "rustpython-ast", - "rustpython-parser", + "ruff_python_parser", "serde", "serde_json", "tikv-jemallocator", @@ -2039,13 +2203,13 @@ dependencies = [ "ruff_cli", "ruff_diagnostics", "ruff_formatter", + "ruff_python_ast", "ruff_python_codegen", "ruff_python_formatter", + "ruff_python_literal", + "ruff_python_parser", "ruff_python_stdlib", "ruff_python_trivia", - "rustpython-ast", - "rustpython-format", - "rustpython-parser", "schemars", "serde", "serde_json", @@ -2111,12 +2275,11 @@ dependencies = [ "num-bigint", "num-traits", "once_cell", + "ruff_python_parser", "ruff_python_trivia", "ruff_source_file", "ruff_text_size", "rustc-hash", - "rustpython-ast", - "rustpython-parser", "serde", "smallvec", ] @@ -2127,10 +2290,9 @@ version = "0.0.0" dependencies = [ "once_cell", "ruff_python_ast", + "ruff_python_literal", + "ruff_python_parser", "ruff_source_file", - "rustpython-ast", - "rustpython-literal", - "rustpython-parser", ] [[package]] @@ -2148,12 +2310,11 @@ dependencies = [ "ruff_formatter", "ruff_python_ast", "ruff_python_index", + "ruff_python_parser", "ruff_python_trivia", "ruff_source_file", "ruff_text_size", "rustc-hash", - "rustpython-ast", - "rustpython-parser", "serde", "serde_json", "similar", @@ -2166,11 +2327,26 @@ name = "ruff_python_index" version = "0.0.0" dependencies = [ "itertools", + "ruff_python_ast", + "ruff_python_parser", "ruff_python_trivia", "ruff_source_file", "ruff_text_size", - "rustpython-ast", - "rustpython-parser", +] + +[[package]] +name = "ruff_python_literal" +version = "0.0.0" +dependencies = [ + "bitflags 2.3.3", + "hexf-parse", + "is-macro", + "itertools", + "lexical-parse-float", + "num-bigint", + "num-traits", + "rand", + "unic-ucd-category", ] [[package]] @@ -2178,11 +2354,21 @@ name = "ruff_python_parser" version = "0.0.0" dependencies = [ "anyhow", + "insta", "is-macro", + "itertools", + "lalrpop", + "lalrpop-util", + "num-bigint", + "num-traits", "ruff_python_ast", "ruff_text_size", - "rustpython-ast", - "rustpython-parser", + "rustc-hash", + "static_assertions", + "tiny-keccak", + "unic-emoji-char", + "unic-ucd-ident", + "unicode_names2", ] [[package]] @@ -2208,8 +2394,6 @@ dependencies = [ "ruff_source_file", "ruff_text_size", "rustc-hash", - "rustpython-ast", - "rustpython-parser", "smallvec", ] @@ -2223,10 +2407,10 @@ version = "0.0.0" dependencies = [ "insta", "memchr", + "ruff_python_ast", + "ruff_python_parser", "ruff_source_file", "ruff_text_size", - "rustpython-ast", - "rustpython-parser", "smallvec", "unic-ucd-ident", ] @@ -2241,7 +2425,7 @@ dependencies = [ "regex", "ruff_python_ast", "ruff_python_parser", - "rustpython-ast", + "ruff_text_size", "shlex", "tracing", "tracing-subscriber", @@ -2261,10 +2445,11 @@ dependencies = [ [[package]] name = "ruff_text_size" version = "0.0.0" -source = "git+https://github.com/astral-sh/RustPython-Parser.git?rev=593b46be5e0336fe01917f8ef400bd12d81df8c1#593b46be5e0336fe01917f8ef400bd12d81df8c1" dependencies = [ "schemars", "serde", + "serde_test", + "static_assertions", ] [[package]] @@ -2283,7 +2468,6 @@ dependencies = [ "ruff_python_index", "ruff_python_parser", "ruff_source_file", - "rustpython-parser", "serde", "serde-wasm-bindgen", "wasm-bindgen", @@ -2355,71 +2539,6 @@ dependencies = [ "untrusted", ] -[[package]] -name = "rustpython-ast" -version = "0.2.0" -source = "git+https://github.com/astral-sh/RustPython-Parser.git?rev=593b46be5e0336fe01917f8ef400bd12d81df8c1#593b46be5e0336fe01917f8ef400bd12d81df8c1" -dependencies = [ - "is-macro", - "num-bigint", - "rustpython-parser-core", - "static_assertions", -] - -[[package]] -name = "rustpython-format" -version = "0.2.0" -source = "git+https://github.com/astral-sh/RustPython-Parser.git?rev=593b46be5e0336fe01917f8ef400bd12d81df8c1#593b46be5e0336fe01917f8ef400bd12d81df8c1" -dependencies = [ - "bitflags 2.3.3", - "itertools", - "num-bigint", - "num-traits", - "rustpython-literal", -] - -[[package]] -name = "rustpython-literal" -version = "0.2.0" -source = "git+https://github.com/astral-sh/RustPython-Parser.git?rev=593b46be5e0336fe01917f8ef400bd12d81df8c1#593b46be5e0336fe01917f8ef400bd12d81df8c1" -dependencies = [ - "hexf-parse", - "is-macro", - "lexical-parse-float", - "num-traits", - "unic-ucd-category", -] - -[[package]] -name = "rustpython-parser" -version = "0.2.0" -source = "git+https://github.com/astral-sh/RustPython-Parser.git?rev=593b46be5e0336fe01917f8ef400bd12d81df8c1#593b46be5e0336fe01917f8ef400bd12d81df8c1" -dependencies = [ - "anyhow", - "is-macro", - "itertools", - "lalrpop-util", - "num-bigint", - "num-traits", - "rustc-hash", - "rustpython-ast", - "rustpython-parser-core", - "static_assertions", - "tiny-keccak", - "unic-emoji-char", - "unic-ucd-ident", - "unicode_names2", -] - -[[package]] -name = "rustpython-parser-core" -version = "0.2.0" -source = "git+https://github.com/astral-sh/RustPython-Parser.git?rev=593b46be5e0336fe01917f8ef400bd12d81df8c1#593b46be5e0336fe01917f8ef400bd12d81df8c1" -dependencies = [ - "is-macro", - "ruff_text_size", -] - [[package]] name = "rustversion" version = "1.0.13" @@ -2555,6 +2674,15 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_test" +version = "1.0.176" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a2f49ace1498612d14f7e0b8245519584db8299541dfe31a06374a828d620ab" +dependencies = [ + "serde", +] + [[package]] name = "serde_with" version = "3.0.0" @@ -2637,6 +2765,19 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" +[[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 0.10.0", + "precomputed-hash", +] + [[package]] name = "strsim" version = "0.10.0" @@ -2710,6 +2851,17 @@ dependencies = [ "windows-sys 0.48.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.2.0" @@ -3089,6 +3241,12 @@ version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" +[[package]] +name = "unicode-xid" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" + [[package]] name = "unicode_names2" version = "0.6.0" diff --git a/Cargo.toml b/Cargo.toml index 807e2394c6..119dbed498 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -51,12 +51,6 @@ wsl = { version = "0.1.0" } # v1.0.1 libcst = { git = "https://github.com/Instagram/LibCST.git", rev = "3cacca1a1029f05707e50703b49fe3dd860aa839", default-features = false } -ruff_text_size = { git = "https://github.com/astral-sh/RustPython-Parser.git", rev = "593b46be5e0336fe01917f8ef400bd12d81df8c1" } -rustpython-ast = { git = "https://github.com/astral-sh/RustPython-Parser.git", rev = "593b46be5e0336fe01917f8ef400bd12d81df8c1" } -rustpython-format = { git = "https://github.com/astral-sh/RustPython-Parser.git", rev = "593b46be5e0336fe01917f8ef400bd12d81df8c1" } -rustpython-literal = { git = "https://github.com/astral-sh/RustPython-Parser.git", rev = "593b46be5e0336fe01917f8ef400bd12d81df8c1" } -rustpython-parser = { git = "https://github.com/astral-sh/RustPython-Parser.git", rev = "593b46be5e0336fe01917f8ef400bd12d81df8c1" } - [profile.release] lto = "fat" codegen-units = 1 @@ -69,7 +63,7 @@ opt-level = 3 # Reduce complexity of a parser function that would trigger a locals limit in a wasm tool. # https://github.com/bytecodealliance/wasm-tools/blob/b5c3d98e40590512a3b12470ef358d5c7b983b15/crates/wasmparser/src/limits.rs#L29 -[profile.dev.package.rustpython-parser] +[profile.dev.package.ruff_python_parser] opt-level = 1 # Use the `--profile release-debug` flag to show symbols in release mode. diff --git a/crates/ruff/Cargo.toml b/crates/ruff/Cargo.toml index 4102ab4732..82642ca28e 100644 --- a/crates/ruff/Cargo.toml +++ b/crates/ruff/Cargo.toml @@ -22,12 +22,13 @@ ruff_macros = { path = "../ruff_macros" } ruff_python_ast = { path = "../ruff_python_ast", features = ["serde"] } ruff_python_codegen = { path = "../ruff_python_codegen" } ruff_python_index = { path = "../ruff_python_index" } +ruff_python_literal = { path = "../ruff_python_literal" } ruff_python_semantic = { path = "../ruff_python_semantic" } ruff_python_stdlib = { path = "../ruff_python_stdlib" } ruff_python_trivia = { path = "../ruff_python_trivia" } ruff_python_parser = { path = "../ruff_python_parser" } ruff_source_file = { path = "../ruff_source_file", features = ["serde"] } -ruff_text_size = { workspace = true } +ruff_text_size = { path = "../ruff_text_size" } annotate-snippets = { version = "0.9.1", features = ["color"] } anyhow = { workspace = true } @@ -61,9 +62,8 @@ quick-junit = { version = "0.3.2" } regex = { workspace = true } result-like = { version = "0.4.6" } rustc-hash = { workspace = true } -rustpython-format = { workspace = true } -rustpython-parser = { workspace = true } -rustpython-ast = { workspace = true } + + schemars = { workspace = true, optional = true } semver = { version = "1.0.16" } serde = { workspace = true } diff --git a/crates/ruff/src/autofix/codemods.rs b/crates/ruff/src/autofix/codemods.rs index 19d962293e..18f7723b3c 100644 --- a/crates/ruff/src/autofix/codemods.rs +++ b/crates/ruff/src/autofix/codemods.rs @@ -4,7 +4,7 @@ use anyhow::{bail, Result}; use libcst_native::{ Codegen, CodegenState, ImportNames, ParenthesizableWhitespace, SmallStatement, Statement, }; -use rustpython_ast::{Ranged, Stmt}; +use ruff_python_ast::{Ranged, Stmt}; use ruff_python_codegen::Stylist; use ruff_source_file::Locator; diff --git a/crates/ruff/src/autofix/edits.rs b/crates/ruff/src/autofix/edits.rs index 4f98234614..c2c02bdf30 100644 --- a/crates/ruff/src/autofix/edits.rs +++ b/crates/ruff/src/autofix/edits.rs @@ -1,8 +1,8 @@ //! Interface for generating autofix edits from higher-level actions (e.g., "remove an argument"). use anyhow::{bail, Result}; +use ruff_python_ast::{self as ast, ExceptHandler, Expr, Keyword, Ranged, Stmt}; +use ruff_python_parser::{lexer, Mode}; use ruff_text_size::{TextLen, TextRange, TextSize}; -use rustpython_ast::{self as ast, ExceptHandler, Expr, Keyword, Ranged, Stmt}; -use rustpython_parser::{lexer, Mode}; use ruff_diagnostics::Edit; use ruff_python_codegen::Stylist; @@ -294,9 +294,9 @@ fn next_stmt_break(semicolon: TextSize, locator: &Locator) -> TextSize { #[cfg(test)] mod tests { use anyhow::Result; + use ruff_python_ast::{Ranged, Suite}; + use ruff_python_parser::Parse; use ruff_text_size::TextSize; - use rustpython_ast::{Ranged, Suite}; - use rustpython_parser::Parse; use ruff_source_file::Locator; diff --git a/crates/ruff/src/checkers/ast/analyze/argument.rs b/crates/ruff/src/checkers/ast/analyze/argument.rs index cf2c2628be..7b7da0daaf 100644 --- a/crates/ruff/src/checkers/ast/analyze/argument.rs +++ b/crates/ruff/src/checkers/ast/analyze/argument.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Arg, Ranged}; +use ruff_python_ast::{Arg, Ranged}; use crate::checkers::ast::Checker; use crate::codes::Rule; diff --git a/crates/ruff/src/checkers/ast/analyze/arguments.rs b/crates/ruff/src/checkers/ast/analyze/arguments.rs index 84b88069f6..36bf02a7b8 100644 --- a/crates/ruff/src/checkers/ast/analyze/arguments.rs +++ b/crates/ruff/src/checkers/ast/analyze/arguments.rs @@ -1,4 +1,4 @@ -use rustpython_ast::Arguments; +use ruff_python_ast::Arguments; use crate::checkers::ast::Checker; use crate::codes::Rule; diff --git a/crates/ruff/src/checkers/ast/analyze/comprehension.rs b/crates/ruff/src/checkers/ast/analyze/comprehension.rs index 92ec113bbd..8cd73dca0e 100644 --- a/crates/ruff/src/checkers/ast/analyze/comprehension.rs +++ b/crates/ruff/src/checkers/ast/analyze/comprehension.rs @@ -1,4 +1,4 @@ -use rustpython_ast::Comprehension; +use ruff_python_ast::Comprehension; use crate::checkers::ast::Checker; use crate::codes::Rule; diff --git a/crates/ruff/src/checkers/ast/analyze/deferred_for_loops.rs b/crates/ruff/src/checkers/ast/analyze/deferred_for_loops.rs index 3453db08ec..ebacfc4778 100644 --- a/crates/ruff/src/checkers/ast/analyze/deferred_for_loops.rs +++ b/crates/ruff/src/checkers/ast/analyze/deferred_for_loops.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Stmt}; +use ruff_python_ast::{self as ast, Stmt}; use crate::checkers::ast::Checker; use crate::codes::Rule; diff --git a/crates/ruff/src/checkers/ast/analyze/definitions.rs b/crates/ruff/src/checkers/ast/analyze/definitions.rs index 809ec2c325..d46e261413 100644 --- a/crates/ruff/src/checkers/ast/analyze/definitions.rs +++ b/crates/ruff/src/checkers/ast/analyze/definitions.rs @@ -1,6 +1,6 @@ use ruff_python_ast::str::raw_contents_range; +use ruff_python_ast::Ranged; use ruff_text_size::TextRange; -use rustpython_ast::Ranged; use ruff_python_semantic::{BindingKind, ContextualizedDefinition, Export}; diff --git a/crates/ruff/src/checkers/ast/analyze/except_handler.rs b/crates/ruff/src/checkers/ast/analyze/except_handler.rs index c2bdaf4845..428198e231 100644 --- a/crates/ruff/src/checkers/ast/analyze/except_handler.rs +++ b/crates/ruff/src/checkers/ast/analyze/except_handler.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, ExceptHandler, Ranged}; +use ruff_python_ast::{self as ast, ExceptHandler, Ranged}; use crate::checkers::ast::Checker; use crate::registry::Rule; diff --git a/crates/ruff/src/checkers/ast/analyze/expression.rs b/crates/ruff/src/checkers/ast/analyze/expression.rs index 0e5d3af6c8..fb4501fe45 100644 --- a/crates/ruff/src/checkers/ast/analyze/expression.rs +++ b/crates/ruff/src/checkers/ast/analyze/expression.rs @@ -1,5 +1,5 @@ -use rustpython_ast::{self as ast, Constant, Expr, ExprContext, Operator, Ranged}; -use rustpython_format::cformat::{CFormatError, CFormatErrorType}; +use ruff_python_ast::{self as ast, Constant, Expr, ExprContext, Operator, Ranged}; +use ruff_python_literal::cformat::{CFormatError, CFormatErrorType}; use ruff_diagnostics::Diagnostic; diff --git a/crates/ruff/src/checkers/ast/analyze/module.rs b/crates/ruff/src/checkers/ast/analyze/module.rs index 9c19ddc21a..139d6c5294 100644 --- a/crates/ruff/src/checkers/ast/analyze/module.rs +++ b/crates/ruff/src/checkers/ast/analyze/module.rs @@ -1,4 +1,4 @@ -use rustpython_ast::Suite; +use ruff_python_ast::Suite; use crate::checkers::ast::Checker; use crate::codes::Rule; diff --git a/crates/ruff/src/checkers/ast/analyze/statement.rs b/crates/ruff/src/checkers/ast/analyze/statement.rs index 762201e4d7..0f169d6969 100644 --- a/crates/ruff/src/checkers/ast/analyze/statement.rs +++ b/crates/ruff/src/checkers/ast/analyze/statement.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Expr, Ranged, Stmt}; +use ruff_python_ast::{self as ast, Expr, Ranged, Stmt}; use ruff_diagnostics::Diagnostic; use ruff_python_ast::helpers; diff --git a/crates/ruff/src/checkers/ast/analyze/suite.rs b/crates/ruff/src/checkers/ast/analyze/suite.rs index 4266abd529..002635eac9 100644 --- a/crates/ruff/src/checkers/ast/analyze/suite.rs +++ b/crates/ruff/src/checkers/ast/analyze/suite.rs @@ -1,4 +1,4 @@ -use rustpython_ast::Stmt; +use ruff_python_ast::Stmt; use crate::checkers::ast::Checker; use crate::codes::Rule; diff --git a/crates/ruff/src/checkers/ast/deferred.rs b/crates/ruff/src/checkers/ast/deferred.rs index 1d9e6f6490..b44480b00d 100644 --- a/crates/ruff/src/checkers/ast/deferred.rs +++ b/crates/ruff/src/checkers/ast/deferred.rs @@ -1,5 +1,5 @@ +use ruff_python_ast::Expr; use ruff_text_size::TextRange; -use rustpython_ast::Expr; use ruff_python_semantic::{ScopeId, Snapshot}; diff --git a/crates/ruff/src/checkers/ast/mod.rs b/crates/ruff/src/checkers/ast/mod.rs index 06b0b3d47c..0deea82933 100644 --- a/crates/ruff/src/checkers/ast/mod.rs +++ b/crates/ruff/src/checkers/ast/mod.rs @@ -30,11 +30,11 @@ use std::path::Path; use itertools::Itertools; use log::error; -use ruff_text_size::{TextRange, TextSize}; -use rustpython_ast::{ +use ruff_python_ast::{ self as ast, Arg, ArgWithDefault, Arguments, Comprehension, Constant, ElifElseClause, ExceptHandler, Expr, ExprContext, Keyword, Pattern, Ranged, Stmt, Suite, UnaryOp, }; +use ruff_text_size::{TextRange, TextSize}; use ruff_diagnostics::{Diagnostic, IsolationLevel}; use ruff_python_ast::all::{extract_all_names, DunderAllFlags}; diff --git a/crates/ruff/src/checkers/imports.rs b/crates/ruff/src/checkers/imports.rs index 6d71be0ac8..7eb17a2eca 100644 --- a/crates/ruff/src/checkers/imports.rs +++ b/crates/ruff/src/checkers/imports.rs @@ -2,7 +2,7 @@ use std::borrow::Cow; use std::path::Path; -use rustpython_ast::{self as ast, Ranged, Stmt, Suite}; +use ruff_python_ast::{self as ast, Ranged, Stmt, Suite}; use ruff_diagnostics::Diagnostic; use ruff_python_ast::helpers::to_module_path; diff --git a/crates/ruff/src/checkers/logical_lines.rs b/crates/ruff/src/checkers/logical_lines.rs index 5f1f563fb1..a27b52c3ce 100644 --- a/crates/ruff/src/checkers/logical_lines.rs +++ b/crates/ruff/src/checkers/logical_lines.rs @@ -1,9 +1,9 @@ +use ruff_python_parser::lexer::LexResult; use ruff_text_size::TextRange; -use rustpython_parser::lexer::LexResult; use ruff_diagnostics::{Diagnostic, DiagnosticKind}; use ruff_python_codegen::Stylist; -use ruff_python_parser::token_kind::TokenKind; +use ruff_python_parser::TokenKind; use ruff_source_file::Locator; use crate::registry::{AsRule, Rule}; diff --git a/crates/ruff/src/checkers/noqa.rs b/crates/ruff/src/checkers/noqa.rs index b90e07942d..2916ad7339 100644 --- a/crates/ruff/src/checkers/noqa.rs +++ b/crates/ruff/src/checkers/noqa.rs @@ -3,8 +3,8 @@ use std::path::Path; use itertools::Itertools; +use ruff_python_ast::Ranged; use ruff_text_size::{TextLen, TextRange, TextSize}; -use rustpython_ast::Ranged; use ruff_diagnostics::{Diagnostic, Edit, Fix}; use ruff_source_file::Locator; diff --git a/crates/ruff/src/checkers/physical_lines.rs b/crates/ruff/src/checkers/physical_lines.rs index 6e51cc66fd..cf4479a411 100644 --- a/crates/ruff/src/checkers/physical_lines.rs +++ b/crates/ruff/src/checkers/physical_lines.rs @@ -99,8 +99,8 @@ pub(crate) fn check_physical_lines( #[cfg(test)] mod tests { - use rustpython_parser::lexer::lex; - use rustpython_parser::Mode; + use ruff_python_parser::lexer::lex; + use ruff_python_parser::Mode; use ruff_python_codegen::Stylist; use ruff_python_index::Indexer; diff --git a/crates/ruff/src/checkers/tokens.rs b/crates/ruff/src/checkers/tokens.rs index b4a733c778..4c7ecee760 100644 --- a/crates/ruff/src/checkers/tokens.rs +++ b/crates/ruff/src/checkers/tokens.rs @@ -2,8 +2,8 @@ use std::path::Path; -use rustpython_parser::lexer::LexResult; -use rustpython_parser::Tok; +use ruff_python_parser::lexer::LexResult; +use ruff_python_parser::Tok; use ruff_diagnostics::Diagnostic; use ruff_python_index::Indexer; diff --git a/crates/ruff/src/directives.rs b/crates/ruff/src/directives.rs index a4b7fbb5d3..1ed7d20c3d 100644 --- a/crates/ruff/src/directives.rs +++ b/crates/ruff/src/directives.rs @@ -3,9 +3,9 @@ use std::str::FromStr; use bitflags::bitflags; +use ruff_python_parser::lexer::LexResult; +use ruff_python_parser::Tok; use ruff_text_size::{TextLen, TextRange, TextSize}; -use rustpython_parser::lexer::LexResult; -use rustpython_parser::Tok; use ruff_python_index::Indexer; use ruff_source_file::Locator; @@ -349,9 +349,9 @@ impl TodoDirectiveKind { #[cfg(test)] mod tests { + use ruff_python_parser::lexer::LexResult; + use ruff_python_parser::{lexer, Mode}; use ruff_text_size::{TextLen, TextRange, TextSize}; - use rustpython_parser::lexer::LexResult; - use rustpython_parser::{lexer, Mode}; use ruff_python_index::Indexer; use ruff_source_file::Locator; diff --git a/crates/ruff/src/doc_lines.rs b/crates/ruff/src/doc_lines.rs index bd41a41da1..c072eb8670 100644 --- a/crates/ruff/src/doc_lines.rs +++ b/crates/ruff/src/doc_lines.rs @@ -3,10 +3,10 @@ use std::iter::FusedIterator; +use ruff_python_ast::{self as ast, Constant, Expr, Ranged, Stmt, Suite}; +use ruff_python_parser::lexer::LexResult; +use ruff_python_parser::Tok; use ruff_text_size::TextSize; -use rustpython_ast::{self as ast, Constant, Expr, Ranged, Stmt, Suite}; -use rustpython_parser::lexer::LexResult; -use rustpython_parser::Tok; use ruff_python_ast::statement_visitor::{walk_stmt, StatementVisitor}; use ruff_source_file::{Locator, UniversalNewlineIterator}; diff --git a/crates/ruff/src/docstrings/extraction.rs b/crates/ruff/src/docstrings/extraction.rs index 1de50930a0..3a2fdb7660 100644 --- a/crates/ruff/src/docstrings/extraction.rs +++ b/crates/ruff/src/docstrings/extraction.rs @@ -1,6 +1,6 @@ //! Extract docstrings from an AST. -use rustpython_ast::{self as ast, Constant, Expr, Stmt}; +use ruff_python_ast::{self as ast, Constant, Expr, Stmt}; use ruff_python_semantic::{Definition, DefinitionId, Definitions, Member, MemberKind}; diff --git a/crates/ruff/src/docstrings/mod.rs b/crates/ruff/src/docstrings/mod.rs index 3f5c64addb..46db0dcf35 100644 --- a/crates/ruff/src/docstrings/mod.rs +++ b/crates/ruff/src/docstrings/mod.rs @@ -1,8 +1,8 @@ use std::fmt::{Debug, Formatter}; use std::ops::Deref; +use ruff_python_ast::{Expr, Ranged}; use ruff_text_size::{TextRange, TextSize}; -use rustpython_ast::{Expr, Ranged}; use ruff_python_semantic::Definition; diff --git a/crates/ruff/src/importer/insertion.rs b/crates/ruff/src/importer/insertion.rs index 12eb54d9b4..7d5e2aaf94 100644 --- a/crates/ruff/src/importer/insertion.rs +++ b/crates/ruff/src/importer/insertion.rs @@ -1,9 +1,9 @@ //! Insert statements into Python code. use std::ops::Add; +use ruff_python_ast::{Ranged, Stmt}; +use ruff_python_parser::{lexer, Mode, Tok}; use ruff_text_size::TextSize; -use rustpython_ast::{Ranged, Stmt}; -use rustpython_parser::{lexer, Mode, Tok}; use ruff_diagnostics::Edit; use ruff_python_ast::helpers::is_docstring_stmt; @@ -299,10 +299,10 @@ fn match_leading_semicolon(s: &str) -> Option { #[cfg(test)] mod tests { use anyhow::Result; + use ruff_python_ast::Suite; + use ruff_python_parser::lexer::LexResult; + use ruff_python_parser::Parse; use ruff_text_size::TextSize; - use rustpython_ast::Suite; - use rustpython_parser::lexer::LexResult; - use rustpython_parser::Parse; use ruff_python_codegen::Stylist; use ruff_source_file::{LineEnding, Locator}; diff --git a/crates/ruff/src/importer/mod.rs b/crates/ruff/src/importer/mod.rs index a4147e2e7f..12de3f2702 100644 --- a/crates/ruff/src/importer/mod.rs +++ b/crates/ruff/src/importer/mod.rs @@ -7,8 +7,8 @@ use std::error::Error; use anyhow::Result; use libcst_native::{ImportAlias, Name, NameOrAttribute}; +use ruff_python_ast::{self as ast, Ranged, Stmt, Suite}; use ruff_text_size::TextSize; -use rustpython_ast::{self as ast, Ranged, Stmt, Suite}; use ruff_diagnostics::Edit; use ruff_python_ast::imports::{AnyImport, Import, ImportFrom}; diff --git a/crates/ruff/src/jupyter/notebook.rs b/crates/ruff/src/jupyter/notebook.rs index 50cd682822..d6e5885e56 100644 --- a/crates/ruff/src/jupyter/notebook.rs +++ b/crates/ruff/src/jupyter/notebook.rs @@ -10,10 +10,10 @@ use serde::Serialize; use serde_json::error::Category; use ruff_diagnostics::Diagnostic; +use ruff_python_parser::lexer::lex; +use ruff_python_parser::Mode; use ruff_source_file::{NewlineWithTrailingNewline, UniversalNewlineIterator}; use ruff_text_size::{TextRange, TextSize}; -use rustpython_parser::lexer::lex; -use rustpython_parser::Mode; use crate::autofix::source_map::{SourceMap, SourceMarker}; use crate::jupyter::index::JupyterIndex; diff --git a/crates/ruff/src/lex/docstring_detection.rs b/crates/ruff/src/lex/docstring_detection.rs index 58bdbf4a4c..33f8a4538a 100644 --- a/crates/ruff/src/lex/docstring_detection.rs +++ b/crates/ruff/src/lex/docstring_detection.rs @@ -4,7 +4,7 @@ //! //! TODO(charlie): Consolidate with the existing AST-based docstring extraction. -use rustpython_parser::Tok; +use ruff_python_parser::Tok; #[derive(Default, Copy, Clone)] enum State { diff --git a/crates/ruff/src/linter.rs b/crates/ruff/src/linter.rs index 92589dc427..0f614535da 100644 --- a/crates/ruff/src/linter.rs +++ b/crates/ruff/src/linter.rs @@ -6,9 +6,9 @@ use anyhow::{anyhow, Result}; use colored::Colorize; use itertools::Itertools; use log::error; +use ruff_python_parser::lexer::LexResult; +use ruff_python_parser::ParseError; use rustc_hash::FxHashMap; -use rustpython_parser::lexer::LexResult; -use rustpython_parser::ParseError; use ruff_diagnostics::Diagnostic; use ruff_python_ast::imports::ImportMap; diff --git a/crates/ruff/src/logging.rs b/crates/ruff/src/logging.rs index e224f84e30..469186a9b0 100644 --- a/crates/ruff/src/logging.rs +++ b/crates/ruff/src/logging.rs @@ -7,7 +7,7 @@ use colored::Colorize; use fern; use log::Level; use once_cell::sync::Lazy; -use rustpython_parser::{ParseError, ParseErrorType}; +use ruff_python_parser::{ParseError, ParseErrorType}; use ruff_source_file::{OneIndexed, SourceCode, SourceLocation}; diff --git a/crates/ruff/src/noqa.rs b/crates/ruff/src/noqa.rs index 48aa350736..e609ceb4a8 100644 --- a/crates/ruff/src/noqa.rs +++ b/crates/ruff/src/noqa.rs @@ -8,8 +8,8 @@ use std::path::Path; use anyhow::Result; use itertools::Itertools; use log::warn; +use ruff_python_ast::Ranged; use ruff_text_size::{TextLen, TextRange, TextSize}; -use rustpython_ast::Ranged; use ruff_diagnostics::Diagnostic; use ruff_source_file::{LineEnding, Locator}; diff --git a/crates/ruff/src/rules/airflow/rules/task_variable_name.rs b/crates/ruff/src/rules/airflow/rules/task_variable_name.rs index 383f249284..275f96ad28 100644 --- a/crates/ruff/src/rules/airflow/rules/task_variable_name.rs +++ b/crates/ruff/src/rules/airflow/rules/task_variable_name.rs @@ -1,10 +1,10 @@ -use rustpython_ast::{Expr, Ranged}; -use rustpython_parser::ast; +use ruff_python_ast as ast; +use ruff_python_ast::{Expr, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::find_keyword; -use rustpython_ast::Constant; +use ruff_python_ast::Constant; use crate::checkers::ast::Checker; diff --git a/crates/ruff/src/rules/eradicate/detection.rs b/crates/ruff/src/rules/eradicate/detection.rs index c857883958..7cf497536d 100644 --- a/crates/ruff/src/rules/eradicate/detection.rs +++ b/crates/ruff/src/rules/eradicate/detection.rs @@ -1,8 +1,8 @@ /// See: [eradicate.py](https://github.com/myint/eradicate/blob/98f199940979c94447a461d50d27862b118b282d/eradicate.py) use once_cell::sync::Lazy; use regex::Regex; -use rustpython_ast::Suite; -use rustpython_parser::Parse; +use ruff_python_ast::Suite; +use ruff_python_parser::Parse; static ALLOWLIST_REGEX: Lazy = Lazy::new(|| { Regex::new( diff --git a/crates/ruff/src/rules/flake8_2020/helpers.rs b/crates/ruff/src/rules/flake8_2020/helpers.rs index b58edccbbc..87df1c4559 100644 --- a/crates/ruff/src/rules/flake8_2020/helpers.rs +++ b/crates/ruff/src/rules/flake8_2020/helpers.rs @@ -1,4 +1,4 @@ -use rustpython_ast::Expr; +use ruff_python_ast::Expr; use ruff_python_semantic::SemanticModel; diff --git a/crates/ruff/src/rules/flake8_2020/rules/compare.rs b/crates/ruff/src/rules/flake8_2020/rules/compare.rs index 313d257677..ff0508164e 100644 --- a/crates/ruff/src/rules/flake8_2020/rules/compare.rs +++ b/crates/ruff/src/rules/flake8_2020/rules/compare.rs @@ -1,5 +1,5 @@ use num_bigint::BigInt; -use rustpython_ast::{self as ast, CmpOp, Constant, Expr, Ranged}; +use ruff_python_ast::{self as ast, CmpOp, Constant, Expr, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_2020/rules/name_or_attribute.rs b/crates/ruff/src/rules/flake8_2020/rules/name_or_attribute.rs index d37df2341c..3859fd3bc2 100644 --- a/crates/ruff/src/rules/flake8_2020/rules/name_or_attribute.rs +++ b/crates/ruff/src/rules/flake8_2020/rules/name_or_attribute.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Expr, Ranged}; +use ruff_python_ast::{Expr, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_2020/rules/subscript.rs b/crates/ruff/src/rules/flake8_2020/rules/subscript.rs index d78a80ca51..20542c8dd9 100644 --- a/crates/ruff/src/rules/flake8_2020/rules/subscript.rs +++ b/crates/ruff/src/rules/flake8_2020/rules/subscript.rs @@ -1,5 +1,5 @@ use num_bigint::BigInt; -use rustpython_ast::{self as ast, Constant, Expr, Ranged}; +use ruff_python_ast::{self as ast, Constant, Expr, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_annotations/fixes.rs b/crates/ruff/src/rules/flake8_annotations/fixes.rs index 1b7c176a4a..2111978b04 100644 --- a/crates/ruff/src/rules/flake8_annotations/fixes.rs +++ b/crates/ruff/src/rules/flake8_annotations/fixes.rs @@ -1,6 +1,6 @@ use anyhow::{bail, Result}; -use rustpython_ast::{Ranged, Stmt}; -use rustpython_parser::{lexer, Mode, Tok}; +use ruff_python_ast::{Ranged, Stmt}; +use ruff_python_parser::{lexer, Mode, Tok}; use ruff_diagnostics::Edit; use ruff_source_file::Locator; diff --git a/crates/ruff/src/rules/flake8_annotations/helpers.rs b/crates/ruff/src/rules/flake8_annotations/helpers.rs index 60a6e7a9c4..4d265816a4 100644 --- a/crates/ruff/src/rules/flake8_annotations/helpers.rs +++ b/crates/ruff/src/rules/flake8_annotations/helpers.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Arguments, Expr, Stmt}; +use ruff_python_ast::{self as ast, Arguments, Expr, Stmt}; use ruff_python_ast::cast; use ruff_python_semantic::analyze::visibility; diff --git a/crates/ruff/src/rules/flake8_annotations/rules/definition.rs b/crates/ruff/src/rules/flake8_annotations/rules/definition.rs index a9929d1200..9e7f120f43 100644 --- a/crates/ruff/src/rules/flake8_annotations/rules/definition.rs +++ b/crates/ruff/src/rules/flake8_annotations/rules/definition.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, ArgWithDefault, Constant, Expr, Ranged, Stmt}; +use ruff_python_ast::{self as ast, ArgWithDefault, Constant, Expr, Ranged, Stmt}; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_async/rules/blocking_http_call.rs b/crates/ruff/src/rules/flake8_async/rules/blocking_http_call.rs index 13451f7e76..a06ce6dca3 100644 --- a/crates/ruff/src/rules/flake8_async/rules/blocking_http_call.rs +++ b/crates/ruff/src/rules/flake8_async/rules/blocking_http_call.rs @@ -1,5 +1,5 @@ -use rustpython_ast::{Expr, Ranged}; -use rustpython_parser::ast; +use ruff_python_ast as ast; +use ruff_python_ast::{Expr, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_async/rules/blocking_os_call.rs b/crates/ruff/src/rules/flake8_async/rules/blocking_os_call.rs index bc3aabaee4..4757839bb9 100644 --- a/crates/ruff/src/rules/flake8_async/rules/blocking_os_call.rs +++ b/crates/ruff/src/rules/flake8_async/rules/blocking_os_call.rs @@ -1,5 +1,5 @@ -use rustpython_ast::{Expr, Ranged}; -use rustpython_parser::ast; +use ruff_python_ast as ast; +use ruff_python_ast::{Expr, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_async/rules/open_sleep_or_subprocess_call.rs b/crates/ruff/src/rules/flake8_async/rules/open_sleep_or_subprocess_call.rs index 8fa2c81464..7de7c4b0ef 100644 --- a/crates/ruff/src/rules/flake8_async/rules/open_sleep_or_subprocess_call.rs +++ b/crates/ruff/src/rules/flake8_async/rules/open_sleep_or_subprocess_call.rs @@ -1,5 +1,5 @@ -use rustpython_ast::{Expr, Ranged}; -use rustpython_parser::ast; +use ruff_python_ast as ast; +use ruff_python_ast::{Expr, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_bandit/helpers.rs b/crates/ruff/src/rules/flake8_bandit/helpers.rs index b83a3f4d10..0837d4747e 100644 --- a/crates/ruff/src/rules/flake8_bandit/helpers.rs +++ b/crates/ruff/src/rules/flake8_bandit/helpers.rs @@ -1,6 +1,6 @@ use once_cell::sync::Lazy; use regex::Regex; -use rustpython_ast::{self as ast, Constant, Expr}; +use ruff_python_ast::{self as ast, Constant, Expr}; use ruff_python_semantic::SemanticModel; diff --git a/crates/ruff/src/rules/flake8_bandit/rules/assert_used.rs b/crates/ruff/src/rules/flake8_bandit/rules/assert_used.rs index f05c01fe3b..88a22adced 100644 --- a/crates/ruff/src/rules/flake8_bandit/rules/assert_used.rs +++ b/crates/ruff/src/rules/flake8_bandit/rules/assert_used.rs @@ -1,5 +1,5 @@ +use ruff_python_ast::{Ranged, Stmt}; use ruff_text_size::{TextLen, TextRange}; -use rustpython_ast::{Ranged, Stmt}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_bandit/rules/bad_file_permissions.rs b/crates/ruff/src/rules/flake8_bandit/rules/bad_file_permissions.rs index 530b7d0361..1a42c17f31 100644 --- a/crates/ruff/src/rules/flake8_bandit/rules/bad_file_permissions.rs +++ b/crates/ruff/src/rules/flake8_bandit/rules/bad_file_permissions.rs @@ -1,5 +1,5 @@ use num_traits::ToPrimitive; -use rustpython_ast::{self as ast, Constant, Expr, Keyword, Operator, Ranged}; +use ruff_python_ast::{self as ast, Constant, Expr, Keyword, Operator, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_bandit/rules/exec_used.rs b/crates/ruff/src/rules/flake8_bandit/rules/exec_used.rs index 51bd2834e4..14de0c36d4 100644 --- a/crates/ruff/src/rules/flake8_bandit/rules/exec_used.rs +++ b/crates/ruff/src/rules/flake8_bandit/rules/exec_used.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Expr, Ranged}; +use ruff_python_ast::{Expr, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_bandit/rules/hardcoded_password_default.rs b/crates/ruff/src/rules/flake8_bandit/rules/hardcoded_password_default.rs index 57116c9317..82b2bff33c 100644 --- a/crates/ruff/src/rules/flake8_bandit/rules/hardcoded_password_default.rs +++ b/crates/ruff/src/rules/flake8_bandit/rules/hardcoded_password_default.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Arg, ArgWithDefault, Arguments, Expr, Ranged}; +use ruff_python_ast::{Arg, ArgWithDefault, Arguments, Expr, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_bandit/rules/hardcoded_password_func_arg.rs b/crates/ruff/src/rules/flake8_bandit/rules/hardcoded_password_func_arg.rs index 9969b09634..70a60e0df3 100644 --- a/crates/ruff/src/rules/flake8_bandit/rules/hardcoded_password_func_arg.rs +++ b/crates/ruff/src/rules/flake8_bandit/rules/hardcoded_password_func_arg.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Keyword, Ranged}; +use ruff_python_ast::{Keyword, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_bandit/rules/hardcoded_password_string.rs b/crates/ruff/src/rules/flake8_bandit/rules/hardcoded_password_string.rs index ea347d2ced..37d816f93c 100644 --- a/crates/ruff/src/rules/flake8_bandit/rules/hardcoded_password_string.rs +++ b/crates/ruff/src/rules/flake8_bandit/rules/hardcoded_password_string.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Constant, Expr, Ranged}; +use ruff_python_ast::{self as ast, Constant, Expr, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_bandit/rules/hardcoded_sql_expression.rs b/crates/ruff/src/rules/flake8_bandit/rules/hardcoded_sql_expression.rs index 8c1d521113..5b63205d5f 100644 --- a/crates/ruff/src/rules/flake8_bandit/rules/hardcoded_sql_expression.rs +++ b/crates/ruff/src/rules/flake8_bandit/rules/hardcoded_sql_expression.rs @@ -1,6 +1,6 @@ use once_cell::sync::Lazy; use regex::Regex; -use rustpython_ast::{self as ast, Expr, Operator, Ranged}; +use ruff_python_ast::{self as ast, Expr, Operator, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_bandit/rules/hardcoded_tmp_directory.rs b/crates/ruff/src/rules/flake8_bandit/rules/hardcoded_tmp_directory.rs index efe937da6a..7993dd1b24 100644 --- a/crates/ruff/src/rules/flake8_bandit/rules/hardcoded_tmp_directory.rs +++ b/crates/ruff/src/rules/flake8_bandit/rules/hardcoded_tmp_directory.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Expr, Ranged}; +use ruff_python_ast::{Expr, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_bandit/rules/hashlib_insecure_hash_functions.rs b/crates/ruff/src/rules/flake8_bandit/rules/hashlib_insecure_hash_functions.rs index 81577a894b..75c15bbbd9 100644 --- a/crates/ruff/src/rules/flake8_bandit/rules/hashlib_insecure_hash_functions.rs +++ b/crates/ruff/src/rules/flake8_bandit/rules/hashlib_insecure_hash_functions.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Expr, Keyword, Ranged}; +use ruff_python_ast::{Expr, Keyword, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_bandit/rules/jinja2_autoescape_false.rs b/crates/ruff/src/rules/flake8_bandit/rules/jinja2_autoescape_false.rs index ad9f704ebd..7400956ac8 100644 --- a/crates/ruff/src/rules/flake8_bandit/rules/jinja2_autoescape_false.rs +++ b/crates/ruff/src/rules/flake8_bandit/rules/jinja2_autoescape_false.rs @@ -1,5 +1,5 @@ use ruff_python_ast::helpers::find_keyword; -use rustpython_ast::{self as ast, Constant, Expr, Keyword, Ranged}; +use ruff_python_ast::{self as ast, Constant, Expr, Keyword, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_bandit/rules/logging_config_insecure_listen.rs b/crates/ruff/src/rules/flake8_bandit/rules/logging_config_insecure_listen.rs index 46c5c50b1e..5094d9343d 100644 --- a/crates/ruff/src/rules/flake8_bandit/rules/logging_config_insecure_listen.rs +++ b/crates/ruff/src/rules/flake8_bandit/rules/logging_config_insecure_listen.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Expr, Keyword, Ranged}; +use ruff_python_ast::{Expr, Keyword, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_bandit/rules/paramiko_calls.rs b/crates/ruff/src/rules/flake8_bandit/rules/paramiko_calls.rs index f57fa30d9f..2b7249c52c 100644 --- a/crates/ruff/src/rules/flake8_bandit/rules/paramiko_calls.rs +++ b/crates/ruff/src/rules/flake8_bandit/rules/paramiko_calls.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Expr, Ranged}; +use ruff_python_ast::{Expr, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_bandit/rules/request_with_no_cert_validation.rs b/crates/ruff/src/rules/flake8_bandit/rules/request_with_no_cert_validation.rs index d1eac48e4f..d2f7d511ce 100644 --- a/crates/ruff/src/rules/flake8_bandit/rules/request_with_no_cert_validation.rs +++ b/crates/ruff/src/rules/flake8_bandit/rules/request_with_no_cert_validation.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Expr, Keyword, Ranged}; +use ruff_python_ast::{Expr, Keyword, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_bandit/rules/request_without_timeout.rs b/crates/ruff/src/rules/flake8_bandit/rules/request_without_timeout.rs index c37794ae70..5711403505 100644 --- a/crates/ruff/src/rules/flake8_bandit/rules/request_without_timeout.rs +++ b/crates/ruff/src/rules/flake8_bandit/rules/request_without_timeout.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Expr, Keyword, Ranged}; +use ruff_python_ast::{Expr, Keyword, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_bandit/rules/shell_injection.rs b/crates/ruff/src/rules/flake8_bandit/rules/shell_injection.rs index 306230d70e..34344b964c 100644 --- a/crates/ruff/src/rules/flake8_bandit/rules/shell_injection.rs +++ b/crates/ruff/src/rules/flake8_bandit/rules/shell_injection.rs @@ -1,6 +1,6 @@ //! Checks relating to shell injection. -use rustpython_ast::{self as ast, Constant, Expr, Keyword, Ranged}; +use ruff_python_ast::{self as ast, Constant, Expr, Keyword, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_bandit/rules/snmp_insecure_version.rs b/crates/ruff/src/rules/flake8_bandit/rules/snmp_insecure_version.rs index 3fc247ff11..4e9f276f66 100644 --- a/crates/ruff/src/rules/flake8_bandit/rules/snmp_insecure_version.rs +++ b/crates/ruff/src/rules/flake8_bandit/rules/snmp_insecure_version.rs @@ -1,5 +1,5 @@ use num_traits::{One, Zero}; -use rustpython_ast::{self as ast, Constant, Expr, Keyword, Ranged}; +use ruff_python_ast::{self as ast, Constant, Expr, Keyword, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_bandit/rules/snmp_weak_cryptography.rs b/crates/ruff/src/rules/flake8_bandit/rules/snmp_weak_cryptography.rs index 7c8f9ba26c..78274ff0f4 100644 --- a/crates/ruff/src/rules/flake8_bandit/rules/snmp_weak_cryptography.rs +++ b/crates/ruff/src/rules/flake8_bandit/rules/snmp_weak_cryptography.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Expr, Keyword, Ranged}; +use ruff_python_ast::{Expr, Keyword, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_bandit/rules/suspicious_function_call.rs b/crates/ruff/src/rules/flake8_bandit/rules/suspicious_function_call.rs index fb5694d6a9..05bfc7aec9 100644 --- a/crates/ruff/src/rules/flake8_bandit/rules/suspicious_function_call.rs +++ b/crates/ruff/src/rules/flake8_bandit/rules/suspicious_function_call.rs @@ -1,7 +1,7 @@ //! Check for calls to suspicious functions, or calls into suspicious modules. //! //! See: -use rustpython_ast::{self as ast, Expr, Ranged}; +use ruff_python_ast::{self as ast, Expr, Ranged}; use ruff_diagnostics::{Diagnostic, DiagnosticKind, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_bandit/rules/try_except_continue.rs b/crates/ruff/src/rules/flake8_bandit/rules/try_except_continue.rs index 43a4c7a86b..25dbe835bd 100644 --- a/crates/ruff/src/rules/flake8_bandit/rules/try_except_continue.rs +++ b/crates/ruff/src/rules/flake8_bandit/rules/try_except_continue.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{ExceptHandler, Expr, Ranged, Stmt}; +use ruff_python_ast::{ExceptHandler, Expr, Ranged, Stmt}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_bandit/rules/try_except_pass.rs b/crates/ruff/src/rules/flake8_bandit/rules/try_except_pass.rs index 7d4593ce42..0a92793052 100644 --- a/crates/ruff/src/rules/flake8_bandit/rules/try_except_pass.rs +++ b/crates/ruff/src/rules/flake8_bandit/rules/try_except_pass.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{ExceptHandler, Expr, Ranged, Stmt}; +use ruff_python_ast::{ExceptHandler, Expr, Ranged, Stmt}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_bandit/rules/unsafe_yaml_load.rs b/crates/ruff/src/rules/flake8_bandit/rules/unsafe_yaml_load.rs index 76aee42ac5..cbe45c8c65 100644 --- a/crates/ruff/src/rules/flake8_bandit/rules/unsafe_yaml_load.rs +++ b/crates/ruff/src/rules/flake8_bandit/rules/unsafe_yaml_load.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Expr, Keyword, Ranged}; +use ruff_python_ast::{self as ast, Expr, Keyword, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_blind_except/rules/blind_except.rs b/crates/ruff/src/rules/flake8_blind_except/rules/blind_except.rs index bc3aae4647..ac8b34c59f 100644 --- a/crates/ruff/src/rules/flake8_blind_except/rules/blind_except.rs +++ b/crates/ruff/src/rules/flake8_blind_except/rules/blind_except.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Expr, Ranged, Stmt}; +use ruff_python_ast::{self as ast, Expr, Ranged, Stmt}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_boolean_trap/helpers.rs b/crates/ruff/src/rules/flake8_boolean_trap/helpers.rs index 2572b02619..8b4f414a51 100644 --- a/crates/ruff/src/rules/flake8_boolean_trap/helpers.rs +++ b/crates/ruff/src/rules/flake8_boolean_trap/helpers.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Constant, Expr, Ranged}; +use ruff_python_ast::{self as ast, Constant, Expr, Ranged}; use ruff_diagnostics::{Diagnostic, DiagnosticKind}; diff --git a/crates/ruff/src/rules/flake8_boolean_trap/rules/check_boolean_default_value_in_function_definition.rs b/crates/ruff/src/rules/flake8_boolean_trap/rules/check_boolean_default_value_in_function_definition.rs index cce7960f1d..84575feb7f 100644 --- a/crates/ruff/src/rules/flake8_boolean_trap/rules/check_boolean_default_value_in_function_definition.rs +++ b/crates/ruff/src/rules/flake8_boolean_trap/rules/check_boolean_default_value_in_function_definition.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{ArgWithDefault, Arguments, Decorator}; +use ruff_python_ast::{ArgWithDefault, Arguments, Decorator}; use ruff_diagnostics::Violation; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_boolean_trap/rules/check_boolean_positional_value_in_function_call.rs b/crates/ruff/src/rules/flake8_boolean_trap/rules/check_boolean_positional_value_in_function_call.rs index 876a05cee0..6138fa67bd 100644 --- a/crates/ruff/src/rules/flake8_boolean_trap/rules/check_boolean_positional_value_in_function_call.rs +++ b/crates/ruff/src/rules/flake8_boolean_trap/rules/check_boolean_positional_value_in_function_call.rs @@ -1,4 +1,4 @@ -use rustpython_ast::Expr; +use ruff_python_ast::Expr; use ruff_diagnostics::Violation; diff --git a/crates/ruff/src/rules/flake8_boolean_trap/rules/check_positional_boolean_in_def.rs b/crates/ruff/src/rules/flake8_boolean_trap/rules/check_positional_boolean_in_def.rs index 888ddf66a6..29bea29ff2 100644 --- a/crates/ruff/src/rules/flake8_boolean_trap/rules/check_positional_boolean_in_def.rs +++ b/crates/ruff/src/rules/flake8_boolean_trap/rules/check_positional_boolean_in_def.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, ArgWithDefault, Arguments, Constant, Decorator, Expr, Ranged}; +use ruff_python_ast::{self as ast, ArgWithDefault, Arguments, Constant, Decorator, Expr, Ranged}; use ruff_diagnostics::Diagnostic; use ruff_diagnostics::Violation; diff --git a/crates/ruff/src/rules/flake8_bugbear/rules/abstract_base_class.rs b/crates/ruff/src/rules/flake8_bugbear/rules/abstract_base_class.rs index f8a4d24912..681319c399 100644 --- a/crates/ruff/src/rules/flake8_bugbear/rules/abstract_base_class.rs +++ b/crates/ruff/src/rules/flake8_bugbear/rules/abstract_base_class.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Constant, Expr, Keyword, Ranged, Stmt}; +use ruff_python_ast::{self as ast, Constant, Expr, Keyword, Ranged, Stmt}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_bugbear/rules/assert_false.rs b/crates/ruff/src/rules/flake8_bugbear/rules/assert_false.rs index 80e990f04a..40de4922bf 100644 --- a/crates/ruff/src/rules/flake8_bugbear/rules/assert_false.rs +++ b/crates/ruff/src/rules/flake8_bugbear/rules/assert_false.rs @@ -1,5 +1,5 @@ +use ruff_python_ast::{self as ast, Expr, ExprContext, Ranged, Stmt}; use ruff_text_size::TextRange; -use rustpython_ast::{self as ast, Expr, ExprContext, Ranged, Stmt}; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Edit, Fix}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_bugbear/rules/assert_raises_exception.rs b/crates/ruff/src/rules/flake8_bugbear/rules/assert_raises_exception.rs index 7aabb5f6c8..57c0bd5e06 100644 --- a/crates/ruff/src/rules/flake8_bugbear/rules/assert_raises_exception.rs +++ b/crates/ruff/src/rules/flake8_bugbear/rules/assert_raises_exception.rs @@ -1,6 +1,6 @@ use std::fmt; -use rustpython_ast::{self as ast, Expr, Ranged, WithItem}; +use ruff_python_ast::{self as ast, Expr, Ranged, WithItem}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_bugbear/rules/assignment_to_os_environ.rs b/crates/ruff/src/rules/flake8_bugbear/rules/assignment_to_os_environ.rs index 74aa6fc948..12f45ff2d8 100644 --- a/crates/ruff/src/rules/flake8_bugbear/rules/assignment_to_os_environ.rs +++ b/crates/ruff/src/rules/flake8_bugbear/rules/assignment_to_os_environ.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Expr, Ranged}; +use ruff_python_ast::{self as ast, Expr, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_bugbear/rules/cached_instance_method.rs b/crates/ruff/src/rules/flake8_bugbear/rules/cached_instance_method.rs index de1ee325d3..16452049cf 100644 --- a/crates/ruff/src/rules/flake8_bugbear/rules/cached_instance_method.rs +++ b/crates/ruff/src/rules/flake8_bugbear/rules/cached_instance_method.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Decorator, Expr, Ranged}; +use ruff_python_ast::{self as ast, Decorator, Expr, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_bugbear/rules/duplicate_exceptions.rs b/crates/ruff/src/rules/flake8_bugbear/rules/duplicate_exceptions.rs index 89d6848c17..6f6fbe550a 100644 --- a/crates/ruff/src/rules/flake8_bugbear/rules/duplicate_exceptions.rs +++ b/crates/ruff/src/rules/flake8_bugbear/rules/duplicate_exceptions.rs @@ -1,7 +1,7 @@ use itertools::Itertools; +use ruff_python_ast::{self as ast, ExceptHandler, Expr, ExprContext, Ranged}; use ruff_text_size::TextRange; use rustc_hash::{FxHashMap, FxHashSet}; -use rustpython_ast::{self as ast, ExceptHandler, Expr, ExprContext, Ranged}; use ruff_diagnostics::{AlwaysAutofixableViolation, Violation}; use ruff_diagnostics::{Diagnostic, Edit, Fix}; diff --git a/crates/ruff/src/rules/flake8_bugbear/rules/duplicate_value.rs b/crates/ruff/src/rules/flake8_bugbear/rules/duplicate_value.rs index 66b6c3b407..acd7052598 100644 --- a/crates/ruff/src/rules/flake8_bugbear/rules/duplicate_value.rs +++ b/crates/ruff/src/rules/flake8_bugbear/rules/duplicate_value.rs @@ -1,5 +1,5 @@ +use ruff_python_ast::{self as ast, Expr, Ranged}; use rustc_hash::FxHashSet; -use rustpython_ast::{self as ast, Expr, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_bugbear/rules/except_with_empty_tuple.rs b/crates/ruff/src/rules/flake8_bugbear/rules/except_with_empty_tuple.rs index f75fe3dae2..c0d555e118 100644 --- a/crates/ruff/src/rules/flake8_bugbear/rules/except_with_empty_tuple.rs +++ b/crates/ruff/src/rules/flake8_bugbear/rules/except_with_empty_tuple.rs @@ -1,5 +1,5 @@ -use rustpython_ast::{self as ast, Ranged}; -use rustpython_ast::{ExceptHandler, Expr}; +use ruff_python_ast::{self as ast, Ranged}; +use ruff_python_ast::{ExceptHandler, Expr}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_bugbear/rules/except_with_non_exception_classes.rs b/crates/ruff/src/rules/flake8_bugbear/rules/except_with_non_exception_classes.rs index f028937b15..2c5a027a0f 100644 --- a/crates/ruff/src/rules/flake8_bugbear/rules/except_with_non_exception_classes.rs +++ b/crates/ruff/src/rules/flake8_bugbear/rules/except_with_non_exception_classes.rs @@ -1,6 +1,6 @@ use std::collections::VecDeque; -use rustpython_ast::{self as ast, ExceptHandler, Expr, Ranged}; +use ruff_python_ast::{self as ast, ExceptHandler, Expr, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_bugbear/rules/f_string_docstring.rs b/crates/ruff/src/rules/flake8_bugbear/rules/f_string_docstring.rs index 962cebb4af..2deb444d37 100644 --- a/crates/ruff/src/rules/flake8_bugbear/rules/f_string_docstring.rs +++ b/crates/ruff/src/rules/flake8_bugbear/rules/f_string_docstring.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Stmt}; +use ruff_python_ast::{self as ast, Stmt}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_bugbear/rules/function_call_in_argument_default.rs b/crates/ruff/src/rules/flake8_bugbear/rules/function_call_in_argument_default.rs index 241e242eaf..79949dd81e 100644 --- a/crates/ruff/src/rules/flake8_bugbear/rules/function_call_in_argument_default.rs +++ b/crates/ruff/src/rules/flake8_bugbear/rules/function_call_in_argument_default.rs @@ -1,5 +1,5 @@ +use ruff_python_ast::{self as ast, ArgWithDefault, Arguments, Expr, Ranged}; use ruff_text_size::TextRange; -use rustpython_ast::{self as ast, ArgWithDefault, Arguments, Expr, Ranged}; use ruff_diagnostics::Violation; use ruff_diagnostics::{Diagnostic, DiagnosticKind}; diff --git a/crates/ruff/src/rules/flake8_bugbear/rules/function_uses_loop_variable.rs b/crates/ruff/src/rules/flake8_bugbear/rules/function_uses_loop_variable.rs index 0c60522638..062079e192 100644 --- a/crates/ruff/src/rules/flake8_bugbear/rules/function_uses_loop_variable.rs +++ b/crates/ruff/src/rules/flake8_bugbear/rules/function_uses_loop_variable.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Comprehension, Expr, ExprContext, Ranged, Stmt}; +use ruff_python_ast::{self as ast, Comprehension, Expr, ExprContext, Ranged, Stmt}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_bugbear/rules/getattr_with_constant.rs b/crates/ruff/src/rules/flake8_bugbear/rules/getattr_with_constant.rs index 311d9e8224..94de14785c 100644 --- a/crates/ruff/src/rules/flake8_bugbear/rules/getattr_with_constant.rs +++ b/crates/ruff/src/rules/flake8_bugbear/rules/getattr_with_constant.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Constant, Expr, Ranged}; +use ruff_python_ast::{self as ast, Constant, Expr, Ranged}; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Edit, Fix}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_bugbear/rules/jump_statement_in_finally.rs b/crates/ruff/src/rules/flake8_bugbear/rules/jump_statement_in_finally.rs index b3c3c4a4e1..df83409f2e 100644 --- a/crates/ruff/src/rules/flake8_bugbear/rules/jump_statement_in_finally.rs +++ b/crates/ruff/src/rules/flake8_bugbear/rules/jump_statement_in_finally.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Ranged, Stmt}; +use ruff_python_ast::{self as ast, Ranged, Stmt}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_bugbear/rules/loop_variable_overrides_iterator.rs b/crates/ruff/src/rules/flake8_bugbear/rules/loop_variable_overrides_iterator.rs index 213a5736a5..e26f4284ff 100644 --- a/crates/ruff/src/rules/flake8_bugbear/rules/loop_variable_overrides_iterator.rs +++ b/crates/ruff/src/rules/flake8_bugbear/rules/loop_variable_overrides_iterator.rs @@ -1,5 +1,5 @@ +use ruff_python_ast::{self as ast, ArgWithDefault, Expr, Ranged}; use rustc_hash::FxHashMap; -use rustpython_ast::{self as ast, ArgWithDefault, Expr, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_bugbear/rules/mutable_argument_default.rs b/crates/ruff/src/rules/flake8_bugbear/rules/mutable_argument_default.rs index 35a850edd0..beb9ecf07e 100644 --- a/crates/ruff/src/rules/flake8_bugbear/rules/mutable_argument_default.rs +++ b/crates/ruff/src/rules/flake8_bugbear/rules/mutable_argument_default.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{ArgWithDefault, Arguments, Ranged}; +use ruff_python_ast::{ArgWithDefault, Arguments, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_bugbear/rules/no_explicit_stacklevel.rs b/crates/ruff/src/rules/flake8_bugbear/rules/no_explicit_stacklevel.rs index 371cf0b995..b3e561a54f 100644 --- a/crates/ruff/src/rules/flake8_bugbear/rules/no_explicit_stacklevel.rs +++ b/crates/ruff/src/rules/flake8_bugbear/rules/no_explicit_stacklevel.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Expr, Keyword, Ranged}; +use ruff_python_ast::{Expr, Keyword, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_bugbear/rules/raise_literal.rs b/crates/ruff/src/rules/flake8_bugbear/rules/raise_literal.rs index 3c1036086d..169398dcbd 100644 --- a/crates/ruff/src/rules/flake8_bugbear/rules/raise_literal.rs +++ b/crates/ruff/src/rules/flake8_bugbear/rules/raise_literal.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Expr, Ranged}; +use ruff_python_ast::{Expr, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_bugbear/rules/raise_without_from_inside_except.rs b/crates/ruff/src/rules/flake8_bugbear/rules/raise_without_from_inside_except.rs index 3006bcd65a..a914522733 100644 --- a/crates/ruff/src/rules/flake8_bugbear/rules/raise_without_from_inside_except.rs +++ b/crates/ruff/src/rules/flake8_bugbear/rules/raise_without_from_inside_except.rs @@ -1,5 +1,5 @@ -use rustpython_ast::Stmt; -use rustpython_parser::ast; +use ruff_python_ast as ast; +use ruff_python_ast::Stmt; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_bugbear/rules/re_sub_positional_args.rs b/crates/ruff/src/rules/flake8_bugbear/rules/re_sub_positional_args.rs index 271a9cbae9..13f547391b 100644 --- a/crates/ruff/src/rules/flake8_bugbear/rules/re_sub_positional_args.rs +++ b/crates/ruff/src/rules/flake8_bugbear/rules/re_sub_positional_args.rs @@ -1,6 +1,6 @@ use std::fmt; -use rustpython_ast::{self as ast, Ranged}; +use ruff_python_ast::{self as ast, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_bugbear/rules/redundant_tuple_in_exception_handler.rs b/crates/ruff/src/rules/flake8_bugbear/rules/redundant_tuple_in_exception_handler.rs index 0bc11225d1..e9fd4bb155 100644 --- a/crates/ruff/src/rules/flake8_bugbear/rules/redundant_tuple_in_exception_handler.rs +++ b/crates/ruff/src/rules/flake8_bugbear/rules/redundant_tuple_in_exception_handler.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, ExceptHandler, Expr, Ranged}; +use ruff_python_ast::{self as ast, ExceptHandler, Expr, Ranged}; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Edit, Fix}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_bugbear/rules/reuse_of_groupby_generator.rs b/crates/ruff/src/rules/flake8_bugbear/rules/reuse_of_groupby_generator.rs index cb1575bb4a..566e6345df 100644 --- a/crates/ruff/src/rules/flake8_bugbear/rules/reuse_of_groupby_generator.rs +++ b/crates/ruff/src/rules/flake8_bugbear/rules/reuse_of_groupby_generator.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Comprehension, Expr, Ranged, Stmt}; +use ruff_python_ast::{self as ast, Comprehension, Expr, Ranged, Stmt}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_bugbear/rules/setattr_with_constant.rs b/crates/ruff/src/rules/flake8_bugbear/rules/setattr_with_constant.rs index 33974d6a86..eb74bdb2b4 100644 --- a/crates/ruff/src/rules/flake8_bugbear/rules/setattr_with_constant.rs +++ b/crates/ruff/src/rules/flake8_bugbear/rules/setattr_with_constant.rs @@ -1,5 +1,5 @@ +use ruff_python_ast::{self as ast, Constant, Expr, ExprContext, Identifier, Ranged, Stmt}; use ruff_text_size::TextRange; -use rustpython_ast::{self as ast, Constant, Expr, ExprContext, Identifier, Ranged, Stmt}; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Edit, Fix}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_bugbear/rules/star_arg_unpacking_after_keyword_arg.rs b/crates/ruff/src/rules/flake8_bugbear/rules/star_arg_unpacking_after_keyword_arg.rs index aef48b8cb1..850fe175db 100644 --- a/crates/ruff/src/rules/flake8_bugbear/rules/star_arg_unpacking_after_keyword_arg.rs +++ b/crates/ruff/src/rules/flake8_bugbear/rules/star_arg_unpacking_after_keyword_arg.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Expr, Keyword, Ranged}; +use ruff_python_ast::{Expr, Keyword, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_bugbear/rules/strip_with_multi_characters.rs b/crates/ruff/src/rules/flake8_bugbear/rules/strip_with_multi_characters.rs index 7412466034..3d4ad06ae8 100644 --- a/crates/ruff/src/rules/flake8_bugbear/rules/strip_with_multi_characters.rs +++ b/crates/ruff/src/rules/flake8_bugbear/rules/strip_with_multi_characters.rs @@ -1,5 +1,5 @@ use itertools::Itertools; -use rustpython_ast::{self as ast, Constant, Expr, Ranged}; +use ruff_python_ast::{self as ast, Constant, Expr, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_bugbear/rules/unary_prefix_increment_decrement.rs b/crates/ruff/src/rules/flake8_bugbear/rules/unary_prefix_increment_decrement.rs index 0dd9a35ba7..de6ffc4d11 100644 --- a/crates/ruff/src/rules/flake8_bugbear/rules/unary_prefix_increment_decrement.rs +++ b/crates/ruff/src/rules/flake8_bugbear/rules/unary_prefix_increment_decrement.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Expr, Ranged, UnaryOp}; +use ruff_python_ast::{self as ast, Expr, Ranged, UnaryOp}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_bugbear/rules/unintentional_type_annotation.rs b/crates/ruff/src/rules/flake8_bugbear/rules/unintentional_type_annotation.rs index 94b0fbcc93..d50c91d486 100644 --- a/crates/ruff/src/rules/flake8_bugbear/rules/unintentional_type_annotation.rs +++ b/crates/ruff/src/rules/flake8_bugbear/rules/unintentional_type_annotation.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Expr, Ranged, Stmt}; +use ruff_python_ast::{self as ast, Expr, Ranged, Stmt}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_bugbear/rules/unreliable_callable_check.rs b/crates/ruff/src/rules/flake8_bugbear/rules/unreliable_callable_check.rs index 7af165e271..d9532a927b 100644 --- a/crates/ruff/src/rules/flake8_bugbear/rules/unreliable_callable_check.rs +++ b/crates/ruff/src/rules/flake8_bugbear/rules/unreliable_callable_check.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Constant, Expr, Ranged}; +use ruff_python_ast::{self as ast, Constant, Expr, Ranged}; use ruff_diagnostics::{AutofixKind, Diagnostic, Edit, Fix, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_bugbear/rules/unused_loop_control_variable.rs b/crates/ruff/src/rules/flake8_bugbear/rules/unused_loop_control_variable.rs index 71982ac702..dc2553d200 100644 --- a/crates/ruff/src/rules/flake8_bugbear/rules/unused_loop_control_variable.rs +++ b/crates/ruff/src/rules/flake8_bugbear/rules/unused_loop_control_variable.rs @@ -1,5 +1,5 @@ +use ruff_python_ast::{self as ast, Expr, Ranged, Stmt}; use rustc_hash::FxHashMap; -use rustpython_ast::{self as ast, Expr, Ranged, Stmt}; use ruff_diagnostics::{AutofixKind, Diagnostic, Edit, Fix, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_bugbear/rules/useless_comparison.rs b/crates/ruff/src/rules/flake8_bugbear/rules/useless_comparison.rs index 8f415f6be3..8cdcf2eeef 100644 --- a/crates/ruff/src/rules/flake8_bugbear/rules/useless_comparison.rs +++ b/crates/ruff/src/rules/flake8_bugbear/rules/useless_comparison.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Expr, Ranged}; +use ruff_python_ast::{Expr, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_bugbear/rules/useless_contextlib_suppress.rs b/crates/ruff/src/rules/flake8_bugbear/rules/useless_contextlib_suppress.rs index 56ea81dce4..5d04ab4179 100644 --- a/crates/ruff/src/rules/flake8_bugbear/rules/useless_contextlib_suppress.rs +++ b/crates/ruff/src/rules/flake8_bugbear/rules/useless_contextlib_suppress.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Expr, Ranged}; +use ruff_python_ast::{Expr, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_bugbear/rules/useless_expression.rs b/crates/ruff/src/rules/flake8_bugbear/rules/useless_expression.rs index 132b4464e3..e71e87c8c0 100644 --- a/crates/ruff/src/rules/flake8_bugbear/rules/useless_expression.rs +++ b/crates/ruff/src/rules/flake8_bugbear/rules/useless_expression.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Constant, Expr, Ranged}; +use ruff_python_ast::{self as ast, Constant, Expr, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_bugbear/rules/zip_without_explicit_strict.rs b/crates/ruff/src/rules/flake8_bugbear/rules/zip_without_explicit_strict.rs index beadd8dbcc..4f875938ba 100644 --- a/crates/ruff/src/rules/flake8_bugbear/rules/zip_without_explicit_strict.rs +++ b/crates/ruff/src/rules/flake8_bugbear/rules/zip_without_explicit_strict.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Expr, Keyword, Ranged}; +use ruff_python_ast::{self as ast, Expr, Keyword, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_builtins/rules/builtin_argument_shadowing.rs b/crates/ruff/src/rules/flake8_builtins/rules/builtin_argument_shadowing.rs index cbb62c03a3..064e5a4807 100644 --- a/crates/ruff/src/rules/flake8_builtins/rules/builtin_argument_shadowing.rs +++ b/crates/ruff/src/rules/flake8_builtins/rules/builtin_argument_shadowing.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Arg, Ranged}; +use ruff_python_ast::{Arg, Ranged}; use ruff_diagnostics::Diagnostic; use ruff_diagnostics::Violation; diff --git a/crates/ruff/src/rules/flake8_builtins/rules/builtin_attribute_shadowing.rs b/crates/ruff/src/rules/flake8_builtins/rules/builtin_attribute_shadowing.rs index fdcca49e16..c89f261d26 100644 --- a/crates/ruff/src/rules/flake8_builtins/rules/builtin_attribute_shadowing.rs +++ b/crates/ruff/src/rules/flake8_builtins/rules/builtin_attribute_shadowing.rs @@ -1,6 +1,6 @@ +use ruff_python_ast as ast; +use ruff_python_ast::Decorator; use ruff_text_size::TextRange; -use rustpython_ast::Decorator; -use rustpython_parser::ast; use ruff_diagnostics::Diagnostic; use ruff_diagnostics::Violation; diff --git a/crates/ruff/src/rules/flake8_commas/rules/trailing_commas.rs b/crates/ruff/src/rules/flake8_commas/rules/trailing_commas.rs index f00a454297..7e0b2f7247 100644 --- a/crates/ruff/src/rules/flake8_commas/rules/trailing_commas.rs +++ b/crates/ruff/src/rules/flake8_commas/rules/trailing_commas.rs @@ -1,7 +1,7 @@ use itertools::Itertools; +use ruff_python_parser::lexer::{LexResult, Spanned}; +use ruff_python_parser::Tok; use ruff_text_size::TextRange; -use rustpython_parser::lexer::{LexResult, Spanned}; -use rustpython_parser::Tok; use ruff_diagnostics::{AlwaysAutofixableViolation, Violation}; use ruff_diagnostics::{Diagnostic, Edit, Fix}; diff --git a/crates/ruff/src/rules/flake8_comprehensions/fixes.rs b/crates/ruff/src/rules/flake8_comprehensions/fixes.rs index 4014adf105..785e3e9627 100644 --- a/crates/ruff/src/rules/flake8_comprehensions/fixes.rs +++ b/crates/ruff/src/rules/flake8_comprehensions/fixes.rs @@ -7,8 +7,8 @@ use libcst_native::{ RightParen, RightSquareBracket, Set, SetComp, SimpleString, SimpleWhitespace, TrailingWhitespace, Tuple, }; +use ruff_python_ast::Ranged; use ruff_text_size::TextRange; -use rustpython_ast::Ranged; use ruff_diagnostics::{Edit, Fix}; use ruff_python_codegen::Stylist; @@ -28,7 +28,7 @@ use crate::{ pub(crate) fn fix_unnecessary_generator_list( locator: &Locator, stylist: &Stylist, - expr: &rustpython_ast::Expr, + expr: &ruff_python_ast::Expr, ) -> Result { // Expr(Call(GeneratorExp)))) -> Expr(ListComp))) let module_text = locator.slice(expr.range()); @@ -60,7 +60,7 @@ pub(crate) fn fix_unnecessary_generator_list( /// (C401) Convert `set(x for x in y)` to `{x for x in y}`. pub(crate) fn fix_unnecessary_generator_set( checker: &Checker, - expr: &rustpython_ast::Expr, + expr: &ruff_python_ast::Expr, ) -> Result { let locator = checker.locator(); let stylist = checker.stylist(); @@ -98,7 +98,7 @@ pub(crate) fn fix_unnecessary_generator_set( /// range(3)}`. pub(crate) fn fix_unnecessary_generator_dict( checker: &Checker, - expr: &rustpython_ast::Expr, + expr: &ruff_python_ast::Expr, ) -> Result { let locator = checker.locator(); let stylist = checker.stylist(); @@ -141,7 +141,7 @@ pub(crate) fn fix_unnecessary_generator_dict( /// (C403) Convert `set([x for x in y])` to `{x for x in y}`. pub(crate) fn fix_unnecessary_list_comprehension_set( checker: &Checker, - expr: &rustpython_ast::Expr, + expr: &ruff_python_ast::Expr, ) -> Result { let locator = checker.locator(); let stylist = checker.stylist(); @@ -177,7 +177,7 @@ pub(crate) fn fix_unnecessary_list_comprehension_set( /// range(3)}`. pub(crate) fn fix_unnecessary_list_comprehension_dict( checker: &Checker, - expr: &rustpython_ast::Expr, + expr: &ruff_python_ast::Expr, ) -> Result { let locator = checker.locator(); let stylist = checker.stylist(); @@ -264,7 +264,7 @@ fn drop_trailing_comma<'a>( /// (C405) Convert `set((1, 2))` to `{1, 2}`. pub(crate) fn fix_unnecessary_literal_set( checker: &Checker, - expr: &rustpython_ast::Expr, + expr: &ruff_python_ast::Expr, ) -> Result { let locator = checker.locator(); let stylist = checker.stylist(); @@ -308,7 +308,7 @@ pub(crate) fn fix_unnecessary_literal_set( /// (C406) Convert `dict([(1, 2)])` to `{1: 2}`. pub(crate) fn fix_unnecessary_literal_dict( checker: &Checker, - expr: &rustpython_ast::Expr, + expr: &ruff_python_ast::Expr, ) -> Result { let locator = checker.locator(); let stylist = checker.stylist(); @@ -374,7 +374,7 @@ pub(crate) fn fix_unnecessary_literal_dict( /// (C408) pub(crate) fn fix_unnecessary_collection_call( checker: &Checker, - expr: &rustpython_ast::Expr, + expr: &ruff_python_ast::Expr, ) -> Result { enum Collection { Tuple, @@ -535,7 +535,7 @@ fn pad_expression(content: String, range: TextRange, checker: &Checker) -> Strin pub(crate) fn fix_unnecessary_literal_within_tuple_call( locator: &Locator, stylist: &Stylist, - expr: &rustpython_ast::Expr, + expr: &ruff_python_ast::Expr, ) -> Result { let module_text = locator.slice(expr.range()); let mut tree = match_expression(module_text)?; @@ -585,7 +585,7 @@ pub(crate) fn fix_unnecessary_literal_within_tuple_call( pub(crate) fn fix_unnecessary_literal_within_list_call( locator: &Locator, stylist: &Stylist, - expr: &rustpython_ast::Expr, + expr: &ruff_python_ast::Expr, ) -> Result { let module_text = locator.slice(expr.range()); let mut tree = match_expression(module_text)?; @@ -637,7 +637,7 @@ pub(crate) fn fix_unnecessary_literal_within_list_call( pub(crate) fn fix_unnecessary_list_call( locator: &Locator, stylist: &Stylist, - expr: &rustpython_ast::Expr, + expr: &ruff_python_ast::Expr, ) -> Result { // Expr(Call(List|Tuple)))) -> Expr(List|Tuple))) let module_text = locator.slice(expr.range()); @@ -659,7 +659,7 @@ pub(crate) fn fix_unnecessary_list_call( pub(crate) fn fix_unnecessary_call_around_sorted( locator: &Locator, stylist: &Stylist, - expr: &rustpython_ast::Expr, + expr: &ruff_python_ast::Expr, ) -> Result { let module_text = locator.slice(expr.range()); let mut tree = match_expression(module_text)?; @@ -771,7 +771,7 @@ pub(crate) fn fix_unnecessary_call_around_sorted( pub(crate) fn fix_unnecessary_double_cast_or_process( locator: &Locator, stylist: &Stylist, - expr: &rustpython_ast::Expr, + expr: &ruff_python_ast::Expr, ) -> Result { let module_text = locator.slice(expr.range()); let mut tree = match_expression(module_text)?; @@ -801,7 +801,7 @@ pub(crate) fn fix_unnecessary_double_cast_or_process( pub(crate) fn fix_unnecessary_comprehension( locator: &Locator, stylist: &Stylist, - expr: &rustpython_ast::Expr, + expr: &ruff_python_ast::Expr, ) -> Result { let module_text = locator.slice(expr.range()); let mut tree = match_expression(module_text)?; @@ -888,8 +888,8 @@ pub(crate) fn fix_unnecessary_comprehension( pub(crate) fn fix_unnecessary_map( locator: &Locator, stylist: &Stylist, - expr: &rustpython_ast::Expr, - parent: Option<&rustpython_ast::Expr>, + expr: &ruff_python_ast::Expr, + parent: Option<&ruff_python_ast::Expr>, object_type: ObjectType, ) -> Result { let module_text = locator.slice(expr.range()); @@ -1018,7 +1018,7 @@ pub(crate) fn fix_unnecessary_map( // If the expression is embedded in an f-string, surround it with spaces to avoid // syntax errors. if matches!(object_type, ObjectType::Set | ObjectType::Dict) { - if parent.map_or(false, rustpython_ast::Expr::is_formatted_value_expr) { + if parent.map_or(false, ruff_python_ast::Expr::is_formatted_value_expr) { content = format!(" {content} "); } } @@ -1033,7 +1033,7 @@ pub(crate) fn fix_unnecessary_map( pub(crate) fn fix_unnecessary_literal_within_dict_call( locator: &Locator, stylist: &Stylist, - expr: &rustpython_ast::Expr, + expr: &ruff_python_ast::Expr, ) -> Result { let module_text = locator.slice(expr.range()); let mut tree = match_expression(module_text)?; @@ -1052,7 +1052,7 @@ pub(crate) fn fix_unnecessary_literal_within_dict_call( pub(crate) fn fix_unnecessary_comprehension_any_all( locator: &Locator, stylist: &Stylist, - expr: &rustpython_ast::Expr, + expr: &ruff_python_ast::Expr, ) -> Result { // Expr(ListComp) -> Expr(GeneratorExp) let module_text = locator.slice(expr.range()); diff --git a/crates/ruff/src/rules/flake8_comprehensions/rules/helpers.rs b/crates/ruff/src/rules/flake8_comprehensions/rules/helpers.rs index 8b72c642ec..af748a5f68 100644 --- a/crates/ruff/src/rules/flake8_comprehensions/rules/helpers.rs +++ b/crates/ruff/src/rules/flake8_comprehensions/rules/helpers.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Expr, Keyword}; +use ruff_python_ast::{self as ast, Expr, Keyword}; pub(super) fn expr_name(func: &Expr) -> Option<&str> { if let Expr::Name(ast::ExprName { id, .. }) = func { diff --git a/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_call_around_sorted.rs b/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_call_around_sorted.rs index c16dfad104..6757c96aa3 100644 --- a/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_call_around_sorted.rs +++ b/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_call_around_sorted.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Expr, Ranged}; +use ruff_python_ast::{self as ast, Expr, Ranged}; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_collection_call.rs b/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_collection_call.rs index 6b1bf1dbae..444a1856e1 100644 --- a/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_collection_call.rs +++ b/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_collection_call.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Expr, Keyword, Ranged}; +use ruff_python_ast::{Expr, Keyword, Ranged}; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_comprehension.rs b/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_comprehension.rs index 568097b227..c9a7887dab 100644 --- a/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_comprehension.rs +++ b/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_comprehension.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Comprehension, Expr, Ranged}; +use ruff_python_ast::{self as ast, Comprehension, Expr, Ranged}; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_comprehension_any_all.rs b/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_comprehension_any_all.rs index f34e601239..b59f68a1c5 100644 --- a/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_comprehension_any_all.rs +++ b/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_comprehension_any_all.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Expr, Keyword, Ranged}; +use ruff_python_ast::{self as ast, Expr, Keyword, Ranged}; use ruff_diagnostics::Violation; use ruff_diagnostics::{AutofixKind, Diagnostic}; diff --git a/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_double_cast_or_process.rs b/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_double_cast_or_process.rs index 30f63dd04d..8f399460be 100644 --- a/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_double_cast_or_process.rs +++ b/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_double_cast_or_process.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Expr, Keyword, Ranged}; +use ruff_python_ast::{self as ast, Expr, Keyword, Ranged}; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_generator_dict.rs b/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_generator_dict.rs index f81a28c194..3695edfa8b 100644 --- a/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_generator_dict.rs +++ b/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_generator_dict.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Expr, Keyword, Ranged}; +use ruff_python_ast::{self as ast, Expr, Keyword, Ranged}; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_generator_list.rs b/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_generator_list.rs index 5fc61a659f..53fa7f9cd3 100644 --- a/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_generator_list.rs +++ b/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_generator_list.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Expr, Keyword, Ranged}; +use ruff_python_ast::{Expr, Keyword, Ranged}; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_generator_set.rs b/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_generator_set.rs index 90e247f74f..93b1c0a2c2 100644 --- a/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_generator_set.rs +++ b/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_generator_set.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Expr, Keyword, Ranged}; +use ruff_python_ast::{Expr, Keyword, Ranged}; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_list_call.rs b/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_list_call.rs index 3487406f46..ab23652ea7 100644 --- a/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_list_call.rs +++ b/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_list_call.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Expr, Ranged}; +use ruff_python_ast::{Expr, Ranged}; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_list_comprehension_dict.rs b/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_list_comprehension_dict.rs index da21ddd459..9bc396a340 100644 --- a/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_list_comprehension_dict.rs +++ b/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_list_comprehension_dict.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Expr, Keyword, Ranged}; +use ruff_python_ast::{self as ast, Expr, Keyword, Ranged}; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_list_comprehension_set.rs b/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_list_comprehension_set.rs index 1de2900e03..7f30732a6c 100644 --- a/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_list_comprehension_set.rs +++ b/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_list_comprehension_set.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Expr, Keyword, Ranged}; +use ruff_python_ast::{Expr, Keyword, Ranged}; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_literal_dict.rs b/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_literal_dict.rs index 9fa4875be8..31a30a7624 100644 --- a/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_literal_dict.rs +++ b/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_literal_dict.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Expr, Keyword, Ranged}; +use ruff_python_ast::{self as ast, Expr, Keyword, Ranged}; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_literal_set.rs b/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_literal_set.rs index 3fcefb9bc7..31fbe2c27f 100644 --- a/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_literal_set.rs +++ b/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_literal_set.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Expr, Keyword, Ranged}; +use ruff_python_ast::{Expr, Keyword, Ranged}; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_literal_within_dict_call.rs b/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_literal_within_dict_call.rs index 1215b5d3e2..cd9a1f8005 100644 --- a/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_literal_within_dict_call.rs +++ b/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_literal_within_dict_call.rs @@ -1,6 +1,6 @@ use std::fmt; -use rustpython_ast::{Expr, Keyword, Ranged}; +use ruff_python_ast::{Expr, Keyword, Ranged}; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_literal_within_list_call.rs b/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_literal_within_list_call.rs index 9d6d4c138b..bfda74657a 100644 --- a/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_literal_within_list_call.rs +++ b/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_literal_within_list_call.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Expr, Keyword, Ranged}; +use ruff_python_ast::{Expr, Keyword, Ranged}; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_literal_within_tuple_call.rs b/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_literal_within_tuple_call.rs index d1afdb9af2..8d04c8cb22 100644 --- a/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_literal_within_tuple_call.rs +++ b/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_literal_within_tuple_call.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Expr, Keyword, Ranged}; +use ruff_python_ast::{Expr, Keyword, Ranged}; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_map.rs b/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_map.rs index 41a1a7af20..d6a6e6b9e4 100644 --- a/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_map.rs +++ b/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_map.rs @@ -1,6 +1,6 @@ use std::fmt; -use rustpython_ast::{self as ast, Arguments, Expr, ExprContext, Ranged, Stmt}; +use ruff_python_ast::{self as ast, Arguments, Expr, ExprContext, Ranged, Stmt}; use ruff_diagnostics::{AutofixKind, Violation}; use ruff_diagnostics::{Diagnostic, Fix}; diff --git a/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_subscript_reversal.rs b/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_subscript_reversal.rs index 9e3c7badf5..60076232c4 100644 --- a/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_subscript_reversal.rs +++ b/crates/ruff/src/rules/flake8_comprehensions/rules/unnecessary_subscript_reversal.rs @@ -1,5 +1,5 @@ use num_bigint::BigInt; -use rustpython_ast::{self as ast, Constant, Expr, Ranged, UnaryOp}; +use ruff_python_ast::{self as ast, Constant, Expr, Ranged, UnaryOp}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_datetimez/rules/call_date_fromtimestamp.rs b/crates/ruff/src/rules/flake8_datetimez/rules/call_date_fromtimestamp.rs index 9082b721f3..1d439d6e67 100644 --- a/crates/ruff/src/rules/flake8_datetimez/rules/call_date_fromtimestamp.rs +++ b/crates/ruff/src/rules/flake8_datetimez/rules/call_date_fromtimestamp.rs @@ -1,5 +1,5 @@ +use ruff_python_ast::Expr; use ruff_text_size::TextRange; -use rustpython_ast::Expr; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_datetimez/rules/call_date_today.rs b/crates/ruff/src/rules/flake8_datetimez/rules/call_date_today.rs index 2010d0a15e..9dfbfeed16 100644 --- a/crates/ruff/src/rules/flake8_datetimez/rules/call_date_today.rs +++ b/crates/ruff/src/rules/flake8_datetimez/rules/call_date_today.rs @@ -1,5 +1,5 @@ +use ruff_python_ast::Expr; use ruff_text_size::TextRange; -use rustpython_ast::Expr; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_datetimez/rules/call_datetime_fromtimestamp.rs b/crates/ruff/src/rules/flake8_datetimez/rules/call_datetime_fromtimestamp.rs index 7023501d28..c65654e368 100644 --- a/crates/ruff/src/rules/flake8_datetimez/rules/call_datetime_fromtimestamp.rs +++ b/crates/ruff/src/rules/flake8_datetimez/rules/call_datetime_fromtimestamp.rs @@ -1,5 +1,5 @@ +use ruff_python_ast::{Expr, Keyword}; use ruff_text_size::TextRange; -use rustpython_ast::{Expr, Keyword}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_datetimez/rules/call_datetime_now_without_tzinfo.rs b/crates/ruff/src/rules/flake8_datetimez/rules/call_datetime_now_without_tzinfo.rs index 5a06e977f8..18b34fe553 100644 --- a/crates/ruff/src/rules/flake8_datetimez/rules/call_datetime_now_without_tzinfo.rs +++ b/crates/ruff/src/rules/flake8_datetimez/rules/call_datetime_now_without_tzinfo.rs @@ -1,5 +1,5 @@ +use ruff_python_ast::{Expr, Keyword}; use ruff_text_size::TextRange; -use rustpython_ast::{Expr, Keyword}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_datetimez/rules/call_datetime_strptime_without_zone.rs b/crates/ruff/src/rules/flake8_datetimez/rules/call_datetime_strptime_without_zone.rs index 216adc3b72..d8f428d3c6 100644 --- a/crates/ruff/src/rules/flake8_datetimez/rules/call_datetime_strptime_without_zone.rs +++ b/crates/ruff/src/rules/flake8_datetimez/rules/call_datetime_strptime_without_zone.rs @@ -1,5 +1,5 @@ +use ruff_python_ast::{self as ast, Constant, Expr}; use ruff_text_size::TextRange; -use rustpython_ast::{self as ast, Constant, Expr}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_datetimez/rules/call_datetime_today.rs b/crates/ruff/src/rules/flake8_datetimez/rules/call_datetime_today.rs index ea6a5cade4..684acc6b5a 100644 --- a/crates/ruff/src/rules/flake8_datetimez/rules/call_datetime_today.rs +++ b/crates/ruff/src/rules/flake8_datetimez/rules/call_datetime_today.rs @@ -1,5 +1,5 @@ +use ruff_python_ast::Expr; use ruff_text_size::TextRange; -use rustpython_ast::Expr; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_datetimez/rules/call_datetime_utcfromtimestamp.rs b/crates/ruff/src/rules/flake8_datetimez/rules/call_datetime_utcfromtimestamp.rs index 1384ac3eae..fe14de1f72 100644 --- a/crates/ruff/src/rules/flake8_datetimez/rules/call_datetime_utcfromtimestamp.rs +++ b/crates/ruff/src/rules/flake8_datetimez/rules/call_datetime_utcfromtimestamp.rs @@ -1,5 +1,5 @@ +use ruff_python_ast::Expr; use ruff_text_size::TextRange; -use rustpython_ast::Expr; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_datetimez/rules/call_datetime_utcnow.rs b/crates/ruff/src/rules/flake8_datetimez/rules/call_datetime_utcnow.rs index c011d643c6..3c77bdef7a 100644 --- a/crates/ruff/src/rules/flake8_datetimez/rules/call_datetime_utcnow.rs +++ b/crates/ruff/src/rules/flake8_datetimez/rules/call_datetime_utcnow.rs @@ -1,5 +1,5 @@ +use ruff_python_ast::Expr; use ruff_text_size::TextRange; -use rustpython_ast::Expr; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_datetimez/rules/call_datetime_without_tzinfo.rs b/crates/ruff/src/rules/flake8_datetimez/rules/call_datetime_without_tzinfo.rs index 963a07d757..8804a1b9ab 100644 --- a/crates/ruff/src/rules/flake8_datetimez/rules/call_datetime_without_tzinfo.rs +++ b/crates/ruff/src/rules/flake8_datetimez/rules/call_datetime_without_tzinfo.rs @@ -1,5 +1,5 @@ +use ruff_python_ast::{Expr, Keyword}; use ruff_text_size::TextRange; -use rustpython_ast::{Expr, Keyword}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_datetimez/rules/helpers.rs b/crates/ruff/src/rules/flake8_datetimez/rules/helpers.rs index 30e13958c4..1d08a627fd 100644 --- a/crates/ruff/src/rules/flake8_datetimez/rules/helpers.rs +++ b/crates/ruff/src/rules/flake8_datetimez/rules/helpers.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Expr, ExprAttribute}; +use ruff_python_ast::{Expr, ExprAttribute}; use crate::checkers::ast::Checker; diff --git a/crates/ruff/src/rules/flake8_debugger/rules/debugger.rs b/crates/ruff/src/rules/flake8_debugger/rules/debugger.rs index 51a7dc6435..86f3962ab4 100644 --- a/crates/ruff/src/rules/flake8_debugger/rules/debugger.rs +++ b/crates/ruff/src/rules/flake8_debugger/rules/debugger.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Expr, Ranged, Stmt}; +use ruff_python_ast::{Expr, Ranged, Stmt}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_django/rules/all_with_model_form.rs b/crates/ruff/src/rules/flake8_django/rules/all_with_model_form.rs index 1140c908da..6ac8525032 100644 --- a/crates/ruff/src/rules/flake8_django/rules/all_with_model_form.rs +++ b/crates/ruff/src/rules/flake8_django/rules/all_with_model_form.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Constant, Expr, Ranged, Stmt}; +use ruff_python_ast::{self as ast, Constant, Expr, Ranged, Stmt}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_django/rules/exclude_with_model_form.rs b/crates/ruff/src/rules/flake8_django/rules/exclude_with_model_form.rs index fecc81a71e..f56dd161ed 100644 --- a/crates/ruff/src/rules/flake8_django/rules/exclude_with_model_form.rs +++ b/crates/ruff/src/rules/flake8_django/rules/exclude_with_model_form.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Expr, Ranged, Stmt}; +use ruff_python_ast::{self as ast, Expr, Ranged, Stmt}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_django/rules/helpers.rs b/crates/ruff/src/rules/flake8_django/rules/helpers.rs index 2052445b33..2f7ca2408d 100644 --- a/crates/ruff/src/rules/flake8_django/rules/helpers.rs +++ b/crates/ruff/src/rules/flake8_django/rules/helpers.rs @@ -1,4 +1,4 @@ -use rustpython_ast::Expr; +use ruff_python_ast::Expr; use ruff_python_semantic::SemanticModel; diff --git a/crates/ruff/src/rules/flake8_django/rules/locals_in_render_function.rs b/crates/ruff/src/rules/flake8_django/rules/locals_in_render_function.rs index b3cf6cb9f5..a61866c8d8 100644 --- a/crates/ruff/src/rules/flake8_django/rules/locals_in_render_function.rs +++ b/crates/ruff/src/rules/flake8_django/rules/locals_in_render_function.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Expr, Keyword, Ranged}; +use ruff_python_ast::{self as ast, Expr, Keyword, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_django/rules/model_without_dunder_str.rs b/crates/ruff/src/rules/flake8_django/rules/model_without_dunder_str.rs index 020799b27b..f34b0b2e97 100644 --- a/crates/ruff/src/rules/flake8_django/rules/model_without_dunder_str.rs +++ b/crates/ruff/src/rules/flake8_django/rules/model_without_dunder_str.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Expr, Ranged, Stmt}; +use ruff_python_ast::{self as ast, Expr, Ranged, Stmt}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_django/rules/non_leading_receiver_decorator.rs b/crates/ruff/src/rules/flake8_django/rules/non_leading_receiver_decorator.rs index 7dce1671c0..75c058255b 100644 --- a/crates/ruff/src/rules/flake8_django/rules/non_leading_receiver_decorator.rs +++ b/crates/ruff/src/rules/flake8_django/rules/non_leading_receiver_decorator.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Decorator, Ranged}; +use ruff_python_ast::{Decorator, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_django/rules/nullable_model_string_field.rs b/crates/ruff/src/rules/flake8_django/rules/nullable_model_string_field.rs index 6621f55e2b..3521b20601 100644 --- a/crates/ruff/src/rules/flake8_django/rules/nullable_model_string_field.rs +++ b/crates/ruff/src/rules/flake8_django/rules/nullable_model_string_field.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Expr, Ranged, Stmt}; +use ruff_python_ast::{self as ast, Expr, Ranged, Stmt}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_django/rules/unordered_body_content_in_model.rs b/crates/ruff/src/rules/flake8_django/rules/unordered_body_content_in_model.rs index a5cbde47dc..f01961cf6a 100644 --- a/crates/ruff/src/rules/flake8_django/rules/unordered_body_content_in_model.rs +++ b/crates/ruff/src/rules/flake8_django/rules/unordered_body_content_in_model.rs @@ -1,6 +1,6 @@ use std::fmt; -use rustpython_ast::{self as ast, Expr, Ranged, Stmt}; +use ruff_python_ast::{self as ast, Expr, Ranged, Stmt}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_errmsg/rules/string_in_exception.rs b/crates/ruff/src/rules/flake8_errmsg/rules/string_in_exception.rs index 099f18107b..ada85476be 100644 --- a/crates/ruff/src/rules/flake8_errmsg/rules/string_in_exception.rs +++ b/crates/ruff/src/rules/flake8_errmsg/rules/string_in_exception.rs @@ -1,5 +1,5 @@ +use ruff_python_ast::{self as ast, Constant, Expr, ExprContext, Ranged, Stmt}; use ruff_text_size::TextRange; -use rustpython_ast::{self as ast, Constant, Expr, ExprContext, Ranged, Stmt}; use ruff_diagnostics::{AutofixKind, Diagnostic, Edit, Fix, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_executable/rules/mod.rs b/crates/ruff/src/rules/flake8_executable/rules/mod.rs index de62b83b21..b38e64235f 100644 --- a/crates/ruff/src/rules/flake8_executable/rules/mod.rs +++ b/crates/ruff/src/rules/flake8_executable/rules/mod.rs @@ -1,7 +1,7 @@ use std::path::Path; -use rustpython_parser::lexer::LexResult; -use rustpython_parser::Tok; +use ruff_python_parser::lexer::LexResult; +use ruff_python_parser::Tok; use ruff_diagnostics::Diagnostic; use ruff_source_file::Locator; diff --git a/crates/ruff/src/rules/flake8_future_annotations/rules/future_required_type_annotation.rs b/crates/ruff/src/rules/flake8_future_annotations/rules/future_required_type_annotation.rs index e988590dfc..04835fad6e 100644 --- a/crates/ruff/src/rules/flake8_future_annotations/rules/future_required_type_annotation.rs +++ b/crates/ruff/src/rules/flake8_future_annotations/rules/future_required_type_annotation.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Expr, Ranged}; +use ruff_python_ast::{Expr, Ranged}; use std::fmt; use ruff_diagnostics::{Diagnostic, Violation}; diff --git a/crates/ruff/src/rules/flake8_future_annotations/rules/future_rewritable_type_annotation.rs b/crates/ruff/src/rules/flake8_future_annotations/rules/future_rewritable_type_annotation.rs index 127652a3c5..df0998ddd4 100644 --- a/crates/ruff/src/rules/flake8_future_annotations/rules/future_rewritable_type_annotation.rs +++ b/crates/ruff/src/rules/flake8_future_annotations/rules/future_rewritable_type_annotation.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Expr, Ranged}; +use ruff_python_ast::{Expr, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_gettext/mod.rs b/crates/ruff/src/rules/flake8_gettext/mod.rs index d5dd64e753..3f5f9be91c 100644 --- a/crates/ruff/src/rules/flake8_gettext/mod.rs +++ b/crates/ruff/src/rules/flake8_gettext/mod.rs @@ -1,5 +1,5 @@ //! Rules from [flake8-gettext](https://pypi.org/project/flake8-gettext/). -use rustpython_ast::{self as ast, Expr}; +use ruff_python_ast::{self as ast, Expr}; pub(crate) mod rules; pub mod settings; diff --git a/crates/ruff/src/rules/flake8_gettext/rules/f_string_in_gettext_func_call.rs b/crates/ruff/src/rules/flake8_gettext/rules/f_string_in_gettext_func_call.rs index d911d38007..ed781aeb12 100644 --- a/crates/ruff/src/rules/flake8_gettext/rules/f_string_in_gettext_func_call.rs +++ b/crates/ruff/src/rules/flake8_gettext/rules/f_string_in_gettext_func_call.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Expr, Ranged}; +use ruff_python_ast::{Expr, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_gettext/rules/format_in_gettext_func_call.rs b/crates/ruff/src/rules/flake8_gettext/rules/format_in_gettext_func_call.rs index 36433620b2..883476fd13 100644 --- a/crates/ruff/src/rules/flake8_gettext/rules/format_in_gettext_func_call.rs +++ b/crates/ruff/src/rules/flake8_gettext/rules/format_in_gettext_func_call.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Expr, Ranged}; +use ruff_python_ast::{self as ast, Expr, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_gettext/rules/printf_in_gettext_func_call.rs b/crates/ruff/src/rules/flake8_gettext/rules/printf_in_gettext_func_call.rs index 91afdcfe10..14396ab18a 100644 --- a/crates/ruff/src/rules/flake8_gettext/rules/printf_in_gettext_func_call.rs +++ b/crates/ruff/src/rules/flake8_gettext/rules/printf_in_gettext_func_call.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Constant, Expr, Operator, Ranged}; +use ruff_python_ast::{self as ast, Constant, Expr, Operator, Ranged}; use crate::checkers::ast::Checker; use ruff_diagnostics::{Diagnostic, Violation}; diff --git a/crates/ruff/src/rules/flake8_implicit_str_concat/rules/explicit.rs b/crates/ruff/src/rules/flake8_implicit_str_concat/rules/explicit.rs index 64e140b8c5..54629f288d 100644 --- a/crates/ruff/src/rules/flake8_implicit_str_concat/rules/explicit.rs +++ b/crates/ruff/src/rules/flake8_implicit_str_concat/rules/explicit.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Constant, Expr, Operator, Ranged}; +use ruff_python_ast::{self as ast, Constant, Expr, Operator, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_implicit_str_concat/rules/implicit.rs b/crates/ruff/src/rules/flake8_implicit_str_concat/rules/implicit.rs index 072eb7a7dd..60d8ba496f 100644 --- a/crates/ruff/src/rules/flake8_implicit_str_concat/rules/implicit.rs +++ b/crates/ruff/src/rules/flake8_implicit_str_concat/rules/implicit.rs @@ -1,6 +1,6 @@ use itertools::Itertools; +use ruff_python_parser::lexer::LexResult; use ruff_text_size::TextRange; -use rustpython_parser::lexer::LexResult; use ruff_diagnostics::{AutofixKind, Diagnostic, Edit, Fix, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_import_conventions/rules/banned_import_alias.rs b/crates/ruff/src/rules/flake8_import_conventions/rules/banned_import_alias.rs index 6a1cae7ea4..ef20772a1c 100644 --- a/crates/ruff/src/rules/flake8_import_conventions/rules/banned_import_alias.rs +++ b/crates/ruff/src/rules/flake8_import_conventions/rules/banned_import_alias.rs @@ -1,5 +1,5 @@ +use ruff_python_ast::{Ranged, Stmt}; use rustc_hash::FxHashMap; -use rustpython_ast::{Ranged, Stmt}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_import_conventions/rules/banned_import_from.rs b/crates/ruff/src/rules/flake8_import_conventions/rules/banned_import_from.rs index 7e858443eb..7c76fe31c9 100644 --- a/crates/ruff/src/rules/flake8_import_conventions/rules/banned_import_from.rs +++ b/crates/ruff/src/rules/flake8_import_conventions/rules/banned_import_from.rs @@ -1,5 +1,5 @@ +use ruff_python_ast::{Ranged, Stmt}; use rustc_hash::FxHashSet; -use rustpython_ast::{Ranged, Stmt}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_logging_format/rules/logging_call.rs b/crates/ruff/src/rules/flake8_logging_format/rules/logging_call.rs index 5cbf54644a..b3d9125cb6 100644 --- a/crates/ruff/src/rules/flake8_logging_format/rules/logging_call.rs +++ b/crates/ruff/src/rules/flake8_logging_format/rules/logging_call.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Constant, Expr, Keyword, Operator, Ranged}; +use ruff_python_ast::{self as ast, Constant, Expr, Keyword, Operator, Ranged}; use ruff_diagnostics::{Diagnostic, Edit, Fix}; use ruff_python_ast::helpers::{find_keyword, CallArguments}; diff --git a/crates/ruff/src/rules/flake8_pie/rules/duplicate_class_field_definition.rs b/crates/ruff/src/rules/flake8_pie/rules/duplicate_class_field_definition.rs index fabfe5bf9a..34cd5190b0 100644 --- a/crates/ruff/src/rules/flake8_pie/rules/duplicate_class_field_definition.rs +++ b/crates/ruff/src/rules/flake8_pie/rules/duplicate_class_field_definition.rs @@ -1,5 +1,5 @@ +use ruff_python_ast::{self as ast, Expr, Ranged, Stmt}; use rustc_hash::FxHashSet; -use rustpython_ast::{self as ast, Expr, Ranged, Stmt}; use ruff_diagnostics::Diagnostic; use ruff_diagnostics::{AlwaysAutofixableViolation, Fix}; diff --git a/crates/ruff/src/rules/flake8_pie/rules/multiple_starts_ends_with.rs b/crates/ruff/src/rules/flake8_pie/rules/multiple_starts_ends_with.rs index 597877cadc..3050bbc2bd 100644 --- a/crates/ruff/src/rules/flake8_pie/rules/multiple_starts_ends_with.rs +++ b/crates/ruff/src/rules/flake8_pie/rules/multiple_starts_ends_with.rs @@ -5,7 +5,7 @@ use itertools::Either::{Left, Right}; use ruff_text_size::TextRange; -use rustpython_ast::{self as ast, BoolOp, Expr, ExprContext, Identifier, Ranged}; +use ruff_python_ast::{self as ast, BoolOp, Expr, ExprContext, Identifier, Ranged}; use ruff_diagnostics::AlwaysAutofixableViolation; use ruff_diagnostics::{Diagnostic, Edit, Fix}; diff --git a/crates/ruff/src/rules/flake8_pie/rules/no_unnecessary_pass.rs b/crates/ruff/src/rules/flake8_pie/rules/no_unnecessary_pass.rs index 6257f98772..ee7fa6acfc 100644 --- a/crates/ruff/src/rules/flake8_pie/rules/no_unnecessary_pass.rs +++ b/crates/ruff/src/rules/flake8_pie/rules/no_unnecessary_pass.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Ranged, Stmt}; +use ruff_python_ast::{Ranged, Stmt}; use ruff_diagnostics::AlwaysAutofixableViolation; use ruff_diagnostics::{Diagnostic, Edit, Fix}; diff --git a/crates/ruff/src/rules/flake8_pie/rules/non_unique_enums.rs b/crates/ruff/src/rules/flake8_pie/rules/non_unique_enums.rs index 7fa7a13038..81ed597a39 100644 --- a/crates/ruff/src/rules/flake8_pie/rules/non_unique_enums.rs +++ b/crates/ruff/src/rules/flake8_pie/rules/non_unique_enums.rs @@ -1,5 +1,5 @@ +use ruff_python_ast::{self as ast, Expr, Ranged, Stmt}; use rustc_hash::FxHashSet; -use rustpython_ast::{self as ast, Expr, Ranged, Stmt}; use ruff_diagnostics::Diagnostic; use ruff_diagnostics::Violation; diff --git a/crates/ruff/src/rules/flake8_pie/rules/reimplemented_list_builtin.rs b/crates/ruff/src/rules/flake8_pie/rules/reimplemented_list_builtin.rs index f68840791f..fc1348672e 100644 --- a/crates/ruff/src/rules/flake8_pie/rules/reimplemented_list_builtin.rs +++ b/crates/ruff/src/rules/flake8_pie/rules/reimplemented_list_builtin.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Expr, ExprLambda, Ranged}; +use ruff_python_ast::{self as ast, Expr, ExprLambda, Ranged}; use ruff_diagnostics::{AutofixKind, Violation}; use ruff_diagnostics::{Diagnostic, Edit, Fix}; diff --git a/crates/ruff/src/rules/flake8_pie/rules/unnecessary_dict_kwargs.rs b/crates/ruff/src/rules/flake8_pie/rules/unnecessary_dict_kwargs.rs index 667dd7034a..42b24fcb71 100644 --- a/crates/ruff/src/rules/flake8_pie/rules/unnecessary_dict_kwargs.rs +++ b/crates/ruff/src/rules/flake8_pie/rules/unnecessary_dict_kwargs.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Constant, Expr, Keyword, Ranged}; +use ruff_python_ast::{self as ast, Constant, Expr, Keyword, Ranged}; use ruff_diagnostics::Diagnostic; use ruff_diagnostics::Violation; diff --git a/crates/ruff/src/rules/flake8_pie/rules/unnecessary_spread.rs b/crates/ruff/src/rules/flake8_pie/rules/unnecessary_spread.rs index 3b3d12a34d..ca8bf06920 100644 --- a/crates/ruff/src/rules/flake8_pie/rules/unnecessary_spread.rs +++ b/crates/ruff/src/rules/flake8_pie/rules/unnecessary_spread.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Expr, Ranged}; +use ruff_python_ast::{Expr, Ranged}; use ruff_diagnostics::Diagnostic; use ruff_diagnostics::Violation; diff --git a/crates/ruff/src/rules/flake8_print/rules/print_call.rs b/crates/ruff/src/rules/flake8_print/rules/print_call.rs index ee3dd247fc..7cc8dbf26f 100644 --- a/crates/ruff/src/rules/flake8_print/rules/print_call.rs +++ b/crates/ruff/src/rules/flake8_print/rules/print_call.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Expr, Keyword, Ranged}; +use ruff_python_ast::{Expr, Keyword, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_pyi/helpers.rs b/crates/ruff/src/rules/flake8_pyi/helpers.rs index 2db721cd45..25dde842e7 100644 --- a/crates/ruff/src/rules/flake8_pyi/helpers.rs +++ b/crates/ruff/src/rules/flake8_pyi/helpers.rs @@ -1,5 +1,5 @@ +use ruff_python_ast::{self as ast, Expr, Operator}; use ruff_python_semantic::SemanticModel; -use rustpython_ast::{self as ast, Expr, Operator}; /// Traverse a "union" type annotation, applying `func` to each union member. /// Supports traversal of `Union` and `|` union expressions. diff --git a/crates/ruff/src/rules/flake8_pyi/rules/any_eq_ne_annotation.rs b/crates/ruff/src/rules/flake8_pyi/rules/any_eq_ne_annotation.rs index c7d1c910c0..4ceb91ccc4 100644 --- a/crates/ruff/src/rules/flake8_pyi/rules/any_eq_ne_annotation.rs +++ b/crates/ruff/src/rules/flake8_pyi/rules/any_eq_ne_annotation.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Arguments, Ranged}; +use ruff_python_ast::{Arguments, Ranged}; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Edit, Fix}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_pyi/rules/bad_version_info_comparison.rs b/crates/ruff/src/rules/flake8_pyi/rules/bad_version_info_comparison.rs index f635b84989..751f2b5c63 100644 --- a/crates/ruff/src/rules/flake8_pyi/rules/bad_version_info_comparison.rs +++ b/crates/ruff/src/rules/flake8_pyi/rules/bad_version_info_comparison.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, CmpOp, Expr, Ranged}; +use ruff_python_ast::{self as ast, CmpOp, Expr, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_pyi/rules/collections_named_tuple.rs b/crates/ruff/src/rules/flake8_pyi/rules/collections_named_tuple.rs index 02dfc81853..04049bbfe7 100644 --- a/crates/ruff/src/rules/flake8_pyi/rules/collections_named_tuple.rs +++ b/crates/ruff/src/rules/flake8_pyi/rules/collections_named_tuple.rs @@ -1,8 +1,8 @@ -use rustpython_ast::Expr; +use ruff_python_ast::Expr; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; -use rustpython_ast::Ranged; +use ruff_python_ast::Ranged; use crate::checkers::ast::Checker; diff --git a/crates/ruff/src/rules/flake8_pyi/rules/complex_assignment_in_stub.rs b/crates/ruff/src/rules/flake8_pyi/rules/complex_assignment_in_stub.rs index 38b29c3497..122ec0b44a 100644 --- a/crates/ruff/src/rules/flake8_pyi/rules/complex_assignment_in_stub.rs +++ b/crates/ruff/src/rules/flake8_pyi/rules/complex_assignment_in_stub.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Expr, StmtAssign}; +use ruff_python_ast::{Expr, StmtAssign}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_pyi/rules/complex_if_statement_in_stub.rs b/crates/ruff/src/rules/flake8_pyi/rules/complex_if_statement_in_stub.rs index 858bd6b477..f83bc925df 100644 --- a/crates/ruff/src/rules/flake8_pyi/rules/complex_if_statement_in_stub.rs +++ b/crates/ruff/src/rules/flake8_pyi/rules/complex_if_statement_in_stub.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Expr, Ranged}; +use ruff_python_ast::{self as ast, Expr, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_pyi/rules/docstring_in_stubs.rs b/crates/ruff/src/rules/flake8_pyi/rules/docstring_in_stubs.rs index bcc811bae7..2646ab9918 100644 --- a/crates/ruff/src/rules/flake8_pyi/rules/docstring_in_stubs.rs +++ b/crates/ruff/src/rules/flake8_pyi/rules/docstring_in_stubs.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Expr, Ranged}; +use ruff_python_ast::{Expr, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_pyi/rules/duplicate_union_member.rs b/crates/ruff/src/rules/flake8_pyi/rules/duplicate_union_member.rs index a058c16dd3..bba1ef58e2 100644 --- a/crates/ruff/src/rules/flake8_pyi/rules/duplicate_union_member.rs +++ b/crates/ruff/src/rules/flake8_pyi/rules/duplicate_union_member.rs @@ -1,5 +1,5 @@ +use ruff_python_ast::{self as ast, Expr, Ranged}; use rustc_hash::FxHashSet; -use rustpython_ast::{self as ast, Expr, Ranged}; use std::collections::HashSet; use crate::checkers::ast::Checker; diff --git a/crates/ruff/src/rules/flake8_pyi/rules/ellipsis_in_non_empty_class_body.rs b/crates/ruff/src/rules/flake8_pyi/rules/ellipsis_in_non_empty_class_body.rs index 7876d8a182..2462b2ad98 100644 --- a/crates/ruff/src/rules/flake8_pyi/rules/ellipsis_in_non_empty_class_body.rs +++ b/crates/ruff/src/rules/flake8_pyi/rules/ellipsis_in_non_empty_class_body.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Expr, ExprConstant, Ranged, Stmt, StmtExpr}; +use ruff_python_ast::{Expr, ExprConstant, Ranged, Stmt, StmtExpr}; use ruff_diagnostics::{AutofixKind, Diagnostic, Fix, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_pyi/rules/exit_annotations.rs b/crates/ruff/src/rules/flake8_pyi/rules/exit_annotations.rs index f1cd93f4b1..185f242002 100644 --- a/crates/ruff/src/rules/flake8_pyi/rules/exit_annotations.rs +++ b/crates/ruff/src/rules/flake8_pyi/rules/exit_annotations.rs @@ -1,6 +1,6 @@ use std::fmt::{Display, Formatter}; -use rustpython_ast::{ +use ruff_python_ast::{ ArgWithDefault, Arguments, Expr, ExprBinOp, ExprSubscript, ExprTuple, Identifier, Operator, Ranged, }; diff --git a/crates/ruff/src/rules/flake8_pyi/rules/future_annotations_in_stub.rs b/crates/ruff/src/rules/flake8_pyi/rules/future_annotations_in_stub.rs index 5378a8d59d..deaae2b0f7 100644 --- a/crates/ruff/src/rules/flake8_pyi/rules/future_annotations_in_stub.rs +++ b/crates/ruff/src/rules/flake8_pyi/rules/future_annotations_in_stub.rs @@ -1,4 +1,4 @@ -use rustpython_ast::StmtImportFrom; +use ruff_python_ast::StmtImportFrom; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_pyi/rules/iter_method_return_iterable.rs b/crates/ruff/src/rules/flake8_pyi/rules/iter_method_return_iterable.rs index 9da3e110c6..e45b312d4d 100644 --- a/crates/ruff/src/rules/flake8_pyi/rules/iter_method_return_iterable.rs +++ b/crates/ruff/src/rules/flake8_pyi/rules/iter_method_return_iterable.rs @@ -1,10 +1,10 @@ -use rustpython_ast::{Ranged, Stmt}; -use rustpython_parser::ast; +use ruff_python_ast as ast; +use ruff_python_ast::{Ranged, Stmt}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; +use ruff_python_ast::Expr; use ruff_python_semantic::{Definition, Member, MemberKind}; -use rustpython_ast::Expr; use crate::checkers::ast::Checker; diff --git a/crates/ruff/src/rules/flake8_pyi/rules/no_return_argument_annotation.rs b/crates/ruff/src/rules/flake8_pyi/rules/no_return_argument_annotation.rs index 2bd4c95377..e4cafdbbcd 100644 --- a/crates/ruff/src/rules/flake8_pyi/rules/no_return_argument_annotation.rs +++ b/crates/ruff/src/rules/flake8_pyi/rules/no_return_argument_annotation.rs @@ -1,10 +1,10 @@ use std::fmt; -use rustpython_ast::Ranged; +use ruff_python_ast::Ranged; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; -use rustpython_ast::Arguments; +use ruff_python_ast::Arguments; use crate::checkers::ast::Checker; use crate::settings::types::PythonVersion::Py311; diff --git a/crates/ruff/src/rules/flake8_pyi/rules/non_empty_stub_body.rs b/crates/ruff/src/rules/flake8_pyi/rules/non_empty_stub_body.rs index d668953d50..b2bea54acb 100644 --- a/crates/ruff/src/rules/flake8_pyi/rules/non_empty_stub_body.rs +++ b/crates/ruff/src/rules/flake8_pyi/rules/non_empty_stub_body.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Constant, Expr, Ranged, Stmt}; +use ruff_python_ast::{self as ast, Constant, Expr, Ranged, Stmt}; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Edit, Fix}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_pyi/rules/non_self_return_type.rs b/crates/ruff/src/rules/flake8_pyi/rules/non_self_return_type.rs index f97b740c45..afa5088342 100644 --- a/crates/ruff/src/rules/flake8_pyi/rules/non_self_return_type.rs +++ b/crates/ruff/src/rules/flake8_pyi/rules/non_self_return_type.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Arguments, Decorator, Expr, Stmt}; +use ruff_python_ast::{self as ast, Arguments, Decorator, Expr, Stmt}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_pyi/rules/numeric_literal_too_long.rs b/crates/ruff/src/rules/flake8_pyi/rules/numeric_literal_too_long.rs index d4443ece65..1e594e8da8 100644 --- a/crates/ruff/src/rules/flake8_pyi/rules/numeric_literal_too_long.rs +++ b/crates/ruff/src/rules/flake8_pyi/rules/numeric_literal_too_long.rs @@ -1,5 +1,5 @@ +use ruff_python_ast::{Expr, Ranged}; use ruff_text_size::TextSize; -use rustpython_ast::{Expr, Ranged}; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Edit, Fix}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_pyi/rules/pass_in_class_body.rs b/crates/ruff/src/rules/flake8_pyi/rules/pass_in_class_body.rs index 28d66b3149..a16d7437f8 100644 --- a/crates/ruff/src/rules/flake8_pyi/rules/pass_in_class_body.rs +++ b/crates/ruff/src/rules/flake8_pyi/rules/pass_in_class_body.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Ranged, Stmt}; +use ruff_python_ast::{Ranged, Stmt}; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_pyi/rules/pass_statement_stub_body.rs b/crates/ruff/src/rules/flake8_pyi/rules/pass_statement_stub_body.rs index 0ea07b3392..769cfcfcf9 100644 --- a/crates/ruff/src/rules/flake8_pyi/rules/pass_statement_stub_body.rs +++ b/crates/ruff/src/rules/flake8_pyi/rules/pass_statement_stub_body.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Ranged, Stmt}; +use ruff_python_ast::{Ranged, Stmt}; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Edit, Fix}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_pyi/rules/prefix_type_params.rs b/crates/ruff/src/rules/flake8_pyi/rules/prefix_type_params.rs index 27d93a3fb3..7273b31253 100644 --- a/crates/ruff/src/rules/flake8_pyi/rules/prefix_type_params.rs +++ b/crates/ruff/src/rules/flake8_pyi/rules/prefix_type_params.rs @@ -1,6 +1,6 @@ use std::fmt; -use rustpython_ast::{self as ast, Expr, Ranged}; +use ruff_python_ast::{self as ast, Expr, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_pyi/rules/redundant_numeric_union.rs b/crates/ruff/src/rules/flake8_pyi/rules/redundant_numeric_union.rs index 4ff354176e..d16f7928a5 100644 --- a/crates/ruff/src/rules/flake8_pyi/rules/redundant_numeric_union.rs +++ b/crates/ruff/src/rules/flake8_pyi/rules/redundant_numeric_union.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Arguments, Expr, Ranged}; +use ruff_python_ast::{Arguments, Expr, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_pyi/rules/simple_defaults.rs b/crates/ruff/src/rules/flake8_pyi/rules/simple_defaults.rs index 7df270efbf..c63143dc0b 100644 --- a/crates/ruff/src/rules/flake8_pyi/rules/simple_defaults.rs +++ b/crates/ruff/src/rules/flake8_pyi/rules/simple_defaults.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{ +use ruff_python_ast::{ self as ast, ArgWithDefault, Arguments, Constant, Expr, Operator, Ranged, Stmt, UnaryOp, }; diff --git a/crates/ruff/src/rules/flake8_pyi/rules/str_or_repr_defined_in_stub.rs b/crates/ruff/src/rules/flake8_pyi/rules/str_or_repr_defined_in_stub.rs index 790186642c..58035705f4 100644 --- a/crates/ruff/src/rules/flake8_pyi/rules/str_or_repr_defined_in_stub.rs +++ b/crates/ruff/src/rules/flake8_pyi/rules/str_or_repr_defined_in_stub.rs @@ -1,5 +1,5 @@ -use rustpython_ast::Stmt; -use rustpython_parser::ast; +use ruff_python_ast as ast; +use ruff_python_ast::Stmt; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_pyi/rules/string_or_bytes_too_long.rs b/crates/ruff/src/rules/flake8_pyi/rules/string_or_bytes_too_long.rs index 6872699ad3..4fd45acd7f 100644 --- a/crates/ruff/src/rules/flake8_pyi/rules/string_or_bytes_too_long.rs +++ b/crates/ruff/src/rules/flake8_pyi/rules/string_or_bytes_too_long.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Constant, Expr, Ranged}; +use ruff_python_ast::{self as ast, Constant, Expr, Ranged}; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Edit, Fix}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_pyi/rules/stub_body_multiple_statements.rs b/crates/ruff/src/rules/flake8_pyi/rules/stub_body_multiple_statements.rs index b8c840ec80..6390441bad 100644 --- a/crates/ruff/src/rules/flake8_pyi/rules/stub_body_multiple_statements.rs +++ b/crates/ruff/src/rules/flake8_pyi/rules/stub_body_multiple_statements.rs @@ -1,4 +1,4 @@ -use rustpython_ast::Stmt; +use ruff_python_ast::Stmt; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_pyi/rules/type_alias_naming.rs b/crates/ruff/src/rules/flake8_pyi/rules/type_alias_naming.rs index 803f6a15c5..38b0ea0c5e 100644 --- a/crates/ruff/src/rules/flake8_pyi/rules/type_alias_naming.rs +++ b/crates/ruff/src/rules/flake8_pyi/rules/type_alias_naming.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Expr}; +use ruff_python_ast::{self as ast, Expr}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_pyi/rules/unnecessary_literal_union.rs b/crates/ruff/src/rules/flake8_pyi/rules/unnecessary_literal_union.rs index 144c64da88..fb7b59d5ee 100644 --- a/crates/ruff/src/rules/flake8_pyi/rules/unnecessary_literal_union.rs +++ b/crates/ruff/src/rules/flake8_pyi/rules/unnecessary_literal_union.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Expr, Ranged}; +use ruff_python_ast::{self as ast, Expr, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_pyi/rules/unrecognized_platform.rs b/crates/ruff/src/rules/flake8_pyi/rules/unrecognized_platform.rs index f8b671c0d0..d3381dbeb3 100644 --- a/crates/ruff/src/rules/flake8_pyi/rules/unrecognized_platform.rs +++ b/crates/ruff/src/rules/flake8_pyi/rules/unrecognized_platform.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, CmpOp, Constant, Expr, Ranged}; +use ruff_python_ast::{self as ast, CmpOp, Constant, Expr, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_pyi/rules/unrecognized_version_info.rs b/crates/ruff/src/rules/flake8_pyi/rules/unrecognized_version_info.rs index 5af1a76fe9..53e1e90e55 100644 --- a/crates/ruff/src/rules/flake8_pyi/rules/unrecognized_version_info.rs +++ b/crates/ruff/src/rules/flake8_pyi/rules/unrecognized_version_info.rs @@ -1,6 +1,6 @@ use num_bigint::BigInt; use num_traits::{One, Zero}; -use rustpython_ast::{self as ast, CmpOp, Constant, Expr, Ranged}; +use ruff_python_ast::{self as ast, CmpOp, Constant, Expr, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_pyi/rules/unsupported_method_call_on_all.rs b/crates/ruff/src/rules/flake8_pyi/rules/unsupported_method_call_on_all.rs index ff35c48653..bab2dad76e 100644 --- a/crates/ruff/src/rules/flake8_pyi/rules/unsupported_method_call_on_all.rs +++ b/crates/ruff/src/rules/flake8_pyi/rules/unsupported_method_call_on_all.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Expr, Ranged}; +use ruff_python_ast::{self as ast, Expr, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_pyi/rules/unused_private_type_definition.rs b/crates/ruff/src/rules/flake8_pyi/rules/unused_private_type_definition.rs index 89eafeb545..db0f35a83e 100644 --- a/crates/ruff/src/rules/flake8_pyi/rules/unused_private_type_definition.rs +++ b/crates/ruff/src/rules/flake8_pyi/rules/unused_private_type_definition.rs @@ -1,7 +1,7 @@ use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; +use ruff_python_ast::{self as ast, Expr, Stmt}; use ruff_python_semantic::Binding; -use rustpython_parser::ast::{self, Expr, Stmt}; use crate::checkers::ast::Checker; diff --git a/crates/ruff/src/rules/flake8_pytest_style/rules/assertion.rs b/crates/ruff/src/rules/flake8_pytest_style/rules/assertion.rs index ad5c083efd..1964fd3c44 100644 --- a/crates/ruff/src/rules/flake8_pytest_style/rules/assertion.rs +++ b/crates/ruff/src/rules/flake8_pytest_style/rules/assertion.rs @@ -7,7 +7,7 @@ use libcst_native::{ ParenthesizedNode, SimpleStatementLine, SimpleWhitespace, SmallStatement, Statement, TrailingWhitespace, UnaryOperation, }; -use rustpython_ast::{self as ast, BoolOp, ExceptHandler, Expr, Keyword, Ranged, Stmt, UnaryOp}; +use ruff_python_ast::{self as ast, BoolOp, ExceptHandler, Expr, Keyword, Ranged, Stmt, UnaryOp}; use ruff_diagnostics::{AutofixKind, Diagnostic, Edit, Fix, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_pytest_style/rules/fail.rs b/crates/ruff/src/rules/flake8_pytest_style/rules/fail.rs index dfd7bbb506..37a101fd25 100644 --- a/crates/ruff/src/rules/flake8_pytest_style/rules/fail.rs +++ b/crates/ruff/src/rules/flake8_pytest_style/rules/fail.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Expr, Keyword, Ranged}; +use ruff_python_ast::{Expr, Keyword, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_pytest_style/rules/fixture.rs b/crates/ruff/src/rules/flake8_pytest_style/rules/fixture.rs index 19c11e9124..b73cb4676e 100644 --- a/crates/ruff/src/rules/flake8_pytest_style/rules/fixture.rs +++ b/crates/ruff/src/rules/flake8_pytest_style/rules/fixture.rs @@ -1,8 +1,8 @@ use std::fmt; +use ruff_python_ast::Decorator; +use ruff_python_ast::{self as ast, ArgWithDefault, Arguments, Expr, Ranged, Stmt}; use ruff_text_size::{TextLen, TextRange}; -use rustpython_ast::Decorator; -use rustpython_ast::{self as ast, ArgWithDefault, Arguments, Expr, Ranged, Stmt}; use ruff_diagnostics::{AlwaysAutofixableViolation, Violation}; use ruff_diagnostics::{Diagnostic, Edit, Fix}; diff --git a/crates/ruff/src/rules/flake8_pytest_style/rules/helpers.rs b/crates/ruff/src/rules/flake8_pytest_style/rules/helpers.rs index 9353edf3aa..c2e99a19c1 100644 --- a/crates/ruff/src/rules/flake8_pytest_style/rules/helpers.rs +++ b/crates/ruff/src/rules/flake8_pytest_style/rules/helpers.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Constant, Decorator, Expr, Keyword}; +use ruff_python_ast::{self as ast, Constant, Decorator, Expr, Keyword}; use ruff_python_ast::call_path::{collect_call_path, CallPath}; use ruff_python_ast::helpers::map_callable; diff --git a/crates/ruff/src/rules/flake8_pytest_style/rules/imports.rs b/crates/ruff/src/rules/flake8_pytest_style/rules/imports.rs index 5c863a2310..394af4ac30 100644 --- a/crates/ruff/src/rules/flake8_pytest_style/rules/imports.rs +++ b/crates/ruff/src/rules/flake8_pytest_style/rules/imports.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Ranged, Stmt}; +use ruff_python_ast::{Ranged, Stmt}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_pytest_style/rules/marks.rs b/crates/ruff/src/rules/flake8_pytest_style/rules/marks.rs index 7d09e3782f..82fd42fb5b 100644 --- a/crates/ruff/src/rules/flake8_pytest_style/rules/marks.rs +++ b/crates/ruff/src/rules/flake8_pytest_style/rules/marks.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Decorator, Expr, Ranged}; +use ruff_python_ast::{self as ast, Decorator, Expr, Ranged}; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Edit, Fix}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_pytest_style/rules/parametrize.rs b/crates/ruff/src/rules/flake8_pytest_style/rules/parametrize.rs index 1ea6663ffd..b1283c1b35 100644 --- a/crates/ruff/src/rules/flake8_pytest_style/rules/parametrize.rs +++ b/crates/ruff/src/rules/flake8_pytest_style/rules/parametrize.rs @@ -1,6 +1,6 @@ +use ruff_python_ast::{self as ast, Constant, Decorator, Expr, ExprContext, Ranged}; +use ruff_python_parser::{lexer, Mode, Tok}; use ruff_text_size::TextRange; -use rustpython_ast::{self as ast, Constant, Decorator, Expr, ExprContext, Ranged}; -use rustpython_parser::{lexer, Mode, Tok}; use ruff_diagnostics::{AutofixKind, Diagnostic, Edit, Fix, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_pytest_style/rules/patch.rs b/crates/ruff/src/rules/flake8_pytest_style/rules/patch.rs index 87d1b54e05..637f675b75 100644 --- a/crates/ruff/src/rules/flake8_pytest_style/rules/patch.rs +++ b/crates/ruff/src/rules/flake8_pytest_style/rules/patch.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Arguments, Expr, Keyword, Ranged}; +use ruff_python_ast::{self as ast, Arguments, Expr, Keyword, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_pytest_style/rules/raises.rs b/crates/ruff/src/rules/flake8_pytest_style/rules/raises.rs index fcc98c49eb..cfb8cf7379 100644 --- a/crates/ruff/src/rules/flake8_pytest_style/rules/raises.rs +++ b/crates/ruff/src/rules/flake8_pytest_style/rules/raises.rs @@ -1,5 +1,5 @@ use ruff_python_ast::helpers::{find_keyword, is_compound_statement}; -use rustpython_ast::{self as ast, Expr, Keyword, Ranged, Stmt, WithItem}; +use ruff_python_ast::{self as ast, Expr, Keyword, Ranged, Stmt, WithItem}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_pytest_style/rules/unittest_assert.rs b/crates/ruff/src/rules/flake8_pytest_style/rules/unittest_assert.rs index f4e8dbdc61..e929c9f8de 100644 --- a/crates/ruff/src/rules/flake8_pytest_style/rules/unittest_assert.rs +++ b/crates/ruff/src/rules/flake8_pytest_style/rules/unittest_assert.rs @@ -1,11 +1,11 @@ use std::hash::BuildHasherDefault; use anyhow::{anyhow, bail, Result}; -use ruff_text_size::TextRange; -use rustc_hash::FxHashMap; -use rustpython_ast::{ +use ruff_python_ast::{ self as ast, CmpOp, Constant, Expr, ExprContext, Identifier, Keyword, Stmt, UnaryOp, }; +use ruff_text_size::TextRange; +use rustc_hash::FxHashMap; /// An enum to represent the different types of assertions present in the /// `unittest` module. Note: any variants that can't be replaced with plain diff --git a/crates/ruff/src/rules/flake8_quotes/rules/from_tokens.rs b/crates/ruff/src/rules/flake8_quotes/rules/from_tokens.rs index f02017ed31..f4fd9581ab 100644 --- a/crates/ruff/src/rules/flake8_quotes/rules/from_tokens.rs +++ b/crates/ruff/src/rules/flake8_quotes/rules/from_tokens.rs @@ -1,6 +1,6 @@ +use ruff_python_parser::lexer::LexResult; +use ruff_python_parser::Tok; use ruff_text_size::TextRange; -use rustpython_parser::lexer::LexResult; -use rustpython_parser::Tok; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Edit, Fix}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_raise/rules/unnecessary_paren_on_raise_exception.rs b/crates/ruff/src/rules/flake8_raise/rules/unnecessary_paren_on_raise_exception.rs index 58559ae347..9fc7338435 100644 --- a/crates/ruff/src/rules/flake8_raise/rules/unnecessary_paren_on_raise_exception.rs +++ b/crates/ruff/src/rules/flake8_raise/rules/unnecessary_paren_on_raise_exception.rs @@ -1,6 +1,6 @@ +use ruff_python_ast::{self as ast, Expr, Ranged}; +use ruff_python_parser::{lexer, Mode, Tok}; use ruff_text_size::{TextRange, TextSize}; -use rustpython_ast::{self as ast, Expr, Ranged}; -use rustpython_parser::{lexer, Mode, Tok}; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Edit, Fix}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_return/helpers.rs b/crates/ruff/src/rules/flake8_return/helpers.rs index 00ad3d8594..668e283b1d 100644 --- a/crates/ruff/src/rules/flake8_return/helpers.rs +++ b/crates/ruff/src/rules/flake8_return/helpers.rs @@ -1,6 +1,6 @@ +use ruff_python_ast as ast; +use ruff_python_ast::{Expr, Ranged, Stmt}; use ruff_text_size::TextSize; -use rustpython_ast::{Expr, Ranged, Stmt}; -use rustpython_parser::ast; use ruff_source_file::{Locator, UniversalNewlines}; diff --git a/crates/ruff/src/rules/flake8_return/rules/function.rs b/crates/ruff/src/rules/flake8_return/rules/function.rs index bfc01fbcd6..6812891de0 100644 --- a/crates/ruff/src/rules/flake8_return/rules/function.rs +++ b/crates/ruff/src/rules/flake8_return/rules/function.rs @@ -1,7 +1,7 @@ use std::ops::Add; +use ruff_python_ast::{self as ast, ElifElseClause, Expr, Ranged, Stmt}; use ruff_text_size::{TextRange, TextSize}; -use rustpython_ast::{self as ast, ElifElseClause, Expr, Ranged, Stmt}; use ruff_diagnostics::{AlwaysAutofixableViolation, Violation}; use ruff_diagnostics::{Diagnostic, Edit, Fix}; diff --git a/crates/ruff/src/rules/flake8_return/visitor.rs b/crates/ruff/src/rules/flake8_return/visitor.rs index 52af68bf8b..c5ffe1585c 100644 --- a/crates/ruff/src/rules/flake8_return/visitor.rs +++ b/crates/ruff/src/rules/flake8_return/visitor.rs @@ -1,5 +1,5 @@ +use ruff_python_ast::{self as ast, ElifElseClause, Expr, Identifier, Stmt}; use rustc_hash::FxHashSet; -use rustpython_ast::{self as ast, ElifElseClause, Expr, Identifier, Stmt}; use ruff_python_ast::visitor; use ruff_python_ast::visitor::Visitor; diff --git a/crates/ruff/src/rules/flake8_self/rules/private_member_access.rs b/crates/ruff/src/rules/flake8_self/rules/private_member_access.rs index d484cdcd08..8abb5efb00 100644 --- a/crates/ruff/src/rules/flake8_self/rules/private_member_access.rs +++ b/crates/ruff/src/rules/flake8_self/rules/private_member_access.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Expr, Ranged}; +use ruff_python_ast::{self as ast, Expr, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_simplify/rules/ast_bool_op.rs b/crates/ruff/src/rules/flake8_simplify/rules/ast_bool_op.rs index 2e0a503070..c0bddafd13 100644 --- a/crates/ruff/src/rules/flake8_simplify/rules/ast_bool_op.rs +++ b/crates/ruff/src/rules/flake8_simplify/rules/ast_bool_op.rs @@ -3,9 +3,9 @@ use std::iter; use itertools::Either::{Left, Right}; use itertools::Itertools; +use ruff_python_ast::{self as ast, BoolOp, CmpOp, Expr, ExprContext, Ranged, UnaryOp}; use ruff_text_size::TextRange; use rustc_hash::FxHashMap; -use rustpython_ast::{self as ast, BoolOp, CmpOp, Expr, ExprContext, Ranged, UnaryOp}; use ruff_diagnostics::{AlwaysAutofixableViolation, AutofixKind, Diagnostic, Edit, Fix, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_simplify/rules/ast_expr.rs b/crates/ruff/src/rules/flake8_simplify/rules/ast_expr.rs index f6cc6e58f1..ca1271a2a0 100644 --- a/crates/ruff/src/rules/flake8_simplify/rules/ast_expr.rs +++ b/crates/ruff/src/rules/flake8_simplify/rules/ast_expr.rs @@ -1,5 +1,5 @@ +use ruff_python_ast::{self as ast, Constant, Expr, Ranged}; use ruff_text_size::TextRange; -use rustpython_ast::{self as ast, Constant, Expr, Ranged}; use ruff_diagnostics::{AlwaysAutofixableViolation, AutofixKind, Diagnostic, Edit, Fix, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_simplify/rules/ast_if.rs b/crates/ruff/src/rules/flake8_simplify/rules/ast_if.rs index d896c07a7e..af096c2616 100644 --- a/crates/ruff/src/rules/flake8_simplify/rules/ast_if.rs +++ b/crates/ruff/src/rules/flake8_simplify/rules/ast_if.rs @@ -1,10 +1,10 @@ use log::error; -use ruff_text_size::TextRange; -use rustc_hash::FxHashSet; -use rustpython_ast::{ +use ruff_python_ast::{ self as ast, CmpOp, Constant, ElifElseClause, Expr, ExprContext, Identifier, Ranged, Stmt, StmtIf, }; +use ruff_text_size::TextRange; +use rustc_hash::FxHashSet; use ruff_diagnostics::{AutofixKind, Diagnostic, Edit, Fix, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_simplify/rules/ast_ifexp.rs b/crates/ruff/src/rules/flake8_simplify/rules/ast_ifexp.rs index 493ab8bc56..21623a2392 100644 --- a/crates/ruff/src/rules/flake8_simplify/rules/ast_ifexp.rs +++ b/crates/ruff/src/rules/flake8_simplify/rules/ast_ifexp.rs @@ -1,5 +1,5 @@ +use ruff_python_ast::{self as ast, Expr, ExprContext, Ranged, UnaryOp}; use ruff_text_size::TextRange; -use rustpython_ast::{self as ast, Expr, ExprContext, Ranged, UnaryOp}; use ruff_diagnostics::{AlwaysAutofixableViolation, AutofixKind, Diagnostic, Edit, Fix, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_simplify/rules/ast_unary_op.rs b/crates/ruff/src/rules/flake8_simplify/rules/ast_unary_op.rs index 680cda5b18..190673f5a9 100644 --- a/crates/ruff/src/rules/flake8_simplify/rules/ast_unary_op.rs +++ b/crates/ruff/src/rules/flake8_simplify/rules/ast_unary_op.rs @@ -1,5 +1,5 @@ +use ruff_python_ast::{self as ast, CmpOp, Expr, ExprContext, Ranged, Stmt, UnaryOp}; use ruff_text_size::TextRange; -use rustpython_ast::{self as ast, CmpOp, Expr, ExprContext, Ranged, Stmt, UnaryOp}; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Edit, Fix}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_simplify/rules/ast_with.rs b/crates/ruff/src/rules/flake8_simplify/rules/ast_with.rs index 04a842f120..2a9ff71350 100644 --- a/crates/ruff/src/rules/flake8_simplify/rules/ast_with.rs +++ b/crates/ruff/src/rules/flake8_simplify/rules/ast_with.rs @@ -1,6 +1,6 @@ use log::error; +use ruff_python_ast::{self as ast, Ranged, Stmt, WithItem}; use ruff_text_size::TextRange; -use rustpython_ast::{self as ast, Ranged, Stmt, WithItem}; use ruff_diagnostics::{AutofixKind, Violation}; use ruff_diagnostics::{Diagnostic, Fix}; diff --git a/crates/ruff/src/rules/flake8_simplify/rules/fix_with.rs b/crates/ruff/src/rules/flake8_simplify/rules/fix_with.rs index c8e63210aa..d5dc5ca9d8 100644 --- a/crates/ruff/src/rules/flake8_simplify/rules/fix_with.rs +++ b/crates/ruff/src/rules/flake8_simplify/rules/fix_with.rs @@ -1,6 +1,6 @@ use anyhow::{bail, Result}; use libcst_native::{CompoundStatement, Statement, Suite, With}; -use rustpython_ast::Ranged; +use ruff_python_ast::Ranged; use crate::autofix::codemods::CodegenStylist; use ruff_diagnostics::Edit; @@ -14,7 +14,7 @@ use crate::cst::matchers::{match_function_def, match_indented_block, match_state pub(crate) fn fix_multiple_with_statements( locator: &Locator, stylist: &Stylist, - stmt: &rustpython_ast::Stmt, + stmt: &ruff_python_ast::Stmt, ) -> Result { // Infer the indentation of the outer block. let Some(outer_indent) = whitespace::indentation(locator, stmt) else { diff --git a/crates/ruff/src/rules/flake8_simplify/rules/key_in_dict.rs b/crates/ruff/src/rules/flake8_simplify/rules/key_in_dict.rs index 5f2bec88a4..f1b6c7488e 100644 --- a/crates/ruff/src/rules/flake8_simplify/rules/key_in_dict.rs +++ b/crates/ruff/src/rules/flake8_simplify/rules/key_in_dict.rs @@ -1,6 +1,6 @@ use anyhow::Result; +use ruff_python_ast::{self as ast, CmpOp, Expr, Ranged}; use ruff_text_size::TextRange; -use rustpython_ast::{self as ast, CmpOp, Expr, Ranged}; use ruff_diagnostics::Edit; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; diff --git a/crates/ruff/src/rules/flake8_simplify/rules/open_file_with_context_handler.rs b/crates/ruff/src/rules/flake8_simplify/rules/open_file_with_context_handler.rs index 7feb860dc1..9ae3674dbc 100644 --- a/crates/ruff/src/rules/flake8_simplify/rules/open_file_with_context_handler.rs +++ b/crates/ruff/src/rules/flake8_simplify/rules/open_file_with_context_handler.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Expr, Ranged, Stmt}; +use ruff_python_ast::{self as ast, Expr, Ranged, Stmt}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_simplify/rules/reimplemented_builtin.rs b/crates/ruff/src/rules/flake8_simplify/rules/reimplemented_builtin.rs index fbb9e25ee0..efae2e7923 100644 --- a/crates/ruff/src/rules/flake8_simplify/rules/reimplemented_builtin.rs +++ b/crates/ruff/src/rules/flake8_simplify/rules/reimplemented_builtin.rs @@ -1,7 +1,7 @@ -use ruff_text_size::TextRange; -use rustpython_ast::{ +use ruff_python_ast::{ self as ast, CmpOp, Comprehension, Constant, Expr, ExprContext, Ranged, Stmt, UnaryOp, }; +use ruff_text_size::TextRange; use ruff_diagnostics::{AutofixKind, Diagnostic, Edit, Fix, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_simplify/rules/return_in_try_except_finally.rs b/crates/ruff/src/rules/flake8_simplify/rules/return_in_try_except_finally.rs index d8a07783ab..6eb8ce649f 100644 --- a/crates/ruff/src/rules/flake8_simplify/rules/return_in_try_except_finally.rs +++ b/crates/ruff/src/rules/flake8_simplify/rules/return_in_try_except_finally.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, ExceptHandler, Ranged, Stmt}; +use ruff_python_ast::{self as ast, ExceptHandler, Ranged, Stmt}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_simplify/rules/suppressible_exception.rs b/crates/ruff/src/rules/flake8_simplify/rules/suppressible_exception.rs index b3bf99abfa..1dd245089b 100644 --- a/crates/ruff/src/rules/flake8_simplify/rules/suppressible_exception.rs +++ b/crates/ruff/src/rules/flake8_simplify/rules/suppressible_exception.rs @@ -1,5 +1,5 @@ +use ruff_python_ast::{self as ast, Constant, ExceptHandler, Expr, Ranged, Stmt}; use ruff_text_size::{TextLen, TextRange}; -use rustpython_ast::{self as ast, Constant, ExceptHandler, Expr, Ranged, Stmt}; use ruff_diagnostics::{AutofixKind, Diagnostic, Edit, Fix, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_simplify/rules/yoda_conditions.rs b/crates/ruff/src/rules/flake8_simplify/rules/yoda_conditions.rs index 472a17303b..673925a416 100644 --- a/crates/ruff/src/rules/flake8_simplify/rules/yoda_conditions.rs +++ b/crates/ruff/src/rules/flake8_simplify/rules/yoda_conditions.rs @@ -1,6 +1,6 @@ use anyhow::Result; use libcst_native::CompOp; -use rustpython_ast::{self as ast, CmpOp, Expr, Ranged, UnaryOp}; +use ruff_python_ast::{self as ast, CmpOp, Expr, Ranged, UnaryOp}; use crate::autofix::codemods::CodegenStylist; use ruff_diagnostics::{AutofixKind, Diagnostic, Edit, Fix, Violation}; diff --git a/crates/ruff/src/rules/flake8_slots/rules/helpers.rs b/crates/ruff/src/rules/flake8_slots/rules/helpers.rs index 99200ca510..f949e3a278 100644 --- a/crates/ruff/src/rules/flake8_slots/rules/helpers.rs +++ b/crates/ruff/src/rules/flake8_slots/rules/helpers.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Expr, Stmt}; +use ruff_python_ast::{self as ast, Expr, Stmt}; /// Return `true` if the given body contains a `__slots__` assignment. pub(super) fn has_slots(body: &[Stmt]) -> bool { diff --git a/crates/ruff/src/rules/flake8_slots/rules/no_slots_in_namedtuple_subclass.rs b/crates/ruff/src/rules/flake8_slots/rules/no_slots_in_namedtuple_subclass.rs index 626ade812d..4497d7e4d9 100644 --- a/crates/ruff/src/rules/flake8_slots/rules/no_slots_in_namedtuple_subclass.rs +++ b/crates/ruff/src/rules/flake8_slots/rules/no_slots_in_namedtuple_subclass.rs @@ -1,10 +1,10 @@ -use rustpython_ast::{Expr, StmtClassDef}; -use rustpython_parser::ast; +use ruff_python_ast as ast; +use ruff_python_ast::{Expr, StmtClassDef}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::identifier::Identifier; -use rustpython_ast::Stmt; +use ruff_python_ast::Stmt; use crate::checkers::ast::Checker; use crate::rules::flake8_slots::rules::helpers::has_slots; diff --git a/crates/ruff/src/rules/flake8_slots/rules/no_slots_in_str_subclass.rs b/crates/ruff/src/rules/flake8_slots/rules/no_slots_in_str_subclass.rs index d336c7562f..fca7c9c902 100644 --- a/crates/ruff/src/rules/flake8_slots/rules/no_slots_in_str_subclass.rs +++ b/crates/ruff/src/rules/flake8_slots/rules/no_slots_in_str_subclass.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Expr, Stmt, StmtClassDef}; +use ruff_python_ast::{Expr, Stmt, StmtClassDef}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_slots/rules/no_slots_in_tuple_subclass.rs b/crates/ruff/src/rules/flake8_slots/rules/no_slots_in_tuple_subclass.rs index 9e0fdeea90..7ff26baf7a 100644 --- a/crates/ruff/src/rules/flake8_slots/rules/no_slots_in_tuple_subclass.rs +++ b/crates/ruff/src/rules/flake8_slots/rules/no_slots_in_tuple_subclass.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Stmt, StmtClassDef}; +use ruff_python_ast::{Stmt, StmtClassDef}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_tidy_imports/rules/banned_api.rs b/crates/ruff/src/rules/flake8_tidy_imports/rules/banned_api.rs index 249f8b62c9..e214802ded 100644 --- a/crates/ruff/src/rules/flake8_tidy_imports/rules/banned_api.rs +++ b/crates/ruff/src/rules/flake8_tidy_imports/rules/banned_api.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Expr, Ranged}; +use ruff_python_ast::{Expr, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_tidy_imports/rules/relative_imports.rs b/crates/ruff/src/rules/flake8_tidy_imports/rules/relative_imports.rs index 347bd38117..a56f205127 100644 --- a/crates/ruff/src/rules/flake8_tidy_imports/rules/relative_imports.rs +++ b/crates/ruff/src/rules/flake8_tidy_imports/rules/relative_imports.rs @@ -1,5 +1,5 @@ +use ruff_python_ast::{self as ast, Identifier, Int, Ranged, Stmt}; use ruff_text_size::TextRange; -use rustpython_ast::{self as ast, Identifier, Int, Ranged, Stmt}; use ruff_diagnostics::{AutofixKind, Diagnostic, Edit, Fix, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_type_checking/helpers.rs b/crates/ruff/src/rules/flake8_type_checking/helpers.rs index 144e5eee12..63115dbe04 100644 --- a/crates/ruff/src/rules/flake8_type_checking/helpers.rs +++ b/crates/ruff/src/rules/flake8_type_checking/helpers.rs @@ -1,4 +1,4 @@ -use rustpython_parser::ast; +use ruff_python_ast as ast; use ruff_python_ast::call_path::from_qualified_name; use ruff_python_ast::helpers::map_callable; diff --git a/crates/ruff/src/rules/flake8_type_checking/rules/empty_type_checking_block.rs b/crates/ruff/src/rules/flake8_type_checking/rules/empty_type_checking_block.rs index 0cf98a50e9..5bb8533778 100644 --- a/crates/ruff/src/rules/flake8_type_checking/rules/empty_type_checking_block.rs +++ b/crates/ruff/src/rules/flake8_type_checking/rules/empty_type_checking_block.rs @@ -1,5 +1,5 @@ -use rustpython_ast::Ranged; -use rustpython_parser::ast; +use ruff_python_ast as ast; +use ruff_python_ast::Ranged; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_unused_arguments/helpers.rs b/crates/ruff/src/rules/flake8_unused_arguments/helpers.rs index 3fa7c841b0..5b90db881d 100644 --- a/crates/ruff/src/rules/flake8_unused_arguments/helpers.rs +++ b/crates/ruff/src/rules/flake8_unused_arguments/helpers.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Constant, Expr, Stmt}; +use ruff_python_ast::{self as ast, Constant, Expr, Stmt}; use ruff_python_ast::helpers::is_docstring_stmt; diff --git a/crates/ruff/src/rules/flake8_unused_arguments/rules/unused_arguments.rs b/crates/ruff/src/rules/flake8_unused_arguments/rules/unused_arguments.rs index 0a581b90d8..78ad38e2b4 100644 --- a/crates/ruff/src/rules/flake8_unused_arguments/rules/unused_arguments.rs +++ b/crates/ruff/src/rules/flake8_unused_arguments/rules/unused_arguments.rs @@ -1,8 +1,8 @@ use std::iter; use regex::Regex; -use rustpython_ast::{Arg, Arguments}; -use rustpython_parser::ast; +use ruff_python_ast as ast; +use ruff_python_ast::{Arg, Arguments}; use ruff_diagnostics::DiagnosticKind; use ruff_diagnostics::{Diagnostic, Violation}; diff --git a/crates/ruff/src/rules/flake8_use_pathlib/rules/os_sep_split.rs b/crates/ruff/src/rules/flake8_use_pathlib/rules/os_sep_split.rs index ffd61fe932..f6176e1c26 100644 --- a/crates/ruff/src/rules/flake8_use_pathlib/rules/os_sep_split.rs +++ b/crates/ruff/src/rules/flake8_use_pathlib/rules/os_sep_split.rs @@ -1,7 +1,7 @@ use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::find_keyword; -use rustpython_ast::{Expr, ExprAttribute, Keyword, Ranged}; +use ruff_python_ast::{Expr, ExprAttribute, Keyword, Ranged}; use crate::checkers::ast::Checker; diff --git a/crates/ruff/src/rules/flake8_use_pathlib/rules/path_constructor_current_directory.rs b/crates/ruff/src/rules/flake8_use_pathlib/rules/path_constructor_current_directory.rs index 952d6e101e..3cead2169d 100644 --- a/crates/ruff/src/rules/flake8_use_pathlib/rules/path_constructor_current_directory.rs +++ b/crates/ruff/src/rules/flake8_use_pathlib/rules/path_constructor_current_directory.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Constant, Expr, ExprCall, ExprConstant}; +use ruff_python_ast::{Constant, Expr, ExprCall, ExprConstant}; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Edit, Fix}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/flake8_use_pathlib/rules/replaceable_by_pathlib.rs b/crates/ruff/src/rules/flake8_use_pathlib/rules/replaceable_by_pathlib.rs index a7c2a8d7df..2048d05b71 100644 --- a/crates/ruff/src/rules/flake8_use_pathlib/rules/replaceable_by_pathlib.rs +++ b/crates/ruff/src/rules/flake8_use_pathlib/rules/replaceable_by_pathlib.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Expr, Ranged}; +use ruff_python_ast::{Expr, Ranged}; use ruff_diagnostics::{Diagnostic, DiagnosticKind}; diff --git a/crates/ruff/src/rules/flynt/helpers.rs b/crates/ruff/src/rules/flynt/helpers.rs index 850180d2c3..f387520f5a 100644 --- a/crates/ruff/src/rules/flynt/helpers.rs +++ b/crates/ruff/src/rules/flynt/helpers.rs @@ -1,5 +1,5 @@ +use ruff_python_ast::{self as ast, Constant, ConversionFlag, Expr}; use ruff_text_size::TextRange; -use rustpython_ast::{self as ast, Constant, ConversionFlag, Expr}; /// Wrap an expression in a `FormattedValue` with no special formatting. fn to_formatted_value_expr(inner: &Expr) -> Expr { diff --git a/crates/ruff/src/rules/flynt/rules/static_join_to_fstring.rs b/crates/ruff/src/rules/flynt/rules/static_join_to_fstring.rs index 18cf54c152..5ea10c7824 100644 --- a/crates/ruff/src/rules/flynt/rules/static_join_to_fstring.rs +++ b/crates/ruff/src/rules/flynt/rules/static_join_to_fstring.rs @@ -1,6 +1,6 @@ use itertools::Itertools; +use ruff_python_ast::{self as ast, Constant, Expr, Ranged}; use ruff_text_size::TextRange; -use rustpython_ast::{self as ast, Constant, Expr, Ranged}; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Edit, Fix}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/isort/annotate.rs b/crates/ruff/src/rules/isort/annotate.rs index 4cad6f7888..13e9628682 100644 --- a/crates/ruff/src/rules/isort/annotate.rs +++ b/crates/ruff/src/rules/isort/annotate.rs @@ -1,5 +1,5 @@ +use ruff_python_ast::{self as ast, Ranged, Stmt}; use ruff_text_size::TextRange; -use rustpython_ast::{self as ast, Ranged, Stmt}; use ruff_source_file::Locator; diff --git a/crates/ruff/src/rules/isort/block.rs b/crates/ruff/src/rules/isort/block.rs index 17b5049e46..8ee50b3ef1 100644 --- a/crates/ruff/src/rules/isort/block.rs +++ b/crates/ruff/src/rules/isort/block.rs @@ -1,5 +1,5 @@ +use ruff_python_ast::{self as ast, ElifElseClause, ExceptHandler, MatchCase, Ranged, Stmt}; use ruff_text_size::{TextRange, TextSize}; -use rustpython_ast::{self as ast, ElifElseClause, ExceptHandler, MatchCase, Ranged, Stmt}; use std::iter::Peekable; use std::slice; diff --git a/crates/ruff/src/rules/isort/comments.rs b/crates/ruff/src/rules/isort/comments.rs index 32138ca384..b7963ff1ab 100644 --- a/crates/ruff/src/rules/isort/comments.rs +++ b/crates/ruff/src/rules/isort/comments.rs @@ -1,7 +1,7 @@ use std::borrow::Cow; +use ruff_python_parser::{lexer, Mode, Tok}; use ruff_text_size::{TextRange, TextSize}; -use rustpython_parser::{lexer, Mode, Tok}; use ruff_source_file::Locator; diff --git a/crates/ruff/src/rules/isort/helpers.rs b/crates/ruff/src/rules/isort/helpers.rs index 54ceb3a8ff..adf185891d 100644 --- a/crates/ruff/src/rules/isort/helpers.rs +++ b/crates/ruff/src/rules/isort/helpers.rs @@ -1,5 +1,5 @@ -use rustpython_ast::{Ranged, Stmt}; -use rustpython_parser::{lexer, Mode, Tok}; +use ruff_python_ast::{Ranged, Stmt}; +use ruff_python_parser::{lexer, Mode, Tok}; use ruff_python_trivia::PythonWhitespace; use ruff_source_file::{Locator, UniversalNewlines}; diff --git a/crates/ruff/src/rules/isort/rules/add_required_imports.rs b/crates/ruff/src/rules/isort/rules/add_required_imports.rs index 938efe96c6..9bcdc477e4 100644 --- a/crates/ruff/src/rules/isort/rules/add_required_imports.rs +++ b/crates/ruff/src/rules/isort/rules/add_required_imports.rs @@ -1,7 +1,7 @@ use log::error; +use ruff_python_ast::{self as ast, Stmt, Suite}; +use ruff_python_parser::Parse; use ruff_text_size::{TextRange, TextSize}; -use rustpython_ast::{self as ast, Stmt, Suite}; -use rustpython_parser::Parse; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/isort/rules/organize_imports.rs b/crates/ruff/src/rules/isort/rules/organize_imports.rs index fa19caa195..02873311d9 100644 --- a/crates/ruff/src/rules/isort/rules/organize_imports.rs +++ b/crates/ruff/src/rules/isort/rules/organize_imports.rs @@ -1,8 +1,8 @@ use std::path::Path; use itertools::{EitherOrBoth, Itertools}; +use ruff_python_ast::{Ranged, Stmt}; use ruff_text_size::TextRange; -use rustpython_ast::{Ranged, Stmt}; use ruff_diagnostics::{AutofixKind, Diagnostic, Edit, Fix, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/mccabe/rules/function_is_too_complex.rs b/crates/ruff/src/rules/mccabe/rules/function_is_too_complex.rs index f52765b31b..4bd4041648 100644 --- a/crates/ruff/src/rules/mccabe/rules/function_is_too_complex.rs +++ b/crates/ruff/src/rules/mccabe/rules/function_is_too_complex.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, ExceptHandler, Stmt}; +use ruff_python_ast::{self as ast, ExceptHandler, Stmt}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; @@ -169,8 +169,8 @@ pub(crate) fn function_is_too_complex( #[cfg(test)] mod tests { use anyhow::Result; - use rustpython_ast::Suite; - use rustpython_parser::Parse; + use ruff_python_ast::Suite; + use ruff_python_parser::Parse; use super::get_complexity_number; diff --git a/crates/ruff/src/rules/numpy/rules/deprecated_function.rs b/crates/ruff/src/rules/numpy/rules/deprecated_function.rs index 3da00a8135..e29bc489c4 100644 --- a/crates/ruff/src/rules/numpy/rules/deprecated_function.rs +++ b/crates/ruff/src/rules/numpy/rules/deprecated_function.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Expr, Ranged}; +use ruff_python_ast::{self as ast, Expr, Ranged}; use ruff_diagnostics::{AutofixKind, Diagnostic, Edit, Fix, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/numpy/rules/deprecated_type_alias.rs b/crates/ruff/src/rules/numpy/rules/deprecated_type_alias.rs index de20927883..ae7d58e473 100644 --- a/crates/ruff/src/rules/numpy/rules/deprecated_type_alias.rs +++ b/crates/ruff/src/rules/numpy/rules/deprecated_type_alias.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Expr, Ranged}; +use ruff_python_ast::{Expr, Ranged}; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Edit, Fix}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/numpy/rules/legacy_random.rs b/crates/ruff/src/rules/numpy/rules/legacy_random.rs index c1c3f9bfac..1d0f5f5762 100644 --- a/crates/ruff/src/rules/numpy/rules/legacy_random.rs +++ b/crates/ruff/src/rules/numpy/rules/legacy_random.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Expr, Ranged}; +use ruff_python_ast::{Expr, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pandas_vet/helpers.rs b/crates/ruff/src/rules/pandas_vet/helpers.rs index a9f43d4871..9da577d606 100644 --- a/crates/ruff/src/rules/pandas_vet/helpers.rs +++ b/crates/ruff/src/rules/pandas_vet/helpers.rs @@ -1,5 +1,5 @@ -use rustpython_ast::Expr; -use rustpython_parser::ast; +use ruff_python_ast as ast; +use ruff_python_ast::Expr; use ruff_python_semantic::{BindingKind, Import, SemanticModel}; diff --git a/crates/ruff/src/rules/pandas_vet/rules/assignment_to_df.rs b/crates/ruff/src/rules/pandas_vet/rules/assignment_to_df.rs index 970d523b4d..bb4be919c7 100644 --- a/crates/ruff/src/rules/pandas_vet/rules/assignment_to_df.rs +++ b/crates/ruff/src/rules/pandas_vet/rules/assignment_to_df.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Expr, Ranged}; +use ruff_python_ast::{self as ast, Expr, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pandas_vet/rules/attr.rs b/crates/ruff/src/rules/pandas_vet/rules/attr.rs index 59a3062623..de8981c63d 100644 --- a/crates/ruff/src/rules/pandas_vet/rules/attr.rs +++ b/crates/ruff/src/rules/pandas_vet/rules/attr.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Expr, Ranged}; +use ruff_python_ast::{Expr, Ranged}; use ruff_diagnostics::Violation; use ruff_diagnostics::{Diagnostic, DiagnosticKind}; diff --git a/crates/ruff/src/rules/pandas_vet/rules/call.rs b/crates/ruff/src/rules/pandas_vet/rules/call.rs index 03f35f6caa..17e95c61f5 100644 --- a/crates/ruff/src/rules/pandas_vet/rules/call.rs +++ b/crates/ruff/src/rules/pandas_vet/rules/call.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Expr, Ranged}; +use ruff_python_ast::{self as ast, Expr, Ranged}; use ruff_diagnostics::Violation; use ruff_diagnostics::{Diagnostic, DiagnosticKind}; diff --git a/crates/ruff/src/rules/pandas_vet/rules/inplace_argument.rs b/crates/ruff/src/rules/pandas_vet/rules/inplace_argument.rs index af621cd3e1..543c9cc2f2 100644 --- a/crates/ruff/src/rules/pandas_vet/rules/inplace_argument.rs +++ b/crates/ruff/src/rules/pandas_vet/rules/inplace_argument.rs @@ -1,5 +1,5 @@ +use ruff_python_ast::{Expr, Keyword, Ranged}; use ruff_text_size::TextRange; -use rustpython_ast::{Expr, Keyword, Ranged}; use ruff_diagnostics::{AutofixKind, Diagnostic, Edit, Fix, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pandas_vet/rules/nunique_constant_series_check.rs b/crates/ruff/src/rules/pandas_vet/rules/nunique_constant_series_check.rs index 3d70fbc777..b5fe027486 100644 --- a/crates/ruff/src/rules/pandas_vet/rules/nunique_constant_series_check.rs +++ b/crates/ruff/src/rules/pandas_vet/rules/nunique_constant_series_check.rs @@ -1,5 +1,5 @@ use num_traits::One; -use rustpython_ast::{self as ast, CmpOp, Constant, Expr, Ranged}; +use ruff_python_ast::{self as ast, CmpOp, Constant, Expr, Ranged}; use ruff_diagnostics::Diagnostic; use ruff_diagnostics::Violation; diff --git a/crates/ruff/src/rules/pandas_vet/rules/pd_merge.rs b/crates/ruff/src/rules/pandas_vet/rules/pd_merge.rs index ee8b7646ae..1bc605dc91 100644 --- a/crates/ruff/src/rules/pandas_vet/rules/pd_merge.rs +++ b/crates/ruff/src/rules/pandas_vet/rules/pd_merge.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Expr, Ranged}; +use ruff_python_ast::{self as ast, Expr, Ranged}; use crate::checkers::ast::Checker; use ruff_diagnostics::{Diagnostic, Violation}; diff --git a/crates/ruff/src/rules/pandas_vet/rules/read_table.rs b/crates/ruff/src/rules/pandas_vet/rules/read_table.rs index bba50dedd8..48f49fa287 100644 --- a/crates/ruff/src/rules/pandas_vet/rules/read_table.rs +++ b/crates/ruff/src/rules/pandas_vet/rules/read_table.rs @@ -1,5 +1,5 @@ -use rustpython_ast::{Constant, Expr, Keyword, Ranged}; -use rustpython_parser::ast; +use ruff_python_ast as ast; +use ruff_python_ast::{Constant, Expr, Keyword, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pandas_vet/rules/subscript.rs b/crates/ruff/src/rules/pandas_vet/rules/subscript.rs index 03b867ba6a..c5b08a5227 100644 --- a/crates/ruff/src/rules/pandas_vet/rules/subscript.rs +++ b/crates/ruff/src/rules/pandas_vet/rules/subscript.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Expr, Ranged}; +use ruff_python_ast::{self as ast, Expr, Ranged}; use ruff_diagnostics::Violation; use ruff_diagnostics::{Diagnostic, DiagnosticKind}; diff --git a/crates/ruff/src/rules/pep8_naming/helpers.rs b/crates/ruff/src/rules/pep8_naming/helpers.rs index f017fc34b0..94564c48ab 100644 --- a/crates/ruff/src/rules/pep8_naming/helpers.rs +++ b/crates/ruff/src/rules/pep8_naming/helpers.rs @@ -1,5 +1,5 @@ use itertools::Itertools; -use rustpython_ast::{self as ast, Expr, Stmt}; +use ruff_python_ast::{self as ast, Expr, Stmt}; use ruff_python_semantic::SemanticModel; use ruff_python_stdlib::str::{is_cased_lowercase, is_cased_uppercase}; diff --git a/crates/ruff/src/rules/pep8_naming/rules/camelcase_imported_as_acronym.rs b/crates/ruff/src/rules/pep8_naming/rules/camelcase_imported_as_acronym.rs index 026cbebf97..3747063d77 100644 --- a/crates/ruff/src/rules/pep8_naming/rules/camelcase_imported_as_acronym.rs +++ b/crates/ruff/src/rules/pep8_naming/rules/camelcase_imported_as_acronym.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Alias, Ranged, Stmt}; +use ruff_python_ast::{Alias, Ranged, Stmt}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pep8_naming/rules/camelcase_imported_as_constant.rs b/crates/ruff/src/rules/pep8_naming/rules/camelcase_imported_as_constant.rs index dedd8fffbe..21f5caba4b 100644 --- a/crates/ruff/src/rules/pep8_naming/rules/camelcase_imported_as_constant.rs +++ b/crates/ruff/src/rules/pep8_naming/rules/camelcase_imported_as_constant.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Alias, Ranged, Stmt}; +use ruff_python_ast::{Alias, Ranged, Stmt}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pep8_naming/rules/camelcase_imported_as_lowercase.rs b/crates/ruff/src/rules/pep8_naming/rules/camelcase_imported_as_lowercase.rs index 338048223f..707fe2bfc0 100644 --- a/crates/ruff/src/rules/pep8_naming/rules/camelcase_imported_as_lowercase.rs +++ b/crates/ruff/src/rules/pep8_naming/rules/camelcase_imported_as_lowercase.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Alias, Ranged, Stmt}; +use ruff_python_ast::{Alias, Ranged, Stmt}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pep8_naming/rules/constant_imported_as_non_constant.rs b/crates/ruff/src/rules/pep8_naming/rules/constant_imported_as_non_constant.rs index b1d744d17c..b0c57ed3bd 100644 --- a/crates/ruff/src/rules/pep8_naming/rules/constant_imported_as_non_constant.rs +++ b/crates/ruff/src/rules/pep8_naming/rules/constant_imported_as_non_constant.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Alias, Ranged, Stmt}; +use ruff_python_ast::{Alias, Ranged, Stmt}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pep8_naming/rules/dunder_function_name.rs b/crates/ruff/src/rules/pep8_naming/rules/dunder_function_name.rs index fa2c5ce6e0..0009feeb76 100644 --- a/crates/ruff/src/rules/pep8_naming/rules/dunder_function_name.rs +++ b/crates/ruff/src/rules/pep8_naming/rules/dunder_function_name.rs @@ -1,4 +1,4 @@ -use rustpython_ast::Stmt; +use ruff_python_ast::Stmt; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pep8_naming/rules/error_suffix_on_exception_name.rs b/crates/ruff/src/rules/pep8_naming/rules/error_suffix_on_exception_name.rs index 9a1eda54b5..91780d8cb0 100644 --- a/crates/ruff/src/rules/pep8_naming/rules/error_suffix_on_exception_name.rs +++ b/crates/ruff/src/rules/pep8_naming/rules/error_suffix_on_exception_name.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Expr, Stmt}; +use ruff_python_ast::{self as ast, Expr, Stmt}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pep8_naming/rules/invalid_argument_name.rs b/crates/ruff/src/rules/pep8_naming/rules/invalid_argument_name.rs index 35f5a20aed..fa1c89b250 100644 --- a/crates/ruff/src/rules/pep8_naming/rules/invalid_argument_name.rs +++ b/crates/ruff/src/rules/pep8_naming/rules/invalid_argument_name.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Arg, Ranged}; +use ruff_python_ast::{Arg, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pep8_naming/rules/invalid_class_name.rs b/crates/ruff/src/rules/pep8_naming/rules/invalid_class_name.rs index e13da1ebaa..f5eb7eeb80 100644 --- a/crates/ruff/src/rules/pep8_naming/rules/invalid_class_name.rs +++ b/crates/ruff/src/rules/pep8_naming/rules/invalid_class_name.rs @@ -1,4 +1,4 @@ -use rustpython_ast::Stmt; +use ruff_python_ast::Stmt; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pep8_naming/rules/invalid_first_argument_name_for_class_method.rs b/crates/ruff/src/rules/pep8_naming/rules/invalid_first_argument_name_for_class_method.rs index 921803062b..e56168f6fa 100644 --- a/crates/ruff/src/rules/pep8_naming/rules/invalid_first_argument_name_for_class_method.rs +++ b/crates/ruff/src/rules/pep8_naming/rules/invalid_first_argument_name_for_class_method.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{ArgWithDefault, Arguments, Decorator, Ranged}; +use ruff_python_ast::{ArgWithDefault, Arguments, Decorator, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pep8_naming/rules/invalid_first_argument_name_for_method.rs b/crates/ruff/src/rules/pep8_naming/rules/invalid_first_argument_name_for_method.rs index c50db8ca63..dd517f7063 100644 --- a/crates/ruff/src/rules/pep8_naming/rules/invalid_first_argument_name_for_method.rs +++ b/crates/ruff/src/rules/pep8_naming/rules/invalid_first_argument_name_for_method.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Arguments, Decorator, Ranged}; +use ruff_python_ast::{Arguments, Decorator, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pep8_naming/rules/invalid_function_name.rs b/crates/ruff/src/rules/pep8_naming/rules/invalid_function_name.rs index 3b28d3f03c..a95ec1d084 100644 --- a/crates/ruff/src/rules/pep8_naming/rules/invalid_function_name.rs +++ b/crates/ruff/src/rules/pep8_naming/rules/invalid_function_name.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Decorator, Stmt}; +use ruff_python_ast::{Decorator, Stmt}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pep8_naming/rules/lowercase_imported_as_non_lowercase.rs b/crates/ruff/src/rules/pep8_naming/rules/lowercase_imported_as_non_lowercase.rs index 8df0318458..3160810014 100644 --- a/crates/ruff/src/rules/pep8_naming/rules/lowercase_imported_as_non_lowercase.rs +++ b/crates/ruff/src/rules/pep8_naming/rules/lowercase_imported_as_non_lowercase.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Alias, Ranged, Stmt}; +use ruff_python_ast::{Alias, Ranged, Stmt}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pep8_naming/rules/mixed_case_variable_in_class_scope.rs b/crates/ruff/src/rules/pep8_naming/rules/mixed_case_variable_in_class_scope.rs index 2310ec6137..e7ab035a70 100644 --- a/crates/ruff/src/rules/pep8_naming/rules/mixed_case_variable_in_class_scope.rs +++ b/crates/ruff/src/rules/pep8_naming/rules/mixed_case_variable_in_class_scope.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Expr, Ranged}; +use ruff_python_ast::{Expr, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pep8_naming/rules/mixed_case_variable_in_global_scope.rs b/crates/ruff/src/rules/pep8_naming/rules/mixed_case_variable_in_global_scope.rs index 5c9b081050..a280e85286 100644 --- a/crates/ruff/src/rules/pep8_naming/rules/mixed_case_variable_in_global_scope.rs +++ b/crates/ruff/src/rules/pep8_naming/rules/mixed_case_variable_in_global_scope.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Expr, Ranged}; +use ruff_python_ast::{Expr, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pep8_naming/rules/non_lowercase_variable_in_function.rs b/crates/ruff/src/rules/pep8_naming/rules/non_lowercase_variable_in_function.rs index 8d557f48f7..87383353aa 100644 --- a/crates/ruff/src/rules/pep8_naming/rules/non_lowercase_variable_in_function.rs +++ b/crates/ruff/src/rules/pep8_naming/rules/non_lowercase_variable_in_function.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Expr, Ranged}; +use ruff_python_ast::{Expr, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/perflint/rules/incorrect_dict_iterator.rs b/crates/ruff/src/rules/perflint/rules/incorrect_dict_iterator.rs index 4cfd91c2bd..5b6e416aee 100644 --- a/crates/ruff/src/rules/perflint/rules/incorrect_dict_iterator.rs +++ b/crates/ruff/src/rules/perflint/rules/incorrect_dict_iterator.rs @@ -1,8 +1,8 @@ use std::fmt; -use rustpython_ast::Expr; -use rustpython_ast::Ranged; -use rustpython_parser::ast; +use ruff_python_ast as ast; +use ruff_python_ast::Expr; +use ruff_python_ast::Ranged; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Edit, Fix}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/perflint/rules/manual_list_comprehension.rs b/crates/ruff/src/rules/perflint/rules/manual_list_comprehension.rs index 8f02551af5..2881cd70bb 100644 --- a/crates/ruff/src/rules/perflint/rules/manual_list_comprehension.rs +++ b/crates/ruff/src/rules/perflint/rules/manual_list_comprehension.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Expr, Stmt}; +use ruff_python_ast::{self as ast, Expr, Stmt}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/perflint/rules/manual_list_copy.rs b/crates/ruff/src/rules/perflint/rules/manual_list_copy.rs index 6494ac50ae..051b508ada 100644 --- a/crates/ruff/src/rules/perflint/rules/manual_list_copy.rs +++ b/crates/ruff/src/rules/perflint/rules/manual_list_copy.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Expr, Stmt}; +use ruff_python_ast::{self as ast, Expr, Stmt}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/perflint/rules/try_except_in_loop.rs b/crates/ruff/src/rules/perflint/rules/try_except_in_loop.rs index 4248c185cd..fe57321d8c 100644 --- a/crates/ruff/src/rules/perflint/rules/try_except_in_loop.rs +++ b/crates/ruff/src/rules/perflint/rules/try_except_in_loop.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Ranged, Stmt}; +use ruff_python_ast::{self as ast, Ranged, Stmt}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/perflint/rules/unnecessary_list_cast.rs b/crates/ruff/src/rules/perflint/rules/unnecessary_list_cast.rs index f4febc792e..45a6a32da3 100644 --- a/crates/ruff/src/rules/perflint/rules/unnecessary_list_cast.rs +++ b/crates/ruff/src/rules/perflint/rules/unnecessary_list_cast.rs @@ -1,9 +1,9 @@ +use ruff_python_ast::{self as ast, Expr}; use ruff_text_size::TextRange; -use rustpython_ast::{self as ast, Expr}; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Edit, Fix}; use ruff_macros::{derive_message_formats, violation}; -use rustpython_ast::Stmt; +use ruff_python_ast::Stmt; use crate::checkers::ast::Checker; use crate::registry::AsRule; diff --git a/crates/ruff/src/rules/pycodestyle/helpers.rs b/crates/ruff/src/rules/pycodestyle/helpers.rs index 4850ac16bb..12ae3a0a39 100644 --- a/crates/ruff/src/rules/pycodestyle/helpers.rs +++ b/crates/ruff/src/rules/pycodestyle/helpers.rs @@ -1,5 +1,5 @@ +use ruff_python_ast::{CmpOp, Expr, Ranged}; use ruff_text_size::{TextLen, TextRange}; -use rustpython_ast::{CmpOp, Expr, Ranged}; use unicode_width::UnicodeWidthStr; use ruff_source_file::{Line, Locator}; diff --git a/crates/ruff/src/rules/pycodestyle/rules/ambiguous_class_name.rs b/crates/ruff/src/rules/pycodestyle/rules/ambiguous_class_name.rs index 7d439ba3a9..e0b78659f6 100644 --- a/crates/ruff/src/rules/pycodestyle/rules/ambiguous_class_name.rs +++ b/crates/ruff/src/rules/pycodestyle/rules/ambiguous_class_name.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Identifier, Ranged}; +use ruff_python_ast::{Identifier, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pycodestyle/rules/ambiguous_function_name.rs b/crates/ruff/src/rules/pycodestyle/rules/ambiguous_function_name.rs index 0bdc5915ae..5a7a2dc804 100644 --- a/crates/ruff/src/rules/pycodestyle/rules/ambiguous_function_name.rs +++ b/crates/ruff/src/rules/pycodestyle/rules/ambiguous_function_name.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Identifier, Ranged}; +use ruff_python_ast::{Identifier, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pycodestyle/rules/bare_except.rs b/crates/ruff/src/rules/pycodestyle/rules/bare_except.rs index affbe1e374..1cf30bc925 100644 --- a/crates/ruff/src/rules/pycodestyle/rules/bare_except.rs +++ b/crates/ruff/src/rules/pycodestyle/rules/bare_except.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, ExceptHandler, Expr, Stmt}; +use ruff_python_ast::{self as ast, ExceptHandler, Expr, Stmt}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pycodestyle/rules/compound_statements.rs b/crates/ruff/src/rules/pycodestyle/rules/compound_statements.rs index e7fe84889d..fa253d0e03 100644 --- a/crates/ruff/src/rules/pycodestyle/rules/compound_statements.rs +++ b/crates/ruff/src/rules/pycodestyle/rules/compound_statements.rs @@ -1,6 +1,6 @@ +use ruff_python_parser::lexer::LexResult; +use ruff_python_parser::Tok; use ruff_text_size::TextRange; -use rustpython_parser::lexer::LexResult; -use rustpython_parser::Tok; use ruff_diagnostics::{AlwaysAutofixableViolation, Violation}; use ruff_diagnostics::{Diagnostic, Edit, Fix}; diff --git a/crates/ruff/src/rules/pycodestyle/rules/errors.rs b/crates/ruff/src/rules/pycodestyle/rules/errors.rs index 17f1793b9a..213de95dfc 100644 --- a/crates/ruff/src/rules/pycodestyle/rules/errors.rs +++ b/crates/ruff/src/rules/pycodestyle/rules/errors.rs @@ -1,5 +1,5 @@ +use ruff_python_parser::ParseError; use ruff_text_size::{TextLen, TextRange, TextSize}; -use rustpython_parser::ParseError; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pycodestyle/rules/imports.rs b/crates/ruff/src/rules/pycodestyle/rules/imports.rs index c5b7f54952..4085b6aa66 100644 --- a/crates/ruff/src/rules/pycodestyle/rules/imports.rs +++ b/crates/ruff/src/rules/pycodestyle/rules/imports.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Alias, Ranged, Stmt}; +use ruff_python_ast::{Alias, Ranged, Stmt}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pycodestyle/rules/lambda_assignment.rs b/crates/ruff/src/rules/pycodestyle/rules/lambda_assignment.rs index 82016dad29..a9b04ba24c 100644 --- a/crates/ruff/src/rules/pycodestyle/rules/lambda_assignment.rs +++ b/crates/ruff/src/rules/pycodestyle/rules/lambda_assignment.rs @@ -1,7 +1,7 @@ -use ruff_text_size::TextRange; -use rustpython_ast::{ +use ruff_python_ast::{ self as ast, Arg, ArgWithDefault, Arguments, Constant, Expr, Identifier, Ranged, Stmt, }; +use ruff_text_size::TextRange; use ruff_diagnostics::{AutofixKind, Diagnostic, Edit, Fix, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pycodestyle/rules/literal_comparisons.rs b/crates/ruff/src/rules/pycodestyle/rules/literal_comparisons.rs index cbb01c4320..1a75983d89 100644 --- a/crates/ruff/src/rules/pycodestyle/rules/literal_comparisons.rs +++ b/crates/ruff/src/rules/pycodestyle/rules/literal_comparisons.rs @@ -1,6 +1,6 @@ use itertools::izip; +use ruff_python_ast::{self as ast, CmpOp, Constant, Expr, Ranged}; use rustc_hash::FxHashMap; -use rustpython_ast::{self as ast, CmpOp, Constant, Expr, Ranged}; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Edit, Fix}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pycodestyle/rules/logical_lines/extraneous_whitespace.rs b/crates/ruff/src/rules/pycodestyle/rules/logical_lines/extraneous_whitespace.rs index 0c64a4070f..58a7446e72 100644 --- a/crates/ruff/src/rules/pycodestyle/rules/logical_lines/extraneous_whitespace.rs +++ b/crates/ruff/src/rules/pycodestyle/rules/logical_lines/extraneous_whitespace.rs @@ -3,7 +3,7 @@ use ruff_diagnostics::Diagnostic; use ruff_diagnostics::Edit; use ruff_diagnostics::Fix; use ruff_macros::{derive_message_formats, violation}; -use ruff_python_parser::token_kind::TokenKind; +use ruff_python_parser::TokenKind; use ruff_text_size::TextRange; use crate::checkers::logical_lines::LogicalLinesContext; diff --git a/crates/ruff/src/rules/pycodestyle/rules/logical_lines/indentation.rs b/crates/ruff/src/rules/pycodestyle/rules/logical_lines/indentation.rs index e25c4b8786..5146734ef1 100644 --- a/crates/ruff/src/rules/pycodestyle/rules/logical_lines/indentation.rs +++ b/crates/ruff/src/rules/pycodestyle/rules/logical_lines/indentation.rs @@ -1,7 +1,7 @@ use ruff_diagnostics::DiagnosticKind; use ruff_diagnostics::Violation; use ruff_macros::{derive_message_formats, violation}; -use ruff_python_parser::token_kind::TokenKind; +use ruff_python_parser::TokenKind; use super::LogicalLine; diff --git a/crates/ruff/src/rules/pycodestyle/rules/logical_lines/missing_whitespace.rs b/crates/ruff/src/rules/pycodestyle/rules/logical_lines/missing_whitespace.rs index e8119544ed..6820eb44c1 100644 --- a/crates/ruff/src/rules/pycodestyle/rules/logical_lines/missing_whitespace.rs +++ b/crates/ruff/src/rules/pycodestyle/rules/logical_lines/missing_whitespace.rs @@ -3,7 +3,7 @@ use ruff_text_size::TextSize; use ruff_diagnostics::Edit; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; -use ruff_python_parser::token_kind::TokenKind; +use ruff_python_parser::TokenKind; use crate::checkers::logical_lines::LogicalLinesContext; diff --git a/crates/ruff/src/rules/pycodestyle/rules/logical_lines/missing_whitespace_after_keyword.rs b/crates/ruff/src/rules/pycodestyle/rules/logical_lines/missing_whitespace_after_keyword.rs index 9be461e4fc..0fac3492a6 100644 --- a/crates/ruff/src/rules/pycodestyle/rules/logical_lines/missing_whitespace_after_keyword.rs +++ b/crates/ruff/src/rules/pycodestyle/rules/logical_lines/missing_whitespace_after_keyword.rs @@ -1,6 +1,6 @@ use ruff_diagnostics::Violation; use ruff_macros::{derive_message_formats, violation}; -use ruff_python_parser::token_kind::TokenKind; +use ruff_python_parser::TokenKind; use crate::checkers::logical_lines::LogicalLinesContext; use crate::rules::pycodestyle::rules::logical_lines::LogicalLine; diff --git a/crates/ruff/src/rules/pycodestyle/rules/logical_lines/missing_whitespace_around_operator.rs b/crates/ruff/src/rules/pycodestyle/rules/logical_lines/missing_whitespace_around_operator.rs index 9687fa462f..61e2c17d89 100644 --- a/crates/ruff/src/rules/pycodestyle/rules/logical_lines/missing_whitespace_around_operator.rs +++ b/crates/ruff/src/rules/pycodestyle/rules/logical_lines/missing_whitespace_around_operator.rs @@ -1,6 +1,6 @@ use ruff_diagnostics::{DiagnosticKind, Violation}; use ruff_macros::{derive_message_formats, violation}; -use ruff_python_parser::token_kind::TokenKind; +use ruff_python_parser::TokenKind; use crate::checkers::logical_lines::LogicalLinesContext; use crate::rules::pycodestyle::rules::logical_lines::LogicalLine; diff --git a/crates/ruff/src/rules/pycodestyle/rules/logical_lines/mod.rs b/crates/ruff/src/rules/pycodestyle/rules/logical_lines/mod.rs index da9bf673ad..e20fad75ae 100644 --- a/crates/ruff/src/rules/pycodestyle/rules/logical_lines/mod.rs +++ b/crates/ruff/src/rules/pycodestyle/rules/logical_lines/mod.rs @@ -13,10 +13,10 @@ use std::fmt::{Debug, Formatter}; use std::iter::FusedIterator; use bitflags::bitflags; +use ruff_python_parser::lexer::LexResult; use ruff_text_size::{TextLen, TextRange, TextSize}; -use rustpython_parser::lexer::LexResult; -use ruff_python_parser::token_kind::TokenKind; +use ruff_python_parser::TokenKind; use ruff_python_trivia::is_python_whitespace; use ruff_source_file::Locator; @@ -521,8 +521,8 @@ struct Line { #[cfg(test)] mod tests { - use rustpython_parser::lexer::LexResult; - use rustpython_parser::{lexer, Mode}; + use ruff_python_parser::lexer::LexResult; + use ruff_python_parser::{lexer, Mode}; use ruff_source_file::Locator; diff --git a/crates/ruff/src/rules/pycodestyle/rules/logical_lines/space_around_operator.rs b/crates/ruff/src/rules/pycodestyle/rules/logical_lines/space_around_operator.rs index 51933fe10f..a20be973e6 100644 --- a/crates/ruff/src/rules/pycodestyle/rules/logical_lines/space_around_operator.rs +++ b/crates/ruff/src/rules/pycodestyle/rules/logical_lines/space_around_operator.rs @@ -2,7 +2,7 @@ use ruff_text_size::TextRange; use ruff_diagnostics::Violation; use ruff_macros::{derive_message_formats, violation}; -use ruff_python_parser::token_kind::TokenKind; +use ruff_python_parser::TokenKind; use crate::checkers::logical_lines::LogicalLinesContext; diff --git a/crates/ruff/src/rules/pycodestyle/rules/logical_lines/whitespace_around_named_parameter_equals.rs b/crates/ruff/src/rules/pycodestyle/rules/logical_lines/whitespace_around_named_parameter_equals.rs index 051f887630..1b6a8f14a9 100644 --- a/crates/ruff/src/rules/pycodestyle/rules/logical_lines/whitespace_around_named_parameter_equals.rs +++ b/crates/ruff/src/rules/pycodestyle/rules/logical_lines/whitespace_around_named_parameter_equals.rs @@ -2,7 +2,7 @@ use ruff_text_size::{TextRange, TextSize}; use ruff_diagnostics::Violation; use ruff_macros::{derive_message_formats, violation}; -use ruff_python_parser::token_kind::TokenKind; +use ruff_python_parser::TokenKind; use crate::checkers::logical_lines::LogicalLinesContext; use crate::rules::pycodestyle::rules::logical_lines::{LogicalLine, LogicalLineToken}; diff --git a/crates/ruff/src/rules/pycodestyle/rules/logical_lines/whitespace_before_comment.rs b/crates/ruff/src/rules/pycodestyle/rules/logical_lines/whitespace_before_comment.rs index 90bf9f5359..87084053d4 100644 --- a/crates/ruff/src/rules/pycodestyle/rules/logical_lines/whitespace_before_comment.rs +++ b/crates/ruff/src/rules/pycodestyle/rules/logical_lines/whitespace_before_comment.rs @@ -2,7 +2,7 @@ use ruff_text_size::{TextLen, TextRange, TextSize}; use ruff_diagnostics::Violation; use ruff_macros::{derive_message_formats, violation}; -use ruff_python_parser::token_kind::TokenKind; +use ruff_python_parser::TokenKind; use ruff_python_trivia::PythonWhitespace; use ruff_source_file::Locator; diff --git a/crates/ruff/src/rules/pycodestyle/rules/logical_lines/whitespace_before_parameters.rs b/crates/ruff/src/rules/pycodestyle/rules/logical_lines/whitespace_before_parameters.rs index 3b0a7b1884..fb55dbeafe 100644 --- a/crates/ruff/src/rules/pycodestyle/rules/logical_lines/whitespace_before_parameters.rs +++ b/crates/ruff/src/rules/pycodestyle/rules/logical_lines/whitespace_before_parameters.rs @@ -2,7 +2,7 @@ use ruff_text_size::{TextRange, TextSize}; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Edit, Fix}; use ruff_macros::{derive_message_formats, violation}; -use ruff_python_parser::token_kind::TokenKind; +use ruff_python_parser::TokenKind; use crate::checkers::logical_lines::LogicalLinesContext; use crate::rules::pycodestyle::rules::logical_lines::LogicalLine; diff --git a/crates/ruff/src/rules/pycodestyle/rules/not_tests.rs b/crates/ruff/src/rules/pycodestyle/rules/not_tests.rs index 8ce5daf0ae..e77c1ebfa1 100644 --- a/crates/ruff/src/rules/pycodestyle/rules/not_tests.rs +++ b/crates/ruff/src/rules/pycodestyle/rules/not_tests.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, CmpOp, Expr, Ranged, UnaryOp}; +use ruff_python_ast::{self as ast, CmpOp, Expr, Ranged, UnaryOp}; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Edit, Fix}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pycodestyle/rules/type_comparison.rs b/crates/ruff/src/rules/pycodestyle/rules/type_comparison.rs index 2bd337d993..59fb21577b 100644 --- a/crates/ruff/src/rules/pycodestyle/rules/type_comparison.rs +++ b/crates/ruff/src/rules/pycodestyle/rules/type_comparison.rs @@ -1,5 +1,5 @@ use itertools::izip; -use rustpython_ast::{self as ast, CmpOp, Constant, Expr, Ranged}; +use ruff_python_ast::{self as ast, CmpOp, Constant, Expr, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pydocstyle/rules/blank_before_after_class.rs b/crates/ruff/src/rules/pydocstyle/rules/blank_before_after_class.rs index a9bcc5051c..77f55b0744 100644 --- a/crates/ruff/src/rules/pydocstyle/rules/blank_before_after_class.rs +++ b/crates/ruff/src/rules/pydocstyle/rules/blank_before_after_class.rs @@ -1,5 +1,5 @@ +use ruff_python_ast::Ranged; use ruff_text_size::{TextLen, TextRange}; -use rustpython_ast::Ranged; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Edit, Fix}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pydocstyle/rules/blank_before_after_function.rs b/crates/ruff/src/rules/pydocstyle/rules/blank_before_after_function.rs index a0057f0d3e..a41f64dfeb 100644 --- a/crates/ruff/src/rules/pydocstyle/rules/blank_before_after_function.rs +++ b/crates/ruff/src/rules/pydocstyle/rules/blank_before_after_function.rs @@ -1,7 +1,7 @@ use once_cell::sync::Lazy; use regex::Regex; +use ruff_python_ast::Ranged; use ruff_text_size::{TextLen, TextRange}; -use rustpython_ast::Ranged; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Edit, Fix}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pydocstyle/rules/capitalized.rs b/crates/ruff/src/rules/pydocstyle/rules/capitalized.rs index b254c83471..918a5d2c32 100644 --- a/crates/ruff/src/rules/pydocstyle/rules/capitalized.rs +++ b/crates/ruff/src/rules/pydocstyle/rules/capitalized.rs @@ -1,5 +1,5 @@ +use ruff_python_ast::Ranged; use ruff_text_size::{TextLen, TextRange}; -use rustpython_ast::Ranged; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Edit, Fix}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pydocstyle/rules/multi_line_summary_start.rs b/crates/ruff/src/rules/pydocstyle/rules/multi_line_summary_start.rs index dee434735a..46d3f6eed3 100644 --- a/crates/ruff/src/rules/pydocstyle/rules/multi_line_summary_start.rs +++ b/crates/ruff/src/rules/pydocstyle/rules/multi_line_summary_start.rs @@ -1,5 +1,5 @@ +use ruff_python_ast::Ranged; use ruff_text_size::{TextRange, TextSize}; -use rustpython_ast::Ranged; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Edit, Fix}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pydocstyle/rules/newline_after_last_paragraph.rs b/crates/ruff/src/rules/pydocstyle/rules/newline_after_last_paragraph.rs index d03d32ea99..3d61be2540 100644 --- a/crates/ruff/src/rules/pydocstyle/rules/newline_after_last_paragraph.rs +++ b/crates/ruff/src/rules/pydocstyle/rules/newline_after_last_paragraph.rs @@ -1,5 +1,5 @@ +use ruff_python_ast::Ranged; use ruff_text_size::{TextLen, TextSize}; -use rustpython_ast::Ranged; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Edit, Fix}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pydocstyle/rules/no_signature.rs b/crates/ruff/src/rules/pydocstyle/rules/no_signature.rs index b32032abd4..07ff14f114 100644 --- a/crates/ruff/src/rules/pydocstyle/rules/no_signature.rs +++ b/crates/ruff/src/rules/pydocstyle/rules/no_signature.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Stmt}; +use ruff_python_ast::{self as ast, Stmt}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pydocstyle/rules/sections.rs b/crates/ruff/src/rules/pydocstyle/rules/sections.rs index 53a759370b..99aaeb55d0 100644 --- a/crates/ruff/src/rules/pydocstyle/rules/sections.rs +++ b/crates/ruff/src/rules/pydocstyle/rules/sections.rs @@ -1,9 +1,9 @@ use itertools::Itertools; use once_cell::sync::Lazy; use regex::Regex; +use ruff_python_ast::{self as ast, ArgWithDefault, Stmt}; use ruff_text_size::{TextLen, TextRange, TextSize}; use rustc_hash::FxHashSet; -use rustpython_ast::{self as ast, ArgWithDefault, Stmt}; use ruff_diagnostics::{AlwaysAutofixableViolation, Violation}; use ruff_diagnostics::{Diagnostic, Edit, Fix}; diff --git a/crates/ruff/src/rules/pyflakes/cformat.rs b/crates/ruff/src/rules/pyflakes/cformat.rs index 1f9279c241..9fccc47884 100644 --- a/crates/ruff/src/rules/pyflakes/cformat.rs +++ b/crates/ruff/src/rules/pyflakes/cformat.rs @@ -2,10 +2,10 @@ use std::convert::TryFrom; use std::str::FromStr; -use rustc_hash::FxHashSet; -use rustpython_format::cformat::{ +use ruff_python_literal::cformat::{ CFormatError, CFormatPart, CFormatPrecision, CFormatQuantity, CFormatSpec, CFormatString, }; +use rustc_hash::FxHashSet; pub(crate) struct CFormatSummary { pub(crate) starred: bool, diff --git a/crates/ruff/src/rules/pyflakes/fixes.rs b/crates/ruff/src/rules/pyflakes/fixes.rs index 624e7f8634..4d2bcdc986 100644 --- a/crates/ruff/src/rules/pyflakes/fixes.rs +++ b/crates/ruff/src/rules/pyflakes/fixes.rs @@ -1,6 +1,6 @@ use anyhow::{Context, Ok, Result}; +use ruff_python_ast::{Expr, Ranged}; use ruff_text_size::TextRange; -use rustpython_ast::{Expr, Ranged}; use ruff_diagnostics::Edit; use ruff_python_codegen::Stylist; diff --git a/crates/ruff/src/rules/pyflakes/format.rs b/crates/ruff/src/rules/pyflakes/format.rs index abb52e8c8a..101a51a6c5 100644 --- a/crates/ruff/src/rules/pyflakes/format.rs +++ b/crates/ruff/src/rules/pyflakes/format.rs @@ -1,7 +1,7 @@ //! Implements helper functions for using vendored/format.rs use std::convert::TryFrom; -use rustpython_format::{ +use ruff_python_literal::format::{ FieldName, FieldType, FormatParseError, FormatPart, FormatString, FromTemplate, }; diff --git a/crates/ruff/src/rules/pyflakes/mod.rs b/crates/ruff/src/rules/pyflakes/mod.rs index 44ae43add7..e2dae95b69 100644 --- a/crates/ruff/src/rules/pyflakes/mod.rs +++ b/crates/ruff/src/rules/pyflakes/mod.rs @@ -11,7 +11,7 @@ mod tests { use anyhow::Result; use regex::Regex; - use rustpython_parser::lexer::LexResult; + use ruff_python_parser::lexer::LexResult; use test_case::test_case; use ruff_diagnostics::Diagnostic; diff --git a/crates/ruff/src/rules/pyflakes/rules/assert_tuple.rs b/crates/ruff/src/rules/pyflakes/rules/assert_tuple.rs index 69a09e4e75..b83e60914e 100644 --- a/crates/ruff/src/rules/pyflakes/rules/assert_tuple.rs +++ b/crates/ruff/src/rules/pyflakes/rules/assert_tuple.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Expr, Ranged, Stmt}; +use ruff_python_ast::{self as ast, Expr, Ranged, Stmt}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pyflakes/rules/break_outside_loop.rs b/crates/ruff/src/rules/pyflakes/rules/break_outside_loop.rs index 05c71512ae..cfe9323c43 100644 --- a/crates/ruff/src/rules/pyflakes/rules/break_outside_loop.rs +++ b/crates/ruff/src/rules/pyflakes/rules/break_outside_loop.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Ranged, Stmt}; +use ruff_python_ast::{self as ast, Ranged, Stmt}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pyflakes/rules/continue_outside_loop.rs b/crates/ruff/src/rules/pyflakes/rules/continue_outside_loop.rs index 38a335c27f..5e773e4095 100644 --- a/crates/ruff/src/rules/pyflakes/rules/continue_outside_loop.rs +++ b/crates/ruff/src/rules/pyflakes/rules/continue_outside_loop.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Ranged, Stmt}; +use ruff_python_ast::{self as ast, Ranged, Stmt}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pyflakes/rules/default_except_not_last.rs b/crates/ruff/src/rules/pyflakes/rules/default_except_not_last.rs index d897dd2a1a..dd740fac70 100644 --- a/crates/ruff/src/rules/pyflakes/rules/default_except_not_last.rs +++ b/crates/ruff/src/rules/pyflakes/rules/default_except_not_last.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, ExceptHandler}; +use ruff_python_ast::{self as ast, ExceptHandler}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pyflakes/rules/f_string_missing_placeholders.rs b/crates/ruff/src/rules/pyflakes/rules/f_string_missing_placeholders.rs index 7cb1f8163b..86cd9e6ec7 100644 --- a/crates/ruff/src/rules/pyflakes/rules/f_string_missing_placeholders.rs +++ b/crates/ruff/src/rules/pyflakes/rules/f_string_missing_placeholders.rs @@ -1,6 +1,6 @@ +use ruff_python_ast::{Expr, Ranged}; +use ruff_python_parser::{lexer, Mode, StringKind, Tok}; use ruff_text_size::{TextRange, TextSize}; -use rustpython_ast::{Expr, Ranged}; -use rustpython_parser::{lexer, Mode, StringKind, Tok}; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Edit, Fix}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pyflakes/rules/future_feature_not_defined.rs b/crates/ruff/src/rules/pyflakes/rules/future_feature_not_defined.rs index 56fb9b37c7..ff6aa39185 100644 --- a/crates/ruff/src/rules/pyflakes/rules/future_feature_not_defined.rs +++ b/crates/ruff/src/rules/pyflakes/rules/future_feature_not_defined.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Alias, Ranged}; +use ruff_python_ast::{Alias, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pyflakes/rules/if_tuple.rs b/crates/ruff/src/rules/pyflakes/rules/if_tuple.rs index d6f86b5e23..4644adac01 100644 --- a/crates/ruff/src/rules/pyflakes/rules/if_tuple.rs +++ b/crates/ruff/src/rules/pyflakes/rules/if_tuple.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Expr, Ranged, StmtIf}; +use ruff_python_ast::{self as ast, Expr, Ranged, StmtIf}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pyflakes/rules/invalid_literal_comparisons.rs b/crates/ruff/src/rules/pyflakes/rules/invalid_literal_comparisons.rs index 5e8755d538..c29012cd20 100644 --- a/crates/ruff/src/rules/pyflakes/rules/invalid_literal_comparisons.rs +++ b/crates/ruff/src/rules/pyflakes/rules/invalid_literal_comparisons.rs @@ -1,5 +1,5 @@ use log::error; -use rustpython_ast::{CmpOp, Expr, Ranged}; +use ruff_python_ast::{CmpOp, Expr, Ranged}; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Edit, Fix}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pyflakes/rules/invalid_print_syntax.rs b/crates/ruff/src/rules/pyflakes/rules/invalid_print_syntax.rs index fe7211cd9a..e68a348b31 100644 --- a/crates/ruff/src/rules/pyflakes/rules/invalid_print_syntax.rs +++ b/crates/ruff/src/rules/pyflakes/rules/invalid_print_syntax.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Expr, Ranged}; +use ruff_python_ast::{self as ast, Expr, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pyflakes/rules/raise_not_implemented.rs b/crates/ruff/src/rules/pyflakes/rules/raise_not_implemented.rs index 31f5ad8adb..a51440439e 100644 --- a/crates/ruff/src/rules/pyflakes/rules/raise_not_implemented.rs +++ b/crates/ruff/src/rules/pyflakes/rules/raise_not_implemented.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Expr, Ranged}; +use ruff_python_ast::{self as ast, Expr, Ranged}; use ruff_diagnostics::{AutofixKind, Diagnostic, Edit, Fix, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pyflakes/rules/repeated_keys.rs b/crates/ruff/src/rules/pyflakes/rules/repeated_keys.rs index 6cdcbdc8b5..1876b65c05 100644 --- a/crates/ruff/src/rules/pyflakes/rules/repeated_keys.rs +++ b/crates/ruff/src/rules/pyflakes/rules/repeated_keys.rs @@ -1,7 +1,7 @@ use std::hash::BuildHasherDefault; +use ruff_python_ast::{Expr, Ranged}; use rustc_hash::{FxHashMap, FxHashSet}; -use rustpython_ast::{Expr, Ranged}; use ruff_diagnostics::{AutofixKind, Diagnostic, Edit, Fix, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pyflakes/rules/return_outside_function.rs b/crates/ruff/src/rules/pyflakes/rules/return_outside_function.rs index a2ab90a41d..6028e57491 100644 --- a/crates/ruff/src/rules/pyflakes/rules/return_outside_function.rs +++ b/crates/ruff/src/rules/pyflakes/rules/return_outside_function.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Ranged, Stmt}; +use ruff_python_ast::{Ranged, Stmt}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pyflakes/rules/starred_expressions.rs b/crates/ruff/src/rules/pyflakes/rules/starred_expressions.rs index aab23dd666..50903a026e 100644 --- a/crates/ruff/src/rules/pyflakes/rules/starred_expressions.rs +++ b/crates/ruff/src/rules/pyflakes/rules/starred_expressions.rs @@ -1,5 +1,5 @@ +use ruff_python_ast::Expr; use ruff_text_size::TextRange; -use rustpython_ast::Expr; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pyflakes/rules/strings.rs b/crates/ruff/src/rules/pyflakes/rules/strings.rs index aff48a1d99..a57ceead4d 100644 --- a/crates/ruff/src/rules/pyflakes/rules/strings.rs +++ b/crates/ruff/src/rules/pyflakes/rules/strings.rs @@ -1,8 +1,8 @@ use std::string::ToString; +use ruff_python_ast::{self as ast, Constant, Expr, Identifier, Keyword}; use ruff_text_size::TextRange; use rustc_hash::FxHashSet; -use rustpython_ast::{self as ast, Constant, Expr, Identifier, Keyword}; use ruff_diagnostics::{AlwaysAutofixableViolation, AutofixKind, Diagnostic, Fix, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pyflakes/rules/unused_variable.rs b/crates/ruff/src/rules/pyflakes/rules/unused_variable.rs index b4d5ca2226..50c17d1085 100644 --- a/crates/ruff/src/rules/pyflakes/rules/unused_variable.rs +++ b/crates/ruff/src/rules/pyflakes/rules/unused_variable.rs @@ -1,7 +1,7 @@ use itertools::Itertools; +use ruff_python_ast::{self as ast, Ranged, Stmt}; +use ruff_python_parser::{lexer, Mode, Tok}; use ruff_text_size::{TextRange, TextSize}; -use rustpython_ast::{self as ast, Ranged, Stmt}; -use rustpython_parser::{lexer, Mode, Tok}; use ruff_diagnostics::{AutofixKind, Diagnostic, Edit, Fix, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pyflakes/rules/yield_outside_function.rs b/crates/ruff/src/rules/pyflakes/rules/yield_outside_function.rs index ffaf92bb39..57c6b4b687 100644 --- a/crates/ruff/src/rules/pyflakes/rules/yield_outside_function.rs +++ b/crates/ruff/src/rules/pyflakes/rules/yield_outside_function.rs @@ -1,6 +1,6 @@ use std::fmt; -use rustpython_ast::{Expr, Ranged}; +use ruff_python_ast::{Expr, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pygrep_hooks/rules/blanket_noqa.rs b/crates/ruff/src/rules/pygrep_hooks/rules/blanket_noqa.rs index e8524a0030..5f68fc9ec6 100644 --- a/crates/ruff/src/rules/pygrep_hooks/rules/blanket_noqa.rs +++ b/crates/ruff/src/rules/pygrep_hooks/rules/blanket_noqa.rs @@ -1,4 +1,4 @@ -use rustpython_ast::Ranged; +use ruff_python_ast::Ranged; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pygrep_hooks/rules/deprecated_log_warn.rs b/crates/ruff/src/rules/pygrep_hooks/rules/deprecated_log_warn.rs index fddc81b98d..4c4fdb1943 100644 --- a/crates/ruff/src/rules/pygrep_hooks/rules/deprecated_log_warn.rs +++ b/crates/ruff/src/rules/pygrep_hooks/rules/deprecated_log_warn.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Expr, Ranged}; +use ruff_python_ast::{Expr, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pygrep_hooks/rules/invalid_mock_access.rs b/crates/ruff/src/rules/pygrep_hooks/rules/invalid_mock_access.rs index 5ae4d4fc6e..0839fa943d 100644 --- a/crates/ruff/src/rules/pygrep_hooks/rules/invalid_mock_access.rs +++ b/crates/ruff/src/rules/pygrep_hooks/rules/invalid_mock_access.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Expr, Ranged}; +use ruff_python_ast::{self as ast, Expr, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pygrep_hooks/rules/no_eval.rs b/crates/ruff/src/rules/pygrep_hooks/rules/no_eval.rs index 8e66b5da2f..59fd8d2ccd 100644 --- a/crates/ruff/src/rules/pygrep_hooks/rules/no_eval.rs +++ b/crates/ruff/src/rules/pygrep_hooks/rules/no_eval.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Expr, Ranged}; +use ruff_python_ast::{self as ast, Expr, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pylint/helpers.rs b/crates/ruff/src/rules/pylint/helpers.rs index cf68493ca4..1b04390398 100644 --- a/crates/ruff/src/rules/pylint/helpers.rs +++ b/crates/ruff/src/rules/pylint/helpers.rs @@ -1,8 +1,8 @@ use std::fmt; +use ruff_python_ast as ast; use ruff_python_ast::helpers::find_keyword; -use rustpython_ast::{CmpOp, Constant, Expr, Keyword}; -use rustpython_parser::ast; +use ruff_python_ast::{CmpOp, Constant, Expr, Keyword}; use ruff_python_semantic::analyze::function_type; use ruff_python_semantic::{ScopeKind, SemanticModel}; diff --git a/crates/ruff/src/rules/pylint/rules/assert_on_string_literal.rs b/crates/ruff/src/rules/pylint/rules/assert_on_string_literal.rs index fc7f5b0677..46bbf2e86a 100644 --- a/crates/ruff/src/rules/pylint/rules/assert_on_string_literal.rs +++ b/crates/ruff/src/rules/pylint/rules/assert_on_string_literal.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Constant, Expr, Ranged}; +use ruff_python_ast::{self as ast, Constant, Expr, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pylint/rules/await_outside_async.rs b/crates/ruff/src/rules/pylint/rules/await_outside_async.rs index 0ba9037fe1..4bf34f4a59 100644 --- a/crates/ruff/src/rules/pylint/rules/await_outside_async.rs +++ b/crates/ruff/src/rules/pylint/rules/await_outside_async.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Expr, Ranged}; +use ruff_python_ast::{Expr, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pylint/rules/bad_str_strip_call.rs b/crates/ruff/src/rules/pylint/rules/bad_str_strip_call.rs index 3ff8236ca7..a1f768bd55 100644 --- a/crates/ruff/src/rules/pylint/rules/bad_str_strip_call.rs +++ b/crates/ruff/src/rules/pylint/rules/bad_str_strip_call.rs @@ -1,7 +1,7 @@ use std::fmt; +use ruff_python_ast::{self as ast, Constant, Expr, Ranged}; use rustc_hash::FxHashSet; -use rustpython_ast::{self as ast, Constant, Expr, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pylint/rules/bad_string_format_type.rs b/crates/ruff/src/rules/pylint/rules/bad_string_format_type.rs index d1bd29c2e9..857fc4e5db 100644 --- a/crates/ruff/src/rules/pylint/rules/bad_string_format_type.rs +++ b/crates/ruff/src/rules/pylint/rules/bad_string_format_type.rs @@ -1,10 +1,10 @@ use std::str::FromStr; +use ruff_python_ast::{self as ast, Constant, Expr, Ranged}; +use ruff_python_literal::cformat::{CFormatPart, CFormatSpec, CFormatStrOrBytes, CFormatString}; +use ruff_python_parser::{lexer, Mode}; use ruff_text_size::TextRange; use rustc_hash::FxHashMap; -use rustpython_ast::{self as ast, Constant, Expr, Ranged}; -use rustpython_format::cformat::{CFormatPart, CFormatSpec, CFormatStrOrBytes, CFormatString}; -use rustpython_parser::{lexer, Mode}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pylint/rules/binary_op_exception.rs b/crates/ruff/src/rules/pylint/rules/binary_op_exception.rs index b2c65e0418..4ec244fc93 100644 --- a/crates/ruff/src/rules/pylint/rules/binary_op_exception.rs +++ b/crates/ruff/src/rules/pylint/rules/binary_op_exception.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, ExceptHandler, Expr, Ranged}; +use ruff_python_ast::{self as ast, ExceptHandler, Expr, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pylint/rules/collapsible_else_if.rs b/crates/ruff/src/rules/pylint/rules/collapsible_else_if.rs index 561a013394..28b9728def 100644 --- a/crates/ruff/src/rules/pylint/rules/collapsible_else_if.rs +++ b/crates/ruff/src/rules/pylint/rules/collapsible_else_if.rs @@ -1,5 +1,5 @@ +use ruff_python_ast::{ElifElseClause, Ranged, Stmt}; use ruff_text_size::TextRange; -use rustpython_ast::{ElifElseClause, Ranged, Stmt}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pylint/rules/compare_to_empty_string.rs b/crates/ruff/src/rules/pylint/rules/compare_to_empty_string.rs index 5224399fa7..f784489f60 100644 --- a/crates/ruff/src/rules/pylint/rules/compare_to_empty_string.rs +++ b/crates/ruff/src/rules/pylint/rules/compare_to_empty_string.rs @@ -1,6 +1,6 @@ use anyhow::bail; use itertools::Itertools; -use rustpython_ast::{self as ast, CmpOp, Constant, Expr, Ranged}; +use ruff_python_ast::{self as ast, CmpOp, Constant, Expr, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pylint/rules/comparison_of_constant.rs b/crates/ruff/src/rules/pylint/rules/comparison_of_constant.rs index d2ed350c65..10efc98391 100644 --- a/crates/ruff/src/rules/pylint/rules/comparison_of_constant.rs +++ b/crates/ruff/src/rules/pylint/rules/comparison_of_constant.rs @@ -1,5 +1,5 @@ use itertools::Itertools; -use rustpython_ast::{self as ast, CmpOp, Expr, Ranged}; +use ruff_python_ast::{self as ast, CmpOp, Expr, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pylint/rules/comparison_with_itself.rs b/crates/ruff/src/rules/pylint/rules/comparison_with_itself.rs index e055012986..66bdad7880 100644 --- a/crates/ruff/src/rules/pylint/rules/comparison_with_itself.rs +++ b/crates/ruff/src/rules/pylint/rules/comparison_with_itself.rs @@ -1,5 +1,5 @@ use itertools::Itertools; -use rustpython_ast::{CmpOp, Expr, Ranged}; +use ruff_python_ast::{CmpOp, Expr, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pylint/rules/continue_in_finally.rs b/crates/ruff/src/rules/pylint/rules/continue_in_finally.rs index f11b6d55c7..90f75b83e4 100644 --- a/crates/ruff/src/rules/pylint/rules/continue_in_finally.rs +++ b/crates/ruff/src/rules/pylint/rules/continue_in_finally.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Ranged, Stmt}; +use ruff_python_ast::{self as ast, Ranged, Stmt}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pylint/rules/duplicate_bases.rs b/crates/ruff/src/rules/pylint/rules/duplicate_bases.rs index 0757975a54..4fe7b00192 100644 --- a/crates/ruff/src/rules/pylint/rules/duplicate_bases.rs +++ b/crates/ruff/src/rules/pylint/rules/duplicate_bases.rs @@ -1,7 +1,7 @@ use std::hash::BuildHasherDefault; +use ruff_python_ast::{self as ast, Expr, Ranged}; use rustc_hash::FxHashSet; -use rustpython_ast::{self as ast, Expr, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pylint/rules/duplicate_value.rs b/crates/ruff/src/rules/pylint/rules/duplicate_value.rs index c2e5a08521..194e0bc55d 100644 --- a/crates/ruff/src/rules/pylint/rules/duplicate_value.rs +++ b/crates/ruff/src/rules/pylint/rules/duplicate_value.rs @@ -1,5 +1,5 @@ +use ruff_python_ast::{self as ast, Expr, Ranged}; use rustc_hash::FxHashSet; -use rustpython_ast::{self as ast, Expr, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pylint/rules/import_self.rs b/crates/ruff/src/rules/pylint/rules/import_self.rs index 88ecbb679f..bcd7f26c0a 100644 --- a/crates/ruff/src/rules/pylint/rules/import_self.rs +++ b/crates/ruff/src/rules/pylint/rules/import_self.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Alias, Ranged}; +use ruff_python_ast::{Alias, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pylint/rules/invalid_envvar_default.rs b/crates/ruff/src/rules/pylint/rules/invalid_envvar_default.rs index 07cb4e9175..5c7011a009 100644 --- a/crates/ruff/src/rules/pylint/rules/invalid_envvar_default.rs +++ b/crates/ruff/src/rules/pylint/rules/invalid_envvar_default.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Constant, Expr, Keyword, Operator, Ranged}; +use ruff_python_ast::{self as ast, Constant, Expr, Keyword, Operator, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pylint/rules/invalid_envvar_value.rs b/crates/ruff/src/rules/pylint/rules/invalid_envvar_value.rs index 424d45087a..2f0acee2db 100644 --- a/crates/ruff/src/rules/pylint/rules/invalid_envvar_value.rs +++ b/crates/ruff/src/rules/pylint/rules/invalid_envvar_value.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Constant, Expr, Keyword, Operator, Ranged}; +use ruff_python_ast::{self as ast, Constant, Expr, Keyword, Operator, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pylint/rules/invalid_str_return.rs b/crates/ruff/src/rules/pylint/rules/invalid_str_return.rs index bee5e9eef9..74eddd0f92 100644 --- a/crates/ruff/src/rules/pylint/rules/invalid_str_return.rs +++ b/crates/ruff/src/rules/pylint/rules/invalid_str_return.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Ranged, Stmt}; +use ruff_python_ast::{Ranged, Stmt}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pylint/rules/iteration_over_set.rs b/crates/ruff/src/rules/pylint/rules/iteration_over_set.rs index d990ef7b50..0c3ea8e17b 100644 --- a/crates/ruff/src/rules/pylint/rules/iteration_over_set.rs +++ b/crates/ruff/src/rules/pylint/rules/iteration_over_set.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Expr, Ranged}; +use ruff_python_ast::{self as ast, Expr, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pylint/rules/load_before_global_declaration.rs b/crates/ruff/src/rules/pylint/rules/load_before_global_declaration.rs index fa8585ed0f..f34d20d142 100644 --- a/crates/ruff/src/rules/pylint/rules/load_before_global_declaration.rs +++ b/crates/ruff/src/rules/pylint/rules/load_before_global_declaration.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Expr, Ranged}; +use ruff_python_ast::{Expr, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pylint/rules/logging.rs b/crates/ruff/src/rules/pylint/rules/logging.rs index a1fc13abb3..1c3bbdefd1 100644 --- a/crates/ruff/src/rules/pylint/rules/logging.rs +++ b/crates/ruff/src/rules/pylint/rules/logging.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Constant, Expr, Keyword, Ranged}; +use ruff_python_ast::{self as ast, Constant, Expr, Keyword, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pylint/rules/magic_value_comparison.rs b/crates/ruff/src/rules/pylint/rules/magic_value_comparison.rs index f83de2a116..0c7385c410 100644 --- a/crates/ruff/src/rules/pylint/rules/magic_value_comparison.rs +++ b/crates/ruff/src/rules/pylint/rules/magic_value_comparison.rs @@ -1,5 +1,5 @@ use itertools::Itertools; -use rustpython_ast::{self as ast, Constant, Expr, Ranged, UnaryOp}; +use ruff_python_ast::{self as ast, Constant, Expr, Ranged, UnaryOp}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pylint/rules/manual_import_from.rs b/crates/ruff/src/rules/pylint/rules/manual_import_from.rs index cd566b1eb8..578377340a 100644 --- a/crates/ruff/src/rules/pylint/rules/manual_import_from.rs +++ b/crates/ruff/src/rules/pylint/rules/manual_import_from.rs @@ -1,5 +1,5 @@ +use ruff_python_ast::{self as ast, Alias, Identifier, Int, Ranged, Stmt}; use ruff_text_size::TextRange; -use rustpython_ast::{self as ast, Alias, Identifier, Int, Ranged, Stmt}; use ruff_diagnostics::{AutofixKind, Diagnostic, Edit, Fix, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pylint/rules/named_expr_without_context.rs b/crates/ruff/src/rules/pylint/rules/named_expr_without_context.rs index 912787c97d..13f935bf73 100644 --- a/crates/ruff/src/rules/pylint/rules/named_expr_without_context.rs +++ b/crates/ruff/src/rules/pylint/rules/named_expr_without_context.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Expr}; +use ruff_python_ast::{self as ast, Expr}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pylint/rules/nested_min_max.rs b/crates/ruff/src/rules/pylint/rules/nested_min_max.rs index 58d72a8003..f154bae763 100644 --- a/crates/ruff/src/rules/pylint/rules/nested_min_max.rs +++ b/crates/ruff/src/rules/pylint/rules/nested_min_max.rs @@ -1,5 +1,5 @@ +use ruff_python_ast::{self as ast, Expr, Keyword, Ranged}; use ruff_text_size::TextRange; -use rustpython_ast::{self as ast, Expr, Keyword, Ranged}; use ruff_diagnostics::{AutofixKind, Diagnostic, Edit, Fix, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pylint/rules/property_with_parameters.rs b/crates/ruff/src/rules/pylint/rules/property_with_parameters.rs index ba1d213e9e..f177480345 100644 --- a/crates/ruff/src/rules/pylint/rules/property_with_parameters.rs +++ b/crates/ruff/src/rules/pylint/rules/property_with_parameters.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Arguments, Decorator, Expr, Stmt}; +use ruff_python_ast::{self as ast, Arguments, Decorator, Expr, Stmt}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pylint/rules/redefined_loop_name.rs b/crates/ruff/src/rules/pylint/rules/redefined_loop_name.rs index 9c6e148304..8ae53d47e4 100644 --- a/crates/ruff/src/rules/pylint/rules/redefined_loop_name.rs +++ b/crates/ruff/src/rules/pylint/rules/redefined_loop_name.rs @@ -1,7 +1,7 @@ use std::{fmt, iter}; use regex::Regex; -use rustpython_ast::{self as ast, Expr, ExprContext, Ranged, Stmt, WithItem}; +use ruff_python_ast::{self as ast, Expr, ExprContext, Ranged, Stmt, WithItem}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pylint/rules/repeated_equality_comparison_target.rs b/crates/ruff/src/rules/pylint/rules/repeated_equality_comparison_target.rs index d975e6de8e..37d93751e8 100644 --- a/crates/ruff/src/rules/pylint/rules/repeated_equality_comparison_target.rs +++ b/crates/ruff/src/rules/pylint/rules/repeated_equality_comparison_target.rs @@ -2,8 +2,8 @@ use std::hash::BuildHasherDefault; use std::ops::Deref; use itertools::{any, Itertools}; +use ruff_python_ast::{BoolOp, CmpOp, Expr, ExprBoolOp, ExprCompare, Ranged}; use rustc_hash::FxHashMap; -use rustpython_ast::{BoolOp, CmpOp, Expr, ExprBoolOp, ExprCompare, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pylint/rules/repeated_isinstance_calls.rs b/crates/ruff/src/rules/pylint/rules/repeated_isinstance_calls.rs index ab33eb7f5d..2923cc3b98 100644 --- a/crates/ruff/src/rules/pylint/rules/repeated_isinstance_calls.rs +++ b/crates/ruff/src/rules/pylint/rules/repeated_isinstance_calls.rs @@ -1,6 +1,6 @@ use itertools::Itertools; +use ruff_python_ast::{self as ast, BoolOp, Expr, Ranged}; use rustc_hash::{FxHashMap, FxHashSet}; -use rustpython_ast::{self as ast, BoolOp, Expr, Ranged}; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Edit, Fix}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pylint/rules/return_in_init.rs b/crates/ruff/src/rules/pylint/rules/return_in_init.rs index f0e0f3a4af..0a4dadc530 100644 --- a/crates/ruff/src/rules/pylint/rules/return_in_init.rs +++ b/crates/ruff/src/rules/pylint/rules/return_in_init.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Ranged, Stmt}; +use ruff_python_ast::{self as ast, Ranged, Stmt}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pylint/rules/self_assigning_variable.rs b/crates/ruff/src/rules/pylint/rules/self_assigning_variable.rs index efd0c7b494..fe54bb484e 100644 --- a/crates/ruff/src/rules/pylint/rules/self_assigning_variable.rs +++ b/crates/ruff/src/rules/pylint/rules/self_assigning_variable.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Expr, Ranged}; +use ruff_python_ast::{self as ast, Expr, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pylint/rules/single_string_slots.rs b/crates/ruff/src/rules/pylint/rules/single_string_slots.rs index 6a5460ee12..e4b51fd9cd 100644 --- a/crates/ruff/src/rules/pylint/rules/single_string_slots.rs +++ b/crates/ruff/src/rules/pylint/rules/single_string_slots.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Constant, Expr, Stmt, StmtClassDef}; +use ruff_python_ast::{self as ast, Constant, Expr, Stmt, StmtClassDef}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pylint/rules/subprocess_popen_preexec_fn.rs b/crates/ruff/src/rules/pylint/rules/subprocess_popen_preexec_fn.rs index c1eec1e51f..847b2a23d3 100644 --- a/crates/ruff/src/rules/pylint/rules/subprocess_popen_preexec_fn.rs +++ b/crates/ruff/src/rules/pylint/rules/subprocess_popen_preexec_fn.rs @@ -1,7 +1,7 @@ use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::helpers::{find_keyword, is_const_none}; -use rustpython_ast::{Expr, Keyword, Ranged}; +use ruff_python_ast::{Expr, Keyword, Ranged}; use crate::checkers::ast::Checker; diff --git a/crates/ruff/src/rules/pylint/rules/sys_exit_alias.rs b/crates/ruff/src/rules/pylint/rules/sys_exit_alias.rs index 1331d16f03..32de0d6b19 100644 --- a/crates/ruff/src/rules/pylint/rules/sys_exit_alias.rs +++ b/crates/ruff/src/rules/pylint/rules/sys_exit_alias.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Expr, Ranged}; +use ruff_python_ast::{self as ast, Expr, Ranged}; use ruff_diagnostics::{AutofixKind, Diagnostic, Edit, Fix, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pylint/rules/too_many_arguments.rs b/crates/ruff/src/rules/pylint/rules/too_many_arguments.rs index baff183f89..f74965b5a1 100644 --- a/crates/ruff/src/rules/pylint/rules/too_many_arguments.rs +++ b/crates/ruff/src/rules/pylint/rules/too_many_arguments.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Arguments, Stmt}; +use ruff_python_ast::{Arguments, Stmt}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pylint/rules/too_many_branches.rs b/crates/ruff/src/rules/pylint/rules/too_many_branches.rs index a83f6d8d9e..466cb3e47a 100644 --- a/crates/ruff/src/rules/pylint/rules/too_many_branches.rs +++ b/crates/ruff/src/rules/pylint/rules/too_many_branches.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, ExceptHandler, Stmt}; +use ruff_python_ast::{self as ast, ExceptHandler, Stmt}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; @@ -183,8 +183,8 @@ pub(crate) fn too_many_branches( #[cfg(test)] mod tests { use anyhow::Result; - use rustpython_ast::Suite; - use rustpython_parser::Parse; + use ruff_python_ast::Suite; + use ruff_python_parser::Parse; use super::num_branches; diff --git a/crates/ruff/src/rules/pylint/rules/too_many_return_statements.rs b/crates/ruff/src/rules/pylint/rules/too_many_return_statements.rs index 0bb799fbeb..0a1c4f40fd 100644 --- a/crates/ruff/src/rules/pylint/rules/too_many_return_statements.rs +++ b/crates/ruff/src/rules/pylint/rules/too_many_return_statements.rs @@ -1,4 +1,4 @@ -use rustpython_ast::Stmt; +use ruff_python_ast::Stmt; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; @@ -98,8 +98,8 @@ pub(crate) fn too_many_return_statements( #[cfg(test)] mod tests { use anyhow::Result; - use rustpython_ast::Suite; - use rustpython_parser::Parse; + use ruff_python_ast::Suite; + use ruff_python_parser::Parse; use super::num_returns; diff --git a/crates/ruff/src/rules/pylint/rules/too_many_statements.rs b/crates/ruff/src/rules/pylint/rules/too_many_statements.rs index f9a7f7921d..3863c251e7 100644 --- a/crates/ruff/src/rules/pylint/rules/too_many_statements.rs +++ b/crates/ruff/src/rules/pylint/rules/too_many_statements.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, ExceptHandler, Stmt}; +use ruff_python_ast::{self as ast, ExceptHandler, Stmt}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; @@ -166,8 +166,8 @@ pub(crate) fn too_many_statements( #[cfg(test)] mod tests { use anyhow::Result; - use rustpython_ast::Suite; - use rustpython_parser::Parse; + use ruff_python_ast::Suite; + use ruff_python_parser::Parse; use super::num_statements; diff --git a/crates/ruff/src/rules/pylint/rules/type_bivariance.rs b/crates/ruff/src/rules/pylint/rules/type_bivariance.rs index 15bc18cddd..0227a8f46b 100644 --- a/crates/ruff/src/rules/pylint/rules/type_bivariance.rs +++ b/crates/ruff/src/rules/pylint/rules/type_bivariance.rs @@ -1,6 +1,6 @@ use std::fmt; -use rustpython_ast::{self as ast, Expr, Ranged}; +use ruff_python_ast::{self as ast, Expr, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pylint/rules/type_name_incorrect_variance.rs b/crates/ruff/src/rules/pylint/rules/type_name_incorrect_variance.rs index 427a855a13..75c89a35a2 100644 --- a/crates/ruff/src/rules/pylint/rules/type_name_incorrect_variance.rs +++ b/crates/ruff/src/rules/pylint/rules/type_name_incorrect_variance.rs @@ -1,6 +1,6 @@ use std::fmt; -use rustpython_ast::{self as ast, Expr, Ranged}; +use ruff_python_ast::{self as ast, Expr, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pylint/rules/type_param_name_mismatch.rs b/crates/ruff/src/rules/pylint/rules/type_param_name_mismatch.rs index 1bb47a473e..0c240b0c9c 100644 --- a/crates/ruff/src/rules/pylint/rules/type_param_name_mismatch.rs +++ b/crates/ruff/src/rules/pylint/rules/type_param_name_mismatch.rs @@ -1,6 +1,6 @@ use std::fmt; -use rustpython_ast::{self as ast, Expr, Ranged}; +use ruff_python_ast::{self as ast, Expr, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pylint/rules/unexpected_special_method_signature.rs b/crates/ruff/src/rules/pylint/rules/unexpected_special_method_signature.rs index 736aee30fc..53ae9acf42 100644 --- a/crates/ruff/src/rules/pylint/rules/unexpected_special_method_signature.rs +++ b/crates/ruff/src/rules/pylint/rules/unexpected_special_method_signature.rs @@ -1,6 +1,6 @@ use std::cmp::Ordering; -use rustpython_ast::{Arguments, Decorator, Stmt}; +use ruff_python_ast::{Arguments, Decorator, Stmt}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pylint/rules/unnecessary_direct_lambda_call.rs b/crates/ruff/src/rules/pylint/rules/unnecessary_direct_lambda_call.rs index 5751b1c2bd..197b6dc800 100644 --- a/crates/ruff/src/rules/pylint/rules/unnecessary_direct_lambda_call.rs +++ b/crates/ruff/src/rules/pylint/rules/unnecessary_direct_lambda_call.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Expr, Ranged}; +use ruff_python_ast::{Expr, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pylint/rules/useless_else_on_loop.rs b/crates/ruff/src/rules/pylint/rules/useless_else_on_loop.rs index caf60c1149..00b0caad33 100644 --- a/crates/ruff/src/rules/pylint/rules/useless_else_on_loop.rs +++ b/crates/ruff/src/rules/pylint/rules/useless_else_on_loop.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, ExceptHandler, MatchCase, Stmt}; +use ruff_python_ast::{self as ast, ExceptHandler, MatchCase, Stmt}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pylint/rules/useless_import_alias.rs b/crates/ruff/src/rules/pylint/rules/useless_import_alias.rs index 065b144c01..c62b3a17f6 100644 --- a/crates/ruff/src/rules/pylint/rules/useless_import_alias.rs +++ b/crates/ruff/src/rules/pylint/rules/useless_import_alias.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Alias, Ranged}; +use ruff_python_ast::{Alias, Ranged}; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Edit, Fix}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pylint/rules/useless_return.rs b/crates/ruff/src/rules/pylint/rules/useless_return.rs index c2d5324deb..d38cf9ae39 100644 --- a/crates/ruff/src/rules/pylint/rules/useless_return.rs +++ b/crates/ruff/src/rules/pylint/rules/useless_return.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Constant, Expr, Ranged, Stmt}; +use ruff_python_ast::{self as ast, Constant, Expr, Ranged, Stmt}; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pylint/rules/yield_from_in_async_function.rs b/crates/ruff/src/rules/pylint/rules/yield_from_in_async_function.rs index 2db4d7bac3..5ed24e994a 100644 --- a/crates/ruff/src/rules/pylint/rules/yield_from_in_async_function.rs +++ b/crates/ruff/src/rules/pylint/rules/yield_from_in_async_function.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{ExprYieldFrom, Ranged}; +use ruff_python_ast::{ExprYieldFrom, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pylint/rules/yield_in_init.rs b/crates/ruff/src/rules/pylint/rules/yield_in_init.rs index ed047b62a7..9d3aa3987d 100644 --- a/crates/ruff/src/rules/pylint/rules/yield_in_init.rs +++ b/crates/ruff/src/rules/pylint/rules/yield_in_init.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Expr, Ranged}; +use ruff_python_ast::{Expr, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pylint/settings.rs b/crates/ruff/src/rules/pylint/settings.rs index fd0ff2a5f5..6aab5503fa 100644 --- a/crates/ruff/src/rules/pylint/settings.rs +++ b/crates/ruff/src/rules/pylint/settings.rs @@ -1,7 +1,7 @@ //! Settings for the `pylint` plugin. use anyhow::anyhow; -use rustpython_ast::Constant; +use ruff_python_ast::Constant; use serde::{Deserialize, Serialize}; use ruff_macros::{CacheKey, CombineOptions, ConfigurationOptions}; diff --git a/crates/ruff/src/rules/pyupgrade/fixes.rs b/crates/ruff/src/rules/pyupgrade/fixes.rs index bcaee59295..9c9d315db0 100644 --- a/crates/ruff/src/rules/pyupgrade/fixes.rs +++ b/crates/ruff/src/rules/pyupgrade/fixes.rs @@ -1,8 +1,8 @@ use anyhow::Result; use libcst_native::ParenthesizableWhitespace; +use ruff_python_ast::{Expr, Ranged}; +use ruff_python_parser::{lexer, Mode, Tok}; use ruff_text_size::{TextRange, TextSize}; -use rustpython_ast::{Expr, Ranged}; -use rustpython_parser::{lexer, Mode, Tok}; use crate::autofix::codemods::CodegenStylist; use ruff_diagnostics::Edit; diff --git a/crates/ruff/src/rules/pyupgrade/rules/convert_named_tuple_functional_to_class.rs b/crates/ruff/src/rules/pyupgrade/rules/convert_named_tuple_functional_to_class.rs index e0029ec4a5..22bb091d03 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/convert_named_tuple_functional_to_class.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/convert_named_tuple_functional_to_class.rs @@ -1,7 +1,9 @@ use anyhow::{bail, Result}; use log::debug; +use ruff_python_ast::{ + self as ast, Constant, Expr, ExprContext, Identifier, Keyword, Ranged, Stmt, +}; use ruff_text_size::TextRange; -use rustpython_ast::{self as ast, Constant, Expr, ExprContext, Identifier, Keyword, Ranged, Stmt}; use ruff_diagnostics::{AutofixKind, Diagnostic, Edit, Fix, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pyupgrade/rules/convert_typed_dict_functional_to_class.rs b/crates/ruff/src/rules/pyupgrade/rules/convert_typed_dict_functional_to_class.rs index 3239d86838..b6b2f57d44 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/convert_typed_dict_functional_to_class.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/convert_typed_dict_functional_to_class.rs @@ -1,7 +1,9 @@ use anyhow::{bail, Result}; use log::debug; +use ruff_python_ast::{ + self as ast, Constant, Expr, ExprContext, Identifier, Keyword, Ranged, Stmt, +}; use ruff_text_size::TextRange; -use rustpython_ast::{self as ast, Constant, Expr, ExprContext, Identifier, Keyword, Ranged, Stmt}; use ruff_diagnostics::{AutofixKind, Diagnostic, Edit, Fix, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pyupgrade/rules/datetime_utc_alias.rs b/crates/ruff/src/rules/pyupgrade/rules/datetime_utc_alias.rs index 570ba3306e..7ab37ef3a6 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/datetime_utc_alias.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/datetime_utc_alias.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Expr, Ranged}; +use ruff_python_ast::{Expr, Ranged}; use ruff_diagnostics::{AutofixKind, Diagnostic, Edit, Fix, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pyupgrade/rules/deprecated_c_element_tree.rs b/crates/ruff/src/rules/pyupgrade/rules/deprecated_c_element_tree.rs index 61f61f4a10..577d96b53f 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/deprecated_c_element_tree.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/deprecated_c_element_tree.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Ranged, Stmt}; +use ruff_python_ast::{self as ast, Ranged, Stmt}; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Edit, Fix}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pyupgrade/rules/deprecated_import.rs b/crates/ruff/src/rules/pyupgrade/rules/deprecated_import.rs index 7b9b1e0e3d..40adda66b3 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/deprecated_import.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/deprecated_import.rs @@ -1,5 +1,5 @@ use itertools::Itertools; -use rustpython_ast::{Alias, Ranged, Stmt}; +use ruff_python_ast::{Alias, Ranged, Stmt}; use ruff_diagnostics::{AutofixKind, Diagnostic, Edit, Fix, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pyupgrade/rules/deprecated_mock_import.rs b/crates/ruff/src/rules/pyupgrade/rules/deprecated_mock_import.rs index 5878357576..6920e7dbd1 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/deprecated_mock_import.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/deprecated_mock_import.rs @@ -4,7 +4,7 @@ use libcst_native::{ ImportNames, Name, NameOrAttribute, ParenthesizableWhitespace, }; use log::error; -use rustpython_ast::{self as ast, Expr, Ranged, Stmt}; +use ruff_python_ast::{self as ast, Expr, Ranged, Stmt}; use crate::autofix::codemods::CodegenStylist; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Edit, Fix}; diff --git a/crates/ruff/src/rules/pyupgrade/rules/deprecated_unittest_alias.rs b/crates/ruff/src/rules/pyupgrade/rules/deprecated_unittest_alias.rs index 9f38f4d74e..f716a465bb 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/deprecated_unittest_alias.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/deprecated_unittest_alias.rs @@ -1,6 +1,6 @@ use once_cell::sync::Lazy; +use ruff_python_ast::{self as ast, Expr, Ranged}; use rustc_hash::FxHashMap; -use rustpython_ast::{self as ast, Expr, Ranged}; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Edit, Fix}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pyupgrade/rules/extraneous_parentheses.rs b/crates/ruff/src/rules/pyupgrade/rules/extraneous_parentheses.rs index 719c74e7ad..0ff8197520 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/extraneous_parentheses.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/extraneous_parentheses.rs @@ -1,6 +1,6 @@ +use ruff_python_parser::lexer::LexResult; +use ruff_python_parser::Tok; use ruff_text_size::TextRange; -use rustpython_parser::lexer::LexResult; -use rustpython_parser::Tok; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Edit, Fix}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pyupgrade/rules/f_strings.rs b/crates/ruff/src/rules/pyupgrade/rules/f_strings.rs index 334ebec882..c5d3542f7f 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/f_strings.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/f_strings.rs @@ -1,11 +1,11 @@ use std::borrow::Cow; -use ruff_text_size::TextRange; -use rustc_hash::FxHashMap; -use rustpython_ast::{self as ast, Constant, Expr, Keyword, Ranged}; -use rustpython_format::{ +use ruff_python_ast::{self as ast, Constant, Expr, Keyword, Ranged}; +use ruff_python_literal::format::{ FieldName, FieldNamePart, FieldType, FormatPart, FormatString, FromTemplate, }; +use ruff_text_size::TextRange; +use rustc_hash::FxHashMap; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Edit, Fix}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pyupgrade/rules/format_literals.rs b/crates/ruff/src/rules/pyupgrade/rules/format_literals.rs index 5dc7eeb5c9..1469cb7e74 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/format_literals.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/format_literals.rs @@ -2,7 +2,7 @@ use anyhow::{anyhow, Result}; use libcst_native::{Arg, Expression}; use once_cell::sync::Lazy; use regex::Regex; -use rustpython_ast::{Expr, Ranged}; +use ruff_python_ast::{Expr, Ranged}; use ruff_diagnostics::{AutofixKind, Diagnostic, Edit, Fix, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pyupgrade/rules/lru_cache_with_maxsize_none.rs b/crates/ruff/src/rules/pyupgrade/rules/lru_cache_with_maxsize_none.rs index 656e6753c1..b70653f6dd 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/lru_cache_with_maxsize_none.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/lru_cache_with_maxsize_none.rs @@ -1,5 +1,5 @@ +use ruff_python_ast::{self as ast, Decorator, Expr, Keyword, Ranged}; use ruff_text_size::TextRange; -use rustpython_ast::{self as ast, Decorator, Expr, Keyword, Ranged}; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Edit, Fix}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pyupgrade/rules/lru_cache_without_parameters.rs b/crates/ruff/src/rules/pyupgrade/rules/lru_cache_without_parameters.rs index e919cf0c7a..7d2364beaf 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/lru_cache_without_parameters.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/lru_cache_without_parameters.rs @@ -1,5 +1,5 @@ +use ruff_python_ast::{self as ast, Decorator, Expr, Ranged}; use ruff_text_size::TextRange; -use rustpython_ast::{self as ast, Decorator, Expr, Ranged}; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Edit, Fix}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pyupgrade/rules/native_literals.rs b/crates/ruff/src/rules/pyupgrade/rules/native_literals.rs index 402f8c7b59..f0942da106 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/native_literals.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/native_literals.rs @@ -2,7 +2,7 @@ use std::fmt; use std::str::FromStr; use num_bigint::BigInt; -use rustpython_ast::{self as ast, Constant, Expr, Keyword, Ranged}; +use ruff_python_ast::{self as ast, Constant, Expr, Keyword, Ranged}; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Edit, Fix}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pyupgrade/rules/open_alias.rs b/crates/ruff/src/rules/pyupgrade/rules/open_alias.rs index 381f6517de..9117703101 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/open_alias.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/open_alias.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Expr, Ranged}; +use ruff_python_ast::{Expr, Ranged}; use ruff_diagnostics::{AutofixKind, Diagnostic, Edit, Fix, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pyupgrade/rules/os_error_alias.rs b/crates/ruff/src/rules/pyupgrade/rules/os_error_alias.rs index 5fb7759eb0..4fdd9c9941 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/os_error_alias.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/os_error_alias.rs @@ -1,5 +1,5 @@ +use ruff_python_ast::{self as ast, ExceptHandler, Expr, ExprContext, Ranged}; use ruff_text_size::TextRange; -use rustpython_ast::{self as ast, ExceptHandler, Expr, ExprContext, Ranged}; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Edit, Fix}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pyupgrade/rules/outdated_version_block.rs b/crates/ruff/src/rules/pyupgrade/rules/outdated_version_block.rs index adb1350419..47fd10d095 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/outdated_version_block.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/outdated_version_block.rs @@ -1,8 +1,8 @@ use std::cmp::Ordering; use num_bigint::{BigInt, Sign}; +use ruff_python_ast::{self as ast, CmpOp, Constant, ElifElseClause, Expr, Ranged, StmtIf}; use ruff_text_size::{TextLen, TextRange}; -use rustpython_ast::{self as ast, CmpOp, Constant, ElifElseClause, Expr, Ranged, StmtIf}; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Edit, Fix}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pyupgrade/rules/printf_string_formatting.rs b/crates/ruff/src/rules/pyupgrade/rules/printf_string_formatting.rs index a82fc6760a..3b84a63208 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/printf_string_formatting.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/printf_string_formatting.rs @@ -1,11 +1,11 @@ use std::str::FromStr; -use ruff_text_size::TextRange; -use rustpython_ast::{self as ast, Constant, Expr, Ranged}; -use rustpython_format::cformat::{ +use ruff_python_ast::{self as ast, Constant, Expr, Ranged}; +use ruff_python_literal::cformat::{ CConversionFlags, CFormatPart, CFormatPrecision, CFormatQuantity, CFormatString, }; -use rustpython_parser::{lexer, Mode, Tok}; +use ruff_python_parser::{lexer, Mode, Tok}; +use ruff_text_size::TextRange; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Edit, Fix}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pyupgrade/rules/redundant_open_modes.rs b/crates/ruff/src/rules/pyupgrade/rules/redundant_open_modes.rs index 7ee67310df..df0a1156b5 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/redundant_open_modes.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/redundant_open_modes.rs @@ -1,9 +1,9 @@ use std::str::FromStr; use anyhow::{anyhow, Result}; +use ruff_python_ast::{self as ast, Constant, Expr, Keyword, Ranged}; +use ruff_python_parser::{lexer, Mode}; use ruff_text_size::TextSize; -use rustpython_ast::{self as ast, Constant, Expr, Keyword, Ranged}; -use rustpython_parser::{lexer, Mode}; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Edit, Fix}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pyupgrade/rules/replace_stdout_stderr.rs b/crates/ruff/src/rules/pyupgrade/rules/replace_stdout_stderr.rs index d32f8fb7ab..80b2891cf8 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/replace_stdout_stderr.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/replace_stdout_stderr.rs @@ -1,5 +1,5 @@ use anyhow::Result; -use rustpython_ast::{Expr, Keyword, Ranged}; +use ruff_python_ast::{Expr, Keyword, Ranged}; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Edit, Fix}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pyupgrade/rules/replace_universal_newlines.rs b/crates/ruff/src/rules/pyupgrade/rules/replace_universal_newlines.rs index 3eefd69850..ef9837d5dd 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/replace_universal_newlines.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/replace_universal_newlines.rs @@ -1,5 +1,5 @@ +use ruff_python_ast::{Expr, Keyword, Ranged}; use ruff_text_size::{TextLen, TextRange}; -use rustpython_ast::{Expr, Keyword, Ranged}; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Edit, Fix}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pyupgrade/rules/super_call_with_parameters.rs b/crates/ruff/src/rules/pyupgrade/rules/super_call_with_parameters.rs index cb56187487..46ec27b616 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/super_call_with_parameters.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/super_call_with_parameters.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Arg, ArgWithDefault, Expr, Ranged, Stmt}; +use ruff_python_ast::{self as ast, Arg, ArgWithDefault, Expr, Ranged, Stmt}; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pyupgrade/rules/type_of_primitive.rs b/crates/ruff/src/rules/pyupgrade/rules/type_of_primitive.rs index 51ada115d8..322e400328 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/type_of_primitive.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/type_of_primitive.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Expr, Ranged}; +use ruff_python_ast::{self as ast, Expr, Ranged}; use ruff_diagnostics::{AutofixKind, Diagnostic, Edit, Fix, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pyupgrade/rules/typing_text_str_alias.rs b/crates/ruff/src/rules/pyupgrade/rules/typing_text_str_alias.rs index 5ac4936636..fd82c568d1 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/typing_text_str_alias.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/typing_text_str_alias.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Expr, Ranged}; +use ruff_python_ast::{Expr, Ranged}; use ruff_diagnostics::{AutofixKind, Diagnostic, Edit, Fix, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pyupgrade/rules/unicode_kind_prefix.rs b/crates/ruff/src/rules/pyupgrade/rules/unicode_kind_prefix.rs index 1e430a0c46..fe61b19b1c 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/unicode_kind_prefix.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/unicode_kind_prefix.rs @@ -1,5 +1,5 @@ +use ruff_python_ast::{Expr, Ranged}; use ruff_text_size::{TextRange, TextSize}; -use rustpython_ast::{Expr, Ranged}; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Edit, Fix}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pyupgrade/rules/unnecessary_builtin_import.rs b/crates/ruff/src/rules/pyupgrade/rules/unnecessary_builtin_import.rs index 115585f90d..01e12717a8 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/unnecessary_builtin_import.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/unnecessary_builtin_import.rs @@ -1,5 +1,5 @@ use itertools::Itertools; -use rustpython_ast::{Alias, Ranged, Stmt}; +use ruff_python_ast::{Alias, Ranged, Stmt}; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pyupgrade/rules/unnecessary_class_parentheses.rs b/crates/ruff/src/rules/pyupgrade/rules/unnecessary_class_parentheses.rs index 835b4433d2..5d9817ca4a 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/unnecessary_class_parentheses.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/unnecessary_class_parentheses.rs @@ -1,7 +1,7 @@ use std::ops::Add; +use ruff_python_ast::{self as ast, Ranged}; use ruff_text_size::{TextRange, TextSize}; -use rustpython_ast::{self as ast, Ranged}; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Edit, Fix}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pyupgrade/rules/unnecessary_encode_utf8.rs b/crates/ruff/src/rules/pyupgrade/rules/unnecessary_encode_utf8.rs index 3e85b88d8c..9dad88d987 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/unnecessary_encode_utf8.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/unnecessary_encode_utf8.rs @@ -1,6 +1,6 @@ +use ruff_python_ast::{self as ast, Constant, Expr, Keyword, Ranged}; +use ruff_python_parser::{lexer, Mode, Tok}; use ruff_text_size::TextRange; -use rustpython_ast::{self as ast, Constant, Expr, Keyword, Ranged}; -use rustpython_parser::{lexer, Mode, Tok}; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Edit, Fix}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pyupgrade/rules/unnecessary_future_import.rs b/crates/ruff/src/rules/pyupgrade/rules/unnecessary_future_import.rs index e067a64330..52c5b543c8 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/unnecessary_future_import.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/unnecessary_future_import.rs @@ -1,5 +1,5 @@ use itertools::Itertools; -use rustpython_ast::{Alias, Ranged, Stmt}; +use ruff_python_ast::{Alias, Ranged, Stmt}; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pyupgrade/rules/unpacked_list_comprehension.rs b/crates/ruff/src/rules/pyupgrade/rules/unpacked_list_comprehension.rs index bd634d4c65..147f73c9b2 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/unpacked_list_comprehension.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/unpacked_list_comprehension.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Expr, Ranged}; +use ruff_python_ast::{self as ast, Expr, Ranged}; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Edit, Fix}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pyupgrade/rules/use_pep585_annotation.rs b/crates/ruff/src/rules/pyupgrade/rules/use_pep585_annotation.rs index e96f758574..b77a2d315d 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/use_pep585_annotation.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/use_pep585_annotation.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Expr, Ranged}; +use ruff_python_ast::{Expr, Ranged}; use ruff_diagnostics::{AutofixKind, Diagnostic, Edit, Fix, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pyupgrade/rules/use_pep604_annotation.rs b/crates/ruff/src/rules/pyupgrade/rules/use_pep604_annotation.rs index 3018b976e7..c2c619b740 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/use_pep604_annotation.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/use_pep604_annotation.rs @@ -1,6 +1,6 @@ use itertools::Either::{Left, Right}; use itertools::Itertools; -use rustpython_ast::{self as ast, Expr, Ranged}; +use ruff_python_ast::{self as ast, Expr, Ranged}; use ruff_diagnostics::{AutofixKind, Diagnostic, Edit, Fix, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pyupgrade/rules/use_pep604_isinstance.rs b/crates/ruff/src/rules/pyupgrade/rules/use_pep604_isinstance.rs index 147f421395..4fcfdb6d5e 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/use_pep604_isinstance.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/use_pep604_isinstance.rs @@ -1,7 +1,7 @@ use std::fmt; +use ruff_python_ast::{self as ast, Expr, Operator, Ranged}; use ruff_text_size::TextRange; -use rustpython_ast::{self as ast, Expr, Operator, Ranged}; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Edit, Fix}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pyupgrade/rules/useless_metaclass_type.rs b/crates/ruff/src/rules/pyupgrade/rules/useless_metaclass_type.rs index d8e847c190..70fd141857 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/useless_metaclass_type.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/useless_metaclass_type.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Expr, Ranged, Stmt}; +use ruff_python_ast::{self as ast, Expr, Ranged, Stmt}; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pyupgrade/rules/useless_object_inheritance.rs b/crates/ruff/src/rules/pyupgrade/rules/useless_object_inheritance.rs index ea26a66e0f..32db85e693 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/useless_object_inheritance.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/useless_object_inheritance.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Expr, Ranged}; +use ruff_python_ast::{self as ast, Expr, Ranged}; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Fix}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pyupgrade/rules/yield_in_for_loop.rs b/crates/ruff/src/rules/pyupgrade/rules/yield_in_for_loop.rs index 3d7e530f92..ddb832a4a5 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/yield_in_for_loop.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/yield_in_for_loop.rs @@ -1,5 +1,5 @@ +use ruff_python_ast::{self as ast, Expr, ExprContext, Ranged, Stmt}; use rustc_hash::FxHashMap; -use rustpython_ast::{self as ast, Expr, ExprContext, Ranged, Stmt}; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Edit, Fix}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/pyupgrade/types.rs b/crates/ruff/src/rules/pyupgrade/types.rs index 0d47cfe485..81c0cfe214 100644 --- a/crates/ruff/src/rules/pyupgrade/types.rs +++ b/crates/ruff/src/rules/pyupgrade/types.rs @@ -1,4 +1,4 @@ -use rustpython_ast::Constant; +use ruff_python_ast::Constant; use serde::{Deserialize, Serialize}; #[derive(Debug, Copy, Clone, PartialEq, Eq, Serialize, Deserialize)] diff --git a/crates/ruff/src/rules/ruff/rules/asyncio_dangling_task.rs b/crates/ruff/src/rules/ruff/rules/asyncio_dangling_task.rs index 695c0a19e2..806b0e71fe 100644 --- a/crates/ruff/src/rules/ruff/rules/asyncio_dangling_task.rs +++ b/crates/ruff/src/rules/ruff/rules/asyncio_dangling_task.rs @@ -1,6 +1,6 @@ use std::fmt; -use rustpython_ast::{self as ast, Expr, Ranged}; +use ruff_python_ast::{self as ast, Expr, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/ruff/rules/collection_literal_concatenation.rs b/crates/ruff/src/rules/ruff/rules/collection_literal_concatenation.rs index 53aef1b68a..a2156f8e11 100644 --- a/crates/ruff/src/rules/ruff/rules/collection_literal_concatenation.rs +++ b/crates/ruff/src/rules/ruff/rules/collection_literal_concatenation.rs @@ -1,5 +1,5 @@ +use ruff_python_ast::{self as ast, Expr, ExprContext, Operator, Ranged}; use ruff_text_size::TextRange; -use rustpython_ast::{self as ast, Expr, ExprContext, Operator, Ranged}; use ruff_diagnostics::{AutofixKind, Diagnostic, Edit, Fix, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/ruff/rules/explicit_f_string_type_conversion.rs b/crates/ruff/src/rules/ruff/rules/explicit_f_string_type_conversion.rs index 87f82844e2..ef4b22afd3 100644 --- a/crates/ruff/src/rules/ruff/rules/explicit_f_string_type_conversion.rs +++ b/crates/ruff/src/rules/ruff/rules/explicit_f_string_type_conversion.rs @@ -2,7 +2,7 @@ use anyhow::{bail, Result}; use libcst_native::{ ConcatenatedString, Expression, FormattedStringContent, FormattedStringExpression, }; -use rustpython_ast::{self as ast, Expr, Ranged}; +use ruff_python_ast::{self as ast, Expr, Ranged}; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Edit, Fix}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/ruff/rules/function_call_in_dataclass_default.rs b/crates/ruff/src/rules/ruff/rules/function_call_in_dataclass_default.rs index da5efc15d7..262f2db8f8 100644 --- a/crates/ruff/src/rules/ruff/rules/function_call_in_dataclass_default.rs +++ b/crates/ruff/src/rules/ruff/rules/function_call_in_dataclass_default.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Expr, Ranged, Stmt}; +use ruff_python_ast::{self as ast, Expr, Ranged, Stmt}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/ruff/rules/helpers.rs b/crates/ruff/src/rules/ruff/rules/helpers.rs index b95980c920..ff7ff7c2c8 100644 --- a/crates/ruff/src/rules/ruff/rules/helpers.rs +++ b/crates/ruff/src/rules/ruff/rules/helpers.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Expr}; +use ruff_python_ast::{self as ast, Expr}; use ruff_python_ast::helpers::map_callable; use ruff_python_semantic::{BindingKind, SemanticModel}; diff --git a/crates/ruff/src/rules/ruff/rules/implicit_optional.rs b/crates/ruff/src/rules/ruff/rules/implicit_optional.rs index 8ca107d555..0ceca1982d 100644 --- a/crates/ruff/src/rules/ruff/rules/implicit_optional.rs +++ b/crates/ruff/src/rules/ruff/rules/implicit_optional.rs @@ -1,8 +1,8 @@ use std::fmt; use anyhow::Result; +use ruff_python_ast::{self as ast, ArgWithDefault, Arguments, Constant, Expr, Operator, Ranged}; use ruff_text_size::TextRange; -use rustpython_ast::{self as ast, ArgWithDefault, Arguments, Constant, Expr, Operator, Ranged}; use ruff_diagnostics::{AutofixKind, Diagnostic, Edit, Fix, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/ruff/rules/invalid_index_type.rs b/crates/ruff/src/rules/ruff/rules/invalid_index_type.rs index 4c591ecba3..87b30117ab 100644 --- a/crates/ruff/src/rules/ruff/rules/invalid_index_type.rs +++ b/crates/ruff/src/rules/ruff/rules/invalid_index_type.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Constant, Expr, ExprConstant, ExprSlice, ExprSubscript, Ranged}; +use ruff_python_ast::{Constant, Expr, ExprConstant, ExprSlice, ExprSubscript, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/ruff/rules/mutable_class_default.rs b/crates/ruff/src/rules/ruff/rules/mutable_class_default.rs index 41278fdc04..11fbcd0374 100644 --- a/crates/ruff/src/rules/ruff/rules/mutable_class_default.rs +++ b/crates/ruff/src/rules/ruff/rules/mutable_class_default.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Ranged, Stmt}; +use ruff_python_ast::{self as ast, Ranged, Stmt}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/ruff/rules/mutable_dataclass_default.rs b/crates/ruff/src/rules/ruff/rules/mutable_dataclass_default.rs index 07b3e19e71..24f2ff9f1e 100644 --- a/crates/ruff/src/rules/ruff/rules/mutable_dataclass_default.rs +++ b/crates/ruff/src/rules/ruff/rules/mutable_dataclass_default.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Ranged, Stmt}; +use ruff_python_ast::{self as ast, Ranged, Stmt}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/ruff/rules/pairwise_over_zipped.rs b/crates/ruff/src/rules/ruff/rules/pairwise_over_zipped.rs index 66510f4974..a4a16e32b4 100644 --- a/crates/ruff/src/rules/ruff/rules/pairwise_over_zipped.rs +++ b/crates/ruff/src/rules/ruff/rules/pairwise_over_zipped.rs @@ -1,5 +1,5 @@ use num_traits::ToPrimitive; -use rustpython_ast::{self as ast, Constant, Expr, Ranged, UnaryOp}; +use ruff_python_ast::{self as ast, Constant, Expr, Ranged, UnaryOp}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/ruff/rules/static_key_dict_comprehension.rs b/crates/ruff/src/rules/ruff/rules/static_key_dict_comprehension.rs index 77f8d23663..061e54bd4f 100644 --- a/crates/ruff/src/rules/ruff/rules/static_key_dict_comprehension.rs +++ b/crates/ruff/src/rules/ruff/rules/static_key_dict_comprehension.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Expr, Ranged}; +use ruff_python_ast::{Expr, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/ruff/rules/unnecessary_iterable_allocation_for_first_element.rs b/crates/ruff/src/rules/ruff/rules/unnecessary_iterable_allocation_for_first_element.rs index d657a99a56..47c789f65e 100644 --- a/crates/ruff/src/rules/ruff/rules/unnecessary_iterable_allocation_for_first_element.rs +++ b/crates/ruff/src/rules/ruff/rules/unnecessary_iterable_allocation_for_first_element.rs @@ -2,8 +2,8 @@ use std::borrow::Cow; use num_bigint::BigInt; use num_traits::{One, Zero}; +use ruff_python_ast::{self as ast, Comprehension, Constant, Expr, Ranged}; use ruff_text_size::{TextRange, TextSize}; -use rustpython_ast::{self as ast, Comprehension, Constant, Expr, Ranged}; use unicode_width::UnicodeWidthStr; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Edit, Fix}; diff --git a/crates/ruff/src/rules/ruff/rules/unreachable.rs b/crates/ruff/src/rules/ruff/rules/unreachable.rs index 59decf78e6..2e765506cc 100644 --- a/crates/ruff/src/rules/ruff/rules/unreachable.rs +++ b/crates/ruff/src/rules/ruff/rules/unreachable.rs @@ -1,11 +1,11 @@ use std::{fmt, iter, usize}; use log::error; -use rustpython_ast::{ +use ruff_python_ast::{ Expr, Identifier, MatchCase, Pattern, PatternMatchAs, Ranged, Stmt, StmtAsyncFor, StmtAsyncWith, StmtFor, StmtMatch, StmtReturn, StmtTry, StmtTryStar, StmtWhile, StmtWith, }; -use rustpython_parser::text_size::{TextRange, TextSize}; +use ruff_text_size::{TextRange, TextSize}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_index::{IndexSlice, IndexVec}; @@ -1053,8 +1053,8 @@ mod tests { use std::fs; use std::path::PathBuf; - use rustpython_ast::Ranged; - use rustpython_parser::{parse, Mode}; + use ruff_python_ast::Ranged; + use ruff_python_parser::{parse, Mode}; use std::fmt::Write; use test_case::test_case; diff --git a/crates/ruff/src/rules/ruff/typing.rs b/crates/ruff/src/rules/ruff/typing.rs index 8cf8a7e884..f33d748375 100644 --- a/crates/ruff/src/rules/ruff/typing.rs +++ b/crates/ruff/src/rules/ruff/typing.rs @@ -1,5 +1,5 @@ use itertools::Either::{Left, Right}; -use rustpython_ast::{self as ast, Constant, Expr, Operator}; +use ruff_python_ast::{self as ast, Constant, Expr, Operator}; use ruff_python_ast::call_path::CallPath; use ruff_python_parser::typing::parse_type_annotation; diff --git a/crates/ruff/src/rules/tryceratops/helpers.rs b/crates/ruff/src/rules/tryceratops/helpers.rs index ccb5c12fea..6a765ec0e3 100644 --- a/crates/ruff/src/rules/tryceratops/helpers.rs +++ b/crates/ruff/src/rules/tryceratops/helpers.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Expr}; +use ruff_python_ast::{self as ast, Expr}; use ruff_python_ast::visitor; use ruff_python_ast::visitor::Visitor; diff --git a/crates/ruff/src/rules/tryceratops/rules/error_instead_of_exception.rs b/crates/ruff/src/rules/tryceratops/rules/error_instead_of_exception.rs index 4a9a8cf596..122e740a5c 100644 --- a/crates/ruff/src/rules/tryceratops/rules/error_instead_of_exception.rs +++ b/crates/ruff/src/rules/tryceratops/rules/error_instead_of_exception.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, ExceptHandler, Expr, Ranged}; +use ruff_python_ast::{self as ast, ExceptHandler, Expr, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/tryceratops/rules/raise_vanilla_args.rs b/crates/ruff/src/rules/tryceratops/rules/raise_vanilla_args.rs index 2ffabd29ee..51db4d53f0 100644 --- a/crates/ruff/src/rules/tryceratops/rules/raise_vanilla_args.rs +++ b/crates/ruff/src/rules/tryceratops/rules/raise_vanilla_args.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Constant, Expr, Ranged}; +use ruff_python_ast::{self as ast, Constant, Expr, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/tryceratops/rules/raise_vanilla_class.rs b/crates/ruff/src/rules/tryceratops/rules/raise_vanilla_class.rs index cfe59539af..098bb127a6 100644 --- a/crates/ruff/src/rules/tryceratops/rules/raise_vanilla_class.rs +++ b/crates/ruff/src/rules/tryceratops/rules/raise_vanilla_class.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Expr, Ranged}; +use ruff_python_ast::{self as ast, Expr, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/tryceratops/rules/raise_within_try.rs b/crates/ruff/src/rules/tryceratops/rules/raise_within_try.rs index 227a23a655..d807299f8a 100644 --- a/crates/ruff/src/rules/tryceratops/rules/raise_within_try.rs +++ b/crates/ruff/src/rules/tryceratops/rules/raise_within_try.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, ExceptHandler, Ranged, Stmt}; +use ruff_python_ast::{self as ast, ExceptHandler, Ranged, Stmt}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/tryceratops/rules/reraise_no_cause.rs b/crates/ruff/src/rules/tryceratops/rules/reraise_no_cause.rs index d88a2b28f7..eabd70ed26 100644 --- a/crates/ruff/src/rules/tryceratops/rules/reraise_no_cause.rs +++ b/crates/ruff/src/rules/tryceratops/rules/reraise_no_cause.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Expr, Stmt}; +use ruff_python_ast::{Expr, Stmt}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/tryceratops/rules/try_consider_else.rs b/crates/ruff/src/rules/tryceratops/rules/try_consider_else.rs index 75e6eb9d94..60746761cc 100644 --- a/crates/ruff/src/rules/tryceratops/rules/try_consider_else.rs +++ b/crates/ruff/src/rules/tryceratops/rules/try_consider_else.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, ExceptHandler, Ranged, Stmt}; +use ruff_python_ast::{self as ast, ExceptHandler, Ranged, Stmt}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/tryceratops/rules/type_check_without_type_error.rs b/crates/ruff/src/rules/tryceratops/rules/type_check_without_type_error.rs index 599f5d788d..85aa60eceb 100644 --- a/crates/ruff/src/rules/tryceratops/rules/type_check_without_type_error.rs +++ b/crates/ruff/src/rules/tryceratops/rules/type_check_without_type_error.rs @@ -1,7 +1,7 @@ use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; use ruff_python_ast::statement_visitor::{walk_stmt, StatementVisitor}; -use rustpython_ast::{self as ast, Expr, Ranged, Stmt, StmtIf}; +use ruff_python_ast::{self as ast, Expr, Ranged, Stmt, StmtIf}; use crate::checkers::ast::Checker; diff --git a/crates/ruff/src/rules/tryceratops/rules/useless_try_except.rs b/crates/ruff/src/rules/tryceratops/rules/useless_try_except.rs index fd157ad052..b1ab793089 100644 --- a/crates/ruff/src/rules/tryceratops/rules/useless_try_except.rs +++ b/crates/ruff/src/rules/tryceratops/rules/useless_try_except.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, ExceptHandler, ExceptHandlerExceptHandler, Expr, Ranged, Stmt}; +use ruff_python_ast::{self as ast, ExceptHandler, ExceptHandlerExceptHandler, Expr, Ranged, Stmt}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/tryceratops/rules/verbose_log_message.rs b/crates/ruff/src/rules/tryceratops/rules/verbose_log_message.rs index 93cffc4b93..b55a7cfa9f 100644 --- a/crates/ruff/src/rules/tryceratops/rules/verbose_log_message.rs +++ b/crates/ruff/src/rules/tryceratops/rules/verbose_log_message.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, ExceptHandler, Expr, Ranged}; +use ruff_python_ast::{self as ast, ExceptHandler, Expr, Ranged}; use ruff_diagnostics::{Diagnostic, Violation}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/rules/tryceratops/rules/verbose_raise.rs b/crates/ruff/src/rules/tryceratops/rules/verbose_raise.rs index dba4718133..9c881e1cb3 100644 --- a/crates/ruff/src/rules/tryceratops/rules/verbose_raise.rs +++ b/crates/ruff/src/rules/tryceratops/rules/verbose_raise.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, ExceptHandler, Expr, Ranged, Stmt}; +use ruff_python_ast::{self as ast, ExceptHandler, Expr, Ranged, Stmt}; use ruff_diagnostics::{AlwaysAutofixableViolation, Diagnostic, Edit, Fix}; use ruff_macros::{derive_message_formats, violation}; diff --git a/crates/ruff/src/test.rs b/crates/ruff/src/test.rs index 64b4899680..4961f3f10d 100644 --- a/crates/ruff/src/test.rs +++ b/crates/ruff/src/test.rs @@ -6,8 +6,8 @@ use std::path::Path; #[cfg(not(fuzzing))] use anyhow::Result; use itertools::Itertools; +use ruff_python_parser::lexer::LexResult; use rustc_hash::FxHashMap; -use rustpython_parser::lexer::LexResult; use ruff_diagnostics::{AutofixKind, Diagnostic}; use ruff_python_codegen::Stylist; diff --git a/crates/ruff_benchmark/Cargo.toml b/crates/ruff_benchmark/Cargo.toml index 4b74f86daa..734471e1d2 100644 --- a/crates/ruff_benchmark/Cargo.toml +++ b/crates/ruff_benchmark/Cargo.toml @@ -37,9 +37,8 @@ ureq = "2.6.2" ruff.path = "../ruff" ruff_python_ast.path = "../ruff_python_ast" ruff_python_formatter = { path = "../ruff_python_formatter" } +ruff_python_parser = { path = "../ruff_python_parser" } criterion = { version = "0.5.1"} -rustpython-ast = { workspace = true } -rustpython-parser.workspace = true [target.'cfg(target_os = "windows")'.dev-dependencies] mimalloc = "0.1.34" diff --git a/crates/ruff_benchmark/benches/parser.rs b/crates/ruff_benchmark/benches/parser.rs index 958f9f0719..d7afdd106c 100644 --- a/crates/ruff_benchmark/benches/parser.rs +++ b/crates/ruff_benchmark/benches/parser.rs @@ -4,8 +4,8 @@ use criterion::measurement::WallTime; use criterion::{criterion_group, criterion_main, BenchmarkId, Criterion, Throughput}; use ruff_benchmark::{TestCase, TestCaseSpeed, TestFile, TestFileDownloadError}; use ruff_python_ast::statement_visitor::{walk_stmt, StatementVisitor}; -use rustpython_ast::{Stmt, Suite}; -use rustpython_parser::Parse; +use ruff_python_ast::{Stmt, Suite}; +use ruff_python_parser::Parse; #[cfg(target_os = "windows")] #[global_allocator] diff --git a/crates/ruff_cli/Cargo.toml b/crates/ruff_cli/Cargo.toml index 552db97b5a..bc4b80aca3 100644 --- a/crates/ruff_cli/Cargo.toml +++ b/crates/ruff_cli/Cargo.toml @@ -31,7 +31,7 @@ ruff_python_ast = { path = "../ruff_python_ast" } ruff_python_formatter = { path = "../ruff_python_formatter" } ruff_source_file = { path = "../ruff_source_file" } ruff_python_trivia = { path = "../ruff_python_trivia" } -ruff_text_size = { workspace = true } +ruff_text_size = { path = "../ruff_text_size" } annotate-snippets = { version = "0.9.1", features = ["color"] } anyhow = { workspace = true } diff --git a/crates/ruff_dev/Cargo.toml b/crates/ruff_dev/Cargo.toml index 9900cc9428..e0e10aff18 100644 --- a/crates/ruff_dev/Cargo.toml +++ b/crates/ruff_dev/Cargo.toml @@ -15,8 +15,11 @@ ruff = { path = "../ruff", features = ["schemars"] } ruff_cli = { path = "../ruff_cli" } ruff_diagnostics = { path = "../ruff_diagnostics" } ruff_formatter = { path = "../ruff_formatter" } +ruff_python_ast = { path = "../ruff_python_ast" } ruff_python_codegen = { path = "../ruff_python_codegen" } ruff_python_formatter = { path = "../ruff_python_formatter" } +ruff_python_literal = { path = "../ruff_python_literal" } +ruff_python_parser = { path = "../ruff_python_parser" } ruff_python_stdlib = { path = "../ruff_python_stdlib" } ruff_python_trivia = { path = "../ruff_python_trivia" } @@ -31,9 +34,6 @@ once_cell = { workspace = true } pretty_assertions = { version = "1.3.0" } rayon = "1.7.0" regex = { workspace = true } -rustpython-ast = { workspace = true } -rustpython-format = { workspace = true } -rustpython-parser = { workspace = true } schemars = { workspace = true } serde = { workspace = true, features = ["derive"] } serde_json = { workspace = true } diff --git a/crates/ruff_dev/src/print_ast.rs b/crates/ruff_dev/src/print_ast.rs index 130f9b5bd0..287f969fca 100644 --- a/crates/ruff_dev/src/print_ast.rs +++ b/crates/ruff_dev/src/print_ast.rs @@ -5,8 +5,8 @@ use std::fs; use std::path::PathBuf; use anyhow::Result; -use rustpython_ast::Suite; -use rustpython_parser::Parse; +use ruff_python_ast::Suite; +use ruff_python_parser::Parse; #[derive(clap::Args)] pub(crate) struct Args { diff --git a/crates/ruff_dev/src/print_tokens.rs b/crates/ruff_dev/src/print_tokens.rs index 39b05b3a62..573337e3f7 100644 --- a/crates/ruff_dev/src/print_tokens.rs +++ b/crates/ruff_dev/src/print_tokens.rs @@ -5,7 +5,7 @@ use std::fs; use std::path::PathBuf; use anyhow::Result; -use rustpython_parser::{lexer, Mode}; +use ruff_python_parser::{lexer, Mode}; #[derive(clap::Args)] pub(crate) struct Args { diff --git a/crates/ruff_diagnostics/Cargo.toml b/crates/ruff_diagnostics/Cargo.toml index 9921f41124..4d548f41b6 100644 --- a/crates/ruff_diagnostics/Cargo.toml +++ b/crates/ruff_diagnostics/Cargo.toml @@ -13,7 +13,7 @@ license = { workspace = true } [lib] [dependencies] -ruff_text_size = { workspace = true } +ruff_text_size = { path = "../ruff_text_size" } anyhow = { workspace = true } log = { workspace = true } diff --git a/crates/ruff_formatter/Cargo.toml b/crates/ruff_formatter/Cargo.toml index 17d2a6b549..2f9c52ee06 100644 --- a/crates/ruff_formatter/Cargo.toml +++ b/crates/ruff_formatter/Cargo.toml @@ -11,7 +11,7 @@ repository = { workspace = true } license = { workspace = true } [dependencies] -ruff_text_size = { workspace = true } +ruff_text_size = { path = "../ruff_text_size" } drop_bomb = { version = "0.1.5" } rustc-hash = { workspace = true } diff --git a/crates/ruff_python_ast/Cargo.toml b/crates/ruff_python_ast/Cargo.toml index 89969a380e..21c7546c92 100644 --- a/crates/ruff_python_ast/Cargo.toml +++ b/crates/ruff_python_ast/Cargo.toml @@ -10,12 +10,14 @@ documentation = { workspace = true } repository = { workspace = true } license = { workspace = true } + + [lib] [dependencies] ruff_python_trivia = { path = "../ruff_python_trivia" } ruff_source_file = { path = "../ruff_source_file" } -ruff_text_size = { workspace = true } +ruff_text_size = { path = "../ruff_text_size" } bitflags = { workspace = true } is-macro = { workspace = true } @@ -24,13 +26,12 @@ num-bigint = { workspace = true } num-traits = { workspace = true } once_cell = { workspace = true } rustc-hash = { workspace = true } -rustpython-ast = { workspace = true } serde = { workspace = true, optional = true } smallvec = { workspace = true } [dev-dependencies] insta = { workspace = true } -rustpython-parser = { workspace = true } +ruff_python_parser = { path = "../ruff_python_parser" } [features] serde = ["dep:serde", "ruff_text_size/serde"] diff --git a/crates/ruff_python_ast/src/all.rs b/crates/ruff_python_ast/src/all.rs index 2ee1324b65..27955a845e 100644 --- a/crates/ruff_python_ast/src/all.rs +++ b/crates/ruff_python_ast/src/all.rs @@ -1,5 +1,5 @@ +use crate::{self as ast, Constant, Expr, Stmt}; use bitflags::bitflags; -use rustpython_ast::{self as ast, Constant, Expr, Stmt}; bitflags! { #[derive(Default, Debug, Copy, Clone, PartialEq, Eq)] diff --git a/crates/ruff_python_ast/src/call_path.rs b/crates/ruff_python_ast/src/call_path.rs index 7d0a12bebe..c11c456fe7 100644 --- a/crates/ruff_python_ast/src/call_path.rs +++ b/crates/ruff_python_ast/src/call_path.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Expr}; +use crate::{nodes, Expr}; use smallvec::{smallvec, SmallVec}; /// A representation of a qualified name, like `typing.List`. @@ -11,14 +11,16 @@ pub fn collect_call_path(expr: &Expr) -> Option { let attr1 = match expr { Expr::Attribute(attr1) => attr1, // Ex) `foo` - Expr::Name(ast::ExprName { id, .. }) => return Some(CallPath::from_slice(&[id.as_str()])), + Expr::Name(nodes::ExprName { id, .. }) => { + return Some(CallPath::from_slice(&[id.as_str()])) + } _ => return None, }; let attr2 = match attr1.value.as_ref() { Expr::Attribute(attr2) => attr2, // Ex) `foo.bar` - Expr::Name(ast::ExprName { id, .. }) => { + Expr::Name(nodes::ExprName { id, .. }) => { return Some(CallPath::from_slice(&[id.as_str(), attr1.attr.as_str()])) } _ => return None, @@ -27,7 +29,7 @@ pub fn collect_call_path(expr: &Expr) -> Option { let attr3 = match attr2.value.as_ref() { Expr::Attribute(attr3) => attr3, // Ex) `foo.bar.baz` - Expr::Name(ast::ExprName { id, .. }) => { + Expr::Name(nodes::ExprName { id, .. }) => { return Some(CallPath::from_slice(&[ id.as_str(), attr2.attr.as_str(), @@ -40,7 +42,7 @@ pub fn collect_call_path(expr: &Expr) -> Option { let attr4 = match attr3.value.as_ref() { Expr::Attribute(attr4) => attr4, // Ex) `foo.bar.baz.bop` - Expr::Name(ast::ExprName { id, .. }) => { + Expr::Name(nodes::ExprName { id, .. }) => { return Some(CallPath::from_slice(&[ id.as_str(), attr3.attr.as_str(), @@ -54,7 +56,7 @@ pub fn collect_call_path(expr: &Expr) -> Option { let attr5 = match attr4.value.as_ref() { Expr::Attribute(attr5) => attr5, // Ex) `foo.bar.baz.bop.bap` - Expr::Name(ast::ExprName { id, .. }) => { + Expr::Name(nodes::ExprName { id, .. }) => { return Some(CallPath::from_slice(&[ id.as_str(), attr4.attr.as_str(), @@ -69,7 +71,7 @@ pub fn collect_call_path(expr: &Expr) -> Option { let attr6 = match attr5.value.as_ref() { Expr::Attribute(attr6) => attr6, // Ex) `foo.bar.baz.bop.bap.bab` - Expr::Name(ast::ExprName { id, .. }) => { + Expr::Name(nodes::ExprName { id, .. }) => { return Some(CallPath::from_slice(&[ id.as_str(), attr5.attr.as_str(), @@ -85,7 +87,7 @@ pub fn collect_call_path(expr: &Expr) -> Option { let attr7 = match attr6.value.as_ref() { Expr::Attribute(attr7) => attr7, // Ex) `foo.bar.baz.bop.bap.bab.bob` - Expr::Name(ast::ExprName { id, .. }) => { + Expr::Name(nodes::ExprName { id, .. }) => { return Some(CallPath::from_slice(&[ id.as_str(), attr6.attr.as_str(), @@ -102,7 +104,7 @@ pub fn collect_call_path(expr: &Expr) -> Option { let attr8 = match attr7.value.as_ref() { Expr::Attribute(attr8) => attr8, // Ex) `foo.bar.baz.bop.bap.bab.bob.bib` - Expr::Name(ast::ExprName { id, .. }) => { + Expr::Name(nodes::ExprName { id, .. }) => { return Some(CallPath::from_slice(&[ id.as_str(), attr7.attr.as_str(), diff --git a/crates/ruff_python_ast/src/cast.rs b/crates/ruff_python_ast/src/cast.rs index bd55f1bfb8..1b59f69b20 100644 --- a/crates/ruff_python_ast/src/cast.rs +++ b/crates/ruff_python_ast/src/cast.rs @@ -1,17 +1,17 @@ -use rustpython_ast::{self as ast, Decorator, Stmt}; +use crate::{nodes, Decorator, Stmt}; pub fn name(stmt: &Stmt) -> &str { match stmt { - Stmt::FunctionDef(ast::StmtFunctionDef { name, .. }) - | Stmt::AsyncFunctionDef(ast::StmtAsyncFunctionDef { name, .. }) => name.as_str(), + Stmt::FunctionDef(nodes::StmtFunctionDef { name, .. }) + | Stmt::AsyncFunctionDef(nodes::StmtAsyncFunctionDef { name, .. }) => name.as_str(), _ => panic!("Expected Stmt::FunctionDef | Stmt::AsyncFunctionDef"), } } pub fn decorator_list(stmt: &Stmt) -> &[Decorator] { match stmt { - Stmt::FunctionDef(ast::StmtFunctionDef { decorator_list, .. }) - | Stmt::AsyncFunctionDef(ast::StmtAsyncFunctionDef { decorator_list, .. }) => { + Stmt::FunctionDef(nodes::StmtFunctionDef { decorator_list, .. }) + | Stmt::AsyncFunctionDef(nodes::StmtAsyncFunctionDef { decorator_list, .. }) => { decorator_list } _ => panic!("Expected Stmt::FunctionDef | Stmt::AsyncFunctionDef"), diff --git a/crates/ruff_python_ast/src/comparable.rs b/crates/ruff_python_ast/src/comparable.rs index 5bea363d7e..c32157feb5 100644 --- a/crates/ruff_python_ast/src/comparable.rs +++ b/crates/ruff_python_ast/src/comparable.rs @@ -1,8 +1,8 @@ //! An equivalent object hierarchy to the `RustPython` AST hierarchy, but with the //! ability to compare expressions for equality (via [`Eq`] and [`Hash`]). +use crate as ast; use num_bigint::BigInt; -use rustpython_ast as ast; #[derive(Debug, PartialEq, Eq, Hash, Copy, Clone)] pub enum ComparableExprContext { diff --git a/crates/ruff_python_ast/src/function.rs b/crates/ruff_python_ast/src/function.rs index b9de7613dc..563d24dcef 100644 --- a/crates/ruff_python_ast/src/function.rs +++ b/crates/ruff_python_ast/src/function.rs @@ -1,8 +1,8 @@ use crate::node::AnyNodeRef; -use ruff_text_size::TextRange; -use rustpython_ast::{ +use crate::{ Arguments, Decorator, Expr, Identifier, Ranged, StmtAsyncFunctionDef, StmtFunctionDef, Suite, }; +use ruff_text_size::TextRange; /// Enum that represents any python function definition. #[derive(Copy, Clone, PartialEq, Debug)] diff --git a/crates/ruff_python_ast/src/hashable.rs b/crates/ruff_python_ast/src/hashable.rs index 0890eed133..7332716db4 100644 --- a/crates/ruff_python_ast/src/hashable.rs +++ b/crates/ruff_python_ast/src/hashable.rs @@ -1,6 +1,6 @@ use std::hash::Hash; -use rustpython_ast::Expr; +use crate::Expr; use crate::comparable::ComparableExpr; diff --git a/crates/ruff_python_ast/src/helpers.rs b/crates/ruff_python_ast/src/helpers.rs index f09b46fdbb..923c732699 100644 --- a/crates/ruff_python_ast/src/helpers.rs +++ b/crates/ruff_python_ast/src/helpers.rs @@ -1,12 +1,12 @@ use std::borrow::Cow; use std::path::Path; -use num_traits::Zero; -use ruff_text_size::TextRange; -use rustpython_ast::{ +use crate::{ self as ast, Arguments, Constant, ExceptHandler, Expr, Keyword, MatchCase, Pattern, Ranged, Stmt, TypeParam, }; +use num_traits::Zero; +use ruff_text_size::TextRange; use smallvec::SmallVec; use crate::call_path::CallPath; @@ -1288,11 +1288,11 @@ mod tests { use std::cell::RefCell; use std::vec; - use ruff_text_size::TextRange; - use rustpython_ast::{ - self, Constant, Expr, ExprConstant, ExprContext, ExprName, Identifier, Stmt, StmtTypeAlias, + use crate::{ + Constant, Expr, ExprConstant, ExprContext, ExprName, Identifier, Stmt, StmtTypeAlias, TypeParam, TypeParamParamSpec, TypeParamTypeVar, TypeParamTypeVarTuple, }; + use ruff_text_size::TextRange; use crate::helpers::{any_over_stmt, any_over_type_param, resolve_imported_module_path}; diff --git a/crates/ruff_python_ast/src/identifier.rs b/crates/ruff_python_ast/src/identifier.rs index 13219cbbf0..888b4c9d0f 100644 --- a/crates/ruff_python_ast/src/identifier.rs +++ b/crates/ruff_python_ast/src/identifier.rs @@ -10,8 +10,8 @@ //! //! This module can be used to identify the [`TextRange`] of the `except` token. +use crate::{self as ast, Alias, Arg, ArgWithDefault, ExceptHandler, Ranged, Stmt}; use ruff_text_size::{TextLen, TextRange, TextSize}; -use rustpython_ast::{self as ast, Alias, Arg, ArgWithDefault, ExceptHandler, Ranged, Stmt}; use ruff_python_trivia::{is_python_whitespace, Cursor}; @@ -200,38 +200,17 @@ impl Iterator for IdentifierTokenizer<'_> { #[cfg(test)] mod tests { - use ruff_text_size::{TextRange, TextSize}; - use rustpython_ast::{Ranged, Stmt}; - use rustpython_parser::{Parse, ParseError}; - - use crate::identifier; - use crate::identifier::IdentifierTokenizer; + use super::IdentifierTokenizer; + use ruff_text_size::{TextLen, TextRange, TextSize}; #[test] - fn extract_else_range() -> Result<(), ParseError> { - let contents = r#" -for x in y: - pass -else: - pass -"# - .trim(); - let stmt = Stmt::parse(contents, "")?; - let range = identifier::else_(&stmt, contents).unwrap(); - assert_eq!(&contents[range], "else"); - assert_eq!( - range, - TextRange::new(TextSize::from(21), TextSize::from(25)) - ); - Ok(()) - } - - #[test] - fn extract_global_names() -> Result<(), ParseError> { + fn extract_global_names() { let contents = r#"global X,Y, Z"#.trim(); - let stmt = Stmt::parse(contents, "")?; - let mut names = IdentifierTokenizer::new(contents, stmt.range()); + let mut names = IdentifierTokenizer::new( + contents, + TextRange::new(TextSize::new(0), contents.text_len()), + ); let range = names.next_token().unwrap(); assert_eq!(&contents[range], "global"); @@ -251,6 +230,5 @@ else: range, TextRange::new(TextSize::from(12), TextSize::from(13)) ); - Ok(()) } } diff --git a/crates/ruff_python_ast/src/lib.rs b/crates/ruff_python_ast/src/lib.rs index 098879d88d..4b8b9a1eeb 100644 --- a/crates/ruff_python_ast/src/lib.rs +++ b/crates/ruff_python_ast/src/lib.rs @@ -1,3 +1,5 @@ +use ruff_text_size::{TextRange, TextSize}; + pub mod all; pub mod call_path; pub mod cast; @@ -9,6 +11,7 @@ pub mod helpers; pub mod identifier; pub mod imports; pub mod node; +mod nodes; pub mod relocate; pub mod statement_visitor; pub mod stmt_if; @@ -17,3 +20,32 @@ pub mod traversal; pub mod types; pub mod visitor; pub mod whitespace; + +pub use nodes::*; + +pub trait Ranged { + fn range(&self) -> TextRange; + + fn start(&self) -> TextSize { + self.range().start() + } + + fn end(&self) -> TextSize { + self.range().end() + } +} + +impl Ranged for TextRange { + fn range(&self) -> TextRange { + *self + } +} + +impl Ranged for &T +where + T: Ranged, +{ + fn range(&self) -> TextRange { + T::range(self) + } +} diff --git a/crates/ruff_python_ast/src/node.rs b/crates/ruff_python_ast/src/node.rs index f69076ffda..39392573eb 100644 --- a/crates/ruff_python_ast/src/node.rs +++ b/crates/ruff_python_ast/src/node.rs @@ -1,9 +1,9 @@ -use ruff_text_size::TextRange; -use rustpython_ast::{ +use crate::{ self as ast, Alias, Arg, ArgWithDefault, Arguments, Comprehension, Decorator, ExceptHandler, Expr, Keyword, MatchCase, Mod, Pattern, Ranged, Stmt, TypeIgnore, TypeParam, TypeParamParamSpec, TypeParamTypeVar, TypeParamTypeVarTuple, WithItem, }; +use ruff_text_size::TextRange; use std::ptr::NonNull; pub trait AstNode: Ranged { diff --git a/crates/ruff_python_ast/src/nodes.rs b/crates/ruff_python_ast/src/nodes.rs new file mode 100644 index 0000000000..4de5ac6cb0 --- /dev/null +++ b/crates/ruff_python_ast/src/nodes.rs @@ -0,0 +1,3037 @@ +#![allow(clippy::derive_partial_eq_without_eq)] + +use crate::Ranged; +use num_bigint::BigInt; +use ruff_text_size::{TextRange, TextSize}; +use std::fmt; +use std::fmt::Debug; + +/// See also [mod](https://docs.python.org/3/library/ast.html#ast.mod) +#[derive(Clone, Debug, PartialEq, is_macro::Is)] +pub enum Mod { + Module(ModModule), + Interactive(ModInteractive), + Expression(ModExpression), + FunctionType(ModFunctionType), +} + +/// See also [Module](https://docs.python.org/3/library/ast.html#ast.Module) +#[derive(Clone, Debug, PartialEq)] +pub struct ModModule { + pub range: TextRange, + pub body: Vec, + pub type_ignores: Vec, +} + +impl From for Mod { + fn from(payload: ModModule) -> Self { + Mod::Module(payload) + } +} + +/// See also [Interactive](https://docs.python.org/3/library/ast.html#ast.Interactive) +#[derive(Clone, Debug, PartialEq)] +pub struct ModInteractive { + pub range: TextRange, + pub body: Vec, +} + +impl From for Mod { + fn from(payload: ModInteractive) -> Self { + Mod::Interactive(payload) + } +} + +/// See also [Expression](https://docs.python.org/3/library/ast.html#ast.Expression) +#[derive(Clone, Debug, PartialEq)] +pub struct ModExpression { + pub range: TextRange, + pub body: Box, +} + +impl From for Mod { + fn from(payload: ModExpression) -> Self { + Mod::Expression(payload) + } +} + +/// See also [FunctionType](https://docs.python.org/3/library/ast.html#ast.FunctionType) +#[derive(Clone, Debug, PartialEq)] +pub struct ModFunctionType { + pub range: TextRange, + pub argtypes: Vec, + pub returns: Box, +} + +impl From for Mod { + fn from(payload: ModFunctionType) -> Self { + Mod::FunctionType(payload) + } +} + +/// See also [stmt](https://docs.python.org/3/library/ast.html#ast.stmt) +#[derive(Clone, Debug, PartialEq, is_macro::Is)] +pub enum Stmt { + #[is(name = "function_def_stmt")] + FunctionDef(StmtFunctionDef), + #[is(name = "async_function_def_stmt")] + AsyncFunctionDef(StmtAsyncFunctionDef), + #[is(name = "class_def_stmt")] + ClassDef(StmtClassDef), + #[is(name = "return_stmt")] + Return(StmtReturn), + #[is(name = "delete_stmt")] + Delete(StmtDelete), + #[is(name = "assign_stmt")] + Assign(StmtAssign), + #[is(name = "aug_assign_stmt")] + AugAssign(StmtAugAssign), + #[is(name = "ann_assign_stmt")] + AnnAssign(StmtAnnAssign), + #[is(name = "type_alias_stmt")] + TypeAlias(StmtTypeAlias), + #[is(name = "for_stmt")] + For(StmtFor), + #[is(name = "async_for_stmt")] + AsyncFor(StmtAsyncFor), + #[is(name = "while_stmt")] + While(StmtWhile), + #[is(name = "if_stmt")] + If(StmtIf), + #[is(name = "with_stmt")] + With(StmtWith), + #[is(name = "async_with_stmt")] + AsyncWith(StmtAsyncWith), + #[is(name = "match_stmt")] + Match(StmtMatch), + #[is(name = "raise_stmt")] + Raise(StmtRaise), + #[is(name = "try_stmt")] + Try(StmtTry), + #[is(name = "try_star_stmt")] + TryStar(StmtTryStar), + #[is(name = "assert_stmt")] + Assert(StmtAssert), + #[is(name = "import_stmt")] + Import(StmtImport), + #[is(name = "import_from_stmt")] + ImportFrom(StmtImportFrom), + #[is(name = "global_stmt")] + Global(StmtGlobal), + #[is(name = "nonlocal_stmt")] + Nonlocal(StmtNonlocal), + #[is(name = "expr_stmt")] + Expr(StmtExpr), + #[is(name = "pass_stmt")] + Pass(StmtPass), + #[is(name = "break_stmt")] + Break(StmtBreak), + #[is(name = "continue_stmt")] + Continue(StmtContinue), + + // Jupyter notebook specific + #[is(name = "line_magic_stmt")] + LineMagic(StmtLineMagic), +} + +#[derive(Clone, Debug, PartialEq)] +pub struct StmtLineMagic { + pub range: TextRange, + pub kind: MagicKind, + pub value: String, +} + +impl From for Stmt { + fn from(payload: StmtLineMagic) -> Self { + Stmt::LineMagic(payload) + } +} + +/// See also [FunctionDef](https://docs.python.org/3/library/ast.html#ast.FunctionDef) +#[derive(Clone, Debug, PartialEq)] +pub struct StmtFunctionDef { + pub range: TextRange, + pub name: Identifier, + pub args: Box, + pub body: Vec, + pub decorator_list: Vec, + pub returns: Option>, + pub type_params: Vec, + pub type_comment: Option, +} + +impl From for Stmt { + fn from(payload: StmtFunctionDef) -> Self { + Stmt::FunctionDef(payload) + } +} + +/// See also [AsyncFunctionDef](https://docs.python.org/3/library/ast.html#ast.AsyncFunctionDef) +#[derive(Clone, Debug, PartialEq)] +pub struct StmtAsyncFunctionDef { + pub range: TextRange, + pub name: Identifier, + pub args: Box, + pub body: Vec, + pub decorator_list: Vec, + pub returns: Option>, + pub type_params: Vec, + pub type_comment: Option, +} + +impl From for Stmt { + fn from(payload: StmtAsyncFunctionDef) -> Self { + Stmt::AsyncFunctionDef(payload) + } +} + +/// See also [ClassDef](https://docs.python.org/3/library/ast.html#ast.ClassDef) +#[derive(Clone, Debug, PartialEq)] +pub struct StmtClassDef { + pub range: TextRange, + pub name: Identifier, + pub bases: Vec, + pub keywords: Vec, + pub body: Vec, + pub type_params: Vec, + pub decorator_list: Vec, +} + +impl From for Stmt { + fn from(payload: StmtClassDef) -> Self { + Stmt::ClassDef(payload) + } +} + +/// See also [Return](https://docs.python.org/3/library/ast.html#ast.Return) +#[derive(Clone, Debug, PartialEq)] +pub struct StmtReturn { + pub range: TextRange, + pub value: Option>, +} + +impl From for Stmt { + fn from(payload: StmtReturn) -> Self { + Stmt::Return(payload) + } +} + +/// See also [Delete](https://docs.python.org/3/library/ast.html#ast.Delete) +#[derive(Clone, Debug, PartialEq)] +pub struct StmtDelete { + pub range: TextRange, + pub targets: Vec, +} + +impl From for Stmt { + fn from(payload: StmtDelete) -> Self { + Stmt::Delete(payload) + } +} + +/// See also [TypeAlias](https://docs.python.org/3/library/ast.html#ast.TypeAlias) +#[derive(Clone, Debug, PartialEq)] +pub struct StmtTypeAlias { + pub range: TextRange, + pub name: Box, + pub type_params: Vec, + pub value: Box, +} + +impl From for Stmt { + fn from(payload: StmtTypeAlias) -> Self { + Stmt::TypeAlias(payload) + } +} + +/// See also [Assign](https://docs.python.org/3/library/ast.html#ast.Assign) +#[derive(Clone, Debug, PartialEq)] +pub struct StmtAssign { + pub range: TextRange, + pub targets: Vec, + pub value: Box, + pub type_comment: Option, +} + +impl From for Stmt { + fn from(payload: StmtAssign) -> Self { + Stmt::Assign(payload) + } +} + +/// See also [AugAssign](https://docs.python.org/3/library/ast.html#ast.AugAssign) +#[derive(Clone, Debug, PartialEq)] +pub struct StmtAugAssign { + pub range: TextRange, + pub target: Box, + pub op: Operator, + pub value: Box, +} + +impl From for Stmt { + fn from(payload: StmtAugAssign) -> Self { + Stmt::AugAssign(payload) + } +} + +/// See also [AnnAssign](https://docs.python.org/3/library/ast.html#ast.AnnAssign) +#[derive(Clone, Debug, PartialEq)] +pub struct StmtAnnAssign { + pub range: TextRange, + pub target: Box, + pub annotation: Box, + pub value: Option>, + pub simple: bool, +} + +impl From for Stmt { + fn from(payload: StmtAnnAssign) -> Self { + Stmt::AnnAssign(payload) + } +} + +/// See also [For](https://docs.python.org/3/library/ast.html#ast.For) +#[derive(Clone, Debug, PartialEq)] +pub struct StmtFor { + pub range: TextRange, + pub target: Box, + pub iter: Box, + pub body: Vec, + pub orelse: Vec, + pub type_comment: Option, +} + +impl From for Stmt { + fn from(payload: StmtFor) -> Self { + Stmt::For(payload) + } +} + +/// See also [AsyncFor](https://docs.python.org/3/library/ast.html#ast.AsyncFor) +#[derive(Clone, Debug, PartialEq)] +pub struct StmtAsyncFor { + pub range: TextRange, + pub target: Box, + pub iter: Box, + pub body: Vec, + pub orelse: Vec, + pub type_comment: Option, +} + +impl From for Stmt { + fn from(payload: StmtAsyncFor) -> Self { + Stmt::AsyncFor(payload) + } +} + +/// See also [While](https://docs.python.org/3/library/ast.html#ast.While) +#[derive(Clone, Debug, PartialEq)] +pub struct StmtWhile { + pub range: TextRange, + pub test: Box, + pub body: Vec, + pub orelse: Vec, +} + +impl From for Stmt { + fn from(payload: StmtWhile) -> Self { + Stmt::While(payload) + } +} + +/// See also [If](https://docs.python.org/3/library/ast.html#ast.If) +#[derive(Clone, Debug, PartialEq)] +pub struct StmtIf { + pub range: TextRange, + pub test: Box, + pub body: Vec, + pub elif_else_clauses: Vec, +} + +impl From for Stmt { + fn from(payload: StmtIf) -> Self { + Stmt::If(payload) + } +} + +#[derive(Clone, Debug, PartialEq)] +pub struct ElifElseClause { + pub range: TextRange, + pub test: Option, + pub body: Vec, +} + +/// See also [With](https://docs.python.org/3/library/ast.html#ast.With) +#[derive(Clone, Debug, PartialEq)] +pub struct StmtWith { + pub range: TextRange, + pub items: Vec, + pub body: Vec, + pub type_comment: Option, +} + +impl From for Stmt { + fn from(payload: StmtWith) -> Self { + Stmt::With(payload) + } +} + +/// See also [AsyncWith](https://docs.python.org/3/library/ast.html#ast.AsyncWith) +#[derive(Clone, Debug, PartialEq)] +pub struct StmtAsyncWith { + pub range: TextRange, + pub items: Vec, + pub body: Vec, + pub type_comment: Option, +} + +impl From for Stmt { + fn from(payload: StmtAsyncWith) -> Self { + Stmt::AsyncWith(payload) + } +} + +/// See also [Match](https://docs.python.org/3/library/ast.html#ast.Match) +#[derive(Clone, Debug, PartialEq)] +pub struct StmtMatch { + pub range: TextRange, + pub subject: Box, + pub cases: Vec, +} + +impl From for Stmt { + fn from(payload: StmtMatch) -> Self { + Stmt::Match(payload) + } +} + +/// See also [Raise](https://docs.python.org/3/library/ast.html#ast.Raise) +#[derive(Clone, Debug, PartialEq)] +pub struct StmtRaise { + pub range: TextRange, + pub exc: Option>, + pub cause: Option>, +} + +impl From for Stmt { + fn from(payload: StmtRaise) -> Self { + Stmt::Raise(payload) + } +} + +/// See also [Try](https://docs.python.org/3/library/ast.html#ast.Try) +#[derive(Clone, Debug, PartialEq)] +pub struct StmtTry { + pub range: TextRange, + pub body: Vec, + pub handlers: Vec, + pub orelse: Vec, + pub finalbody: Vec, +} + +impl From for Stmt { + fn from(payload: StmtTry) -> Self { + Stmt::Try(payload) + } +} + +/// See also [TryStar](https://docs.python.org/3/library/ast.html#ast.TryStar) +#[derive(Clone, Debug, PartialEq)] +pub struct StmtTryStar { + pub range: TextRange, + pub body: Vec, + pub handlers: Vec, + pub orelse: Vec, + pub finalbody: Vec, +} + +impl From for Stmt { + fn from(payload: StmtTryStar) -> Self { + Stmt::TryStar(payload) + } +} + +/// See also [Assert](https://docs.python.org/3/library/ast.html#ast.Assert) +#[derive(Clone, Debug, PartialEq)] +pub struct StmtAssert { + pub range: TextRange, + pub test: Box, + pub msg: Option>, +} + +impl From for Stmt { + fn from(payload: StmtAssert) -> Self { + Stmt::Assert(payload) + } +} + +/// See also [Import](https://docs.python.org/3/library/ast.html#ast.Import) +#[derive(Clone, Debug, PartialEq)] +pub struct StmtImport { + pub range: TextRange, + pub names: Vec, +} + +impl From for Stmt { + fn from(payload: StmtImport) -> Self { + Stmt::Import(payload) + } +} + +/// See also [ImportFrom](https://docs.python.org/3/library/ast.html#ast.ImportFrom) +#[derive(Clone, Debug, PartialEq)] +pub struct StmtImportFrom { + pub range: TextRange, + pub module: Option, + pub names: Vec, + pub level: Option, +} + +impl From for Stmt { + fn from(payload: StmtImportFrom) -> Self { + Stmt::ImportFrom(payload) + } +} + +/// See also [Global](https://docs.python.org/3/library/ast.html#ast.Global) +#[derive(Clone, Debug, PartialEq)] +pub struct StmtGlobal { + pub range: TextRange, + pub names: Vec, +} + +impl From for Stmt { + fn from(payload: StmtGlobal) -> Self { + Stmt::Global(payload) + } +} + +/// See also [Nonlocal](https://docs.python.org/3/library/ast.html#ast.Nonlocal) +#[derive(Clone, Debug, PartialEq)] +pub struct StmtNonlocal { + pub range: TextRange, + pub names: Vec, +} + +impl From for Stmt { + fn from(payload: StmtNonlocal) -> Self { + Stmt::Nonlocal(payload) + } +} + +/// See also [Expr](https://docs.python.org/3/library/ast.html#ast.Expr) +#[derive(Clone, Debug, PartialEq)] +pub struct StmtExpr { + pub range: TextRange, + pub value: Box, +} + +impl From for Stmt { + fn from(payload: StmtExpr) -> Self { + Stmt::Expr(payload) + } +} + +/// See also [Pass](https://docs.python.org/3/library/ast.html#ast.Pass) +#[derive(Clone, Debug, PartialEq)] +pub struct StmtPass { + pub range: TextRange, +} + +impl From for Stmt { + fn from(payload: StmtPass) -> Self { + Stmt::Pass(payload) + } +} + +/// See also [Break](https://docs.python.org/3/library/ast.html#ast.Break) +#[derive(Clone, Debug, PartialEq)] +pub struct StmtBreak { + pub range: TextRange, +} + +impl From for Stmt { + fn from(payload: StmtBreak) -> Self { + Stmt::Break(payload) + } +} + +/// See also [Continue](https://docs.python.org/3/library/ast.html#ast.Continue) +#[derive(Clone, Debug, PartialEq)] +pub struct StmtContinue { + pub range: TextRange, +} + +impl From for Stmt { + fn from(payload: StmtContinue) -> Self { + Stmt::Continue(payload) + } +} + +/// See also [expr](https://docs.python.org/3/library/ast.html#ast.expr) +#[derive(Clone, Debug, PartialEq, is_macro::Is)] +pub enum Expr { + #[is(name = "bool_op_expr")] + BoolOp(ExprBoolOp), + #[is(name = "named_expr_expr")] + NamedExpr(ExprNamedExpr), + #[is(name = "bin_op_expr")] + BinOp(ExprBinOp), + #[is(name = "unary_op_expr")] + UnaryOp(ExprUnaryOp), + #[is(name = "lambda_expr")] + Lambda(ExprLambda), + #[is(name = "if_exp_expr")] + IfExp(ExprIfExp), + #[is(name = "dict_expr")] + Dict(ExprDict), + #[is(name = "set_expr")] + Set(ExprSet), + #[is(name = "list_comp_expr")] + ListComp(ExprListComp), + #[is(name = "set_comp_expr")] + SetComp(ExprSetComp), + #[is(name = "dict_comp_expr")] + DictComp(ExprDictComp), + #[is(name = "generator_exp_expr")] + GeneratorExp(ExprGeneratorExp), + #[is(name = "await_expr")] + Await(ExprAwait), + #[is(name = "yield_expr")] + Yield(ExprYield), + #[is(name = "yield_from_expr")] + YieldFrom(ExprYieldFrom), + #[is(name = "compare_expr")] + Compare(ExprCompare), + #[is(name = "call_expr")] + Call(ExprCall), + #[is(name = "formatted_value_expr")] + FormattedValue(ExprFormattedValue), + #[is(name = "joined_str_expr")] + JoinedStr(ExprJoinedStr), + #[is(name = "constant_expr")] + Constant(ExprConstant), + #[is(name = "attribute_expr")] + Attribute(ExprAttribute), + #[is(name = "subscript_expr")] + Subscript(ExprSubscript), + #[is(name = "starred_expr")] + Starred(ExprStarred), + #[is(name = "name_expr")] + Name(ExprName), + #[is(name = "list_expr")] + List(ExprList), + #[is(name = "tuple_expr")] + Tuple(ExprTuple), + #[is(name = "slice_expr")] + Slice(ExprSlice), + + // Jupyter notebook specific + #[is(name = "line_magic_expr")] + LineMagic(ExprLineMagic), +} + +#[derive(Clone, Debug, PartialEq)] +pub struct ExprLineMagic { + pub range: TextRange, + pub kind: MagicKind, + pub value: String, +} + +impl From for Expr { + fn from(payload: ExprLineMagic) -> Self { + Expr::LineMagic(payload) + } +} + +/// See also [BoolOp](https://docs.python.org/3/library/ast.html#ast.BoolOp) +#[derive(Clone, Debug, PartialEq)] +pub struct ExprBoolOp { + pub range: TextRange, + pub op: BoolOp, + pub values: Vec, +} + +impl From for Expr { + fn from(payload: ExprBoolOp) -> Self { + Expr::BoolOp(payload) + } +} + +/// See also [NamedExpr](https://docs.python.org/3/library/ast.html#ast.NamedExpr) +#[derive(Clone, Debug, PartialEq)] +pub struct ExprNamedExpr { + pub range: TextRange, + pub target: Box, + pub value: Box, +} + +impl From for Expr { + fn from(payload: ExprNamedExpr) -> Self { + Expr::NamedExpr(payload) + } +} + +/// See also [BinOp](https://docs.python.org/3/library/ast.html#ast.BinOp) +#[derive(Clone, Debug, PartialEq)] +pub struct ExprBinOp { + pub range: TextRange, + pub left: Box, + pub op: Operator, + pub right: Box, +} + +impl From for Expr { + fn from(payload: ExprBinOp) -> Self { + Expr::BinOp(payload) + } +} + +/// See also [UnaryOp](https://docs.python.org/3/library/ast.html#ast.UnaryOp) +#[derive(Clone, Debug, PartialEq)] +pub struct ExprUnaryOp { + pub range: TextRange, + pub op: UnaryOp, + pub operand: Box, +} + +impl From for Expr { + fn from(payload: ExprUnaryOp) -> Self { + Expr::UnaryOp(payload) + } +} + +/// See also [Lambda](https://docs.python.org/3/library/ast.html#ast.Lambda) +#[derive(Clone, Debug, PartialEq)] +pub struct ExprLambda { + pub range: TextRange, + pub args: Box, + pub body: Box, +} + +impl From for Expr { + fn from(payload: ExprLambda) -> Self { + Expr::Lambda(payload) + } +} + +/// See also [IfExp](https://docs.python.org/3/library/ast.html#ast.IfExp) +#[derive(Clone, Debug, PartialEq)] +pub struct ExprIfExp { + pub range: TextRange, + pub test: Box, + pub body: Box, + pub orelse: Box, +} + +impl From for Expr { + fn from(payload: ExprIfExp) -> Self { + Expr::IfExp(payload) + } +} + +/// See also [Dict](https://docs.python.org/3/library/ast.html#ast.Dict) +#[derive(Clone, Debug, PartialEq)] +pub struct ExprDict { + pub range: TextRange, + pub keys: Vec>, + pub values: Vec, +} + +impl From for Expr { + fn from(payload: ExprDict) -> Self { + Expr::Dict(payload) + } +} + +/// See also [Set](https://docs.python.org/3/library/ast.html#ast.Set) +#[derive(Clone, Debug, PartialEq)] +pub struct ExprSet { + pub range: TextRange, + pub elts: Vec, +} + +impl From for Expr { + fn from(payload: ExprSet) -> Self { + Expr::Set(payload) + } +} + +/// See also [ListComp](https://docs.python.org/3/library/ast.html#ast.ListComp) +#[derive(Clone, Debug, PartialEq)] +pub struct ExprListComp { + pub range: TextRange, + pub elt: Box, + pub generators: Vec, +} + +impl From for Expr { + fn from(payload: ExprListComp) -> Self { + Expr::ListComp(payload) + } +} + +/// See also [SetComp](https://docs.python.org/3/library/ast.html#ast.SetComp) +#[derive(Clone, Debug, PartialEq)] +pub struct ExprSetComp { + pub range: TextRange, + pub elt: Box, + pub generators: Vec, +} + +impl From for Expr { + fn from(payload: ExprSetComp) -> Self { + Expr::SetComp(payload) + } +} + +/// See also [DictComp](https://docs.python.org/3/library/ast.html#ast.DictComp) +#[derive(Clone, Debug, PartialEq)] +pub struct ExprDictComp { + pub range: TextRange, + pub key: Box, + pub value: Box, + pub generators: Vec, +} + +impl From for Expr { + fn from(payload: ExprDictComp) -> Self { + Expr::DictComp(payload) + } +} + +/// See also [GeneratorExp](https://docs.python.org/3/library/ast.html#ast.GeneratorExp) +#[derive(Clone, Debug, PartialEq)] +pub struct ExprGeneratorExp { + pub range: TextRange, + pub elt: Box, + pub generators: Vec, +} + +impl From for Expr { + fn from(payload: ExprGeneratorExp) -> Self { + Expr::GeneratorExp(payload) + } +} + +/// See also [Await](https://docs.python.org/3/library/ast.html#ast.Await) +#[derive(Clone, Debug, PartialEq)] +pub struct ExprAwait { + pub range: TextRange, + pub value: Box, +} + +impl From for Expr { + fn from(payload: ExprAwait) -> Self { + Expr::Await(payload) + } +} + +/// See also [Yield](https://docs.python.org/3/library/ast.html#ast.Yield) +#[derive(Clone, Debug, PartialEq)] +pub struct ExprYield { + pub range: TextRange, + pub value: Option>, +} + +impl From for Expr { + fn from(payload: ExprYield) -> Self { + Expr::Yield(payload) + } +} + +/// See also [YieldFrom](https://docs.python.org/3/library/ast.html#ast.YieldFrom) +#[derive(Clone, Debug, PartialEq)] +pub struct ExprYieldFrom { + pub range: TextRange, + pub value: Box, +} + +impl From for Expr { + fn from(payload: ExprYieldFrom) -> Self { + Expr::YieldFrom(payload) + } +} + +/// See also [Compare](https://docs.python.org/3/library/ast.html#ast.Compare) +#[derive(Clone, Debug, PartialEq)] +pub struct ExprCompare { + pub range: TextRange, + pub left: Box, + pub ops: Vec, + pub comparators: Vec, +} + +impl From for Expr { + fn from(payload: ExprCompare) -> Self { + Expr::Compare(payload) + } +} + +/// See also [Call](https://docs.python.org/3/library/ast.html#ast.Call) +#[derive(Clone, Debug, PartialEq)] +pub struct ExprCall { + pub range: TextRange, + pub func: Box, + pub args: Vec, + pub keywords: Vec, +} + +impl From for Expr { + fn from(payload: ExprCall) -> Self { + Expr::Call(payload) + } +} + +/// See also [FormattedValue](https://docs.python.org/3/library/ast.html#ast.FormattedValue) +#[derive(Clone, Debug, PartialEq)] +pub struct ExprFormattedValue { + pub range: TextRange, + pub value: Box, + pub conversion: ConversionFlag, + pub format_spec: Option>, +} + +impl From for Expr { + fn from(payload: ExprFormattedValue) -> Self { + Expr::FormattedValue(payload) + } +} + +/// Transforms a value prior to formatting it. +#[derive(Copy, Clone, Debug, Hash, PartialEq, Eq, is_macro::Is)] +#[repr(i8)] +#[allow(clippy::cast_possible_wrap)] +pub enum ConversionFlag { + /// No conversion + None = -1, // CPython uses -1 + /// Converts by calling `str()`. + Str = b's' as i8, + /// Converts by calling `ascii()`. + Ascii = b'a' as i8, + /// Converts by calling `repr()`. + Repr = b'r' as i8, +} + +impl ConversionFlag { + pub fn to_byte(&self) -> Option { + match self { + Self::None => None, + flag => Some(*flag as u8), + } + } + pub fn to_char(&self) -> Option { + Some(self.to_byte()? as char) + } +} + +/// See also [JoinedStr](https://docs.python.org/3/library/ast.html#ast.JoinedStr) +#[derive(Clone, Debug, PartialEq)] +pub struct ExprJoinedStr { + pub range: TextRange, + pub values: Vec, +} + +impl From for Expr { + fn from(payload: ExprJoinedStr) -> Self { + Expr::JoinedStr(payload) + } +} + +/// See also [Constant](https://docs.python.org/3/library/ast.html#ast.Constant) +#[derive(Clone, Debug, PartialEq)] +pub struct ExprConstant { + pub range: TextRange, + pub value: Constant, + pub kind: Option, +} + +impl From for Expr { + fn from(payload: ExprConstant) -> Self { + Expr::Constant(payload) + } +} + +/// See also [Attribute](https://docs.python.org/3/library/ast.html#ast.Attribute) +#[derive(Clone, Debug, PartialEq)] +pub struct ExprAttribute { + pub range: TextRange, + pub value: Box, + pub attr: Identifier, + pub ctx: ExprContext, +} + +impl From for Expr { + fn from(payload: ExprAttribute) -> Self { + Expr::Attribute(payload) + } +} + +/// See also [Subscript](https://docs.python.org/3/library/ast.html#ast.Subscript) +#[derive(Clone, Debug, PartialEq)] +pub struct ExprSubscript { + pub range: TextRange, + pub value: Box, + pub slice: Box, + pub ctx: ExprContext, +} + +impl From for Expr { + fn from(payload: ExprSubscript) -> Self { + Expr::Subscript(payload) + } +} + +/// See also [Starred](https://docs.python.org/3/library/ast.html#ast.Starred) +#[derive(Clone, Debug, PartialEq)] +pub struct ExprStarred { + pub range: TextRange, + pub value: Box, + pub ctx: ExprContext, +} + +impl From for Expr { + fn from(payload: ExprStarred) -> Self { + Expr::Starred(payload) + } +} + +/// See also [Name](https://docs.python.org/3/library/ast.html#ast.Name) +#[derive(Clone, Debug, PartialEq)] +pub struct ExprName { + pub range: TextRange, + pub id: String, + pub ctx: ExprContext, +} + +impl From for Expr { + fn from(payload: ExprName) -> Self { + Expr::Name(payload) + } +} + +/// See also [List](https://docs.python.org/3/library/ast.html#ast.List) +#[derive(Clone, Debug, PartialEq)] +pub struct ExprList { + pub range: TextRange, + pub elts: Vec, + pub ctx: ExprContext, +} + +impl From for Expr { + fn from(payload: ExprList) -> Self { + Expr::List(payload) + } +} + +/// See also [Tuple](https://docs.python.org/3/library/ast.html#ast.Tuple) +#[derive(Clone, Debug, PartialEq)] +pub struct ExprTuple { + pub range: TextRange, + pub elts: Vec, + pub ctx: ExprContext, +} + +impl From for Expr { + fn from(payload: ExprTuple) -> Self { + Expr::Tuple(payload) + } +} + +/// See also [Slice](https://docs.python.org/3/library/ast.html#ast.Slice) +#[derive(Clone, Debug, PartialEq)] +pub struct ExprSlice { + pub range: TextRange, + pub lower: Option>, + pub upper: Option>, + pub step: Option>, +} + +impl From for Expr { + fn from(payload: ExprSlice) -> Self { + Expr::Slice(payload) + } +} + +/// See also [expr_context](https://docs.python.org/3/library/ast.html#ast.expr_context) +#[derive(Clone, Debug, PartialEq, is_macro::Is, Copy, Hash, Eq)] +pub enum ExprContext { + Load, + Store, + Del, +} +impl ExprContext { + #[inline] + pub const fn load(&self) -> Option { + match self { + ExprContext::Load => Some(ExprContextLoad), + _ => None, + } + } + + #[inline] + pub const fn store(&self) -> Option { + match self { + ExprContext::Store => Some(ExprContextStore), + _ => None, + } + } + + #[inline] + pub const fn del(&self) -> Option { + match self { + ExprContext::Del => Some(ExprContextDel), + _ => None, + } + } +} + +pub struct ExprContextLoad; +impl From for ExprContext { + fn from(_: ExprContextLoad) -> Self { + ExprContext::Load + } +} + +impl std::cmp::PartialEq for ExprContextLoad { + #[inline] + fn eq(&self, other: &ExprContext) -> bool { + matches!(other, ExprContext::Load) + } +} + +pub struct ExprContextStore; +impl From for ExprContext { + fn from(_: ExprContextStore) -> Self { + ExprContext::Store + } +} + +impl std::cmp::PartialEq for ExprContextStore { + #[inline] + fn eq(&self, other: &ExprContext) -> bool { + matches!(other, ExprContext::Store) + } +} + +pub struct ExprContextDel; +impl From for ExprContext { + fn from(_: ExprContextDel) -> Self { + ExprContext::Del + } +} + +impl std::cmp::PartialEq for ExprContextDel { + #[inline] + fn eq(&self, other: &ExprContext) -> bool { + matches!(other, ExprContext::Del) + } +} + +/// See also [boolop](https://docs.python.org/3/library/ast.html#ast.BoolOp) +#[derive(Clone, Debug, PartialEq, is_macro::Is, Copy, Hash, Eq)] +pub enum BoolOp { + And, + Or, +} +impl BoolOp { + #[inline] + pub const fn and(&self) -> Option { + match self { + BoolOp::And => Some(BoolOpAnd), + BoolOp::Or => None, + } + } + + #[inline] + pub const fn or(&self) -> Option { + match self { + BoolOp::Or => Some(BoolOpOr), + BoolOp::And => None, + } + } +} + +pub struct BoolOpAnd; +impl From for BoolOp { + fn from(_: BoolOpAnd) -> Self { + BoolOp::And + } +} + +impl std::cmp::PartialEq for BoolOpAnd { + #[inline] + fn eq(&self, other: &BoolOp) -> bool { + matches!(other, BoolOp::And) + } +} + +pub struct BoolOpOr; +impl From for BoolOp { + fn from(_: BoolOpOr) -> Self { + BoolOp::Or + } +} + +impl std::cmp::PartialEq for BoolOpOr { + #[inline] + fn eq(&self, other: &BoolOp) -> bool { + matches!(other, BoolOp::Or) + } +} + +/// See also [operator](https://docs.python.org/3/library/ast.html#ast.operator) +#[derive(Clone, Debug, PartialEq, is_macro::Is, Copy, Hash, Eq)] +pub enum Operator { + Add, + Sub, + Mult, + MatMult, + Div, + Mod, + Pow, + LShift, + RShift, + BitOr, + BitXor, + BitAnd, + FloorDiv, +} +impl Operator { + #[inline] + pub const fn operator_add(&self) -> Option { + match self { + Operator::Add => Some(OperatorAdd), + _ => None, + } + } + + #[inline] + pub const fn operator_sub(&self) -> Option { + match self { + Operator::Sub => Some(OperatorSub), + _ => None, + } + } + + #[inline] + pub const fn operator_mult(&self) -> Option { + match self { + Operator::Mult => Some(OperatorMult), + _ => None, + } + } + + #[inline] + pub const fn operator_mat_mult(&self) -> Option { + match self { + Operator::MatMult => Some(OperatorMatMult), + _ => None, + } + } + + #[inline] + pub const fn operator_div(&self) -> Option { + match self { + Operator::Div => Some(OperatorDiv), + _ => None, + } + } + + #[inline] + pub const fn operator_mod(&self) -> Option { + match self { + Operator::Mod => Some(OperatorMod), + _ => None, + } + } + + #[inline] + pub const fn operator_pow(&self) -> Option { + match self { + Operator::Pow => Some(OperatorPow), + _ => None, + } + } + + #[inline] + pub const fn operator_l_shift(&self) -> Option { + match self { + Operator::LShift => Some(OperatorLShift), + _ => None, + } + } + + #[inline] + pub const fn operator_r_shift(&self) -> Option { + match self { + Operator::RShift => Some(OperatorRShift), + _ => None, + } + } + + #[inline] + pub const fn operator_bit_or(&self) -> Option { + match self { + Operator::BitOr => Some(OperatorBitOr), + _ => None, + } + } + + #[inline] + pub const fn operator_bit_xor(&self) -> Option { + match self { + Operator::BitXor => Some(OperatorBitXor), + _ => None, + } + } + + #[inline] + pub const fn operator_bit_and(&self) -> Option { + match self { + Operator::BitAnd => Some(OperatorBitAnd), + _ => None, + } + } + + #[inline] + pub const fn operator_floor_div(&self) -> Option { + match self { + Operator::FloorDiv => Some(OperatorFloorDiv), + _ => None, + } + } +} + +pub struct OperatorAdd; +impl From for Operator { + fn from(_: OperatorAdd) -> Self { + Operator::Add + } +} + +impl std::cmp::PartialEq for OperatorAdd { + #[inline] + fn eq(&self, other: &Operator) -> bool { + matches!(other, Operator::Add) + } +} + +pub struct OperatorSub; +impl From for Operator { + fn from(_: OperatorSub) -> Self { + Operator::Sub + } +} + +impl std::cmp::PartialEq for OperatorSub { + #[inline] + fn eq(&self, other: &Operator) -> bool { + matches!(other, Operator::Sub) + } +} + +pub struct OperatorMult; +impl From for Operator { + fn from(_: OperatorMult) -> Self { + Operator::Mult + } +} + +impl std::cmp::PartialEq for OperatorMult { + #[inline] + fn eq(&self, other: &Operator) -> bool { + matches!(other, Operator::Mult) + } +} + +pub struct OperatorMatMult; +impl From for Operator { + fn from(_: OperatorMatMult) -> Self { + Operator::MatMult + } +} + +impl std::cmp::PartialEq for OperatorMatMult { + #[inline] + fn eq(&self, other: &Operator) -> bool { + matches!(other, Operator::MatMult) + } +} + +pub struct OperatorDiv; +impl From for Operator { + fn from(_: OperatorDiv) -> Self { + Operator::Div + } +} + +impl std::cmp::PartialEq for OperatorDiv { + #[inline] + fn eq(&self, other: &Operator) -> bool { + matches!(other, Operator::Div) + } +} + +pub struct OperatorMod; +impl From for Operator { + fn from(_: OperatorMod) -> Self { + Operator::Mod + } +} + +impl std::cmp::PartialEq for OperatorMod { + #[inline] + fn eq(&self, other: &Operator) -> bool { + matches!(other, Operator::Mod) + } +} + +pub struct OperatorPow; +impl From for Operator { + fn from(_: OperatorPow) -> Self { + Operator::Pow + } +} + +impl std::cmp::PartialEq for OperatorPow { + #[inline] + fn eq(&self, other: &Operator) -> bool { + matches!(other, Operator::Pow) + } +} + +pub struct OperatorLShift; +impl From for Operator { + fn from(_: OperatorLShift) -> Self { + Operator::LShift + } +} + +impl std::cmp::PartialEq for OperatorLShift { + #[inline] + fn eq(&self, other: &Operator) -> bool { + matches!(other, Operator::LShift) + } +} + +pub struct OperatorRShift; +impl From for Operator { + fn from(_: OperatorRShift) -> Self { + Operator::RShift + } +} + +impl std::cmp::PartialEq for OperatorRShift { + #[inline] + fn eq(&self, other: &Operator) -> bool { + matches!(other, Operator::RShift) + } +} + +pub struct OperatorBitOr; +impl From for Operator { + fn from(_: OperatorBitOr) -> Self { + Operator::BitOr + } +} + +impl std::cmp::PartialEq for OperatorBitOr { + #[inline] + fn eq(&self, other: &Operator) -> bool { + matches!(other, Operator::BitOr) + } +} + +pub struct OperatorBitXor; +impl From for Operator { + fn from(_: OperatorBitXor) -> Self { + Operator::BitXor + } +} + +impl std::cmp::PartialEq for OperatorBitXor { + #[inline] + fn eq(&self, other: &Operator) -> bool { + matches!(other, Operator::BitXor) + } +} + +pub struct OperatorBitAnd; +impl From for Operator { + fn from(_: OperatorBitAnd) -> Self { + Operator::BitAnd + } +} + +impl std::cmp::PartialEq for OperatorBitAnd { + #[inline] + fn eq(&self, other: &Operator) -> bool { + matches!(other, Operator::BitAnd) + } +} + +pub struct OperatorFloorDiv; +impl From for Operator { + fn from(_: OperatorFloorDiv) -> Self { + Operator::FloorDiv + } +} + +impl std::cmp::PartialEq for OperatorFloorDiv { + #[inline] + fn eq(&self, other: &Operator) -> bool { + matches!(other, Operator::FloorDiv) + } +} + +/// See also [unaryop](https://docs.python.org/3/library/ast.html#ast.unaryop) +#[derive(Clone, Debug, PartialEq, is_macro::Is, Copy, Hash, Eq)] +pub enum UnaryOp { + Invert, + Not, + UAdd, + USub, +} +impl UnaryOp { + #[inline] + pub const fn invert(&self) -> Option { + match self { + UnaryOp::Invert => Some(UnaryOpInvert), + _ => None, + } + } + + #[inline] + pub const fn not(&self) -> Option { + match self { + UnaryOp::Not => Some(UnaryOpNot), + _ => None, + } + } + + #[inline] + pub const fn u_add(&self) -> Option { + match self { + UnaryOp::UAdd => Some(UnaryOpUAdd), + _ => None, + } + } + + #[inline] + pub const fn u_sub(&self) -> Option { + match self { + UnaryOp::USub => Some(UnaryOpUSub), + _ => None, + } + } +} + +pub struct UnaryOpInvert; +impl From for UnaryOp { + fn from(_: UnaryOpInvert) -> Self { + UnaryOp::Invert + } +} + +impl std::cmp::PartialEq for UnaryOpInvert { + #[inline] + fn eq(&self, other: &UnaryOp) -> bool { + matches!(other, UnaryOp::Invert) + } +} + +pub struct UnaryOpNot; +impl From for UnaryOp { + fn from(_: UnaryOpNot) -> Self { + UnaryOp::Not + } +} + +impl std::cmp::PartialEq for UnaryOpNot { + #[inline] + fn eq(&self, other: &UnaryOp) -> bool { + matches!(other, UnaryOp::Not) + } +} + +pub struct UnaryOpUAdd; +impl From for UnaryOp { + fn from(_: UnaryOpUAdd) -> Self { + UnaryOp::UAdd + } +} + +impl std::cmp::PartialEq for UnaryOpUAdd { + #[inline] + fn eq(&self, other: &UnaryOp) -> bool { + matches!(other, UnaryOp::UAdd) + } +} + +pub struct UnaryOpUSub; +impl From for UnaryOp { + fn from(_: UnaryOpUSub) -> Self { + UnaryOp::USub + } +} + +impl std::cmp::PartialEq for UnaryOpUSub { + #[inline] + fn eq(&self, other: &UnaryOp) -> bool { + matches!(other, UnaryOp::USub) + } +} + +/// See also [cmpop](https://docs.python.org/3/library/ast.html#ast.cmpop) +#[derive(Clone, Debug, PartialEq, is_macro::Is, Copy, Hash, Eq)] +pub enum CmpOp { + Eq, + NotEq, + Lt, + LtE, + Gt, + GtE, + Is, + IsNot, + In, + NotIn, +} +impl CmpOp { + #[inline] + pub const fn cmp_op_eq(&self) -> Option { + match self { + CmpOp::Eq => Some(CmpOpEq), + _ => None, + } + } + + #[inline] + pub const fn cmp_op_not_eq(&self) -> Option { + match self { + CmpOp::NotEq => Some(CmpOpNotEq), + _ => None, + } + } + + #[inline] + pub const fn cmp_op_lt(&self) -> Option { + match self { + CmpOp::Lt => Some(CmpOpLt), + _ => None, + } + } + + #[inline] + pub const fn cmp_op_lt_e(&self) -> Option { + match self { + CmpOp::LtE => Some(CmpOpLtE), + _ => None, + } + } + + #[inline] + pub const fn cmp_op_gt(&self) -> Option { + match self { + CmpOp::Gt => Some(CmpOpGt), + _ => None, + } + } + + #[inline] + pub const fn cmp_op_gt_e(&self) -> Option { + match self { + CmpOp::GtE => Some(CmpOpGtE), + _ => None, + } + } + + #[inline] + pub const fn cmp_op_is(&self) -> Option { + match self { + CmpOp::Is => Some(CmpOpIs), + _ => None, + } + } + + #[inline] + pub const fn cmp_op_is_not(&self) -> Option { + match self { + CmpOp::IsNot => Some(CmpOpIsNot), + _ => None, + } + } + + #[inline] + pub const fn cmp_op_in(&self) -> Option { + match self { + CmpOp::In => Some(CmpOpIn), + _ => None, + } + } + + #[inline] + pub const fn cmp_op_not_in(&self) -> Option { + match self { + CmpOp::NotIn => Some(CmpOpNotIn), + _ => None, + } + } +} + +pub struct CmpOpEq; +impl From for CmpOp { + fn from(_: CmpOpEq) -> Self { + CmpOp::Eq + } +} + +impl std::cmp::PartialEq for CmpOpEq { + #[inline] + fn eq(&self, other: &CmpOp) -> bool { + matches!(other, CmpOp::Eq) + } +} + +pub struct CmpOpNotEq; +impl From for CmpOp { + fn from(_: CmpOpNotEq) -> Self { + CmpOp::NotEq + } +} + +impl std::cmp::PartialEq for CmpOpNotEq { + #[inline] + fn eq(&self, other: &CmpOp) -> bool { + matches!(other, CmpOp::NotEq) + } +} + +pub struct CmpOpLt; +impl From for CmpOp { + fn from(_: CmpOpLt) -> Self { + CmpOp::Lt + } +} + +impl std::cmp::PartialEq for CmpOpLt { + #[inline] + fn eq(&self, other: &CmpOp) -> bool { + matches!(other, CmpOp::Lt) + } +} + +pub struct CmpOpLtE; +impl From for CmpOp { + fn from(_: CmpOpLtE) -> Self { + CmpOp::LtE + } +} + +impl std::cmp::PartialEq for CmpOpLtE { + #[inline] + fn eq(&self, other: &CmpOp) -> bool { + matches!(other, CmpOp::LtE) + } +} + +pub struct CmpOpGt; +impl From for CmpOp { + fn from(_: CmpOpGt) -> Self { + CmpOp::Gt + } +} + +impl std::cmp::PartialEq for CmpOpGt { + #[inline] + fn eq(&self, other: &CmpOp) -> bool { + matches!(other, CmpOp::Gt) + } +} + +pub struct CmpOpGtE; +impl From for CmpOp { + fn from(_: CmpOpGtE) -> Self { + CmpOp::GtE + } +} + +impl std::cmp::PartialEq for CmpOpGtE { + #[inline] + fn eq(&self, other: &CmpOp) -> bool { + matches!(other, CmpOp::GtE) + } +} + +pub struct CmpOpIs; +impl From for CmpOp { + fn from(_: CmpOpIs) -> Self { + CmpOp::Is + } +} + +impl std::cmp::PartialEq for CmpOpIs { + #[inline] + fn eq(&self, other: &CmpOp) -> bool { + matches!(other, CmpOp::Is) + } +} + +pub struct CmpOpIsNot; +impl From for CmpOp { + fn from(_: CmpOpIsNot) -> Self { + CmpOp::IsNot + } +} + +impl std::cmp::PartialEq for CmpOpIsNot { + #[inline] + fn eq(&self, other: &CmpOp) -> bool { + matches!(other, CmpOp::IsNot) + } +} + +pub struct CmpOpIn; +impl From for CmpOp { + fn from(_: CmpOpIn) -> Self { + CmpOp::In + } +} + +impl std::cmp::PartialEq for CmpOpIn { + #[inline] + fn eq(&self, other: &CmpOp) -> bool { + matches!(other, CmpOp::In) + } +} + +pub struct CmpOpNotIn; +impl From for CmpOp { + fn from(_: CmpOpNotIn) -> Self { + CmpOp::NotIn + } +} + +impl std::cmp::PartialEq for CmpOpNotIn { + #[inline] + fn eq(&self, other: &CmpOp) -> bool { + matches!(other, CmpOp::NotIn) + } +} + +/// See also [comprehension](https://docs.python.org/3/library/ast.html#ast.comprehension) +#[derive(Clone, Debug, PartialEq)] +pub struct Comprehension { + pub range: TextRange, + pub target: Expr, + pub iter: Expr, + pub ifs: Vec, + pub is_async: bool, +} + +/// See also [excepthandler](https://docs.python.org/3/library/ast.html#ast.excepthandler) +#[derive(Clone, Debug, PartialEq, is_macro::Is)] +pub enum ExceptHandler { + ExceptHandler(ExceptHandlerExceptHandler), +} + +/// See also [ExceptHandler](https://docs.python.org/3/library/ast.html#ast.ExceptHandler) +#[derive(Clone, Debug, PartialEq)] +pub struct ExceptHandlerExceptHandler { + pub range: TextRange, + pub type_: Option>, + pub name: Option, + pub body: Vec, +} + +impl From for ExceptHandler { + fn from(payload: ExceptHandlerExceptHandler) -> Self { + ExceptHandler::ExceptHandler(payload) + } +} + +/// See also [arguments](https://docs.python.org/3/library/ast.html#ast.arguments) +#[derive(Clone, Debug, PartialEq)] +pub struct PythonArguments { + pub range: TextRange, + pub posonlyargs: Vec, + pub args: Vec, + pub vararg: Option>, + pub kwonlyargs: Vec, + pub kw_defaults: Vec, + pub kwarg: Option>, + pub defaults: Vec, +} + +/// See also [arg](https://docs.python.org/3/library/ast.html#ast.arg) +#[derive(Clone, Debug, PartialEq)] +pub struct Arg { + pub range: TextRange, + pub arg: Identifier, + pub annotation: Option>, + pub type_comment: Option, +} + +/// See also [keyword](https://docs.python.org/3/library/ast.html#ast.keyword) +#[derive(Clone, Debug, PartialEq)] +pub struct Keyword { + pub range: TextRange, + pub arg: Option, + pub value: Expr, +} + +/// See also [alias](https://docs.python.org/3/library/ast.html#ast.alias) +#[derive(Clone, Debug, PartialEq)] +pub struct Alias { + pub range: TextRange, + pub name: Identifier, + pub asname: Option, +} + +/// See also [withitem](https://docs.python.org/3/library/ast.html#ast.withitem) +#[derive(Clone, Debug, PartialEq)] +pub struct WithItem { + pub range: TextRange, + pub context_expr: Expr, + pub optional_vars: Option>, +} + +/// See also [match_case](https://docs.python.org/3/library/ast.html#ast.match_case) +#[derive(Clone, Debug, PartialEq)] +pub struct MatchCase { + pub range: TextRange, + pub pattern: Pattern, + pub guard: Option>, + pub body: Vec, +} + +/// See also [pattern](https://docs.python.org/3/library/ast.html#ast.pattern) +#[derive(Clone, Debug, PartialEq, is_macro::Is)] +pub enum Pattern { + MatchValue(PatternMatchValue), + MatchSingleton(PatternMatchSingleton), + MatchSequence(PatternMatchSequence), + MatchMapping(PatternMatchMapping), + MatchClass(PatternMatchClass), + MatchStar(PatternMatchStar), + MatchAs(PatternMatchAs), + MatchOr(PatternMatchOr), +} + +/// See also [MatchValue](https://docs.python.org/3/library/ast.html#ast.MatchValue) +#[derive(Clone, Debug, PartialEq)] +pub struct PatternMatchValue { + pub range: TextRange, + pub value: Box, +} + +impl From for Pattern { + fn from(payload: PatternMatchValue) -> Self { + Pattern::MatchValue(payload) + } +} + +/// See also [MatchSingleton](https://docs.python.org/3/library/ast.html#ast.MatchSingleton) +#[derive(Clone, Debug, PartialEq)] +pub struct PatternMatchSingleton { + pub range: TextRange, + pub value: Constant, +} + +impl From for Pattern { + fn from(payload: PatternMatchSingleton) -> Self { + Pattern::MatchSingleton(payload) + } +} + +/// See also [MatchSequence](https://docs.python.org/3/library/ast.html#ast.MatchSequence) +#[derive(Clone, Debug, PartialEq)] +pub struct PatternMatchSequence { + pub range: TextRange, + pub patterns: Vec, +} + +impl From for Pattern { + fn from(payload: PatternMatchSequence) -> Self { + Pattern::MatchSequence(payload) + } +} + +/// See also [MatchMapping](https://docs.python.org/3/library/ast.html#ast.MatchMapping) +#[derive(Clone, Debug, PartialEq)] +pub struct PatternMatchMapping { + pub range: TextRange, + pub keys: Vec, + pub patterns: Vec, + pub rest: Option, +} + +impl From for Pattern { + fn from(payload: PatternMatchMapping) -> Self { + Pattern::MatchMapping(payload) + } +} + +/// See also [MatchClass](https://docs.python.org/3/library/ast.html#ast.MatchClass) +#[derive(Clone, Debug, PartialEq)] +pub struct PatternMatchClass { + pub range: TextRange, + pub cls: Box, + pub patterns: Vec, + pub kwd_attrs: Vec, + pub kwd_patterns: Vec, +} + +impl From for Pattern { + fn from(payload: PatternMatchClass) -> Self { + Pattern::MatchClass(payload) + } +} + +/// See also [MatchStar](https://docs.python.org/3/library/ast.html#ast.MatchStar) +#[derive(Clone, Debug, PartialEq)] +pub struct PatternMatchStar { + pub range: TextRange, + pub name: Option, +} + +impl From for Pattern { + fn from(payload: PatternMatchStar) -> Self { + Pattern::MatchStar(payload) + } +} + +/// See also [MatchAs](https://docs.python.org/3/library/ast.html#ast.MatchAs) +#[derive(Clone, Debug, PartialEq)] +pub struct PatternMatchAs { + pub range: TextRange, + pub pattern: Option>, + pub name: Option, +} + +impl From for Pattern { + fn from(payload: PatternMatchAs) -> Self { + Pattern::MatchAs(payload) + } +} + +/// See also [MatchOr](https://docs.python.org/3/library/ast.html#ast.MatchOr) +#[derive(Clone, Debug, PartialEq)] +pub struct PatternMatchOr { + pub range: TextRange, + pub patterns: Vec, +} + +impl From for Pattern { + fn from(payload: PatternMatchOr) -> Self { + Pattern::MatchOr(payload) + } +} + +/// See also [type_ignore](https://docs.python.org/3/library/ast.html#ast.type_ignore) +#[derive(Clone, Debug, PartialEq, is_macro::Is)] +pub enum TypeIgnore { + TypeIgnore(TypeIgnoreTypeIgnore), +} + +/// See also [TypeIgnore](https://docs.python.org/3/library/ast.html#ast.TypeIgnore) +#[derive(Clone, Debug, PartialEq)] +pub struct TypeIgnoreTypeIgnore { + pub range: TextRange, + pub lineno: Int, + pub tag: String, +} + +impl From for TypeIgnore { + fn from(payload: TypeIgnoreTypeIgnore) -> Self { + TypeIgnore::TypeIgnore(payload) + } +} + +/// See also [type_param](https://docs.python.org/3/library/ast.html#ast.type_param) +#[derive(Clone, Debug, PartialEq, is_macro::Is)] +pub enum TypeParam { + TypeVar(TypeParamTypeVar), + ParamSpec(TypeParamParamSpec), + TypeVarTuple(TypeParamTypeVarTuple), +} + +/// See also [TypeVar](https://docs.python.org/3/library/ast.html#ast.TypeVar) +#[derive(Clone, Debug, PartialEq)] +pub struct TypeParamTypeVar { + pub range: TextRange, + pub name: Identifier, + pub bound: Option>, +} + +impl From for TypeParam { + fn from(payload: TypeParamTypeVar) -> Self { + TypeParam::TypeVar(payload) + } +} + +/// See also [ParamSpec](https://docs.python.org/3/library/ast.html#ast.ParamSpec) +#[derive(Clone, Debug, PartialEq)] +pub struct TypeParamParamSpec { + pub range: TextRange, + pub name: Identifier, +} + +impl From for TypeParam { + fn from(payload: TypeParamParamSpec) -> Self { + TypeParam::ParamSpec(payload) + } +} + +/// See also [TypeVarTuple](https://docs.python.org/3/library/ast.html#ast.TypeVarTuple) +#[derive(Clone, Debug, PartialEq)] +pub struct TypeParamTypeVarTuple { + pub range: TextRange, + pub name: Identifier, +} + +impl From for TypeParam { + fn from(payload: TypeParamTypeVarTuple) -> Self { + TypeParam::TypeVarTuple(payload) + } +} + +/// See also [decorator](https://docs.python.org/3/library/ast.html#ast.decorator) +#[derive(Clone, Debug, PartialEq)] +pub struct Decorator { + pub range: TextRange, + pub expression: Expr, +} + +/// An alternative type of AST `arguments`. This is ruff_python_parser-friendly and human-friendly definition of function arguments. +/// This form also has advantage to implement pre-order traverse. +/// `defaults` and `kw_defaults` fields are removed and the default values are placed under each `arg_with_default` typed argument. +/// `vararg` and `kwarg` are still typed as `arg` because they never can have a default value. +/// +/// The matching Python style AST type is [`PythonArguments`]. While [`PythonArguments`] has ordered `kwonlyargs` fields by +/// default existence, [Arguments] has location-ordered kwonlyargs fields. +/// +/// NOTE: This type is different from original Python AST. + +#[derive(Clone, Debug, PartialEq)] +pub struct Arguments { + pub range: TextRange, + pub posonlyargs: Vec, + pub args: Vec, + pub vararg: Option>, + pub kwonlyargs: Vec, + pub kwarg: Option>, +} + +/// An alternative type of AST `arg`. This is used for each function argument that might have a default value. +/// Used by `Arguments` original type. +/// +/// NOTE: This type is different from original Python AST. + +#[derive(Clone, Debug, PartialEq)] +pub struct ArgWithDefault { + pub range: TextRange, + pub def: Arg, + pub default: Option>, +} + +pub type Suite = Vec; + +impl CmpOp { + pub fn as_str(&self) -> &'static str { + match self { + CmpOp::Eq => "==", + CmpOp::NotEq => "!=", + CmpOp::Lt => "<", + CmpOp::LtE => "<=", + CmpOp::Gt => ">", + CmpOp::GtE => ">=", + CmpOp::Is => "is", + CmpOp::IsNot => "is not", + CmpOp::In => "in", + CmpOp::NotIn => "not in", + } + } +} + +impl Arguments { + pub fn empty(range: TextRange) -> Self { + Self { + range, + posonlyargs: Vec::new(), + args: Vec::new(), + vararg: None, + kwonlyargs: Vec::new(), + kwarg: None, + } + } +} + +#[allow(clippy::borrowed_box)] // local utility +fn clone_boxed_expr(expr: &Box) -> Box { + let expr: &Expr = expr.as_ref(); + Box::new(expr.clone()) +} + +impl ArgWithDefault { + pub fn as_arg(&self) -> &Arg { + &self.def + } + + pub fn to_arg(&self) -> (Arg, Option>) { + let ArgWithDefault { + range: _, + def, + default, + } = self; + (def.clone(), default.as_ref().map(clone_boxed_expr)) + } + pub fn into_arg(self) -> (Arg, Option>) { + let ArgWithDefault { + range: _, + def, + default, + } = self; + (def, default) + } +} + +impl Arguments { + pub fn defaults(&self) -> impl std::iter::Iterator { + self.posonlyargs + .iter() + .chain(self.args.iter()) + .filter_map(|arg| arg.default.as_ref().map(std::convert::AsRef::as_ref)) + } + + #[allow(clippy::type_complexity)] + pub fn split_kwonlyargs(&self) -> (Vec<&Arg>, Vec<(&Arg, &Expr)>) { + let mut args = Vec::new(); + let mut with_defaults = Vec::new(); + for arg in &self.kwonlyargs { + if let Some(ref default) = arg.default { + with_defaults.push((arg.as_arg(), &**default)); + } else { + args.push(arg.as_arg()); + } + } + (args, with_defaults) + } +} + +/// The kind of magic command as defined in [IPython Syntax] in the IPython codebase. +/// +/// [IPython Syntax]: https://github.com/ipython/ipython/blob/635815e8f1ded5b764d66cacc80bbe25e9e2587f/IPython/core/inputtransformer2.py#L335-L343 +#[derive(PartialEq, Eq, Debug, Clone, Hash, Copy)] +pub enum MagicKind { + /// Send line to underlying system shell. + Shell, + /// Send line to system shell and capture output. + ShCap, + /// Show help on object. + Help, + /// Show help on object, with extra verbosity. + Help2, + /// Call magic function. + Magic, + /// Call cell magic function. + Magic2, + /// Call first argument with rest of line as arguments after splitting on whitespace + /// and quote each as string. + Quote, + /// Call first argument with rest of line as an argument quoted as a single string. + Quote2, + /// Call first argument with rest of line as arguments. + Paren, +} + +impl TryFrom for MagicKind { + type Error = String; + + fn try_from(ch: char) -> Result { + match ch { + '!' => Ok(MagicKind::Shell), + '?' => Ok(MagicKind::Help), + '%' => Ok(MagicKind::Magic), + ',' => Ok(MagicKind::Quote), + ';' => Ok(MagicKind::Quote2), + '/' => Ok(MagicKind::Paren), + _ => Err(format!("Unexpected magic escape: {ch}")), + } + } +} + +impl TryFrom<[char; 2]> for MagicKind { + type Error = String; + + fn try_from(ch: [char; 2]) -> Result { + match ch { + ['!', '!'] => Ok(MagicKind::ShCap), + ['?', '?'] => Ok(MagicKind::Help2), + ['%', '%'] => Ok(MagicKind::Magic2), + [c1, c2] => Err(format!("Unexpected magic escape: {c1}{c2}")), + } + } +} + +impl fmt::Display for MagicKind { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + MagicKind::Shell => f.write_str("!"), + MagicKind::ShCap => f.write_str("!!"), + MagicKind::Help => f.write_str("?"), + MagicKind::Help2 => f.write_str("??"), + MagicKind::Magic => f.write_str("%"), + MagicKind::Magic2 => f.write_str("%%"), + MagicKind::Quote => f.write_str(","), + MagicKind::Quote2 => f.write_str(";"), + MagicKind::Paren => f.write_str("/"), + } + } +} + +impl MagicKind { + /// Returns the length of the magic command prefix. + pub fn prefix_len(self) -> TextSize { + let len = match self { + MagicKind::Shell + | MagicKind::Magic + | MagicKind::Help + | MagicKind::Quote + | MagicKind::Quote2 + | MagicKind::Paren => 1, + MagicKind::ShCap | MagicKind::Magic2 | MagicKind::Help2 => 2, + }; + len.into() + } +} + +#[derive(Clone, Debug, PartialEq, Eq, Hash)] +pub struct Identifier { + id: String, + range: TextRange, +} + +impl Identifier { + #[inline] + pub fn new(id: impl Into, range: TextRange) -> Self { + Self { + id: id.into(), + range, + } + } +} + +impl Identifier { + #[inline] + pub fn as_str(&self) -> &str { + self.id.as_str() + } +} + +impl PartialEq for Identifier { + #[inline] + fn eq(&self, other: &str) -> bool { + self.id == other + } +} + +impl PartialEq for Identifier { + #[inline] + fn eq(&self, other: &String) -> bool { + &self.id == other + } +} + +impl std::ops::Deref for Identifier { + type Target = str; + #[inline] + fn deref(&self) -> &Self::Target { + self.id.as_str() + } +} + +impl AsRef for Identifier { + #[inline] + fn as_ref(&self) -> &str { + self.id.as_str() + } +} + +impl AsRef for Identifier { + #[inline] + fn as_ref(&self) -> &String { + &self.id + } +} + +impl std::fmt::Display for Identifier { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + std::fmt::Display::fmt(&self.id, f) + } +} + +impl From for String { + #[inline] + fn from(identifier: Identifier) -> String { + identifier.id + } +} + +impl Ranged for Identifier { + fn range(&self) -> TextRange { + self.range + } +} + +#[derive(Copy, Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] +pub struct Int(u32); + +impl Int { + pub fn new(i: u32) -> Self { + Self(i) + } + pub fn to_u32(&self) -> u32 { + self.0 + } + pub fn to_usize(&self) -> usize { + self.0 as _ + } +} + +impl std::cmp::PartialEq for Int { + #[inline] + fn eq(&self, other: &u32) -> bool { + self.0 == *other + } +} + +impl std::cmp::PartialEq for Int { + #[inline] + fn eq(&self, other: &usize) -> bool { + self.0 as usize == *other + } +} + +#[derive(Clone, Debug, PartialEq, is_macro::Is)] +pub enum Constant { + None, + Bool(bool), + Str(String), + Bytes(Vec), + Int(BigInt), + Float(f64), + Complex { real: f64, imag: f64 }, + Ellipsis, +} + +impl Constant { + pub fn is_true(self) -> bool { + self.bool().map_or(false, |b| b) + } + pub fn is_false(self) -> bool { + self.bool().map_or(false, |b| !b) + } + pub fn complex(self) -> Option<(f64, f64)> { + match self { + Constant::Complex { real, imag } => Some((real, imag)), + _ => None, + } + } +} + +impl From for Constant { + fn from(s: String) -> Constant { + Self::Str(s) + } +} +impl From> for Constant { + fn from(b: Vec) -> Constant { + Self::Bytes(b) + } +} +impl From for Constant { + fn from(b: bool) -> Constant { + Self::Bool(b) + } +} +impl From for Constant { + fn from(i: BigInt) -> Constant { + Self::Int(i) + } +} + +#[cfg(feature = "rustpython-literal")] +impl std::fmt::Display for Constant { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + match self { + Constant::None => f.pad("None"), + Constant::Bool(b) => f.pad(if *b { "True" } else { "False" }), + Constant::Str(s) => rustpython_literal::escape::UnicodeEscape::new_repr(s.as_str()) + .str_repr() + .write(f), + Constant::Bytes(b) => { + let escape = rustpython_literal::escape::AsciiEscape::new_repr(b); + let repr = escape.bytes_repr().to_string().unwrap(); + f.pad(&repr) + } + Constant::Int(i) => std::fmt::Display::fmt(&i, f), + Constant::Float(fp) => f.pad(&rustpython_literal::float::to_string(*fp)), + Constant::Complex { real, imag } => { + if *real == 0.0 { + write!(f, "{imag}j") + } else { + write!(f, "({real}{imag:+}j)") + } + } + Constant::Ellipsis => f.pad("..."), + } + } +} + +impl Ranged for crate::nodes::ModModule { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::ModInteractive { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::ModExpression { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::ModFunctionType { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::Mod { + fn range(&self) -> TextRange { + match self { + Self::Module(node) => node.range(), + Self::Interactive(node) => node.range(), + Self::Expression(node) => node.range(), + Self::FunctionType(node) => node.range(), + } + } +} + +impl Ranged for crate::nodes::StmtFunctionDef { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::StmtAsyncFunctionDef { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::StmtClassDef { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::StmtReturn { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::StmtDelete { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::StmtTypeAlias { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::StmtAssign { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::StmtAugAssign { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::StmtAnnAssign { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::StmtFor { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::StmtAsyncFor { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::StmtWhile { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::StmtIf { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::ElifElseClause { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::StmtWith { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::StmtAsyncWith { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::StmtMatch { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::StmtRaise { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::StmtTry { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::StmtTryStar { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::StmtAssert { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::StmtImport { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::StmtImportFrom { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::StmtGlobal { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::StmtNonlocal { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::StmtExpr { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::StmtPass { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::StmtBreak { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::StmtContinue { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for StmtLineMagic { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::Stmt { + fn range(&self) -> TextRange { + match self { + Self::FunctionDef(node) => node.range(), + Self::AsyncFunctionDef(node) => node.range(), + Self::ClassDef(node) => node.range(), + Self::Return(node) => node.range(), + Self::Delete(node) => node.range(), + Self::TypeAlias(node) => node.range(), + Self::Assign(node) => node.range(), + Self::AugAssign(node) => node.range(), + Self::AnnAssign(node) => node.range(), + Self::For(node) => node.range(), + Self::AsyncFor(node) => node.range(), + Self::While(node) => node.range(), + Self::If(node) => node.range(), + Self::With(node) => node.range(), + Self::AsyncWith(node) => node.range(), + Self::Match(node) => node.range(), + Self::Raise(node) => node.range(), + Self::Try(node) => node.range(), + Self::TryStar(node) => node.range(), + Self::Assert(node) => node.range(), + Self::Import(node) => node.range(), + Self::ImportFrom(node) => node.range(), + Self::Global(node) => node.range(), + Self::Nonlocal(node) => node.range(), + Self::Expr(node) => node.range(), + Self::Pass(node) => node.range(), + Self::Break(node) => node.range(), + Self::Continue(node) => node.range(), + Stmt::LineMagic(node) => node.range(), + } + } +} + +impl Ranged for crate::nodes::ExprBoolOp { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::ExprNamedExpr { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::ExprBinOp { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::ExprUnaryOp { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::ExprLambda { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::ExprIfExp { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::ExprDict { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::ExprSet { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::ExprListComp { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::ExprSetComp { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::ExprDictComp { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::ExprGeneratorExp { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::ExprAwait { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::ExprYield { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::ExprYieldFrom { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::ExprCompare { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::ExprCall { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::ExprFormattedValue { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::ExprJoinedStr { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::ExprConstant { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::ExprAttribute { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::ExprSubscript { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::ExprStarred { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::ExprName { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::ExprList { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::ExprTuple { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::ExprSlice { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for ExprLineMagic { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::Expr { + fn range(&self) -> TextRange { + match self { + Self::BoolOp(node) => node.range(), + Self::NamedExpr(node) => node.range(), + Self::BinOp(node) => node.range(), + Self::UnaryOp(node) => node.range(), + Self::Lambda(node) => node.range(), + Self::IfExp(node) => node.range(), + Self::Dict(node) => node.range(), + Self::Set(node) => node.range(), + Self::ListComp(node) => node.range(), + Self::SetComp(node) => node.range(), + Self::DictComp(node) => node.range(), + Self::GeneratorExp(node) => node.range(), + Self::Await(node) => node.range(), + Self::Yield(node) => node.range(), + Self::YieldFrom(node) => node.range(), + Self::Compare(node) => node.range(), + Self::Call(node) => node.range(), + Self::FormattedValue(node) => node.range(), + Self::JoinedStr(node) => node.range(), + Self::Constant(node) => node.range(), + Self::Attribute(node) => node.range(), + Self::Subscript(node) => node.range(), + Self::Starred(node) => node.range(), + Self::Name(node) => node.range(), + Self::List(node) => node.range(), + Self::Tuple(node) => node.range(), + Self::Slice(node) => node.range(), + Expr::LineMagic(node) => node.range(), + } + } +} + +impl Ranged for crate::nodes::Comprehension { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::ExceptHandlerExceptHandler { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::ExceptHandler { + fn range(&self) -> TextRange { + match self { + Self::ExceptHandler(node) => node.range(), + } + } +} + +impl Ranged for crate::nodes::PythonArguments { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::Arg { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::Keyword { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::Alias { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::WithItem { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::MatchCase { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::PatternMatchValue { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::PatternMatchSingleton { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::PatternMatchSequence { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::PatternMatchMapping { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::PatternMatchClass { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::PatternMatchStar { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::PatternMatchAs { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::PatternMatchOr { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::Pattern { + fn range(&self) -> TextRange { + match self { + Self::MatchValue(node) => node.range(), + Self::MatchSingleton(node) => node.range(), + Self::MatchSequence(node) => node.range(), + Self::MatchMapping(node) => node.range(), + Self::MatchClass(node) => node.range(), + Self::MatchStar(node) => node.range(), + Self::MatchAs(node) => node.range(), + Self::MatchOr(node) => node.range(), + } + } +} + +impl Ranged for crate::nodes::TypeIgnoreTypeIgnore { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::TypeIgnore { + fn range(&self) -> TextRange { + match self { + Self::TypeIgnore(node) => node.range(), + } + } +} +impl Ranged for crate::nodes::TypeParamTypeVar { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::TypeParamTypeVarTuple { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::TypeParamParamSpec { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::TypeParam { + fn range(&self) -> TextRange { + match self { + Self::TypeVar(node) => node.range(), + Self::TypeVarTuple(node) => node.range(), + Self::ParamSpec(node) => node.range(), + } + } +} +impl Ranged for crate::nodes::Decorator { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::Arguments { + fn range(&self) -> TextRange { + self.range + } +} +impl Ranged for crate::nodes::ArgWithDefault { + fn range(&self) -> TextRange { + self.range + } +} diff --git a/crates/ruff_python_ast/src/relocate.rs b/crates/ruff_python_ast/src/relocate.rs index 52fa1fed85..8ee02fe8fc 100644 --- a/crates/ruff_python_ast/src/relocate.rs +++ b/crates/ruff_python_ast/src/relocate.rs @@ -1,5 +1,5 @@ +use crate::{nodes, Expr, Keyword}; use ruff_text_size::TextRange; -use rustpython_ast::{self as ast, Expr, Keyword}; fn relocate_keyword(keyword: &mut Keyword, location: TextRange) { relocate_expr(&mut keyword.value, location); @@ -9,13 +9,13 @@ fn relocate_keyword(keyword: &mut Keyword, location: TextRange) { /// location. pub fn relocate_expr(expr: &mut Expr, location: TextRange) { match expr { - Expr::BoolOp(ast::ExprBoolOp { values, range, .. }) => { + Expr::BoolOp(nodes::ExprBoolOp { values, range, .. }) => { *range = location; for expr in values { relocate_expr(expr, location); } } - Expr::NamedExpr(ast::ExprNamedExpr { + Expr::NamedExpr(nodes::ExprNamedExpr { target, value, range, @@ -24,22 +24,22 @@ pub fn relocate_expr(expr: &mut Expr, location: TextRange) { relocate_expr(target, location); relocate_expr(value, location); } - Expr::BinOp(ast::ExprBinOp { + Expr::BinOp(nodes::ExprBinOp { left, right, range, .. }) => { *range = location; relocate_expr(left, location); relocate_expr(right, location); } - Expr::UnaryOp(ast::ExprUnaryOp { operand, range, .. }) => { + Expr::UnaryOp(nodes::ExprUnaryOp { operand, range, .. }) => { *range = location; relocate_expr(operand, location); } - Expr::Lambda(ast::ExprLambda { body, range, .. }) => { + Expr::Lambda(nodes::ExprLambda { body, range, .. }) => { *range = location; relocate_expr(body, location); } - Expr::IfExp(ast::ExprIfExp { + Expr::IfExp(nodes::ExprIfExp { test, body, orelse, @@ -50,7 +50,7 @@ pub fn relocate_expr(expr: &mut Expr, location: TextRange) { relocate_expr(body, location); relocate_expr(orelse, location); } - Expr::Dict(ast::ExprDict { + Expr::Dict(nodes::ExprDict { keys, values, range, @@ -63,46 +63,46 @@ pub fn relocate_expr(expr: &mut Expr, location: TextRange) { relocate_expr(expr, location); } } - Expr::Set(ast::ExprSet { elts, range }) => { + Expr::Set(nodes::ExprSet { elts, range }) => { *range = location; for expr in elts { relocate_expr(expr, location); } } - Expr::ListComp(ast::ExprListComp { elt, range, .. }) => { + Expr::ListComp(nodes::ExprListComp { elt, range, .. }) => { *range = location; relocate_expr(elt, location); } - Expr::SetComp(ast::ExprSetComp { elt, range, .. }) => { + Expr::SetComp(nodes::ExprSetComp { elt, range, .. }) => { *range = location; relocate_expr(elt, location); } - Expr::DictComp(ast::ExprDictComp { + Expr::DictComp(nodes::ExprDictComp { key, value, range, .. }) => { *range = location; relocate_expr(key, location); relocate_expr(value, location); } - Expr::GeneratorExp(ast::ExprGeneratorExp { elt, range, .. }) => { + Expr::GeneratorExp(nodes::ExprGeneratorExp { elt, range, .. }) => { *range = location; relocate_expr(elt, location); } - Expr::Await(ast::ExprAwait { value, range }) => { + Expr::Await(nodes::ExprAwait { value, range }) => { *range = location; relocate_expr(value, location); } - Expr::Yield(ast::ExprYield { value, range }) => { + Expr::Yield(nodes::ExprYield { value, range }) => { *range = location; if let Some(expr) = value { relocate_expr(expr, location); } } - Expr::YieldFrom(ast::ExprYieldFrom { value, range }) => { + Expr::YieldFrom(nodes::ExprYieldFrom { value, range }) => { *range = location; relocate_expr(value, location); } - Expr::Compare(ast::ExprCompare { + Expr::Compare(nodes::ExprCompare { left, comparators, range, @@ -114,7 +114,7 @@ pub fn relocate_expr(expr: &mut Expr, location: TextRange) { relocate_expr(expr, location); } } - Expr::Call(ast::ExprCall { + Expr::Call(nodes::ExprCall { func, args, keywords, @@ -129,7 +129,7 @@ pub fn relocate_expr(expr: &mut Expr, location: TextRange) { relocate_keyword(keyword, location); } } - Expr::FormattedValue(ast::ExprFormattedValue { + Expr::FormattedValue(nodes::ExprFormattedValue { value, format_spec, range, @@ -141,20 +141,20 @@ pub fn relocate_expr(expr: &mut Expr, location: TextRange) { relocate_expr(expr, location); } } - Expr::JoinedStr(ast::ExprJoinedStr { values, range }) => { + Expr::JoinedStr(nodes::ExprJoinedStr { values, range }) => { *range = location; for expr in values { relocate_expr(expr, location); } } - Expr::Constant(ast::ExprConstant { range, .. }) => { + Expr::Constant(nodes::ExprConstant { range, .. }) => { *range = location; } - Expr::Attribute(ast::ExprAttribute { value, range, .. }) => { + Expr::Attribute(nodes::ExprAttribute { value, range, .. }) => { *range = location; relocate_expr(value, location); } - Expr::Subscript(ast::ExprSubscript { + Expr::Subscript(nodes::ExprSubscript { value, slice, range, @@ -164,26 +164,26 @@ pub fn relocate_expr(expr: &mut Expr, location: TextRange) { relocate_expr(value, location); relocate_expr(slice, location); } - Expr::Starred(ast::ExprStarred { value, range, .. }) => { + Expr::Starred(nodes::ExprStarred { value, range, .. }) => { *range = location; relocate_expr(value, location); } - Expr::Name(ast::ExprName { range, .. }) => { + Expr::Name(nodes::ExprName { range, .. }) => { *range = location; } - Expr::List(ast::ExprList { elts, range, .. }) => { + Expr::List(nodes::ExprList { elts, range, .. }) => { *range = location; for expr in elts { relocate_expr(expr, location); } } - Expr::Tuple(ast::ExprTuple { elts, range, .. }) => { + Expr::Tuple(nodes::ExprTuple { elts, range, .. }) => { *range = location; for expr in elts { relocate_expr(expr, location); } } - Expr::Slice(ast::ExprSlice { + Expr::Slice(nodes::ExprSlice { lower, upper, step, @@ -200,7 +200,7 @@ pub fn relocate_expr(expr: &mut Expr, location: TextRange) { relocate_expr(expr, location); } } - Expr::LineMagic(ast::ExprLineMagic { range, .. }) => { + Expr::LineMagic(nodes::ExprLineMagic { range, .. }) => { *range = location; } } diff --git a/crates/ruff_python_ast/src/statement_visitor.rs b/crates/ruff_python_ast/src/statement_visitor.rs index 11cf6f72ab..7b493b2043 100644 --- a/crates/ruff_python_ast/src/statement_visitor.rs +++ b/crates/ruff_python_ast/src/statement_visitor.rs @@ -1,6 +1,6 @@ //! Specialized AST visitor trait and walk functions that only visit statements. -use rustpython_ast::{self as ast, ElifElseClause, ExceptHandler, MatchCase, Stmt}; +use crate::{self as ast, ElifElseClause, ExceptHandler, MatchCase, Stmt}; /// A trait for AST visitors that only need to visit statements. pub trait StatementVisitor<'a> { diff --git a/crates/ruff_python_ast/src/stmt_if.rs b/crates/ruff_python_ast/src/stmt_if.rs index 4c44affebd..0acc04a405 100644 --- a/crates/ruff_python_ast/src/stmt_if.rs +++ b/crates/ruff_python_ast/src/stmt_if.rs @@ -1,6 +1,6 @@ +use crate::{ElifElseClause, Expr, Ranged, Stmt, StmtIf}; use ruff_python_trivia::{SimpleTokenKind, SimpleTokenizer}; use ruff_text_size::TextRange; -use rustpython_ast::{ElifElseClause, Expr, Ranged, Stmt, StmtIf}; use std::iter; /// Return the `Range` of the first `Elif` or `Else` token in an `If` statement. @@ -42,36 +42,4 @@ pub fn if_elif_branches(stmt_if: &StmtIf) -> impl Iterator } #[cfg(test)] -mod test { - use crate::stmt_if::elif_else_range; - use ruff_text_size::TextSize; - use rustpython_ast::Stmt; - use rustpython_parser::{Parse, ParseError}; - - #[test] - fn extract_elif_else_range() -> Result<(), ParseError> { - let contents = "if a: - ... -elif b: - ... -"; - let stmt = Stmt::parse(contents, "")?; - let stmt = Stmt::as_if_stmt(&stmt).unwrap(); - let range = elif_else_range(&stmt.elif_else_clauses[0], contents).unwrap(); - assert_eq!(range.start(), TextSize::from(14)); - assert_eq!(range.end(), TextSize::from(18)); - - let contents = "if a: - ... -else: - ... -"; - let stmt = Stmt::parse(contents, "")?; - let stmt = Stmt::as_if_stmt(&stmt).unwrap(); - let range = elif_else_range(&stmt.elif_else_clauses[0], contents).unwrap(); - assert_eq!(range.start(), TextSize::from(14)); - assert_eq!(range.end(), TextSize::from(18)); - - Ok(()) - } -} +mod test {} diff --git a/crates/ruff_python_ast/src/traversal.rs b/crates/ruff_python_ast/src/traversal.rs index fe2898e5a6..95f88d13c9 100644 --- a/crates/ruff_python_ast/src/traversal.rs +++ b/crates/ruff_python_ast/src/traversal.rs @@ -1,5 +1,5 @@ //! Utilities for manually traversing a Python AST. -use rustpython_ast::{self as ast, ExceptHandler, Stmt, Suite}; +use crate::{self as ast, ExceptHandler, Stmt, Suite}; /// Given a [`Stmt`] and its parent, return the [`Suite`] that contains the [`Stmt`]. pub fn suite<'a>(stmt: &'a Stmt, parent: &'a Stmt) -> Option<&'a Suite> { diff --git a/crates/ruff_python_ast/src/types.rs b/crates/ruff_python_ast/src/types.rs index c7f701ab8d..5243f94b42 100644 --- a/crates/ruff_python_ast/src/types.rs +++ b/crates/ruff_python_ast/src/types.rs @@ -1,6 +1,6 @@ use std::ops::Deref; -use rustpython_ast::{Expr, Stmt}; +use crate::{Expr, Stmt}; #[derive(Clone)] pub enum Node<'a> { diff --git a/crates/ruff_python_ast/src/visitor.rs b/crates/ruff_python_ast/src/visitor.rs index ceedaf1622..362233c7dd 100644 --- a/crates/ruff_python_ast/src/visitor.rs +++ b/crates/ruff_python_ast/src/visitor.rs @@ -2,7 +2,7 @@ pub mod preorder; -use rustpython_ast::{ +use crate::{ self as ast, Alias, Arg, Arguments, BoolOp, CmpOp, Comprehension, Decorator, ElifElseClause, ExceptHandler, Expr, ExprContext, Keyword, MatchCase, Operator, Pattern, Stmt, TypeParam, TypeParamTypeVar, UnaryOp, WithItem, @@ -796,306 +796,3 @@ pub fn walk_cmp_op<'a, V: Visitor<'a> + ?Sized>(visitor: &mut V, cmp_op: &'a Cmp #[allow(unused_variables)] pub fn walk_alias<'a, V: Visitor<'a> + ?Sized>(visitor: &mut V, alias: &'a Alias) {} - -#[cfg(test)] -mod tests { - use std::fmt::{Debug, Write}; - - use insta::assert_snapshot; - use rustpython_ast as ast; - use rustpython_parser::lexer::lex; - use rustpython_parser::{parse_tokens, Mode}; - - use crate::node::AnyNodeRef; - use crate::visitor::{ - walk_alias, walk_arg, walk_arguments, walk_comprehension, walk_except_handler, walk_expr, - walk_keyword, walk_match_case, walk_pattern, walk_stmt, walk_type_param, walk_with_item, - Alias, Arg, Arguments, BoolOp, CmpOp, Comprehension, ExceptHandler, Expr, Keyword, - MatchCase, Operator, Pattern, Stmt, TypeParam, UnaryOp, Visitor, WithItem, - }; - - #[test] - fn function_arguments() { - let source = r#"def a(b, c,/, d, e = 20, *args, named=5, other=20, **kwargs): pass"#; - - let trace = trace_visitation(source); - - assert_snapshot!(trace); - } - - #[test] - fn function_positional_only_with_default() { - let source = r#"def a(b, c = 34,/, e = 20, *args): pass"#; - - let trace = trace_visitation(source); - - assert_snapshot!(trace); - } - - #[test] - fn compare() { - let source = r#"4 < x < 5"#; - - let trace = trace_visitation(source); - - assert_snapshot!(trace); - } - - #[test] - fn list_comprehension() { - let source = "[x for x in numbers]"; - - let trace = trace_visitation(source); - - assert_snapshot!(trace); - } - - #[test] - fn dict_comprehension() { - let source = "{x: x**2 for x in numbers}"; - - let trace = trace_visitation(source); - - assert_snapshot!(trace); - } - - #[test] - fn set_comprehension() { - let source = "{x for x in numbers}"; - - let trace = trace_visitation(source); - - assert_snapshot!(trace); - } - - #[test] - fn match_class_pattern() { - let source = r#" -match x: - case Point2D(0, 0): - ... - case Point3D(x=0, y=0, z=0): - ... -"#; - - let trace = trace_visitation(source); - - assert_snapshot!(trace); - } - - #[test] - fn decorators() { - let source = r#" -@decorator -def a(): - pass - -@test -class A: - pass -"#; - - let trace = trace_visitation(source); - - assert_snapshot!(trace); - } - - #[test] - fn type_aliases() { - let source = r#"type X[T: str, U, *Ts, **P] = list[T]"#; - - let trace = trace_visitation(source); - - assert_snapshot!(trace); - } - - #[test] - fn class_type_parameters() { - let source = r#"class X[T: str, U, *Ts, **P]: ..."#; - - let trace = trace_visitation(source); - - assert_snapshot!(trace); - } - - #[test] - fn function_type_parameters() { - let source = r#"def X[T: str, U, *Ts, **P](): ..."#; - - let trace = trace_visitation(source); - - assert_snapshot!(trace); - } - - fn trace_visitation(source: &str) -> String { - let tokens = lex(source, Mode::Module); - let parsed = parse_tokens(tokens, Mode::Module, "test.py").unwrap(); - - let mut visitor = RecordVisitor::default(); - walk_module(&mut visitor, &parsed); - - visitor.output - } - - fn walk_module<'a, V>(visitor: &mut V, module: &'a ast::Mod) - where - V: Visitor<'a> + ?Sized, - { - match module { - ast::Mod::Module(ast::ModModule { - body, - range: _, - type_ignores: _, - }) => { - visitor.visit_body(body); - } - ast::Mod::Interactive(ast::ModInteractive { body, range: _ }) => { - visitor.visit_body(body); - } - ast::Mod::Expression(ast::ModExpression { body, range: _ }) => visitor.visit_expr(body), - ast::Mod::FunctionType(ast::ModFunctionType { - range: _, - argtypes, - returns, - }) => { - for arg_type in argtypes { - visitor.visit_expr(arg_type); - } - - visitor.visit_expr(returns); - } - } - } - - /// Emits a `tree` with a node for every visited AST node (labelled by the AST node's kind) - /// and leafs for attributes. - #[derive(Default)] - struct RecordVisitor { - depth: usize, - output: String, - } - - impl RecordVisitor { - fn enter_node<'a, T>(&mut self, node: T) - where - T: Into>, - { - self.emit(&node.into().kind()); - self.depth += 1; - } - - fn exit_node(&mut self) { - self.depth -= 1; - } - - fn emit(&mut self, text: &dyn Debug) { - for _ in 0..self.depth { - self.output.push_str(" "); - } - - writeln!(self.output, "- {text:?}").unwrap(); - } - } - - impl Visitor<'_> for RecordVisitor { - fn visit_stmt(&mut self, stmt: &Stmt) { - self.enter_node(stmt); - walk_stmt(self, stmt); - self.exit_node(); - } - - fn visit_annotation(&mut self, expr: &Expr) { - self.enter_node(expr); - walk_expr(self, expr); - self.exit_node(); - } - - fn visit_expr(&mut self, expr: &Expr) { - self.enter_node(expr); - walk_expr(self, expr); - self.exit_node(); - } - - fn visit_bool_op(&mut self, bool_op: &BoolOp) { - self.emit(&bool_op); - } - - fn visit_operator(&mut self, operator: &Operator) { - self.emit(&operator); - } - - fn visit_unary_op(&mut self, unary_op: &UnaryOp) { - self.emit(&unary_op); - } - - fn visit_cmp_op(&mut self, cmp_op: &CmpOp) { - self.emit(&cmp_op); - } - - fn visit_comprehension(&mut self, comprehension: &Comprehension) { - self.enter_node(comprehension); - walk_comprehension(self, comprehension); - self.exit_node(); - } - - fn visit_except_handler(&mut self, except_handler: &ExceptHandler) { - self.enter_node(except_handler); - walk_except_handler(self, except_handler); - self.exit_node(); - } - - fn visit_format_spec(&mut self, format_spec: &Expr) { - self.enter_node(format_spec); - walk_expr(self, format_spec); - self.exit_node(); - } - - fn visit_arguments(&mut self, arguments: &Arguments) { - self.enter_node(arguments); - walk_arguments(self, arguments); - self.exit_node(); - } - - fn visit_arg(&mut self, arg: &Arg) { - self.enter_node(arg); - walk_arg(self, arg); - self.exit_node(); - } - - fn visit_keyword(&mut self, keyword: &Keyword) { - self.enter_node(keyword); - walk_keyword(self, keyword); - self.exit_node(); - } - - fn visit_alias(&mut self, alias: &Alias) { - self.enter_node(alias); - walk_alias(self, alias); - self.exit_node(); - } - - fn visit_with_item(&mut self, with_item: &WithItem) { - self.enter_node(with_item); - walk_with_item(self, with_item); - self.exit_node(); - } - - fn visit_match_case(&mut self, match_case: &MatchCase) { - self.enter_node(match_case); - walk_match_case(self, match_case); - self.exit_node(); - } - - fn visit_pattern(&mut self, pattern: &Pattern) { - self.enter_node(pattern); - walk_pattern(self, pattern); - self.exit_node(); - } - - fn visit_type_param(&mut self, type_param: &TypeParam) { - self.enter_node(type_param); - walk_type_param(self, type_param); - self.exit_node(); - } - } -} diff --git a/crates/ruff_python_ast/src/visitor/preorder.rs b/crates/ruff_python_ast/src/visitor/preorder.rs index 4b022b5275..64f804d9df 100644 --- a/crates/ruff_python_ast/src/visitor/preorder.rs +++ b/crates/ruff_python_ast/src/visitor/preorder.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{ +use crate::{ self as ast, Alias, Arg, ArgWithDefault, Arguments, BoolOp, CmpOp, Comprehension, Constant, Decorator, ElifElseClause, ExceptHandler, Expr, Keyword, MatchCase, Mod, Operator, Pattern, Stmt, TypeIgnore, TypeParam, TypeParamTypeVar, UnaryOp, WithItem, @@ -981,292 +981,3 @@ where V: PreorderVisitor<'a> + ?Sized, { } - -#[cfg(test)] -mod tests { - use std::fmt::{Debug, Write}; - - use insta::assert_snapshot; - use rustpython_parser::lexer::lex; - use rustpython_parser::{parse_tokens, Mode}; - - use crate::node::AnyNodeRef; - use crate::visitor::preorder::{ - walk_alias, walk_arg, walk_arguments, walk_comprehension, walk_except_handler, walk_expr, - walk_keyword, walk_match_case, walk_module, walk_pattern, walk_stmt, walk_type_ignore, - walk_type_param, walk_with_item, Alias, Arg, Arguments, BoolOp, CmpOp, Comprehension, - Constant, ExceptHandler, Expr, Keyword, MatchCase, Mod, Operator, Pattern, PreorderVisitor, - Stmt, TypeIgnore, TypeParam, UnaryOp, WithItem, - }; - - #[test] - fn function_arguments() { - let source = r#"def a(b, c,/, d, e = 20, *args, named=5, other=20, **kwargs): pass"#; - - let trace = trace_preorder_visitation(source); - - assert_snapshot!(trace); - } - - #[test] - fn function_positional_only_with_default() { - let source = r#"def a(b, c = 34,/, e = 20, *args): pass"#; - - let trace = trace_preorder_visitation(source); - - assert_snapshot!(trace); - } - - #[test] - fn compare() { - let source = r#"4 < x < 5"#; - - let trace = trace_preorder_visitation(source); - - assert_snapshot!(trace); - } - - #[test] - fn list_comprehension() { - let source = "[x for x in numbers]"; - - let trace = trace_preorder_visitation(source); - - assert_snapshot!(trace); - } - - #[test] - fn dict_comprehension() { - let source = "{x: x**2 for x in numbers}"; - - let trace = trace_preorder_visitation(source); - - assert_snapshot!(trace); - } - - #[test] - fn set_comprehension() { - let source = "{x for x in numbers}"; - - let trace = trace_preorder_visitation(source); - - assert_snapshot!(trace); - } - - #[test] - fn match_class_pattern() { - let source = r#" -match x: - case Point2D(0, 0): - ... - case Point3D(x=0, y=0, z=0): - ... -"#; - - let trace = trace_preorder_visitation(source); - - assert_snapshot!(trace); - } - - #[test] - fn decorators() { - let source = r#" -@decorator -def a(): - pass - -@test -class A: - pass -"#; - - let trace = trace_preorder_visitation(source); - - assert_snapshot!(trace); - } - - #[test] - fn type_aliases() { - let source = r#"type X[T: str, U, *Ts, **P] = list[T]"#; - - let trace = trace_preorder_visitation(source); - - assert_snapshot!(trace); - } - - #[test] - fn class_type_parameters() { - let source = r#"class X[T: str, U, *Ts, **P]: ..."#; - - let trace = trace_preorder_visitation(source); - - assert_snapshot!(trace); - } - - #[test] - fn function_type_parameters() { - let source = r#"def X[T: str, U, *Ts, **P](): ..."#; - - let trace = trace_preorder_visitation(source); - - assert_snapshot!(trace); - } - - fn trace_preorder_visitation(source: &str) -> String { - let tokens = lex(source, Mode::Module); - let parsed = parse_tokens(tokens, Mode::Module, "test.py").unwrap(); - - let mut visitor = RecordVisitor::default(); - visitor.visit_mod(&parsed); - - visitor.output - } - - /// Emits a `tree` with a node for every visited AST node (labelled by the AST node's kind) - /// and leafs for attributes. - #[derive(Default)] - struct RecordVisitor { - depth: usize, - output: String, - } - - impl RecordVisitor { - fn enter_node<'a, T>(&mut self, node: T) - where - T: Into>, - { - self.emit(&node.into().kind()); - self.depth += 1; - } - - fn exit_node(&mut self) { - self.depth -= 1; - } - - fn emit(&mut self, text: &dyn Debug) { - for _ in 0..self.depth { - self.output.push_str(" "); - } - - writeln!(self.output, "- {text:?}").unwrap(); - } - } - - impl PreorderVisitor<'_> for RecordVisitor { - fn visit_mod(&mut self, module: &Mod) { - self.enter_node(module); - walk_module(self, module); - self.exit_node(); - } - - fn visit_stmt(&mut self, stmt: &Stmt) { - self.enter_node(stmt); - walk_stmt(self, stmt); - self.exit_node(); - } - - fn visit_annotation(&mut self, expr: &Expr) { - self.enter_node(expr); - walk_expr(self, expr); - self.exit_node(); - } - - fn visit_expr(&mut self, expr: &Expr) { - self.enter_node(expr); - walk_expr(self, expr); - self.exit_node(); - } - - fn visit_constant(&mut self, constant: &Constant) { - self.emit(&constant); - } - - fn visit_bool_op(&mut self, bool_op: &BoolOp) { - self.emit(&bool_op); - } - - fn visit_operator(&mut self, operator: &Operator) { - self.emit(&operator); - } - - fn visit_unary_op(&mut self, unary_op: &UnaryOp) { - self.emit(&unary_op); - } - - fn visit_cmp_op(&mut self, cmp_op: &CmpOp) { - self.emit(&cmp_op); - } - - fn visit_comprehension(&mut self, comprehension: &Comprehension) { - self.enter_node(comprehension); - walk_comprehension(self, comprehension); - self.exit_node(); - } - - fn visit_except_handler(&mut self, except_handler: &ExceptHandler) { - self.enter_node(except_handler); - walk_except_handler(self, except_handler); - self.exit_node(); - } - - fn visit_format_spec(&mut self, format_spec: &Expr) { - self.enter_node(format_spec); - walk_expr(self, format_spec); - self.exit_node(); - } - - fn visit_arguments(&mut self, arguments: &Arguments) { - self.enter_node(arguments); - walk_arguments(self, arguments); - self.exit_node(); - } - - fn visit_arg(&mut self, arg: &Arg) { - self.enter_node(arg); - walk_arg(self, arg); - self.exit_node(); - } - - fn visit_keyword(&mut self, keyword: &Keyword) { - self.enter_node(keyword); - walk_keyword(self, keyword); - self.exit_node(); - } - - fn visit_alias(&mut self, alias: &Alias) { - self.enter_node(alias); - walk_alias(self, alias); - self.exit_node(); - } - - fn visit_with_item(&mut self, with_item: &WithItem) { - self.enter_node(with_item); - walk_with_item(self, with_item); - self.exit_node(); - } - - fn visit_match_case(&mut self, match_case: &MatchCase) { - self.enter_node(match_case); - walk_match_case(self, match_case); - self.exit_node(); - } - - fn visit_pattern(&mut self, pattern: &Pattern) { - self.enter_node(pattern); - walk_pattern(self, pattern); - self.exit_node(); - } - - fn visit_type_ignore(&mut self, type_ignore: &TypeIgnore) { - self.enter_node(type_ignore); - walk_type_ignore(self, type_ignore); - self.exit_node(); - } - - fn visit_type_param(&mut self, type_param: &TypeParam) { - self.enter_node(type_param); - walk_type_param(self, type_param); - self.exit_node(); - } - } -} diff --git a/crates/ruff_python_ast/src/whitespace.rs b/crates/ruff_python_ast/src/whitespace.rs index 146462b175..aceec2ec99 100644 --- a/crates/ruff_python_ast/src/whitespace.rs +++ b/crates/ruff_python_ast/src/whitespace.rs @@ -1,5 +1,5 @@ +use crate::{Ranged, Stmt}; use ruff_text_size::{TextRange, TextSize}; -use rustpython_ast::{Ranged, Stmt}; use ruff_python_trivia::{ has_trailing_content, indentation_at_offset, is_python_whitespace, PythonWhitespace, diff --git a/crates/ruff_python_ast/tests/identifier.rs b/crates/ruff_python_ast/tests/identifier.rs new file mode 100644 index 0000000000..cf24c84d00 --- /dev/null +++ b/crates/ruff_python_ast/tests/identifier.rs @@ -0,0 +1,24 @@ +use ruff_python_ast::Stmt; +use ruff_python_parser::{Parse, ParseError}; +use ruff_text_size::{TextRange, TextSize}; + +use ruff_python_ast::identifier; + +#[test] +fn extract_else_range() -> Result<(), ParseError> { + let contents = r#" +for x in y: + pass +else: + pass +"# + .trim(); + let stmt = Stmt::parse(contents, "")?; + let range = identifier::else_(&stmt, contents).unwrap(); + assert_eq!(&contents[range], "else"); + assert_eq!( + range, + TextRange::new(TextSize::from(21), TextSize::from(25)) + ); + Ok(()) +} diff --git a/crates/ruff_python_ast/tests/preorder.rs b/crates/ruff_python_ast/tests/preorder.rs new file mode 100644 index 0000000000..990cdefc3a --- /dev/null +++ b/crates/ruff_python_ast/tests/preorder.rs @@ -0,0 +1,287 @@ +use std::fmt::{Debug, Write}; + +use insta::assert_snapshot; + +use ruff_python_ast::node::AnyNodeRef; +use ruff_python_ast::visitor::preorder::{ + walk_alias, walk_arg, walk_arguments, walk_comprehension, walk_except_handler, walk_expr, + walk_keyword, walk_match_case, walk_module, walk_pattern, walk_stmt, walk_type_ignore, + walk_type_param, walk_with_item, PreorderVisitor, +}; +use ruff_python_ast::{ + Alias, Arg, Arguments, BoolOp, CmpOp, Comprehension, Constant, ExceptHandler, Expr, Keyword, + MatchCase, Mod, Operator, Pattern, Stmt, TypeIgnore, TypeParam, UnaryOp, WithItem, +}; +use ruff_python_parser::lexer::lex; +use ruff_python_parser::{parse_tokens, Mode}; + +#[test] +fn function_arguments() { + let source = r#"def a(b, c,/, d, e = 20, *args, named=5, other=20, **kwargs): pass"#; + + let trace = trace_preorder_visitation(source); + + assert_snapshot!(trace); +} + +#[test] +fn function_positional_only_with_default() { + let source = r#"def a(b, c = 34,/, e = 20, *args): pass"#; + + let trace = trace_preorder_visitation(source); + + assert_snapshot!(trace); +} + +#[test] +fn compare() { + let source = r#"4 < x < 5"#; + + let trace = trace_preorder_visitation(source); + + assert_snapshot!(trace); +} + +#[test] +fn list_comprehension() { + let source = "[x for x in numbers]"; + + let trace = trace_preorder_visitation(source); + + assert_snapshot!(trace); +} + +#[test] +fn dict_comprehension() { + let source = "{x: x**2 for x in numbers}"; + + let trace = trace_preorder_visitation(source); + + assert_snapshot!(trace); +} + +#[test] +fn set_comprehension() { + let source = "{x for x in numbers}"; + + let trace = trace_preorder_visitation(source); + + assert_snapshot!(trace); +} + +#[test] +fn match_class_pattern() { + let source = r#" +match x: + case Point2D(0, 0): + ... + case Point3D(x=0, y=0, z=0): + ... +"#; + + let trace = trace_preorder_visitation(source); + + assert_snapshot!(trace); +} + +#[test] +fn decorators() { + let source = r#" +@decorator +def a(): + pass + +@test +class A: + pass +"#; + + let trace = trace_preorder_visitation(source); + + assert_snapshot!(trace); +} + +#[test] +fn type_aliases() { + let source = r#"type X[T: str, U, *Ts, **P] = list[T]"#; + + let trace = trace_preorder_visitation(source); + + assert_snapshot!(trace); +} + +#[test] +fn class_type_parameters() { + let source = r#"class X[T: str, U, *Ts, **P]: ..."#; + + let trace = trace_preorder_visitation(source); + + assert_snapshot!(trace); +} + +#[test] +fn function_type_parameters() { + let source = r#"def X[T: str, U, *Ts, **P](): ..."#; + + let trace = trace_preorder_visitation(source); + + assert_snapshot!(trace); +} + +fn trace_preorder_visitation(source: &str) -> String { + let tokens = lex(source, Mode::Module); + let parsed = parse_tokens(tokens, Mode::Module, "test.py").unwrap(); + + let mut visitor = RecordVisitor::default(); + visitor.visit_mod(&parsed); + + visitor.output +} + +/// Emits a `tree` with a node for every visited AST node (labelled by the AST node's kind) +/// and leafs for attributes. +#[derive(Default)] +struct RecordVisitor { + depth: usize, + output: String, +} + +impl RecordVisitor { + fn enter_node<'a, T>(&mut self, node: T) + where + T: Into>, + { + self.emit(&node.into().kind()); + self.depth += 1; + } + + fn exit_node(&mut self) { + self.depth -= 1; + } + + fn emit(&mut self, text: &dyn Debug) { + for _ in 0..self.depth { + self.output.push_str(" "); + } + + writeln!(self.output, "- {text:?}").unwrap(); + } +} + +impl PreorderVisitor<'_> for RecordVisitor { + fn visit_mod(&mut self, module: &Mod) { + self.enter_node(module); + walk_module(self, module); + self.exit_node(); + } + + fn visit_stmt(&mut self, stmt: &Stmt) { + self.enter_node(stmt); + walk_stmt(self, stmt); + self.exit_node(); + } + + fn visit_annotation(&mut self, expr: &Expr) { + self.enter_node(expr); + walk_expr(self, expr); + self.exit_node(); + } + + fn visit_expr(&mut self, expr: &Expr) { + self.enter_node(expr); + walk_expr(self, expr); + self.exit_node(); + } + + fn visit_constant(&mut self, constant: &Constant) { + self.emit(&constant); + } + + fn visit_bool_op(&mut self, bool_op: &BoolOp) { + self.emit(&bool_op); + } + + fn visit_operator(&mut self, operator: &Operator) { + self.emit(&operator); + } + + fn visit_unary_op(&mut self, unary_op: &UnaryOp) { + self.emit(&unary_op); + } + + fn visit_cmp_op(&mut self, cmp_op: &CmpOp) { + self.emit(&cmp_op); + } + + fn visit_comprehension(&mut self, comprehension: &Comprehension) { + self.enter_node(comprehension); + walk_comprehension(self, comprehension); + self.exit_node(); + } + + fn visit_except_handler(&mut self, except_handler: &ExceptHandler) { + self.enter_node(except_handler); + walk_except_handler(self, except_handler); + self.exit_node(); + } + + fn visit_format_spec(&mut self, format_spec: &Expr) { + self.enter_node(format_spec); + walk_expr(self, format_spec); + self.exit_node(); + } + + fn visit_arguments(&mut self, arguments: &Arguments) { + self.enter_node(arguments); + walk_arguments(self, arguments); + self.exit_node(); + } + + fn visit_arg(&mut self, arg: &Arg) { + self.enter_node(arg); + walk_arg(self, arg); + self.exit_node(); + } + + fn visit_keyword(&mut self, keyword: &Keyword) { + self.enter_node(keyword); + walk_keyword(self, keyword); + self.exit_node(); + } + + fn visit_alias(&mut self, alias: &Alias) { + self.enter_node(alias); + walk_alias(self, alias); + self.exit_node(); + } + + fn visit_with_item(&mut self, with_item: &WithItem) { + self.enter_node(with_item); + walk_with_item(self, with_item); + self.exit_node(); + } + + fn visit_match_case(&mut self, match_case: &MatchCase) { + self.enter_node(match_case); + walk_match_case(self, match_case); + self.exit_node(); + } + + fn visit_pattern(&mut self, pattern: &Pattern) { + self.enter_node(pattern); + walk_pattern(self, pattern); + self.exit_node(); + } + + fn visit_type_ignore(&mut self, type_ignore: &TypeIgnore) { + self.enter_node(type_ignore); + walk_type_ignore(self, type_ignore); + self.exit_node(); + } + + fn visit_type_param(&mut self, type_param: &TypeParam) { + self.enter_node(type_param); + walk_type_param(self, type_param); + self.exit_node(); + } +} diff --git a/crates/ruff_python_ast/src/visitor/snapshots/ruff_python_ast__visitor__preorder__tests__class_type_parameters.snap b/crates/ruff_python_ast/tests/snapshots/preorder__class_type_parameters.snap similarity index 80% rename from crates/ruff_python_ast/src/visitor/snapshots/ruff_python_ast__visitor__preorder__tests__class_type_parameters.snap rename to crates/ruff_python_ast/tests/snapshots/preorder__class_type_parameters.snap index 01cc10719b..e532ffd8b8 100644 --- a/crates/ruff_python_ast/src/visitor/snapshots/ruff_python_ast__visitor__preorder__tests__class_type_parameters.snap +++ b/crates/ruff_python_ast/tests/snapshots/preorder__class_type_parameters.snap @@ -1,5 +1,5 @@ --- -source: crates/ruff_python_ast/src/visitor/preorder.rs +source: crates/ruff_python_ast/tests/preorder.rs expression: trace --- - ModModule diff --git a/crates/ruff_python_ast/src/visitor/snapshots/ruff_python_ast__visitor__preorder__tests__compare.snap b/crates/ruff_python_ast/tests/snapshots/preorder__compare.snap similarity index 77% rename from crates/ruff_python_ast/src/visitor/snapshots/ruff_python_ast__visitor__preorder__tests__compare.snap rename to crates/ruff_python_ast/tests/snapshots/preorder__compare.snap index 5dcd49066c..42d8bb281d 100644 --- a/crates/ruff_python_ast/src/visitor/snapshots/ruff_python_ast__visitor__preorder__tests__compare.snap +++ b/crates/ruff_python_ast/tests/snapshots/preorder__compare.snap @@ -1,5 +1,5 @@ --- -source: crates/ruff_python_ast/src/visitor/preorder.rs +source: crates/ruff_python_ast/tests/preorder.rs expression: trace --- - ModModule diff --git a/crates/ruff_python_ast/src/visitor/snapshots/ruff_python_ast__visitor__preorder__tests__decorators.snap b/crates/ruff_python_ast/tests/snapshots/preorder__decorators.snap similarity index 73% rename from crates/ruff_python_ast/src/visitor/snapshots/ruff_python_ast__visitor__preorder__tests__decorators.snap rename to crates/ruff_python_ast/tests/snapshots/preorder__decorators.snap index 10f29da988..fbecff6cd2 100644 --- a/crates/ruff_python_ast/src/visitor/snapshots/ruff_python_ast__visitor__preorder__tests__decorators.snap +++ b/crates/ruff_python_ast/tests/snapshots/preorder__decorators.snap @@ -1,5 +1,5 @@ --- -source: crates/ruff_python_ast/src/visitor/preorder.rs +source: crates/ruff_python_ast/tests/preorder.rs expression: trace --- - ModModule diff --git a/crates/ruff_python_ast/src/visitor/snapshots/ruff_python_ast__visitor__preorder__tests__dict_comprehension.snap b/crates/ruff_python_ast/tests/snapshots/preorder__dict_comprehension.snap similarity index 81% rename from crates/ruff_python_ast/src/visitor/snapshots/ruff_python_ast__visitor__preorder__tests__dict_comprehension.snap rename to crates/ruff_python_ast/tests/snapshots/preorder__dict_comprehension.snap index 7d65127545..54f133dc32 100644 --- a/crates/ruff_python_ast/src/visitor/snapshots/ruff_python_ast__visitor__preorder__tests__dict_comprehension.snap +++ b/crates/ruff_python_ast/tests/snapshots/preorder__dict_comprehension.snap @@ -1,5 +1,5 @@ --- -source: crates/ruff_python_ast/src/visitor/preorder.rs +source: crates/ruff_python_ast/tests/preorder.rs expression: trace --- - ModModule diff --git a/crates/ruff_python_ast/src/visitor/snapshots/ruff_python_ast__visitor__preorder__tests__function_arguments.snap b/crates/ruff_python_ast/tests/snapshots/preorder__function_arguments.snap similarity index 84% rename from crates/ruff_python_ast/src/visitor/snapshots/ruff_python_ast__visitor__preorder__tests__function_arguments.snap rename to crates/ruff_python_ast/tests/snapshots/preorder__function_arguments.snap index 2a5db80b60..c41f0885a7 100644 --- a/crates/ruff_python_ast/src/visitor/snapshots/ruff_python_ast__visitor__preorder__tests__function_arguments.snap +++ b/crates/ruff_python_ast/tests/snapshots/preorder__function_arguments.snap @@ -1,5 +1,5 @@ --- -source: crates/ruff_python_ast/src/visitor/preorder.rs +source: crates/ruff_python_ast/tests/preorder.rs expression: trace --- - ModModule diff --git a/crates/ruff_python_ast/src/visitor/snapshots/ruff_python_ast__visitor__preorder__tests__function_positional_only_with_default.snap b/crates/ruff_python_ast/tests/snapshots/preorder__function_positional_only_with_default.snap similarity index 79% rename from crates/ruff_python_ast/src/visitor/snapshots/ruff_python_ast__visitor__preorder__tests__function_positional_only_with_default.snap rename to crates/ruff_python_ast/tests/snapshots/preorder__function_positional_only_with_default.snap index c312544b51..c22624ef9d 100644 --- a/crates/ruff_python_ast/src/visitor/snapshots/ruff_python_ast__visitor__preorder__tests__function_positional_only_with_default.snap +++ b/crates/ruff_python_ast/tests/snapshots/preorder__function_positional_only_with_default.snap @@ -1,5 +1,5 @@ --- -source: crates/ruff_python_ast/src/visitor/preorder.rs +source: crates/ruff_python_ast/tests/preorder.rs expression: trace --- - ModModule diff --git a/crates/ruff_python_ast/src/visitor/snapshots/ruff_python_ast__visitor__preorder__tests__function_type_parameters.snap b/crates/ruff_python_ast/tests/snapshots/preorder__function_type_parameters.snap similarity index 81% rename from crates/ruff_python_ast/src/visitor/snapshots/ruff_python_ast__visitor__preorder__tests__function_type_parameters.snap rename to crates/ruff_python_ast/tests/snapshots/preorder__function_type_parameters.snap index 9c9f0cbd28..06ef9c2624 100644 --- a/crates/ruff_python_ast/src/visitor/snapshots/ruff_python_ast__visitor__preorder__tests__function_type_parameters.snap +++ b/crates/ruff_python_ast/tests/snapshots/preorder__function_type_parameters.snap @@ -1,5 +1,5 @@ --- -source: crates/ruff_python_ast/src/visitor/preorder.rs +source: crates/ruff_python_ast/tests/preorder.rs expression: trace --- - ModModule diff --git a/crates/ruff_python_ast/src/visitor/snapshots/ruff_python_ast__visitor__preorder__tests__list_comprehension.snap b/crates/ruff_python_ast/tests/snapshots/preorder__list_comprehension.snap similarity index 72% rename from crates/ruff_python_ast/src/visitor/snapshots/ruff_python_ast__visitor__preorder__tests__list_comprehension.snap rename to crates/ruff_python_ast/tests/snapshots/preorder__list_comprehension.snap index 75b37c975f..dc15fb0197 100644 --- a/crates/ruff_python_ast/src/visitor/snapshots/ruff_python_ast__visitor__preorder__tests__list_comprehension.snap +++ b/crates/ruff_python_ast/tests/snapshots/preorder__list_comprehension.snap @@ -1,5 +1,5 @@ --- -source: crates/ruff_python_ast/src/visitor/preorder.rs +source: crates/ruff_python_ast/tests/preorder.rs expression: trace --- - ModModule diff --git a/crates/ruff_python_ast/src/visitor/snapshots/ruff_python_ast__visitor__preorder__tests__match_class_pattern.snap b/crates/ruff_python_ast/tests/snapshots/preorder__match_class_pattern.snap similarity index 92% rename from crates/ruff_python_ast/src/visitor/snapshots/ruff_python_ast__visitor__preorder__tests__match_class_pattern.snap rename to crates/ruff_python_ast/tests/snapshots/preorder__match_class_pattern.snap index 0d009a6dce..f1d75a5155 100644 --- a/crates/ruff_python_ast/src/visitor/snapshots/ruff_python_ast__visitor__preorder__tests__match_class_pattern.snap +++ b/crates/ruff_python_ast/tests/snapshots/preorder__match_class_pattern.snap @@ -1,5 +1,5 @@ --- -source: crates/ruff_python_ast/src/visitor/preorder.rs +source: crates/ruff_python_ast/tests/preorder.rs expression: trace --- - ModModule diff --git a/crates/ruff_python_ast/src/visitor/snapshots/ruff_python_ast__visitor__preorder__tests__set_comprehension.snap b/crates/ruff_python_ast/tests/snapshots/preorder__set_comprehension.snap similarity index 72% rename from crates/ruff_python_ast/src/visitor/snapshots/ruff_python_ast__visitor__preorder__tests__set_comprehension.snap rename to crates/ruff_python_ast/tests/snapshots/preorder__set_comprehension.snap index b6b68d0d93..e9abdf1245 100644 --- a/crates/ruff_python_ast/src/visitor/snapshots/ruff_python_ast__visitor__preorder__tests__set_comprehension.snap +++ b/crates/ruff_python_ast/tests/snapshots/preorder__set_comprehension.snap @@ -1,5 +1,5 @@ --- -source: crates/ruff_python_ast/src/visitor/preorder.rs +source: crates/ruff_python_ast/tests/preorder.rs expression: trace --- - ModModule diff --git a/crates/ruff_python_ast/src/visitor/snapshots/ruff_python_ast__visitor__preorder__tests__type_aliases.snap b/crates/ruff_python_ast/tests/snapshots/preorder__type_aliases.snap similarity index 81% rename from crates/ruff_python_ast/src/visitor/snapshots/ruff_python_ast__visitor__preorder__tests__type_aliases.snap rename to crates/ruff_python_ast/tests/snapshots/preorder__type_aliases.snap index 007ee12733..56c170d9b8 100644 --- a/crates/ruff_python_ast/src/visitor/snapshots/ruff_python_ast__visitor__preorder__tests__type_aliases.snap +++ b/crates/ruff_python_ast/tests/snapshots/preorder__type_aliases.snap @@ -1,5 +1,5 @@ --- -source: crates/ruff_python_ast/src/visitor/preorder.rs +source: crates/ruff_python_ast/tests/preorder.rs expression: trace --- - ModModule diff --git a/crates/ruff_python_ast/src/snapshots/ruff_python_ast__visitor__tests__class_type_parameters.snap b/crates/ruff_python_ast/tests/snapshots/visitor__class_type_parameters.snap similarity index 78% rename from crates/ruff_python_ast/src/snapshots/ruff_python_ast__visitor__tests__class_type_parameters.snap rename to crates/ruff_python_ast/tests/snapshots/visitor__class_type_parameters.snap index 929aa88b29..19975fd797 100644 --- a/crates/ruff_python_ast/src/snapshots/ruff_python_ast__visitor__tests__class_type_parameters.snap +++ b/crates/ruff_python_ast/tests/snapshots/visitor__class_type_parameters.snap @@ -1,5 +1,5 @@ --- -source: crates/ruff_python_ast/src/visitor.rs +source: crates/ruff_python_ast/tests/visitor.rs expression: trace --- - StmtClassDef diff --git a/crates/ruff_python_ast/src/snapshots/ruff_python_ast__visitor__tests__compare.snap b/crates/ruff_python_ast/tests/snapshots/visitor__compare.snap similarity index 72% rename from crates/ruff_python_ast/src/snapshots/ruff_python_ast__visitor__tests__compare.snap rename to crates/ruff_python_ast/tests/snapshots/visitor__compare.snap index ce293eef68..299623e349 100644 --- a/crates/ruff_python_ast/src/snapshots/ruff_python_ast__visitor__tests__compare.snap +++ b/crates/ruff_python_ast/tests/snapshots/visitor__compare.snap @@ -1,5 +1,5 @@ --- -source: crates/ruff_python_ast/src/visitor.rs +source: crates/ruff_python_ast/tests/visitor.rs expression: trace --- - StmtExpr diff --git a/crates/ruff_python_ast/src/snapshots/ruff_python_ast__visitor__tests__decorators.snap b/crates/ruff_python_ast/tests/snapshots/visitor__decorators.snap similarity index 72% rename from crates/ruff_python_ast/src/snapshots/ruff_python_ast__visitor__tests__decorators.snap rename to crates/ruff_python_ast/tests/snapshots/visitor__decorators.snap index a0f99c2447..76fe2a083e 100644 --- a/crates/ruff_python_ast/src/snapshots/ruff_python_ast__visitor__tests__decorators.snap +++ b/crates/ruff_python_ast/tests/snapshots/visitor__decorators.snap @@ -1,5 +1,5 @@ --- -source: crates/ruff_python_ast/src/visitor.rs +source: crates/ruff_python_ast/tests/visitor.rs expression: trace --- - StmtFunctionDef diff --git a/crates/ruff_python_ast/src/snapshots/ruff_python_ast__visitor__tests__dict_comprehension.snap b/crates/ruff_python_ast/tests/snapshots/visitor__dict_comprehension.snap similarity index 79% rename from crates/ruff_python_ast/src/snapshots/ruff_python_ast__visitor__tests__dict_comprehension.snap rename to crates/ruff_python_ast/tests/snapshots/visitor__dict_comprehension.snap index baf55d5a9a..64623b9886 100644 --- a/crates/ruff_python_ast/src/snapshots/ruff_python_ast__visitor__tests__dict_comprehension.snap +++ b/crates/ruff_python_ast/tests/snapshots/visitor__dict_comprehension.snap @@ -1,5 +1,5 @@ --- -source: crates/ruff_python_ast/src/visitor.rs +source: crates/ruff_python_ast/tests/visitor.rs expression: trace --- - StmtExpr diff --git a/crates/ruff_python_ast/src/snapshots/ruff_python_ast__visitor__tests__function_arguments.snap b/crates/ruff_python_ast/tests/snapshots/visitor__function_arguments.snap similarity index 81% rename from crates/ruff_python_ast/src/snapshots/ruff_python_ast__visitor__tests__function_arguments.snap rename to crates/ruff_python_ast/tests/snapshots/visitor__function_arguments.snap index 88d08c74e4..a7c3015476 100644 --- a/crates/ruff_python_ast/src/snapshots/ruff_python_ast__visitor__tests__function_arguments.snap +++ b/crates/ruff_python_ast/tests/snapshots/visitor__function_arguments.snap @@ -1,5 +1,5 @@ --- -source: crates/ruff_python_ast/src/visitor.rs +source: crates/ruff_python_ast/tests/visitor.rs expression: trace --- - StmtFunctionDef diff --git a/crates/ruff_python_ast/src/snapshots/ruff_python_ast__visitor__tests__function_positional_only_with_default.snap b/crates/ruff_python_ast/tests/snapshots/visitor__function_positional_only_with_default.snap similarity index 75% rename from crates/ruff_python_ast/src/snapshots/ruff_python_ast__visitor__tests__function_positional_only_with_default.snap rename to crates/ruff_python_ast/tests/snapshots/visitor__function_positional_only_with_default.snap index d77750d81a..98a729f362 100644 --- a/crates/ruff_python_ast/src/snapshots/ruff_python_ast__visitor__tests__function_positional_only_with_default.snap +++ b/crates/ruff_python_ast/tests/snapshots/visitor__function_positional_only_with_default.snap @@ -1,5 +1,5 @@ --- -source: crates/ruff_python_ast/src/visitor.rs +source: crates/ruff_python_ast/tests/visitor.rs expression: trace --- - StmtFunctionDef diff --git a/crates/ruff_python_ast/src/snapshots/ruff_python_ast__visitor__tests__function_type_parameters.snap b/crates/ruff_python_ast/tests/snapshots/visitor__function_type_parameters.snap similarity index 80% rename from crates/ruff_python_ast/src/snapshots/ruff_python_ast__visitor__tests__function_type_parameters.snap rename to crates/ruff_python_ast/tests/snapshots/visitor__function_type_parameters.snap index 290000d4d3..d0ef547f65 100644 --- a/crates/ruff_python_ast/src/snapshots/ruff_python_ast__visitor__tests__function_type_parameters.snap +++ b/crates/ruff_python_ast/tests/snapshots/visitor__function_type_parameters.snap @@ -1,5 +1,5 @@ --- -source: crates/ruff_python_ast/src/visitor.rs +source: crates/ruff_python_ast/tests/visitor.rs expression: trace --- - StmtFunctionDef diff --git a/crates/ruff_python_ast/src/snapshots/ruff_python_ast__visitor__tests__list_comprehension.snap b/crates/ruff_python_ast/tests/snapshots/visitor__list_comprehension.snap similarity index 72% rename from crates/ruff_python_ast/src/snapshots/ruff_python_ast__visitor__tests__list_comprehension.snap rename to crates/ruff_python_ast/tests/snapshots/visitor__list_comprehension.snap index 464f2cf03f..05f75bd8df 100644 --- a/crates/ruff_python_ast/src/snapshots/ruff_python_ast__visitor__tests__list_comprehension.snap +++ b/crates/ruff_python_ast/tests/snapshots/visitor__list_comprehension.snap @@ -1,5 +1,5 @@ --- -source: crates/ruff_python_ast/src/visitor.rs +source: crates/ruff_python_ast/tests/visitor.rs expression: trace --- - StmtExpr diff --git a/crates/ruff_python_ast/src/snapshots/ruff_python_ast__visitor__tests__match_class_pattern.snap b/crates/ruff_python_ast/tests/snapshots/visitor__match_class_pattern.snap similarity index 90% rename from crates/ruff_python_ast/src/snapshots/ruff_python_ast__visitor__tests__match_class_pattern.snap rename to crates/ruff_python_ast/tests/snapshots/visitor__match_class_pattern.snap index ce3f84813b..73e5ea1453 100644 --- a/crates/ruff_python_ast/src/snapshots/ruff_python_ast__visitor__tests__match_class_pattern.snap +++ b/crates/ruff_python_ast/tests/snapshots/visitor__match_class_pattern.snap @@ -1,5 +1,5 @@ --- -source: crates/ruff_python_ast/src/visitor.rs +source: crates/ruff_python_ast/tests/visitor.rs expression: trace --- - StmtMatch diff --git a/crates/ruff_python_ast/src/snapshots/ruff_python_ast__visitor__tests__set_comprehension.snap b/crates/ruff_python_ast/tests/snapshots/visitor__set_comprehension.snap similarity index 71% rename from crates/ruff_python_ast/src/snapshots/ruff_python_ast__visitor__tests__set_comprehension.snap rename to crates/ruff_python_ast/tests/snapshots/visitor__set_comprehension.snap index 716eb2f350..337ef4624f 100644 --- a/crates/ruff_python_ast/src/snapshots/ruff_python_ast__visitor__tests__set_comprehension.snap +++ b/crates/ruff_python_ast/tests/snapshots/visitor__set_comprehension.snap @@ -1,5 +1,5 @@ --- -source: crates/ruff_python_ast/src/visitor.rs +source: crates/ruff_python_ast/tests/visitor.rs expression: trace --- - StmtExpr diff --git a/crates/ruff_python_ast/src/snapshots/ruff_python_ast__visitor__tests__type_aliases.snap b/crates/ruff_python_ast/tests/snapshots/visitor__type_aliases.snap similarity index 81% rename from crates/ruff_python_ast/src/snapshots/ruff_python_ast__visitor__tests__type_aliases.snap rename to crates/ruff_python_ast/tests/snapshots/visitor__type_aliases.snap index 6c0675c64c..10b624fbb0 100644 --- a/crates/ruff_python_ast/src/snapshots/ruff_python_ast__visitor__tests__type_aliases.snap +++ b/crates/ruff_python_ast/tests/snapshots/visitor__type_aliases.snap @@ -1,5 +1,5 @@ --- -source: crates/ruff_python_ast/src/visitor.rs +source: crates/ruff_python_ast/tests/visitor.rs expression: trace --- - StmtTypeAlias diff --git a/crates/ruff_python_ast/tests/stmt_if.rs b/crates/ruff_python_ast/tests/stmt_if.rs new file mode 100644 index 0000000000..178ec28dbc --- /dev/null +++ b/crates/ruff_python_ast/tests/stmt_if.rs @@ -0,0 +1,31 @@ +use ruff_python_ast::stmt_if::elif_else_range; +use ruff_python_ast::Stmt; +use ruff_python_parser::{Parse, ParseError}; +use ruff_text_size::TextSize; + +#[test] +fn extract_elif_else_range() -> Result<(), ParseError> { + let contents = "if a: + ... +elif b: + ... +"; + let stmt = Stmt::parse(contents, "")?; + let stmt = Stmt::as_if_stmt(&stmt).unwrap(); + let range = elif_else_range(&stmt.elif_else_clauses[0], contents).unwrap(); + assert_eq!(range.start(), TextSize::from(14)); + assert_eq!(range.end(), TextSize::from(18)); + + let contents = "if a: + ... +else: + ... +"; + let stmt = Stmt::parse(contents, "")?; + let stmt = Stmt::as_if_stmt(&stmt).unwrap(); + let range = elif_else_range(&stmt.elif_else_clauses[0], contents).unwrap(); + assert_eq!(range.start(), TextSize::from(14)); + assert_eq!(range.end(), TextSize::from(18)); + + Ok(()) +} diff --git a/crates/ruff_python_ast/tests/visitor.rs b/crates/ruff_python_ast/tests/visitor.rs new file mode 100644 index 0000000000..85e5c7f13a --- /dev/null +++ b/crates/ruff_python_ast/tests/visitor.rs @@ -0,0 +1,302 @@ +use std::fmt::{Debug, Write}; + +use insta::assert_snapshot; +use ruff_python_ast as ast; +use ruff_python_parser::lexer::lex; +use ruff_python_parser::{parse_tokens, Mode}; + +use ruff_python_ast::node::AnyNodeRef; +use ruff_python_ast::visitor::{ + walk_alias, walk_arg, walk_arguments, walk_comprehension, walk_except_handler, walk_expr, + walk_keyword, walk_match_case, walk_pattern, walk_stmt, walk_type_param, walk_with_item, + Visitor, +}; +use ruff_python_ast::{ + Alias, Arg, Arguments, BoolOp, CmpOp, Comprehension, ExceptHandler, Expr, Keyword, MatchCase, + Operator, Pattern, Stmt, TypeParam, UnaryOp, WithItem, +}; + +#[test] +fn function_arguments() { + let source = r#"def a(b, c,/, d, e = 20, *args, named=5, other=20, **kwargs): pass"#; + + let trace = trace_visitation(source); + + assert_snapshot!(trace); +} + +#[test] +fn function_positional_only_with_default() { + let source = r#"def a(b, c = 34,/, e = 20, *args): pass"#; + + let trace = trace_visitation(source); + + assert_snapshot!(trace); +} + +#[test] +fn compare() { + let source = r#"4 < x < 5"#; + + let trace = trace_visitation(source); + + assert_snapshot!(trace); +} + +#[test] +fn list_comprehension() { + let source = "[x for x in numbers]"; + + let trace = trace_visitation(source); + + assert_snapshot!(trace); +} + +#[test] +fn dict_comprehension() { + let source = "{x: x**2 for x in numbers}"; + + let trace = trace_visitation(source); + + assert_snapshot!(trace); +} + +#[test] +fn set_comprehension() { + let source = "{x for x in numbers}"; + + let trace = trace_visitation(source); + + assert_snapshot!(trace); +} + +#[test] +fn match_class_pattern() { + let source = r#" +match x: + case Point2D(0, 0): + ... + case Point3D(x=0, y=0, z=0): + ... +"#; + + let trace = trace_visitation(source); + + assert_snapshot!(trace); +} + +#[test] +fn decorators() { + let source = r#" +@decorator +def a(): + pass + +@test +class A: + pass +"#; + + let trace = trace_visitation(source); + + assert_snapshot!(trace); +} + +#[test] +fn type_aliases() { + let source = r#"type X[T: str, U, *Ts, **P] = list[T]"#; + + let trace = trace_visitation(source); + + assert_snapshot!(trace); +} + +#[test] +fn class_type_parameters() { + let source = r#"class X[T: str, U, *Ts, **P]: ..."#; + + let trace = trace_visitation(source); + + assert_snapshot!(trace); +} + +#[test] +fn function_type_parameters() { + let source = r#"def X[T: str, U, *Ts, **P](): ..."#; + + let trace = trace_visitation(source); + + assert_snapshot!(trace); +} + +fn trace_visitation(source: &str) -> String { + let tokens = lex(source, Mode::Module); + let parsed = parse_tokens(tokens, Mode::Module, "test.py").unwrap(); + + let mut visitor = RecordVisitor::default(); + walk_module(&mut visitor, &parsed); + + visitor.output +} + +fn walk_module<'a, V>(visitor: &mut V, module: &'a ast::Mod) +where + V: Visitor<'a> + ?Sized, +{ + match module { + ast::Mod::Module(ast::ModModule { + body, + range: _, + type_ignores: _, + }) => { + visitor.visit_body(body); + } + ast::Mod::Interactive(ast::ModInteractive { body, range: _ }) => { + visitor.visit_body(body); + } + ast::Mod::Expression(ast::ModExpression { body, range: _ }) => visitor.visit_expr(body), + ast::Mod::FunctionType(ast::ModFunctionType { + range: _, + argtypes, + returns, + }) => { + for arg_type in argtypes { + visitor.visit_expr(arg_type); + } + + visitor.visit_expr(returns); + } + } +} + +/// Emits a `tree` with a node for every visited AST node (labelled by the AST node's kind) +/// and leafs for attributes. +#[derive(Default)] +struct RecordVisitor { + depth: usize, + output: String, +} + +impl RecordVisitor { + fn enter_node<'a, T>(&mut self, node: T) + where + T: Into>, + { + self.emit(&node.into().kind()); + self.depth += 1; + } + + fn exit_node(&mut self) { + self.depth -= 1; + } + + fn emit(&mut self, text: &dyn Debug) { + for _ in 0..self.depth { + self.output.push_str(" "); + } + + writeln!(self.output, "- {text:?}").unwrap(); + } +} + +impl Visitor<'_> for RecordVisitor { + fn visit_stmt(&mut self, stmt: &Stmt) { + self.enter_node(stmt); + walk_stmt(self, stmt); + self.exit_node(); + } + + fn visit_annotation(&mut self, expr: &Expr) { + self.enter_node(expr); + walk_expr(self, expr); + self.exit_node(); + } + + fn visit_expr(&mut self, expr: &Expr) { + self.enter_node(expr); + walk_expr(self, expr); + self.exit_node(); + } + + fn visit_bool_op(&mut self, bool_op: &BoolOp) { + self.emit(&bool_op); + } + + fn visit_operator(&mut self, operator: &Operator) { + self.emit(&operator); + } + + fn visit_unary_op(&mut self, unary_op: &UnaryOp) { + self.emit(&unary_op); + } + + fn visit_cmp_op(&mut self, cmp_op: &CmpOp) { + self.emit(&cmp_op); + } + + fn visit_comprehension(&mut self, comprehension: &Comprehension) { + self.enter_node(comprehension); + walk_comprehension(self, comprehension); + self.exit_node(); + } + + fn visit_except_handler(&mut self, except_handler: &ExceptHandler) { + self.enter_node(except_handler); + walk_except_handler(self, except_handler); + self.exit_node(); + } + + fn visit_format_spec(&mut self, format_spec: &Expr) { + self.enter_node(format_spec); + walk_expr(self, format_spec); + self.exit_node(); + } + + fn visit_arguments(&mut self, arguments: &Arguments) { + self.enter_node(arguments); + walk_arguments(self, arguments); + self.exit_node(); + } + + fn visit_arg(&mut self, arg: &Arg) { + self.enter_node(arg); + walk_arg(self, arg); + self.exit_node(); + } + + fn visit_keyword(&mut self, keyword: &Keyword) { + self.enter_node(keyword); + walk_keyword(self, keyword); + self.exit_node(); + } + + fn visit_alias(&mut self, alias: &Alias) { + self.enter_node(alias); + walk_alias(self, alias); + self.exit_node(); + } + + fn visit_with_item(&mut self, with_item: &WithItem) { + self.enter_node(with_item); + walk_with_item(self, with_item); + self.exit_node(); + } + + fn visit_match_case(&mut self, match_case: &MatchCase) { + self.enter_node(match_case); + walk_match_case(self, match_case); + self.exit_node(); + } + + fn visit_pattern(&mut self, pattern: &Pattern) { + self.enter_node(pattern); + walk_pattern(self, pattern); + self.exit_node(); + } + + fn visit_type_param(&mut self, type_param: &TypeParam) { + self.enter_node(type_param); + walk_type_param(self, type_param); + self.exit_node(); + } +} diff --git a/crates/ruff_python_codegen/Cargo.toml b/crates/ruff_python_codegen/Cargo.toml index 6dc8477824..563552c908 100644 --- a/crates/ruff_python_codegen/Cargo.toml +++ b/crates/ruff_python_codegen/Cargo.toml @@ -14,9 +14,9 @@ license = { workspace = true } [dependencies] ruff_python_ast = { path = "../ruff_python_ast" } -rustpython-parser = { workspace = true } +ruff_python_literal = { path = "../ruff_python_literal" } +ruff_python_parser = { path = "../ruff_python_parser" } ruff_source_file = { path = "../ruff_source_file" } once_cell = { workspace = true } -rustpython-literal = { workspace = true } -rustpython-ast = { workspace = true } + diff --git a/crates/ruff_python_codegen/src/generator.rs b/crates/ruff_python_codegen/src/generator.rs index dd60301cd7..b488956d95 100644 --- a/crates/ruff_python_codegen/src/generator.rs +++ b/crates/ruff_python_codegen/src/generator.rs @@ -1,14 +1,14 @@ //! Generate Python source code from an abstract syntax tree (AST). -use rustpython_ast::ArgWithDefault; +use ruff_python_ast::ArgWithDefault; use std::ops::Deref; -use rustpython_ast::{ +use ruff_python_ast::{ self as ast, Alias, Arg, Arguments, BoolOp, CmpOp, Comprehension, Constant, ConversionFlag, ExceptHandler, Expr, Identifier, MatchCase, Operator, Pattern, Stmt, Suite, TypeParam, TypeParamParamSpec, TypeParamTypeVar, TypeParamTypeVarTuple, WithItem, }; -use rustpython_literal::escape::{AsciiEscape, Escape, UnicodeEscape}; +use ruff_python_literal::escape::{AsciiEscape, Escape, UnicodeEscape}; use ruff_source_file::LineEnding; @@ -972,7 +972,7 @@ impl<'a> Generator<'a> { let (op, prec) = opprec!( un, op, - rustpython_ast::UnaryOp, + ruff_python_ast::UnaryOp, Invert("~", INVERT), Not("not ", NOT), UAdd("+", UADD), @@ -1298,7 +1298,7 @@ impl<'a> Generator<'a> { if fp.is_infinite() { self.p(inf_str); } else { - self.p(&rustpython_literal::float::to_string(*fp)); + self.p(&ruff_python_literal::float::to_string(*fp)); } } Constant::Complex { real, imag } => { @@ -1475,8 +1475,8 @@ impl<'a> Generator<'a> { #[cfg(test)] mod tests { - use rustpython_ast::{Mod, ModModule, Stmt}; - use rustpython_parser::{self, Mode, Parse}; + use ruff_python_ast::{Mod, ModModule, Stmt}; + use ruff_python_parser::{self, Mode, Parse}; use ruff_source_file::LineEnding; @@ -1509,7 +1509,7 @@ mod tests { let indentation = Indentation::default(); let quote = Quote::default(); let line_ending = LineEnding::default(); - let ast = rustpython_parser::parse(contents, Mode::Jupyter, "").unwrap(); + let ast = ruff_python_parser::parse(contents, Mode::Jupyter, "").unwrap(); let Mod::Module(ModModule { body, .. }) = ast else { panic!("Source code didn't return ModModule") }; diff --git a/crates/ruff_python_codegen/src/lib.rs b/crates/ruff_python_codegen/src/lib.rs index 3f01259deb..067d1d5b3e 100644 --- a/crates/ruff_python_codegen/src/lib.rs +++ b/crates/ruff_python_codegen/src/lib.rs @@ -2,9 +2,9 @@ mod generator; mod stylist; pub use generator::Generator; +use ruff_python_ast::Suite; +use ruff_python_parser::{lexer, Mode, Parse, ParseError}; use ruff_source_file::Locator; -use rustpython_ast::Suite; -use rustpython_parser::{lexer, Mode, Parse, ParseError}; pub use stylist::{Quote, Stylist}; /// Run round-trip source code generation on a given Python code. diff --git a/crates/ruff_python_codegen/src/stylist.rs b/crates/ruff_python_codegen/src/stylist.rs index 8fa6a867b4..087d82a29a 100644 --- a/crates/ruff_python_codegen/src/stylist.rs +++ b/crates/ruff_python_codegen/src/stylist.rs @@ -4,10 +4,10 @@ use std::fmt; use std::ops::Deref; use once_cell::unsync::OnceCell; +use ruff_python_literal::escape::Quote as StrQuote; +use ruff_python_parser::lexer::LexResult; +use ruff_python_parser::Tok; use ruff_source_file::{find_newline, LineEnding}; -use rustpython_literal::escape::Quote as StrQuote; -use rustpython_parser::lexer::LexResult; -use rustpython_parser::Tok; use ruff_python_ast::str::leading_quote; use ruff_source_file::Locator; @@ -163,8 +163,8 @@ impl Deref for Indentation { #[cfg(test)] mod tests { - use rustpython_parser::lexer::lex; - use rustpython_parser::Mode; + use ruff_python_parser::lexer::lex; + use ruff_python_parser::Mode; use ruff_source_file::{find_newline, LineEnding}; diff --git a/crates/ruff_python_formatter/Cargo.toml b/crates/ruff_python_formatter/Cargo.toml index cf99d2c79e..1f722f0a79 100644 --- a/crates/ruff_python_formatter/Cargo.toml +++ b/crates/ruff_python_formatter/Cargo.toml @@ -16,7 +16,8 @@ ruff_python_trivia = { path = "../ruff_python_trivia" } ruff_source_file = { path = "../ruff_source_file" } ruff_python_ast = { path = "../ruff_python_ast" } ruff_python_index = { path = "../ruff_python_index" } -ruff_text_size = { workspace = true } +ruff_python_parser = { path = "../ruff_python_parser" } +ruff_text_size = { path = "../ruff_text_size" } anyhow = { workspace = true } bitflags = { workspace = true } @@ -26,8 +27,6 @@ is-macro = { workspace = true } itertools = { workspace = true } once_cell = { workspace = true } rustc-hash = { workspace = true } -rustpython-ast = { workspace = true } -rustpython-parser = { workspace = true } serde = { workspace = true, optional = true } smallvec = { workspace = true } thiserror = { workspace = true } diff --git a/crates/ruff_python_formatter/generate.py b/crates/ruff_python_formatter/generate.py index 83e42e5eb1..ba52df6e96 100755 --- a/crates/ruff_python_formatter/generate.py +++ b/crates/ruff_python_formatter/generate.py @@ -90,7 +90,7 @@ for group, group_nodes in nodes_grouped.items(): code = f""" use crate::{{verbatim_text, FormatNodeRule, PyFormatter}}; use ruff_formatter::{{write, Buffer, FormatResult}}; - use rustpython_ast::{node}; + use ruff_python_ast::{node}; #[derive(Default)] pub struct Format{node}; @@ -114,7 +114,7 @@ use crate::context::PyFormatContext; use crate::{AsFormat, FormatNodeRule, IntoFormat}; use ruff_formatter::formatter::Formatter; use ruff_formatter::{FormatOwnedWithRule, FormatRefWithRule, FormatResult, FormatRule}; -use rustpython_parser::ast; +use ruff_python_ast as ast; """ # noqa: E501 for node in nodes: diff --git a/crates/ruff_python_formatter/src/builders.rs b/crates/ruff_python_formatter/src/builders.rs index 5cafe4e961..e2a03e3e75 100644 --- a/crates/ruff_python_formatter/src/builders.rs +++ b/crates/ruff_python_formatter/src/builders.rs @@ -1,5 +1,5 @@ +use ruff_python_ast::Ranged; use ruff_text_size::{TextRange, TextSize}; -use rustpython_ast::Ranged; use crate::comments::{dangling_comments, SourceComment}; use ruff_formatter::{format_args, write, Argument, Arguments}; @@ -377,8 +377,8 @@ impl<'ast> Format> for EmptyWithDanglingComments<'_> { #[cfg(test)] mod tests { - use rustpython_ast::ModModule; - use rustpython_parser::Parse; + use ruff_python_ast::ModModule; + use ruff_python_parser::Parse; use ruff_formatter::format; diff --git a/crates/ruff_python_formatter/src/cli.rs b/crates/ruff_python_formatter/src/cli.rs index 5c645ee450..132798486a 100644 --- a/crates/ruff_python_formatter/src/cli.rs +++ b/crates/ruff_python_formatter/src/cli.rs @@ -4,8 +4,8 @@ use std::path::PathBuf; use anyhow::{bail, Context, Result}; use clap::{command, Parser, ValueEnum}; -use rustpython_parser::lexer::lex; -use rustpython_parser::{parse_tokens, Mode}; +use ruff_python_parser::lexer::lex; +use ruff_python_parser::{parse_tokens, Mode}; use ruff_formatter::SourceCode; use ruff_python_index::CommentRangesBuilder; diff --git a/crates/ruff_python_formatter/src/comments/debug.rs b/crates/ruff_python_formatter/src/comments/debug.rs index c30e7f73e6..578b463b49 100644 --- a/crates/ruff_python_formatter/src/comments/debug.rs +++ b/crates/ruff_python_formatter/src/comments/debug.rs @@ -1,7 +1,7 @@ use std::fmt::{Debug, Formatter, Write}; use itertools::Itertools; -use rustpython_ast::Ranged; +use ruff_python_ast::Ranged; use ruff_formatter::SourceCode; @@ -178,8 +178,8 @@ impl Debug for DebugNodeCommentSlice<'_> { #[cfg(test)] mod tests { use insta::assert_debug_snapshot; + use ruff_python_ast::{StmtBreak, StmtContinue}; use ruff_text_size::{TextRange, TextSize}; - use rustpython_ast::{StmtBreak, StmtContinue}; use ruff_formatter::SourceCode; use ruff_python_ast::node::AnyNode; diff --git a/crates/ruff_python_formatter/src/comments/format.rs b/crates/ruff_python_formatter/src/comments/format.rs index 331e8c4b8d..b5d7056fd0 100644 --- a/crates/ruff_python_formatter/src/comments/format.rs +++ b/crates/ruff_python_formatter/src/comments/format.rs @@ -1,5 +1,5 @@ +use ruff_python_ast::Ranged; use ruff_text_size::{TextLen, TextRange, TextSize}; -use rustpython_ast::Ranged; use ruff_formatter::{format_args, write, FormatError, SourceCode}; use ruff_python_ast::node::{AnyNodeRef, AstNode}; diff --git a/crates/ruff_python_formatter/src/comments/mod.rs b/crates/ruff_python_formatter/src/comments/mod.rs index 01a2915dd5..9cfb280e3d 100644 --- a/crates/ruff_python_formatter/src/comments/mod.rs +++ b/crates/ruff_python_formatter/src/comments/mod.rs @@ -92,7 +92,7 @@ use std::cell::Cell; use std::fmt::Debug; use std::rc::Rc; -use rustpython_ast::{Mod, Ranged}; +use ruff_python_ast::{Mod, Ranged}; pub(crate) use format::{ dangling_comments, dangling_node_comments, leading_alternate_branch_comments, leading_comments, @@ -414,9 +414,9 @@ struct CommentsData<'a> { #[cfg(test)] mod tests { use insta::assert_debug_snapshot; - use rustpython_ast::Mod; - use rustpython_parser::lexer::lex; - use rustpython_parser::{parse_tokens, Mode}; + use ruff_python_ast::Mod; + use ruff_python_parser::lexer::lex; + use ruff_python_parser::{parse_tokens, Mode}; use ruff_formatter::SourceCode; use ruff_python_index::{CommentRanges, CommentRangesBuilder}; diff --git a/crates/ruff_python_formatter/src/comments/node_key.rs b/crates/ruff_python_formatter/src/comments/node_key.rs index 3601b22940..eb026ca82d 100644 --- a/crates/ruff_python_formatter/src/comments/node_key.rs +++ b/crates/ruff_python_formatter/src/comments/node_key.rs @@ -53,8 +53,8 @@ impl<'a> From> for NodeRefEqualityKey<'a> { mod tests { use crate::comments::node_key::NodeRefEqualityKey; use ruff_python_ast::node::AnyNodeRef; + use ruff_python_ast::StmtContinue; use ruff_text_size::TextRange; - use rustpython_ast::StmtContinue; use std::collections::hash_map::DefaultHasher; use std::hash::{Hash, Hasher}; diff --git a/crates/ruff_python_formatter/src/comments/placement.rs b/crates/ruff_python_formatter/src/comments/placement.rs index ac6014f59c..4d8488360c 100644 --- a/crates/ruff_python_formatter/src/comments/placement.rs +++ b/crates/ruff_python_formatter/src/comments/placement.rs @@ -1,11 +1,10 @@ use std::cmp::Ordering; -use ruff_text_size::TextRange; -use rustpython_parser::ast; -use rustpython_parser::ast::{ - Arguments, Comprehension, Expr, ExprAttribute, ExprBinOp, ExprIfExp, ExprSlice, ExprStarred, - MatchCase, Ranged, +use ruff_python_ast::{ + self as ast, Arguments, Comprehension, Expr, ExprAttribute, ExprBinOp, ExprIfExp, ExprSlice, + ExprStarred, MatchCase, Ranged, }; +use ruff_text_size::TextRange; use ruff_python_ast::node::{AnyNodeRef, AstNode}; use ruff_python_ast::whitespace::indentation; diff --git a/crates/ruff_python_formatter/src/comments/visitor.rs b/crates/ruff_python_formatter/src/comments/visitor.rs index 6a92e90a91..adac6dcd51 100644 --- a/crates/ruff_python_formatter/src/comments/visitor.rs +++ b/crates/ruff_python_formatter/src/comments/visitor.rs @@ -1,10 +1,10 @@ use std::iter::Peekable; -use ruff_text_size::{TextRange, TextSize}; -use rustpython_ast::{ +use ruff_python_ast::{ Alias, Arg, ArgWithDefault, Arguments, Comprehension, Decorator, ElifElseClause, ExceptHandler, Expr, Keyword, MatchCase, Mod, Pattern, Ranged, Stmt, TypeParam, WithItem, }; +use ruff_text_size::{TextRange, TextSize}; use ruff_formatter::{SourceCode, SourceCodeSlice}; use ruff_python_ast::node::AnyNodeRef; diff --git a/crates/ruff_python_formatter/src/expression/expr_attribute.rs b/crates/ruff_python_formatter/src/expression/expr_attribute.rs index 197b6e2154..ed8ca6cd3f 100644 --- a/crates/ruff_python_formatter/src/expression/expr_attribute.rs +++ b/crates/ruff_python_formatter/src/expression/expr_attribute.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Constant, Expr, ExprAttribute, ExprConstant}; +use ruff_python_ast::{Constant, Expr, ExprAttribute, ExprConstant}; use ruff_formatter::write; use ruff_python_ast::node::AnyNodeRef; diff --git a/crates/ruff_python_formatter/src/expression/expr_await.rs b/crates/ruff_python_formatter/src/expression/expr_await.rs index 09368240b9..496b2ff763 100644 --- a/crates/ruff_python_formatter/src/expression/expr_await.rs +++ b/crates/ruff_python_formatter/src/expression/expr_await.rs @@ -1,4 +1,4 @@ -use rustpython_ast::ExprAwait; +use ruff_python_ast::ExprAwait; use ruff_formatter::write; use ruff_python_ast::node::AnyNodeRef; diff --git a/crates/ruff_python_formatter/src/expression/expr_bin_op.rs b/crates/ruff_python_formatter/src/expression/expr_bin_op.rs index cc37c5a9ff..af24f6ea4a 100644 --- a/crates/ruff_python_formatter/src/expression/expr_bin_op.rs +++ b/crates/ruff_python_formatter/src/expression/expr_bin_op.rs @@ -1,6 +1,6 @@ use std::iter; -use rustpython_ast::{ +use ruff_python_ast::{ Constant, Expr, ExprAttribute, ExprBinOp, ExprConstant, ExprUnaryOp, Operator, UnaryOp, }; use smallvec::SmallVec; diff --git a/crates/ruff_python_formatter/src/expression/expr_bool_op.rs b/crates/ruff_python_formatter/src/expression/expr_bool_op.rs index 1bb46d7e5f..2a92f2f0cb 100644 --- a/crates/ruff_python_formatter/src/expression/expr_bool_op.rs +++ b/crates/ruff_python_formatter/src/expression/expr_bool_op.rs @@ -6,7 +6,7 @@ use crate::expression::parentheses::{ use crate::prelude::*; use ruff_formatter::{write, FormatOwnedWithRule, FormatRefWithRule, FormatRuleWithOptions}; use ruff_python_ast::node::AnyNodeRef; -use rustpython_ast::{BoolOp, ExprBoolOp}; +use ruff_python_ast::{BoolOp, ExprBoolOp}; #[derive(Default)] pub struct FormatExprBoolOp { diff --git a/crates/ruff_python_formatter/src/expression/expr_call.rs b/crates/ruff_python_formatter/src/expression/expr_call.rs index c0bbfbbb1e..1f204bc382 100644 --- a/crates/ruff_python_formatter/src/expression/expr_call.rs +++ b/crates/ruff_python_formatter/src/expression/expr_call.rs @@ -1,5 +1,5 @@ +use ruff_python_ast::{Expr, ExprCall, Ranged}; use ruff_text_size::{TextRange, TextSize}; -use rustpython_ast::{Expr, ExprCall, Ranged}; use crate::builders::empty_parenthesized_with_dangling_comments; use ruff_formatter::write; diff --git a/crates/ruff_python_formatter/src/expression/expr_compare.rs b/crates/ruff_python_formatter/src/expression/expr_compare.rs index b30799b125..a2b1b176fc 100644 --- a/crates/ruff_python_formatter/src/expression/expr_compare.rs +++ b/crates/ruff_python_formatter/src/expression/expr_compare.rs @@ -7,7 +7,7 @@ use crate::prelude::*; use crate::FormatNodeRule; use ruff_formatter::{write, FormatOwnedWithRule, FormatRefWithRule, FormatRuleWithOptions}; use ruff_python_ast::node::AnyNodeRef; -use rustpython_ast::{CmpOp, ExprCompare}; +use ruff_python_ast::{CmpOp, ExprCompare}; #[derive(Default)] pub struct FormatExprCompare { diff --git a/crates/ruff_python_formatter/src/expression/expr_constant.rs b/crates/ruff_python_formatter/src/expression/expr_constant.rs index 1d938975f0..c4ef692834 100644 --- a/crates/ruff_python_formatter/src/expression/expr_constant.rs +++ b/crates/ruff_python_formatter/src/expression/expr_constant.rs @@ -1,5 +1,5 @@ +use ruff_python_ast::{Constant, ExprConstant, Ranged}; use ruff_text_size::{TextLen, TextRange}; -use rustpython_ast::{Constant, ExprConstant, Ranged}; use ruff_formatter::FormatRuleWithOptions; use ruff_python_ast::node::AnyNodeRef; diff --git a/crates/ruff_python_formatter/src/expression/expr_dict.rs b/crates/ruff_python_formatter/src/expression/expr_dict.rs index 3badcf658f..c86b3ca03d 100644 --- a/crates/ruff_python_formatter/src/expression/expr_dict.rs +++ b/crates/ruff_python_formatter/src/expression/expr_dict.rs @@ -5,9 +5,9 @@ use crate::prelude::*; use crate::FormatNodeRule; use ruff_formatter::{format_args, write}; use ruff_python_ast::node::AnyNodeRef; +use ruff_python_ast::Ranged; +use ruff_python_ast::{Expr, ExprDict}; use ruff_text_size::TextRange; -use rustpython_ast::Ranged; -use rustpython_ast::{Expr, ExprDict}; #[derive(Default)] pub struct FormatExprDict; diff --git a/crates/ruff_python_formatter/src/expression/expr_dict_comp.rs b/crates/ruff_python_formatter/src/expression/expr_dict_comp.rs index 8451159244..0a17f3bfc1 100644 --- a/crates/ruff_python_formatter/src/expression/expr_dict_comp.rs +++ b/crates/ruff_python_formatter/src/expression/expr_dict_comp.rs @@ -7,7 +7,7 @@ use ruff_formatter::prelude::{ }; use ruff_formatter::{write, Buffer, FormatResult}; use ruff_python_ast::node::AnyNodeRef; -use rustpython_ast::ExprDictComp; +use ruff_python_ast::ExprDictComp; #[derive(Default)] pub struct FormatExprDictComp; diff --git a/crates/ruff_python_formatter/src/expression/expr_formatted_value.rs b/crates/ruff_python_formatter/src/expression/expr_formatted_value.rs index b62c7d24f4..34b7fb1f65 100644 --- a/crates/ruff_python_formatter/src/expression/expr_formatted_value.rs +++ b/crates/ruff_python_formatter/src/expression/expr_formatted_value.rs @@ -3,7 +3,7 @@ use crate::expression::parentheses::{NeedsParentheses, OptionalParentheses}; use crate::{not_yet_implemented, FormatNodeRule, PyFormatter}; use ruff_formatter::{write, Buffer, FormatResult}; use ruff_python_ast::node::AnyNodeRef; -use rustpython_ast::ExprFormattedValue; +use ruff_python_ast::ExprFormattedValue; #[derive(Default)] pub struct FormatExprFormattedValue; diff --git a/crates/ruff_python_formatter/src/expression/expr_generator_exp.rs b/crates/ruff_python_formatter/src/expression/expr_generator_exp.rs index fa448edee0..3113a49475 100644 --- a/crates/ruff_python_formatter/src/expression/expr_generator_exp.rs +++ b/crates/ruff_python_formatter/src/expression/expr_generator_exp.rs @@ -6,7 +6,7 @@ use crate::AsFormat; use crate::{FormatNodeRule, PyFormatter}; use ruff_formatter::{format_args, write, Buffer, FormatResult, FormatRuleWithOptions}; use ruff_python_ast::node::AnyNodeRef; -use rustpython_ast::ExprGeneratorExp; +use ruff_python_ast::ExprGeneratorExp; #[derive(Eq, PartialEq, Debug, Default)] pub enum GeneratorExpParentheses { diff --git a/crates/ruff_python_formatter/src/expression/expr_if_exp.rs b/crates/ruff_python_formatter/src/expression/expr_if_exp.rs index 2ee4b0249c..959413664a 100644 --- a/crates/ruff_python_formatter/src/expression/expr_if_exp.rs +++ b/crates/ruff_python_formatter/src/expression/expr_if_exp.rs @@ -7,7 +7,7 @@ use crate::prelude::*; use crate::FormatNodeRule; use ruff_formatter::{format_args, write}; use ruff_python_ast::node::AnyNodeRef; -use rustpython_ast::ExprIfExp; +use ruff_python_ast::ExprIfExp; #[derive(Default)] pub struct FormatExprIfExp; diff --git a/crates/ruff_python_formatter/src/expression/expr_joined_str.rs b/crates/ruff_python_formatter/src/expression/expr_joined_str.rs index 50fb63aa9d..b3333e65b3 100644 --- a/crates/ruff_python_formatter/src/expression/expr_joined_str.rs +++ b/crates/ruff_python_formatter/src/expression/expr_joined_str.rs @@ -3,7 +3,7 @@ use crate::expression::parentheses::{NeedsParentheses, OptionalParentheses}; use crate::{not_yet_implemented_custom_text, FormatNodeRule, PyFormatter}; use ruff_formatter::{write, Buffer, FormatResult}; use ruff_python_ast::node::AnyNodeRef; -use rustpython_ast::ExprJoinedStr; +use ruff_python_ast::ExprJoinedStr; #[derive(Default)] pub struct FormatExprJoinedStr; diff --git a/crates/ruff_python_formatter/src/expression/expr_lambda.rs b/crates/ruff_python_formatter/src/expression/expr_lambda.rs index 65e3b39fd7..858b7fbeaf 100644 --- a/crates/ruff_python_formatter/src/expression/expr_lambda.rs +++ b/crates/ruff_python_formatter/src/expression/expr_lambda.rs @@ -7,7 +7,7 @@ use crate::{FormatNodeRule, PyFormatter}; use ruff_formatter::prelude::{space, text}; use ruff_formatter::{write, Buffer, FormatResult}; use ruff_python_ast::node::AnyNodeRef; -use rustpython_ast::ExprLambda; +use ruff_python_ast::ExprLambda; #[derive(Default)] pub struct FormatExprLambda; diff --git a/crates/ruff_python_formatter/src/expression/expr_list.rs b/crates/ruff_python_formatter/src/expression/expr_list.rs index d64637baa1..85fa33326a 100644 --- a/crates/ruff_python_formatter/src/expression/expr_list.rs +++ b/crates/ruff_python_formatter/src/expression/expr_list.rs @@ -3,7 +3,7 @@ use crate::expression::parentheses::{parenthesized, NeedsParentheses, OptionalPa use crate::prelude::*; use crate::FormatNodeRule; use ruff_python_ast::node::AnyNodeRef; -use rustpython_ast::{ExprList, Ranged}; +use ruff_python_ast::{ExprList, Ranged}; #[derive(Default)] pub struct FormatExprList; diff --git a/crates/ruff_python_formatter/src/expression/expr_list_comp.rs b/crates/ruff_python_formatter/src/expression/expr_list_comp.rs index 48a5283c0a..4763f6b4ee 100644 --- a/crates/ruff_python_formatter/src/expression/expr_list_comp.rs +++ b/crates/ruff_python_formatter/src/expression/expr_list_comp.rs @@ -5,7 +5,7 @@ use crate::AsFormat; use crate::{FormatNodeRule, PyFormatter}; use ruff_formatter::{format_args, write, Buffer, FormatResult}; use ruff_python_ast::node::AnyNodeRef; -use rustpython_ast::ExprListComp; +use ruff_python_ast::ExprListComp; #[derive(Default)] pub struct FormatExprListComp; diff --git a/crates/ruff_python_formatter/src/expression/expr_name.rs b/crates/ruff_python_formatter/src/expression/expr_name.rs index 315d6cebc4..e9aba4f888 100644 --- a/crates/ruff_python_formatter/src/expression/expr_name.rs +++ b/crates/ruff_python_formatter/src/expression/expr_name.rs @@ -3,7 +3,7 @@ use crate::prelude::*; use crate::FormatNodeRule; use ruff_formatter::{write, FormatContext}; use ruff_python_ast::node::AnyNodeRef; -use rustpython_ast::ExprName; +use ruff_python_ast::ExprName; #[derive(Default)] pub struct FormatExprName; @@ -36,9 +36,9 @@ impl NeedsParentheses for ExprName { #[cfg(test)] mod tests { + use ruff_python_ast::{ModModule, Ranged}; + use ruff_python_parser::Parse; use ruff_text_size::{TextRange, TextSize}; - use rustpython_ast::{ModModule, Ranged}; - use rustpython_parser::Parse; #[test] fn name_range_with_comments() { diff --git a/crates/ruff_python_formatter/src/expression/expr_named_expr.rs b/crates/ruff_python_formatter/src/expression/expr_named_expr.rs index 82f88da634..cdb2224bf0 100644 --- a/crates/ruff_python_formatter/src/expression/expr_named_expr.rs +++ b/crates/ruff_python_formatter/src/expression/expr_named_expr.rs @@ -4,7 +4,7 @@ use crate::{AsFormat, FormatNodeRule, PyFormatter}; use ruff_formatter::prelude::{space, text}; use ruff_formatter::{write, Buffer, FormatResult}; use ruff_python_ast::node::AnyNodeRef; -use rustpython_ast::ExprNamedExpr; +use ruff_python_ast::ExprNamedExpr; #[derive(Default)] pub struct FormatExprNamedExpr; diff --git a/crates/ruff_python_formatter/src/expression/expr_set.rs b/crates/ruff_python_formatter/src/expression/expr_set.rs index 12341148e3..8d3ffa17e9 100644 --- a/crates/ruff_python_formatter/src/expression/expr_set.rs +++ b/crates/ruff_python_formatter/src/expression/expr_set.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{ExprSet, Ranged}; +use ruff_python_ast::{ExprSet, Ranged}; use ruff_python_ast::node::AnyNodeRef; diff --git a/crates/ruff_python_formatter/src/expression/expr_set_comp.rs b/crates/ruff_python_formatter/src/expression/expr_set_comp.rs index 26bb401b84..71704a33c6 100644 --- a/crates/ruff_python_formatter/src/expression/expr_set_comp.rs +++ b/crates/ruff_python_formatter/src/expression/expr_set_comp.rs @@ -5,7 +5,7 @@ use crate::AsFormat; use crate::{FormatNodeRule, PyFormatter}; use ruff_formatter::{format_args, write, Buffer, FormatResult}; use ruff_python_ast::node::AnyNodeRef; -use rustpython_ast::ExprSetComp; +use ruff_python_ast::ExprSetComp; #[derive(Default)] pub struct FormatExprSetComp; diff --git a/crates/ruff_python_formatter/src/expression/expr_slice.rs b/crates/ruff_python_formatter/src/expression/expr_slice.rs index 7171fc9ad2..c26cd0508f 100644 --- a/crates/ruff_python_formatter/src/expression/expr_slice.rs +++ b/crates/ruff_python_formatter/src/expression/expr_slice.rs @@ -1,5 +1,5 @@ +use ruff_python_ast::{Expr, ExprSlice, ExprUnaryOp, Ranged, UnaryOp}; use ruff_text_size::TextRange; -use rustpython_ast::{Expr, ExprSlice, ExprUnaryOp, Ranged, UnaryOp}; use ruff_formatter::prelude::{hard_line_break, line_suffix_boundary, space, text}; use ruff_formatter::{write, Buffer, Format, FormatError, FormatResult}; diff --git a/crates/ruff_python_formatter/src/expression/expr_starred.rs b/crates/ruff_python_formatter/src/expression/expr_starred.rs index d2cfe361bb..6f3e7723f3 100644 --- a/crates/ruff_python_formatter/src/expression/expr_starred.rs +++ b/crates/ruff_python_formatter/src/expression/expr_starred.rs @@ -1,4 +1,4 @@ -use rustpython_ast::ExprStarred; +use ruff_python_ast::ExprStarred; use ruff_formatter::write; use ruff_python_ast::node::AnyNodeRef; diff --git a/crates/ruff_python_formatter/src/expression/expr_subscript.rs b/crates/ruff_python_formatter/src/expression/expr_subscript.rs index e17733425a..9d5182dd2d 100644 --- a/crates/ruff_python_formatter/src/expression/expr_subscript.rs +++ b/crates/ruff_python_formatter/src/expression/expr_subscript.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Expr, ExprSubscript}; +use ruff_python_ast::{Expr, ExprSubscript}; use ruff_formatter::{format_args, write}; use ruff_python_ast::node::{AnyNodeRef, AstNode}; diff --git a/crates/ruff_python_formatter/src/expression/expr_tuple.rs b/crates/ruff_python_formatter/src/expression/expr_tuple.rs index 9a3fc0d9c6..7a4e3dee37 100644 --- a/crates/ruff_python_formatter/src/expression/expr_tuple.rs +++ b/crates/ruff_python_formatter/src/expression/expr_tuple.rs @@ -1,6 +1,6 @@ +use ruff_python_ast::ExprTuple; +use ruff_python_ast::{Expr, Ranged}; use ruff_text_size::TextRange; -use rustpython_ast::ExprTuple; -use rustpython_ast::{Expr, Ranged}; use ruff_formatter::{format_args, write, FormatRuleWithOptions}; use ruff_python_ast::node::AnyNodeRef; diff --git a/crates/ruff_python_formatter/src/expression/expr_unary_op.rs b/crates/ruff_python_formatter/src/expression/expr_unary_op.rs index 4ff22f7d96..2e1919e180 100644 --- a/crates/ruff_python_formatter/src/expression/expr_unary_op.rs +++ b/crates/ruff_python_formatter/src/expression/expr_unary_op.rs @@ -1,6 +1,6 @@ +use ruff_python_ast::UnaryOp; +use ruff_python_ast::{ExprUnaryOp, Ranged}; use ruff_text_size::{TextLen, TextRange}; -use rustpython_ast::UnaryOp; -use rustpython_ast::{ExprUnaryOp, Ranged}; use ruff_formatter::prelude::{hard_line_break, space, text}; use ruff_formatter::{Format, FormatContext, FormatResult}; diff --git a/crates/ruff_python_formatter/src/expression/expr_yield.rs b/crates/ruff_python_formatter/src/expression/expr_yield.rs index 818d8101ae..3dd5843320 100644 --- a/crates/ruff_python_formatter/src/expression/expr_yield.rs +++ b/crates/ruff_python_formatter/src/expression/expr_yield.rs @@ -5,7 +5,7 @@ use crate::{FormatNodeRule, PyFormatter}; use ruff_formatter::prelude::{space, text}; use ruff_formatter::{write, Buffer, FormatResult}; use ruff_python_ast::node::AnyNodeRef; -use rustpython_ast::ExprYield; +use ruff_python_ast::ExprYield; #[derive(Default)] pub struct FormatExprYield; diff --git a/crates/ruff_python_formatter/src/expression/expr_yield_from.rs b/crates/ruff_python_formatter/src/expression/expr_yield_from.rs index 24a65bda3f..68027ca329 100644 --- a/crates/ruff_python_formatter/src/expression/expr_yield_from.rs +++ b/crates/ruff_python_formatter/src/expression/expr_yield_from.rs @@ -5,7 +5,7 @@ use crate::{FormatNodeRule, PyFormatter}; use ruff_formatter::prelude::{space, text}; use ruff_formatter::{write, Buffer, FormatResult}; use ruff_python_ast::node::AnyNodeRef; -use rustpython_ast::ExprYieldFrom; +use ruff_python_ast::ExprYieldFrom; #[derive(Default)] pub struct FormatExprYieldFrom; diff --git a/crates/ruff_python_formatter/src/expression/mod.rs b/crates/ruff_python_formatter/src/expression/mod.rs index ba65b1b4e2..690509c1cd 100644 --- a/crates/ruff_python_formatter/src/expression/mod.rs +++ b/crates/ruff_python_formatter/src/expression/mod.rs @@ -1,7 +1,7 @@ use std::cmp::Ordering; -use rustpython_ast::{Expr, Operator}; -use rustpython_parser::ast; +use ruff_python_ast as ast; +use ruff_python_ast::{Expr, Operator}; use ruff_formatter::{FormatOwnedWithRule, FormatRefWithRule, FormatRule, FormatRuleWithOptions}; use ruff_python_ast::node::AnyNodeRef; @@ -383,7 +383,7 @@ impl<'input> CanOmitOptionalParenthesesVisitor<'input> { } } - // `[a, b].test[300].dot` + // `[a, b].test.test[300].dot` Expr::Attribute(ast::ExprAttribute { range: _, value, diff --git a/crates/ruff_python_formatter/src/expression/number.rs b/crates/ruff_python_formatter/src/expression/number.rs index a8ee2d957a..92c67ffa7e 100644 --- a/crates/ruff_python_formatter/src/expression/number.rs +++ b/crates/ruff_python_formatter/src/expression/number.rs @@ -1,7 +1,7 @@ use std::borrow::Cow; +use ruff_python_ast::{ExprConstant, Ranged}; use ruff_text_size::TextSize; -use rustpython_ast::{ExprConstant, Ranged}; use crate::prelude::*; diff --git a/crates/ruff_python_formatter/src/expression/parentheses.rs b/crates/ruff_python_formatter/src/expression/parentheses.rs index 265e7d7cd9..bdef4796bf 100644 --- a/crates/ruff_python_formatter/src/expression/parentheses.rs +++ b/crates/ruff_python_formatter/src/expression/parentheses.rs @@ -1,4 +1,4 @@ -use rustpython_ast::Ranged; +use ruff_python_ast::Ranged; use ruff_formatter::prelude::tag::Condition; use ruff_formatter::{format_args, write, Argument, Arguments}; diff --git a/crates/ruff_python_formatter/src/expression/string.rs b/crates/ruff_python_formatter/src/expression/string.rs index cd2188c114..8395122be2 100644 --- a/crates/ruff_python_formatter/src/expression/string.rs +++ b/crates/ruff_python_formatter/src/expression/string.rs @@ -1,10 +1,10 @@ use std::borrow::Cow; use bitflags::bitflags; +use ruff_python_ast::{ExprConstant, Ranged}; +use ruff_python_parser::lexer::{lex_starts_at, LexicalError, LexicalErrorType}; +use ruff_python_parser::{Mode, Tok}; use ruff_text_size::{TextLen, TextRange, TextSize}; -use rustpython_ast::{ExprConstant, Ranged}; -use rustpython_parser::lexer::{lex_starts_at, LexicalError, LexicalErrorType}; -use rustpython_parser::{Mode, Tok}; use ruff_formatter::{format_args, write, FormatError}; use ruff_python_ast::str::is_implicit_concatenation; diff --git a/crates/ruff_python_formatter/src/generated.rs b/crates/ruff_python_formatter/src/generated.rs index 9c300c43ee..c41ac16c65 100644 --- a/crates/ruff_python_formatter/src/generated.rs +++ b/crates/ruff_python_formatter/src/generated.rs @@ -5,7 +5,7 @@ use crate::context::PyFormatContext; use crate::{AsFormat, FormatNodeRule, IntoFormat}; use ruff_formatter::formatter::Formatter; use ruff_formatter::{FormatOwnedWithRule, FormatRefWithRule, FormatResult, FormatRule}; -use rustpython_parser::ast; +use ruff_python_ast as ast; impl FormatRule> for crate::module::mod_module::FormatModModule diff --git a/crates/ruff_python_formatter/src/lib.rs b/crates/ruff_python_formatter/src/lib.rs index 10e29821cc..89bf549385 100644 --- a/crates/ruff_python_formatter/src/lib.rs +++ b/crates/ruff_python_formatter/src/lib.rs @@ -13,12 +13,12 @@ use ruff_formatter::{ }; use ruff_formatter::{Formatted, Printed, SourceCode}; use ruff_python_ast::node::{AnyNodeRef, AstNode, NodeKind}; +use ruff_python_ast::{Mod, Ranged}; use ruff_python_index::{CommentRanges, CommentRangesBuilder}; +use ruff_python_parser::lexer::{lex, LexicalError}; +use ruff_python_parser::{parse_tokens, Mode, ParseError}; use ruff_source_file::Locator; use ruff_text_size::{TextLen, TextRange}; -use rustpython_ast::{Mod, Ranged}; -use rustpython_parser::lexer::{lex, LexicalError}; -use rustpython_parser::{parse_tokens, Mode, ParseError}; use std::borrow::Cow; use thiserror::Error; @@ -251,8 +251,8 @@ mod tests { use anyhow::Result; use insta::assert_snapshot; use ruff_python_index::CommentRangesBuilder; - use rustpython_parser::lexer::lex; - use rustpython_parser::{parse_tokens, Mode}; + use ruff_python_parser::lexer::lex; + use ruff_python_parser::{parse_tokens, Mode}; /// Very basic test intentionally kept very similar to the CLI #[test] diff --git a/crates/ruff_python_formatter/src/module/mod.rs b/crates/ruff_python_formatter/src/module/mod.rs index bd4b5021fc..a749a3af8b 100644 --- a/crates/ruff_python_formatter/src/module/mod.rs +++ b/crates/ruff_python_formatter/src/module/mod.rs @@ -1,7 +1,7 @@ use crate::context::PyFormatContext; use crate::{AsFormat, IntoFormat, PyFormatter}; use ruff_formatter::{Format, FormatOwnedWithRule, FormatRefWithRule, FormatResult, FormatRule}; -use rustpython_ast::Mod; +use ruff_python_ast::Mod; pub(crate) mod mod_expression; pub(crate) mod mod_function_type; diff --git a/crates/ruff_python_formatter/src/module/mod_expression.rs b/crates/ruff_python_formatter/src/module/mod_expression.rs index fc2b33686f..b038976211 100644 --- a/crates/ruff_python_formatter/src/module/mod_expression.rs +++ b/crates/ruff_python_formatter/src/module/mod_expression.rs @@ -1,6 +1,6 @@ use crate::{AsFormat, FormatNodeRule, PyFormatter}; use ruff_formatter::{Format, FormatResult}; -use rustpython_ast::ModExpression; +use ruff_python_ast::ModExpression; #[derive(Default)] pub struct FormatModExpression; diff --git a/crates/ruff_python_formatter/src/module/mod_function_type.rs b/crates/ruff_python_formatter/src/module/mod_function_type.rs index 8749526dbd..474f9a9e48 100644 --- a/crates/ruff_python_formatter/src/module/mod_function_type.rs +++ b/crates/ruff_python_formatter/src/module/mod_function_type.rs @@ -1,6 +1,6 @@ use crate::{not_yet_implemented, FormatNodeRule, PyFormatter}; use ruff_formatter::{write, Buffer, FormatResult}; -use rustpython_ast::ModFunctionType; +use ruff_python_ast::ModFunctionType; #[derive(Default)] pub struct FormatModFunctionType; diff --git a/crates/ruff_python_formatter/src/module/mod_interactive.rs b/crates/ruff_python_formatter/src/module/mod_interactive.rs index 34ff8d3279..06c9e85327 100644 --- a/crates/ruff_python_formatter/src/module/mod_interactive.rs +++ b/crates/ruff_python_formatter/src/module/mod_interactive.rs @@ -1,6 +1,6 @@ use crate::{not_yet_implemented, FormatNodeRule, PyFormatter}; use ruff_formatter::{write, Buffer, FormatResult}; -use rustpython_ast::ModInteractive; +use ruff_python_ast::ModInteractive; #[derive(Default)] pub struct FormatModInteractive; diff --git a/crates/ruff_python_formatter/src/module/mod_module.rs b/crates/ruff_python_formatter/src/module/mod_module.rs index dd25b71d5a..a8ea713bb8 100644 --- a/crates/ruff_python_formatter/src/module/mod_module.rs +++ b/crates/ruff_python_formatter/src/module/mod_module.rs @@ -2,7 +2,7 @@ use crate::statement::suite::SuiteLevel; use crate::{AsFormat, FormatNodeRule, PyFormatter}; use ruff_formatter::prelude::hard_line_break; use ruff_formatter::{write, Buffer, FormatResult}; -use rustpython_ast::ModModule; +use ruff_python_ast::ModModule; #[derive(Default)] pub struct FormatModModule; diff --git a/crates/ruff_python_formatter/src/other/alias.rs b/crates/ruff_python_formatter/src/other/alias.rs index 7ad9dd9822..4f577599e2 100644 --- a/crates/ruff_python_formatter/src/other/alias.rs +++ b/crates/ruff_python_formatter/src/other/alias.rs @@ -1,7 +1,7 @@ use crate::{AsFormat, FormatNodeRule, PyFormatter}; use ruff_formatter::prelude::{space, text}; use ruff_formatter::{write, Buffer, Format, FormatResult}; -use rustpython_ast::Alias; +use ruff_python_ast::Alias; #[derive(Default)] pub struct FormatAlias; diff --git a/crates/ruff_python_formatter/src/other/arg.rs b/crates/ruff_python_formatter/src/other/arg.rs index 634ab0dd34..379ceb0ebd 100644 --- a/crates/ruff_python_formatter/src/other/arg.rs +++ b/crates/ruff_python_formatter/src/other/arg.rs @@ -1,7 +1,7 @@ use crate::prelude::*; use crate::FormatNodeRule; use ruff_formatter::write; -use rustpython_ast::Arg; +use ruff_python_ast::Arg; #[derive(Default)] pub struct FormatArg; diff --git a/crates/ruff_python_formatter/src/other/arg_with_default.rs b/crates/ruff_python_formatter/src/other/arg_with_default.rs index a76b9e88cd..3864c06889 100644 --- a/crates/ruff_python_formatter/src/other/arg_with_default.rs +++ b/crates/ruff_python_formatter/src/other/arg_with_default.rs @@ -1,5 +1,5 @@ use ruff_formatter::write; -use rustpython_ast::ArgWithDefault; +use ruff_python_ast::ArgWithDefault; use crate::prelude::*; use crate::FormatNodeRule; diff --git a/crates/ruff_python_formatter/src/other/arguments.rs b/crates/ruff_python_formatter/src/other/arguments.rs index d852b398f7..d667b5190b 100644 --- a/crates/ruff_python_formatter/src/other/arguments.rs +++ b/crates/ruff_python_formatter/src/other/arguments.rs @@ -1,7 +1,7 @@ use std::usize; +use ruff_python_ast::{Arguments, Ranged}; use ruff_text_size::{TextRange, TextSize}; -use rustpython_ast::{Arguments, Ranged}; use ruff_formatter::{format_args, write, FormatRuleWithOptions}; use ruff_python_ast::node::{AnyNodeRef, AstNode}; diff --git a/crates/ruff_python_formatter/src/other/comprehension.rs b/crates/ruff_python_formatter/src/other/comprehension.rs index ba2ef20e3f..e5565ebb21 100644 --- a/crates/ruff_python_formatter/src/other/comprehension.rs +++ b/crates/ruff_python_formatter/src/other/comprehension.rs @@ -4,7 +4,7 @@ use crate::prelude::*; use crate::AsFormat; use crate::{FormatNodeRule, PyFormatter}; use ruff_formatter::{format_args, write, Buffer, FormatResult}; -use rustpython_ast::{Comprehension, Expr, Ranged}; +use ruff_python_ast::{Comprehension, Expr, Ranged}; #[derive(Default)] pub struct FormatComprehension; diff --git a/crates/ruff_python_formatter/src/other/decorator.rs b/crates/ruff_python_formatter/src/other/decorator.rs index 703cfb7036..9e6ef4219a 100644 --- a/crates/ruff_python_formatter/src/other/decorator.rs +++ b/crates/ruff_python_formatter/src/other/decorator.rs @@ -3,7 +3,7 @@ use crate::expression::parentheses::Parenthesize; use crate::prelude::*; use crate::FormatNodeRule; use ruff_formatter::write; -use rustpython_ast::Decorator; +use ruff_python_ast::Decorator; #[derive(Default)] pub struct FormatDecorator; diff --git a/crates/ruff_python_formatter/src/other/elif_else_clause.rs b/crates/ruff_python_formatter/src/other/elif_else_clause.rs index 55d1b7a44a..da1deeb6f1 100644 --- a/crates/ruff_python_formatter/src/other/elif_else_clause.rs +++ b/crates/ruff_python_formatter/src/other/elif_else_clause.rs @@ -1,7 +1,7 @@ use crate::statement::stmt_if::format_elif_else_clause; use crate::{FormatNodeRule, PyFormatter}; use ruff_formatter::FormatResult; -use rustpython_ast::ElifElseClause; +use ruff_python_ast::ElifElseClause; /// Note that this implementation misses the leading newlines before the leading comments because /// it does not have access to the last node of the previous branch. The `StmtIf` therefore doesn't diff --git a/crates/ruff_python_formatter/src/other/except_handler_except_handler.rs b/crates/ruff_python_formatter/src/other/except_handler_except_handler.rs index 9b6a600d39..052710e7c2 100644 --- a/crates/ruff_python_formatter/src/other/except_handler_except_handler.rs +++ b/crates/ruff_python_formatter/src/other/except_handler_except_handler.rs @@ -5,7 +5,7 @@ use crate::prelude::*; use crate::{FormatNodeRule, PyFormatter}; use ruff_formatter::FormatRuleWithOptions; use ruff_formatter::{write, Buffer, FormatResult}; -use rustpython_ast::ExceptHandlerExceptHandler; +use ruff_python_ast::ExceptHandlerExceptHandler; #[derive(Copy, Clone, Default)] pub enum ExceptHandlerKind { diff --git a/crates/ruff_python_formatter/src/other/identifier.rs b/crates/ruff_python_formatter/src/other/identifier.rs index 506fb5241f..0693c57b03 100644 --- a/crates/ruff_python_formatter/src/other/identifier.rs +++ b/crates/ruff_python_formatter/src/other/identifier.rs @@ -1,7 +1,7 @@ use crate::prelude::*; use crate::AsFormat; use ruff_formatter::{FormatOwnedWithRule, FormatRefWithRule}; -use rustpython_ast::{Identifier, Ranged}; +use ruff_python_ast::{Identifier, Ranged}; pub struct FormatIdentifier; diff --git a/crates/ruff_python_formatter/src/other/keyword.rs b/crates/ruff_python_formatter/src/other/keyword.rs index d8985abfa7..d297ee6af5 100644 --- a/crates/ruff_python_formatter/src/other/keyword.rs +++ b/crates/ruff_python_formatter/src/other/keyword.rs @@ -1,7 +1,7 @@ use crate::prelude::*; use crate::FormatNodeRule; use ruff_formatter::write; -use rustpython_ast::Keyword; +use ruff_python_ast::Keyword; #[derive(Default)] pub struct FormatKeyword; diff --git a/crates/ruff_python_formatter/src/other/match_case.rs b/crates/ruff_python_formatter/src/other/match_case.rs index b9feea3343..91a584657e 100644 --- a/crates/ruff_python_formatter/src/other/match_case.rs +++ b/crates/ruff_python_formatter/src/other/match_case.rs @@ -1,6 +1,6 @@ use crate::{not_yet_implemented, FormatNodeRule, PyFormatter}; use ruff_formatter::{write, Buffer, FormatResult}; -use rustpython_ast::MatchCase; +use ruff_python_ast::MatchCase; #[derive(Default)] pub struct FormatMatchCase; diff --git a/crates/ruff_python_formatter/src/other/type_ignore_type_ignore.rs b/crates/ruff_python_formatter/src/other/type_ignore_type_ignore.rs index 574f4a7da6..7500eafb1b 100644 --- a/crates/ruff_python_formatter/src/other/type_ignore_type_ignore.rs +++ b/crates/ruff_python_formatter/src/other/type_ignore_type_ignore.rs @@ -1,6 +1,6 @@ use crate::{not_yet_implemented, FormatNodeRule, PyFormatter}; use ruff_formatter::{write, Buffer, FormatResult}; -use rustpython_ast::TypeIgnoreTypeIgnore; +use ruff_python_ast::TypeIgnoreTypeIgnore; #[derive(Default)] pub struct FormatTypeIgnoreTypeIgnore; diff --git a/crates/ruff_python_formatter/src/other/with_item.rs b/crates/ruff_python_formatter/src/other/with_item.rs index e5ce34624a..49fd36393a 100644 --- a/crates/ruff_python_formatter/src/other/with_item.rs +++ b/crates/ruff_python_formatter/src/other/with_item.rs @@ -1,4 +1,4 @@ -use rustpython_ast::WithItem; +use ruff_python_ast::WithItem; use ruff_formatter::{write, Buffer, FormatResult}; diff --git a/crates/ruff_python_formatter/src/pattern/pattern_match_as.rs b/crates/ruff_python_formatter/src/pattern/pattern_match_as.rs index 5acd82349b..efe8364e24 100644 --- a/crates/ruff_python_formatter/src/pattern/pattern_match_as.rs +++ b/crates/ruff_python_formatter/src/pattern/pattern_match_as.rs @@ -1,6 +1,6 @@ use crate::{not_yet_implemented, FormatNodeRule, PyFormatter}; use ruff_formatter::{write, Buffer, FormatResult}; -use rustpython_ast::PatternMatchAs; +use ruff_python_ast::PatternMatchAs; #[derive(Default)] pub struct FormatPatternMatchAs; diff --git a/crates/ruff_python_formatter/src/pattern/pattern_match_class.rs b/crates/ruff_python_formatter/src/pattern/pattern_match_class.rs index 9d2700379a..4aeb063da4 100644 --- a/crates/ruff_python_formatter/src/pattern/pattern_match_class.rs +++ b/crates/ruff_python_formatter/src/pattern/pattern_match_class.rs @@ -1,6 +1,6 @@ use crate::{not_yet_implemented, FormatNodeRule, PyFormatter}; use ruff_formatter::{write, Buffer, FormatResult}; -use rustpython_ast::PatternMatchClass; +use ruff_python_ast::PatternMatchClass; #[derive(Default)] pub struct FormatPatternMatchClass; diff --git a/crates/ruff_python_formatter/src/pattern/pattern_match_mapping.rs b/crates/ruff_python_formatter/src/pattern/pattern_match_mapping.rs index 09454a3411..ea629eb9d9 100644 --- a/crates/ruff_python_formatter/src/pattern/pattern_match_mapping.rs +++ b/crates/ruff_python_formatter/src/pattern/pattern_match_mapping.rs @@ -1,6 +1,6 @@ use crate::{not_yet_implemented, FormatNodeRule, PyFormatter}; use ruff_formatter::{write, Buffer, FormatResult}; -use rustpython_ast::PatternMatchMapping; +use ruff_python_ast::PatternMatchMapping; #[derive(Default)] pub struct FormatPatternMatchMapping; diff --git a/crates/ruff_python_formatter/src/pattern/pattern_match_or.rs b/crates/ruff_python_formatter/src/pattern/pattern_match_or.rs index 418d9bdbd8..be809d2056 100644 --- a/crates/ruff_python_formatter/src/pattern/pattern_match_or.rs +++ b/crates/ruff_python_formatter/src/pattern/pattern_match_or.rs @@ -1,6 +1,6 @@ use crate::{not_yet_implemented, FormatNodeRule, PyFormatter}; use ruff_formatter::{write, Buffer, FormatResult}; -use rustpython_ast::PatternMatchOr; +use ruff_python_ast::PatternMatchOr; #[derive(Default)] pub struct FormatPatternMatchOr; diff --git a/crates/ruff_python_formatter/src/pattern/pattern_match_sequence.rs b/crates/ruff_python_formatter/src/pattern/pattern_match_sequence.rs index ea1a21e6cb..7f5a9390eb 100644 --- a/crates/ruff_python_formatter/src/pattern/pattern_match_sequence.rs +++ b/crates/ruff_python_formatter/src/pattern/pattern_match_sequence.rs @@ -1,6 +1,6 @@ use crate::{not_yet_implemented, FormatNodeRule, PyFormatter}; use ruff_formatter::{write, Buffer, FormatResult}; -use rustpython_ast::PatternMatchSequence; +use ruff_python_ast::PatternMatchSequence; #[derive(Default)] pub struct FormatPatternMatchSequence; diff --git a/crates/ruff_python_formatter/src/pattern/pattern_match_singleton.rs b/crates/ruff_python_formatter/src/pattern/pattern_match_singleton.rs index f2004b3375..0b06a2c56c 100644 --- a/crates/ruff_python_formatter/src/pattern/pattern_match_singleton.rs +++ b/crates/ruff_python_formatter/src/pattern/pattern_match_singleton.rs @@ -1,6 +1,6 @@ use crate::{not_yet_implemented, FormatNodeRule, PyFormatter}; use ruff_formatter::{write, Buffer, FormatResult}; -use rustpython_ast::PatternMatchSingleton; +use ruff_python_ast::PatternMatchSingleton; #[derive(Default)] pub struct FormatPatternMatchSingleton; diff --git a/crates/ruff_python_formatter/src/pattern/pattern_match_star.rs b/crates/ruff_python_formatter/src/pattern/pattern_match_star.rs index c3ee6b2042..d7b457078d 100644 --- a/crates/ruff_python_formatter/src/pattern/pattern_match_star.rs +++ b/crates/ruff_python_formatter/src/pattern/pattern_match_star.rs @@ -1,6 +1,6 @@ use crate::{not_yet_implemented, FormatNodeRule, PyFormatter}; use ruff_formatter::{write, Buffer, FormatResult}; -use rustpython_ast::PatternMatchStar; +use ruff_python_ast::PatternMatchStar; #[derive(Default)] pub struct FormatPatternMatchStar; diff --git a/crates/ruff_python_formatter/src/pattern/pattern_match_value.rs b/crates/ruff_python_formatter/src/pattern/pattern_match_value.rs index 47434408dc..09d53faea4 100644 --- a/crates/ruff_python_formatter/src/pattern/pattern_match_value.rs +++ b/crates/ruff_python_formatter/src/pattern/pattern_match_value.rs @@ -1,4 +1,4 @@ -use rustpython_ast::PatternMatchValue; +use ruff_python_ast::PatternMatchValue; use ruff_formatter::{write, Buffer, FormatResult}; diff --git a/crates/ruff_python_formatter/src/statement/mod.rs b/crates/ruff_python_formatter/src/statement/mod.rs index 2967f9aa3a..ed03b4b2c3 100644 --- a/crates/ruff_python_formatter/src/statement/mod.rs +++ b/crates/ruff_python_formatter/src/statement/mod.rs @@ -1,6 +1,6 @@ use crate::prelude::*; use ruff_formatter::{FormatOwnedWithRule, FormatRefWithRule}; -use rustpython_ast::Stmt; +use ruff_python_ast::Stmt; pub(crate) mod stmt_ann_assign; pub(crate) mod stmt_assert; diff --git a/crates/ruff_python_formatter/src/statement/stmt_ann_assign.rs b/crates/ruff_python_formatter/src/statement/stmt_ann_assign.rs index 92629add56..e4bb2649d8 100644 --- a/crates/ruff_python_formatter/src/statement/stmt_ann_assign.rs +++ b/crates/ruff_python_formatter/src/statement/stmt_ann_assign.rs @@ -3,7 +3,7 @@ use crate::expression::parentheses::Parenthesize; use crate::prelude::*; use crate::FormatNodeRule; use ruff_formatter::write; -use rustpython_ast::StmtAnnAssign; +use ruff_python_ast::StmtAnnAssign; #[derive(Default)] pub struct FormatStmtAnnAssign; diff --git a/crates/ruff_python_formatter/src/statement/stmt_assert.rs b/crates/ruff_python_formatter/src/statement/stmt_assert.rs index d76dae494d..c6dae63a17 100644 --- a/crates/ruff_python_formatter/src/statement/stmt_assert.rs +++ b/crates/ruff_python_formatter/src/statement/stmt_assert.rs @@ -3,7 +3,7 @@ use crate::expression::parentheses::Parenthesize; use crate::{FormatNodeRule, PyFormatter}; use ruff_formatter::prelude::{space, text}; use ruff_formatter::{write, Buffer, FormatResult}; -use rustpython_ast::StmtAssert; +use ruff_python_ast::StmtAssert; #[derive(Default)] pub struct FormatStmtAssert; diff --git a/crates/ruff_python_formatter/src/statement/stmt_assign.rs b/crates/ruff_python_formatter/src/statement/stmt_assign.rs index 825ae0a7c3..7465591b66 100644 --- a/crates/ruff_python_formatter/src/statement/stmt_assign.rs +++ b/crates/ruff_python_formatter/src/statement/stmt_assign.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Expr, StmtAssign}; +use ruff_python_ast::{Expr, StmtAssign}; use ruff_formatter::{format_args, write, FormatError}; diff --git a/crates/ruff_python_formatter/src/statement/stmt_async_for.rs b/crates/ruff_python_formatter/src/statement/stmt_async_for.rs index 342ed9f855..f47b3452e2 100644 --- a/crates/ruff_python_formatter/src/statement/stmt_async_for.rs +++ b/crates/ruff_python_formatter/src/statement/stmt_async_for.rs @@ -2,7 +2,7 @@ use crate::prelude::*; use crate::statement::stmt_for::AnyStatementFor; use crate::{FormatNodeRule, PyFormatter}; use ruff_formatter::FormatResult; -use rustpython_ast::StmtAsyncFor; +use ruff_python_ast::StmtAsyncFor; #[derive(Default)] pub struct FormatStmtAsyncFor; diff --git a/crates/ruff_python_formatter/src/statement/stmt_async_function_def.rs b/crates/ruff_python_formatter/src/statement/stmt_async_function_def.rs index 85c6dd956e..1ba23722e5 100644 --- a/crates/ruff_python_formatter/src/statement/stmt_async_function_def.rs +++ b/crates/ruff_python_formatter/src/statement/stmt_async_function_def.rs @@ -1,4 +1,4 @@ -use rustpython_ast::StmtAsyncFunctionDef; +use ruff_python_ast::StmtAsyncFunctionDef; use ruff_python_ast::function::AnyFunctionDefinition; diff --git a/crates/ruff_python_formatter/src/statement/stmt_async_with.rs b/crates/ruff_python_formatter/src/statement/stmt_async_with.rs index 83bfadb5bc..fdd89fdb2f 100644 --- a/crates/ruff_python_formatter/src/statement/stmt_async_with.rs +++ b/crates/ruff_python_formatter/src/statement/stmt_async_with.rs @@ -1,7 +1,7 @@ use crate::prelude::*; use crate::statement::stmt_with::AnyStatementWith; use crate::FormatNodeRule; -use rustpython_ast::StmtAsyncWith; +use ruff_python_ast::StmtAsyncWith; #[derive(Default)] pub struct FormatStmtAsyncWith; diff --git a/crates/ruff_python_formatter/src/statement/stmt_aug_assign.rs b/crates/ruff_python_formatter/src/statement/stmt_aug_assign.rs index 1674753a4b..6123935e49 100644 --- a/crates/ruff_python_formatter/src/statement/stmt_aug_assign.rs +++ b/crates/ruff_python_formatter/src/statement/stmt_aug_assign.rs @@ -3,7 +3,7 @@ use crate::expression::parentheses::Parenthesize; use crate::{AsFormat, FormatNodeRule, PyFormatter}; use ruff_formatter::prelude::{space, text}; use ruff_formatter::{write, Buffer, FormatResult}; -use rustpython_ast::StmtAugAssign; +use ruff_python_ast::StmtAugAssign; #[derive(Default)] pub struct FormatStmtAugAssign; diff --git a/crates/ruff_python_formatter/src/statement/stmt_break.rs b/crates/ruff_python_formatter/src/statement/stmt_break.rs index d3ed9ca3a7..3024faae9f 100644 --- a/crates/ruff_python_formatter/src/statement/stmt_break.rs +++ b/crates/ruff_python_formatter/src/statement/stmt_break.rs @@ -1,7 +1,7 @@ use crate::{FormatNodeRule, PyFormatter}; use ruff_formatter::prelude::text; use ruff_formatter::{Format, FormatResult}; -use rustpython_ast::StmtBreak; +use ruff_python_ast::StmtBreak; #[derive(Default)] pub struct FormatStmtBreak; diff --git a/crates/ruff_python_formatter/src/statement/stmt_class_def.rs b/crates/ruff_python_formatter/src/statement/stmt_class_def.rs index 098f764810..202afd2f01 100644 --- a/crates/ruff_python_formatter/src/statement/stmt_class_def.rs +++ b/crates/ruff_python_formatter/src/statement/stmt_class_def.rs @@ -1,5 +1,5 @@ +use ruff_python_ast::{Ranged, StmtClassDef}; use ruff_text_size::TextRange; -use rustpython_ast::{Ranged, StmtClassDef}; use ruff_formatter::write; use ruff_python_trivia::{SimpleTokenKind, SimpleTokenizer}; diff --git a/crates/ruff_python_formatter/src/statement/stmt_continue.rs b/crates/ruff_python_formatter/src/statement/stmt_continue.rs index 7f43fa49e5..8b2ab90e0e 100644 --- a/crates/ruff_python_formatter/src/statement/stmt_continue.rs +++ b/crates/ruff_python_formatter/src/statement/stmt_continue.rs @@ -1,7 +1,7 @@ use crate::{FormatNodeRule, PyFormatter}; use ruff_formatter::prelude::text; use ruff_formatter::{Format, FormatResult}; -use rustpython_ast::StmtContinue; +use ruff_python_ast::StmtContinue; #[derive(Default)] pub struct FormatStmtContinue; diff --git a/crates/ruff_python_formatter/src/statement/stmt_delete.rs b/crates/ruff_python_formatter/src/statement/stmt_delete.rs index e15ebd3f2d..02dd1f97b1 100644 --- a/crates/ruff_python_formatter/src/statement/stmt_delete.rs +++ b/crates/ruff_python_formatter/src/statement/stmt_delete.rs @@ -5,7 +5,7 @@ use crate::expression::parentheses::Parenthesize; use crate::{FormatNodeRule, PyFormatter}; use ruff_formatter::prelude::{block_indent, format_with, space, text}; use ruff_formatter::{write, Buffer, Format, FormatResult}; -use rustpython_ast::{Ranged, StmtDelete}; +use ruff_python_ast::{Ranged, StmtDelete}; #[derive(Default)] pub struct FormatStmtDelete; diff --git a/crates/ruff_python_formatter/src/statement/stmt_expr.rs b/crates/ruff_python_formatter/src/statement/stmt_expr.rs index a2586fae20..0a3365e2b9 100644 --- a/crates/ruff_python_formatter/src/statement/stmt_expr.rs +++ b/crates/ruff_python_formatter/src/statement/stmt_expr.rs @@ -1,5 +1,5 @@ -use rustpython_ast::{Expr, Operator, StmtExpr}; -use rustpython_parser::ast; +use ruff_python_ast as ast; +use ruff_python_ast::{Expr, Operator, StmtExpr}; use crate::expression::maybe_parenthesize_expression; use crate::expression::parentheses::Parenthesize; diff --git a/crates/ruff_python_formatter/src/statement/stmt_for.rs b/crates/ruff_python_formatter/src/statement/stmt_for.rs index 51983dadc6..701ba12ce1 100644 --- a/crates/ruff_python_formatter/src/statement/stmt_for.rs +++ b/crates/ruff_python_formatter/src/statement/stmt_for.rs @@ -6,8 +6,8 @@ use crate::prelude::*; use crate::{FormatNodeRule, PyFormatter}; use ruff_formatter::{format_args, write, Buffer, FormatResult}; use ruff_python_ast::node::AnyNodeRef; +use ruff_python_ast::{Expr, Ranged, Stmt, StmtAsyncFor, StmtFor, Suite}; use ruff_text_size::TextRange; -use rustpython_ast::{Expr, Ranged, Stmt, StmtAsyncFor, StmtFor, Suite}; #[derive(Debug)] struct ExprTupleWithoutParentheses<'a>(&'a Expr); diff --git a/crates/ruff_python_formatter/src/statement/stmt_function_def.rs b/crates/ruff_python_formatter/src/statement/stmt_function_def.rs index fb717bf897..91b20899ca 100644 --- a/crates/ruff_python_formatter/src/statement/stmt_function_def.rs +++ b/crates/ruff_python_formatter/src/statement/stmt_function_def.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Ranged, StmtFunctionDef}; +use ruff_python_ast::{Ranged, StmtFunctionDef}; use ruff_formatter::{write, FormatOwnedWithRule, FormatRefWithRule}; use ruff_python_ast::function::AnyFunctionDefinition; diff --git a/crates/ruff_python_formatter/src/statement/stmt_global.rs b/crates/ruff_python_formatter/src/statement/stmt_global.rs index 7946d0da7b..cf5ec1db92 100644 --- a/crates/ruff_python_formatter/src/statement/stmt_global.rs +++ b/crates/ruff_python_formatter/src/statement/stmt_global.rs @@ -1,6 +1,6 @@ use crate::{not_yet_implemented, FormatNodeRule, PyFormatter}; use ruff_formatter::{write, Buffer, FormatResult}; -use rustpython_ast::StmtGlobal; +use ruff_python_ast::StmtGlobal; #[derive(Default)] pub struct FormatStmtGlobal; diff --git a/crates/ruff_python_formatter/src/statement/stmt_if.rs b/crates/ruff_python_formatter/src/statement/stmt_if.rs index 9567d13251..7eb8652fc0 100644 --- a/crates/ruff_python_formatter/src/statement/stmt_if.rs +++ b/crates/ruff_python_formatter/src/statement/stmt_if.rs @@ -5,7 +5,7 @@ use crate::prelude::*; use crate::FormatNodeRule; use ruff_formatter::write; use ruff_python_ast::node::AnyNodeRef; -use rustpython_ast::{ElifElseClause, StmtIf}; +use ruff_python_ast::{ElifElseClause, StmtIf}; #[derive(Default)] pub struct FormatStmtIf; diff --git a/crates/ruff_python_formatter/src/statement/stmt_import.rs b/crates/ruff_python_formatter/src/statement/stmt_import.rs index 9187c1f8c4..ea781db625 100644 --- a/crates/ruff_python_formatter/src/statement/stmt_import.rs +++ b/crates/ruff_python_formatter/src/statement/stmt_import.rs @@ -1,7 +1,7 @@ use crate::{FormatNodeRule, FormattedIterExt, PyFormatter}; use ruff_formatter::prelude::{format_args, format_with, space, text}; use ruff_formatter::{write, Buffer, FormatResult}; -use rustpython_ast::StmtImport; +use ruff_python_ast::StmtImport; #[derive(Default)] pub struct FormatStmtImport; diff --git a/crates/ruff_python_formatter/src/statement/stmt_import_from.rs b/crates/ruff_python_formatter/src/statement/stmt_import_from.rs index 45d985a744..e6164aa66d 100644 --- a/crates/ruff_python_formatter/src/statement/stmt_import_from.rs +++ b/crates/ruff_python_formatter/src/statement/stmt_import_from.rs @@ -2,7 +2,7 @@ use crate::builders::{parenthesize_if_expands, PyFormatterExtensions}; use crate::{AsFormat, FormatNodeRule, PyFormatter}; use ruff_formatter::prelude::{dynamic_text, format_with, space, text}; use ruff_formatter::{write, Buffer, Format, FormatResult}; -use rustpython_ast::{Ranged, StmtImportFrom}; +use ruff_python_ast::{Ranged, StmtImportFrom}; #[derive(Default)] pub struct FormatStmtImportFrom; diff --git a/crates/ruff_python_formatter/src/statement/stmt_match.rs b/crates/ruff_python_formatter/src/statement/stmt_match.rs index a70775bdda..073acc1722 100644 --- a/crates/ruff_python_formatter/src/statement/stmt_match.rs +++ b/crates/ruff_python_formatter/src/statement/stmt_match.rs @@ -1,6 +1,6 @@ use crate::{not_yet_implemented, FormatNodeRule, PyFormatter}; use ruff_formatter::{write, Buffer, FormatResult}; -use rustpython_ast::StmtMatch; +use ruff_python_ast::StmtMatch; #[derive(Default)] pub struct FormatStmtMatch; diff --git a/crates/ruff_python_formatter/src/statement/stmt_nonlocal.rs b/crates/ruff_python_formatter/src/statement/stmt_nonlocal.rs index 22d1e0adf2..e1cb22cfbd 100644 --- a/crates/ruff_python_formatter/src/statement/stmt_nonlocal.rs +++ b/crates/ruff_python_formatter/src/statement/stmt_nonlocal.rs @@ -1,6 +1,6 @@ use crate::{not_yet_implemented, FormatNodeRule, PyFormatter}; use ruff_formatter::{write, Buffer, FormatResult}; -use rustpython_ast::StmtNonlocal; +use ruff_python_ast::StmtNonlocal; #[derive(Default)] pub struct FormatStmtNonlocal; diff --git a/crates/ruff_python_formatter/src/statement/stmt_pass.rs b/crates/ruff_python_formatter/src/statement/stmt_pass.rs index 12dfef06cf..18afe6bbb6 100644 --- a/crates/ruff_python_formatter/src/statement/stmt_pass.rs +++ b/crates/ruff_python_formatter/src/statement/stmt_pass.rs @@ -1,7 +1,7 @@ use crate::{FormatNodeRule, PyFormatter}; use ruff_formatter::prelude::text; use ruff_formatter::{Format, FormatResult}; -use rustpython_ast::StmtPass; +use ruff_python_ast::StmtPass; #[derive(Default)] pub struct FormatStmtPass; diff --git a/crates/ruff_python_formatter/src/statement/stmt_raise.rs b/crates/ruff_python_formatter/src/statement/stmt_raise.rs index f032b2d4e1..411b6e1b8f 100644 --- a/crates/ruff_python_formatter/src/statement/stmt_raise.rs +++ b/crates/ruff_python_formatter/src/statement/stmt_raise.rs @@ -4,7 +4,7 @@ use ruff_formatter::prelude::{space, text}; use ruff_formatter::{write, Buffer, Format, FormatResult}; use crate::expression::maybe_parenthesize_expression; -use rustpython_ast::StmtRaise; +use ruff_python_ast::StmtRaise; #[derive(Default)] pub struct FormatStmtRaise; diff --git a/crates/ruff_python_formatter/src/statement/stmt_return.rs b/crates/ruff_python_formatter/src/statement/stmt_return.rs index 8678e008c9..01b6e2bec9 100644 --- a/crates/ruff_python_formatter/src/statement/stmt_return.rs +++ b/crates/ruff_python_formatter/src/statement/stmt_return.rs @@ -3,7 +3,7 @@ use crate::expression::parentheses::Parenthesize; use crate::{FormatNodeRule, PyFormatter}; use ruff_formatter::prelude::{space, text}; use ruff_formatter::{write, Buffer, Format, FormatResult}; -use rustpython_ast::StmtReturn; +use ruff_python_ast::StmtReturn; #[derive(Default)] pub struct FormatStmtReturn; diff --git a/crates/ruff_python_formatter/src/statement/stmt_try.rs b/crates/ruff_python_formatter/src/statement/stmt_try.rs index dfae2975fd..57f30dd09f 100644 --- a/crates/ruff_python_formatter/src/statement/stmt_try.rs +++ b/crates/ruff_python_formatter/src/statement/stmt_try.rs @@ -9,8 +9,8 @@ use crate::{FormatNodeRule, PyFormatter}; use ruff_formatter::FormatRuleWithOptions; use ruff_formatter::{write, Buffer, FormatResult}; use ruff_python_ast::node::AnyNodeRef; +use ruff_python_ast::{ExceptHandler, Ranged, StmtTry, StmtTryStar, Suite}; use ruff_text_size::TextRange; -use rustpython_ast::{ExceptHandler, Ranged, StmtTry, StmtTryStar, Suite}; pub(super) enum AnyStatementTry<'a> { Try(&'a StmtTry), diff --git a/crates/ruff_python_formatter/src/statement/stmt_try_star.rs b/crates/ruff_python_formatter/src/statement/stmt_try_star.rs index 888c848433..3c20fc42ee 100644 --- a/crates/ruff_python_formatter/src/statement/stmt_try_star.rs +++ b/crates/ruff_python_formatter/src/statement/stmt_try_star.rs @@ -2,7 +2,7 @@ use crate::statement::stmt_try::AnyStatementTry; use crate::{FormatNodeRule, PyFormatter}; use ruff_formatter::Format; use ruff_formatter::FormatResult; -use rustpython_ast::StmtTryStar; +use ruff_python_ast::StmtTryStar; #[derive(Default)] pub struct FormatStmtTryStar; diff --git a/crates/ruff_python_formatter/src/statement/stmt_type_alias.rs b/crates/ruff_python_formatter/src/statement/stmt_type_alias.rs index 292545c182..d731ed2de4 100644 --- a/crates/ruff_python_formatter/src/statement/stmt_type_alias.rs +++ b/crates/ruff_python_formatter/src/statement/stmt_type_alias.rs @@ -1,6 +1,6 @@ use crate::{not_yet_implemented_custom_text, FormatNodeRule, PyFormatter}; use ruff_formatter::{write, Buffer, FormatResult}; -use rustpython_ast::StmtTypeAlias; +use ruff_python_ast::StmtTypeAlias; #[derive(Default)] pub struct FormatStmtTypeAlias; diff --git a/crates/ruff_python_formatter/src/statement/stmt_while.rs b/crates/ruff_python_formatter/src/statement/stmt_while.rs index 64473f0dd7..3ee9e1a7a3 100644 --- a/crates/ruff_python_formatter/src/statement/stmt_while.rs +++ b/crates/ruff_python_formatter/src/statement/stmt_while.rs @@ -5,7 +5,7 @@ use crate::prelude::*; use crate::FormatNodeRule; use ruff_formatter::write; use ruff_python_ast::node::AstNode; -use rustpython_ast::{Ranged, Stmt, StmtWhile}; +use ruff_python_ast::{Ranged, Stmt, StmtWhile}; #[derive(Default)] pub struct FormatStmtWhile; diff --git a/crates/ruff_python_formatter/src/statement/stmt_with.rs b/crates/ruff_python_formatter/src/statement/stmt_with.rs index d35170bb7c..4cb4d2f504 100644 --- a/crates/ruff_python_formatter/src/statement/stmt_with.rs +++ b/crates/ruff_python_formatter/src/statement/stmt_with.rs @@ -1,5 +1,5 @@ +use ruff_python_ast::{Ranged, StmtAsyncWith, StmtWith, Suite, WithItem}; use ruff_text_size::TextRange; -use rustpython_ast::{Ranged, StmtAsyncWith, StmtWith, Suite, WithItem}; use ruff_formatter::{format_args, write, FormatError}; use ruff_python_ast::node::AnyNodeRef; diff --git a/crates/ruff_python_formatter/src/statement/suite.rs b/crates/ruff_python_formatter/src/statement/suite.rs index 1d8d1ef8c0..bee3f00127 100644 --- a/crates/ruff_python_formatter/src/statement/suite.rs +++ b/crates/ruff_python_formatter/src/statement/suite.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{Ranged, Stmt, Suite}; +use ruff_python_ast::{Ranged, Stmt, Suite}; use ruff_formatter::{ format_args, write, FormatOwnedWithRule, FormatRefWithRule, FormatRuleWithOptions, @@ -170,8 +170,8 @@ impl<'ast> IntoFormat> for Suite { #[cfg(test)] mod tests { - use rustpython_ast::Suite; - use rustpython_parser::Parse; + use ruff_python_ast::Suite; + use ruff_python_parser::Parse; use ruff_formatter::format; diff --git a/crates/ruff_python_index/Cargo.toml b/crates/ruff_python_index/Cargo.toml index f94cb0b7f1..10d8813ce4 100644 --- a/crates/ruff_python_index/Cargo.toml +++ b/crates/ruff_python_index/Cargo.toml @@ -14,11 +14,13 @@ license = { workspace = true } [dependencies] ruff_python_trivia = { path = "../ruff_python_trivia" } -rustpython-parser = { workspace = true } -ruff_text_size = { workspace = true } + +ruff_python_ast = { path = "../ruff_python_ast" } +ruff_python_parser = { path = "../ruff_python_parser" } ruff_source_file = { path = "../ruff_source_file" } +ruff_text_size = { path = "../ruff_text_size" } itertools = { workspace = true } -rustpython-ast = { workspace = true } + [dev-dependencies] diff --git a/crates/ruff_python_index/src/comment_ranges.rs b/crates/ruff_python_index/src/comment_ranges.rs index 1c296666eb..16e778c2a8 100644 --- a/crates/ruff_python_index/src/comment_ranges.rs +++ b/crates/ruff_python_index/src/comment_ranges.rs @@ -2,8 +2,8 @@ use itertools::Itertools; use std::fmt::{Debug, Formatter}; use std::ops::Deref; +use ruff_python_parser::Tok; use ruff_text_size::TextRange; -use rustpython_parser::Tok; /// Stores the ranges of comments sorted by [`TextRange::start`] in increasing order. No two ranges are overlapping. #[derive(Clone)] diff --git a/crates/ruff_python_index/src/indexer.rs b/crates/ruff_python_index/src/indexer.rs index 28f3b2b9cf..2bbb6de303 100644 --- a/crates/ruff_python_index/src/indexer.rs +++ b/crates/ruff_python_index/src/indexer.rs @@ -1,11 +1,11 @@ //! Struct used to index source code, to enable efficient lookup of tokens that //! are omitted from the AST (e.g., commented lines). +use ruff_python_ast::{Ranged, Stmt}; +use ruff_python_parser::lexer::LexResult; +use ruff_python_parser::{StringKind, Tok}; use ruff_python_trivia::{has_leading_content, has_trailing_content, is_python_whitespace}; use ruff_text_size::{TextRange, TextSize}; -use rustpython_ast::{Ranged, Stmt}; -use rustpython_parser::lexer::LexResult; -use rustpython_parser::{StringKind, Tok}; use super::comment_ranges::{CommentRanges, CommentRangesBuilder}; use ruff_source_file::Locator; @@ -264,9 +264,9 @@ impl Indexer { #[cfg(test)] mod tests { + use ruff_python_parser::lexer::LexResult; + use ruff_python_parser::{lexer, Mode}; use ruff_text_size::{TextRange, TextSize}; - use rustpython_parser::lexer::LexResult; - use rustpython_parser::{lexer, Mode}; use crate::Indexer; use ruff_source_file::Locator; diff --git a/crates/ruff_python_literal/Cargo.toml b/crates/ruff_python_literal/Cargo.toml new file mode 100644 index 0000000000..819dd59149 --- /dev/null +++ b/crates/ruff_python_literal/Cargo.toml @@ -0,0 +1,25 @@ +[package] +name = "ruff_python_literal" +version = "0.0.0" +publish = false +description = "Common literal handling utilities mostly useful for unparse and repr." +authors = ["Charlie Marsh ", "RustPython Team"] +edition = { workspace = true } +rust-version = { workspace = true } +homepage = { workspace = true } +documentation = { workspace = true } +repository = { workspace = true } +license = { workspace = true } + +[dependencies] +bitflags = { workspace = true } +hexf-parse = "0.2.1" +is-macro.workspace = true +itertools = { workspace = true } +lexical-parse-float = { version = "0.8.0", features = ["format"] } +num-bigint = { workspace = true } +num-traits = { workspace = true } +unic-ucd-category = "0.9" + +[dev-dependencies] +rand = "0.8.5" diff --git a/crates/ruff_python_literal/src/cformat.rs b/crates/ruff_python_literal/src/cformat.rs new file mode 100644 index 0000000000..f0aa883bdc --- /dev/null +++ b/crates/ruff_python_literal/src/cformat.rs @@ -0,0 +1,1046 @@ +//! Implementation of Printf-Style string formatting +//! as per the [Python Docs](https://docs.python.org/3/library/stdtypes.html#printf-style-string-formatting). +use bitflags::bitflags; +use num_traits::Signed; +use std::{ + cmp, fmt, + iter::{Enumerate, Peekable}, + str::FromStr, +}; + +use crate::{float, Case}; +use num_bigint::{BigInt, Sign}; + +#[derive(Debug, PartialEq)] +pub enum CFormatErrorType { + UnmatchedKeyParentheses, + MissingModuloSign, + UnsupportedFormatChar(char), + IncompleteFormat, + IntTooBig, + // Unimplemented, +} + +// also contains how many chars the parsing function consumed +pub type ParsingError = (CFormatErrorType, usize); + +#[derive(Debug, PartialEq)] +pub struct CFormatError { + pub typ: CFormatErrorType, // FIXME + pub index: usize, +} + +impl fmt::Display for CFormatError { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + use CFormatErrorType::{ + IncompleteFormat, IntTooBig, UnmatchedKeyParentheses, UnsupportedFormatChar, + }; + match self.typ { + UnmatchedKeyParentheses => write!(f, "incomplete format key"), + IncompleteFormat => write!(f, "incomplete format"), + UnsupportedFormatChar(c) => write!( + f, + "unsupported format character '{}' ({:#x}) at index {}", + c, c as u32, self.index + ), + IntTooBig => write!(f, "width/precision too big"), + CFormatErrorType::MissingModuloSign => { + write!(f, "unexpected error parsing format string") + } + } + } +} + +pub type CFormatConversion = super::format::FormatConversion; + +#[derive(Debug, PartialEq)] +pub enum CNumberType { + Decimal, + Octal, + Hex(Case), +} + +#[derive(Debug, PartialEq)] +pub enum CFloatType { + Exponent(Case), + PointDecimal(Case), + General(Case), +} + +#[derive(Debug, PartialEq)] +pub enum CFormatType { + Number(CNumberType), + Float(CFloatType), + Character, + String(CFormatConversion), +} + +#[derive(Debug, PartialEq)] +pub enum CFormatPrecision { + Quantity(CFormatQuantity), + Dot, +} + +impl From for CFormatPrecision { + fn from(quantity: CFormatQuantity) -> Self { + CFormatPrecision::Quantity(quantity) + } +} + +bitflags! { + #[derive(Copy, Clone, Debug, PartialEq)] + pub struct CConversionFlags: u32 { + const ALTERNATE_FORM = 0b0000_0001; + const ZERO_PAD = 0b0000_0010; + const LEFT_ADJUST = 0b0000_0100; + const BLANK_SIGN = 0b0000_1000; + const SIGN_CHAR = 0b0001_0000; + } +} + +impl CConversionFlags { + #[inline] + pub fn sign_string(&self) -> &'static str { + if self.contains(CConversionFlags::SIGN_CHAR) { + "+" + } else if self.contains(CConversionFlags::BLANK_SIGN) { + " " + } else { + "" + } + } +} + +#[derive(Debug, PartialEq)] +pub enum CFormatQuantity { + Amount(usize), + FromValuesTuple, +} + +#[derive(Debug, PartialEq)] +pub struct CFormatSpec { + pub mapping_key: Option, + pub flags: CConversionFlags, + pub min_field_width: Option, + pub precision: Option, + pub format_type: CFormatType, + pub format_char: char, + // chars_consumed: usize, +} + +impl FromStr for CFormatSpec { + type Err = ParsingError; + + fn from_str(text: &str) -> Result { + let mut chars = text.chars().enumerate().peekable(); + if chars.next().map(|x| x.1) != Some('%') { + return Err((CFormatErrorType::MissingModuloSign, 1)); + } + + CFormatSpec::parse(&mut chars) + } +} + +pub type ParseIter = Peekable>; + +impl CFormatSpec { + pub fn parse(iter: &mut ParseIter) -> Result + where + T: Into + Copy, + I: Iterator, + { + let mapping_key = parse_spec_mapping_key(iter)?; + let flags = parse_flags(iter); + let min_field_width = parse_quantity(iter)?; + let precision = parse_precision(iter)?; + consume_length(iter); + let (format_type, format_char) = parse_format_type(iter)?; + + Ok(CFormatSpec { + mapping_key, + flags, + min_field_width, + precision, + format_type, + format_char, + }) + } + + fn compute_fill_string(fill_char: char, fill_chars_needed: usize) -> String { + (0..fill_chars_needed) + .map(|_| fill_char) + .collect::() + } + + fn fill_string( + &self, + string: String, + fill_char: char, + num_prefix_chars: Option, + ) -> String { + let mut num_chars = string.chars().count(); + if let Some(num_prefix_chars) = num_prefix_chars { + num_chars += num_prefix_chars; + } + let num_chars = num_chars; + + let width = match &self.min_field_width { + Some(CFormatQuantity::Amount(width)) => cmp::max(width, &num_chars), + _ => &num_chars, + }; + let fill_chars_needed = width.saturating_sub(num_chars); + let fill_string = CFormatSpec::compute_fill_string(fill_char, fill_chars_needed); + + if fill_string.is_empty() { + string + } else { + if self.flags.contains(CConversionFlags::LEFT_ADJUST) { + format!("{string}{fill_string}") + } else { + format!("{fill_string}{string}") + } + } + } + + fn fill_string_with_precision(&self, string: String, fill_char: char) -> String { + let num_chars = string.chars().count(); + + let width = match &self.precision { + Some(CFormatPrecision::Quantity(CFormatQuantity::Amount(width))) => { + cmp::max(width, &num_chars) + } + _ => &num_chars, + }; + let fill_chars_needed = width.saturating_sub(num_chars); + let fill_string = CFormatSpec::compute_fill_string(fill_char, fill_chars_needed); + + if fill_string.is_empty() { + string + } else { + // Don't left-adjust if precision-filling: that will always be prepending 0s to %d + // arguments, the LEFT_ADJUST flag will be used by a later call to fill_string with + // the 0-filled string as the string param. + format!("{fill_string}{string}") + } + } + + fn format_string_with_precision( + &self, + string: String, + precision: Option<&CFormatPrecision>, + ) -> String { + // truncate if needed + let string = match precision { + Some(CFormatPrecision::Quantity(CFormatQuantity::Amount(precision))) + if string.chars().count() > *precision => + { + string.chars().take(*precision).collect::() + } + Some(CFormatPrecision::Dot) => { + // truncate to 0 + String::new() + } + _ => string, + }; + self.fill_string(string, ' ', None) + } + + #[inline] + pub fn format_string(&self, string: String) -> String { + self.format_string_with_precision(string, self.precision.as_ref()) + } + + #[inline] + pub fn format_char(&self, ch: char) -> String { + self.format_string_with_precision( + ch.to_string(), + Some(&(CFormatQuantity::Amount(1).into())), + ) + } + + pub fn format_bytes(&self, bytes: &[u8]) -> Vec { + let bytes = if let Some(CFormatPrecision::Quantity(CFormatQuantity::Amount(precision))) = + self.precision + { + &bytes[..cmp::min(bytes.len(), precision)] + } else { + bytes + }; + if let Some(CFormatQuantity::Amount(width)) = self.min_field_width { + let fill = cmp::max(0, width - bytes.len()); + let mut v = Vec::with_capacity(bytes.len() + fill); + if self.flags.contains(CConversionFlags::LEFT_ADJUST) { + v.extend_from_slice(bytes); + v.append(&mut vec![b' '; fill]); + } else { + v.append(&mut vec![b' '; fill]); + v.extend_from_slice(bytes); + } + v + } else { + bytes.to_vec() + } + } + + pub fn format_number(&self, num: &BigInt) -> String { + use CNumberType::{Decimal, Hex, Octal}; + let magnitude = num.abs(); + let prefix = if self.flags.contains(CConversionFlags::ALTERNATE_FORM) { + match self.format_type { + CFormatType::Number(Octal) => "0o", + CFormatType::Number(Hex(Case::Lower)) => "0x", + CFormatType::Number(Hex(Case::Upper)) => "0X", + _ => "", + } + } else { + "" + }; + + let magnitude_string: String = match self.format_type { + CFormatType::Number(Decimal) => magnitude.to_str_radix(10), + CFormatType::Number(Octal) => magnitude.to_str_radix(8), + CFormatType::Number(Hex(Case::Lower)) => magnitude.to_str_radix(16), + CFormatType::Number(Hex(Case::Upper)) => { + let mut result = magnitude.to_str_radix(16); + result.make_ascii_uppercase(); + result + } + _ => unreachable!(), // Should not happen because caller has to make sure that this is a number + }; + + let sign_string = match num.sign() { + Sign::Minus => "-", + _ => self.flags.sign_string(), + }; + + let padded_magnitude_string = self.fill_string_with_precision(magnitude_string, '0'); + + if self.flags.contains(CConversionFlags::ZERO_PAD) { + let fill_char = if self.flags.contains(CConversionFlags::LEFT_ADJUST) { + ' ' // '-' overrides the '0' conversion if both are given + } else { + '0' + }; + let signed_prefix = format!("{sign_string}{prefix}"); + format!( + "{}{}", + signed_prefix, + self.fill_string( + padded_magnitude_string, + fill_char, + Some(signed_prefix.chars().count()), + ), + ) + } else { + self.fill_string( + format!("{sign_string}{prefix}{padded_magnitude_string}"), + ' ', + None, + ) + } + } + + pub fn format_float(&self, num: f64) -> String { + let sign_string = if num.is_sign_negative() && !num.is_nan() { + "-" + } else { + self.flags.sign_string() + }; + + let precision = match &self.precision { + Some(CFormatPrecision::Quantity(quantity)) => match quantity { + CFormatQuantity::Amount(amount) => *amount, + CFormatQuantity::FromValuesTuple => 6, + }, + Some(CFormatPrecision::Dot) => 0, + None => 6, + }; + + let magnitude_string = match &self.format_type { + CFormatType::Float(CFloatType::PointDecimal(case)) => { + let magnitude = num.abs(); + float::format_fixed( + precision, + magnitude, + *case, + self.flags.contains(CConversionFlags::ALTERNATE_FORM), + ) + } + CFormatType::Float(CFloatType::Exponent(case)) => { + let magnitude = num.abs(); + float::format_exponent( + precision, + magnitude, + *case, + self.flags.contains(CConversionFlags::ALTERNATE_FORM), + ) + } + CFormatType::Float(CFloatType::General(case)) => { + let precision = if precision == 0 { 1 } else { precision }; + let magnitude = num.abs(); + float::format_general( + precision, + magnitude, + *case, + self.flags.contains(CConversionFlags::ALTERNATE_FORM), + false, + ) + } + _ => unreachable!(), + }; + + if self.flags.contains(CConversionFlags::ZERO_PAD) { + let fill_char = if self.flags.contains(CConversionFlags::LEFT_ADJUST) { + ' ' + } else { + '0' + }; + format!( + "{}{}", + sign_string, + self.fill_string( + magnitude_string, + fill_char, + Some(sign_string.chars().count()), + ) + ) + } else { + self.fill_string(format!("{sign_string}{magnitude_string}"), ' ', None) + } + } +} + +fn parse_spec_mapping_key(iter: &mut ParseIter) -> Result, ParsingError> +where + T: Into + Copy, + I: Iterator, +{ + if let Some(&(index, c)) = iter.peek() { + if c.into() == '(' { + iter.next().unwrap(); + return match parse_text_inside_parentheses(iter) { + Some(key) => Ok(Some(key)), + None => Err((CFormatErrorType::UnmatchedKeyParentheses, index)), + }; + } + } + Ok(None) +} + +fn parse_flags(iter: &mut ParseIter) -> CConversionFlags +where + T: Into + Copy, + I: Iterator, +{ + let mut flags = CConversionFlags::empty(); + while let Some(&(_, c)) = iter.peek() { + let flag = match c.into() { + '#' => CConversionFlags::ALTERNATE_FORM, + '0' => CConversionFlags::ZERO_PAD, + '-' => CConversionFlags::LEFT_ADJUST, + ' ' => CConversionFlags::BLANK_SIGN, + '+' => CConversionFlags::SIGN_CHAR, + _ => break, + }; + iter.next().unwrap(); + flags |= flag; + } + flags +} + +fn consume_length(iter: &mut ParseIter) +where + T: Into + Copy, + I: Iterator, +{ + if let Some(&(_, c)) = iter.peek() { + let c = c.into(); + if c == 'h' || c == 'l' || c == 'L' { + iter.next().unwrap(); + } + } +} + +fn parse_format_type(iter: &mut ParseIter) -> Result<(CFormatType, char), ParsingError> +where + T: Into, + I: Iterator, +{ + use CFloatType::{Exponent, General, PointDecimal}; + use CNumberType::{Decimal, Hex, Octal}; + let (index, c) = match iter.next() { + Some((index, c)) => (index, c.into()), + None => { + return Err(( + CFormatErrorType::IncompleteFormat, + iter.peek().map_or(0, |x| x.0), + )); + } + }; + let format_type = match c { + 'd' | 'i' | 'u' => CFormatType::Number(Decimal), + 'o' => CFormatType::Number(Octal), + 'x' => CFormatType::Number(Hex(Case::Lower)), + 'X' => CFormatType::Number(Hex(Case::Upper)), + 'e' => CFormatType::Float(Exponent(Case::Lower)), + 'E' => CFormatType::Float(Exponent(Case::Upper)), + 'f' => CFormatType::Float(PointDecimal(Case::Lower)), + 'F' => CFormatType::Float(PointDecimal(Case::Upper)), + 'g' => CFormatType::Float(General(Case::Lower)), + 'G' => CFormatType::Float(General(Case::Upper)), + 'c' => CFormatType::Character, + 'r' => CFormatType::String(CFormatConversion::Repr), + 's' => CFormatType::String(CFormatConversion::Str), + 'b' => CFormatType::String(CFormatConversion::Bytes), + 'a' => CFormatType::String(CFormatConversion::Ascii), + _ => return Err((CFormatErrorType::UnsupportedFormatChar(c), index)), + }; + Ok((format_type, c)) +} + +#[allow(clippy::cast_possible_wrap)] +fn parse_quantity(iter: &mut ParseIter) -> Result, ParsingError> +where + T: Into + Copy, + I: Iterator, +{ + if let Some(&(_, c)) = iter.peek() { + let c: char = c.into(); + if c == '*' { + iter.next().unwrap(); + return Ok(Some(CFormatQuantity::FromValuesTuple)); + } + if let Some(i) = c.to_digit(10) { + let mut num = i as i32; + iter.next().unwrap(); + while let Some(&(index, c)) = iter.peek() { + if let Some(i) = c.into().to_digit(10) { + num = num + .checked_mul(10) + .and_then(|num| num.checked_add(i as i32)) + .ok_or((CFormatErrorType::IntTooBig, index))?; + iter.next().unwrap(); + } else { + break; + } + } + return Ok(Some(CFormatQuantity::Amount(num.unsigned_abs() as usize))); + } + } + Ok(None) +} + +fn parse_precision(iter: &mut ParseIter) -> Result, ParsingError> +where + T: Into + Copy, + I: Iterator, +{ + if let Some(&(_, c)) = iter.peek() { + if c.into() == '.' { + iter.next().unwrap(); + let quantity = parse_quantity(iter)?; + let precision = quantity.map_or(CFormatPrecision::Dot, CFormatPrecision::Quantity); + return Ok(Some(precision)); + } + } + Ok(None) +} + +fn parse_text_inside_parentheses(iter: &mut ParseIter) -> Option +where + T: Into, + I: Iterator, +{ + let mut counter: i32 = 1; + let mut contained_text = String::new(); + loop { + let (_, c) = iter.next()?; + let c = c.into(); + match c { + _ if c == '(' => { + counter += 1; + } + _ if c == ')' => { + counter -= 1; + } + _ => (), + } + + if counter > 0 { + contained_text.push(c); + } else { + break; + } + } + + Some(contained_text) +} + +#[derive(Debug, PartialEq)] +pub enum CFormatPart { + Literal(T), + Spec(CFormatSpec), +} + +impl CFormatPart { + #[inline] + pub fn is_specifier(&self) -> bool { + matches!(self, CFormatPart::Spec(_)) + } + + #[inline] + pub fn has_key(&self) -> bool { + match self { + CFormatPart::Spec(s) => s.mapping_key.is_some(), + CFormatPart::Literal(_) => false, + } + } +} + +#[derive(Debug, PartialEq)] +pub struct CFormatStrOrBytes { + parts: Vec<(usize, CFormatPart)>, +} + +impl CFormatStrOrBytes { + pub fn check_specifiers(&self) -> Option<(usize, bool)> { + let mut count = 0; + let mut mapping_required = false; + for (_, part) in &self.parts { + if part.is_specifier() { + let has_key = part.has_key(); + if count == 0 { + mapping_required = has_key; + } else if mapping_required != has_key { + return None; + } + count += 1; + } + } + Some((count, mapping_required)) + } + + #[inline] + pub fn iter(&self) -> impl Iterator)> { + self.parts.iter() + } + + #[inline] + pub fn iter_mut(&mut self) -> impl Iterator)> { + self.parts.iter_mut() + } +} + +pub type CFormatBytes = CFormatStrOrBytes>; + +impl CFormatBytes { + pub fn parse>(iter: &mut ParseIter) -> Result { + let mut parts = vec![]; + let mut literal = vec![]; + let mut part_index = 0; + while let Some((index, c)) = iter.next() { + if c == b'%' { + if let Some(&(_, second)) = iter.peek() { + if second == b'%' { + iter.next().unwrap(); + literal.push(b'%'); + continue; + } + if !literal.is_empty() { + parts.push(( + part_index, + CFormatPart::Literal(std::mem::take(&mut literal)), + )); + } + let spec = CFormatSpec::parse(iter).map_err(|err| CFormatError { + typ: err.0, + index: err.1, + })?; + parts.push((index, CFormatPart::Spec(spec))); + if let Some(&(index, _)) = iter.peek() { + part_index = index; + } + } else { + return Err(CFormatError { + typ: CFormatErrorType::IncompleteFormat, + index: index + 1, + }); + } + } else { + literal.push(c); + } + } + if !literal.is_empty() { + parts.push((part_index, CFormatPart::Literal(literal))); + } + Ok(Self { parts }) + } + + pub fn parse_from_bytes(bytes: &[u8]) -> Result { + let mut iter = bytes.iter().copied().enumerate().peekable(); + Self::parse(&mut iter) + } +} + +pub type CFormatString = CFormatStrOrBytes; + +impl FromStr for CFormatString { + type Err = CFormatError; + + fn from_str(text: &str) -> Result { + let mut iter = text.chars().enumerate().peekable(); + Self::parse(&mut iter) + } +} + +impl CFormatString { + pub fn parse>(iter: &mut ParseIter) -> Result { + let mut parts = vec![]; + let mut literal = String::new(); + let mut part_index = 0; + while let Some((index, c)) = iter.next() { + if c == '%' { + if let Some(&(_, second)) = iter.peek() { + if second == '%' { + iter.next().unwrap(); + literal.push('%'); + continue; + } + if !literal.is_empty() { + parts.push(( + part_index, + CFormatPart::Literal(std::mem::take(&mut literal)), + )); + } + let spec = CFormatSpec::parse(iter).map_err(|err| CFormatError { + typ: err.0, + index: err.1, + })?; + parts.push((index, CFormatPart::Spec(spec))); + if let Some(&(index, _)) = iter.peek() { + part_index = index; + } + } else { + return Err(CFormatError { + typ: CFormatErrorType::IncompleteFormat, + index: index + 1, + }); + } + } else { + literal.push(c); + } + } + if !literal.is_empty() { + parts.push((part_index, CFormatPart::Literal(literal))); + } + Ok(Self { parts }) + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_fill_and_align() { + assert_eq!( + "%10s" + .parse::() + .unwrap() + .format_string("test".to_owned()), + " test".to_owned() + ); + assert_eq!( + "%-10s" + .parse::() + .unwrap() + .format_string("test".to_owned()), + "test ".to_owned() + ); + assert_eq!( + "%#10x" + .parse::() + .unwrap() + .format_number(&BigInt::from(0x1337)), + " 0x1337".to_owned() + ); + assert_eq!( + "%-#10x" + .parse::() + .unwrap() + .format_number(&BigInt::from(0x1337)), + "0x1337 ".to_owned() + ); + } + + #[test] + fn test_parse_key() { + let expected = Ok(CFormatSpec { + mapping_key: Some("amount".to_owned()), + format_type: CFormatType::Number(CNumberType::Decimal), + format_char: 'd', + min_field_width: None, + precision: None, + flags: CConversionFlags::empty(), + }); + assert_eq!("%(amount)d".parse::(), expected); + + let expected = Ok(CFormatSpec { + mapping_key: Some("m((u(((l((((ti))))p)))l))e".to_owned()), + format_type: CFormatType::Number(CNumberType::Decimal), + format_char: 'd', + min_field_width: None, + precision: None, + flags: CConversionFlags::empty(), + }); + assert_eq!( + "%(m((u(((l((((ti))))p)))l))e)d".parse::(), + expected + ); + } + + #[test] + fn test_format_parse_key_fail() { + assert_eq!( + "%(aged".parse::(), + Err(CFormatError { + typ: CFormatErrorType::UnmatchedKeyParentheses, + index: 1 + }) + ); + } + + #[test] + fn test_format_parse_type_fail() { + assert_eq!( + "Hello %n".parse::(), + Err(CFormatError { + typ: CFormatErrorType::UnsupportedFormatChar('n'), + index: 7 + }) + ); + } + + #[test] + fn test_incomplete_format_fail() { + assert_eq!( + "Hello %".parse::(), + Err(CFormatError { + typ: CFormatErrorType::IncompleteFormat, + index: 7 + }) + ); + } + + #[test] + fn test_parse_flags() { + let expected = Ok(CFormatSpec { + format_type: CFormatType::Number(CNumberType::Decimal), + format_char: 'd', + min_field_width: Some(CFormatQuantity::Amount(10)), + precision: None, + mapping_key: None, + flags: CConversionFlags::all(), + }); + let parsed = "% 0 -+++###10d".parse::(); + assert_eq!(parsed, expected); + assert_eq!( + parsed.unwrap().format_number(&BigInt::from(12)), + "+12 ".to_owned() + ); + } + + #[test] + fn test_parse_and_format_string() { + assert_eq!( + "%5.4s" + .parse::() + .unwrap() + .format_string("Hello, World!".to_owned()), + " Hell".to_owned() + ); + assert_eq!( + "%-5.4s" + .parse::() + .unwrap() + .format_string("Hello, World!".to_owned()), + "Hell ".to_owned() + ); + assert_eq!( + "%.s" + .parse::() + .unwrap() + .format_string("Hello, World!".to_owned()), + String::new() + ); + assert_eq!( + "%5.s" + .parse::() + .unwrap() + .format_string("Hello, World!".to_owned()), + " ".to_owned() + ); + } + + #[test] + fn test_parse_and_format_unicode_string() { + assert_eq!( + "%.2s" + .parse::() + .unwrap() + .format_string("❤❤❤❤❤❤❤❤".to_owned()), + "❤❤".to_owned() + ); + } + + #[test] + fn test_parse_and_format_number() { + assert_eq!( + "%5d" + .parse::() + .unwrap() + .format_number(&BigInt::from(27)), + " 27".to_owned() + ); + assert_eq!( + "%05d" + .parse::() + .unwrap() + .format_number(&BigInt::from(27)), + "00027".to_owned() + ); + assert_eq!( + "%.5d" + .parse::() + .unwrap() + .format_number(&BigInt::from(27)), + "00027".to_owned() + ); + assert_eq!( + "%+05d" + .parse::() + .unwrap() + .format_number(&BigInt::from(27)), + "+0027".to_owned() + ); + assert_eq!( + "%-d" + .parse::() + .unwrap() + .format_number(&BigInt::from(-27)), + "-27".to_owned() + ); + assert_eq!( + "% d" + .parse::() + .unwrap() + .format_number(&BigInt::from(27)), + " 27".to_owned() + ); + assert_eq!( + "% d" + .parse::() + .unwrap() + .format_number(&BigInt::from(-27)), + "-27".to_owned() + ); + assert_eq!( + "%08x" + .parse::() + .unwrap() + .format_number(&BigInt::from(0x1337)), + "00001337".to_owned() + ); + assert_eq!( + "%#010x" + .parse::() + .unwrap() + .format_number(&BigInt::from(0x1337)), + "0x00001337".to_owned() + ); + assert_eq!( + "%-#010x" + .parse::() + .unwrap() + .format_number(&BigInt::from(0x1337)), + "0x1337 ".to_owned() + ); + } + + #[test] + fn test_parse_and_format_float() { + assert_eq!( + "%f".parse::().unwrap().format_float(1.2345), + "1.234500" + ); + assert_eq!( + "%.2f".parse::().unwrap().format_float(1.2345), + "1.23" + ); + assert_eq!( + "%.f".parse::().unwrap().format_float(1.2345), + "1" + ); + assert_eq!( + "%+.f".parse::().unwrap().format_float(1.2345), + "+1" + ); + assert_eq!( + "%+f".parse::().unwrap().format_float(1.2345), + "+1.234500" + ); + assert_eq!( + "% f".parse::().unwrap().format_float(1.2345), + " 1.234500" + ); + assert_eq!( + "%f".parse::().unwrap().format_float(-1.2345), + "-1.234500" + ); + assert_eq!( + "%f".parse::() + .unwrap() + .format_float(1.234_567_890_1), + "1.234568" + ); + } + + #[test] + fn test_format_parse() { + let fmt = "Hello, my name is %s and I'm %d years old"; + let expected = Ok(CFormatString { + parts: vec![ + (0, CFormatPart::Literal("Hello, my name is ".to_owned())), + ( + 18, + CFormatPart::Spec(CFormatSpec { + format_type: CFormatType::String(CFormatConversion::Str), + format_char: 's', + mapping_key: None, + min_field_width: None, + precision: None, + flags: CConversionFlags::empty(), + }), + ), + (20, CFormatPart::Literal(" and I'm ".to_owned())), + ( + 29, + CFormatPart::Spec(CFormatSpec { + format_type: CFormatType::Number(CNumberType::Decimal), + format_char: 'd', + mapping_key: None, + min_field_width: None, + precision: None, + flags: CConversionFlags::empty(), + }), + ), + (31, CFormatPart::Literal(" years old".to_owned())), + ], + }); + let result = fmt.parse::(); + assert_eq!( + result, expected, + "left = {result:#?} \n\n\n right = {expected:#?}" + ); + } +} diff --git a/crates/ruff_python_literal/src/char.rs b/crates/ruff_python_literal/src/char.rs new file mode 100644 index 0000000000..cd64f6dfa9 --- /dev/null +++ b/crates/ruff_python_literal/src/char.rs @@ -0,0 +1,15 @@ +use unic_ucd_category::GeneralCategory; + +/// According to python following categories aren't printable: +/// * Cc (Other, Control) +/// * Cf (Other, Format) +/// * Cs (Other, Surrogate) +/// * Co (Other, Private Use) +/// * Cn (Other, Not Assigned) +/// * Zl Separator, Line ('\u2028', LINE SEPARATOR) +/// * Zp Separator, Paragraph ('\u2029', PARAGRAPH SEPARATOR) +/// * Zs (Separator, Space) other than ASCII space('\x20'). +pub fn is_printable(c: char) -> bool { + let cat = GeneralCategory::of(c); + !(cat.is_other() || cat.is_separator()) +} diff --git a/crates/ruff_python_literal/src/escape.rs b/crates/ruff_python_literal/src/escape.rs new file mode 100644 index 0000000000..c291e13034 --- /dev/null +++ b/crates/ruff_python_literal/src/escape.rs @@ -0,0 +1,457 @@ +#[derive(Debug, PartialEq, Eq, Copy, Clone, Hash, is_macro::Is)] +pub enum Quote { + Single, + Double, +} + +impl Quote { + #[inline] + #[must_use] + pub const fn swap(self) -> Self { + match self { + Quote::Single => Quote::Double, + Quote::Double => Quote::Single, + } + } + + #[inline] + pub const fn to_byte(&self) -> u8 { + match self { + Quote::Single => b'\'', + Quote::Double => b'"', + } + } + + #[inline] + pub const fn to_char(&self) -> char { + match self { + Quote::Single => '\'', + Quote::Double => '"', + } + } +} + +pub struct EscapeLayout { + pub quote: Quote, + pub len: Option, +} + +pub trait Escape { + fn source_len(&self) -> usize; + fn layout(&self) -> &EscapeLayout; + fn changed(&self) -> bool { + self.layout().len != Some(self.source_len()) + } + + fn write_source(&self, formatter: &mut impl std::fmt::Write) -> std::fmt::Result; + fn write_body_slow(&self, formatter: &mut impl std::fmt::Write) -> std::fmt::Result; + fn write_body(&self, formatter: &mut impl std::fmt::Write) -> std::fmt::Result { + if self.changed() { + self.write_body_slow(formatter) + } else { + self.write_source(formatter) + } + } +} + +/// Returns the outer quotes to use and the number of quotes that need to be +/// escaped. +pub(crate) const fn choose_quote( + single_count: usize, + double_count: usize, + preferred_quote: Quote, +) -> (Quote, usize) { + let (primary_count, secondary_count) = match preferred_quote { + Quote::Single => (single_count, double_count), + Quote::Double => (double_count, single_count), + }; + + // always use primary unless we have primary but no secondary + let use_secondary = primary_count > 0 && secondary_count == 0; + if use_secondary { + (preferred_quote.swap(), secondary_count) + } else { + (preferred_quote, primary_count) + } +} + +pub struct UnicodeEscape<'a> { + source: &'a str, + layout: EscapeLayout, +} + +impl<'a> UnicodeEscape<'a> { + #[inline] + pub fn with_forced_quote(source: &'a str, quote: Quote) -> Self { + let layout = EscapeLayout { quote, len: None }; + Self { source, layout } + } + #[inline] + pub fn with_preferred_quote(source: &'a str, quote: Quote) -> Self { + let layout = Self::repr_layout(source, quote); + Self { source, layout } + } + #[inline] + pub fn new_repr(source: &'a str) -> Self { + Self::with_preferred_quote(source, Quote::Single) + } + #[inline] + pub fn str_repr<'r>(&'a self) -> StrRepr<'r, 'a> { + StrRepr(self) + } +} + +pub struct StrRepr<'r, 'a>(&'r UnicodeEscape<'a>); + +impl StrRepr<'_, '_> { + pub fn write(&self, formatter: &mut impl std::fmt::Write) -> std::fmt::Result { + let quote = self.0.layout().quote.to_char(); + formatter.write_char(quote)?; + self.0.write_body(formatter)?; + formatter.write_char(quote) + } + + pub fn to_string(&self) -> Option { + let mut s = String::with_capacity(self.0.layout().len?); + self.write(&mut s).unwrap(); + Some(s) + } +} + +impl std::fmt::Display for StrRepr<'_, '_> { + fn fmt(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + self.write(formatter) + } +} + +impl UnicodeEscape<'_> { + const REPR_RESERVED_LEN: usize = 2; // for quotes + + #[allow( + clippy::cast_possible_wrap, + clippy::cast_possible_truncation, + clippy::cast_sign_loss + )] + pub fn repr_layout(source: &str, preferred_quote: Quote) -> EscapeLayout { + Self::output_layout_with_checker(source, preferred_quote, |a, b| { + Some((a as isize).checked_add(b as isize)? as usize) + }) + } + + fn output_layout_with_checker( + source: &str, + preferred_quote: Quote, + length_add: impl Fn(usize, usize) -> Option, + ) -> EscapeLayout { + let mut out_len = Self::REPR_RESERVED_LEN; + let mut single_count = 0; + let mut double_count = 0; + + for ch in source.chars() { + let incr = match ch { + '\'' => { + single_count += 1; + 1 + } + '"' => { + double_count += 1; + 1 + } + c => Self::escaped_char_len(c), + }; + let Some(new_len) = length_add(out_len, incr) else { + #[cold] + fn stop( + single_count: usize, + double_count: usize, + preferred_quote: Quote, + ) -> EscapeLayout { + EscapeLayout { + quote: choose_quote(single_count, double_count, preferred_quote).0, + len: None, + } + } + return stop(single_count, double_count, preferred_quote); + }; + out_len = new_len; + } + + let (quote, num_escaped_quotes) = choose_quote(single_count, double_count, preferred_quote); + // we'll be adding backslashes in front of the existing inner quotes + let Some(out_len) = length_add(out_len, num_escaped_quotes) else { + return EscapeLayout { quote, len: None }; + }; + + EscapeLayout { + quote, + len: Some(out_len - Self::REPR_RESERVED_LEN), + } + } + + fn escaped_char_len(ch: char) -> usize { + match ch { + '\\' | '\t' | '\r' | '\n' => 2, + ch if ch < ' ' || ch as u32 == 0x7f => 4, // \xHH + ch if ch.is_ascii() => 1, + ch if crate::char::is_printable(ch) => { + // max = std::cmp::max(ch, max); + ch.len_utf8() + } + ch if (ch as u32) < 0x100 => 4, // \xHH + ch if (ch as u32) < 0x10000 => 6, // \uHHHH + _ => 10, // \uHHHHHHHH + } + } + + fn write_char( + ch: char, + quote: Quote, + formatter: &mut impl std::fmt::Write, + ) -> std::fmt::Result { + match ch { + '\n' => formatter.write_str("\\n"), + '\t' => formatter.write_str("\\t"), + '\r' => formatter.write_str("\\r"), + // these 2 branches *would* be handled below, but we shouldn't have to do a + // unicodedata lookup just for ascii characters + '\x20'..='\x7e' => { + // printable ascii range + if ch == quote.to_char() || ch == '\\' { + formatter.write_char('\\')?; + } + formatter.write_char(ch) + } + ch if ch.is_ascii() => { + write!(formatter, "\\x{:02x}", ch as u8) + } + ch if crate::char::is_printable(ch) => formatter.write_char(ch), + '\0'..='\u{ff}' => { + write!(formatter, "\\x{:02x}", ch as u32) + } + '\0'..='\u{ffff}' => { + write!(formatter, "\\u{:04x}", ch as u32) + } + _ => { + write!(formatter, "\\U{:08x}", ch as u32) + } + } + } +} + +impl<'a> Escape for UnicodeEscape<'a> { + fn source_len(&self) -> usize { + self.source.len() + } + + fn layout(&self) -> &EscapeLayout { + &self.layout + } + + fn write_source(&self, formatter: &mut impl std::fmt::Write) -> std::fmt::Result { + formatter.write_str(self.source) + } + + #[cold] + fn write_body_slow(&self, formatter: &mut impl std::fmt::Write) -> std::fmt::Result { + for ch in self.source.chars() { + Self::write_char(ch, self.layout().quote, formatter)?; + } + Ok(()) + } +} + +#[cfg(test)] +mod unicode_escape_tests { + use super::*; + + #[test] + fn changed() { + fn test(s: &str) -> bool { + UnicodeEscape::new_repr(s).changed() + } + assert!(!test("hello")); + assert!(!test("'hello'")); + assert!(!test("\"hello\"")); + + assert!(test("'\"hello")); + assert!(test("hello\n")); + } +} + +pub struct AsciiEscape<'a> { + source: &'a [u8], + layout: EscapeLayout, +} + +impl<'a> AsciiEscape<'a> { + #[inline] + pub fn new(source: &'a [u8], layout: EscapeLayout) -> Self { + Self { source, layout } + } + #[inline] + pub fn with_forced_quote(source: &'a [u8], quote: Quote) -> Self { + let layout = EscapeLayout { quote, len: None }; + Self { source, layout } + } + #[inline] + pub fn with_preferred_quote(source: &'a [u8], quote: Quote) -> Self { + let layout = Self::repr_layout(source, quote); + Self { source, layout } + } + #[inline] + pub fn new_repr(source: &'a [u8]) -> Self { + Self::with_preferred_quote(source, Quote::Single) + } + #[inline] + pub fn bytes_repr<'r>(&'a self) -> BytesRepr<'r, 'a> { + BytesRepr(self) + } +} + +impl AsciiEscape<'_> { + #[allow( + clippy::cast_possible_wrap, + clippy::cast_possible_truncation, + clippy::cast_sign_loss + )] + pub fn repr_layout(source: &[u8], preferred_quote: Quote) -> EscapeLayout { + Self::output_layout_with_checker(source, preferred_quote, 3, |a, b| { + Some((a as isize).checked_add(b as isize)? as usize) + }) + } + + #[allow( + clippy::cast_possible_wrap, + clippy::cast_possible_truncation, + clippy::cast_sign_loss + )] + pub fn named_repr_layout(source: &[u8], name: &str) -> EscapeLayout { + Self::output_layout_with_checker(source, Quote::Single, name.len() + 2 + 3, |a, b| { + Some((a as isize).checked_add(b as isize)? as usize) + }) + } + + fn output_layout_with_checker( + source: &[u8], + preferred_quote: Quote, + reserved_len: usize, + length_add: impl Fn(usize, usize) -> Option, + ) -> EscapeLayout { + let mut out_len = reserved_len; + let mut single_count = 0; + let mut double_count = 0; + + for ch in source.iter() { + let incr = match ch { + b'\'' => { + single_count += 1; + 1 + } + b'"' => { + double_count += 1; + 1 + } + c => Self::escaped_char_len(*c), + }; + let Some(new_len) = length_add(out_len, incr) else { + #[cold] + fn stop( + single_count: usize, + double_count: usize, + preferred_quote: Quote, + ) -> EscapeLayout { + EscapeLayout { + quote: choose_quote(single_count, double_count, preferred_quote).0, + len: None, + } + } + return stop(single_count, double_count, preferred_quote); + }; + out_len = new_len; + } + + let (quote, num_escaped_quotes) = choose_quote(single_count, double_count, preferred_quote); + // we'll be adding backslashes in front of the existing inner quotes + let Some(out_len) = length_add(out_len, num_escaped_quotes) else { + return EscapeLayout { quote, len: None }; + }; + + EscapeLayout { + quote, + len: Some(out_len - reserved_len), + } + } + + fn escaped_char_len(ch: u8) -> usize { + match ch { + b'\\' | b'\t' | b'\r' | b'\n' => 2, + 0x20..=0x7e => 1, + _ => 4, // \xHH + } + } + + fn write_char(ch: u8, quote: Quote, formatter: &mut impl std::fmt::Write) -> std::fmt::Result { + match ch { + b'\t' => formatter.write_str("\\t"), + b'\n' => formatter.write_str("\\n"), + b'\r' => formatter.write_str("\\r"), + 0x20..=0x7e => { + // printable ascii range + if ch == quote.to_byte() || ch == b'\\' { + formatter.write_char('\\')?; + } + formatter.write_char(ch as char) + } + ch => write!(formatter, "\\x{ch:02x}"), + } + } +} + +impl<'a> Escape for AsciiEscape<'a> { + fn source_len(&self) -> usize { + self.source.len() + } + + fn layout(&self) -> &EscapeLayout { + &self.layout + } + #[allow(unsafe_code)] + fn write_source(&self, formatter: &mut impl std::fmt::Write) -> std::fmt::Result { + formatter.write_str(unsafe { + // SAFETY: this function must be called only when source is printable ascii characters + std::str::from_utf8_unchecked(self.source) + }) + } + + #[cold] + fn write_body_slow(&self, formatter: &mut impl std::fmt::Write) -> std::fmt::Result { + for ch in self.source.iter() { + Self::write_char(*ch, self.layout().quote, formatter)?; + } + Ok(()) + } +} + +pub struct BytesRepr<'r, 'a>(&'r AsciiEscape<'a>); + +impl BytesRepr<'_, '_> { + pub fn write(&self, formatter: &mut impl std::fmt::Write) -> std::fmt::Result { + let quote = self.0.layout().quote.to_char(); + formatter.write_char('b')?; + formatter.write_char(quote)?; + self.0.write_body(formatter)?; + formatter.write_char(quote) + } + + pub fn to_string(&self) -> Option { + let mut s = String::with_capacity(self.0.layout().len?); + self.write(&mut s).unwrap(); + Some(s) + } +} + +impl std::fmt::Display for BytesRepr<'_, '_> { + fn fmt(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + self.write(formatter) + } +} diff --git a/crates/ruff_python_literal/src/float.rs b/crates/ruff_python_literal/src/float.rs new file mode 100644 index 0000000000..2a9b021f87 --- /dev/null +++ b/crates/ruff_python_literal/src/float.rs @@ -0,0 +1,317 @@ +use crate::Case; +use num_traits::{Float, Zero}; +use std::f64; + +pub fn parse_str(literal: &str) -> Option { + parse_inner(literal.trim().as_bytes()) +} + +pub fn parse_bytes(literal: &[u8]) -> Option { + parse_inner(trim_slice(literal, u8::is_ascii_whitespace)) +} + +fn trim_slice(v: &[T], mut trim: impl FnMut(&T) -> bool) -> &[T] { + let mut it = v.iter(); + // it.take_while_ref(&mut trim).for_each(drop); + // hmm.. `&mut slice::Iter<_>` is not `Clone` + // it.by_ref().rev().take_while_ref(&mut trim).for_each(drop); + while it.clone().next().map_or(false, &mut trim) { + it.next(); + } + while it.clone().next_back().map_or(false, &mut trim) { + it.next_back(); + } + it.as_slice() +} + +fn parse_inner(literal: &[u8]) -> Option { + use lexical_parse_float::{ + format::PYTHON3_LITERAL, FromLexicalWithOptions, NumberFormatBuilder, Options, + }; + // lexical-core's format::PYTHON_STRING is inaccurate + const PYTHON_STRING: u128 = NumberFormatBuilder::rebuild(PYTHON3_LITERAL) + .no_special(false) + .build(); + f64::from_lexical_with_options::(literal, &Options::new()).ok() +} + +pub fn is_integer(v: f64) -> bool { + (v - v.round()).abs() < f64::EPSILON +} + +fn format_nan(case: Case) -> String { + let nan = match case { + Case::Lower => "nan", + Case::Upper => "NAN", + }; + + nan.to_string() +} + +fn format_inf(case: Case) -> String { + let inf = match case { + Case::Lower => "inf", + Case::Upper => "INF", + }; + + inf.to_string() +} + +pub fn decimal_point_or_empty(precision: usize, alternate_form: bool) -> &'static str { + match (precision, alternate_form) { + (0, true) => ".", + _ => "", + } +} + +pub fn format_fixed(precision: usize, magnitude: f64, case: Case, alternate_form: bool) -> String { + match magnitude { + magnitude if magnitude.is_finite() => { + let point = decimal_point_or_empty(precision, alternate_form); + format!("{magnitude:.precision$}{point}") + } + magnitude if magnitude.is_nan() => format_nan(case), + magnitude if magnitude.is_infinite() => format_inf(case), + _ => String::new(), + } +} + +// Formats floats into Python style exponent notation, by first formatting in Rust style +// exponent notation (`1.0000e0`), then convert to Python style (`1.0000e+00`). +pub fn format_exponent( + precision: usize, + magnitude: f64, + case: Case, + alternate_form: bool, +) -> String { + match magnitude { + magnitude if magnitude.is_finite() => { + let r_exp = format!("{magnitude:.precision$e}"); + let mut parts = r_exp.splitn(2, 'e'); + let base = parts.next().unwrap(); + let exponent = parts.next().unwrap().parse::().unwrap(); + let e = match case { + Case::Lower => 'e', + Case::Upper => 'E', + }; + let point = decimal_point_or_empty(precision, alternate_form); + format!("{base}{point}{e}{exponent:+#03}") + } + magnitude if magnitude.is_nan() => format_nan(case), + magnitude if magnitude.is_infinite() => format_inf(case), + _ => String::new(), + } +} + +/// If s represents a floating point value, trailing zeros and a possibly trailing +/// decimal point will be removed. +/// This function does NOT work with decimal commas. +fn maybe_remove_trailing_redundant_chars(s: String, alternate_form: bool) -> String { + if !alternate_form && s.contains('.') { + // only truncate floating point values when not in alternate form + let s = remove_trailing_zeros(s); + remove_trailing_decimal_point(s) + } else { + s + } +} + +fn remove_trailing_zeros(s: String) -> String { + let mut s = s; + while s.ends_with('0') { + s.pop(); + } + s +} + +fn remove_trailing_decimal_point(s: String) -> String { + let mut s = s; + if s.ends_with('.') { + s.pop(); + } + s +} + +#[allow( + clippy::cast_sign_loss, + clippy::cast_possible_truncation, + clippy::cast_possible_wrap +)] +pub fn format_general( + precision: usize, + magnitude: f64, + case: Case, + alternate_form: bool, + always_shows_fract: bool, +) -> String { + match magnitude { + magnitude if magnitude.is_finite() => { + let r_exp = format!("{:.*e}", precision.saturating_sub(1), magnitude); + let mut parts = r_exp.splitn(2, 'e'); + let base = parts.next().unwrap(); + let exponent = parts.next().unwrap().parse::().unwrap(); + if exponent < -4 || exponent + i64::from(always_shows_fract) >= (precision as i64) { + let e = match case { + Case::Lower => 'e', + Case::Upper => 'E', + }; + let magnitude = format!("{:.*}", precision + 1, base); + let base = maybe_remove_trailing_redundant_chars(magnitude, alternate_form); + let point = decimal_point_or_empty(precision.saturating_sub(1), alternate_form); + format!("{base}{point}{e}{exponent:+#03}") + } else { + let precision = ((precision as i64) - 1 - exponent) as usize; + let magnitude = format!("{magnitude:.precision$}"); + let base = maybe_remove_trailing_redundant_chars(magnitude, alternate_form); + let point = decimal_point_or_empty(precision, alternate_form); + format!("{base}{point}") + } + } + magnitude if magnitude.is_nan() => format_nan(case), + magnitude if magnitude.is_infinite() => format_inf(case), + _ => String::new(), + } +} + +// TODO: rewrite using format_general +pub fn to_string(value: f64) -> String { + let lit = format!("{value:e}"); + if let Some(position) = lit.find('e') { + let significand = &lit[..position]; + let exponent = &lit[position + 1..]; + let exponent = exponent.parse::().unwrap(); + if exponent < 16 && exponent > -5 { + if is_integer(value) { + format!("{value:.1?}") + } else { + value.to_string() + } + } else { + format!("{significand}e{exponent:+#03}") + } + } else { + let mut s = value.to_string(); + s.make_ascii_lowercase(); + s + } +} + +pub fn from_hex(s: &str) -> Option { + if let Ok(f) = hexf_parse::parse_hexf64(s, false) { + return Some(f); + } + match s.to_ascii_lowercase().as_str() { + "nan" | "+nan" | "-nan" => Some(f64::NAN), + "inf" | "infinity" | "+inf" | "+infinity" => Some(f64::INFINITY), + "-inf" | "-infinity" => Some(f64::NEG_INFINITY), + value => { + let mut hex = String::with_capacity(value.len()); + let has_0x = value.contains("0x"); + let has_p = value.contains('p'); + let has_dot = value.contains('.'); + let mut start = 0; + + if !has_0x && value.starts_with('-') { + hex.push_str("-0x"); + start += 1; + } else if !has_0x { + hex.push_str("0x"); + if value.starts_with('+') { + start += 1; + } + } + + for (index, ch) in value.chars().enumerate() { + if ch == 'p' { + if has_dot { + hex.push('p'); + } else { + hex.push_str(".p"); + } + } else if index >= start { + hex.push(ch); + } + } + + if !has_p && has_dot { + hex.push_str("p0"); + } else if !has_p && !has_dot { + hex.push_str(".p0"); + } + + hexf_parse::parse_hexf64(hex.as_str(), false).ok() + } + } +} + +pub fn to_hex(value: f64) -> String { + let (mantissa, exponent, sign) = value.integer_decode(); + let sign_fmt = if sign < 0 { "-" } else { "" }; + match value { + value if value.is_zero() => format!("{sign_fmt}0x0.0p+0"), + value if value.is_infinite() => format!("{sign_fmt}inf"), + value if value.is_nan() => "nan".to_owned(), + _ => { + const BITS: i16 = 52; + const FRACT_MASK: u64 = 0xf_ffff_ffff_ffff; + format!( + "{}{:#x}.{:013x}p{:+}", + sign_fmt, + mantissa >> BITS, + mantissa & FRACT_MASK, + exponent + BITS + ) + } + } +} + +#[test] +#[allow(clippy::float_cmp)] +fn test_to_hex() { + use rand::Rng; + for _ in 0..20000 { + let bytes = rand::thread_rng().gen::<[u64; 1]>(); + let f = f64::from_bits(bytes[0]); + if !f.is_finite() { + continue; + } + let hex = to_hex(f); + // println!("{} -> {}", f, hex); + let roundtrip = hexf_parse::parse_hexf64(&hex, false).unwrap(); + // println!(" -> {}", roundtrip); + + assert_eq!(f, roundtrip, "{f} {hex} {roundtrip}"); + } +} + +#[test] +fn test_remove_trailing_zeros() { + assert!(remove_trailing_zeros(String::from("100")) == *"1"); + assert!(remove_trailing_zeros(String::from("100.00")) == *"100."); + + // leave leading zeros untouched + assert!(remove_trailing_zeros(String::from("001")) == *"001"); + + // leave strings untouched if they don't end with 0 + assert!(remove_trailing_zeros(String::from("101")) == *"101"); +} + +#[test] +fn test_remove_trailing_decimal_point() { + assert!(remove_trailing_decimal_point(String::from("100.")) == *"100"); + assert!(remove_trailing_decimal_point(String::from("1.")) == *"1"); + + // leave leading decimal points untouched + assert!(remove_trailing_decimal_point(String::from(".5")) == *".5"); +} + +#[test] +fn test_maybe_remove_trailing_redundant_chars() { + assert!(maybe_remove_trailing_redundant_chars(String::from("100."), true) == *"100."); + assert!(maybe_remove_trailing_redundant_chars(String::from("100."), false) == *"100"); + assert!(maybe_remove_trailing_redundant_chars(String::from("1."), false) == *"1"); + assert!(maybe_remove_trailing_redundant_chars(String::from("10.0"), false) == *"10"); + + // don't truncate integers + assert!(maybe_remove_trailing_redundant_chars(String::from("1000"), false) == *"1000"); +} diff --git a/crates/ruff_python_literal/src/format.rs b/crates/ruff_python_literal/src/format.rs new file mode 100644 index 0000000000..7d3625b4db --- /dev/null +++ b/crates/ruff_python_literal/src/format.rs @@ -0,0 +1,1297 @@ +use itertools::{Itertools, PeekingNext}; + +use num_traits::{cast::ToPrimitive, FromPrimitive, Signed}; +use std::ops::Deref; +use std::{cmp, str::FromStr}; + +use crate::{float, Case}; +use num_bigint::{BigInt, Sign}; + +trait FormatParse { + fn parse(text: &str) -> (Option, &str) + where + Self: Sized; +} + +#[derive(Debug, Copy, Clone, PartialEq)] +pub enum FormatConversion { + Str, + Repr, + Ascii, + Bytes, +} + +impl FormatParse for FormatConversion { + fn parse(text: &str) -> (Option, &str) { + let Some(conversion) = Self::from_string(text) else { + return (None, text); + }; + let mut chars = text.chars(); + chars.next(); // Consume the bang + chars.next(); // Consume one r,s,a char + (Some(conversion), chars.as_str()) + } +} + +impl FormatConversion { + pub fn from_char(c: char) -> Option { + match c { + 's' => Some(FormatConversion::Str), + 'r' => Some(FormatConversion::Repr), + 'a' => Some(FormatConversion::Ascii), + 'b' => Some(FormatConversion::Bytes), + _ => None, + } + } + + fn from_string(text: &str) -> Option { + let mut chars = text.chars(); + if chars.next() != Some('!') { + return None; + } + + FormatConversion::from_char(chars.next()?) + } +} + +#[derive(Debug, Copy, Clone, PartialEq)] +pub enum FormatAlign { + Left, + Right, + AfterSign, + Center, +} + +impl FormatAlign { + fn from_char(c: char) -> Option { + match c { + '<' => Some(FormatAlign::Left), + '>' => Some(FormatAlign::Right), + '=' => Some(FormatAlign::AfterSign), + '^' => Some(FormatAlign::Center), + _ => None, + } + } +} + +impl FormatParse for FormatAlign { + fn parse(text: &str) -> (Option, &str) { + let mut chars = text.chars(); + if let Some(maybe_align) = chars.next().and_then(Self::from_char) { + (Some(maybe_align), chars.as_str()) + } else { + (None, text) + } + } +} + +#[derive(Debug, Copy, Clone, PartialEq)] +pub enum FormatSign { + Plus, + Minus, + MinusOrSpace, +} + +impl FormatParse for FormatSign { + fn parse(text: &str) -> (Option, &str) { + let mut chars = text.chars(); + match chars.next() { + Some('-') => (Some(Self::Minus), chars.as_str()), + Some('+') => (Some(Self::Plus), chars.as_str()), + Some(' ') => (Some(Self::MinusOrSpace), chars.as_str()), + _ => (None, text), + } + } +} + +#[derive(Debug, PartialEq)] +pub enum FormatGrouping { + Comma, + Underscore, +} + +impl FormatParse for FormatGrouping { + fn parse(text: &str) -> (Option, &str) { + let mut chars = text.chars(); + match chars.next() { + Some('_') => (Some(Self::Underscore), chars.as_str()), + Some(',') => (Some(Self::Comma), chars.as_str()), + _ => (None, text), + } + } +} + +#[derive(Copy, Clone, Debug, PartialEq)] +pub enum FormatType { + String, + Binary, + Character, + Decimal, + Octal, + Number(Case), + Hex(Case), + Exponent(Case), + GeneralFormat(Case), + FixedPoint(Case), + Percentage, +} + +impl From<&FormatType> for char { + fn from(from: &FormatType) -> char { + match from { + FormatType::String => 's', + FormatType::Binary => 'b', + FormatType::Character => 'c', + FormatType::Decimal => 'd', + FormatType::Octal => 'o', + FormatType::Number(Case::Lower) => 'n', + FormatType::Number(Case::Upper) => 'N', + FormatType::Hex(Case::Lower) => 'x', + FormatType::Hex(Case::Upper) => 'X', + FormatType::Exponent(Case::Lower) => 'e', + FormatType::Exponent(Case::Upper) => 'E', + FormatType::GeneralFormat(Case::Lower) => 'g', + FormatType::GeneralFormat(Case::Upper) => 'G', + FormatType::FixedPoint(Case::Lower) => 'f', + FormatType::FixedPoint(Case::Upper) => 'F', + FormatType::Percentage => '%', + } + } +} + +impl FormatParse for FormatType { + fn parse(text: &str) -> (Option, &str) { + let mut chars = text.chars(); + match chars.next() { + Some('s') => (Some(Self::String), chars.as_str()), + Some('b') => (Some(Self::Binary), chars.as_str()), + Some('c') => (Some(Self::Character), chars.as_str()), + Some('d') => (Some(Self::Decimal), chars.as_str()), + Some('o') => (Some(Self::Octal), chars.as_str()), + Some('n') => (Some(Self::Number(Case::Lower)), chars.as_str()), + Some('N') => (Some(Self::Number(Case::Upper)), chars.as_str()), + Some('x') => (Some(Self::Hex(Case::Lower)), chars.as_str()), + Some('X') => (Some(Self::Hex(Case::Upper)), chars.as_str()), + Some('e') => (Some(Self::Exponent(Case::Lower)), chars.as_str()), + Some('E') => (Some(Self::Exponent(Case::Upper)), chars.as_str()), + Some('f') => (Some(Self::FixedPoint(Case::Lower)), chars.as_str()), + Some('F') => (Some(Self::FixedPoint(Case::Upper)), chars.as_str()), + Some('g') => (Some(Self::GeneralFormat(Case::Lower)), chars.as_str()), + Some('G') => (Some(Self::GeneralFormat(Case::Upper)), chars.as_str()), + Some('%') => (Some(Self::Percentage), chars.as_str()), + _ => (None, text), + } + } +} + +#[derive(Debug, PartialEq)] +pub struct FormatSpec { + conversion: Option, + fill: Option, + align: Option, + sign: Option, + alternate_form: bool, + width: Option, + grouping_option: Option, + precision: Option, + format_type: Option, +} + +fn get_num_digits(text: &str) -> usize { + for (index, character) in text.char_indices() { + if !character.is_ascii_digit() { + return index; + } + } + text.len() +} + +fn parse_fill_and_align(text: &str) -> (Option, Option, &str) { + let char_indices: Vec<(usize, char)> = text.char_indices().take(3).collect(); + if char_indices.is_empty() { + (None, None, text) + } else if char_indices.len() == 1 { + let (maybe_align, remaining) = FormatAlign::parse(text); + (None, maybe_align, remaining) + } else { + let (maybe_align, remaining) = FormatAlign::parse(&text[char_indices[1].0..]); + if maybe_align.is_some() { + (Some(char_indices[0].1), maybe_align, remaining) + } else { + let (only_align, only_align_remaining) = FormatAlign::parse(text); + (None, only_align, only_align_remaining) + } + } +} + +fn parse_number(text: &str) -> Result<(Option, &str), FormatSpecError> { + let num_digits: usize = get_num_digits(text); + if num_digits == 0 { + return Ok((None, text)); + } + if let Ok(num) = text[..num_digits].parse::() { + Ok((Some(num), &text[num_digits..])) + } else { + // NOTE: this condition is different from CPython + Err(FormatSpecError::DecimalDigitsTooMany) + } +} + +fn parse_alternate_form(text: &str) -> (bool, &str) { + let mut chars = text.chars(); + match chars.next() { + Some('#') => (true, chars.as_str()), + _ => (false, text), + } +} + +fn parse_zero(text: &str) -> (bool, &str) { + let mut chars = text.chars(); + match chars.next() { + Some('0') => (true, chars.as_str()), + _ => (false, text), + } +} + +fn parse_precision(text: &str) -> Result<(Option, &str), FormatSpecError> { + let mut chars = text.chars(); + Ok(match chars.next() { + Some('.') => { + let (size, remaining) = parse_number(chars.as_str())?; + if let Some(size) = size { + if size > i32::MAX as usize { + return Err(FormatSpecError::PrecisionTooBig); + } + (Some(size), remaining) + } else { + (None, text) + } + } + _ => (None, text), + }) +} + +impl FormatSpec { + pub fn parse(text: &str) -> Result { + // get_integer in CPython + let (conversion, text) = FormatConversion::parse(text); + let (mut fill, mut align, text) = parse_fill_and_align(text); + let (sign, text) = FormatSign::parse(text); + let (alternate_form, text) = parse_alternate_form(text); + let (zero, text) = parse_zero(text); + let (width, text) = parse_number(text)?; + let (grouping_option, text) = FormatGrouping::parse(text); + let (precision, text) = parse_precision(text)?; + let (format_type, text) = FormatType::parse(text); + if !text.is_empty() { + return Err(FormatSpecError::InvalidFormatSpecifier); + } + + if zero && fill.is_none() { + fill.replace('0'); + align = align.or(Some(FormatAlign::AfterSign)); + } + + Ok(FormatSpec { + conversion, + fill, + align, + sign, + alternate_form, + width, + grouping_option, + precision, + format_type, + }) + } + + fn compute_fill_string(fill_char: char, fill_chars_needed: i32) -> String { + (0..fill_chars_needed) + .map(|_| fill_char) + .collect::() + } + + #[allow( + clippy::cast_possible_wrap, + clippy::cast_possible_truncation, + clippy::cast_sign_loss + )] + fn add_magnitude_separators_for_char( + magnitude_str: &str, + inter: i32, + sep: char, + disp_digit_cnt: i32, + ) -> String { + // Don't add separators to the floating decimal point of numbers + let mut parts = magnitude_str.splitn(2, '.'); + let magnitude_int_str = parts.next().unwrap().to_string(); + let dec_digit_cnt = magnitude_str.len() as i32 - magnitude_int_str.len() as i32; + let int_digit_cnt = disp_digit_cnt - dec_digit_cnt; + let mut result = FormatSpec::separate_integer(magnitude_int_str, inter, sep, int_digit_cnt); + if let Some(part) = parts.next() { + result.push_str(&format!(".{part}")); + } + result + } + + #[allow( + clippy::cast_sign_loss, + clippy::cast_possible_wrap, + clippy::cast_possible_truncation + )] + fn separate_integer( + magnitude_str: String, + inter: i32, + sep: char, + disp_digit_cnt: i32, + ) -> String { + let magnitude_len = magnitude_str.len() as i32; + let offset = i32::from(disp_digit_cnt % (inter + 1) == 0); + let disp_digit_cnt = disp_digit_cnt + offset; + let pad_cnt = disp_digit_cnt - magnitude_len; + let sep_cnt = disp_digit_cnt / (inter + 1); + let diff = pad_cnt - sep_cnt; + if pad_cnt > 0 && diff > 0 { + // separate with 0 padding + let padding = "0".repeat(diff as usize); + let padded_num = format!("{padding}{magnitude_str}"); + FormatSpec::insert_separator(padded_num, inter, sep, sep_cnt) + } else { + // separate without padding + let sep_cnt = (magnitude_len - 1) / inter; + FormatSpec::insert_separator(magnitude_str, inter, sep, sep_cnt) + } + } + + #[allow( + clippy::cast_sign_loss, + clippy::cast_possible_truncation, + clippy::cast_possible_wrap + )] + fn insert_separator(mut magnitude_str: String, inter: i32, sep: char, sep_cnt: i32) -> String { + let magnitude_len = magnitude_str.len() as i32; + for i in 1..=sep_cnt { + magnitude_str.insert((magnitude_len - inter * i) as usize, sep); + } + magnitude_str + } + + fn validate_format(&self, default_format_type: FormatType) -> Result<(), FormatSpecError> { + let format_type = self.format_type.as_ref().unwrap_or(&default_format_type); + match (&self.grouping_option, format_type) { + ( + Some(FormatGrouping::Comma), + FormatType::String + | FormatType::Character + | FormatType::Binary + | FormatType::Octal + | FormatType::Hex(_) + | FormatType::Number(_), + ) => { + let ch = char::from(format_type); + Err(FormatSpecError::UnspecifiedFormat(',', ch)) + } + ( + Some(FormatGrouping::Underscore), + FormatType::String | FormatType::Character | FormatType::Number(_), + ) => { + let ch = char::from(format_type); + Err(FormatSpecError::UnspecifiedFormat('_', ch)) + } + _ => Ok(()), + } + } + + fn get_separator_interval(&self) -> usize { + match self.format_type { + Some(FormatType::Binary | FormatType::Octal | FormatType::Hex(_)) => 4, + Some(FormatType::Decimal | FormatType::Number(_) | FormatType::FixedPoint(_)) => 3, + None => 3, + _ => panic!("Separators only valid for numbers!"), + } + } + + #[allow(clippy::cast_possible_wrap, clippy::cast_possible_truncation)] + fn add_magnitude_separators(&self, magnitude_str: String, prefix: &str) -> String { + match &self.grouping_option { + Some(fg) => { + let sep = match fg { + FormatGrouping::Comma => ',', + FormatGrouping::Underscore => '_', + }; + let inter = self.get_separator_interval().try_into().unwrap(); + let magnitude_len = magnitude_str.len(); + let width = self.width.unwrap_or(magnitude_len) as i32 - prefix.len() as i32; + let disp_digit_cnt = cmp::max(width, magnitude_len as i32); + FormatSpec::add_magnitude_separators_for_char( + &magnitude_str, + inter, + sep, + disp_digit_cnt, + ) + } + None => magnitude_str, + } + } + + pub fn format_bool(&self, input: bool) -> Result { + let x = u8::from(input); + match &self.format_type { + Some( + FormatType::Binary + | FormatType::Decimal + | FormatType::Octal + | FormatType::Number(Case::Lower) + | FormatType::Hex(_) + | FormatType::GeneralFormat(_) + | FormatType::Character, + ) => self.format_int(&BigInt::from_u8(x).unwrap()), + Some(FormatType::Exponent(_) | FormatType::FixedPoint(_) | FormatType::Percentage) => { + self.format_float(f64::from(x)) + } + None => { + let first_letter = (input.to_string().as_bytes()[0] as char).to_uppercase(); + Ok(first_letter.collect::() + &input.to_string()[1..]) + } + _ => Err(FormatSpecError::InvalidFormatSpecifier), + } + } + + pub fn format_float(&self, num: f64) -> Result { + self.validate_format(FormatType::FixedPoint(Case::Lower))?; + let precision = self.precision.unwrap_or(6); + let magnitude = num.abs(); + let raw_magnitude_str: Result = match &self.format_type { + Some(FormatType::FixedPoint(case)) => Ok(float::format_fixed( + precision, + magnitude, + *case, + self.alternate_form, + )), + Some( + FormatType::Decimal + | FormatType::Binary + | FormatType::Octal + | FormatType::Hex(_) + | FormatType::String + | FormatType::Character + | FormatType::Number(Case::Upper), + ) => { + let ch = char::from(self.format_type.as_ref().unwrap()); + Err(FormatSpecError::UnknownFormatCode(ch, "float")) + } + Some(FormatType::GeneralFormat(case) | FormatType::Number(case)) => { + let precision = if precision == 0 { 1 } else { precision }; + Ok(float::format_general( + precision, + magnitude, + *case, + self.alternate_form, + false, + )) + } + Some(FormatType::Exponent(case)) => Ok(float::format_exponent( + precision, + magnitude, + *case, + self.alternate_form, + )), + Some(FormatType::Percentage) => match magnitude { + magnitude if magnitude.is_nan() => Ok("nan%".to_owned()), + magnitude if magnitude.is_infinite() => Ok("inf%".to_owned()), + _ => { + let result = format!("{:.*}", precision, magnitude * 100.0); + let point = float::decimal_point_or_empty(precision, self.alternate_form); + Ok(format!("{result}{point}%")) + } + }, + None => match magnitude { + magnitude if magnitude.is_nan() => Ok("nan".to_owned()), + magnitude if magnitude.is_infinite() => Ok("inf".to_owned()), + _ => match self.precision { + Some(precision) => Ok(float::format_general( + precision, + magnitude, + Case::Lower, + self.alternate_form, + true, + )), + None => Ok(float::to_string(magnitude)), + }, + }, + }; + let format_sign = self.sign.unwrap_or(FormatSign::Minus); + let sign_str = if num.is_sign_negative() && !num.is_nan() { + "-" + } else { + match format_sign { + FormatSign::Plus => "+", + FormatSign::Minus => "", + FormatSign::MinusOrSpace => " ", + } + }; + let magnitude_str = self.add_magnitude_separators(raw_magnitude_str?, sign_str); + Ok( + self.format_sign_and_align( + &AsciiStr::new(&magnitude_str), + sign_str, + FormatAlign::Right, + ), + ) + } + + #[inline] + fn format_int_radix(&self, magnitude: &BigInt, radix: u32) -> Result { + match self.precision { + Some(_) => Err(FormatSpecError::PrecisionNotAllowed), + None => Ok(magnitude.to_str_radix(radix)), + } + } + + pub fn format_int(&self, num: &BigInt) -> Result { + self.validate_format(FormatType::Decimal)?; + let magnitude = num.abs(); + let prefix = if self.alternate_form { + match self.format_type { + Some(FormatType::Binary) => "0b", + Some(FormatType::Octal) => "0o", + Some(FormatType::Hex(Case::Lower)) => "0x", + Some(FormatType::Hex(Case::Upper)) => "0X", + _ => "", + } + } else { + "" + }; + let raw_magnitude_str = match self.format_type { + Some(FormatType::Binary) => self.format_int_radix(&magnitude, 2), + Some(FormatType::Decimal) => self.format_int_radix(&magnitude, 10), + Some(FormatType::Octal) => self.format_int_radix(&magnitude, 8), + Some(FormatType::Hex(Case::Lower)) => self.format_int_radix(&magnitude, 16), + Some(FormatType::Hex(Case::Upper)) => { + if self.precision.is_some() { + Err(FormatSpecError::PrecisionNotAllowed) + } else { + let mut result = magnitude.to_str_radix(16); + result.make_ascii_uppercase(); + Ok(result) + } + } + + Some(FormatType::Number(Case::Lower)) => self.format_int_radix(&magnitude, 10), + Some(FormatType::Number(Case::Upper)) => { + Err(FormatSpecError::UnknownFormatCode('N', "int")) + } + Some(FormatType::String) => Err(FormatSpecError::UnknownFormatCode('s', "int")), + Some(FormatType::Character) => match (self.sign, self.alternate_form) { + (Some(_), _) => Err(FormatSpecError::NotAllowed("Sign")), + (_, true) => Err(FormatSpecError::NotAllowed("Alternate form (#)")), + (_, _) => match num.to_u32() { + Some(n) if n <= 0x0010_ffff => Ok(std::char::from_u32(n).unwrap().to_string()), + Some(_) | None => Err(FormatSpecError::CodeNotInRange), + }, + }, + Some( + FormatType::GeneralFormat(_) + | FormatType::FixedPoint(_) + | FormatType::Exponent(_) + | FormatType::Percentage, + ) => match num.to_f64() { + Some(float) => return self.format_float(float), + _ => Err(FormatSpecError::UnableToConvert), + }, + None => self.format_int_radix(&magnitude, 10), + }?; + let format_sign = self.sign.unwrap_or(FormatSign::Minus); + let sign_str = match num.sign() { + Sign::Minus => "-", + _ => match format_sign { + FormatSign::Plus => "+", + FormatSign::Minus => "", + FormatSign::MinusOrSpace => " ", + }, + }; + let sign_prefix = format!("{sign_str}{prefix}"); + let magnitude_str = self.add_magnitude_separators(raw_magnitude_str, &sign_prefix); + Ok(self.format_sign_and_align( + &AsciiStr::new(&magnitude_str), + &sign_prefix, + FormatAlign::Right, + )) + } + + pub fn format_string(&self, s: &T) -> Result + where + T: CharLen + Deref, + { + self.validate_format(FormatType::String)?; + match self.format_type { + Some(FormatType::String) | None => { + let mut value = self.format_sign_and_align(s, "", FormatAlign::Left); + if let Some(precision) = self.precision { + value.truncate(precision); + } + Ok(value) + } + _ => { + let ch = char::from(self.format_type.as_ref().unwrap()); + Err(FormatSpecError::UnknownFormatCode(ch, "str")) + } + } + } + + #[allow(clippy::cast_possible_wrap, clippy::cast_possible_truncation)] + fn format_sign_and_align( + &self, + magnitude_str: &T, + sign_str: &str, + default_align: FormatAlign, + ) -> String + where + T: CharLen + Deref, + { + let align = self.align.unwrap_or(default_align); + + let num_chars = magnitude_str.char_len(); + let fill_char = self.fill.unwrap_or(' '); + let fill_chars_needed: i32 = self.width.map_or(0, |w| { + cmp::max(0, (w as i32) - (num_chars as i32) - (sign_str.len() as i32)) + }); + + let magnitude_str = &**magnitude_str; + match align { + FormatAlign::Left => format!( + "{}{}{}", + sign_str, + magnitude_str, + FormatSpec::compute_fill_string(fill_char, fill_chars_needed) + ), + FormatAlign::Right => format!( + "{}{}{}", + FormatSpec::compute_fill_string(fill_char, fill_chars_needed), + sign_str, + magnitude_str + ), + FormatAlign::AfterSign => format!( + "{}{}{}", + sign_str, + FormatSpec::compute_fill_string(fill_char, fill_chars_needed), + magnitude_str + ), + FormatAlign::Center => { + let left_fill_chars_needed = fill_chars_needed / 2; + let right_fill_chars_needed = fill_chars_needed - left_fill_chars_needed; + let left_fill_string = + FormatSpec::compute_fill_string(fill_char, left_fill_chars_needed); + let right_fill_string = + FormatSpec::compute_fill_string(fill_char, right_fill_chars_needed); + format!("{left_fill_string}{sign_str}{magnitude_str}{right_fill_string}") + } + } + } +} + +pub trait CharLen { + /// Returns the number of characters in the text + fn char_len(&self) -> usize; +} + +struct AsciiStr<'a> { + inner: &'a str, +} + +impl<'a> AsciiStr<'a> { + fn new(inner: &'a str) -> Self { + Self { inner } + } +} + +impl CharLen for AsciiStr<'_> { + fn char_len(&self) -> usize { + self.inner.len() + } +} + +impl Deref for AsciiStr<'_> { + type Target = str; + fn deref(&self) -> &Self::Target { + self.inner + } +} + +#[derive(Debug, PartialEq)] +pub enum FormatSpecError { + DecimalDigitsTooMany, + PrecisionTooBig, + InvalidFormatSpecifier, + UnspecifiedFormat(char, char), + UnknownFormatCode(char, &'static str), + PrecisionNotAllowed, + NotAllowed(&'static str), + UnableToConvert, + CodeNotInRange, + NotImplemented(char, &'static str), +} + +#[derive(Debug, PartialEq)] +pub enum FormatParseError { + UnmatchedBracket, + MissingStartBracket, + UnescapedStartBracketInLiteral, + InvalidFormatSpecifier, + UnknownConversion, + EmptyAttribute, + MissingRightBracket, + InvalidCharacterAfterRightBracket, +} + +impl FromStr for FormatSpec { + type Err = FormatSpecError; + fn from_str(s: &str) -> Result { + FormatSpec::parse(s) + } +} + +#[derive(Debug, PartialEq)] +pub enum FieldNamePart { + Attribute(String), + Index(usize), + StringIndex(String), +} + +impl FieldNamePart { + fn parse_part( + chars: &mut impl PeekingNext, + ) -> Result, FormatParseError> { + chars + .next() + .map(|ch| match ch { + '.' => { + let mut attribute = String::new(); + for ch in chars.peeking_take_while(|ch| *ch != '.' && *ch != '[') { + attribute.push(ch); + } + if attribute.is_empty() { + Err(FormatParseError::EmptyAttribute) + } else { + Ok(FieldNamePart::Attribute(attribute)) + } + } + '[' => { + let mut index = String::new(); + for ch in chars { + if ch == ']' { + return if index.is_empty() { + Err(FormatParseError::EmptyAttribute) + } else if let Ok(index) = index.parse::() { + Ok(FieldNamePart::Index(index)) + } else { + Ok(FieldNamePart::StringIndex(index)) + }; + } + index.push(ch); + } + Err(FormatParseError::MissingRightBracket) + } + _ => Err(FormatParseError::InvalidCharacterAfterRightBracket), + }) + .transpose() + } +} + +#[derive(Debug, PartialEq)] +pub enum FieldType { + Auto, + Index(usize), + Keyword(String), +} + +#[derive(Debug, PartialEq)] +pub struct FieldName { + pub field_type: FieldType, + pub parts: Vec, +} + +impl FieldName { + pub fn parse(text: &str) -> Result { + let mut chars = text.chars().peekable(); + let mut first = String::new(); + for ch in chars.peeking_take_while(|ch| *ch != '.' && *ch != '[') { + first.push(ch); + } + + let field_type = if first.is_empty() { + FieldType::Auto + } else if let Ok(index) = first.parse::() { + FieldType::Index(index) + } else { + FieldType::Keyword(first) + }; + + let mut parts = Vec::new(); + while let Some(part) = FieldNamePart::parse_part(&mut chars)? { + parts.push(part); + } + + Ok(FieldName { field_type, parts }) + } +} + +#[derive(Debug, PartialEq)] +pub enum FormatPart { + Field { + field_name: String, + conversion_spec: Option, + format_spec: String, + }, + Literal(String), +} + +#[derive(Debug, PartialEq)] +pub struct FormatString { + pub format_parts: Vec, +} + +impl FormatString { + fn parse_literal_single(text: &str) -> Result<(char, &str), FormatParseError> { + let mut chars = text.chars(); + // This should never be called with an empty str + let first_char = chars.next().unwrap(); + // isn't this detectable only with bytes operation? + if first_char == '{' || first_char == '}' { + let maybe_next_char = chars.next(); + // if we see a bracket, it has to be escaped by doubling up to be in a literal + return if maybe_next_char.is_none() || maybe_next_char.unwrap() != first_char { + Err(FormatParseError::UnescapedStartBracketInLiteral) + } else { + Ok((first_char, chars.as_str())) + }; + } + Ok((first_char, chars.as_str())) + } + + fn parse_literal(text: &str) -> Result<(FormatPart, &str), FormatParseError> { + let mut cur_text = text; + let mut result_string = String::new(); + while !cur_text.is_empty() { + match FormatString::parse_literal_single(cur_text) { + Ok((next_char, remaining)) => { + result_string.push(next_char); + cur_text = remaining; + } + Err(err) => { + return if result_string.is_empty() { + Err(err) + } else { + Ok((FormatPart::Literal(result_string), cur_text)) + }; + } + } + } + Ok((FormatPart::Literal(result_string), "")) + } + + fn parse_part_in_brackets(text: &str) -> Result { + let parts: Vec<&str> = text.splitn(2, ':').collect(); + // before the comma is a keyword or arg index, after the comma is maybe a spec. + let arg_part = parts[0]; + + let format_spec = if parts.len() > 1 { + parts[1].to_owned() + } else { + String::new() + }; + + // On parts[0] can still be the conversion (!r, !s, !a) + let parts: Vec<&str> = arg_part.splitn(2, '!').collect(); + // before the bang is a keyword or arg index, after the comma is maybe a conversion spec. + let arg_part = parts[0]; + + let conversion_spec = parts + .get(1) + .map(|conversion| { + // conversions are only every one character + conversion + .chars() + .exactly_one() + .map_err(|_| FormatParseError::UnknownConversion) + }) + .transpose()?; + + Ok(FormatPart::Field { + field_name: arg_part.to_owned(), + conversion_spec, + format_spec, + }) + } + + fn parse_spec(text: &str) -> Result<(FormatPart, &str), FormatParseError> { + let mut nested = false; + let mut end_bracket_pos = None; + let mut left = String::new(); + + // There may be one layer nesting brackets in spec + for (idx, c) in text.char_indices() { + if idx == 0 { + if c != '{' { + return Err(FormatParseError::MissingStartBracket); + } + } else if c == '{' { + if nested { + return Err(FormatParseError::InvalidFormatSpecifier); + } + nested = true; + left.push(c); + continue; + } else if c == '}' { + if nested { + nested = false; + left.push(c); + continue; + } + end_bracket_pos = Some(idx); + break; + } else { + left.push(c); + } + } + if let Some(pos) = end_bracket_pos { + let (_, right) = text.split_at(pos); + let format_part = FormatString::parse_part_in_brackets(&left)?; + Ok((format_part, &right[1..])) + } else { + Err(FormatParseError::UnmatchedBracket) + } + } +} + +pub trait FromTemplate<'a>: Sized { + type Err; + fn from_str(s: &'a str) -> Result; +} + +impl<'a> FromTemplate<'a> for FormatString { + type Err = FormatParseError; + + fn from_str(text: &'a str) -> Result { + let mut cur_text: &str = text; + let mut parts: Vec = Vec::new(); + while !cur_text.is_empty() { + // Try to parse both literals and bracketed format parts until we + // run out of text + cur_text = FormatString::parse_literal(cur_text) + .or_else(|_| FormatString::parse_spec(cur_text)) + .map(|(part, new_text)| { + parts.push(part); + new_text + })?; + } + Ok(FormatString { + format_parts: parts, + }) + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_fill_and_align() { + assert_eq!( + parse_fill_and_align(" <"), + (Some(' '), Some(FormatAlign::Left), "") + ); + assert_eq!( + parse_fill_and_align(" <22"), + (Some(' '), Some(FormatAlign::Left), "22") + ); + assert_eq!( + parse_fill_and_align("<22"), + (None, Some(FormatAlign::Left), "22") + ); + assert_eq!( + parse_fill_and_align(" ^^"), + (Some(' '), Some(FormatAlign::Center), "^") + ); + assert_eq!( + parse_fill_and_align("==="), + (Some('='), Some(FormatAlign::AfterSign), "=") + ); + } + + #[test] + fn test_width_only() { + let expected = Ok(FormatSpec { + conversion: None, + fill: None, + align: None, + sign: None, + alternate_form: false, + width: Some(33), + grouping_option: None, + precision: None, + format_type: None, + }); + assert_eq!(FormatSpec::parse("33"), expected); + } + + #[test] + fn test_fill_and_width() { + let expected = Ok(FormatSpec { + conversion: None, + fill: Some('<'), + align: Some(FormatAlign::Right), + sign: None, + alternate_form: false, + width: Some(33), + grouping_option: None, + precision: None, + format_type: None, + }); + assert_eq!(FormatSpec::parse("<>33"), expected); + } + + #[test] + fn test_all() { + let expected = Ok(FormatSpec { + conversion: None, + fill: Some('<'), + align: Some(FormatAlign::Right), + sign: Some(FormatSign::Minus), + alternate_form: true, + width: Some(23), + grouping_option: Some(FormatGrouping::Comma), + precision: Some(11), + format_type: Some(FormatType::Binary), + }); + assert_eq!(FormatSpec::parse("<>-#23,.11b"), expected); + } + + fn format_bool(text: &str, value: bool) -> Result { + FormatSpec::parse(text).and_then(|spec| spec.format_bool(value)) + } + + #[test] + fn test_format_bool() { + assert_eq!(format_bool("b", true), Ok("1".to_owned())); + assert_eq!(format_bool("b", false), Ok("0".to_owned())); + assert_eq!(format_bool("d", true), Ok("1".to_owned())); + assert_eq!(format_bool("d", false), Ok("0".to_owned())); + assert_eq!(format_bool("o", true), Ok("1".to_owned())); + assert_eq!(format_bool("o", false), Ok("0".to_owned())); + assert_eq!(format_bool("n", true), Ok("1".to_owned())); + assert_eq!(format_bool("n", false), Ok("0".to_owned())); + assert_eq!(format_bool("x", true), Ok("1".to_owned())); + assert_eq!(format_bool("x", false), Ok("0".to_owned())); + assert_eq!(format_bool("X", true), Ok("1".to_owned())); + assert_eq!(format_bool("X", false), Ok("0".to_owned())); + assert_eq!(format_bool("g", true), Ok("1".to_owned())); + assert_eq!(format_bool("g", false), Ok("0".to_owned())); + assert_eq!(format_bool("G", true), Ok("1".to_owned())); + assert_eq!(format_bool("G", false), Ok("0".to_owned())); + assert_eq!(format_bool("c", true), Ok("\x01".to_owned())); + assert_eq!(format_bool("c", false), Ok("\x00".to_owned())); + assert_eq!(format_bool("e", true), Ok("1.000000e+00".to_owned())); + assert_eq!(format_bool("e", false), Ok("0.000000e+00".to_owned())); + assert_eq!(format_bool("E", true), Ok("1.000000E+00".to_owned())); + assert_eq!(format_bool("E", false), Ok("0.000000E+00".to_owned())); + assert_eq!(format_bool("f", true), Ok("1.000000".to_owned())); + assert_eq!(format_bool("f", false), Ok("0.000000".to_owned())); + assert_eq!(format_bool("F", true), Ok("1.000000".to_owned())); + assert_eq!(format_bool("F", false), Ok("0.000000".to_owned())); + assert_eq!(format_bool("%", true), Ok("100.000000%".to_owned())); + assert_eq!(format_bool("%", false), Ok("0.000000%".to_owned())); + } + + #[test] + fn test_format_int() { + assert_eq!( + FormatSpec::parse("d") + .unwrap() + .format_int(&BigInt::from_bytes_be(Sign::Plus, b"\x10")), + Ok("16".to_owned()) + ); + assert_eq!( + FormatSpec::parse("x") + .unwrap() + .format_int(&BigInt::from_bytes_be(Sign::Plus, b"\x10")), + Ok("10".to_owned()) + ); + assert_eq!( + FormatSpec::parse("b") + .unwrap() + .format_int(&BigInt::from_bytes_be(Sign::Plus, b"\x10")), + Ok("10000".to_owned()) + ); + assert_eq!( + FormatSpec::parse("o") + .unwrap() + .format_int(&BigInt::from_bytes_be(Sign::Plus, b"\x10")), + Ok("20".to_owned()) + ); + assert_eq!( + FormatSpec::parse("+d") + .unwrap() + .format_int(&BigInt::from_bytes_be(Sign::Plus, b"\x10")), + Ok("+16".to_owned()) + ); + assert_eq!( + FormatSpec::parse("^ 5d") + .unwrap() + .format_int(&BigInt::from_bytes_be(Sign::Minus, b"\x10")), + Ok(" -16 ".to_owned()) + ); + assert_eq!( + FormatSpec::parse("0>+#10x") + .unwrap() + .format_int(&BigInt::from_bytes_be(Sign::Plus, b"\x10")), + Ok("00000+0x10".to_owned()) + ); + } + + #[test] + fn test_format_int_sep() { + let spec = FormatSpec::parse(",").expect(""); + assert_eq!(spec.grouping_option, Some(FormatGrouping::Comma)); + assert_eq!( + spec.format_int(&BigInt::from_str("1234567890123456789012345678").unwrap()), + Ok("1,234,567,890,123,456,789,012,345,678".to_owned()) + ); + } + + #[test] + fn test_format_parse() { + let expected = Ok(FormatString { + format_parts: vec![ + FormatPart::Literal("abcd".to_owned()), + FormatPart::Field { + field_name: "1".to_owned(), + conversion_spec: None, + format_spec: String::new(), + }, + FormatPart::Literal(":".to_owned()), + FormatPart::Field { + field_name: "key".to_owned(), + conversion_spec: None, + format_spec: String::new(), + }, + ], + }); + + assert_eq!(FormatString::from_str("abcd{1}:{key}"), expected); + } + + #[test] + fn test_format_parse_multi_byte_char() { + assert!(FormatString::from_str("{a:%ЫйЯЧ}").is_ok()); + } + + #[test] + fn test_format_parse_fail() { + assert_eq!( + FormatString::from_str("{s"), + Err(FormatParseError::UnmatchedBracket) + ); + } + + #[test] + fn test_format_parse_escape() { + let expected = Ok(FormatString { + format_parts: vec![ + FormatPart::Literal("{".to_owned()), + FormatPart::Field { + field_name: "key".to_owned(), + conversion_spec: None, + format_spec: String::new(), + }, + FormatPart::Literal("}ddfe".to_owned()), + ], + }); + + assert_eq!(FormatString::from_str("{{{key}}}ddfe"), expected); + } + + #[test] + fn test_format_invalid_specification() { + assert_eq!( + FormatSpec::parse("%3"), + Err(FormatSpecError::InvalidFormatSpecifier) + ); + assert_eq!( + FormatSpec::parse(".2fa"), + Err(FormatSpecError::InvalidFormatSpecifier) + ); + assert_eq!( + FormatSpec::parse("ds"), + Err(FormatSpecError::InvalidFormatSpecifier) + ); + assert_eq!( + FormatSpec::parse("x+"), + Err(FormatSpecError::InvalidFormatSpecifier) + ); + assert_eq!( + FormatSpec::parse("b4"), + Err(FormatSpecError::InvalidFormatSpecifier) + ); + assert_eq!( + FormatSpec::parse("o!"), + Err(FormatSpecError::InvalidFormatSpecifier) + ); + assert_eq!( + FormatSpec::parse("d "), + Err(FormatSpecError::InvalidFormatSpecifier) + ); + } + + #[test] + fn test_parse_field_name() { + assert_eq!( + FieldName::parse(""), + Ok(FieldName { + field_type: FieldType::Auto, + parts: Vec::new(), + }) + ); + assert_eq!( + FieldName::parse("0"), + Ok(FieldName { + field_type: FieldType::Index(0), + parts: Vec::new(), + }) + ); + assert_eq!( + FieldName::parse("key"), + Ok(FieldName { + field_type: FieldType::Keyword("key".to_owned()), + parts: Vec::new(), + }) + ); + assert_eq!( + FieldName::parse("key.attr[0][string]"), + Ok(FieldName { + field_type: FieldType::Keyword("key".to_owned()), + parts: vec![ + FieldNamePart::Attribute("attr".to_owned()), + FieldNamePart::Index(0), + FieldNamePart::StringIndex("string".to_owned()) + ], + }) + ); + assert_eq!( + FieldName::parse("key.."), + Err(FormatParseError::EmptyAttribute) + ); + assert_eq!( + FieldName::parse("key[]"), + Err(FormatParseError::EmptyAttribute) + ); + assert_eq!( + FieldName::parse("key["), + Err(FormatParseError::MissingRightBracket) + ); + assert_eq!( + FieldName::parse("key[0]after"), + Err(FormatParseError::InvalidCharacterAfterRightBracket) + ); + } +} diff --git a/crates/ruff_python_literal/src/lib.rs b/crates/ruff_python_literal/src/lib.rs new file mode 100644 index 0000000000..7c9025b4a7 --- /dev/null +++ b/crates/ruff_python_literal/src/lib.rs @@ -0,0 +1,11 @@ +pub mod cformat; +pub mod char; +pub mod escape; +pub mod float; +pub mod format; + +#[derive(Debug, PartialEq, Eq, Clone, Copy)] +pub enum Case { + Lower, + Upper, +} diff --git a/crates/ruff_python_parser/Cargo.toml b/crates/ruff_python_parser/Cargo.toml index a4fbf550eb..052105013a 100644 --- a/crates/ruff_python_parser/Cargo.toml +++ b/crates/ruff_python_parser/Cargo.toml @@ -2,21 +2,37 @@ name = "ruff_python_parser" version = "0.0.0" publish = false -authors = { workspace = true } +authors = ["Charlie Marsh ", "RustPython Team"] edition = { workspace = true } rust-version = { workspace = true } homepage = { workspace = true } documentation = { workspace = true } repository = { workspace = true } license = { workspace = true } +build = "build.rs" [lib] [dependencies] ruff_python_ast = { path = "../ruff_python_ast"} -ruff_text_size = { workspace = true } +ruff_text_size = { path = "../ruff_text_size" } anyhow = { workspace = true } is-macro = { workspace = true } -rustpython-ast = { workspace = true } -rustpython-parser = { workspace = true } +itertools = { workspace = true } +lalrpop-util = { version = "0.20.0", default-features = false } +num-bigint = { workspace = true } +num-traits = { workspace = true } +unic-emoji-char = "0.9.0" +unic-ucd-ident = "0.9.0" +unicode_names2 = { version = "0.6.0", git = "https://github.com/youknowone/unicode_names2.git", rev = "4ce16aa85cbcdd9cc830410f1a72ef9a235f2fde" } +rustc-hash = { workspace = true } +static_assertions = "1.1.0" + +[dev-dependencies] +insta = { workspace = true } + +[build-dependencies] +anyhow = { workspace = true } +lalrpop = { version = "0.20.0", default-features = false, optional = true } +tiny-keccak = { version = "2", features = ["sha3"] } diff --git a/crates/ruff_python_parser/build.rs b/crates/ruff_python_parser/build.rs new file mode 100644 index 0000000000..8544bd88db --- /dev/null +++ b/crates/ruff_python_parser/build.rs @@ -0,0 +1,112 @@ +use std::fmt::Write as _; +use std::fs::File; +use std::io::{BufRead, BufReader}; +use std::path::{Path, PathBuf}; +use tiny_keccak::{Hasher, Sha3}; + +fn main() { + const SOURCE: &str = "src/python.lalrpop"; + println!("cargo:rerun-if-changed={SOURCE}"); + + let target; + let error; + + #[cfg(feature = "lalrpop")] + { + let out_dir = PathBuf::from(std::env::var_os("OUT_DIR").unwrap()); + target = out_dir.join("src/python.rs"); + } + #[cfg(not(feature = "lalrpop"))] + { + target = PathBuf::from("src/python.rs"); + error = "python.lalrpop and src/python.rs doesn't match. This is a ruff_python_parser bug. Please report it unless you are editing ruff_python_parser. Run `lalrpop src/python.lalrpop` to build ruff_python_parser again."; + } + + let Some(message) = requires_lalrpop(SOURCE, &target) else { + return; + }; + + #[cfg(feature = "lalrpop")] + { + let Err(e) = try_lalrpop() else { + return; + }; + error = e; + } + + println!("cargo:warning={message}"); + panic!("running lalrpop failed. {error:?}"); +} + +fn requires_lalrpop(source: &str, target: &Path) -> Option { + let Ok(target) = File::open(target) else { + return Some("python.rs doesn't exist. regenerate.".to_owned()); + }; + + let sha_prefix = "// sha3: "; + let Some(sha3_line) = BufReader::with_capacity(128, target) + .lines() + .find_map(|line| { + let line = line.unwrap(); + line.starts_with(sha_prefix).then_some(line) + }) + else { + // no sha3 line - maybe old version of lalrpop installed + return Some("python.rs doesn't include sha3 hash. regenerate.".to_owned()); + }; + 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 { + let mut actual_sha3_str = String::new(); + for byte in actual_sha3 { + write!(actual_sha3_str, "{byte:02x}").unwrap(); + } + return Some(format!( + "python.rs hash expected: {expected_sha3_str} but actual: {actual_sha3_str}" + )); + } + None +} + +#[cfg(feature = "lalrpop")] +fn try_lalrpop() -> Result<(), Box> { + // We are not using lalrpop::process_root() or Configuration::process_current_dir() + // because of https://github.com/lalrpop/lalrpop/issues/699. + lalrpop::Configuration::new() + .use_cargo_dir_conventions() + .set_in_dir(Path::new(".")) + .process() +} + +fn sha_equal(expected_sha3_str: &str, actual_sha3: &[u8; 32]) -> bool { + assert!( + expected_sha3_str.len() == 64, + "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/crates/ruff_python_parser/src/context.rs b/crates/ruff_python_parser/src/context.rs new file mode 100644 index 0000000000..683c35a30a --- /dev/null +++ b/crates/ruff_python_parser/src/context.rs @@ -0,0 +1,180 @@ +use ruff_python_ast::{self as ast, Expr, ExprContext}; + +pub(crate) fn set_context(expr: Expr, ctx: ExprContext) -> Expr { + match expr { + Expr::Name(ast::ExprName { id, range, .. }) => ast::ExprName { range, id, ctx }.into(), + Expr::Tuple(ast::ExprTuple { elts, range, .. }) => ast::ExprTuple { + elts: elts.into_iter().map(|elt| set_context(elt, ctx)).collect(), + range, + ctx, + } + .into(), + + Expr::List(ast::ExprList { elts, range, .. }) => ast::ExprList { + elts: elts.into_iter().map(|elt| set_context(elt, ctx)).collect(), + range, + ctx, + } + .into(), + Expr::Attribute(ast::ExprAttribute { + value, attr, range, .. + }) => ast::ExprAttribute { + range, + value, + attr, + ctx, + } + .into(), + Expr::Subscript(ast::ExprSubscript { + value, + slice, + range, + .. + }) => ast::ExprSubscript { + range, + value, + slice, + ctx, + } + .into(), + Expr::Starred(ast::ExprStarred { value, range, .. }) => ast::ExprStarred { + value: Box::new(set_context(*value, ctx)), + range, + ctx, + } + .into(), + _ => expr, + } +} + +#[cfg(test)] +mod tests { + use crate::Parse; + use ruff_python_ast as ast; + + #[test] + fn test_assign_name() { + let source = "x = (1, 2, 3)"; + let parse_ast = ast::Suite::parse(source, "").unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_assign_tuple() { + let source = "(x, y) = (1, 2, 3)"; + let parse_ast = ast::Suite::parse(source, "").unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_assign_list() { + let source = "[x, y] = (1, 2, 3)"; + let parse_ast = ast::Suite::parse(source, "").unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_assign_attribute() { + let source = "x.y = (1, 2, 3)"; + let parse_ast = ast::Suite::parse(source, "").unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_assign_subscript() { + let source = "x[y] = (1, 2, 3)"; + let parse_ast = ast::Suite::parse(source, "").unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_assign_starred() { + let source = "(x, *y) = (1, 2, 3)"; + let parse_ast = ast::Suite::parse(source, "").unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_assign_for() { + let source = "for x in (1, 2, 3): pass"; + let parse_ast = ast::Suite::parse(source, "").unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_assign_list_comp() { + let source = "x = [y for y in (1, 2, 3)]"; + let parse_ast = ast::Suite::parse(source, "").unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_assign_set_comp() { + let source = "x = {y for y in (1, 2, 3)}"; + let parse_ast = ast::Suite::parse(source, "").unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_assign_with() { + let source = "with 1 as x: pass"; + let parse_ast = ast::Suite::parse(source, "").unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_assign_named_expr() { + let source = "if x:= 1: pass"; + let parse_ast = ast::Suite::parse(source, "").unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_ann_assign_name() { + let source = "x: int = 1"; + let parse_ast = ast::Suite::parse(source, "").unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_aug_assign_name() { + let source = "x += 1"; + let parse_ast = ast::Suite::parse(source, "").unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_aug_assign_attribute() { + let source = "x.y += (1, 2, 3)"; + let parse_ast = ast::Suite::parse(source, "").unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_aug_assign_subscript() { + let source = "x[y] += (1, 2, 3)"; + let parse_ast = ast::Suite::parse(source, "").unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_del_name() { + let source = "del x"; + let parse_ast = ast::Suite::parse(source, "").unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_del_attribute() { + let source = "del x.y"; + let parse_ast = ast::Suite::parse(source, "").unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_del_subscript() { + let source = "del x[y]"; + let parse_ast = ast::Suite::parse(source, "").unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } +} diff --git a/crates/ruff_python_parser/src/function.rs b/crates/ruff_python_parser/src/function.rs new file mode 100644 index 0000000000..a26ef6395e --- /dev/null +++ b/crates/ruff_python_parser/src/function.rs @@ -0,0 +1,216 @@ +use std::hash::BuildHasherDefault; +// Contains functions that perform validation and parsing of arguments and parameters. +// Checks apply both to functions and to lambdas. +use crate::lexer::{LexicalError, LexicalErrorType}; +use ruff_python_ast::{self as ast, Ranged}; +use ruff_text_size::{TextRange, TextSize}; +use rustc_hash::FxHashSet; + +pub(crate) struct ArgumentList { + pub(crate) args: Vec, + pub(crate) keywords: Vec, +} + +// Perform validation of function/lambda arguments in a function definition. +pub(crate) fn validate_arguments(arguments: &ast::Arguments) -> Result<(), LexicalError> { + let mut all_arg_names = FxHashSet::with_capacity_and_hasher( + arguments.posonlyargs.len() + + arguments.args.len() + + usize::from(arguments.vararg.is_some()) + + arguments.kwonlyargs.len() + + usize::from(arguments.kwarg.is_some()), + BuildHasherDefault::default(), + ); + + let posonlyargs = arguments.posonlyargs.iter(); + let args = arguments.args.iter(); + let kwonlyargs = arguments.kwonlyargs.iter(); + + let vararg: Option<&ast::Arg> = arguments.vararg.as_deref(); + let kwarg: Option<&ast::Arg> = arguments.kwarg.as_deref(); + + for arg in posonlyargs + .chain(args) + .chain(kwonlyargs) + .map(|arg| &arg.def) + .chain(vararg) + .chain(kwarg) + { + let range = arg.range; + let arg_name = arg.arg.as_str(); + if !all_arg_names.insert(arg_name) { + return Err(LexicalError { + error: LexicalErrorType::DuplicateArgumentError(arg_name.to_string()), + location: range.start(), + }); + } + } + + Ok(()) +} + +pub(crate) fn validate_pos_params( + args: &(Vec, Vec), +) -> Result<(), LexicalError> { + let (posonlyargs, args) = args; + #[allow(clippy::skip_while_next)] + let first_invalid = posonlyargs + .iter() + .chain(args.iter()) // for all args + .skip_while(|arg| arg.default.is_none()) // starting with args without default + .skip_while(|arg| arg.default.is_some()) // and then args with default + .next(); // there must not be any more args without default + if let Some(invalid) = first_invalid { + return Err(LexicalError { + error: LexicalErrorType::DefaultArgumentError, + location: invalid.def.range.start(), + }); + } + Ok(()) +} + +type FunctionArgument = ( + Option<(TextSize, TextSize, Option)>, + ast::Expr, +); + +// Parse arguments as supplied during a function/lambda *call*. +pub(crate) fn parse_args(func_args: Vec) -> Result { + let mut args = vec![]; + let mut keywords = vec![]; + + let mut keyword_names = + FxHashSet::with_capacity_and_hasher(func_args.len(), BuildHasherDefault::default()); + let mut double_starred = false; + for (name, value) in func_args { + if let Some((start, end, name)) = name { + // Check for duplicate keyword arguments in the call. + if let Some(keyword_name) = &name { + if !keyword_names.insert(keyword_name.to_string()) { + return Err(LexicalError { + error: LexicalErrorType::DuplicateKeywordArgumentError( + keyword_name.to_string(), + ), + location: start, + }); + } + } else { + double_starred = true; + } + + keywords.push(ast::Keyword { + arg: name, + value, + range: TextRange::new(start, end), + }); + } else { + // Positional arguments mustn't follow keyword arguments. + if !keywords.is_empty() && !is_starred(&value) { + return Err(LexicalError { + error: LexicalErrorType::PositionalArgumentError, + location: value.start(), + }); + // Allow starred arguments after keyword arguments but + // not after double-starred arguments. + } else if double_starred { + return Err(LexicalError { + error: LexicalErrorType::UnpackedArgumentError, + location: value.start(), + }); + } + + args.push(value); + } + } + Ok(ArgumentList { args, keywords }) +} + +// Check if an expression is a starred expression. +const fn is_starred(exp: &ast::Expr) -> bool { + exp.is_starred_expr() +} + +#[cfg(test)] +mod tests { + use super::*; + use crate::{Parse, ParseErrorType}; + use ruff_python_ast::{self as ast}; + + macro_rules! function_and_lambda { + ($($name:ident: $code:expr,)*) => { + $( + #[test] + fn $name() { + let parse_ast = ast::Suite::parse($code, ""); + insta::assert_debug_snapshot!(parse_ast); + } + )* + } + } + + function_and_lambda! { + test_function_no_args_with_ranges: "def f(): pass", + test_function_pos_args_with_ranges: "def f(a, b, c): pass", + } + + function_and_lambda! { + test_function_no_args: "def f(): pass", + test_function_pos_args: "def f(a, b, c): pass", + test_function_pos_args_with_defaults: "def f(a, b=20, c=30): pass", + test_function_kw_only_args: "def f(*, a, b, c): pass", + test_function_kw_only_args_with_defaults: "def f(*, a, b=20, c=30): pass", + test_function_pos_and_kw_only_args: "def f(a, b, c, *, d, e, f): pass", + test_function_pos_and_kw_only_args_with_defaults: "def f(a, b, c, *, d, e=20, f=30): pass", + test_function_pos_and_kw_only_args_with_defaults_and_varargs: "def f(a, b, c, *args, d, e=20, f=30): pass", + test_function_pos_and_kw_only_args_with_defaults_and_varargs_and_kwargs: "def f(a, b, c, *args, d, e=20, f=30, **kwargs): pass", + test_lambda_no_args: "lambda: 1", + test_lambda_pos_args: "lambda a, b, c: 1", + test_lambda_pos_args_with_defaults: "lambda a, b=20, c=30: 1", + test_lambda_kw_only_args: "lambda *, a, b, c: 1", + test_lambda_kw_only_args_with_defaults: "lambda *, a, b=20, c=30: 1", + test_lambda_pos_and_kw_only_args: "lambda a, b, c, *, d, e: 0", + } + + fn function_parse_error(src: &str) -> LexicalErrorType { + let parse_ast = ast::Suite::parse(src, ""); + parse_ast + .map_err(|e| match e.error { + ParseErrorType::Lexical(e) => e, + _ => panic!("Expected LexicalError"), + }) + .expect_err("Expected error") + } + + macro_rules! function_and_lambda_error { + ($($name:ident: $code:expr, $error:expr,)*) => { + $( + #[test] + fn $name() { + let error = function_parse_error($code); + assert_eq!(error, $error); + } + )* + } + } + + function_and_lambda_error! { + // Check definitions + test_duplicates_f1: "def f(a, a): pass", LexicalErrorType::DuplicateArgumentError("a".to_string()), + test_duplicates_f2: "def f(a, *, a): pass", LexicalErrorType::DuplicateArgumentError("a".to_string()), + test_duplicates_f3: "def f(a, a=20): pass", LexicalErrorType::DuplicateArgumentError("a".to_string()), + test_duplicates_f4: "def f(a, *a): pass", LexicalErrorType::DuplicateArgumentError("a".to_string()), + test_duplicates_f5: "def f(a, *, **a): pass", LexicalErrorType::DuplicateArgumentError("a".to_string()), + test_duplicates_l1: "lambda a, a: 1", LexicalErrorType::DuplicateArgumentError("a".to_string()), + test_duplicates_l2: "lambda a, *, a: 1", LexicalErrorType::DuplicateArgumentError("a".to_string()), + test_duplicates_l3: "lambda a, a=20: 1", LexicalErrorType::DuplicateArgumentError("a".to_string()), + test_duplicates_l4: "lambda a, *a: 1", LexicalErrorType::DuplicateArgumentError("a".to_string()), + test_duplicates_l5: "lambda a, *, **a: 1", LexicalErrorType::DuplicateArgumentError("a".to_string()), + test_default_arg_error_f: "def f(a, b=20, c): pass", LexicalErrorType::DefaultArgumentError, + test_default_arg_error_l: "lambda a, b=20, c: 1", LexicalErrorType::DefaultArgumentError, + + // Check some calls. + test_positional_arg_error_f: "f(b=20, c)", LexicalErrorType::PositionalArgumentError, + test_unpacked_arg_error_f: "f(**b, *c)", LexicalErrorType::UnpackedArgumentError, + test_duplicate_kw_f1: "f(a=20, a=30)", LexicalErrorType::DuplicateKeywordArgumentError("a".to_string()), + } +} diff --git a/crates/ruff_python_parser/src/lexer.rs b/crates/ruff_python_parser/src/lexer.rs new file mode 100644 index 0000000000..a65737c04f --- /dev/null +++ b/crates/ruff_python_parser/src/lexer.rs @@ -0,0 +1,1922 @@ +//! This module takes care of lexing Python source text. +//! +//! This means source code is scanned and translated into separate tokens. The rules +//! governing what is and is not a valid token are defined in the Python reference +//! guide section on [Lexical analysis]. +//! +//! The primary function in this module is [`lex`], which takes a string slice +//! and returns an iterator over the tokens in the source code. The tokens are currently returned +//! as a `Result`, where [`Spanned`] is a tuple containing the +//! start and end [`TextSize`] and a [`Tok`] denoting the token. +//! +//! # Example +//! +//! ``` +//! use ruff_python_parser::{lexer::lex, Tok, Mode, StringKind}; +//! +//! let source = "x = 'RustPython'"; +//! let tokens = lex(source, Mode::Module) +//! .map(|tok| tok.expect("Failed to lex")) +//! .collect::>(); +//! +//! for (token, range) in tokens { +//! println!( +//! "{token:?}@{range:?}", +//! ); +//! } +//! ``` +//! +//! [Lexical analysis]: https://docs.python.org/3/reference/lexical_analysis.html + +use std::borrow::Cow; +use std::iter::FusedIterator; +use std::{char, cmp::Ordering, str::FromStr}; + +use num_bigint::BigInt; +use num_traits::{Num, Zero}; +use ruff_python_ast::MagicKind; +use ruff_text_size::{TextLen, TextRange, TextSize}; +use unic_emoji_char::is_emoji_presentation; +use unic_ucd_ident::{is_xid_continue, is_xid_start}; + +use crate::lexer::cursor::{Cursor, EOF_CHAR}; +use crate::lexer::indentation::{Indentation, Indentations}; +use crate::{ + soft_keywords::SoftKeywordTransformer, + string::FStringErrorType, + token::{StringKind, Tok}, + Mode, +}; + +mod cursor; +mod indentation; + +/// A lexer for Python source code. +pub struct Lexer<'source> { + // Contains the source code to be lexed. + cursor: Cursor<'source>, + source: &'source str, + + state: State, + // Amount of parenthesis. + nesting: u32, + // Indentation levels. + indentations: Indentations, + pending_indentation: Option, + // Lexer mode. + mode: Mode, +} + +/// Contains a Token along with its `range`. +pub type Spanned = (Tok, TextRange); +/// The result of lexing a token. +pub type LexResult = Result; + +/// Create a new lexer from a source string. +/// +/// # Examples +/// +/// ``` +/// use ruff_python_parser::{Mode, lexer::lex}; +/// +/// let source = "def hello(): return 'world'"; +/// let lexer = lex(source, Mode::Module); +/// +/// for token in lexer { +/// println!("{:?}", token); +/// } +/// ``` +#[inline] +pub fn lex(source: &str, mode: Mode) -> SoftKeywordTransformer { + SoftKeywordTransformer::new(Lexer::new(source, mode), mode) +} + +pub struct LexStartsAtIterator { + start_offset: TextSize, + inner: I, +} + +impl Iterator for LexStartsAtIterator +where + I: Iterator, +{ + type Item = LexResult; + + #[inline] + fn next(&mut self) -> Option { + let result = match self.inner.next()? { + Ok((tok, range)) => Ok((tok, range + self.start_offset)), + Err(error) => Err(LexicalError { + location: error.location + self.start_offset, + ..error + }), + }; + + Some(result) + } + + fn size_hint(&self) -> (usize, Option) { + self.inner.size_hint() + } +} + +impl FusedIterator for LexStartsAtIterator where I: Iterator + FusedIterator {} +impl ExactSizeIterator for LexStartsAtIterator where + I: Iterator + ExactSizeIterator +{ +} + +/// Create a new lexer from a source string, starting at a given location. +/// You probably want to use [`lex`] instead. +pub fn lex_starts_at( + source: &str, + mode: Mode, + start_offset: TextSize, +) -> LexStartsAtIterator> { + LexStartsAtIterator { + start_offset, + inner: lex(source, mode), + } +} + +impl<'source> Lexer<'source> { + /// Create a new lexer from T and a starting location. You probably want to use + /// [`lex`] instead. + pub fn new(input: &'source str, mode: Mode) -> Self { + assert!( + u32::try_from(input.len()).is_ok(), + "Lexer only supports files with a size up to 4GB" + ); + + let mut lxr = Lexer { + state: State::AfterNewline, + nesting: 0, + indentations: Indentations::default(), + pending_indentation: None, + + source: input, + cursor: Cursor::new(input), + mode, + }; + // TODO: Handle possible mismatch between BOM and explicit encoding declaration. + // spell-checker:ignore feff + lxr.cursor.eat_char('\u{feff}'); + + lxr + } + + /// Lex an identifier. Also used for keywords and string/bytes literals with a prefix. + fn lex_identifier(&mut self, first: char) -> Result { + // Detect potential string like rb'' b'' f'' u'' r'' + match self.cursor.first() { + quote @ ('\'' | '"') => { + if let Ok(string_kind) = StringKind::try_from(first) { + self.cursor.bump(); + return self.lex_string(string_kind, quote); + } + } + second @ ('f' | 'F' | 'r' | 'R' | 'b' | 'B') if is_quote(self.cursor.second()) => { + self.cursor.bump(); + + if let Ok(string_kind) = StringKind::try_from([first, second]) { + let quote = self.cursor.bump().unwrap(); + return self.lex_string(string_kind, quote); + } + } + _ => {} + } + + self.cursor.eat_while(is_identifier_continuation); + + let text = self.token_text(); + + let keyword = match text { + "False" => Tok::False, + "None" => Tok::None, + "True" => Tok::True, + "and" => Tok::And, + "as" => Tok::As, + "assert" => Tok::Assert, + "async" => Tok::Async, + "await" => Tok::Await, + "break" => Tok::Break, + "case" => Tok::Case, + "class" => Tok::Class, + "continue" => Tok::Continue, + "def" => Tok::Def, + "del" => Tok::Del, + "elif" => Tok::Elif, + "else" => Tok::Else, + "except" => Tok::Except, + "finally" => Tok::Finally, + "for" => Tok::For, + "from" => Tok::From, + "global" => Tok::Global, + "if" => Tok::If, + "import" => Tok::Import, + "in" => Tok::In, + "is" => Tok::Is, + "lambda" => Tok::Lambda, + "match" => Tok::Match, + "nonlocal" => Tok::Nonlocal, + "not" => Tok::Not, + "or" => Tok::Or, + "pass" => Tok::Pass, + "raise" => Tok::Raise, + "return" => Tok::Return, + "try" => Tok::Try, + "type" => Tok::Type, + "while" => Tok::While, + "with" => Tok::With, + "yield" => Tok::Yield, + _ => { + return Ok(Tok::Name { + name: text.to_string(), + }) + } + }; + + Ok(keyword) + } + + /// Numeric lexing. The feast can start! + fn lex_number(&mut self, first: char) -> Result { + if first == '0' { + if self.cursor.eat_if(|c| matches!(c, 'x' | 'X')).is_some() { + self.lex_number_radix(Radix::Hex) + } else if self.cursor.eat_if(|c| matches!(c, 'o' | 'O')).is_some() { + self.lex_number_radix(Radix::Octal) + } else if self.cursor.eat_if(|c| matches!(c, 'b' | 'B')).is_some() { + self.lex_number_radix(Radix::Binary) + } else { + self.lex_decimal_number(first) + } + } else { + self.lex_decimal_number(first) + } + } + + /// Lex a hex/octal/decimal/binary number without a decimal point. + fn lex_number_radix(&mut self, radix: Radix) -> Result { + #[cfg(debug_assertions)] + debug_assert!(matches!( + self.cursor.previous().to_ascii_lowercase(), + 'x' | 'o' | 'b' + )); + + let value_text = self.radix_run(None, radix); + let value = + BigInt::from_str_radix(&value_text, radix.as_u32()).map_err(|e| LexicalError { + error: LexicalErrorType::OtherError(format!("{e:?}")), + location: self.token_range().start(), + })?; + Ok(Tok::Int { value }) + } + + /// Lex a normal number, that is, no octal, hex or binary number. + fn lex_decimal_number(&mut self, first_digit_or_dot: char) -> Result { + #[cfg(debug_assertions)] + debug_assert!(self.cursor.previous().is_ascii_digit() || self.cursor.previous() == '.'); + let start_is_zero = first_digit_or_dot == '0'; + + let mut value_text = if first_digit_or_dot == '.' { + String::new() + } else { + self.radix_run(Some(first_digit_or_dot), Radix::Decimal) + .into_owned() + }; + + let is_float = if first_digit_or_dot == '.' || self.cursor.eat_char('.') { + value_text.push('.'); + + if self.cursor.eat_char('_') { + return Err(LexicalError { + error: LexicalErrorType::OtherError("Invalid Syntax".to_owned()), + location: self.offset() - TextSize::new(1), + }); + } + + value_text.push_str(&self.radix_run(None, Radix::Decimal)); + true + } else { + // Normal number: + false + }; + + let is_float = match self.cursor.rest().as_bytes() { + [b'e' | b'E', b'0'..=b'9', ..] | [b'e' | b'E', b'-' | b'+', b'0'..=b'9', ..] => { + value_text.push('e'); + self.cursor.bump(); // e | E + + if let Some(sign) = self.cursor.eat_if(|c| matches!(c, '+' | '-')) { + value_text.push(sign); + } + + value_text.push_str(&self.radix_run(None, Radix::Decimal)); + + true + } + _ => is_float, + }; + + if is_float { + // Improvement: Use `Cow` instead of pushing to value text + let value = f64::from_str(&value_text).map_err(|_| LexicalError { + error: LexicalErrorType::OtherError("Invalid decimal literal".to_owned()), + location: self.token_start(), + })?; + + // Parse trailing 'j': + if self.cursor.eat_if(|c| matches!(c, 'j' | 'J')).is_some() { + Ok(Tok::Complex { + real: 0.0, + imag: value, + }) + } else { + Ok(Tok::Float { value }) + } + } else { + // Parse trailing 'j': + if self.cursor.eat_if(|c| matches!(c, 'j' | 'J')).is_some() { + let imag = f64::from_str(&value_text).unwrap(); + Ok(Tok::Complex { real: 0.0, imag }) + } else { + let value = value_text.parse::().unwrap(); + if start_is_zero && !value.is_zero() { + // leading zeros in decimal integer literals are not permitted + return Err(LexicalError { + error: LexicalErrorType::OtherError("Invalid Token".to_owned()), + location: self.token_range().start(), + }); + } + Ok(Tok::Int { value }) + } + } + } + + /// Consume a sequence of numbers with the given radix, + /// the digits can be decorated with underscores + /// like this: '`1_2_3_4`' == '1234' + fn radix_run(&mut self, first: Option, radix: Radix) -> Cow<'source, str> { + let start = if let Some(first) = first { + self.offset() - first.text_len() + } else { + self.offset() + }; + self.cursor.eat_while(|c| radix.is_digit(c)); + + let number = &self.source[TextRange::new(start, self.offset())]; + + // Number that contains `_` separators. Remove them from the parsed text. + if radix.is_digit(self.cursor.second()) && self.cursor.eat_char('_') { + let mut value_text = number.to_string(); + + loop { + if let Some(c) = self.cursor.eat_if(|c| radix.is_digit(c)) { + value_text.push(c); + } else if self.cursor.first() == '_' && radix.is_digit(self.cursor.second()) { + // Skip over `_` + self.cursor.bump(); + } else { + break; + } + } + + Cow::Owned(value_text) + } else { + Cow::Borrowed(number) + } + } + + /// Lex a single comment. + fn lex_comment(&mut self) -> Tok { + #[cfg(debug_assertions)] + debug_assert_eq!(self.cursor.previous(), '#'); + + self.cursor.eat_while(|c| !matches!(c, '\n' | '\r')); + + Tok::Comment(self.token_text().to_string()) + } + + /// Lex a single magic command. + fn lex_magic_command(&mut self, kind: MagicKind) -> Tok { + let mut value = String::new(); + + loop { + match self.cursor.first() { + '\\' => { + // Only skip the line continuation if it is followed by a newline + // otherwise it is a normal backslash which is part of the magic command: + // + // Skip this backslash + // v + // !pwd \ + // && ls -a | sed 's/^/\\ /' + // ^^ + // Don't skip these backslashes + if self.cursor.second() == '\r' { + self.cursor.bump(); + self.cursor.bump(); + self.cursor.eat_char('\n'); + continue; + } else if self.cursor.second() == '\n' { + self.cursor.bump(); + self.cursor.bump(); + continue; + } + + self.cursor.bump(); + value.push('\\'); + } + '\n' | '\r' | EOF_CHAR => { + return Tok::MagicCommand { kind, value }; + } + c => { + self.cursor.bump(); + value.push(c); + } + } + } + } + + /// Lex a string literal. + fn lex_string(&mut self, kind: StringKind, quote: char) -> Result { + #[cfg(debug_assertions)] + debug_assert_eq!(self.cursor.previous(), quote); + + // If the next two characters are also the quote character, then we have a triple-quoted + // string; consume those two characters and ensure that we require a triple-quote to close + let triple_quoted = if self.cursor.first() == quote && self.cursor.second() == quote { + self.cursor.bump(); + self.cursor.bump(); + true + } else { + false + }; + + let value_start = self.offset(); + + let value_end = loop { + match self.cursor.bump() { + Some('\\') => { + if self.cursor.eat_char('\r') { + self.cursor.eat_char('\n'); + } else { + self.cursor.bump(); + } + } + Some('\r' | '\n') if !triple_quoted => { + return Err(LexicalError { + error: LexicalErrorType::OtherError( + "EOL while scanning string literal".to_owned(), + ), + location: self.offset() - TextSize::new(1), + }); + } + Some(c) if c == quote => { + if triple_quoted { + if self.cursor.first() == quote && self.cursor.second() == quote { + self.cursor.bump(); + self.cursor.bump(); + break self.offset() - TextSize::new(3); + } + } else { + break self.offset() - TextSize::new(1); + } + } + + Some(_) => {} + None => { + return Err(LexicalError { + error: if triple_quoted { + LexicalErrorType::Eof + } else { + LexicalErrorType::StringError + }, + location: self.offset(), + }); + } + } + }; + + let tok = Tok::String { + value: self.source[TextRange::new(value_start, value_end)].to_string(), + kind, + triple_quoted, + }; + Ok(tok) + } + + // This is the main entry point. Call this function to retrieve the next token. + // This function is used by the iterator implementation. + pub fn next_token(&mut self) -> LexResult { + // Return dedent tokens until the current indentation level matches the indentation of the next token. + if let Some(indentation) = self.pending_indentation.take() { + if let Ok(Ordering::Greater) = self.indentations.current().try_compare(indentation) { + self.pending_indentation = Some(indentation); + self.indentations.pop(); + return Ok((Tok::Dedent, TextRange::empty(self.offset()))); + } + } + + let mut indentation = Indentation::root(); + self.cursor.start_token(); + + loop { + match self.cursor.first() { + ' ' => { + self.cursor.bump(); + indentation = indentation.add_space(); + } + '\t' => { + self.cursor.bump(); + indentation = indentation.add_tab(); + } + '\\' => { + self.cursor.bump(); + if self.cursor.eat_char('\r') { + self.cursor.eat_char('\n'); + } else if self.cursor.is_eof() { + return Err(LexicalError { + error: LexicalErrorType::Eof, + location: self.token_start(), + }); + } else if !self.cursor.eat_char('\n') { + return Err(LexicalError { + error: LexicalErrorType::LineContinuationError, + location: self.token_start(), + }); + } + indentation = Indentation::root(); + } + // Form feed + '\x0C' => { + self.cursor.bump(); + indentation = Indentation::root(); + } + _ => break, + } + } + + if self.state.is_after_newline() { + // Handle indentation if this is a new, not all empty, logical line + if !matches!(self.cursor.first(), '\n' | '\r' | '#' | EOF_CHAR) { + self.state = State::NonEmptyLogicalLine; + + if let Some(spanned) = self.handle_indentation(indentation)? { + // Set to false so that we don't handle indentation on the next call. + + return Ok(spanned); + } + } + } + + self.cursor.start_token(); + if let Some(c) = self.cursor.bump() { + if c.is_ascii() { + self.consume_ascii_character(c) + } else if is_unicode_identifier_start(c) { + let identifier = self.lex_identifier(c)?; + self.state = State::Other; + + Ok((identifier, self.token_range())) + } else if is_emoji_presentation(c) { + self.state = State::Other; + + Ok(( + Tok::Name { + name: c.to_string(), + }, + self.token_range(), + )) + } else { + Err(LexicalError { + error: LexicalErrorType::UnrecognizedToken { tok: c }, + location: self.token_start(), + }) + } + } else { + // Reached the end of the file. Emit a trailing newline token if not at the beginning of a logical line, + // empty the dedent stack, and finally, return the EndOfFile token. + self.consume_end() + } + } + + fn handle_indentation( + &mut self, + indentation: Indentation, + ) -> Result, LexicalError> { + let token = match self.indentations.current().try_compare(indentation) { + // Dedent + Ok(Ordering::Greater) => { + self.indentations.pop(); + self.pending_indentation = Some(indentation); + + Some((Tok::Dedent, TextRange::empty(self.offset()))) + } + + Ok(Ordering::Equal) => None, + + // Indent + Ok(Ordering::Less) => { + self.indentations.push(indentation); + Some((Tok::Indent, self.token_range())) + } + Err(_) => { + return Err(LexicalError { + error: LexicalErrorType::IndentationError, + location: self.offset(), + }); + } + }; + + Ok(token) + } + + fn consume_end(&mut self) -> Result { + // We reached end of file. + // First of all, we need all nestings to be finished. + if self.nesting > 0 { + return Err(LexicalError { + error: LexicalErrorType::Eof, + location: self.offset(), + }); + } + + // Next, insert a trailing newline, if required. + if !self.state.is_new_logical_line() { + self.state = State::AfterNewline; + Ok((Tok::Newline, TextRange::empty(self.offset()))) + } + // Next, flush the indentation stack to zero. + else if self.indentations.pop().is_some() { + Ok((Tok::Dedent, TextRange::empty(self.offset()))) + } else { + Ok((Tok::EndOfFile, TextRange::empty(self.offset()))) + } + } + + // Dispatch based on the given character. + fn consume_ascii_character(&mut self, c: char) -> Result { + let token = match c { + c if is_ascii_identifier_start(c) => self.lex_identifier(c)?, + '0'..='9' => self.lex_number(c)?, + '#' => return Ok((self.lex_comment(), self.token_range())), + '"' | '\'' => self.lex_string(StringKind::String, c)?, + '=' => { + if self.cursor.eat_char('=') { + Tok::EqEqual + } else { + self.state = State::AfterEqual; + return Ok((Tok::Equal, self.token_range())); + } + } + '+' => { + if self.cursor.eat_char('=') { + Tok::PlusEqual + } else { + Tok::Plus + } + } + '*' => { + if self.cursor.eat_char('=') { + Tok::StarEqual + } else if self.cursor.eat_char('*') { + if self.cursor.eat_char('=') { + Tok::DoubleStarEqual + } else { + Tok::DoubleStar + } + } else { + Tok::Star + } + } + + c @ ('%' | '!') + if self.mode == Mode::Jupyter + && self.state.is_after_equal() + && self.nesting == 0 => + { + // SAFETY: Safe because `c` has been matched against one of the possible magic command prefix + self.lex_magic_command(MagicKind::try_from(c).unwrap()) + } + + c @ ('%' | '!' | '?' | '/' | ';' | ',') + if self.mode == Mode::Jupyter && self.state.is_new_logical_line() => + { + let kind = if let Ok(kind) = MagicKind::try_from([c, self.cursor.first()]) { + self.cursor.bump(); + kind + } else { + // SAFETY: Safe because `c` has been matched against one of the possible magic command prefix + MagicKind::try_from(c).unwrap() + }; + + self.lex_magic_command(kind) + } + '/' => { + if self.cursor.eat_char('=') { + Tok::SlashEqual + } else if self.cursor.eat_char('/') { + if self.cursor.eat_char('=') { + Tok::DoubleSlashEqual + } else { + Tok::DoubleSlash + } + } else { + Tok::Slash + } + } + '%' => { + if self.cursor.eat_char('=') { + Tok::PercentEqual + } else { + Tok::Percent + } + } + '|' => { + if self.cursor.eat_char('=') { + Tok::VbarEqual + } else { + Tok::Vbar + } + } + '^' => { + if self.cursor.eat_char('=') { + Tok::CircumflexEqual + } else { + Tok::CircumFlex + } + } + '&' => { + if self.cursor.eat_char('=') { + Tok::AmperEqual + } else { + Tok::Amper + } + } + '-' => { + if self.cursor.eat_char('=') { + Tok::MinusEqual + } else if self.cursor.eat_char('>') { + Tok::Rarrow + } else { + Tok::Minus + } + } + '@' => { + if self.cursor.eat_char('=') { + Tok::AtEqual + } else { + Tok::At + } + } + '!' => { + if self.cursor.eat_char('=') { + Tok::NotEqual + } else { + return Err(LexicalError { + error: LexicalErrorType::UnrecognizedToken { tok: '!' }, + location: self.token_start(), + }); + } + } + '~' => Tok::Tilde, + '(' => { + self.nesting += 1; + Tok::Lpar + } + ')' => { + self.nesting = self.nesting.saturating_sub(1); + Tok::Rpar + } + '[' => { + self.nesting += 1; + Tok::Lsqb + } + ']' => { + self.nesting = self.nesting.saturating_sub(1); + Tok::Rsqb + } + '{' => { + self.nesting += 1; + Tok::Lbrace + } + '}' => { + self.nesting = self.nesting.saturating_sub(1); + Tok::Rbrace + } + ':' => { + if self.cursor.eat_char('=') { + Tok::ColonEqual + } else { + Tok::Colon + } + } + ';' => Tok::Semi, + '<' => { + if self.cursor.eat_char('<') { + if self.cursor.eat_char('=') { + Tok::LeftShiftEqual + } else { + Tok::LeftShift + } + } else if self.cursor.eat_char('=') { + Tok::LessEqual + } else { + Tok::Less + } + } + '>' => { + if self.cursor.eat_char('>') { + if self.cursor.eat_char('=') { + Tok::RightShiftEqual + } else { + Tok::RightShift + } + } else if self.cursor.eat_char('=') { + Tok::GreaterEqual + } else { + Tok::Greater + } + } + ',' => Tok::Comma, + '.' => { + if self.cursor.first().is_ascii_digit() { + self.lex_decimal_number('.')? + } else if self.cursor.first() == '.' && self.cursor.second() == '.' { + self.cursor.bump(); + self.cursor.bump(); + Tok::Ellipsis + } else { + Tok::Dot + } + } + '\n' => { + return Ok(( + if self.nesting == 0 && !self.state.is_new_logical_line() { + self.state = State::AfterNewline; + Tok::Newline + } else { + Tok::NonLogicalNewline + }, + self.token_range(), + )) + } + '\r' => { + self.cursor.eat_char('\n'); + + return Ok(( + if self.nesting == 0 && !self.state.is_new_logical_line() { + self.state = State::AfterNewline; + Tok::Newline + } else { + Tok::NonLogicalNewline + }, + self.token_range(), + )); + } + + _ => { + self.state = State::Other; + + return Err(LexicalError { + error: LexicalErrorType::UnrecognizedToken { tok: c }, + location: self.token_start(), + }); + } + }; + + self.state = State::Other; + + Ok((token, self.token_range())) + } + + #[inline] + fn token_range(&self) -> TextRange { + let end = self.offset(); + let len = self.cursor.token_len(); + + TextRange::at(end - len, len) + } + + #[inline] + fn token_text(&self) -> &'source str { + &self.source[self.token_range()] + } + + // Lexer doesn't allow files larger than 4GB + #[allow(clippy::cast_possible_truncation)] + #[inline] + fn offset(&self) -> TextSize { + TextSize::new(self.source.len() as u32) - self.cursor.text_len() + } + + #[inline] + fn token_start(&self) -> TextSize { + self.token_range().start() + } +} + +// Implement iterator pattern for Lexer. +// Calling the next element in the iterator will yield the next lexical +// token. +impl Iterator for Lexer<'_> { + type Item = LexResult; + + fn next(&mut self) -> Option { + let token = self.next_token(); + + match token { + Ok((Tok::EndOfFile, _)) => None, + r => Some(r), + } + } +} + +impl FusedIterator for Lexer<'_> {} + +/// Represents an error that occur during lexing and are +/// returned by the `parse_*` functions in the iterator in the +/// [lexer] implementation. +/// +/// [lexer]: crate::lexer +#[derive(Debug, PartialEq)] +pub struct LexicalError { + /// The type of error that occurred. + pub error: LexicalErrorType, + /// The location of the error. + pub location: TextSize, +} + +impl LexicalError { + /// Creates a new `LexicalError` with the given error type and location. + pub fn new(error: LexicalErrorType, location: TextSize) -> Self { + Self { error, location } + } +} + +/// Represents the different types of errors that can occur during lexing. +#[derive(Debug, PartialEq)] +pub enum LexicalErrorType { + // TODO: Can probably be removed, the places it is used seem to be able + // to use the `UnicodeError` variant instead. + #[doc(hidden)] + StringError, + // TODO: Should take a start/end position to report. + /// Decoding of a unicode escape sequence in a string literal failed. + UnicodeError, + /// The nesting of brackets/braces/parentheses is not balanced. + NestingError, + /// The indentation is not consistent. + IndentationError, + /// Inconsistent use of tabs and spaces. + TabError, + /// Encountered a tab after a space. + TabsAfterSpaces, + /// A non-default argument follows a default argument. + DefaultArgumentError, + /// A duplicate argument was found in a function definition. + DuplicateArgumentError(String), + /// A positional argument follows a keyword argument. + PositionalArgumentError, + /// An iterable argument unpacking `*args` follows keyword argument unpacking `**kwargs`. + UnpackedArgumentError, + /// A keyword argument was repeated. + DuplicateKeywordArgumentError(String), + /// An unrecognized token was encountered. + UnrecognizedToken { tok: char }, + /// An f-string error containing the [`FStringErrorType`]. + FStringError(FStringErrorType), + /// An unexpected character was encountered after a line continuation. + LineContinuationError, + /// An unexpected end of file was encountered. + Eof, + /// An unexpected error occurred. + OtherError(String), +} + +impl std::fmt::Display for LexicalErrorType { + fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { + match self { + LexicalErrorType::StringError => write!(f, "Got unexpected string"), + LexicalErrorType::FStringError(error) => write!(f, "f-string: {error}"), + LexicalErrorType::UnicodeError => write!(f, "Got unexpected unicode"), + LexicalErrorType::NestingError => write!(f, "Got unexpected nesting"), + LexicalErrorType::IndentationError => { + write!(f, "unindent does not match any outer indentation level") + } + LexicalErrorType::TabError => { + write!(f, "inconsistent use of tabs and spaces in indentation") + } + LexicalErrorType::TabsAfterSpaces => { + write!(f, "Tabs not allowed as part of indentation after spaces") + } + LexicalErrorType::DefaultArgumentError => { + write!(f, "non-default argument follows default argument") + } + LexicalErrorType::DuplicateArgumentError(arg_name) => { + write!(f, "duplicate argument '{arg_name}' in function definition") + } + LexicalErrorType::DuplicateKeywordArgumentError(arg_name) => { + write!(f, "keyword argument repeated: {arg_name}") + } + LexicalErrorType::PositionalArgumentError => { + write!(f, "positional argument follows keyword argument") + } + LexicalErrorType::UnpackedArgumentError => { + write!( + f, + "iterable argument unpacking follows keyword argument unpacking" + ) + } + LexicalErrorType::UnrecognizedToken { tok } => { + write!(f, "Got unexpected token {tok}") + } + LexicalErrorType::LineContinuationError => { + write!(f, "unexpected character after line continuation character") + } + LexicalErrorType::Eof => write!(f, "unexpected EOF while parsing"), + LexicalErrorType::OtherError(msg) => write!(f, "{msg}"), + } + } +} + +#[derive(Copy, Clone, Debug)] +enum State { + /// Lexer is right at the beginning of the file or after a `Newline` token. + AfterNewline, + + /// The lexer is at the start of a new logical line but **after** the indentation + NonEmptyLogicalLine, + + /// Lexer is right after an equal token + AfterEqual, + + /// Inside of a logical line + Other, +} + +impl State { + const fn is_after_newline(self) -> bool { + matches!(self, State::AfterNewline) + } + + const fn is_new_logical_line(self) -> bool { + matches!(self, State::AfterNewline | State::NonEmptyLogicalLine) + } + + const fn is_after_equal(self) -> bool { + matches!(self, State::AfterEqual) + } +} + +#[derive(Copy, Clone, Debug)] +enum Radix { + Binary, + Octal, + Decimal, + Hex, +} + +impl Radix { + const fn as_u32(self) -> u32 { + match self { + Radix::Binary => 2, + Radix::Octal => 8, + Radix::Decimal => 10, + Radix::Hex => 16, + } + } + + const fn is_digit(self, c: char) -> bool { + match self { + Radix::Binary => matches!(c, '0'..='1'), + Radix::Octal => matches!(c, '0'..='7'), + Radix::Decimal => c.is_ascii_digit(), + Radix::Hex => matches!(c, '0'..='9' | 'a'..='f' | 'A'..='F'), + } + } +} + +const fn is_quote(c: char) -> bool { + matches!(c, '\'' | '"') +} + +const fn is_ascii_identifier_start(c: char) -> bool { + matches!(c, 'a'..='z' | 'A'..='Z' | '_') +} + +// Checks if the character c is a valid starting character as described +// in https://docs.python.org/3/reference/lexical_analysis.html#identifiers +fn is_unicode_identifier_start(c: char) -> bool { + is_xid_start(c) +} + +// Checks if the character c is a valid continuation character as described +// in https://docs.python.org/3/reference/lexical_analysis.html#identifiers +fn is_identifier_continuation(c: char) -> bool { + match c { + 'a'..='z' | 'A'..='Z' | '_' | '0'..='9' => true, + c => is_xid_continue(c), + } +} + +#[cfg(test)] +mod tests { + use num_bigint::BigInt; + use ruff_python_ast::MagicKind; + + use super::*; + + const WINDOWS_EOL: &str = "\r\n"; + const MAC_EOL: &str = "\r"; + const UNIX_EOL: &str = "\n"; + + pub(crate) fn lex_source(source: &str) -> Vec { + let lexer = lex(source, Mode::Module); + lexer.map(|x| x.unwrap().0).collect() + } + + pub(crate) fn lex_jupyter_source(source: &str) -> Vec { + let lexer = lex(source, Mode::Jupyter); + lexer.map(|x| x.unwrap().0).collect() + } + + fn str_tok(s: &str) -> Tok { + Tok::String { + value: s.to_owned(), + kind: StringKind::String, + triple_quoted: false, + } + } + + fn raw_str_tok(s: &str) -> Tok { + Tok::String { + value: s.to_owned(), + kind: StringKind::RawString, + triple_quoted: false, + } + } + + fn assert_jupyter_magic_line_continuation_with_eol(eol: &str) { + let source = format!("%matplotlib \\{eol} --inline"); + let tokens = lex_jupyter_source(&source); + assert_eq!( + tokens, + vec![ + Tok::MagicCommand { + value: "matplotlib --inline".to_string(), + kind: MagicKind::Magic + }, + Tok::Newline + ] + ); + } + + #[test] + fn test_jupyter_magic_line_continuation_unix_eol() { + assert_jupyter_magic_line_continuation_with_eol(UNIX_EOL); + } + + #[test] + fn test_jupyter_magic_line_continuation_mac_eol() { + assert_jupyter_magic_line_continuation_with_eol(MAC_EOL); + } + + #[test] + fn test_jupyter_magic_line_continuation_windows_eol() { + assert_jupyter_magic_line_continuation_with_eol(WINDOWS_EOL); + } + + fn assert_jupyter_magic_line_continuation_with_eol_and_eof(eol: &str) { + let source = format!("%matplotlib \\{eol}"); + let tokens = lex_jupyter_source(&source); + assert_eq!( + tokens, + vec![ + Tok::MagicCommand { + value: "matplotlib ".to_string(), + kind: MagicKind::Magic + }, + Tok::Newline + ] + ); + } + + #[test] + fn test_jupyter_magic_line_continuation_unix_eol_and_eof() { + assert_jupyter_magic_line_continuation_with_eol_and_eof(UNIX_EOL); + } + + #[test] + fn test_jupyter_magic_line_continuation_mac_eol_and_eof() { + assert_jupyter_magic_line_continuation_with_eol_and_eof(MAC_EOL); + } + + #[test] + fn test_jupyter_magic_line_continuation_windows_eol_and_eof() { + assert_jupyter_magic_line_continuation_with_eol_and_eof(WINDOWS_EOL); + } + + #[test] + fn test_empty_jupyter_magic() { + let source = "%\n%%\n!\n!!\n?\n??\n/\n,\n;"; + let tokens = lex_jupyter_source(source); + assert_eq!( + tokens, + vec![ + Tok::MagicCommand { + value: String::new(), + kind: MagicKind::Magic, + }, + Tok::Newline, + Tok::MagicCommand { + value: String::new(), + kind: MagicKind::Magic2, + }, + Tok::Newline, + Tok::MagicCommand { + value: String::new(), + kind: MagicKind::Shell, + }, + Tok::Newline, + Tok::MagicCommand { + value: String::new(), + kind: MagicKind::ShCap, + }, + Tok::Newline, + Tok::MagicCommand { + value: String::new(), + kind: MagicKind::Help, + }, + Tok::Newline, + Tok::MagicCommand { + value: String::new(), + kind: MagicKind::Help2, + }, + Tok::Newline, + Tok::MagicCommand { + value: String::new(), + kind: MagicKind::Paren, + }, + Tok::Newline, + Tok::MagicCommand { + value: String::new(), + kind: MagicKind::Quote, + }, + Tok::Newline, + Tok::MagicCommand { + value: String::new(), + kind: MagicKind::Quote2, + }, + Tok::Newline, + ] + ); + } + + #[test] + fn test_jupyter_magic() { + let source = r" +?foo +??foo +%timeit a = b +%timeit a % 3 +%matplotlib \ + --inline +!pwd \ + && ls -a | sed 's/^/\\ /' +!!cd /Users/foo/Library/Application\ Support/ +/foo 1 2 +,foo 1 2 +;foo 1 2 +!ls +" + .trim(); + let tokens = lex_jupyter_source(source); + assert_eq!( + tokens, + vec![ + Tok::MagicCommand { + value: "foo".to_string(), + kind: MagicKind::Help, + }, + Tok::Newline, + Tok::MagicCommand { + value: "foo".to_string(), + kind: MagicKind::Help2, + }, + Tok::Newline, + Tok::MagicCommand { + value: "timeit a = b".to_string(), + kind: MagicKind::Magic, + }, + Tok::Newline, + Tok::MagicCommand { + value: "timeit a % 3".to_string(), + kind: MagicKind::Magic, + }, + Tok::Newline, + Tok::MagicCommand { + value: "matplotlib --inline".to_string(), + kind: MagicKind::Magic, + }, + Tok::Newline, + Tok::MagicCommand { + value: "pwd && ls -a | sed 's/^/\\\\ /'".to_string(), + kind: MagicKind::Shell, + }, + Tok::Newline, + Tok::MagicCommand { + value: "cd /Users/foo/Library/Application\\ Support/".to_string(), + kind: MagicKind::ShCap, + }, + Tok::Newline, + Tok::MagicCommand { + value: "foo 1 2".to_string(), + kind: MagicKind::Paren, + }, + Tok::Newline, + Tok::MagicCommand { + value: "foo 1 2".to_string(), + kind: MagicKind::Quote, + }, + Tok::Newline, + Tok::MagicCommand { + value: "foo 1 2".to_string(), + kind: MagicKind::Quote2, + }, + Tok::Newline, + Tok::MagicCommand { + value: "ls".to_string(), + kind: MagicKind::Shell, + }, + Tok::Newline, + ] + ); + } + #[test] + fn test_jupyter_magic_indentation() { + let source = r" +if True: + %matplotlib \ + --inline" + .trim(); + let tokens = lex_jupyter_source(source); + assert_eq!( + tokens, + vec![ + Tok::If, + Tok::True, + Tok::Colon, + Tok::Newline, + Tok::Indent, + Tok::MagicCommand { + value: "matplotlib --inline".to_string(), + kind: MagicKind::Magic, + }, + Tok::Newline, + Tok::Dedent, + ] + ); + } + + #[test] + fn test_jupyter_magic_assignment() { + let source = r" +pwd = !pwd +foo = %timeit a = b +bar = %timeit a % 3 +baz = %matplotlib \ + inline" + .trim(); + let tokens = lex_jupyter_source(source); + assert_eq!( + tokens, + vec![ + Tok::Name { + name: "pwd".to_string() + }, + Tok::Equal, + Tok::MagicCommand { + value: "pwd".to_string(), + kind: MagicKind::Shell, + }, + Tok::Newline, + Tok::Name { + name: "foo".to_string() + }, + Tok::Equal, + Tok::MagicCommand { + value: "timeit a = b".to_string(), + kind: MagicKind::Magic, + }, + Tok::Newline, + Tok::Name { + name: "bar".to_string() + }, + Tok::Equal, + Tok::MagicCommand { + value: "timeit a % 3".to_string(), + kind: MagicKind::Magic, + }, + Tok::Newline, + Tok::Name { + name: "baz".to_string() + }, + Tok::Equal, + Tok::MagicCommand { + value: "matplotlib inline".to_string(), + kind: MagicKind::Magic, + }, + Tok::Newline, + ] + ); + } + + fn assert_no_jupyter_magic(tokens: &[Tok]) { + for tok in tokens { + if let Tok::MagicCommand { .. } = tok { + panic!("Unexpected magic command token: {tok:?}") + } + } + } + + #[test] + fn test_jupyter_magic_not_an_assignment() { + let source = r" +# Other magic kinds are not valid here (can't test `foo = ?str` because '?' is not a valid token) +foo = /func +foo = ;func +foo = ,func + +(foo == %timeit a = b) +(foo := %timeit a = b) +def f(arg=%timeit a = b): + pass" + .trim(); + let tokens = lex_jupyter_source(source); + assert_no_jupyter_magic(&tokens); + } + + #[test] + fn test_numbers() { + let source = "0x2f 0o12 0b1101 0 123 123_45_67_890 0.2 1e+2 2.1e3 2j 2.2j"; + let tokens = lex_source(source); + assert_eq!( + tokens, + vec![ + Tok::Int { + value: BigInt::from(47), + }, + Tok::Int { + value: BigInt::from(10) + }, + Tok::Int { + value: BigInt::from(13), + }, + Tok::Int { + value: BigInt::from(0), + }, + Tok::Int { + value: BigInt::from(123), + }, + Tok::Int { + value: BigInt::from(1_234_567_890), + }, + Tok::Float { value: 0.2 }, + Tok::Float { value: 100.0 }, + Tok::Float { value: 2100.0 }, + Tok::Complex { + real: 0.0, + imag: 2.0, + }, + Tok::Complex { + real: 0.0, + imag: 2.2, + }, + Tok::Newline, + ] + ); + } + + macro_rules! test_line_comment { + ($($name:ident: $eol:expr,)*) => { + $( + #[test] + + fn $name() { + let source = format!(r"99232 # {}", $eol); + let tokens = lex_source(&source); + assert_eq!(tokens, vec![Tok::Int { value: BigInt::from(99232) }, Tok::Comment(format!("# {}", $eol)), Tok::Newline]); + } + )* + } + } + + test_line_comment! { + test_line_comment_long: " foo", + test_line_comment_whitespace: " ", + test_line_comment_single_whitespace: " ", + test_line_comment_empty: "", + } + + macro_rules! test_comment_until_eol { + ($($name:ident: $eol:expr,)*) => { + $( + #[test] + + fn $name() { + let source = format!("123 # Foo{}456", $eol); + let tokens = lex_source(&source); + assert_eq!( + tokens, + vec![ + Tok::Int { value: BigInt::from(123) }, + Tok::Comment("# Foo".to_string()), + Tok::Newline, + Tok::Int { value: BigInt::from(456) }, + Tok::Newline, + ] + ) + } + )* + } + } + + test_comment_until_eol! { + test_comment_until_windows_eol: WINDOWS_EOL, + test_comment_until_mac_eol: MAC_EOL, + test_comment_until_unix_eol: UNIX_EOL, + } + + #[test] + fn test_assignment() { + let source = r"a_variable = 99 + 2-0"; + let tokens = lex_source(source); + assert_eq!( + tokens, + vec![ + Tok::Name { + name: String::from("a_variable"), + }, + Tok::Equal, + Tok::Int { + value: BigInt::from(99) + }, + Tok::Plus, + Tok::Int { + value: BigInt::from(2) + }, + Tok::Minus, + Tok::Int { + value: BigInt::from(0) + }, + Tok::Newline, + ] + ); + } + + macro_rules! test_indentation_with_eol { + ($($name:ident: $eol:expr,)*) => { + $( + #[test] + + fn $name() { + let source = format!("def foo():{} return 99{}{}", $eol, $eol, $eol); + let tokens = lex_source(&source); + assert_eq!( + tokens, + vec![ + Tok::Def, + Tok::Name { + name: String::from("foo"), + }, + Tok::Lpar, + Tok::Rpar, + Tok::Colon, + Tok::Newline, + Tok::Indent, + Tok::Return, + Tok::Int { value: BigInt::from(99) }, + Tok::Newline, + Tok::NonLogicalNewline, + Tok::Dedent, + ] + ); + } + )* + }; + } + + test_indentation_with_eol! { + test_indentation_windows_eol: WINDOWS_EOL, + test_indentation_mac_eol: MAC_EOL, + test_indentation_unix_eol: UNIX_EOL, + } + + macro_rules! test_double_dedent_with_eol { + ($($name:ident: $eol:expr,)*) => { + $( + #[test] + + fn $name() { + let source = format!("def foo():{} if x:{}{} return 99{}{}", $eol, $eol, $eol, $eol, $eol); + let tokens = lex_source(&source); + assert_eq!( + tokens, + vec![ + Tok::Def, + Tok::Name { + name: String::from("foo"), + }, + Tok::Lpar, + Tok::Rpar, + Tok::Colon, + Tok::Newline, + Tok::Indent, + Tok::If, + Tok::Name { + name: String::from("x"), + }, + Tok::Colon, + Tok::Newline, + Tok::NonLogicalNewline, + Tok::Indent, + Tok::Return, + Tok::Int { value: BigInt::from(99) }, + Tok::Newline, + Tok::NonLogicalNewline, + Tok::Dedent, + Tok::Dedent, + ] + ); + } + )* + } + } + + macro_rules! test_double_dedent_with_tabs { + ($($name:ident: $eol:expr,)*) => { + $( + #[test] + + fn $name() { + let source = format!("def foo():{}\tif x:{}{}\t return 99{}{}", $eol, $eol, $eol, $eol, $eol); + let tokens = lex_source(&source); + assert_eq!( + tokens, + vec![ + Tok::Def, + Tok::Name { + name: String::from("foo"), + }, + Tok::Lpar, + Tok::Rpar, + Tok::Colon, + Tok::Newline, + Tok::Indent, + Tok::If, + Tok::Name { + name: String::from("x"), + }, + Tok::Colon, + Tok::Newline, + Tok::NonLogicalNewline, + Tok::Indent, + Tok::Return, + Tok::Int { value: BigInt::from(99) }, + Tok::Newline, + Tok::NonLogicalNewline, + Tok::Dedent, + Tok::Dedent, + ] + ); + } + )* + } + } + + test_double_dedent_with_eol! { + test_double_dedent_windows_eol: WINDOWS_EOL, + test_double_dedent_mac_eol: MAC_EOL, + test_double_dedent_unix_eol: UNIX_EOL, + } + + test_double_dedent_with_tabs! { + test_double_dedent_tabs_windows_eol: WINDOWS_EOL, + test_double_dedent_tabs_mac_eol: MAC_EOL, + test_double_dedent_tabs_unix_eol: UNIX_EOL, + } + + macro_rules! test_newline_in_brackets { + ($($name:ident: $eol:expr,)*) => { + $( + #[test] + + fn $name() { + let source = r"x = [ + + 1,2 +,(3, +4, +), { +5, +6,\ +7}] +".replace("\n", $eol); + let tokens = lex_source(&source); + assert_eq!( + tokens, + vec![ + Tok::Name { + name: String::from("x"), + }, + Tok::Equal, + Tok::Lsqb, + Tok::NonLogicalNewline, + Tok::NonLogicalNewline, + Tok::Int { value: BigInt::from(1) }, + Tok::Comma, + Tok::Int { value: BigInt::from(2) }, + Tok::NonLogicalNewline, + Tok::Comma, + Tok::Lpar, + Tok::Int { value: BigInt::from(3) }, + Tok::Comma, + Tok::NonLogicalNewline, + Tok::Int { value: BigInt::from(4) }, + Tok::Comma, + Tok::NonLogicalNewline, + Tok::Rpar, + Tok::Comma, + Tok::Lbrace, + Tok::NonLogicalNewline, + Tok::Int { value: BigInt::from(5) }, + Tok::Comma, + Tok::NonLogicalNewline, + Tok::Int { value: BigInt::from(6) }, + Tok::Comma, + // Continuation here - no NonLogicalNewline. + Tok::Int { value: BigInt::from(7) }, + Tok::Rbrace, + Tok::Rsqb, + Tok::Newline, + ] + ); + } + )* + }; + } + + test_newline_in_brackets! { + test_newline_in_brackets_windows_eol: WINDOWS_EOL, + test_newline_in_brackets_mac_eol: MAC_EOL, + test_newline_in_brackets_unix_eol: UNIX_EOL, + } + + #[test] + fn test_non_logical_newline_in_string_continuation() { + let source = r"( + 'a' + 'b' + + 'c' \ + 'd' +)"; + let tokens = lex_source(source); + assert_eq!( + tokens, + vec![ + Tok::Lpar, + Tok::NonLogicalNewline, + str_tok("a"), + Tok::NonLogicalNewline, + str_tok("b"), + Tok::NonLogicalNewline, + Tok::NonLogicalNewline, + str_tok("c"), + str_tok("d"), + Tok::NonLogicalNewline, + Tok::Rpar, + Tok::Newline, + ] + ); + } + + #[test] + fn test_logical_newline_line_comment() { + let source = "#Hello\n#World\n"; + let tokens = lex_source(source); + assert_eq!( + tokens, + vec![ + Tok::Comment("#Hello".to_owned()), + Tok::NonLogicalNewline, + Tok::Comment("#World".to_owned()), + Tok::NonLogicalNewline, + ] + ); + } + + #[test] + fn test_operators() { + let source = "//////=/ /"; + let tokens = lex_source(source); + assert_eq!( + tokens, + vec![ + Tok::DoubleSlash, + Tok::DoubleSlash, + Tok::DoubleSlashEqual, + Tok::Slash, + Tok::Slash, + Tok::Newline, + ] + ); + } + + #[test] + fn test_string() { + let source = r#""double" 'single' 'can\'t' "\\\"" '\t\r\n' '\g' r'raw\'' '\420' '\200\0a'"#; + let tokens = lex_source(source); + assert_eq!( + tokens, + vec![ + str_tok("double"), + str_tok("single"), + str_tok(r"can\'t"), + str_tok(r#"\\\""#), + str_tok(r"\t\r\n"), + str_tok(r"\g"), + raw_str_tok(r"raw\'"), + str_tok(r"\420"), + str_tok(r"\200\0a"), + Tok::Newline, + ] + ); + } + + fn assert_string_continuation_with_eol(eol: &str) { + let source = format!("\"abc\\{eol}def\""); + let tokens = lex_source(&source); + + assert_eq!( + tokens, + vec![str_tok(&format!("abc\\{eol}def")), Tok::Newline] + ); + } + + #[test] + fn test_string_continuation_windows_eol() { + assert_string_continuation_with_eol(WINDOWS_EOL); + } + + #[test] + fn test_string_continuation_mac_eol() { + assert_string_continuation_with_eol(MAC_EOL); + } + + #[test] + fn test_string_continuation_unix_eol() { + assert_string_continuation_with_eol(UNIX_EOL); + } + + #[test] + fn test_escape_unicode_name() { + let source = r#""\N{EN SPACE}""#; + let tokens = lex_source(source); + assert_eq!(tokens, vec![str_tok(r"\N{EN SPACE}"), Tok::Newline]); + } + + fn assert_triple_quoted(eol: &str) { + let source = format!("\"\"\"{eol} test string{eol} \"\"\""); + let tokens = lex_source(&source); + assert_eq!( + tokens, + vec![ + Tok::String { + value: format!("{eol} test string{eol} "), + kind: StringKind::String, + triple_quoted: true, + }, + Tok::Newline, + ] + ); + } + + #[test] + fn triple_quoted_windows_eol() { + assert_triple_quoted(WINDOWS_EOL); + } + + #[test] + fn triple_quoted_unix_eol() { + assert_triple_quoted(UNIX_EOL); + } + + #[test] + fn triple_quoted_macos_eol() { + assert_triple_quoted(MAC_EOL); + } +} diff --git a/crates/ruff_python_parser/src/lexer/cursor.rs b/crates/ruff_python_parser/src/lexer/cursor.rs new file mode 100644 index 0000000000..01c64c98e0 --- /dev/null +++ b/crates/ruff_python_parser/src/lexer/cursor.rs @@ -0,0 +1,107 @@ +use ruff_text_size::{TextLen, TextSize}; +use std::str::Chars; + +pub(crate) const EOF_CHAR: char = '\0'; + +#[derive(Clone, Debug)] +pub(super) struct Cursor<'a> { + chars: Chars<'a>, + source_length: TextSize, + #[cfg(debug_assertions)] + prev_char: char, +} + +impl<'a> Cursor<'a> { + pub(crate) fn new(source: &'a str) -> Self { + Self { + source_length: source.text_len(), + chars: source.chars(), + #[cfg(debug_assertions)] + prev_char: EOF_CHAR, + } + } + + /// Returns the previous token. Useful for debug assertions. + #[cfg(debug_assertions)] + pub(super) const fn previous(&self) -> char { + self.prev_char + } + + /// Peeks the next character from the input stream without consuming it. + /// Returns [`EOF_CHAR`] if the file is at the end of the file. + pub(super) fn first(&self) -> char { + self.chars.clone().next().unwrap_or(EOF_CHAR) + } + + /// Peeks the second character from the input stream without consuming it. + /// Returns [`EOF_CHAR`] if the position is past the end of the file. + pub(super) fn second(&self) -> char { + let mut chars = self.chars.clone(); + chars.next(); + chars.next().unwrap_or(EOF_CHAR) + } + + /// Returns the remaining text to lex. + pub(super) fn rest(&self) -> &'a str { + self.chars.as_str() + } + + // SAFETY: The `source.text_len` call in `new` would panic if the string length is larger than a `u32`. + #[allow(clippy::cast_possible_truncation)] + pub(super) fn text_len(&self) -> TextSize { + TextSize::new(self.chars.as_str().len() as u32) + } + + pub(super) fn token_len(&self) -> TextSize { + self.source_length - self.text_len() + } + + pub(super) fn start_token(&mut self) { + self.source_length = self.text_len(); + } + + pub(super) fn is_eof(&self) -> bool { + self.chars.as_str().is_empty() + } + + /// Consumes the next character + pub(super) fn bump(&mut self) -> Option { + let prev = self.chars.next()?; + + #[cfg(debug_assertions)] + { + self.prev_char = prev; + } + + Some(prev) + } + + pub(super) fn eat_char(&mut self, c: char) -> bool { + if self.first() == c { + self.bump(); + true + } else { + false + } + } + + pub(super) fn eat_if(&mut self, mut predicate: F) -> Option + where + F: FnMut(char) -> bool, + { + if predicate(self.first()) && !self.is_eof() { + self.bump() + } else { + None + } + } + + /// Eats symbols while predicate returns true or until the end of file is reached. + pub(super) fn eat_while(&mut self, mut predicate: impl FnMut(char) -> bool) { + // It was tried making optimized version of this for eg. line comments, but + // LLVM can inline all of this and compile it down to fast iteration over bytes. + while predicate(self.first()) && !self.is_eof() { + self.bump(); + } + } +} diff --git a/crates/ruff_python_parser/src/lexer/indentation.rs b/crates/ruff_python_parser/src/lexer/indentation.rs new file mode 100644 index 0000000000..9c2f6a05ee --- /dev/null +++ b/crates/ruff_python_parser/src/lexer/indentation.rs @@ -0,0 +1,126 @@ +use static_assertions::assert_eq_size; +use std::cmp::Ordering; +use std::fmt::Debug; + +/// The column index of an indentation. +/// +/// A space increments the column by one. A tab adds up to 2 (if tab size is 2) indices, but just one +/// if the column isn't even. +#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Default)] +pub(super) struct Column(u32); + +impl Column { + pub(super) const fn new(column: u32) -> Self { + Self(column) + } +} + +/// The number of characters in an indentation. Each character accounts for 1. +#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Default)] +pub(super) struct Character(u32); + +impl Character { + pub(super) const fn new(characters: u32) -> Self { + Self(characters) + } +} + +/// The [Indentation](https://docs.python.org/3/reference/lexical_analysis.html#indentation) of a logical line. +#[derive(Copy, Clone, Debug, Eq, PartialEq, Default)] +pub(super) struct Indentation { + column: Column, + character: Character, +} + +impl Indentation { + const TAB_SIZE: u32 = 2; + + pub(super) const fn root() -> Self { + Self { + column: Column::new(0), + character: Character::new(0), + } + } + + #[cfg(test)] + pub(super) const fn new(column: Column, character: Character) -> Self { + Self { column, character } + } + + #[must_use] + pub(super) fn add_space(self) -> Self { + Self { + character: Character(self.character.0 + 1), + column: Column(self.column.0 + 1), + } + } + + #[must_use] + pub(super) fn add_tab(self) -> Self { + Self { + character: Character(self.character.0 + 1), + // Compute the column index: + // * Adds `TAB_SIZE` if `column` is a multiple of `TAB_SIZE` + // * Rounds `column` up to the next multiple of `TAB_SIZE` otherwise. + // https://github.com/python/cpython/blob/2cf99026d6320f38937257da1ab014fc873a11a6/Parser/tokenizer.c#L1818 + column: Column((self.column.0 / Self::TAB_SIZE + 1) * Self::TAB_SIZE), + } + } + + pub(super) fn try_compare(self, other: Indentation) -> Result { + let column_ordering = self.column.cmp(&other.column); + let character_ordering = self.character.cmp(&other.character); + + if column_ordering == character_ordering { + Ok(column_ordering) + } else { + Err(UnexpectedIndentation) + } + } +} + +#[derive(Debug, Copy, Clone, PartialEq)] +pub(super) struct UnexpectedIndentation; + +// The indentations stack is used to keep track of the current indentation level +// [See Indentation](docs.python.org/3/reference/lexical_analysis.html#indentation). +#[derive(Debug, Clone, Default)] +pub(super) struct Indentations { + stack: Vec, +} + +impl Indentations { + pub(super) fn push(&mut self, indent: Indentation) { + debug_assert_eq!(self.current().try_compare(indent), Ok(Ordering::Less)); + + self.stack.push(indent); + } + + pub(super) fn pop(&mut self) -> Option { + self.stack.pop() + } + + pub(super) fn current(&self) -> &Indentation { + static ROOT: Indentation = Indentation::root(); + self.stack.last().unwrap_or(&ROOT) + } +} + +assert_eq_size!(Indentation, u64); + +#[cfg(test)] +mod tests { + use super::{Character, Column, Indentation}; + use std::cmp::Ordering; + + #[test] + fn indentation_try_compare() { + let tab = Indentation::new(Column::new(8), Character::new(1)); + + assert_eq!(tab.try_compare(tab), Ok(Ordering::Equal)); + + let two_tabs = Indentation::new(Column::new(16), Character::new(2)); + assert_eq!(two_tabs.try_compare(tab), Ok(Ordering::Greater)); + assert_eq!(tab.try_compare(two_tabs), Ok(Ordering::Less)); + } +} diff --git a/crates/ruff_python_parser/src/lib.rs b/crates/ruff_python_parser/src/lib.rs index 93c2f85b8e..141aa7d340 100644 --- a/crates/ruff_python_parser/src/lib.rs +++ b/crates/ruff_python_parser/src/lib.rs @@ -1,11 +1,134 @@ -use rustpython_ast::text_size::TextSize; -use rustpython_ast::{CmpOp, Expr, Mod, ModModule, Ranged, Suite}; -use rustpython_parser as parser; -use rustpython_parser::lexer::LexResult; -use rustpython_parser::text_size::TextRange; -use rustpython_parser::{lexer, Mode, ParseError, Tok}; +//! This crate can be used to parse Python source code into an Abstract +//! Syntax Tree. +//! +//! ## Overview: +//! +//! The process by which source code is parsed into an AST can be broken down +//! into two general stages: [lexical analysis] and [parsing]. +//! +//! During lexical analysis, the source code is converted into a stream of lexical +//! tokens that represent the smallest meaningful units of the language. For example, +//! the source code `print("Hello world")` would _roughly_ be converted into the following +//! stream of tokens: +//! +//! ```text +//! Name("print"), LeftParen, String("Hello world"), RightParen +//! ``` +//! +//! these tokens are then consumed by the `ruff_python_parser`, which matches them against a set of +//! grammar rules to verify that the source code is syntactically valid and to construct +//! an AST that represents the source code. +//! +//! During parsing, the `ruff_python_parser` consumes the tokens generated by the lexer and constructs +//! a tree representation of the source code. The tree is made up of nodes that represent +//! the different syntactic constructs of the language. If the source code is syntactically +//! invalid, parsing fails and an error is returned. After a successful parse, the AST can +//! be used to perform further analysis on the source code. Continuing with the example +//! above, the AST generated by the `ruff_python_parser` would _roughly_ look something like this: +//! +//! ```text +//! node: Expr { +//! value: { +//! node: Call { +//! func: { +//! node: Name { +//! id: "print", +//! ctx: Load, +//! }, +//! }, +//! args: [ +//! node: Constant { +//! value: Str("Hello World"), +//! kind: None, +//! }, +//! ], +//! keywords: [], +//! }, +//! }, +//! }, +//!``` +//! +//! Note: The Tokens/ASTs shown above are not the exact tokens/ASTs generated by the `ruff_python_parser`. +//! +//! ## Source code layout: +//! +//! The functionality of this crate is split into several modules: +//! +//! - token: This module contains the definition of the tokens that are generated by the lexer. +//! - [lexer]: This module contains the lexer and is responsible for generating the tokens. +//! - `ruff_python_parser`: This module contains an interface to the `ruff_python_parser` and is responsible for generating the AST. +//! - Functions and strings have special parsing requirements that are handled in additional files. +//! - mode: This module contains the definition of the different modes that the `ruff_python_parser` can be in. +//! +//! # Examples +//! +//! For example, to get a stream of tokens from a given string, one could do this: +//! +//! ``` +//! use ruff_python_parser::{lexer::lex, Mode}; +//! +//! let python_source = r#" +//! def is_odd(i): +//! return bool(i & 1) +//! "#; +//! let mut tokens = lex(python_source, Mode::Module); +//! assert!(tokens.all(|t| t.is_ok())); +//! ``` +//! +//! These tokens can be directly fed into the `ruff_python_parser` to generate an AST: +//! +//! ``` +//! use ruff_python_parser::{lexer::lex, Mode, parse_tokens}; +//! +//! let python_source = r#" +//! def is_odd(i): +//! return bool(i & 1) +//! "#; +//! let tokens = lex(python_source, Mode::Module); +//! let ast = parse_tokens(tokens, Mode::Module, ""); +//! +//! assert!(ast.is_ok()); +//! ``` +//! +//! Alternatively, you can use one of the other `parse_*` functions to parse a string directly without using a specific +//! mode or tokenizing the source beforehand: +//! +//! ``` +//! use ruff_python_parser::{Parse}; +//! use ruff_python_ast as ast; +//! +//! let python_source = r#" +//! def is_odd(i): +//! return bool(i & 1) +//! "#; +//! let ast = ast::Suite::parse(python_source, ""); +//! +//! assert!(ast.is_ok()); +//! ``` +//! +//! [lexical analysis]: https://en.wikipedia.org/wiki/Lexical_analysis +//! [parsing]: https://en.wikipedia.org/wiki/Parsing +//! [lexer]: crate::lexer -pub mod token_kind; +use crate::lexer::LexResult; +pub use parse::Parse; +pub use parser::{parse, parse_starts_at, parse_tokens, ParseError, ParseErrorType}; +#[allow(deprecated)] +pub use parser::{parse_expression, parse_expression_starts_at, parse_program}; +use ruff_python_ast::{CmpOp, Expr, Mod, ModModule, Ranged, Suite}; +use ruff_text_size::{TextRange, TextSize}; +pub use string::FStringErrorType; +pub use token::{StringKind, Tok, TokenKind}; + +mod function; +// Skip flattening lexer to distinguish from full ruff_python_parser +mod context; +pub mod lexer; +mod parse; +mod parser; +mod soft_keywords; +mod string; +mod token; pub mod typing; /// Collect tokens up to and including the first error. @@ -141,15 +264,97 @@ impl LocatedCmpOp { } } +/// Control in the different modes by which a source file can be parsed. +/// The mode argument specifies in what way code must be parsed. +#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq)] +pub enum Mode { + /// The code consists of a sequence of statements. + Module, + /// The code consists of a sequence of interactive statement. + Interactive, + /// The code consists of a single expression. + Expression, + /// The code consists of a sequence of statements which are part of a + /// Jupyter Notebook and thus could include escape commands scoped to + /// a single line. + /// + /// ## Limitations: + /// + /// For [Dynamic object information], the escape characters (`?`, `??`) + /// must be used before an object. For example, `?foo` will be recognized, + /// but `foo?` will not. + /// + /// ## Supported escape commands: + /// + /// - [Magic command system] which is limited to [line magics] and can start + /// with `?` or `??`. + /// - [Dynamic object information] which can start with `?` or `??`. + /// - [System shell access] which can start with `!` or `!!`. + /// - [Automatic parentheses and quotes] which can start with `/`, `;`, or `,`. + /// + /// [Magic command system]: https://ipython.readthedocs.io/en/stable/interactive/reference.html#magic-command-system + /// [line magics]: https://ipython.readthedocs.io/en/stable/interactive/magics.html#line-magics + /// [Dynamic object information]: https://ipython.readthedocs.io/en/stable/interactive/reference.html#dynamic-object-information + /// [System shell access]: https://ipython.readthedocs.io/en/stable/interactive/reference.html#system-shell-access + /// [Automatic parentheses and quotes]: https://ipython.readthedocs.io/en/stable/interactive/reference.html#automatic-parentheses-and-quotes + Jupyter, +} + +impl std::str::FromStr for Mode { + type Err = ModeParseError; + fn from_str(s: &str) -> Result { + match s { + "exec" | "single" => Ok(Mode::Module), + "eval" => Ok(Mode::Expression), + "jupyter" => Ok(Mode::Jupyter), + _ => Err(ModeParseError), + } + } +} + +/// Returned when a given mode is not valid. +#[derive(Debug)] +pub struct ModeParseError; + +impl std::fmt::Display for ModeParseError { + fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { + write!(f, r#"mode must be "exec", "eval", "jupyter", or "single""#) + } +} + +#[rustfmt::skip] +#[allow(unreachable_pub)] +#[allow(clippy::type_complexity)] +#[allow(clippy::extra_unused_lifetimes)] +#[allow(clippy::needless_lifetimes)] +#[allow(clippy::unused_self)] +#[allow(clippy::cast_sign_loss)] +#[allow(clippy::default_trait_access)] +#[allow(clippy::let_unit_value)] +#[allow(clippy::just_underscores_and_digits)] +#[allow(clippy::no_effect_underscore_binding)] +#[allow(clippy::trivially_copy_pass_by_ref)] +#[allow(clippy::option_option)] +#[allow(clippy::unnecessary_wraps)] +#[allow(clippy::uninlined_format_args)] +#[allow(clippy::cloned_instead_of_copied)] +mod python { + + #[cfg(feature = "lalrpop")] + include!(concat!(env!("OUT_DIR"), "/src/python.rs")); + + #[cfg(not(feature = "lalrpop"))] + include!("python.rs"); +} + #[cfg(test)] mod tests { + use crate::Parse; use crate::{first_colon_range, locate_cmp_ops, LocatedCmpOp}; use anyhow::Result; - use ruff_text_size::TextSize; - use rustpython_ast::text_size::{TextLen, TextRange}; - use rustpython_ast::CmpOp; - use rustpython_ast::Expr; - use rustpython_parser::Parse; + use ruff_python_ast::CmpOp; + use ruff_python_ast::Expr; + use ruff_text_size::{TextLen, TextRange, TextSize}; #[test] fn extract_first_colon_range() { diff --git a/crates/ruff_python_parser/src/parse.rs b/crates/ruff_python_parser/src/parse.rs new file mode 100644 index 0000000000..d5c64c8925 --- /dev/null +++ b/crates/ruff_python_parser/src/parse.rs @@ -0,0 +1,1190 @@ +use crate::lexer::{lex, lex_starts_at, LexResult}; +use crate::{parse_tokens, Mode, ParseError, ParseErrorType}; +use ruff_python_ast as ast; +use ruff_python_ast::Ranged; +use ruff_text_size::TextSize; + +/// Parse Python code string to implementor's type. +/// +/// # Example +/// +/// For example, parsing a simple function definition and a call to that function: +/// +/// ``` +/// use ruff_python_parser::{self as parser, Parse}; +/// use ruff_python_ast as ast; +/// let source = r#" +/// def foo(): +/// return 42 +/// +/// print(foo()) +/// "#; +/// let program = ast::Suite::parse(source, ""); +/// assert!(program.is_ok()); +/// ``` +/// +/// Parsing a single expression denoting the addition of two numbers, but this time specifying a different, +/// somewhat silly, location: +/// +/// ``` +/// # use ruff_text_size::TextSize; +/// # use ruff_python_ast as ast; +/// # use ruff_python_parser::{self as parser, Parse}; +/// +/// let expr = ast::Expr::parse_starts_at("1 + 2", "", TextSize::from(400)); +/// assert!(expr.is_ok()); +pub trait Parse +where + Self: Sized, +{ + const MODE: Mode; + + fn parse(source: &str, source_path: &str) -> Result { + let tokens = lex(source, Self::MODE); + + Self::parse_tokens(tokens, source_path) + } + + fn parse_without_path(source: &str) -> Result { + Self::parse(source, "") + } + + fn parse_starts_at( + source: &str, + source_path: &str, + offset: TextSize, + ) -> Result { + let tokens = lex_starts_at(source, Self::MODE, offset); + + Self::parse_tokens(tokens, source_path) + } + + fn parse_tokens( + lxr: impl IntoIterator, + source_path: &str, + ) -> Result; +} + +impl Parse for ast::ModModule { + const MODE: Mode = Mode::Module; + + fn parse_tokens( + lxr: impl IntoIterator, + source_path: &str, + ) -> Result { + match parse_tokens(lxr, Mode::Module, source_path)? { + ast::Mod::Module(m) => Ok(m), + _ => unreachable!("Mode::Module doesn't return other variant"), + } + } +} + +impl Parse for ast::ModExpression { + const MODE: Mode = Mode::Expression; + + fn parse_tokens( + lxr: impl IntoIterator, + source_path: &str, + ) -> Result { + match parse_tokens(lxr, Mode::Expression, source_path)? { + ast::Mod::Expression(m) => Ok(m), + _ => unreachable!("Mode::Module doesn't return other variant"), + } + } +} + +impl Parse for ast::ModInteractive { + const MODE: Mode = Mode::Interactive; + fn parse_tokens( + lxr: impl IntoIterator, + source_path: &str, + ) -> Result { + match parse_tokens(lxr, Mode::Interactive, source_path)? { + ast::Mod::Interactive(m) => Ok(m), + _ => unreachable!("Mode::Module doesn't return other variant"), + } + } +} + +impl Parse for ast::Suite { + const MODE: Mode = Mode::Module; + + fn parse_tokens( + lxr: impl IntoIterator, + source_path: &str, + ) -> Result { + Ok(ast::ModModule::parse_tokens(lxr, source_path)?.body) + } +} + +impl Parse for ast::Stmt { + const MODE: Mode = Mode::Module; + + fn parse_tokens( + lxr: impl IntoIterator, + source_path: &str, + ) -> Result { + let mut statements = ast::ModModule::parse_tokens(lxr, source_path)?.body; + let statement = match statements.len() { + 0 => { + return Err(ParseError { + error: ParseErrorType::Eof, + offset: TextSize::default(), + source_path: source_path.to_owned(), + }) + } + 1 => statements.pop().unwrap(), + _ => { + return Err(ParseError { + error: ParseErrorType::InvalidToken, + offset: statements[1].range().start(), + source_path: source_path.to_owned(), + }) + } + }; + Ok(statement) + } +} + +impl Parse for ast::Expr { + const MODE: Mode = Mode::Expression; + + fn parse_tokens( + lxr: impl IntoIterator, + source_path: &str, + ) -> Result { + Ok(*ast::ModExpression::parse_tokens(lxr, source_path)?.body) + } +} + +impl Parse for ast::Identifier { + const MODE: Mode = Mode::Expression; + + fn parse_tokens( + lxr: impl IntoIterator, + source_path: &str, + ) -> Result { + let expr = ast::Expr::parse_tokens(lxr, source_path)?; + match expr { + ast::Expr::Name(name) => { + let range = name.range(); + Ok(ast::Identifier::new(name.id, range)) + } + expr => Err(ParseError { + error: ParseErrorType::InvalidToken, + offset: expr.range().start(), + source_path: source_path.to_owned(), + }), + } + } +} + +impl Parse for ast::Constant { + const MODE: Mode = Mode::Expression; + + fn parse_tokens( + lxr: impl IntoIterator, + source_path: &str, + ) -> Result { + let expr = ast::Expr::parse_tokens(lxr, source_path)?; + match expr { + ast::Expr::Constant(c) => Ok(c.value), + expr => Err(ParseError { + error: ParseErrorType::InvalidToken, + offset: expr.range().start(), + source_path: source_path.to_owned(), + }), + } + } +} + +impl Parse for ast::StmtFunctionDef { + const MODE: Mode = Mode::Module; + + fn parse_tokens( + lxr: impl IntoIterator, + source_path: &str, + ) -> Result { + let node = ast::Stmt::parse_tokens(lxr, source_path)?; + match node { + ast::Stmt::FunctionDef(node) => Ok(node), + node => Err(ParseError { + error: ParseErrorType::InvalidToken, + offset: node.range().start(), + source_path: source_path.to_owned(), + }), + } + } +} + +impl Parse for ast::StmtAsyncFunctionDef { + const MODE: Mode = Mode::Module; + fn parse_tokens( + lxr: impl IntoIterator, + source_path: &str, + ) -> Result { + let node = ast::Stmt::parse_tokens(lxr, source_path)?; + match node { + ast::Stmt::AsyncFunctionDef(node) => Ok(node), + node => Err(ParseError { + error: ParseErrorType::InvalidToken, + offset: node.range().start(), + source_path: source_path.to_owned(), + }), + } + } +} + +impl Parse for ast::StmtClassDef { + const MODE: Mode = Mode::Module; + fn parse_tokens( + lxr: impl IntoIterator, + source_path: &str, + ) -> Result { + let node = ast::Stmt::parse_tokens(lxr, source_path)?; + match node { + ast::Stmt::ClassDef(node) => Ok(node), + node => Err(ParseError { + error: ParseErrorType::InvalidToken, + offset: node.range().start(), + source_path: source_path.to_owned(), + }), + } + } +} + +impl Parse for ast::StmtReturn { + const MODE: Mode = Mode::Module; + fn parse_tokens( + lxr: impl IntoIterator, + source_path: &str, + ) -> Result { + let node = ast::Stmt::parse_tokens(lxr, source_path)?; + match node { + ast::Stmt::Return(node) => Ok(node), + node => Err(ParseError { + error: ParseErrorType::InvalidToken, + offset: node.range().start(), + source_path: source_path.to_owned(), + }), + } + } +} + +impl Parse for ast::StmtDelete { + const MODE: Mode = Mode::Module; + fn parse_tokens( + lxr: impl IntoIterator, + source_path: &str, + ) -> Result { + let node = ast::Stmt::parse_tokens(lxr, source_path)?; + match node { + ast::Stmt::Delete(node) => Ok(node), + node => Err(ParseError { + error: ParseErrorType::InvalidToken, + offset: node.range().start(), + source_path: source_path.to_owned(), + }), + } + } +} + +impl Parse for ast::StmtAssign { + const MODE: Mode = Mode::Module; + fn parse_tokens( + lxr: impl IntoIterator, + source_path: &str, + ) -> Result { + let node = ast::Stmt::parse_tokens(lxr, source_path)?; + match node { + ast::Stmt::Assign(node) => Ok(node), + node => Err(ParseError { + error: ParseErrorType::InvalidToken, + offset: node.range().start(), + source_path: source_path.to_owned(), + }), + } + } +} + +impl Parse for ast::StmtTypeAlias { + const MODE: Mode = Mode::Module; + fn parse_tokens( + lxr: impl IntoIterator, + source_path: &str, + ) -> Result { + let node = ast::Stmt::parse_tokens(lxr, source_path)?; + match node { + ast::Stmt::TypeAlias(node) => Ok(node), + node => Err(ParseError { + error: ParseErrorType::InvalidToken, + offset: node.range().start(), + source_path: source_path.to_owned(), + }), + } + } +} + +impl Parse for ast::StmtAugAssign { + const MODE: Mode = Mode::Module; + fn parse_tokens( + lxr: impl IntoIterator, + source_path: &str, + ) -> Result { + let node = ast::Stmt::parse_tokens(lxr, source_path)?; + match node { + ast::Stmt::AugAssign(node) => Ok(node), + node => Err(ParseError { + error: ParseErrorType::InvalidToken, + offset: node.range().start(), + source_path: source_path.to_owned(), + }), + } + } +} + +impl Parse for ast::StmtAnnAssign { + const MODE: Mode = Mode::Module; + fn parse_tokens( + lxr: impl IntoIterator, + source_path: &str, + ) -> Result { + let node = ast::Stmt::parse_tokens(lxr, source_path)?; + match node { + ast::Stmt::AnnAssign(node) => Ok(node), + node => Err(ParseError { + error: ParseErrorType::InvalidToken, + offset: node.range().start(), + source_path: source_path.to_owned(), + }), + } + } +} + +impl Parse for ast::StmtFor { + const MODE: Mode = Mode::Module; + fn parse_tokens( + lxr: impl IntoIterator, + source_path: &str, + ) -> Result { + let node = ast::Stmt::parse_tokens(lxr, source_path)?; + match node { + ast::Stmt::For(node) => Ok(node), + node => Err(ParseError { + error: ParseErrorType::InvalidToken, + offset: node.range().start(), + source_path: source_path.to_owned(), + }), + } + } +} + +impl Parse for ast::StmtAsyncFor { + const MODE: Mode = Mode::Module; + fn parse_tokens( + lxr: impl IntoIterator, + source_path: &str, + ) -> Result { + let node = ast::Stmt::parse_tokens(lxr, source_path)?; + match node { + ast::Stmt::AsyncFor(node) => Ok(node), + node => Err(ParseError { + error: ParseErrorType::InvalidToken, + offset: node.range().start(), + source_path: source_path.to_owned(), + }), + } + } +} + +impl Parse for ast::StmtWhile { + const MODE: Mode = Mode::Module; + fn parse_tokens( + lxr: impl IntoIterator, + source_path: &str, + ) -> Result { + let node = ast::Stmt::parse_tokens(lxr, source_path)?; + match node { + ast::Stmt::While(node) => Ok(node), + node => Err(ParseError { + error: ParseErrorType::InvalidToken, + offset: node.range().start(), + source_path: source_path.to_owned(), + }), + } + } +} + +impl Parse for ast::StmtIf { + const MODE: Mode = Mode::Module; + fn parse_tokens( + lxr: impl IntoIterator, + source_path: &str, + ) -> Result { + let node = ast::Stmt::parse_tokens(lxr, source_path)?; + match node { + ast::Stmt::If(node) => Ok(node), + node => Err(ParseError { + error: ParseErrorType::InvalidToken, + offset: node.range().start(), + source_path: source_path.to_owned(), + }), + } + } +} + +impl Parse for ast::StmtWith { + const MODE: Mode = Mode::Module; + fn parse_tokens( + lxr: impl IntoIterator, + source_path: &str, + ) -> Result { + let node = ast::Stmt::parse_tokens(lxr, source_path)?; + match node { + ast::Stmt::With(node) => Ok(node), + node => Err(ParseError { + error: ParseErrorType::InvalidToken, + offset: node.range().start(), + source_path: source_path.to_owned(), + }), + } + } +} + +impl Parse for ast::StmtAsyncWith { + const MODE: Mode = Mode::Module; + fn parse_tokens( + lxr: impl IntoIterator, + source_path: &str, + ) -> Result { + let node = ast::Stmt::parse_tokens(lxr, source_path)?; + match node { + ast::Stmt::AsyncWith(node) => Ok(node), + node => Err(ParseError { + error: ParseErrorType::InvalidToken, + offset: node.range().start(), + source_path: source_path.to_owned(), + }), + } + } +} + +impl Parse for ast::StmtMatch { + const MODE: Mode = Mode::Module; + fn parse_tokens( + lxr: impl IntoIterator, + source_path: &str, + ) -> Result { + let node = ast::Stmt::parse_tokens(lxr, source_path)?; + match node { + ast::Stmt::Match(node) => Ok(node), + node => Err(ParseError { + error: ParseErrorType::InvalidToken, + offset: node.range().start(), + source_path: source_path.to_owned(), + }), + } + } +} + +impl Parse for ast::StmtRaise { + const MODE: Mode = Mode::Module; + fn parse_tokens( + lxr: impl IntoIterator, + source_path: &str, + ) -> Result { + let node = ast::Stmt::parse_tokens(lxr, source_path)?; + match node { + ast::Stmt::Raise(node) => Ok(node), + node => Err(ParseError { + error: ParseErrorType::InvalidToken, + offset: node.range().start(), + source_path: source_path.to_owned(), + }), + } + } +} + +impl Parse for ast::StmtTry { + const MODE: Mode = Mode::Module; + fn parse_tokens( + lxr: impl IntoIterator, + source_path: &str, + ) -> Result { + let node = ast::Stmt::parse_tokens(lxr, source_path)?; + match node { + ast::Stmt::Try(node) => Ok(node), + node => Err(ParseError { + error: ParseErrorType::InvalidToken, + offset: node.range().start(), + source_path: source_path.to_owned(), + }), + } + } +} + +impl Parse for ast::StmtTryStar { + const MODE: Mode = Mode::Module; + fn parse_tokens( + lxr: impl IntoIterator, + source_path: &str, + ) -> Result { + let node = ast::Stmt::parse_tokens(lxr, source_path)?; + match node { + ast::Stmt::TryStar(node) => Ok(node), + node => Err(ParseError { + error: ParseErrorType::InvalidToken, + offset: node.range().start(), + source_path: source_path.to_owned(), + }), + } + } +} + +impl Parse for ast::StmtAssert { + const MODE: Mode = Mode::Module; + fn parse_tokens( + lxr: impl IntoIterator, + source_path: &str, + ) -> Result { + let node = ast::Stmt::parse_tokens(lxr, source_path)?; + match node { + ast::Stmt::Assert(node) => Ok(node), + node => Err(ParseError { + error: ParseErrorType::InvalidToken, + offset: node.range().start(), + source_path: source_path.to_owned(), + }), + } + } +} + +impl Parse for ast::StmtImport { + const MODE: Mode = Mode::Module; + fn parse_tokens( + lxr: impl IntoIterator, + source_path: &str, + ) -> Result { + let node = ast::Stmt::parse_tokens(lxr, source_path)?; + match node { + ast::Stmt::Import(node) => Ok(node), + node => Err(ParseError { + error: ParseErrorType::InvalidToken, + offset: node.range().start(), + source_path: source_path.to_owned(), + }), + } + } +} + +impl Parse for ast::StmtImportFrom { + const MODE: Mode = Mode::Module; + fn parse_tokens( + lxr: impl IntoIterator, + source_path: &str, + ) -> Result { + let node = ast::Stmt::parse_tokens(lxr, source_path)?; + match node { + ast::Stmt::ImportFrom(node) => Ok(node), + node => Err(ParseError { + error: ParseErrorType::InvalidToken, + offset: node.range().start(), + source_path: source_path.to_owned(), + }), + } + } +} + +impl Parse for ast::StmtGlobal { + const MODE: Mode = Mode::Module; + fn parse_tokens( + lxr: impl IntoIterator, + source_path: &str, + ) -> Result { + let node = ast::Stmt::parse_tokens(lxr, source_path)?; + match node { + ast::Stmt::Global(node) => Ok(node), + node => Err(ParseError { + error: ParseErrorType::InvalidToken, + offset: node.range().start(), + source_path: source_path.to_owned(), + }), + } + } +} + +impl Parse for ast::StmtNonlocal { + const MODE: Mode = Mode::Module; + fn parse_tokens( + lxr: impl IntoIterator, + source_path: &str, + ) -> Result { + let node = ast::Stmt::parse_tokens(lxr, source_path)?; + match node { + ast::Stmt::Nonlocal(node) => Ok(node), + node => Err(ParseError { + error: ParseErrorType::InvalidToken, + offset: node.range().start(), + source_path: source_path.to_owned(), + }), + } + } +} + +impl Parse for ast::StmtExpr { + const MODE: Mode = Mode::Module; + fn parse_tokens( + lxr: impl IntoIterator, + source_path: &str, + ) -> Result { + let node = ast::Stmt::parse_tokens(lxr, source_path)?; + match node { + ast::Stmt::Expr(node) => Ok(node), + node => Err(ParseError { + error: ParseErrorType::InvalidToken, + offset: node.range().start(), + source_path: source_path.to_owned(), + }), + } + } +} + +impl Parse for ast::StmtPass { + const MODE: Mode = Mode::Module; + fn parse_tokens( + lxr: impl IntoIterator, + source_path: &str, + ) -> Result { + let node = ast::Stmt::parse_tokens(lxr, source_path)?; + match node { + ast::Stmt::Pass(node) => Ok(node), + node => Err(ParseError { + error: ParseErrorType::InvalidToken, + offset: node.range().start(), + source_path: source_path.to_owned(), + }), + } + } +} + +impl Parse for ast::StmtBreak { + const MODE: Mode = Mode::Module; + fn parse_tokens( + lxr: impl IntoIterator, + source_path: &str, + ) -> Result { + let node = ast::Stmt::parse_tokens(lxr, source_path)?; + match node { + ast::Stmt::Break(node) => Ok(node), + node => Err(ParseError { + error: ParseErrorType::InvalidToken, + offset: node.range().start(), + source_path: source_path.to_owned(), + }), + } + } +} + +impl Parse for ast::StmtContinue { + const MODE: Mode = Mode::Module; + fn parse_tokens( + lxr: impl IntoIterator, + source_path: &str, + ) -> Result { + let node = ast::Stmt::parse_tokens(lxr, source_path)?; + match node { + ast::Stmt::Continue(node) => Ok(node), + node => Err(ParseError { + error: ParseErrorType::InvalidToken, + offset: node.range().start(), + source_path: source_path.to_owned(), + }), + } + } +} + +impl Parse for ast::ExprBoolOp { + const MODE: Mode = Mode::Expression; + fn parse_tokens( + lxr: impl IntoIterator, + source_path: &str, + ) -> Result { + let node = ast::Expr::parse_tokens(lxr, source_path)?; + match node { + ast::Expr::BoolOp(node) => Ok(node), + node => Err(ParseError { + error: ParseErrorType::InvalidToken, + offset: node.range().start(), + source_path: source_path.to_owned(), + }), + } + } +} + +impl Parse for ast::ExprNamedExpr { + const MODE: Mode = Mode::Expression; + fn parse_tokens( + lxr: impl IntoIterator, + source_path: &str, + ) -> Result { + let node = ast::Expr::parse_tokens(lxr, source_path)?; + match node { + ast::Expr::NamedExpr(node) => Ok(node), + node => Err(ParseError { + error: ParseErrorType::InvalidToken, + offset: node.range().start(), + source_path: source_path.to_owned(), + }), + } + } +} + +impl Parse for ast::ExprBinOp { + const MODE: Mode = Mode::Expression; + fn parse_tokens( + lxr: impl IntoIterator, + source_path: &str, + ) -> Result { + let node = ast::Expr::parse_tokens(lxr, source_path)?; + match node { + ast::Expr::BinOp(node) => Ok(node), + node => Err(ParseError { + error: ParseErrorType::InvalidToken, + offset: node.range().start(), + source_path: source_path.to_owned(), + }), + } + } +} + +impl Parse for ast::ExprUnaryOp { + const MODE: Mode = Mode::Expression; + fn parse_tokens( + lxr: impl IntoIterator, + source_path: &str, + ) -> Result { + let node = ast::Expr::parse_tokens(lxr, source_path)?; + match node { + ast::Expr::UnaryOp(node) => Ok(node), + node => Err(ParseError { + error: ParseErrorType::InvalidToken, + offset: node.range().start(), + source_path: source_path.to_owned(), + }), + } + } +} + +impl Parse for ast::ExprLambda { + const MODE: Mode = Mode::Expression; + fn parse_tokens( + lxr: impl IntoIterator, + source_path: &str, + ) -> Result { + let node = ast::Expr::parse_tokens(lxr, source_path)?; + match node { + ast::Expr::Lambda(node) => Ok(node), + node => Err(ParseError { + error: ParseErrorType::InvalidToken, + offset: node.range().start(), + source_path: source_path.to_owned(), + }), + } + } +} + +impl Parse for ast::ExprIfExp { + const MODE: Mode = Mode::Expression; + fn parse_tokens( + lxr: impl IntoIterator, + source_path: &str, + ) -> Result { + let node = ast::Expr::parse_tokens(lxr, source_path)?; + match node { + ast::Expr::IfExp(node) => Ok(node), + node => Err(ParseError { + error: ParseErrorType::InvalidToken, + offset: node.range().start(), + source_path: source_path.to_owned(), + }), + } + } +} + +impl Parse for ast::ExprDict { + const MODE: Mode = Mode::Expression; + fn parse_tokens( + lxr: impl IntoIterator, + source_path: &str, + ) -> Result { + let node = ast::Expr::parse_tokens(lxr, source_path)?; + match node { + ast::Expr::Dict(node) => Ok(node), + node => Err(ParseError { + error: ParseErrorType::InvalidToken, + offset: node.range().start(), + source_path: source_path.to_owned(), + }), + } + } +} + +impl Parse for ast::ExprSet { + const MODE: Mode = Mode::Expression; + fn parse_tokens( + lxr: impl IntoIterator, + source_path: &str, + ) -> Result { + let node = ast::Expr::parse_tokens(lxr, source_path)?; + match node { + ast::Expr::Set(node) => Ok(node), + node => Err(ParseError { + error: ParseErrorType::InvalidToken, + offset: node.range().start(), + source_path: source_path.to_owned(), + }), + } + } +} + +impl Parse for ast::ExprListComp { + const MODE: Mode = Mode::Expression; + fn parse_tokens( + lxr: impl IntoIterator, + source_path: &str, + ) -> Result { + let node = ast::Expr::parse_tokens(lxr, source_path)?; + match node { + ast::Expr::ListComp(node) => Ok(node), + node => Err(ParseError { + error: ParseErrorType::InvalidToken, + offset: node.range().start(), + source_path: source_path.to_owned(), + }), + } + } +} + +impl Parse for ast::ExprSetComp { + const MODE: Mode = Mode::Expression; + fn parse_tokens( + lxr: impl IntoIterator, + source_path: &str, + ) -> Result { + let node = ast::Expr::parse_tokens(lxr, source_path)?; + match node { + ast::Expr::SetComp(node) => Ok(node), + node => Err(ParseError { + error: ParseErrorType::InvalidToken, + offset: node.range().start(), + source_path: source_path.to_owned(), + }), + } + } +} + +impl Parse for ast::ExprDictComp { + const MODE: Mode = Mode::Expression; + fn parse_tokens( + lxr: impl IntoIterator, + source_path: &str, + ) -> Result { + let node = ast::Expr::parse_tokens(lxr, source_path)?; + match node { + ast::Expr::DictComp(node) => Ok(node), + node => Err(ParseError { + error: ParseErrorType::InvalidToken, + offset: node.range().start(), + source_path: source_path.to_owned(), + }), + } + } +} + +impl Parse for ast::ExprGeneratorExp { + const MODE: Mode = Mode::Expression; + fn parse_tokens( + lxr: impl IntoIterator, + source_path: &str, + ) -> Result { + let node = ast::Expr::parse_tokens(lxr, source_path)?; + match node { + ast::Expr::GeneratorExp(node) => Ok(node), + node => Err(ParseError { + error: ParseErrorType::InvalidToken, + offset: node.range().start(), + source_path: source_path.to_owned(), + }), + } + } +} + +impl Parse for ast::ExprAwait { + const MODE: Mode = Mode::Expression; + fn parse_tokens( + lxr: impl IntoIterator, + source_path: &str, + ) -> Result { + let node = ast::Expr::parse_tokens(lxr, source_path)?; + match node { + ast::Expr::Await(node) => Ok(node), + node => Err(ParseError { + error: ParseErrorType::InvalidToken, + offset: node.range().start(), + source_path: source_path.to_owned(), + }), + } + } +} + +impl Parse for ast::ExprYield { + const MODE: Mode = Mode::Expression; + fn parse_tokens( + lxr: impl IntoIterator, + source_path: &str, + ) -> Result { + let node = ast::Expr::parse_tokens(lxr, source_path)?; + match node { + ast::Expr::Yield(node) => Ok(node), + node => Err(ParseError { + error: ParseErrorType::InvalidToken, + offset: node.range().start(), + source_path: source_path.to_owned(), + }), + } + } +} + +impl Parse for ast::ExprYieldFrom { + const MODE: Mode = Mode::Expression; + fn parse_tokens( + lxr: impl IntoIterator, + source_path: &str, + ) -> Result { + let node = ast::Expr::parse_tokens(lxr, source_path)?; + match node { + ast::Expr::YieldFrom(node) => Ok(node), + node => Err(ParseError { + error: ParseErrorType::InvalidToken, + offset: node.range().start(), + source_path: source_path.to_owned(), + }), + } + } +} + +impl Parse for ast::ExprCompare { + const MODE: Mode = Mode::Expression; + fn parse_tokens( + lxr: impl IntoIterator, + source_path: &str, + ) -> Result { + let node = ast::Expr::parse_tokens(lxr, source_path)?; + match node { + ast::Expr::Compare(node) => Ok(node), + node => Err(ParseError { + error: ParseErrorType::InvalidToken, + offset: node.range().start(), + source_path: source_path.to_owned(), + }), + } + } +} + +impl Parse for ast::ExprCall { + const MODE: Mode = Mode::Expression; + fn parse_tokens( + lxr: impl IntoIterator, + source_path: &str, + ) -> Result { + let node = ast::Expr::parse_tokens(lxr, source_path)?; + match node { + ast::Expr::Call(node) => Ok(node), + node => Err(ParseError { + error: ParseErrorType::InvalidToken, + offset: node.range().start(), + source_path: source_path.to_owned(), + }), + } + } +} + +impl Parse for ast::ExprFormattedValue { + const MODE: Mode = Mode::Expression; + fn parse_tokens( + lxr: impl IntoIterator, + source_path: &str, + ) -> Result { + let node = ast::Expr::parse_tokens(lxr, source_path)?; + match node { + ast::Expr::FormattedValue(node) => Ok(node), + node => Err(ParseError { + error: ParseErrorType::InvalidToken, + offset: node.range().start(), + source_path: source_path.to_owned(), + }), + } + } +} + +impl Parse for ast::ExprJoinedStr { + const MODE: Mode = Mode::Expression; + fn parse_tokens( + lxr: impl IntoIterator, + source_path: &str, + ) -> Result { + let node = ast::Expr::parse_tokens(lxr, source_path)?; + match node { + ast::Expr::JoinedStr(node) => Ok(node), + node => Err(ParseError { + error: ParseErrorType::InvalidToken, + offset: node.range().start(), + source_path: source_path.to_owned(), + }), + } + } +} + +impl Parse for ast::ExprConstant { + const MODE: Mode = Mode::Expression; + fn parse_tokens( + lxr: impl IntoIterator, + source_path: &str, + ) -> Result { + let node = ast::Expr::parse_tokens(lxr, source_path)?; + match node { + ast::Expr::Constant(node) => Ok(node), + node => Err(ParseError { + error: ParseErrorType::InvalidToken, + offset: node.range().start(), + source_path: source_path.to_owned(), + }), + } + } +} + +impl Parse for ast::ExprAttribute { + const MODE: Mode = Mode::Expression; + fn parse_tokens( + lxr: impl IntoIterator, + source_path: &str, + ) -> Result { + let node = ast::Expr::parse_tokens(lxr, source_path)?; + match node { + ast::Expr::Attribute(node) => Ok(node), + node => Err(ParseError { + error: ParseErrorType::InvalidToken, + offset: node.range().start(), + source_path: source_path.to_owned(), + }), + } + } +} + +impl Parse for ast::ExprSubscript { + const MODE: Mode = Mode::Expression; + fn parse_tokens( + lxr: impl IntoIterator, + source_path: &str, + ) -> Result { + let node = ast::Expr::parse_tokens(lxr, source_path)?; + match node { + ast::Expr::Subscript(node) => Ok(node), + node => Err(ParseError { + error: ParseErrorType::InvalidToken, + offset: node.range().start(), + source_path: source_path.to_owned(), + }), + } + } +} + +impl Parse for ast::ExprStarred { + const MODE: Mode = Mode::Expression; + fn parse_tokens( + lxr: impl IntoIterator, + source_path: &str, + ) -> Result { + let node = ast::Expr::parse_tokens(lxr, source_path)?; + match node { + ast::Expr::Starred(node) => Ok(node), + node => Err(ParseError { + error: ParseErrorType::InvalidToken, + offset: node.range().start(), + source_path: source_path.to_owned(), + }), + } + } +} + +impl Parse for ast::ExprName { + const MODE: Mode = Mode::Expression; + fn parse_tokens( + lxr: impl IntoIterator, + source_path: &str, + ) -> Result { + let node = ast::Expr::parse_tokens(lxr, source_path)?; + match node { + ast::Expr::Name(node) => Ok(node), + node => Err(ParseError { + error: ParseErrorType::InvalidToken, + offset: node.range().start(), + source_path: source_path.to_owned(), + }), + } + } +} + +impl Parse for ast::ExprList { + const MODE: Mode = Mode::Expression; + fn parse_tokens( + lxr: impl IntoIterator, + source_path: &str, + ) -> Result { + let node = ast::Expr::parse_tokens(lxr, source_path)?; + match node { + ast::Expr::List(node) => Ok(node), + node => Err(ParseError { + error: ParseErrorType::InvalidToken, + offset: node.range().start(), + source_path: source_path.to_owned(), + }), + } + } +} + +impl Parse for ast::ExprTuple { + const MODE: Mode = Mode::Expression; + fn parse_tokens( + lxr: impl IntoIterator, + source_path: &str, + ) -> Result { + let node = ast::Expr::parse_tokens(lxr, source_path)?; + match node { + ast::Expr::Tuple(node) => Ok(node), + node => Err(ParseError { + error: ParseErrorType::InvalidToken, + offset: node.range().start(), + source_path: source_path.to_owned(), + }), + } + } +} + +impl Parse for ast::ExprSlice { + const MODE: Mode = Mode::Expression; + fn parse_tokens( + lxr: impl IntoIterator, + source_path: &str, + ) -> Result { + let node = ast::Expr::parse_tokens(lxr, source_path)?; + match node { + ast::Expr::Slice(node) => Ok(node), + node => Err(ParseError { + error: ParseErrorType::InvalidToken, + offset: node.range().start(), + source_path: source_path.to_owned(), + }), + } + } +} diff --git a/crates/ruff_python_parser/src/parser.rs b/crates/ruff_python_parser/src/parser.rs new file mode 100644 index 0000000000..25c5b4f293 --- /dev/null +++ b/crates/ruff_python_parser/src/parser.rs @@ -0,0 +1,1214 @@ +//! Contains the interface to the Python `ruff_python_parser`. +//! +//! Functions in this module can be used to parse Python code into an [Abstract Syntax Tree] +//! (AST) that is then transformed into bytecode. +//! +//! There are three ways to parse Python code corresponding to the different [`Mode`]s +//! defined in the [`mode`] module. +//! +//! All functions return a [`Result`](std::result::Result) containing the parsed AST or +//! a [`ParseError`] if parsing failed. +//! +//! [Abstract Syntax Tree]: https://en.wikipedia.org/wiki/Abstract_syntax_tree +//! [`Mode`]: crate::mode + +use std::{fmt, iter}; + +use itertools::Itertools; +pub(super) use lalrpop_util::ParseError as LalrpopError; +use ruff_text_size::{TextRange, TextSize}; + +use crate::{ + lexer::{self, LexResult, LexicalError, LexicalErrorType}, + python, + token::Tok, + Mode, Parse, +}; +use ruff_python_ast as ast; + +/// Parse a full Python program usually consisting of multiple lines. +/// +/// This is a convenience function that can be used to parse a full Python program without having to +/// specify the [`Mode`] or the location. It is probably what you want to use most of the time. +/// +/// # Example +/// +/// For example, parsing a simple function definition and a call to that function: +/// +/// ``` +/// use ruff_python_parser as parser; +/// let source = r#" +/// def foo(): +/// return 42 +/// +/// print(foo()) +/// "#; +/// let program = parser::parse_program(source, ""); +/// assert!(program.is_ok()); +/// ``` +#[deprecated = "Use ruff_python_ast::Suite::parse from ruff_python_parser::Parse trait."] +pub fn parse_program(source: &str, source_path: &str) -> Result { + parse(source, Mode::Module, source_path).map(|top| match top { + ast::Mod::Module(ast::ModModule { body, .. }) => body, + _ => unreachable!(), + }) +} + +/// Parses a single Python expression. +/// +/// This convenience function can be used to parse a single expression without having to +/// specify the Mode or the location. +/// +/// # Example +/// +/// For example, parsing a single expression denoting the addition of two numbers: +/// +/// ``` +/// use ruff_python_parser as parser; +/// let expr = parser::parse_expression("1 + 2", ""); +/// +/// assert!(expr.is_ok()); +/// +/// ``` +#[deprecated = "Use ruff_python_ast::Expr::parse from ruff_python_parser::Parse trait."] +pub fn parse_expression(source: &str, path: &str) -> Result { + ast::Expr::parse(source, path) +} + +/// Parses a Python expression from a given location. +/// +/// This function allows to specify the location of the expression in the source code, other than +/// that, it behaves exactly like [`parse_expression`]. +/// +/// # Example +/// +/// Parsing a single expression denoting the addition of two numbers, but this time specifying a different, +/// somewhat silly, location: +/// +/// ``` +/// use ruff_python_parser::{parse_expression_starts_at}; +/// # use ruff_text_size::TextSize; +/// +/// let expr = parse_expression_starts_at("1 + 2", "", TextSize::from(400)); +/// assert!(expr.is_ok()); +/// ``` +#[deprecated = "Use ruff_python_ast::Expr::parse_starts_at from ruff_python_parser::Parse trait."] +pub fn parse_expression_starts_at( + source: &str, + path: &str, + offset: TextSize, +) -> Result { + ast::Expr::parse_starts_at(source, path, offset) +} + +/// Parse the given Python source code using the specified [`Mode`]. +/// +/// This function is the most general function to parse Python code. Based on the [`Mode`] supplied, +/// it can be used to parse a single expression, a full Python program, an interactive expression +/// or a Python program containing Jupyter magics. +/// +/// # Example +/// +/// If we want to parse a simple expression, we can use the [`Mode::Expression`] mode during +/// parsing: +/// +/// ``` +/// use ruff_python_parser::{Mode, parse}; +/// +/// let expr = parse("1 + 2", Mode::Expression, ""); +/// assert!(expr.is_ok()); +/// ``` +/// +/// Alternatively, we can parse a full Python program consisting of multiple lines: +/// +/// ``` +/// use ruff_python_parser::{Mode, parse}; +/// +/// let source = r#" +/// class Greeter: +/// +/// def greet(self): +/// print("Hello, world!") +/// "#; +/// let program = parse(source, Mode::Module, ""); +/// assert!(program.is_ok()); +/// ``` +/// +/// Additionally, we can parse a Python program containing Jupyter magics: +/// +/// ``` +/// use ruff_python_parser::{Mode, parse}; +/// +/// let source = r#" +/// %timeit 1 + 2 +/// ?str.replace +/// !ls +/// "#; +/// let program = parse(source, Mode::Jupyter, ""); +/// assert!(program.is_ok()); +/// ``` +pub fn parse(source: &str, mode: Mode, source_path: &str) -> Result { + parse_starts_at(source, mode, source_path, TextSize::default()) +} + +/// Parse the given Python source code using the specified [`Mode`] and [`TextSize`]. +/// +/// This function allows to specify the location of the the source code, other than +/// that, it behaves exactly like [`parse`]. +/// +/// # Example +/// +/// ``` +/// # use ruff_text_size::TextSize; +/// use ruff_python_parser::{Mode, parse_starts_at}; +/// +/// let source = r#" +/// def fib(i): +/// a, b = 0, 1 +/// for _ in range(i): +/// a, b = b, a + b +/// return a +/// +/// print(fib(42)) +/// "#; +/// let program = parse_starts_at(source, Mode::Module, "", TextSize::from(0)); +/// assert!(program.is_ok()); +/// ``` +pub fn parse_starts_at( + source: &str, + mode: Mode, + source_path: &str, + offset: TextSize, +) -> Result { + let lxr = lexer::lex_starts_at(source, mode, offset); + parse_tokens(lxr, mode, source_path) +} + +/// Parse an iterator of [`LexResult`]s using the specified [`Mode`]. +/// +/// This could allow you to perform some preprocessing on the tokens before parsing them. +/// +/// # Example +/// +/// As an example, instead of parsing a string, we can parse a list of tokens after we generate +/// them using the [`lexer::lex`] function: +/// +/// ``` +/// use ruff_python_parser::{lexer::lex, Mode, parse_tokens}; +/// +/// let expr = parse_tokens(lex("1 + 2", Mode::Expression), Mode::Expression, ""); +/// assert!(expr.is_ok()); +/// ``` +pub fn parse_tokens( + lxr: impl IntoIterator, + mode: Mode, + source_path: &str, +) -> Result { + let lxr = lxr.into_iter(); + + parse_filtered_tokens( + lxr.filter_ok(|(tok, _)| !matches!(tok, Tok::Comment { .. } | Tok::NonLogicalNewline)), + mode, + source_path, + ) +} + +fn parse_filtered_tokens( + lxr: impl IntoIterator, + mode: Mode, + source_path: &str, +) -> Result { + let marker_token = (Tok::start_marker(mode), TextRange::default()); + let lexer = iter::once(Ok(marker_token)).chain(lxr); + python::TopParser::new() + .parse( + mode, + lexer + .into_iter() + .map_ok(|(t, range)| (range.start(), t, range.end())), + ) + .map_err(|e| parse_error_from_lalrpop(e, source_path)) +} + +/// Represents represent errors that occur during parsing and are +/// returned by the `parse_*` functions. + +#[derive(Debug, PartialEq)] +pub struct ParseError { + pub error: ParseErrorType, + pub offset: TextSize, + pub source_path: String, +} + +impl std::ops::Deref for ParseError { + type Target = ParseErrorType; + + fn deref(&self) -> &Self::Target { + &self.error + } +} + +impl std::error::Error for ParseError { + fn source(&self) -> Option<&(dyn std::error::Error + 'static)> { + Some(&self.error) + } +} + +impl fmt::Display for ParseError { + fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { + write!( + f, + "{} at byte offset {}", + &self.error, + u32::from(self.offset) + ) + } +} + +impl ParseError { + pub fn error(self) -> ParseErrorType { + self.error + } +} + +/// Represents the different types of errors that can occur during parsing. +#[derive(Debug, PartialEq)] +pub enum ParseErrorType { + /// Parser encountered an unexpected end of input + Eof, + /// Parser encountered an extra token + ExtraToken(Tok), + /// Parser encountered an invalid token + InvalidToken, + /// Parser encountered an unexpected token + UnrecognizedToken(Tok, Option), + // Maps to `User` type from `lalrpop-util` + /// Parser encountered an error during lexing. + Lexical(LexicalErrorType), +} + +impl std::error::Error for ParseErrorType {} + +// Convert `lalrpop_util::ParseError` to our internal type +fn parse_error_from_lalrpop( + err: LalrpopError, + source_path: &str, +) -> ParseError { + let source_path = source_path.to_owned(); + + match err { + // TODO: Are there cases where this isn't an EOF? + LalrpopError::InvalidToken { location } => ParseError { + error: ParseErrorType::Eof, + offset: location, + source_path, + }, + LalrpopError::ExtraToken { token } => ParseError { + error: ParseErrorType::ExtraToken(token.1), + offset: token.0, + source_path, + }, + LalrpopError::User { error } => ParseError { + error: ParseErrorType::Lexical(error.error), + offset: error.location, + source_path, + }, + LalrpopError::UnrecognizedToken { token, expected } => { + // Hacky, but it's how CPython does it. See PyParser_AddToken, + // in particular "Only one possible expected token" comment. + let expected = (expected.len() == 1).then(|| expected[0].clone()); + ParseError { + error: ParseErrorType::UnrecognizedToken(token.1, expected), + offset: token.0, + source_path, + } + } + LalrpopError::UnrecognizedEof { location, expected } => { + // This could be an initial indentation error that we should ignore + let indent_error = expected == ["Indent"]; + if indent_error { + ParseError { + error: ParseErrorType::Lexical(LexicalErrorType::IndentationError), + offset: location, + source_path, + } + } else { + ParseError { + error: ParseErrorType::Eof, + offset: location, + source_path, + } + } + } + } +} + +impl std::fmt::Display for ParseErrorType { + fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { + match *self { + ParseErrorType::Eof => write!(f, "Got unexpected EOF"), + ParseErrorType::ExtraToken(ref tok) => write!(f, "Got extraneous token: {tok:?}"), + ParseErrorType::InvalidToken => write!(f, "Got invalid token"), + ParseErrorType::UnrecognizedToken(ref tok, ref expected) => { + if *tok == Tok::Indent { + write!(f, "unexpected indent") + } else if expected.as_deref() == Some("Indent") { + write!(f, "expected an indented block") + } else { + write!(f, "invalid syntax. Got unexpected token {tok}") + } + } + ParseErrorType::Lexical(ref error) => write!(f, "{error}"), + } + } +} + +impl ParseErrorType { + /// Returns true if the error is an indentation error. + pub fn is_indentation_error(&self) -> bool { + match self { + ParseErrorType::Lexical(LexicalErrorType::IndentationError) => true, + ParseErrorType::UnrecognizedToken(token, expected) => { + *token == Tok::Indent || expected.clone() == Some("Indent".to_owned()) + } + _ => false, + } + } + + /// Returns true if the error is a tab error. + pub fn is_tab_error(&self) -> bool { + matches!( + self, + ParseErrorType::Lexical(LexicalErrorType::TabError | LexicalErrorType::TabsAfterSpaces) + ) + } +} + +#[cfg(test)] +mod tests { + use crate::Parse; + use insta::assert_debug_snapshot; + use ruff_python_ast as ast; + + use super::*; + + #[test] + fn test_parse_empty() { + let parse_ast = ast::Suite::parse("", "").unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_parse_string() { + let source = "'Hello world'"; + let parse_ast = ast::Suite::parse(source, "").unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_parse_f_string() { + let source = "f'Hello world'"; + let parse_ast = ast::Suite::parse(source, "").unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_parse_print_hello() { + let source = "print('Hello world')"; + let parse_ast = ast::Suite::parse(source, "").unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_parse_print_2() { + let source = "print('Hello world', 2)"; + let parse_ast = ast::Suite::parse(source, "").unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_parse_kwargs() { + let source = "my_func('positional', keyword=2)"; + let parse_ast = ast::Suite::parse(source, "").unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_parse_if_elif_else() { + let source = "if 1: 10\nelif 2: 20\nelse: 30"; + let parse_ast = ast::Suite::parse(source, "").unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_parse_lambda() { + let source = "lambda x, y: x * y"; // lambda(x, y): x * y"; + let parse_ast = ast::Suite::parse(source, "").unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_parse_lambda_no_args() { + let source = "lambda: 1"; + let parse_ast = ast::Suite::parse(source, "").unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_parse_tuples() { + let source = "a, b = 4, 5"; + + insta::assert_debug_snapshot!(ast::Suite::parse(source, "").unwrap()); + } + + #[test] + fn test_parse_class() { + let source = "\ +class Foo(A, B): + def __init__(self): + pass + def method_with_default(self, arg='default'): + pass +"; + insta::assert_debug_snapshot!(ast::Suite::parse(source, "").unwrap()); + } + + #[test] + fn test_parse_class_generic_types() { + let source = "\ +# TypeVar +class Foo[T](): ... + +# TypeVar with bound +class Foo[T: str](): ... + +# TypeVar with tuple bound +class Foo[T: (str, bytes)](): ... + +# Multiple TypeVar +class Foo[T, U](): ... + +# Trailing comma +class Foo[T, U,](): ... + +# TypeVarTuple +class Foo[*Ts](): ... + +# ParamSpec +class Foo[**P](): ... + +# Mixed types +class Foo[X, Y: str, *U, **P](): + pass +"; + insta::assert_debug_snapshot!(ast::Suite::parse(source, "").unwrap()); + } + #[test] + fn test_parse_function_definition() { + let source = "\ +def func(a): + ... + +def func[T](a: T) -> T: + ... + +def func[T: str](a: T) -> T: + ... + +def func[T: (str, bytes)](a: T) -> T: + ... + +def func[*Ts](*a: *Ts): + ... + +def func[**P](*args: P.args, **kwargs: P.kwargs): + ... + +def func[T, U: str, *Ts, **P](): + pass + "; + insta::assert_debug_snapshot!(ast::Suite::parse(source, "").unwrap()); + } + + #[test] + fn test_parse_dict_comprehension() { + let source = "{x1: x2 for y in z}"; + let parse_ast = ast::Expr::parse(source, "").unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_parse_list_comprehension() { + let source = "[x for y in z]"; + let parse_ast = ast::Expr::parse(source, "").unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_parse_double_list_comprehension() { + let source = "[x for y, y2 in z for a in b if a < 5 if a > 10]"; + let parse_ast = ast::Expr::parse(source, "").unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_parse_generator_comprehension() { + let source = "(x for y in z)"; + let parse_ast = ast::Expr::parse(source, "").unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_parse_named_expression_generator_comprehension() { + let source = "(x := y + 1 for y in z)"; + let parse_ast = ast::Expr::parse(source, "").unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_parse_if_else_generator_comprehension() { + let source = "(x if y else y for y in z)"; + let parse_ast = ast::Expr::parse(source, "").unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_parse_bool_op_or() { + let source = "x or y"; + let parse_ast = ast::Expr::parse(source, "").unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_parse_bool_op_and() { + let source = "x and y"; + let parse_ast = ast::Expr::parse(source, "").unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_slice() { + let source = "x[1:2:3]"; + let parse_ast = ast::Expr::parse(source, "").unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_with_statement() { + let source = "\ +with 0: pass +with 0 as x: pass +with 0, 1: pass +with 0 as x, 1 as y: pass +with 0 if 1 else 2: pass +with 0 if 1 else 2 as x: pass +with (): pass +with () as x: pass +with (0): pass +with (0) as x: pass +with (0,): pass +with (0,) as x: pass +with (0, 1): pass +with (0, 1) as x: pass +with (*a,): pass +with (*a,) as x: pass +with (0, *a): pass +with (0, *a) as x: pass +with (a := 0): pass +with (a := 0) as x: pass +with (a := 0, b := 1): pass +with (a := 0, b := 1) as x: pass +with (0 as a): pass +with (0 as a,): pass +with (0 as a, 1 as b): pass +with (0 as a, 1 as b,): pass +"; + insta::assert_debug_snapshot!(ast::Suite::parse(source, "").unwrap()); + } + + #[test] + fn test_with_statement_invalid() { + for source in [ + "with 0,: pass", + "with 0 as x,: pass", + "with 0 as *x: pass", + "with *a: pass", + "with *a as x: pass", + "with (*a): pass", + "with (*a) as x: pass", + "with *a, 0 as x: pass", + "with (*a, 0 as x): pass", + "with 0 as x, *a: pass", + "with (0 as x, *a): pass", + "with (0 as x) as y: pass", + "with (0 as x), 1: pass", + "with ((0 as x)): pass", + "with a := 0 as x: pass", + "with (a := 0 as x): pass", + ] { + assert!(ast::Suite::parse(source, "").is_err()); + } + } + + #[test] + fn test_star_index() { + let source = "\ +array_slice = array[0, *indexes, -1] +array[0, *indexes, -1] = array_slice +array[*indexes_to_select, *indexes_to_select] +array[3:5, *indexes_to_select] +"; + let parse_ast = ast::Suite::parse(source, "").unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_generator_expression_argument() { + let source = r#"' '.join( + sql + for sql in ( + "LIMIT %d" % limit if limit else None, + ("OFFSET %d" % offset) if offset else None, + ) +)"#; + let parse_ast = ast::Expr::parse(source, "").unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_try() { + let parse_ast = ast::Suite::parse( + r#"try: + raise ValueError(1) +except TypeError as e: + print(f'caught {type(e)}') +except OSError as e: + print(f'caught {type(e)}')"#, + "", + ) + .unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_try_star() { + let parse_ast = ast::Suite::parse( + r#"try: + raise ExceptionGroup("eg", + [ValueError(1), TypeError(2), OSError(3), OSError(4)]) +except* TypeError as e: + print(f'caught {type(e)} with nested {e.exceptions}') +except* OSError as e: + print(f'caught {type(e)} with nested {e.exceptions}')"#, + "", + ) + .unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_dict_unpacking() { + let parse_ast = ast::Expr::parse(r#"{"a": "b", **c, "d": "e"}"#, "").unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_modes() { + let source = "a[0][1][2][3][4]"; + + assert!(parse(source, Mode::Expression, "").is_ok()); + assert!(parse(source, Mode::Module, "").is_ok()); + assert!(parse(source, Mode::Interactive, "").is_ok()); + } + + #[test] + fn test_parse_type_declaration() { + let source = r#" +type X = int +type X = int | str +type X = int | "ForwardRefY" +type X[T] = T | list[X[T]] # recursive +type X[T] = int +type X[T] = list[T] | set[T] +type X[T, *Ts, **P] = (T, Ts, P) +type X[T: int, *Ts, **P] = (T, Ts, P) +type X[T: (int, str), *Ts, **P] = (T, Ts, P) + +# soft keyword as alias name +type type = int +type match = int +type case = int + +# soft keyword as value +type foo = type +type foo = match +type foo = case + +# multine definitions +type \ + X = int +type X \ + = int +type X = \ + int +type X = ( + int +) +type \ + X[T] = T +type X \ + [T] = T +type X[T] \ + = T +"#; + insta::assert_debug_snapshot!(ast::Suite::parse(source, "").unwrap()); + } + + #[test] + fn test_type_as_identifier() { + let source = r#"\ +type *a + b, c # ((type * a) + b), c +type *(a + b), c # (type * (a + b)), c +type (*a + b, c) # type ((*(a + b)), c) +type -a * b + c # (type - (a * b)) + c +type -(a * b) + c # (type - (a * b)) + c +type (-a) * b + c # (type (-(a * b))) + c +type ().a # (type()).a +type (()).a # (type(())).a +type ((),).a # (type(())).a +type [a].b # (type[a]).b +type [a,].b # (type[(a,)]).b (not (type[a]).b) +type [(a,)].b # (type[(a,)]).b +type()[a: + b] # (type())[a: b] +if type := 1: pass +type = lambda query: query == event +print(type(12)) +type(type) +a = ( + type in C +) +a = ( + type(b) +) +type ( + X = int +) +type = 1 +type = x = 1 +x = type = 1 +"#; + insta::assert_debug_snapshot!(ast::Suite::parse(source, "").unwrap()); + } + + #[test] + fn numeric_literals() { + let source = r#"x = 123456789 +x = 123456 +x = .1 +x = 1. +x = 1E+1 +x = 1E-1 +x = 1.000_000_01 +x = 123456789.123456789 +x = 123456789.123456789E123456789 +x = 123456789E123456789 +x = 123456789J +x = 123456789.123456789J +x = 0XB1ACC +x = 0B1011 +x = 0O777 +x = 0.000000006 +x = 10000 +x = 133333 +"#; + + insta::assert_debug_snapshot!(ast::Suite::parse(source, "").unwrap()); + } + + #[test] + fn numeric_literals_attribute_access() { + let source = r#"x = .1.is_integer() +x = 1. .imag +x = 1E+1.imag +x = 1E-1.real +x = 123456789.123456789.hex() +x = 123456789.123456789E123456789 .real +x = 123456789E123456789 .conjugate() +x = 123456789J.real +x = 123456789.123456789J.__add__(0b1011.bit_length()) +x = 0XB1ACC.conjugate() +x = 0B1011 .conjugate() +x = 0O777 .real +x = 0.000000006 .hex() +x = -100.0000J + +if 10 .real: + ... + +y = 100[no] +y = 100(no) +"#; + assert_debug_snapshot!(ast::Suite::parse(source, "").unwrap()); + } + + #[test] + fn test_match_as_identifier() { + let source = r#"\ +match *a + b, c # ((match * a) + b), c +match *(a + b), c # (match * (a + b)), c +match (*a + b, c) # match ((*(a + b)), c) +match -a * b + c # (match - (a * b)) + c +match -(a * b) + c # (match - (a * b)) + c +match (-a) * b + c # (match (-(a * b))) + c +match ().a # (match()).a +match (()).a # (match(())).a +match ((),).a # (match(())).a +match [a].b # (match[a]).b +match [a,].b # (match[(a,)]).b (not (match[a]).b) +match [(a,)].b # (match[(a,)]).b +match()[a: + b] # (match())[a: b] +if match := 1: pass +match match: + case 1: pass + case 2: + pass +match = lambda query: query == event +print(match(12)) +"#; + insta::assert_debug_snapshot!(ast::Suite::parse(source, "").unwrap()); + } + + #[test] + fn test_patma() { + let source = r#"# Cases sampled from Lib/test/test_patma.py + +# case test_patma_098 +match x: + case -0j: + y = 0 +# case test_patma_142 +match x: + case bytes(z): + y = 0 +# case test_patma_073 +match x: + case 0 if 0: + y = 0 + case 0 if 1: + y = 1 +# case test_patma_006 +match 3: + case 0 | 1 | 2 | 3: + x = True +# case test_patma_049 +match x: + case [0, 1] | [1, 0]: + y = 0 +# case black_check_sequence_then_mapping +match x: + case [*_]: + return "seq" + case {}: + return "map" +# case test_patma_035 +match x: + case {0: [1, 2, {}]}: + y = 0 + case {0: [1, 2, {}] | True} | {1: [[]]} | {0: [1, 2, {}]} | [] | "X" | {}: + y = 1 + case []: + y = 2 +# case test_patma_107 +match x: + case 0.25 + 1.75j: + y = 0 +# case test_patma_097 +match x: + case -0j: + y = 0 +# case test_patma_007 +match 4: + case 0 | 1 | 2 | 3: + x = True +# case test_patma_154 +match x: + case 0 if x: + y = 0 +# case test_patma_134 +match x: + case {1: 0}: + y = 0 + case {0: 0}: + y = 1 + case {**z}: + y = 2 +# case test_patma_185 +match Seq(): + case [*_]: + y = 0 +# case test_patma_063 +match x: + case 1: + y = 0 + case 1: + y = 1 +# case test_patma_248 +match x: + case {"foo": bar}: + y = bar +# case test_patma_019 +match (0, 1, 2): + case [0, 1, *x, 2]: + y = 0 +# case test_patma_052 +match x: + case [0]: + y = 0 + case [1, 0] if (x := x[:0]): + y = 1 + case [1, 0]: + y = 2 +# case test_patma_191 +match w: + case [x, y, *_]: + z = 0 +# case test_patma_110 +match x: + case -0.25 - 1.75j: + y = 0 +# case test_patma_151 +match (x,): + case [y]: + z = 0 +# case test_patma_114 +match x: + case A.B.C.D: + y = 0 +# case test_patma_232 +match x: + case None: + y = 0 +# case test_patma_058 +match x: + case 0: + y = 0 +# case test_patma_233 +match x: + case False: + y = 0 +# case test_patma_078 +match x: + case []: + y = 0 + case [""]: + y = 1 + case "": + y = 2 +# case test_patma_156 +match x: + case z: + y = 0 +# case test_patma_189 +match w: + case [x, y, *rest]: + z = 0 +# case test_patma_042 +match x: + case (0 as z) | (1 as z) | (2 as z) if z == x % 2: + y = 0 +# case test_patma_034 +match x: + case {0: [1, 2, {}]}: + y = 0 + case {0: [1, 2, {}] | False} | {1: [[]]} | {0: [1, 2, {}]} | [] | "X" | {}: + y = 1 + case []: + y = 2 +# case test_patma_123 +match (0, 1, 2): + case 0, *x: + y = 0 +# case test_patma_126 +match (0, 1, 2): + case *x, 2,: + y = 0 +# case test_patma_151 +match x,: + case y,: + z = 0 +# case test_patma_152 +match w, x: + case y, z: + v = 0 +# case test_patma_153 +match w := x,: + case y as v,: + z = 0 +"#; + let parse_ast = ast::Suite::parse(source, "").unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_match() { + let parse_ast = ast::Suite::parse( + r#" +match {"test": 1}: + case { + **rest, + }: + print(rest) +match {"label": "test"}: + case { + "label": str() | None as label, + }: + print(label) +match x: + case [0, 1,]: + y = 0 +match x: + case (0, 1,): + y = 0 +match x: + case (0,): + y = 0 +"#, + "", + ) + .unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_variadic_generics() { + let parse_ast = ast::Suite::parse( + r#" +def args_to_tuple(*args: *Ts) -> Tuple[*Ts]: ... +"#, + "", + ) + .unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_parse_constant() { + use num_traits::ToPrimitive; + + let c = ast::Constant::parse_without_path("'string'").unwrap(); + assert_eq!(c.str().unwrap(), "string"); + + let c = ast::Constant::parse_without_path("10").unwrap(); + assert_eq!(c.int().unwrap().to_i32().unwrap(), 10); + } + + #[test] + fn test_parse_identifier() { + let i = ast::Identifier::parse_without_path("test").unwrap(); + assert_eq!(i.as_str(), "test"); + } + + #[test] + fn decorator_ranges() { + let parse_ast = ast::Suite::parse( + r#" +@my_decorator +def test(): + pass + +@class_decorator +class Abcd: + pass +"# + .trim(), + "", + ) + .unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_jupyter_magic() { + let parse_ast = parse( + r#" +# Normal Python code +( + a + % + b +) + +# Dynamic object info +??a.foo +?a.foo +?a.foo? +??a.foo()?? + +# Line magic +%timeit a = b +%timeit foo(b) % 3 +%alias showPath pwd && ls -a +%timeit a =\ + foo(b); b = 2 +%matplotlib --inline +%matplotlib \ + --inline + +# System shell access +!pwd && ls -a | sed 's/^/\ /' +!pwd \ + && ls -a | sed 's/^/\\ /' +!!cd /Users/foo/Library/Application\ Support/ + +# Let's add some Python code to make sure that earlier escapes were handled +# correctly and that we didn't consume any of the following code as a result +# of the escapes. +def foo(): + return ( + a + != + b + ) + +# Transforms into `foo(..)` +/foo 1 2 +;foo 1 2 +,foo 1 2 + +# Indented magic +for a in range(5): + !ls + +p1 = !pwd +p2: str = !pwd +foo = %foo \ + bar + +% foo +foo = %foo # comment +"# + .trim(), + Mode::Jupyter, + "", + ) + .unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_jupyter_magic_parse_error() { + let source = r#" +a = 1 +%timeit a == 1 + "# + .trim(); + let lxr = lexer::lex_starts_at(source, Mode::Jupyter, TextSize::default()); + let parse_err = parse_tokens(lxr, Mode::Module, "").unwrap_err(); + assert_eq!( + parse_err.to_string(), + "line magics are only allowed in Jupyter mode at byte offset 6".to_string() + ); + } +} diff --git a/crates/ruff_python_parser/src/python.lalrpop b/crates/ruff_python_parser/src/python.lalrpop new file mode 100644 index 0000000000..89aad05fcc --- /dev/null +++ b/crates/ruff_python_parser/src/python.lalrpop @@ -0,0 +1,1852 @@ +// See also: file:///usr/share/doc/python/html/reference/grammar.html?highlight=grammar +// See also: https://github.com/antlr/grammars-v4/blob/master/python3/Python3.g4 +// See also: file:///usr/share/doc/python/html/reference/compound_stmts.html#function-definitions +// See also: https://greentreesnakes.readthedocs.io/en/latest/nodes.html#keyword + +use num_bigint::BigInt; +use ruff_text_size::TextSize; +use ruff_python_ast::{self as ast, Ranged, MagicKind}; +use crate::{ + Mode, + lexer::{LexicalError, LexicalErrorType}, + function::{ArgumentList, parse_args, validate_pos_params, validate_arguments}, + context::set_context, + string::parse_strings, + token::{self, StringKind}, +}; + +grammar(mode: Mode); + +// This is a hack to reduce the amount of lalrpop tables generated: +// For each public entry point, a full parse table is generated. +// By having only a single pub function, we reduce this to one. +pub(crate) Top: ast::Mod = { + StartModule => ast::ModModule { body, type_ignores: vec![], range: (start..end).into() }.into(), + StartInteractive => ast::ModInteractive { body, range: (start..end).into() }.into(), + StartExpression ("\n")* => ast::ModExpression { body: Box::new(body), range: (start..end).into() }.into() +}; + +Program: ast::Suite = { + => vec![], + // Compound statements + => { + statements.push(next); + statements + }, + + // Small statements + ";")*> ";"? "\n" => { + statements.extend(small); + statements.push(last); + statements + }, + + // Empty lines + "\n" => s, +}; + +Suite: ast::Suite = { + ";")*> ";"? "\n" => { + statements.push(last); + statements + }, + "\n" Indent Dedent => s, +}; + + +// One or more statements +Statements: Vec = { + // First simple statement + ";")*> ";"? "\n" => { + head.push(last); + head + }, + + // The first compound statement + => vec![s], + + // Any subsequent compound statements + => { + statements.push(next); + statements + }, + + // Any subsequent small statements + ";")*> ";"? "\n" => { + statements.extend(small); + statements.push(last); + statements + }, +}; + +SmallStatement: ast::Stmt = { + ExpressionStatement, + PassStatement, + DelStatement, + FlowStatement, + ImportStatement, + GlobalStatement, + NonlocalStatement, + AssertStatement, + TypeAliasStatement, + LineMagicStatement, +}; + +PassStatement: ast::Stmt = { + "pass" => { + ast::Stmt::Pass(ast::StmtPass { range: (location..end_location).into() }) + }, +}; + +DelStatement: ast::Stmt = { + "del" => { + ast::Stmt::Delete( + ast::StmtDelete { targets: targets.into_iter().map(|expr| set_context(expr, ast::ExprContext::Del)).collect(), range: (location..end_location).into() } + ) + }, +}; + +ExpressionStatement: ast::Stmt = { + => { + // Just an expression, no assignment: + if suffix.is_empty() { + ast::Stmt::Expr( + ast::StmtExpr { value: Box::new(expression), range: (location..end_location).into() } + ) + } else { + let mut targets = vec![set_context(expression, ast::ExprContext::Store)]; + let mut values = suffix; + + let value = Box::new(values.pop().unwrap()); + + for target in values { + targets.push(set_context(target, ast::ExprContext::Store)); + } + + ast::Stmt::Assign( + ast::StmtAssign { targets, value, type_comment: None, range: (location..end_location).into() } + ) + } + }, + => { + ast::Stmt::AugAssign( + ast::StmtAugAssign { + target: Box::new(set_context(target, ast::ExprContext::Store)), + op, + value: Box::new(rhs), + range: (location..end_location).into() + }, + ) + }, + > ":" > => { + let simple = target.is_name_expr(); + ast::Stmt::AnnAssign( + ast::StmtAnnAssign { + target: Box::new(set_context(target, ast::ExprContext::Store)), + annotation: Box::new(annotation), + value: rhs.map(Box::new), + simple, + range: (location..end_location).into() + }, + ) + }, +}; + +AssignSuffix: ast::Expr = { + "=" => e, + "=" => e +}; + +TestListOrYieldExpr: ast::Expr = { + TestList, + YieldExpr +} + +#[inline] +TestOrStarExprList: ast::Expr = { + // as far as I can tell, these were the same + TestList +}; + +TestOrStarExpr: ast::Expr = { + Test<"all">, + StarExpr, +}; + +NamedOrStarExpr: ast::Expr = { + NamedExpression, + StarExpr, +}; + +TestOrStarNamedExpr: ast::Expr = { + NamedExpressionTest, + StarExpr, +}; + +AugAssign: ast::Operator = { + "+=" => ast::Operator::Add, + "-=" => ast::Operator::Sub, + "*=" => ast::Operator::Mult, + "@=" => ast::Operator::MatMult, + "/=" => ast::Operator::Div, + "%=" => ast::Operator::Mod, + "&=" => ast::Operator::BitAnd, + "|=" => ast::Operator::BitOr, + "^=" => ast::Operator::BitXor, + "<<=" => ast::Operator::LShift, + ">>=" => ast::Operator::RShift, + "**=" => ast::Operator::Pow, + "//=" => ast::Operator::FloorDiv, +}; + +FlowStatement: ast::Stmt = { + "break" => { + + ast::Stmt::Break(ast::StmtBreak { range: (location..end_location).into() }) + }, + "continue" => { + ast::Stmt::Continue(ast::StmtContinue { range: (location..end_location).into() }) + }, + "return" => { + ast::Stmt::Return( + ast::StmtReturn { value: value.map(Box::new), range: (location..end_location).into() } + ) + }, + => { + ast::Stmt::Expr( + ast::StmtExpr { value: Box::new(expression), range: (location..end_location).into() } + ) + }, + RaiseStatement, +}; + +RaiseStatement: ast::Stmt = { + "raise" => { + ast::Stmt::Raise( + ast::StmtRaise { exc: None, cause: None, range: (location..end_location).into() } + ) + }, + "raise" > >)?> => { + ast::Stmt::Raise( + ast::StmtRaise { exc: Some(Box::new(t)), cause: c.map(Box::new), range: (location..end_location).into() } + ) + }, +}; + +ImportStatement: ast::Stmt = { + "import" >> => { + ast::Stmt::Import( + ast::StmtImport { names, range: (location..end_location).into() } + ) + }, + "from" "import" => { + let (level, module) = source; + ast::Stmt::ImportFrom( + ast::StmtImportFrom { + level, + module, + names, + range: (location..end_location).into() + }, + ) + }, +}; + +ImportFromLocation: (Option, Option) = { + => { + (Some(ast::Int::new(dots.iter().map(ast::Int::to_u32).sum())), Some(name)) + }, + => { + (Some(ast::Int::new(dots.iter().map(ast::Int::to_u32).sum())), None) + }, +}; + +ImportDots: ast::Int = { + "..." => ast::Int::new(3), + "." => ast::Int::new(1), +}; + +ImportAsNames: Vec = { + >> => i, + "(" >> ","? ")" => i, + "*" => { + // Star import all + vec![ast::Alias { name: ast::Identifier::new("*", (location..end_location).into()), asname: None, range: (location..end_location).into() }] + }, +}; + + +#[inline] +ImportAsAlias: ast::Alias = { + )?> => ast::Alias { name, asname: a, range: (location..end_location).into() }, +} + +// A name like abc or abc.def.ghi +DottedName: ast::Identifier = { + => ast::Identifier::new(n, (location..end_location).into()), + => { + let mut r = n; + for x in n2 { + r.push('.'); + r.push_str(x.1.as_str()); + } + ast::Identifier::new(r, (location..end_location).into()) + }, +}; + +GlobalStatement: ast::Stmt = { + "global" > => { + ast::Stmt::Global( + ast::StmtGlobal { names, range: (location..end_location).into() } + ) + }, +}; + +NonlocalStatement: ast::Stmt = { + "nonlocal" > => { + ast::Stmt::Nonlocal( + ast::StmtNonlocal { names, range: (location..end_location).into() } + ) + }, +}; + +AssertStatement: ast::Stmt = { + "assert" > >)?> => { + ast::Stmt::Assert( + ast::StmtAssert { + test: Box::new(test), + msg: msg.map(Box::new), + range: (location..end_location).into() + } + ) + }, +}; + +LineMagicStatement: ast::Stmt = { + =>? { + if mode == Mode::Jupyter { + Ok(ast::Stmt::LineMagic( + ast::StmtLineMagic { + kind: m.0, + value: m.1, + range: (location..end_location).into() + } + )) + } else { + Err(LexicalError { + error: LexicalErrorType::OtherError("line magics are only allowed in Jupyter mode".to_string()), + location, + })? + } + } +} + +LineMagicExpr: ast::Expr = { + =>? { + if mode == Mode::Jupyter { + // This should never occur as the lexer won't allow it. + if !matches!(m.0, MagicKind::Magic | MagicKind::Shell) { + return Err(LexicalError { + error: LexicalErrorType::OtherError("expr line magics are only allowed for % and !".to_string()), + location, + })?; + } + Ok(ast::Expr::LineMagic( + ast::ExprLineMagic { + kind: m.0, + value: m.1, + range: (location..end_location).into() + } + )) + } else { + Err(LexicalError { + error: LexicalErrorType::OtherError("line magics are only allowed in Jupyter mode".to_string()), + location, + })? + } + } +} + +CompoundStatement: ast::Stmt = { + MatchStatement, + IfStatement, + WhileStatement, + ForStatement, + TryStatement, + WithStatement, + FuncDef, + ClassDef, +}; + +MatchStatement: ast::Stmt = { + "match" ":" "\n" Indent Dedent => { + let end_location = cases + .last() + .unwrap() + .body + .last() + .unwrap() + .end(); + ast::Stmt::Match( + ast::StmtMatch { + subject: Box::new(subject), + cases, + range: (location..end_location).into() + } + ) + }, + "match" "," ":" "\n" Indent Dedent => { + let end_location = cases + .last() + .unwrap() + .body + .last() + .unwrap() + .end(); + ast::Stmt::Match( + ast::StmtMatch { + subject: Box::new(subject), + cases, + range: (location..end_location).into() + } + ) + }, + "match" > ","? ":" "\n" Indent Dedent => { + let end_location = cases + .last() + .unwrap() + .body + .last() + .unwrap() + .end(); + ast::Stmt::Match( + ast::StmtMatch { + subject: Box::new(ast::Expr::Tuple( + ast::ExprTuple { + elts: subjects, + ctx: ast::ExprContext::Load, + range: (location..end_location).into() + }, + )), + cases, + range: (location..end_location).into() + } + ) + } +} + +MatchCase: ast::MatchCase = { + "case" ":" => { + // SAFETY: `body` is never empty because it is non-optional and `Suite` matches one or more statements. + let end = body.last().unwrap().end(); + ast::MatchCase { + pattern, + guard: guard.map(Box::new), + body, + range: (start..end).into() + } + }, +} + +Guard: ast::Expr = { + "if" => { + guard + } +} + +Patterns: ast::Pattern = { + "," => ast::Pattern::MatchSequence( + ast::PatternMatchSequence { + patterns: vec![pattern], + range: (location..end_location).into() + }, + ), + > ","? => { + ast::Pattern::MatchSequence( + ast::PatternMatchSequence { + patterns, + range: (location..end_location).into() + }, + ) + }, + => pattern +} + +Pattern: ast::Pattern = { + => pattern, + => pattern, +} + +AsPattern: ast::Pattern = { + "as" =>? { + if name.as_str() == "_" { + Err(LexicalError { + error: LexicalErrorType::OtherError("cannot use '_' as a target".to_string()), + location, + })? + } else { + Ok(ast::Pattern::MatchAs( + ast::PatternMatchAs { + pattern: Some(Box::new(pattern)), + name: Some(name), + range: (location..end_location).into() + }, + )) + } + }, +} + +OrPattern: ast::Pattern = { + => pattern, + > => { + ast::Pattern::MatchOr( + ast::PatternMatchOr { patterns, range: (location..end_location).into() } + ) + } +} + +ClosedPattern: ast::Pattern = { + => node, + => node, + => node, + => node, + => node, + => node, + => node, +} + +SequencePattern: ast::Pattern = { + // A single-item tuple is a special case: it's a group pattern, _not_ a sequence pattern. + "(" ")" => pattern, + "(" ")" => ast::PatternMatchSequence { + patterns: vec![], + range: (location..end_location).into() + }.into(), + "(" "," ")" => { + ast::PatternMatchSequence { + patterns: vec![pattern], + range: (location..end_location).into() + }.into() + }, + "(" ",")+> ","? ")" => { + let mut patterns = patterns; + patterns.push(last); + ast::PatternMatchSequence { + patterns, + range: (location..end_location).into() + }.into() + }, + "[" > "]" => ast::PatternMatchSequence { + patterns, + range: (location..end_location).into() + }.into(), +} + +StarPattern: ast::Pattern = { + "*" => ast::PatternMatchStar { + name: if name.as_str() == "_" { None } else { Some(name) }, + range: (location..end_location).into() + }.into(), +} + +ConstantAtom: ast::Expr = { + => ast::Expr::Constant( + ast::ExprConstant { value, kind: None, range: (location..end_location).into() } + ), +} + +ConstantExpr: ast::Expr = { + ConstantAtom, + "-" => ast::Expr::UnaryOp( + ast::ExprUnaryOp { + op: ast::UnaryOp::USub, + operand: Box::new(operand), + range: (location..end_location).into() + } + ), +} + +AddOpExpr: ast::Expr = { + => ast::Expr::BinOp( + ast::ExprBinOp { + left: Box::new(left), + op, + right: Box::new(right), + range: (location..end_location).into() + } + ), +} + +LiteralPattern: ast::Pattern = { + "None" => ast::PatternMatchSingleton { + value: ast::Constant::None, + range: (location..end_location).into() + }.into(), + "True" => ast::PatternMatchSingleton { + value: true.into(), + range: (location..end_location).into() + }.into(), + "False" => ast::PatternMatchSingleton { + value: false.into(), + range: (location..end_location).into() + }.into(), + => ast::PatternMatchValue { + value: Box::new(value), + range: (location..end_location).into() + }.into(), + => ast::PatternMatchValue { + value: Box::new(value), + range: (location..end_location).into() + }.into(), + =>? Ok(ast::PatternMatchValue { + value: Box::new(parse_strings(s)?), + range: (location..end_location).into() + }.into()), +} + +CapturePattern: ast::Pattern = { + => ast::PatternMatchAs { + pattern: None, + name: if name.as_str() == "_" { None } else { Some(name) }, + range: (location..end_location).into() + }.into(), +} + +MatchName: ast::Expr = { + => ast::Expr::Name( + ast::ExprName { id: id.into(), ctx: ast::ExprContext::Load, range: (location..end_location).into() }, + ), +} + +MatchNameOrAttr: ast::Expr = { + "." => ast::Expr::Attribute( + ast::ExprAttribute { + value: Box::new(name), + attr, + ctx: ast::ExprContext::Load, + range: (location..end_location).into() + }, + ), + "." => ast::Expr::Attribute( + ast::ExprAttribute { + value: Box::new(e), + attr, + ctx: ast::ExprContext::Load, + range: (location..end_location).into() + }, + ) +} + +ValuePattern: ast::Pattern = { + => ast::PatternMatchValue { + value: Box::new(e), + range: (location..end_location).into() + }.into(), +} + +MappingKey: ast::Expr = { + ConstantExpr, + AddOpExpr, + MatchNameOrAttr, + "None" => ast::Expr::Constant( + ast::ExprConstant { + value: ast::Constant::None, + kind: None, + range: (location..end_location).into() + }, + ), + "True" => ast::Expr::Constant( + ast::ExprConstant { + value: true.into(), + kind: None, + range: (location..end_location).into() + }, + ), + "False" => ast::Expr::Constant( + ast::ExprConstant { + value: false.into(), + kind: None, + range: (location..end_location).into() + }, + ), + =>? Ok(parse_strings(s)?), +} + +MatchMappingEntry: (ast::Expr, ast::Pattern) = { + ":" => (k, v), +}; + +MappingPattern: ast::Pattern = { + "{" "}" => { + ast::PatternMatchMapping { + keys: vec![], + patterns: vec![], + rest: None, + range: (location..end_location).into() + }.into() + }, + "{" > ","? "}" => { + let (keys, patterns) = e + .into_iter() + .unzip(); + ast::PatternMatchMapping { + keys, + patterns, + rest: None, + range: (location..end_location).into() + }.into() + }, + "{" "**" ","? "}" => { + ast::PatternMatchMapping { + keys: vec![], + patterns: vec![], + rest: Some(rest), + range: (location..end_location).into() + }.into() + }, + "{" > "," "**" ","? "}" => { + let (keys, patterns) = e + .into_iter() + .unzip(); + ast::PatternMatchMapping { + keys, + patterns, + rest: Some(rest), + range: (location..end_location).into() + }.into() + }, +} + +MatchKeywordEntry: (ast::Identifier, ast::Pattern) = { + "=" => (k, v), +}; + +ClassPattern: ast::Pattern = { + "(" > "," > ","? ")" => { + let (kwd_attrs, kwd_patterns) = kwds + .into_iter() + .unzip(); + ast::PatternMatchClass { + cls: Box::new(e), + patterns, + kwd_attrs, + kwd_patterns, + range: (location..end_location).into() + }.into() + }, + "(" > ","? ")" => { + ast::PatternMatchClass { + cls: Box::new(e), + patterns, + kwd_attrs: vec![], + kwd_patterns: vec![], + range: (location..end_location).into() + }.into() + }, + "(" > ","? ")" => { + let (kwd_attrs, kwd_patterns) = kwds + .into_iter() + .unzip(); + ast::PatternMatchClass { + cls: Box::new(e), + patterns: vec![], + kwd_attrs, + kwd_patterns, + range: (location..end_location).into() + }.into() + }, + "(" ")" => { + ast::PatternMatchClass { + cls: Box::new(e), + patterns: vec![], + kwd_attrs: vec![], + kwd_patterns: vec![], + range: (location..end_location).into() + }.into() + }, + "(" > "," > ","? ")" => { + let (kwd_attrs, kwd_patterns) = kwds + .into_iter() + .unzip(); + ast::PatternMatchClass { + cls: Box::new(e), + patterns, + kwd_attrs, + kwd_patterns, + range: (location..end_location).into() + }.into() + }, + "(" > ","? ")" => { + ast::PatternMatchClass { + cls: Box::new(e), + patterns, + kwd_attrs: vec![], + kwd_patterns: vec![], + range: (location..end_location).into() + }.into() + }, + "(" > ","? ")" => { + let (kwd_attrs, kwd_patterns) = kwds + .into_iter() + .unzip(); + ast::PatternMatchClass { + cls: Box::new(e), + patterns: vec![], + kwd_attrs, + kwd_patterns, + range: (location..end_location).into() + }.into() + }, + "(" ")" => { + ast::PatternMatchClass { + cls: Box::new(e), + patterns: vec![], + kwd_attrs: vec![], + kwd_patterns: vec![], + range: (location..end_location).into() + }.into() + }, +} + +IfStatement: ast::Stmt = { + "if" ":" "elif" ":" )*> "else" ":" )?> => { + let elif_else_clauses: Vec<_> = s2.into_iter().map(|(start, test, body)| ast::ElifElseClause { + range: (start..body.last().unwrap().end()).into(), + test: Some(test), + body, + }).chain(s3.into_iter().map(|(start, body)| ast::ElifElseClause { + range: (start..body.last().unwrap().end()).into(), + test: None, + body, + })).collect(); + + let end_location = elif_else_clauses + .last() + .map_or_else(|| body.last().unwrap().end(), Ranged::end); + + ast::Stmt::If( + ast::StmtIf { test: Box::new(test), body, elif_else_clauses, range: (location..end_location).into() } + ) + }, +}; + +WhileStatement: ast::Stmt = { + "while" ":" )?> => { + let orelse = s2.unwrap_or_default(); + let end_location = orelse + .last() + .or_else(|| body.last()) + .unwrap() + .end(); + ast::Stmt::While( + ast::StmtWhile { + test: Box::new(test), + body, + orelse, + range: (location..end_location).into() + }, + ) + }, +}; + +ForStatement: ast::Stmt = { + "for" "in" ":" )?> => { + let orelse = orelse.unwrap_or_default(); + let end_location = orelse + .last() + .or_else(|| body.last()) + .unwrap() + .end(); + let target = Box::new(set_context(target, ast::ExprContext::Store)); + let iter = Box::new(iter); + let type_comment = None; + if is_async.is_some() { + ast::Stmt::AsyncFor(ast::StmtAsyncFor { target, iter, body, orelse, type_comment, range: (location..end_location).into() }) + } else { + ast::Stmt::For(ast::StmtFor { target, iter, body, orelse, type_comment, range: (location..end_location).into() }) + } + }, +}; + +TryStatement: ast::Stmt = { + "try" ":" )?> )?> => { + let orelse = orelse.unwrap_or_default(); + let finalbody = finalbody.unwrap_or_default(); + let end_location = finalbody + .last() + .map(Ranged::end) + .or_else(|| orelse.last().map(Ranged::end)) + .or_else(|| handlers.last().map(Ranged::end)) + .unwrap(); + ast::Stmt::Try( + ast::StmtTry { + body, + handlers, + orelse, + finalbody, + range: (location..end_location).into() + }, + ) + }, + "try" ":" )?> )?> => { + let orelse = orelse.unwrap_or_default(); + let finalbody = finalbody.unwrap_or_default(); + let end_location = finalbody + .last() + .or_else(|| orelse.last()) + .map(Ranged::end) + .or_else(|| handlers.last().map(Ranged::end)) + .unwrap(); + ast::Stmt::TryStar( + ast::StmtTryStar { + body, + handlers, + orelse, + finalbody, + range: (location..end_location).into() + }, + ) + }, + "try" ":" )> => { + let handlers = vec![]; + let orelse = vec![]; + let end_location = finalbody.last().unwrap().end(); + ast::Stmt::Try( + ast::StmtTry { + body, + handlers, + orelse, + finalbody, + range: (location..end_location).into() + }, + ) + }, +}; + +ExceptStarClause: ast::ExceptHandler = { + "except" "*" > ":" => { + let end_location = body.last().unwrap().end(); + ast::ExceptHandler::ExceptHandler( + ast::ExceptHandlerExceptHandler { + type_: Some(Box::new(typ)), + name: None, + body, + range: (location..end_location).into() + }, + ) + }, + "except" "*" > "as" )> ":" => { + let end_location = body.last().unwrap().end(); + ast::ExceptHandler::ExceptHandler( + ast::ExceptHandlerExceptHandler { + type_: Some(Box::new(x.0)), + name: Some(x.1), + body, + range: (location..end_location).into() + }, + ) + }, +}; + + +ExceptClause: ast::ExceptHandler = { + "except" ?> ":" => { + let end_location = body.last().unwrap().end(); + ast::ExceptHandler::ExceptHandler( + ast::ExceptHandlerExceptHandler { + type_: typ.map(Box::new), + name: None, + body, + range: (location..end_location).into() + }, + ) + }, + "except" > "as" )> ":" => { + let end_location = body.last().unwrap().end(); + ast::ExceptHandler::ExceptHandler( + ast::ExceptHandlerExceptHandler { + type_: Some(Box::new(x.0)), + name: Some(x.1), + body, + range: (location..end_location).into() + }, + ) + }, +}; + +WithStatement: ast::Stmt = { + "with" ":" => { + let end_location = body.last().unwrap().end(); + let type_comment = None; + if is_async.is_some() { + ast::StmtAsyncWith { items, body, type_comment, range: (location..end_location).into() }.into() + } else { + ast::StmtWith { items, body, type_comment, range: (location..end_location).into() }.into() + } + }, +}; + +WithItems: Vec = { + "(" ","? ")", + "(" ",")?> > >)*> ","? ")" => { + left.into_iter().flatten().chain([mid]).chain(right).collect() + }, + > => vec![<>], + > >)+> => { + [item].into_iter().chain(items).collect() + } +}; + +#[inline] +WithItemsNoAs: Vec = { + >> => { + all.into_iter().map(|context_expr| ast::WithItem { context_expr, optional_vars: None, range: (location..end_location).into() }).collect() + }, +} + +WithItem: ast::WithItem = { + > if Goal != "as" => ast::WithItem { context_expr, optional_vars: None, range: (location..end_location).into() }, + > "as" > => { + let optional_vars = Some(Box::new(set_context(vars, ast::ExprContext::Store))); + ast::WithItem { context_expr, optional_vars, range: (location..end_location).into() } + }, +}; + +FuncDef: ast::Stmt = { + "def" " >)?> ":" => { + let args = Box::new(args); + let returns = r.map(Box::new); + let end_location = body.last().unwrap().end(); + let type_comment = None; + if is_async.is_some() { + ast::StmtAsyncFunctionDef { name, args, body, decorator_list, returns, type_comment, type_params: type_params.unwrap_or_default(), range: (location..end_location).into() }.into() + } else { + ast::StmtFunctionDef { name, args, body, decorator_list, returns, type_comment, type_params: type_params.unwrap_or_default(), range: (location..end_location).into() }.into() + } + }, +}; + +TypeAliasName: ast::Expr = { + => ast::Expr::Name( + ast::ExprName { id: name.into(), ctx: ast::ExprContext::Store, range: (location..end_location).into() }, + ), +} + +TypeAliasStatement: ast::Stmt = { + "type" "=" > => { + ast::Stmt::TypeAlias( + ast::StmtTypeAlias { + name: Box::new(name), + value: Box::new(value), + type_params: type_params.unwrap_or_default(), + range: (location..end_location).into() + }, + ) + }, +}; + +Parameters: ast::Arguments = { + "(" )?> ")" =>? { + a.as_ref().map(validate_arguments).transpose()?; + + let range = (location..end_location).into(); + let args = a + .map_or_else(|| ast::Arguments::empty(range), |mut arguments| { + arguments.range = range; + arguments + }); + + Ok(args) + } +}; + +// Note that this is a macro which is used once for function defs, and +// once for lambda defs. +ParameterList: ast::Arguments = { + > >)?> ","? =>? { + validate_pos_params(¶m1)?; + let (posonlyargs, args) = param1; + + // Now gather rest of parameters: + let (vararg, kwonlyargs, kwarg) = args2.unwrap_or((None, vec![], None)); + + Ok(ast::Arguments { + posonlyargs, + args, + kwonlyargs, + vararg, + kwarg, + range: (location..end_location).into() + }) + }, + > >)> ","? =>? { + validate_pos_params(¶m1)?; + let (posonlyargs, args) = param1; + + // Now gather rest of parameters: + let vararg = None; + let kwonlyargs = vec![]; + let kwarg = kw; + + Ok(ast::Arguments { + posonlyargs, + args, + kwonlyargs, + vararg, + kwarg, + range: (location..end_location).into() + }) + }, + > ","? => { + let (vararg, kwonlyargs, kwarg) = params; + ast::Arguments { + posonlyargs: vec![], + args: vec![], + kwonlyargs, + vararg, + kwarg, + range: (location..end_location).into() + } + }, + > ","? => { + ast::Arguments { + posonlyargs: vec![], + args: vec![], + kwonlyargs: vec![], + vararg: None, + kwarg, + range: (location..end_location).into() + } + }, +}; + +// Use inline here to make sure the "," is not creating an ambiguity. +#[inline] +ParameterDefs: (Vec, Vec) = { + >> => { + (vec![], args) + }, + >> "," "/" >)*> => { + (posonlyargs, args) + }, +}; + +ParameterDef: ast::ArgWithDefault = { + => i, + "=" > => { + i.default = Some(Box::new(e)); + i.range = (i.range.start()..end_location).into(); + i + }, +}; + +UntypedParameter: ast::ArgWithDefault = { + => { + let def = ast::Arg { arg, annotation: None, type_comment: None, range: (location..end_location).into() }; + ast::ArgWithDefault { def, default: None, range: (location..end_location).into() } + }, +}; +StarUntypedParameter: ast::Arg = { + => ast::Arg { arg, annotation: None, type_comment: None, range: (location..end_location).into() }, +}; + +TypedParameter: ast::ArgWithDefault = { + >)?> => { + let annotation = a.map(Box::new); + let def = ast::Arg { arg, annotation, type_comment: None, range: (location..end_location).into() }; + ast::ArgWithDefault { def, default: None, range: (location..end_location).into() } + }, +}; + +StarTypedParameter: ast::Arg = { + )?> => { + let annotation = a.map(Box::new); + ast::Arg { arg, annotation, type_comment: None, range: (location..end_location).into() } + }, +}; + +DoubleStarTypedParameter: ast::Arg = { + >)?> => { + let annotation = a.map(Box::new); + ast::Arg { arg, annotation, type_comment: None, range: (location..end_location).into() } + }, +}; + +// Use inline here to make sure the "," is not creating an ambiguity. +// TODO: figure out another grammar that makes this inline no longer required. +#[inline] +ParameterListStarArgs: (Option>, Vec, Option>) = { + "*" >)*> >)?> =>? { + if va.is_none() && kwonlyargs.is_empty() && kwarg.is_none() { + return Err(LexicalError { + error: LexicalErrorType::OtherError("named arguments must follow bare *".to_string()), + location, + })?; + } + + let kwarg = kwarg.flatten(); + let va = va.map(Box::new); + + Ok((va, kwonlyargs, kwarg)) + } +}; + +KwargParameter: Option> = { + "**" => { + kwarg.map(Box::new) + } +}; + +ClassDef: ast::Stmt = { + "class" ":" => { + let (bases, keywords) = match a { + Some((_, arg, _)) => (arg.args, arg.keywords), + None => (vec![], vec![]), + }; + let end_location = body.last().unwrap().end(); + ast::Stmt::ClassDef( + ast::StmtClassDef { + name, + bases, + keywords, + body, + decorator_list, + type_params: type_params.unwrap_or_default(), + range: (location..end_location).into() + }, + ) + }, +}; + + +TypeParamList: Vec = { + "[" > ","? "]" => { + vars + } +}; + +TypeParam: ast::TypeParam = { + >)?> => { + ast::TypeParam::TypeVar( + ast::TypeParamTypeVar { name, bound: bound.map(Box::new), range: (location..end_location).into() } + ) + }, + "*" => { + ast::TypeParam::TypeVarTuple( + ast::TypeParamTypeVarTuple { name, range: (location..end_location).into() } + ) + }, + "**" => { + ast::TypeParam::ParamSpec( + ast::TypeParamParamSpec { name, range: (location..end_location).into() } + ) + } +}; + +// Decorators: +Decorator: ast::Decorator = { + "@" "\n" => { + ast::Decorator { range: (location..end_location).into(), expression: p } + }, +}; + +YieldExpr: ast::Expr = { + "yield" => ast::Expr::Yield( + ast::ExprYield { value: value.map(Box::new), range: (location..end_location).into() } + ), + "yield" "from" > => ast::Expr::YieldFrom( + ast::ExprYieldFrom { value: Box::new(e), range: (location..end_location).into() } + ), +}; + +Test: ast::Expr = { + > "if" > "else" > => ast::Expr::IfExp( + ast::ExprIfExp { + test: Box::new(test), + body: Box::new(body), + orelse: Box::new(orelse), + range: (location..end_location).into() + } + ), + OrTest, + LambdaDef, +}; + +NamedExpressionTest: ast::Expr = { + NamedExpression, + Test<"all">, +} + +NamedExpression: ast::Expr = { + ":=" > => { + ast::Expr::NamedExpr( + ast::ExprNamedExpr { + target: Box::new(ast::Expr::Name( + ast::ExprName { id: id.into(), ctx: ast::ExprContext::Store, range: (location..end_location).into() }, + )), + range: (location..value.end()).into(), + value: Box::new(value), + } + ) + }, +}; + +LambdaDef: ast::Expr = { + "lambda" ?> ":" > =>? { + p.as_ref().map(validate_arguments).transpose()?; + let p = p + .unwrap_or_else(|| ast::Arguments::empty((location_args..end_location_args).into())); + + Ok(ast::Expr::Lambda( + ast::ExprLambda { + args: Box::new(p), + body: Box::new(body), + range: (location..end_location).into() + } + )) + } +} + +OrTest: ast::Expr = { + > "or")+> > => { + values.push(last); + ast::Expr::BoolOp( + ast::ExprBoolOp { op: ast::BoolOp::Or, values, range: (location..end_location).into() } + ) + }, + AndTest, +}; + +AndTest: ast::Expr = { + > "and")+> > => { + values.push(last); + ast::Expr::BoolOp( + ast::ExprBoolOp { op: ast::BoolOp::And, values, range: (location..end_location).into() } + ) + }, + NotTest, +}; + +NotTest: ast::Expr = { + "not" > => ast::Expr::UnaryOp( + ast::ExprUnaryOp { operand: Box::new(e), op: ast::UnaryOp::Not, range: (location..end_location).into() } + ), + Comparison, +}; + +Comparison: ast::Expr = { + > )+> => { + let (ops, comparators) = comparisons.into_iter().unzip(); + ast::Expr::Compare( + ast::ExprCompare { left: Box::new(left), ops, comparators, range: (location..end_location).into() } + ) + }, + Expression, +}; + +CompOp: ast::CmpOp = { + "==" => ast::CmpOp::Eq, + "!=" => ast::CmpOp::NotEq, + "<" => ast::CmpOp::Lt, + "<=" => ast::CmpOp::LtE, + ">" => ast::CmpOp::Gt, + ">=" => ast::CmpOp::GtE, + "in" => ast::CmpOp::In, + "not" "in" => ast::CmpOp::NotIn, + "is" => ast::CmpOp::Is, + "is" "not" => ast::CmpOp::IsNot, +}; + +Expression: ast::Expr = { + > "|" > => ast::Expr::BinOp( + ast::ExprBinOp { left: Box::new(e1), op: ast::Operator::BitOr, right: Box::new(e2), range: (location..end_location).into() } + ), + XorExpression, +}; + +XorExpression: ast::Expr = { + > "^" > => ast::Expr::BinOp( + ast::ExprBinOp { left: Box::new(e1), op: ast::Operator::BitXor, right: Box::new(e2), range: (location..end_location).into() } + ), + AndExpression, +}; + +AndExpression: ast::Expr = { + > "&" > => ast::Expr::BinOp( + ast::ExprBinOp { left: Box::new(e1), op: ast::Operator::BitAnd, right: Box::new(e2), range: (location..end_location).into() } + ), + ShiftExpression, +}; + +ShiftExpression: ast::Expr = { + > > => ast::Expr::BinOp( + ast::ExprBinOp { left: Box::new(e1), op, right: Box::new(e2), range: (location..end_location).into() } + ), + ArithmeticExpression, +}; + +ShiftOp: ast::Operator = { + "<<" => ast::Operator::LShift, + ">>" => ast::Operator::RShift, +}; + +ArithmeticExpression: ast::Expr = { + > > => ast::Expr::BinOp( + ast::ExprBinOp { left: Box::new(a), op, right: Box::new(b), range: (location..end_location).into() } + ), + Term, +}; + +AddOp: ast::Operator = { + "+" => ast::Operator::Add, + "-" => ast::Operator::Sub, +}; + +Term: ast::Expr = { + > > => ast::Expr::BinOp( + ast::ExprBinOp { left: Box::new(a), op, right: Box::new(b), range: (location..end_location).into() } + ), + Factor, +}; + +MulOp: ast::Operator = { + "*" => ast::Operator::Mult, + "/" => ast::Operator::Div, + "//" => ast::Operator::FloorDiv, + "%" => ast::Operator::Mod, + "@" => ast::Operator::MatMult, +}; + +Factor: ast::Expr = { + > => ast::Expr::UnaryOp( + ast::ExprUnaryOp { operand: Box::new(e), op, range: (location..end_location).into() } + ), + Power, +}; + +UnaryOp: ast::UnaryOp = { + "+" => ast::UnaryOp::UAdd, + "-" => ast::UnaryOp::USub, + "~" => ast::UnaryOp::Invert, +}; + +Power: ast::Expr = { + > "**" > => ast::Expr::BinOp( + ast::ExprBinOp { left: Box::new(e), op: ast::Operator::Pow, right: Box::new(b), range: (location..end_location).into() } + ), + AtomExpr, +}; + +AtomExpr: ast::Expr = { + "await" > => { + ast::Expr::Await( + ast::ExprAwait { value: Box::new(atom), range: (location..end_location).into() } + ) + }, + AtomExpr2, +} + +AtomExpr2: ast::Expr = { + Atom, + > "(" ")" => { + ast::Expr::Call( + ast::ExprCall { func: Box::new(f), args: a.args, keywords: a.keywords, range: (location..end_location).into() } + ) + }, + > "[" "]" => ast::Expr::Subscript( + ast::ExprSubscript { value: Box::new(e), slice: Box::new(s), ctx: ast::ExprContext::Load, range: (location..end_location).into() } + ), + > "." => ast::Expr::Attribute( + ast::ExprAttribute { value: Box::new(e), attr, ctx: ast::ExprContext::Load, range: (location..end_location).into() } + ), +}; + +SubscriptList: ast::Expr = { + => { + s1 + }, + "," => { + ast::Expr::Tuple( + ast::ExprTuple { elts: vec![s1], ctx: ast::ExprContext::Load, range: (location..end_location).into() }, + ) + }, + > ","? => { + ast::Expr::Tuple( + ast::ExprTuple { elts, ctx: ast::ExprContext::Load, range: (location..end_location).into() }, + ) + } +}; + +Subscript: ast::Expr = { + TestOrStarNamedExpr, + ?> ":" ?> => { + let lower = e1.map(Box::new); + let upper = e2.map(Box::new); + let step = e3.flatten().map(Box::new); + ast::Expr::Slice( + ast::ExprSlice { lower, upper, step, range: (location..end_location).into() } + ) + } +}; + +SliceOp: Option = { + ":" ?> => e, +} + +Atom: ast::Expr = { + =>? Ok(parse_strings(s)?), + => ast::Expr::Constant( + ast::ExprConstant { value, kind: None, range: (location..end_location).into() } + ), + => ast::Expr::Name( + ast::ExprName { id: id.into(), ctx: ast::ExprContext::Load, range: (location..end_location).into() } + ), + "[" "]" => { + let elts = e.unwrap_or_default(); + ast::Expr::List( + ast::ExprList { elts, ctx: ast::ExprContext::Load, range: (location..end_location).into() } + ) + }, + "[" "]" => { + ast::Expr::ListComp( + ast::ExprListComp { elt: Box::new(elt), generators, range: (location..end_location).into() } + ) + }, + "(" >> ")" if Goal != "no-withitems" => { + if elts.len() == 1 && trailing_comma.is_none() { + elts.into_iter().next().unwrap() + } else { + ast::Expr::Tuple( + ast::ExprTuple { elts, ctx: ast::ExprContext::Load, range: (location..end_location).into() } + ) + } + }, + "(" >> ",")?> )*> ")" =>? { + if left.is_none() && right.is_empty() && trailing_comma.is_none() { + if mid.is_starred_expr() { + return Err(LexicalError{ + error: LexicalErrorType::OtherError("cannot use starred expression here".to_string()), + location: mid.start(), + })?; + } + Ok(mid) + } else { + let elts = left.into_iter().flatten().chain([mid]).chain(right).collect(); + Ok(ast::Expr::Tuple( + ast::ExprTuple { elts, ctx: ast::ExprContext::Load, range: (location..end_location).into() }, + )) + } + }, + "(" ")" => ast::Expr::Tuple( + ast::ExprTuple { elts: Vec::new(), ctx: ast::ExprContext::Load, range: (location..end_location).into() } + ), + "(" ")" => e, + "(" ")" => { + ast::Expr::GeneratorExp( + ast::ExprGeneratorExp { elt: Box::new(elt), generators, range: (location..end_location).into() } + ) + }, + "(" "**" > ")" =>? { + Err(LexicalError{ + error : LexicalErrorType::OtherError("cannot use double starred expression here".to_string()), + location, + }.into()) + }, + "{" "}" => { + let (keys, values) = e + .unwrap_or_default() + .into_iter() + .map(|(k, v)| (k.map(|x| *x), v)) + .unzip(); + ast::Expr::Dict( + ast::ExprDict { keys, values, range: (location..end_location).into() } + ) + }, + "{" "}" => { + ast::Expr::DictComp( + ast::ExprDictComp { + key: Box::new(e1.0), + value: Box::new(e1.1), + generators, + range: (location..end_location).into() + } + ) + }, + "{" "}" => ast::Expr::Set( + ast::ExprSet { elts, range: (location..end_location).into() } + ), + "{" "}" => { + ast::Expr::SetComp( + ast::ExprSetComp { elt: Box::new(elt), generators, range: (location..end_location).into() } + ) + }, + "True" => ast::Expr::Constant(ast::ExprConstant { value: true.into(), kind: None, range: (location..end_location).into() }), + "False" => ast::Expr::Constant(ast::ExprConstant { value: false.into(), kind: None, range: (location..end_location).into() }), + "None" => ast::Expr::Constant(ast::ExprConstant { value: ast::Constant::None, kind: None, range: (location..end_location).into() }), + "..." => ast::Expr::Constant(ast::ExprConstant { value: ast::Constant::Ellipsis, kind: None, range: (location..end_location).into() }), +}; + +ListLiteralValues: Vec = { + > ","? => e, +}; + +DictLiteralValues: Vec<(Option>, ast::Expr)> = { + > ","? => elements, +}; + +DictEntry: (ast::Expr, ast::Expr) = { + > ":" > => (e1, e2), +}; + +DictElement: (Option>, ast::Expr) = { + => (Some(Box::new(e.0)), e.1), + "**" > => (None, e), +}; + +SetLiteralValues: Vec = { + > ","? => e1 +}; + +ExpressionOrStarExpression = { + Expression<"all">, + StarExpr +}; + +ExpressionList: ast::Expr = { + GenericList +}; + +ExpressionList2: Vec = { + > ","? => elements, +}; + +// A test list is one of: +// - a list of expressions +// - a single expression +// - a single expression followed by a trailing comma +#[inline] +TestList: ast::Expr = { + GenericList +}; + +GenericList: ast::Expr = { + > => { + if elts.len() == 1 && trailing_comma.is_none() { + elts.into_iter().next().unwrap() + } else { + ast::Expr::Tuple( + ast::ExprTuple { elts, ctx: ast::ExprContext::Load, range: (location..end_location).into() } + ) + } + } +} + +// Test +StarExpr: ast::Expr = { + "*" > => ast::Expr::Starred( + ast::ExprStarred { value: Box::new(e), ctx: ast::ExprContext::Load, range: (location..end_location).into() }, + ) +}; + +// Comprehensions: +CompFor: Vec = => c; + +SingleForComprehension: ast::Comprehension = { + "for" "in" > => { + let is_async = is_async.is_some(); + ast::Comprehension { + target: set_context(target, ast::ExprContext::Store), + iter, + ifs, + is_async, + range: (location..end_location).into() + } + } +}; + +ExpressionNoCond: ast::Expr = OrTest<"all">; +ComprehensionIf: ast::Expr = "if" => c; + +ArgumentList: ArgumentList = { + > =>? { + let arg_list = parse_args(e)?; + Ok(arg_list) + } +}; + +FunctionArgument: (Option<(TextSize, TextSize, Option)>, ast::Expr) = { + => { + let expr = match c { + Some(c) => ast::Expr::GeneratorExp( + ast::ExprGeneratorExp { + elt: Box::new(e), + generators: c, + range: (location..end_location).into() + } + ), + None => e, + }; + (None, expr) + }, + "=" > => (Some((location, end_location, Some(i))), e), + "*" > => { + let expr = ast::Expr::Starred( + ast::ExprStarred { value: Box::new(e), ctx: ast::ExprContext::Load, range: (location..end_location).into() }, + ); + (None, expr) + }, + "**" > => (Some((location, end_location, None)), e), +}; + +/// Comma separated sequence that allows an optional trailing comma. +#[inline] +Comma: Vec = { + ",")*> => { + if let Some(element) = last { + v.push(element); + } + v + } +}; + +/// One ore more items that are separated by a comma. +OneOrMore: Vec = { + => vec![e], + > "," => { + v.push(e); + v + } +}; + +/// Two or more items that are separated by `Sep` +TwoOrMore: Vec = { + Sep => vec![e1, e2], + > Sep => { + v.push(e); + v + } +}; + +Constant: ast::Constant = { + => ast::Constant::Int(value), + => ast::Constant::Float(value), + => ast::Constant::Complex { real: s.0, imag: s.1 }, +}; + +Identifier: ast::Identifier = { + => ast::Identifier::new(s, (location..end_location).into()) +}; + +// Hook external lexer: +extern { + type Location = TextSize; + type Error = LexicalError; + + enum token::Tok { + Indent => token::Tok::Indent, + Dedent => token::Tok::Dedent, + StartModule => token::Tok::StartModule, + StartInteractive => token::Tok::StartInteractive, + StartExpression => token::Tok::StartExpression, + "+" => token::Tok::Plus, + "-" => token::Tok::Minus, + "~" => token::Tok::Tilde, + ":" => token::Tok::Colon, + "." => token::Tok::Dot, + "..." => token::Tok::Ellipsis, + "," => token::Tok::Comma, + "*" => token::Tok::Star, + "**" => token::Tok::DoubleStar, + "&" => token::Tok::Amper, + "@" => token::Tok::At, + "%" => token::Tok::Percent, + "//" => token::Tok::DoubleSlash, + "^" => token::Tok::CircumFlex, + "|" => token::Tok::Vbar, + "<<" => token::Tok::LeftShift, + ">>" => token::Tok::RightShift, + "/" => token::Tok::Slash, + "(" => token::Tok::Lpar, + ")" => token::Tok::Rpar, + "[" => token::Tok::Lsqb, + "]" => token::Tok::Rsqb, + "{" => token::Tok::Lbrace, + "}" => token::Tok::Rbrace, + "=" => token::Tok::Equal, + "+=" => token::Tok::PlusEqual, + "-=" => token::Tok::MinusEqual, + "*=" => token::Tok::StarEqual, + "@=" => token::Tok::AtEqual, + "/=" => token::Tok::SlashEqual, + "%=" => token::Tok::PercentEqual, + "&=" => token::Tok::AmperEqual, + "|=" => token::Tok::VbarEqual, + "^=" => token::Tok::CircumflexEqual, + "<<=" => token::Tok::LeftShiftEqual, + ">>=" => token::Tok::RightShiftEqual, + "**=" => token::Tok::DoubleStarEqual, + "//=" => token::Tok::DoubleSlashEqual, + ":=" => token::Tok::ColonEqual, + "==" => token::Tok::EqEqual, + "!=" => token::Tok::NotEqual, + "<" => token::Tok::Less, + "<=" => token::Tok::LessEqual, + ">" => token::Tok::Greater, + ">=" => token::Tok::GreaterEqual, + "->" => token::Tok::Rarrow, + "and" => token::Tok::And, + "as" => token::Tok::As, + "assert" => token::Tok::Assert, + "async" => token::Tok::Async, + "await" => token::Tok::Await, + "break" => token::Tok::Break, + "class" => token::Tok::Class, + "continue" => token::Tok::Continue, + "def" => token::Tok::Def, + "del" => token::Tok::Del, + "elif" => token::Tok::Elif, + "else" => token::Tok::Else, + "except" => token::Tok::Except, + "finally" => token::Tok::Finally, + "for" => token::Tok::For, + "from" => token::Tok::From, + "global" => token::Tok::Global, + "if" => token::Tok::If, + "import" => token::Tok::Import, + "in" => token::Tok::In, + "is" => token::Tok::Is, + "lambda" => token::Tok::Lambda, + "nonlocal" => token::Tok::Nonlocal, + "not" => token::Tok::Not, + "or" => token::Tok::Or, + "pass" => token::Tok::Pass, + "raise" => token::Tok::Raise, + "return" => token::Tok::Return, + "try" => token::Tok::Try, + "type" => token::Tok::Type, + "while" => token::Tok::While, + "match" => token::Tok::Match, + "case" => token::Tok::Case, + "with" => token::Tok::With, + "yield" => token::Tok::Yield, + "True" => token::Tok::True, + "False" => token::Tok::False, + "None" => token::Tok::None, + int => token::Tok::Int { value: }, + float => token::Tok::Float { value: }, + complex => token::Tok::Complex { real: , imag: }, + string => token::Tok::String { + value: , + kind: , + triple_quoted: + }, + name => token::Tok::Name { name: }, + line_magic => token::Tok::MagicCommand { + kind: , + value: + }, + "\n" => token::Tok::Newline, + ";" => token::Tok::Semi, + // "#" => token::Tok::Comment(_), + } +} diff --git a/crates/ruff_python_parser/src/python.rs b/crates/ruff_python_parser/src/python.rs new file mode 100644 index 0000000000..116ef566ce --- /dev/null +++ b/crates/ruff_python_parser/src/python.rs @@ -0,0 +1,72834 @@ +// auto-generated: "lalrpop 0.20.0" +// sha3: bf0ea34f78939474a89bc0d4b6e7c14f370a2d2cd2ca8b98bd5aefdae0e1d5f1 +use num_bigint::BigInt; +use ruff_text_size::TextSize; +use ruff_python_ast::{self as ast, Ranged, MagicKind}; +use crate::{ + Mode, + lexer::{LexicalError, LexicalErrorType}, + function::{ArgumentList, parse_args, validate_pos_params, validate_arguments}, + context::set_context, + string::parse_strings, + token::{self, StringKind}, +}; +#[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::all)] +mod __parse__Top { + + use num_bigint::BigInt; + use ruff_text_size::TextSize; + use ruff_python_ast::{self as ast, Ranged, MagicKind}; + use crate::{ + Mode, + lexer::{LexicalError, LexicalErrorType}, + function::{ArgumentList, parse_args, validate_pos_params, validate_arguments}, + context::set_context, + string::parse_strings, + token::{self, StringKind}, +}; + #[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<> + { + Variant0(token::Tok), + Variant1((f64, f64)), + Variant2(f64), + Variant3(BigInt), + Variant4((MagicKind, String)), + Variant5(String), + Variant6((String, StringKind, bool)), + Variant7(core::option::Option), + Variant8((token::Tok, ArgumentList, token::Tok)), + Variant9(core::option::Option<(token::Tok, ArgumentList, token::Tok)>), + Variant10(Option>), + Variant11(core::option::Option>>), + Variant12(ast::ArgWithDefault), + Variant13(alloc::vec::Vec), + Variant14((Option>, Vec, Option>)), + Variant15(core::option::Option<(Option>, Vec, Option>)>), + Variant16(ast::Expr), + Variant17(core::option::Option), + Variant18(alloc::vec::Vec), + Variant19(ast::WithItem), + Variant20(alloc::vec::Vec), + Variant21((token::Tok, ast::Identifier)), + Variant22(alloc::vec::Vec<(token::Tok, ast::Identifier)>), + Variant23(alloc::vec::Vec), + Variant24(ast::Identifier), + Variant25(core::option::Option), + Variant26(ast::Suite), + Variant27(core::option::Option), + Variant28((TextSize, ast::Expr, ast::Suite)), + Variant29(alloc::vec::Vec<(TextSize, ast::Expr, ast::Suite)>), + Variant30((TextSize, ast::Suite)), + Variant31(core::option::Option<(TextSize, ast::Suite)>), + Variant32((Option<(TextSize, TextSize, Option)>, ast::Expr)), + Variant33(alloc::vec::Vec<(Option<(TextSize, TextSize, Option)>, ast::Expr)>), + Variant34(Vec), + Variant35(core::option::Option>), + Variant36(ast::Pattern), + Variant37(alloc::vec::Vec), + Variant38(ast::Stmt), + Variant39(alloc::vec::Vec), + Variant40((ast::Expr, ast::Identifier)), + Variant41(Vec), + Variant42(core::option::Option>), + Variant43((TextSize, (String, StringKind, bool), TextSize)), + Variant44(alloc::vec::Vec<(TextSize, (String, StringKind, bool), TextSize)>), + Variant45((ast::CmpOp, ast::Expr)), + Variant46(alloc::vec::Vec<(ast::CmpOp, ast::Expr)>), + Variant47(ast::Arguments), + Variant48(core::option::Option), + Variant49(TextSize), + Variant50(ast::Operator), + Variant51(ArgumentList), + Variant52(Vec<(Option<(TextSize, TextSize, Option)>, ast::Expr)>), + Variant53(Vec), + Variant54(Vec), + Variant55(core::option::Option>), + Variant56(ast::CmpOp), + Variant57(ast::Constant), + Variant58(ast::Decorator), + Variant59(alloc::vec::Vec), + Variant60((Option>, ast::Expr)), + Variant61((ast::Expr, ast::Expr)), + Variant62(Vec<(Option>, ast::Expr)>), + Variant63(core::option::Option>, ast::Expr)>>), + Variant64(ast::Arg), + Variant65(core::option::Option), + Variant66(ast::ExceptHandler), + Variant67(alloc::vec::Vec), + Variant68(core::option::Option<(Option<(TextSize, TextSize, Option)>, ast::Expr)>), + Variant69(ast::Alias), + Variant70(Vec), + Variant71(ast::Int), + Variant72(alloc::vec::Vec), + Variant73((Option, Option)), + Variant74(ast::MatchCase), + Variant75(alloc::vec::Vec), + Variant76((ast::Identifier, ast::Pattern)), + Variant77((ast::Expr, ast::Pattern)), + Variant78(Vec), + Variant79(Vec<(ast::Identifier, ast::Pattern)>), + Variant80(Vec<(ast::Expr, ast::Pattern)>), + Variant81(Vec), + Variant82(Vec), + Variant83((Vec, Vec)), + Variant84(core::option::Option), + Variant85(ast::Comprehension), + Variant86(alloc::vec::Vec), + Variant87(Option), + Variant88(core::option::Option>), + Variant89(Vec), + Variant90(ast::Mod), + Variant91(ast::TypeParam), + Variant92(core::option::Option>), + Variant93(ast::UnaryOp), + } + const __ACTION: &[i16] = &[ + // State 0 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 0, 0, 0, 0, 0, + // State 1 + 0, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 2 + -744, 0, 0, 0, 0, 0, -744, 0, -744, 0, 0, 0, -744, 0, 0, -744, 0, 0, 0, -744, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -744, 0, -744, -744, -744, -744, 0, 0, 0, 0, 0, -744, -744, -744, -744, 0, -744, -744, -744, -744, 0, 0, 0, 0, -744, -744, -744, -744, -744, 0, 0, -744, -744, -744, -744, 0, -744, -744, -744, -744, -744, -744, -744, -744, -744, 0, 0, 0, -744, 0, 0, 0, 0, 0, -744, -744, -744, -744, -744, -744, + // State 3 + -744, 0, 0, 0, 0, 0, -744, 0, -744, 0, 0, 0, -744, 0, 0, -744, 0, 0, 0, -744, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -744, 0, -744, -744, -744, -744, 0, 0, 0, 0, 0, -744, -744, -744, -744, 0, -744, -744, -744, -744, 0, 0, 0, 0, -744, -744, -744, -744, -744, 0, 0, -744, -744, -744, -744, 0, -744, -744, -744, -744, -744, -744, -744, -744, -744, 0, 0, 0, -744, 0, 0, 0, 0, 0, -744, -744, -744, -744, -744, -744, + // State 4 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 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, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 5 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 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, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 6 + -766, -766, 0, -766, -766, -766, 0, -766, 0, 0, -766, -766, 429, -766, -766, 430, -766, 0, 0, 0, 0, 0, -766, -766, -766, 0, -766, -766, -766, -766, -766, -766, -766, -766, -766, -766, -766, 0, -766, 0, 0, 0, 0, -766, -766, -766, -766, -766, 0, -766, 0, 0, 0, 0, 0, 0, 0, 0, -766, 0, 0, -766, -766, 0, -766, 0, -766, -766, 0, 0, 0, -766, -766, 0, 0, 0, 0, 0, 0, 0, 0, 0, -766, -766, -766, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 7 + -315, 431, 0, -315, 0, -315, 0, -315, 0, 0, -315, -315, 0, -315, -315, 0, -315, 0, 0, 0, 0, 0, -315, -315, -315, 0, -315, 432, 0, -315, 433, -315, 434, 435, 436, 0, -315, 0, -315, 0, 0, 0, 0, -315, 0, -315, -315, -315, 0, -315, 0, 0, 0, 0, 0, 0, 0, 0, -315, 0, 0, -315, -315, 0, -315, 0, 437, 438, 0, 0, 0, 439, -315, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, -315, -315, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 8 + 441, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 9 + -156, -156, 0, -156, -156, -156, 0, -156, 0, 0, -156, -156, 0, -156, -156, 0, -156, 0, 0, 0, 0, 0, -156, -156, -156, 0, -156, -156, 443, -156, -156, -156, -156, -156, -156, 444, -156, 0, -156, 0, 0, 0, 0, -156, -156, -156, -156, -156, 0, -156, 0, 0, 0, 0, 0, 0, 0, 0, -156, 0, 0, -156, -156, 0, -156, 0, -156, -156, 0, 0, 0, -156, -156, 0, 0, 0, 0, 0, 0, 0, 0, 0, -156, -156, -156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 10 + -168, -168, 445, -168, -168, -168, 0, -168, 446, 0, -168, -168, -168, -168, -168, -168, -168, 0, 0, 0, 447, 448, -168, -168, -168, 0, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, 449, -168, 0, 0, 0, 0, -168, -168, -168, -168, -168, 0, -168, 0, 0, 0, 0, 0, 0, 0, 0, -168, 0, 0, -168, -168, 0, -168, 0, -168, -168, 0, 0, 0, -168, -168, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, -168, -168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 11 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 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, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 12 + 0, 0, 0, 0, 0, 0, 13, 457, 14, 38, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 39, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 13 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 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, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 14 + 0, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 465, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 15 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 16 + 0, 0, 0, 0, 0, 0, 0, 0, 41, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 17 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 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, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 18 + 0, 0, 0, 0, 0, 0, 13, 0, 14, 46, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 481, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 19 + 506, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 51, 507, 16, 508, 0, 52, 509, 53, 54, 0, 0, 0, 0, 55, 56, 57, 58, 59, 0, 0, 17, 60, 61, 18, 0, 510, 62, 63, 511, 64, 65, 66, 39, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 512, 423, 424, + // State 20 + 506, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 51, 507, 16, 508, 0, 52, 509, 53, 54, 0, 0, 0, 0, 55, 56, 57, 58, 59, 0, 0, 17, 60, 61, 18, 0, 510, 62, 63, 511, 64, 65, 66, 39, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 512, 423, 424, + // State 21 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 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, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 22 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 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, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 23 + 0, 0, 0, 0, 0, 0, 13, -164, 71, 72, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 25 + 0, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 26 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 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, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 27 + -314, 431, 0, -314, 0, -314, 0, -314, 0, 0, -314, -314, 0, -314, -314, 0, -314, 0, 0, 0, 0, 0, -314, -314, -314, 0, -314, 432, 0, -314, 433, -314, 434, 435, 436, 0, -314, 0, -314, 0, 0, 0, 0, -314, 0, -314, -314, -314, 0, -314, 0, 0, 0, 0, 0, 0, 0, 0, -314, 0, 0, -314, -314, 0, -314, 0, 437, 438, 0, 0, 0, 439, -314, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -314, -314, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 28 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 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, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 29 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 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, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 30 + -419, 0, 0, -419, 0, -419, 13, -419, 14, 0, -419, -419, 413, -419, 0, 414, -419, 0, 0, 415, 0, 0, -419, -419, -419, 0, -419, 0, 0, -419, 0, -419, 0, 0, 0, 0, -419, 0, -419, 416, 417, 418, 15, 0, 0, -419, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, -419, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 31 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 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, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 32 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 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, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 33 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 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, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 34 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 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, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 36 + 0, 0, 0, 0, 0, 0, 0, 538, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 37 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 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, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 38 + -916, 0, 0, 0, 0, 0, 13, -916, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, -916, 0, 0, 0, 0, -916, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 39 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -535, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -535, 0, 0, 0, 0, 0, 536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 40 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, -706, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 41 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -450, 0, 0, 0, 0, 0, 0, 0, 0, 0, -450, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 42 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 43 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -343, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -343, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 44 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -848, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -848, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 45 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 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, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 46 + 0, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 51, 0, 16, 508, 0, 0, 509, 0, 54, 0, 0, 0, 0, 0, 56, 57, 0, 59, 0, 0, 17, 0, 61, 18, 0, 510, 62, 63, 0, 64, 0, 0, 39, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 512, 423, 424, + // State 47 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 557, 0, 0, 0, 91, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 48 + -375, 0, 0, 559, 0, 560, 0, 0, 0, 0, 561, 562, 0, 563, 0, 0, 564, 0, 0, 0, 0, 0, 565, 566, 0, 0, -375, 0, 0, 567, 0, 95, 0, 0, 0, 0, 568, 0, 569, 0, 0, 0, 0, 0, 0, 570, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 571, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 49 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 50 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 51 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 53 + 0, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 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, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 54 + 0, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 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, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 55 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 587, 588, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, + // State 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 57 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 58 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, + // State 59 + 0, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 60 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 61 + -751, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, -751, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 62 + -387, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, -387, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 63 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 64 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 65 + 0, 0, 0, 0, 0, 0, 114, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 629, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 630, 631, 632, 115, 0, 0, 0, 0, 0, 0, 0, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 66 + -155, -155, 0, -155, -155, -155, 0, -155, 0, 0, -155, -155, 0, -155, -155, 0, -155, 0, 0, 0, 0, 0, -155, -155, -155, 0, -155, -155, 443, -155, -155, -155, -155, -155, -155, 444, -155, 0, -155, 0, 0, 0, 0, -155, -155, -155, -155, -155, 0, -155, 0, 0, 0, 0, 0, 0, 0, 0, -155, 0, 0, -155, -155, 0, -155, 0, -155, -155, 0, 0, 0, -155, -155, 0, 0, 0, 0, 0, 0, 0, 0, 0, -155, -155, -155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 67 + -167, -167, 445, -167, -167, -167, 0, -167, 446, 0, -167, -167, -167, -167, -167, -167, -167, 0, 0, 0, 447, 448, -167, -167, -167, 0, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, 449, -167, 0, 0, 0, 0, -167, -167, -167, -167, -167, 0, -167, 0, 0, 0, 0, 0, 0, 0, 0, -167, 0, 0, -167, -167, 0, -167, 0, -167, -167, 0, 0, 0, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 68 + 0, 0, 0, 0, 0, 0, 13, -166, 71, 72, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 69 + 0, 0, 0, 0, 0, 0, 0, -411, 0, 0, 0, 0, 0, 0, -411, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 70 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 71 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 72 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, -818, 414, 0, 0, 0, 415, 0, 0, 0, 0, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, -818, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 73 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 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, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 74 + -765, -765, 0, -765, -765, -765, 0, -765, 0, 0, -765, -765, 429, -765, -765, 430, -765, 0, 0, 0, 0, 0, -765, -765, -765, 0, -765, -765, -765, -765, -765, -765, -765, -765, -765, -765, -765, 0, -765, 0, 0, 0, 0, -765, -765, -765, -765, -765, 0, -765, 0, 0, 0, 0, 0, 0, 0, 0, -765, 0, 0, -765, -765, 0, -765, 0, -765, -765, 0, 0, 0, -765, -765, 0, 0, 0, 0, 0, 0, 0, 0, 0, -765, -765, -765, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 75 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 76 + 0, 0, 0, 0, 0, 0, 0, -301, 0, 0, 0, 0, 0, 0, -301, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -301, 0, 0, 0, 0, 0, 536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -301, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 77 + 0, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 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, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 78 + 0, 0, 0, 0, 0, 0, 13, 648, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 79 + 0, 0, 0, 0, 0, 0, 13, 651, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 80 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 81 + 0, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, -455, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 82 + 0, 0, 0, 0, 0, 0, 0, 0, 129, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 130, 0, 0, 0, -657, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 83 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 84 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 85 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, -705, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 86 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -698, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 87 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 46, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, -346, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 88 + 0, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, -763, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 89 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 92 + -376, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -376, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 93 + 0, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 39, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 94 + 0, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 39, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 677, 423, 424, + // State 95 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 96 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 97 + 0, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 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, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 98 + 0, 0, 0, 0, 0, 0, 114, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 629, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 630, 631, 632, 115, 0, 0, 0, 0, 0, 0, 0, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 99 + 0, 0, 0, 0, 0, 0, 139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, + // State 100 + 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, + // State 101 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 587, 588, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -444, 0, 0, 0, 0, 0, 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, + // State 102 + -350, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -350, 0, 0, 0, 148, 0, 0, 0, 0, 0, 0, 0, -350, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -350, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -350, 0, 0, 0, 0, 0, 0, 0, 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 + 690, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 51, 0, 16, 508, 0, 0, 509, 0, 54, 0, 0, 0, 0, 0, 56, 57, 0, 59, 0, 0, 17, 0, 61, 18, 0, 510, 62, 63, 0, 64, 0, 0, 39, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 512, 423, 424, + // 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, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, + // State 105 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 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, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 106 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 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, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 107 + 0, -766, 0, 0, -766, 0, 0, 0, 0, 0, 0, 0, 429, 0, -766, 430, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -766, -766, 0, -766, 0, -766, -766, -766, -766, 0, 0, 0, 0, 0, 0, 0, 0, -766, 0, -766, -766, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -766, 0, -766, -766, 0, 0, 0, -766, -766, 0, 0, 0, 0, 0, 0, 0, 0, 0, -766, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 108 + 0, 431, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -315, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 432, 0, 0, 433, 0, 434, 435, 436, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -315, -315, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -315, 0, 437, 438, 0, 0, 0, 439, -315, 0, 0, 0, 0, 0, 0, 0, 0, 0, 167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 109 + 0, -156, 0, 0, -156, 0, 0, 0, 0, 0, 0, 0, 0, 0, -156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -156, 443, 0, -156, 0, -156, -156, -156, 444, 0, 0, 0, 0, 0, 0, 0, 0, -156, 0, -156, -156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -156, 0, -156, -156, 0, 0, 0, -156, -156, 0, 0, 0, 0, 0, 0, 0, 0, 0, -156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 110 + 0, -168, 445, 0, -168, 0, 0, 0, 446, 0, 0, 0, -168, 0, -168, -168, 0, 0, 0, 0, 447, 448, 0, 0, 0, 0, 0, -168, -168, 0, -168, 0, -168, -168, -168, -168, 0, 449, 0, 0, 0, 0, 0, 0, -168, 0, -168, -168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, 0, -168, -168, 0, 0, 0, -168, -168, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 111 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 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, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 112 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 13, 699, 14, 178, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 39, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 114 + 0, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 701, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 115 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 116 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 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, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 117 + 0, 0, 0, 0, 0, 0, 13, 0, 14, 46, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 706, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 118 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 119 + 0, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, -820, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 120 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, -816, 414, 0, 0, 0, 415, 0, 0, 0, 0, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, -816, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 121 + 0, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, -821, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 122 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -817, 0, 0, 0, 0, 0, 0, 0, 0, 0, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -817, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 123 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, -778, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, -778, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 124 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 125 + 0, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 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, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 126 + 0, 0, 0, 0, 0, 0, 13, 717, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 127 + 0, 0, 0, 0, 0, 0, 0, 719, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 128 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 186, 0, 0, 0, 0, 0, 0, 0, 0, 0, -675, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 129 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, -685, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -700, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 131 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -697, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 133 + 0, 0, 0, 0, 0, 0, 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, + // State 134 + 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, + // State 135 + -379, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -379, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 136 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 137 + 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, + // State 138 + 0, 0, 0, 0, 0, 0, 13, -164, 71, 72, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 139 + 690, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 51, 0, 16, 508, 0, 0, 509, 0, 54, 0, 0, 0, 0, 0, 56, 57, 0, 59, 0, 0, 17, 0, 61, 18, 0, 510, 62, 63, 0, 64, 0, 0, 39, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 512, 423, 424, + // State 140 + 0, 0, 0, 0, 0, 0, 0, 0, 198, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 141 + 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 142 + 0, 0, 0, 0, 0, 0, 0, 745, 202, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 143 + -370, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, -370, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 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, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 144 + 0, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 145 + 0, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -417, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 146 + 0, 0, 0, 0, 0, 0, 204, 0, 751, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 147 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 148 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 149 + 690, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 51, 0, 16, 508, 0, 0, 509, 0, 54, 0, 0, 0, 0, 0, 56, 57, 0, 59, 0, 0, 17, 0, 61, 18, 0, 510, 62, 63, 0, 64, 0, 0, 39, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 512, 423, 424, + // State 150 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, + // State 152 + 0, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 757, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 153 + 0, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 760, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 154 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 155 + 0, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 51, 0, 16, 508, 0, 0, 509, 0, 54, 0, 0, 0, 0, 0, 56, 57, 0, 59, 0, 0, 17, 0, 61, 18, 0, 510, 62, 63, 0, 64, 0, 0, 39, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 512, 423, 424, + // 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 209, 768, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 157 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 158 + 690, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 51, 0, 16, 508, 0, 0, 509, 0, 54, 0, 0, 0, 0, 0, 56, 57, 0, 59, 0, 0, 17, 0, 61, 18, 0, 510, 62, 63, 0, 64, 0, 0, 39, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 512, 423, 424, + // State 159 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 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, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 160 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 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, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 161 + 0, 0, 0, 0, 0, 0, 13, -164, 71, 72, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 162 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 163 + 0, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 164 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 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, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 165 + 0, 431, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -314, 0, 0, 0, 0, 0, 0, 0, 0, 0, -316, 0, 0, 432, 0, 0, 433, 0, 434, 435, 436, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -314, -314, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -314, 0, 437, 438, 0, 0, 0, 439, -314, 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, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 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, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 167 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 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, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 168 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 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, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 169 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 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, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 170 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 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, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 171 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 172 + 690, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 51, 0, 16, 508, 0, 0, 509, 0, 54, 0, 0, 0, 0, 0, 56, 57, 0, 59, 0, 0, 17, 0, 61, 18, 0, 510, 62, 63, 0, 64, 0, 0, 39, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 512, 423, 424, + // State 173 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 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, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 174 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 175 + 0, 0, 0, 0, 0, 0, 0, 785, 0, 0, 0, 0, 0, 0, 216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 176 + 0, 0, 0, 0, 0, 0, 0, 788, 0, 0, 0, 0, 0, 0, 219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 177 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 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, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 178 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -535, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -535, 0, 0, 0, 0, 0, 536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 179 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -343, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -343, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 180 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -848, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -848, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 181 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -815, 0, 0, 0, 0, 0, 0, 0, 0, 0, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -815, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 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, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 183 + 0, 0, 0, 0, 0, 0, 13, 799, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 184 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, -672, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 185 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -648, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 186 + 0, 0, 0, 0, 0, 0, 0, 0, 226, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -658, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 187 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -699, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 188 + 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, + // State 189 + 0, 0, 0, 0, 0, 0, 13, -164, 71, 72, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 190 + 690, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 51, 0, 16, 508, 0, 0, 509, 0, 54, 0, 0, 0, 0, 0, 56, 57, 0, 59, 0, 0, 17, 0, 61, 18, 0, 510, 62, 63, 0, 64, 0, 0, 39, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 512, 423, 424, + // State 191 + 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 192 + 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 193 + 0, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 194 + 690, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 51, 0, 16, 508, 0, 0, 509, 0, 54, 0, 0, 0, 0, 0, 56, 57, 0, 59, 0, 0, 17, 0, 61, 18, 0, 510, 62, 63, 0, 64, 0, 0, 39, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 512, 423, 424, + // State 195 + 0, 0, 0, 0, 0, 0, 13, -164, 71, 72, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 196 + 690, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 51, 0, 16, 508, 0, 0, 509, 0, 54, 0, 0, 0, 0, 0, 56, 57, 0, 59, 0, 0, 17, 0, 61, 18, 0, 510, 62, 63, 0, 64, 0, 0, 39, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 512, 423, 424, + // State 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 199 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 200 + 690, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 51, 0, 16, 508, 0, 0, 509, 0, 54, 0, 0, 0, 0, 0, 56, 57, 0, 59, 0, 0, 17, 0, 61, 18, 0, 510, 62, 63, 0, 64, 0, 0, 39, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 512, 423, 424, + // State 201 + 0, 0, 0, 0, 0, 0, 0, -628, 0, 0, 0, 0, 0, 0, 242, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 202 + 0, 0, 0, 0, 0, 0, 0, -448, 0, 0, 0, 0, 0, 0, -448, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 204 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 205 + -425, 0, 0, 0, 0, 0, -425, 0, -425, 0, 0, 0, -425, 0, 0, -425, 0, 0, 0, -425, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -425, 0, -425, -425, -425, -425, 0, 0, 0, 0, 0, -425, -425, -425, -425, 0, -425, -425, -425, -425, 246, 830, 0, 0, -425, -425, -425, -425, -425, 0, 0, -425, -425, -425, -425, 0, -425, -425, -425, -425, -425, -425, -425, -425, -425, 0, 0, 0, -425, -425, 0, 0, 0, 0, -425, -425, -425, -425, -425, -425, + // State 206 + -857, 0, 0, 0, 0, 0, -857, 0, -857, 0, 0, 0, -857, 0, 0, -857, 0, 0, 0, -857, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -857, 0, -857, -857, -857, -857, 0, 0, 0, 0, 0, -857, -857, -857, -857, 0, -857, -857, -857, -857, 0, 837, 250, 838, -857, -857, -857, -857, -857, 0, 0, -857, -857, -857, -857, 0, -857, -857, -857, -857, -857, -857, -857, -857, -857, 0, 0, 0, -857, -857, 0, 0, 0, 0, -857, -857, -857, -857, -857, -857, + // State 207 + -861, 0, 0, 0, 0, 0, -861, 0, -861, 0, 0, 0, -861, 0, 0, -861, 0, 0, 0, -861, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -861, 0, -861, -861, -861, -861, 0, 0, 0, 0, 0, -861, -861, -861, -861, 0, -861, -861, -861, -861, 0, 840, 841, 842, -861, -861, -861, -861, -861, 0, 0, -861, -861, -861, -861, 0, -861, -861, -861, -861, -861, -861, -861, -861, -861, 0, 0, 0, -861, -861, 0, 0, 0, 0, -861, -861, -861, -861, -861, -861, + // State 208 + 0, 0, 0, 0, 0, 0, 13, 0, 251, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 209 + 0, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 51, 507, 16, 508, 0, 52, 509, 53, 54, 0, 0, 0, 0, 55, 56, 57, 58, 59, 0, 0, 17, 60, 61, 18, 0, 510, 62, 63, 511, 64, 65, 66, 39, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 512, 423, 424, + // State 210 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 211 + 0, -155, 0, 0, -155, 0, 0, 0, 0, 0, 0, 0, 0, 0, -155, 0, 0, 0, 0, 0, 0, 0, 0, 0, -157, 0, 0, -155, 443, 0, -155, 0, -155, -155, -155, 444, 0, 0, 0, 0, 0, 0, 0, 0, -155, 0, -155, -155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -155, 0, -155, -155, 0, 0, 0, -155, -155, 0, 0, 0, 0, 0, 0, 0, 0, 0, -155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 212 + 0, -167, 445, 0, -167, 0, 0, 0, 446, 0, 0, 0, -167, 0, -167, -167, 0, 0, 0, 0, 447, 448, 0, 0, -169, 0, 0, -167, -167, 0, -167, 0, -167, -167, -167, -167, 0, 449, 0, 0, 0, 0, 0, 0, -167, 0, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, 0, -167, -167, 0, 0, 0, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 213 + 0, -765, 0, 0, -765, 0, 0, 0, 0, 0, 0, 0, 429, 0, -765, 430, 0, 0, 0, 0, 0, 0, 0, 0, -767, 0, 0, -765, -765, 0, -765, 0, -765, -765, -765, -765, 0, 0, 0, 0, 0, 0, 0, 0, -765, 0, -765, -765, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -765, 0, -765, -765, 0, 0, 0, -765, -765, 0, 0, 0, 0, 0, 0, 0, 0, 0, -765, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 214 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 215 + 0, 0, 0, 0, 0, 0, 13, 853, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 216 + 0, 0, 0, 0, 0, 0, 13, 855, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 217 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 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, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 218 + 0, 0, 0, 0, 0, 0, 13, 858, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 219 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 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, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 220 + 0, 0, 0, 0, 0, 0, 0, -773, 0, 0, 0, 0, 0, 0, -773, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -773, 0, 0, 0, 0, 0, -773, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -773, 0, 0, 264, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -773, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 221 + 0, 0, 0, 0, 0, 0, 13, 864, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 222 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -654, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 223 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 224 + 0, 0, 0, 0, 0, 0, 0, 0, 266, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -659, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 225 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 268, 0, 0, 0, 0, 0, 0, 0, 0, 0, -676, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 226 + 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 227 + 0, 0, 0, 0, 0, 0, 13, -164, 71, 72, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 228 + 690, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 51, 0, 16, 508, 0, 0, 509, 0, 54, 0, 0, 0, 0, 0, 56, 57, 0, 59, 0, 0, 17, 0, 61, 18, 0, 510, 62, 63, 0, 64, 0, 0, 39, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 512, 423, 424, + // State 229 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 230 + 690, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 51, 0, 16, 508, 0, 0, 509, 0, 54, 0, 0, 0, 0, 0, 56, 57, 0, 59, 0, 0, 17, 0, 61, 18, 0, 510, 62, 63, 0, 64, 0, 0, 39, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 512, 423, 424, + // State 231 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 232 + 690, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 51, 0, 16, 508, 0, 0, 509, 0, 54, 0, 0, 0, 0, 0, 56, 57, 0, 59, 0, 0, 17, 0, 61, 18, 0, 510, 62, 63, 0, 64, 0, 0, 39, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 512, 423, 424, + // State 233 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 234 + 0, 0, 0, 0, 0, 0, 0, 0, 198, 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, 0, 0, 0, 0, 0, 0, 883, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 235 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 236 + 690, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 51, 0, 16, 508, 0, 0, 509, 0, 54, 0, 0, 0, 0, 0, 56, 57, 0, 59, 0, 0, 17, 0, 61, 18, 0, 510, 62, 63, 0, 64, 0, 0, 39, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 512, 423, 424, + // State 237 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 238 + 0, 0, 0, 0, 0, 0, 0, -579, 278, 203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 279, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 239 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 240 + 0, 0, 0, 0, 0, 0, 0, -627, 0, 0, 0, 0, 0, 0, 282, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 241 + 0, 0, 0, 0, 0, 0, 0, -620, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 242 + 690, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 51, 0, 16, 508, 0, 0, 509, 0, 54, 0, 0, 0, 0, 0, 56, 57, 0, 59, 0, 0, 17, 0, 61, 18, 0, 510, 62, 63, 0, 64, 0, 0, 39, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 512, 423, 424, + // State 243 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 244 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 245 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 246 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 247 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 289, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 248 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 289, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 249 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 250 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 251 + 690, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 51, 0, 16, 508, 0, 0, 509, 0, 54, 0, 0, 0, 0, 0, 56, 57, 0, 59, 0, 0, 17, 0, 61, 18, 0, 510, 62, 63, 0, 64, 0, 0, 39, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 512, 423, 424, + // State 252 + 690, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 51, 0, 16, 508, 0, 0, 509, 0, 54, 0, 0, 0, 0, 0, 56, 57, 0, 59, 0, 0, 17, 0, 61, 18, 0, 510, 62, 63, 0, 64, 0, 0, 39, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 512, 423, 424, + // State 253 + 0, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 51, 0, 16, 508, 0, 0, 509, 0, 54, 0, 0, 0, 0, 0, 56, 57, 0, 59, 0, 0, 17, 0, 61, 18, 0, 510, 62, 63, 0, 64, 0, 0, 39, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 512, 423, 424, + // State 254 + 0, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 51, 507, 16, 508, 0, 52, 509, 53, 54, 0, 0, 0, 0, 55, 56, 57, 58, 59, 0, 0, 17, 60, 61, 18, 0, 510, 62, 63, 511, 64, 65, 66, 39, 19, 0, 0, 0, 419, 910, 0, 0, 0, 0, 420, 421, 422, 512, 423, 424, + // State 255 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 256 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 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, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 257 + 0, 0, 0, 0, 0, 0, 13, 913, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 258 + 0, 0, 0, 0, 0, 0, 0, 915, 0, 0, 0, 0, 0, 0, 300, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 259 + 0, 0, 0, 0, 0, 0, 0, 917, 0, 0, 0, 0, 0, 0, 301, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 260 + 0, 0, 0, 0, 0, 0, 13, 918, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 261 + 0, 0, 0, 0, 0, 0, 0, -771, 0, 0, 0, 0, 0, 0, -771, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -771, 0, 0, 0, 0, 0, -771, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -771, 0, 0, 264, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -771, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 262 + 0, 0, 0, 0, 0, 0, 0, -774, 0, 0, 0, 0, 0, 0, -774, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -774, 0, 0, 0, 0, 0, -774, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -774, 0, 0, 264, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -774, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 263 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 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, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 264 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -651, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 265 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 304, 0, 0, 0, 0, 0, 0, 0, 0, 0, -677, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 266 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 306, 0, 0, 0, 0, 0, 0, 0, 0, 0, -673, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 267 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -649, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 268 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 269 + 690, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 51, 0, 16, 508, 0, 0, 509, 0, 54, 0, 0, 0, 0, 0, 56, 57, 0, 59, 0, 0, 17, 0, 61, 18, 0, 510, 62, 63, 0, 64, 0, 0, 39, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 512, 423, 424, + // State 270 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 271 + 690, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 51, 0, 16, 508, 0, 0, 509, 0, 54, 0, 0, 0, 0, 0, 56, 57, 0, 59, 0, 0, 17, 0, 61, 18, 0, 510, 62, 63, 0, 64, 0, 0, 39, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 512, 423, 424, + // State 272 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 273 + 690, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 51, 0, 16, 508, 0, 0, 509, 0, 54, 0, 0, 0, 0, 0, 56, 57, 0, 59, 0, 0, 17, 0, 61, 18, 0, 510, 62, 63, 0, 64, 0, 0, 39, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 512, 423, 424, + // State 274 + 690, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 51, 0, 16, 508, 0, 0, 509, 0, 54, 0, 0, 0, 0, 0, 56, 57, 0, 59, 0, 0, 17, 0, 61, 18, 0, 510, 62, 63, 0, 64, 0, 0, 39, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 512, 423, 424, + // State 275 + 690, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 51, 0, 16, 508, 0, 0, 509, 0, 54, 0, 0, 0, 0, 0, 56, 57, 0, 59, 0, 0, 17, 0, 61, 18, 0, 510, 62, 63, 0, 64, 0, 0, 39, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 512, 423, 424, + // State 276 + 690, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 51, 0, 16, 508, 0, 0, 509, 0, 54, 0, 0, 0, 0, 0, 56, 57, 0, 59, 0, 0, 17, 0, 61, 18, 0, 510, 62, 63, 0, 64, 0, 0, 39, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 512, 423, 424, + // State 277 + 0, 0, 0, 0, 0, 0, 0, -597, 0, 0, 0, 0, 0, 0, 315, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 278 + 0, 0, 0, 0, 0, 0, 0, -607, 0, 0, 0, 0, 0, 0, 316, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 279 + 0, 0, 0, 0, 0, 0, 0, -622, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 280 + 0, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 281 + 0, 0, 0, 0, 0, 0, 0, -619, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 282 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 283 + 0, 0, 0, 0, 0, 0, 0, 949, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 284 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 285 + 690, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 51, 0, 16, 508, 0, 0, 509, 0, 54, 0, 0, 0, 0, 0, 56, 57, 0, 59, 0, 0, 17, 0, 61, 18, 0, 510, 62, 63, 0, 64, 0, 0, 39, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 512, 423, 424, + // State 286 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 289, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 287 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 289, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 953, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 288 + 0, 0, 0, 0, 0, 0, 324, 0, 325, 0, 0, 0, 0, 0, 0, 326, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 974, 975, 976, 327, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 328, 0, 0, 0, 0, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 289 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 289, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 290 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 289, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 977, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 291 + 690, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 51, 0, 16, 508, 0, 0, 509, 0, 54, 0, 0, 0, 0, 0, 56, 57, 0, 59, 0, 0, 17, 0, 61, 18, 0, 510, 62, 63, 0, 64, 0, 0, 39, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 512, 423, 424, + // State 292 + 690, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 51, 0, 16, 508, 0, 0, 509, 0, 54, 0, 0, 0, 0, 0, 56, 57, 0, 59, 0, 0, 17, 0, 61, 18, 0, 510, 62, 63, 0, 64, 0, 0, 39, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 512, 423, 424, + // State 293 + 690, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 51, 0, 16, 508, 0, 0, 509, 0, 54, 0, 0, 0, 0, 0, 56, 57, 0, 59, 0, 0, 17, 0, 61, 18, 0, 510, 62, 63, 0, 64, 0, 0, 39, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 512, 423, 424, + // State 294 + 690, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 51, 0, 16, 508, 0, 0, 509, 0, 54, 0, 0, 0, 0, 0, 56, 57, 0, 59, 0, 0, 17, 0, 61, 18, 0, 510, 62, 63, 0, 64, 0, 0, 39, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 512, 423, 424, + // State 295 + 690, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 51, 0, 16, 508, 0, 0, 509, 0, 54, 0, 0, 0, 0, 0, 56, 57, 0, 59, 0, 0, 17, 0, 61, 18, 0, 510, 62, 63, 0, 64, 0, 0, 39, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 512, 423, 424, + // State 296 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 297 + 0, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 51, 0, 16, 508, 0, 0, 509, 0, 54, 0, 0, 0, 0, 0, 56, 57, 0, 59, 0, 0, 17, 0, 61, 18, 0, 510, 62, 63, 0, 64, 0, 0, 39, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 512, 423, 424, + // State 298 + 690, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 51, 0, 16, 508, 0, 0, 509, 0, 54, 0, 0, 0, 0, 0, 56, 57, 0, 59, 0, 0, 17, 0, 61, 18, 0, 510, 62, 63, 0, 64, 0, 0, 39, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 512, 423, 424, + // State 299 + 0, 0, 0, 0, 0, 0, 13, 992, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 300 + 0, 0, 0, 0, 0, 0, 13, 994, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 301 + 0, 0, 0, 0, 0, 0, 0, -772, 0, 0, 0, 0, 0, 0, -772, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -772, 0, 0, 0, 0, 0, -772, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -772, 0, 0, 264, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -772, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 302 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 335, 0, 0, 0, 0, 0, 0, 0, 0, 0, -674, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 303 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -650, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 304 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 305 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 306 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 307 + 690, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 51, 0, 16, 508, 0, 0, 509, 0, 54, 0, 0, 0, 0, 0, 56, 57, 0, 59, 0, 0, 17, 0, 61, 18, 0, 510, 62, 63, 0, 64, 0, 0, 39, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 512, 423, 424, + // State 308 + 690, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 51, 0, 16, 508, 0, 0, 509, 0, 54, 0, 0, 0, 0, 0, 56, 57, 0, 59, 0, 0, 17, 0, 61, 18, 0, 510, 62, 63, 0, 64, 0, 0, 39, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 512, 423, 424, + // State 309 + 690, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 51, 0, 16, 508, 0, 0, 509, 0, 54, 0, 0, 0, 0, 0, 56, 57, 0, 59, 0, 0, 17, 0, 61, 18, 0, 510, 62, 63, 0, 64, 0, 0, 39, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 512, 423, 424, + // State 310 + 690, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 51, 0, 16, 508, 0, 0, 509, 0, 54, 0, 0, 0, 0, 0, 56, 57, 0, 59, 0, 0, 17, 0, 61, 18, 0, 510, 62, 63, 0, 64, 0, 0, 39, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 512, 423, 424, + // State 311 + 690, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 51, 0, 16, 508, 0, 0, 509, 0, 54, 0, 0, 0, 0, 0, 56, 57, 0, 59, 0, 0, 17, 0, 61, 18, 0, 510, 62, 63, 0, 64, 0, 0, 39, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 512, 423, 424, + // State 312 + 690, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 51, 0, 16, 508, 0, 0, 509, 0, 54, 0, 0, 0, 0, 0, 56, 57, 0, 59, 0, 0, 17, 0, 61, 18, 0, 510, 62, 63, 0, 64, 0, 0, 39, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 512, 423, 424, + // State 313 + 0, 0, 0, 0, 0, 0, 0, -594, 0, 0, 0, 0, 0, 0, 342, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 314 + 0, 0, 0, 0, 0, 0, 0, -570, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 315 + 0, 0, 0, 0, 0, 0, 0, -580, 344, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 316 + 0, 0, 0, 0, 0, 0, 0, -621, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 317 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 318 + 690, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 51, 0, 16, 508, 0, 0, 509, 0, 54, 0, 0, 0, 0, 0, 56, 57, 0, 59, 0, 0, 17, 0, 61, 18, 0, 510, 62, 63, 0, 64, 0, 0, 39, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 512, 423, 424, + // State 319 + 690, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 51, 0, 16, 508, 0, 0, 509, 0, 54, 0, 0, 0, 0, 0, 56, 57, 0, 59, 0, 0, 17, 0, 61, 18, 0, 510, 62, 63, 0, 64, 0, 0, 39, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 512, 423, 424, + // State 320 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 289, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1018, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 321 + 0, 0, 0, 0, 0, 0, 0, -462, 0, 0, 0, 0, 429, 0, -462, 430, 0, 0, 0, 0, 0, 0, 0, 0, -462, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -462, 0, 0, 0, -462, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -462, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -462, 0, -462, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 322 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 355, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 356, 0, 0, 0, 0, 0, 0, 0, 0, 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 323 + 0, 0, 0, 0, 0, 0, 324, 1021, 325, 0, 0, 0, 0, 0, 0, 326, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 974, 975, 976, 327, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 328, 0, 0, 0, 0, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 324 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 325 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 420, 421, 422, 0, 0, 0, + // State 326 + 0, 0, 0, 0, 0, 0, 324, 0, 325, 0, 0, 0, 0, 0, 0, 326, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 974, 975, 976, 327, 1025, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 328, 0, 0, 0, 0, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 327 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 362, 0, 0, 0, 0, 0, 326, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1034, 1035, 1036, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1037, 0, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 328 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 289, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1038, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 329 + 690, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 51, 0, 16, 508, 0, 0, 509, 0, 54, 0, 0, 0, 0, 0, 56, 57, 0, 59, 0, 0, 17, 0, 61, 18, 0, 510, 62, 63, 0, 64, 0, 0, 39, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 512, 423, 424, + // State 330 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 331 + 0, 0, 0, 0, 0, 0, 13, 1047, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 332 + 0, 0, 0, 0, 0, 0, 13, 1048, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 333 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -656, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 334 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -647, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 335 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -652, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 336 + 690, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 51, 0, 16, 508, 0, 0, 509, 0, 54, 0, 0, 0, 0, 0, 56, 57, 0, 59, 0, 0, 17, 0, 61, 18, 0, 510, 62, 63, 0, 64, 0, 0, 39, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 512, 423, 424, + // State 337 + 690, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 51, 0, 16, 508, 0, 0, 509, 0, 54, 0, 0, 0, 0, 0, 56, 57, 0, 59, 0, 0, 17, 0, 61, 18, 0, 510, 62, 63, 0, 64, 0, 0, 39, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 512, 423, 424, + // State 338 + 690, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 51, 0, 16, 508, 0, 0, 509, 0, 54, 0, 0, 0, 0, 0, 56, 57, 0, 59, 0, 0, 17, 0, 61, 18, 0, 510, 62, 63, 0, 64, 0, 0, 39, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 512, 423, 424, + // State 339 + 690, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 51, 0, 16, 508, 0, 0, 509, 0, 54, 0, 0, 0, 0, 0, 56, 57, 0, 59, 0, 0, 17, 0, 61, 18, 0, 510, 62, 63, 0, 64, 0, 0, 39, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 512, 423, 424, + // State 340 + 0, 0, 0, 0, 0, 0, 0, -576, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 341 + 0, 0, 0, 0, 0, 0, 0, -567, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 342 + 0, 0, 0, 0, 0, 0, 0, -581, 368, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 343 + 0, 0, 0, 0, 0, 0, 0, -598, 0, 0, 0, 0, 0, 0, 370, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 344 + 690, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 51, 0, 16, 508, 0, 0, 509, 0, 54, 0, 0, 0, 0, 0, 56, 57, 0, 59, 0, 0, 17, 0, 61, 18, 0, 510, 62, 63, 0, 64, 0, 0, 39, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 512, 423, 424, + // State 345 + 690, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 51, 0, 16, 508, 0, 0, 509, 0, 54, 0, 0, 0, 0, 0, 56, 57, 0, 59, 0, 0, 17, 0, 61, 18, 0, 510, 62, 63, 0, 64, 0, 0, 39, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 512, 423, 424, + // State 346 + 0, 0, 0, 0, 0, 0, 324, 0, 325, 0, 0, 0, 0, 0, 0, 326, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 974, 975, 976, 327, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 328, 0, 0, 0, 0, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 347 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 420, 421, 422, 0, 0, 0, + // State 348 + 0, 0, 0, 0, 0, 0, 324, 1075, 325, 0, 0, 0, 0, 0, 0, 326, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 974, 975, 976, 327, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 328, 0, 0, 0, 0, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 349 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 350 + 0, 0, 0, 0, 0, 0, 324, 1079, 325, 0, 0, 0, 0, 0, 0, 326, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 974, 975, 976, 327, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 328, 0, 0, 0, 0, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 351 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 352 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 353 + 0, 0, 0, 0, 0, 0, 324, 0, 325, 0, 0, 0, 0, 0, 0, 326, 0, 0, 0, 0, 0, 0, 0, 0, -736, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 974, 975, 976, 327, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -736, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 328, 0, 0, 0, 0, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 354 + 690, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 51, 0, 16, 508, 0, 0, 509, 0, 54, 0, 0, 0, 0, 0, 56, 57, 0, 59, 0, 0, 17, 0, 61, 18, 0, 510, 62, 63, 0, 64, 0, 0, 39, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 512, 423, 424, + // State 355 + 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 356 + 0, 0, 0, 0, 0, 0, 324, 0, 325, 0, 0, 0, 0, 0, 0, 326, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 974, 975, 976, 327, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 328, 0, 0, 0, 0, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 357 + 0, 0, 0, 0, 0, 0, 324, 0, 325, 0, 0, 0, 0, 0, 0, 326, 0, 0, 0, 0, 0, 0, 0, 0, -737, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 974, 975, 976, 327, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -737, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 328, 0, 0, 0, 0, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 358 + 0, 0, 0, 0, 0, 0, 324, 0, 325, 0, 0, 0, 0, 0, 0, 326, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 974, 975, 976, 327, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 328, 0, 0, 0, 0, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 359 + 0, 0, 0, 0, 0, 0, 324, 0, 325, 0, 0, 0, 0, 0, 0, 326, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 974, 975, 976, 327, 1091, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 328, 0, 0, 0, 0, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 360 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 429, 0, 0, 430, 0, 0, 0, 0, 0, 0, 0, 0, -465, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 361 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 362 + 690, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 51, 0, 16, 508, 0, 0, 509, 0, 54, 0, 0, 0, 0, 0, 56, 57, 0, 59, 0, 0, 17, 0, 61, 18, 0, 510, 62, 63, 0, 64, 0, 0, 39, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 512, 423, 424, + // State 363 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -653, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 364 + 690, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 51, 0, 16, 508, 0, 0, 509, 0, 54, 0, 0, 0, 0, 0, 56, 57, 0, 59, 0, 0, 17, 0, 61, 18, 0, 510, 62, 63, 0, 64, 0, 0, 39, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 512, 423, 424, + // State 365 + 690, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 51, 0, 16, 508, 0, 0, 509, 0, 54, 0, 0, 0, 0, 0, 56, 57, 0, 59, 0, 0, 17, 0, 61, 18, 0, 510, 62, 63, 0, 64, 0, 0, 39, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 512, 423, 424, + // State 366 + 0, 0, 0, 0, 0, 0, 0, -573, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 367 + 0, 0, 0, 0, 0, 0, 0, -599, 0, 0, 0, 0, 0, 0, 378, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 368 + 0, 0, 0, 0, 0, 0, 0, -595, 0, 0, 0, 0, 0, 0, 380, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 369 + 0, 0, 0, 0, 0, 0, 0, -571, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 370 + 690, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 51, 0, 16, 508, 0, 0, 509, 0, 54, 0, 0, 0, 0, 0, 56, 57, 0, 59, 0, 0, 17, 0, 61, 18, 0, 510, 62, 63, 0, 64, 0, 0, 39, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 512, 423, 424, + // State 371 + 0, 0, 0, 0, 0, 0, 324, 0, 325, 0, 0, 0, 0, 0, 0, 326, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 974, 975, 976, 327, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 328, 0, 0, 0, 0, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 372 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 386, 0, 0, 0, 0, 0, 326, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1034, 1035, 1036, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1123, 0, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 373 + 690, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 51, 0, 16, 508, 0, 0, 509, 0, 54, 0, 0, 0, 0, 0, 56, 57, 0, 59, 0, 0, 17, 0, 61, 18, 0, 510, 62, 63, 0, 64, 0, 0, 39, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 512, 423, 424, + // State 374 + 690, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 51, 0, 16, 508, 0, 0, 509, 0, 54, 0, 0, 0, 0, 0, 56, 57, 0, 59, 0, 0, 17, 0, 61, 18, 0, 510, 62, 63, 0, 64, 0, 0, 39, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 512, 423, 424, + // State 375 + 690, 0, 0, 0, 0, 0, 13, 0, 14, 0, 0, 0, 413, 0, 0, 414, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 15, 0, 0, 0, 0, 0, 51, 0, 16, 508, 0, 0, 509, 0, 54, 0, 0, 0, 0, 0, 56, 57, 0, 59, 0, 0, 17, 0, 61, 18, 0, 510, 62, 63, 0, 64, 0, 0, 39, 19, 0, 0, 0, 419, 0, 0, 0, 0, 0, 420, 421, 422, 512, 423, 424, + // State 376 + 0, 0, 0, 0, 0, 0, 0, -596, 0, 0, 0, 0, 0, 0, 388, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 377 + 0, 0, 0, 0, 0, 0, 0, -572, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 378 + 0, 0, 0, 0, 0, 0, 0, -577, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 379 + 0, 0, 0, 0, 0, 0, 0, -568, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 380 + 0, 0, 0, 0, 0, 0, 324, 0, 325, 0, 0, 0, 0, 0, 0, 326, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 974, 975, 976, 327, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 328, 0, 0, 0, 0, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 381 + 0, 0, 0, 0, 0, 0, 0, 1139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 382 + 0, 0, 0, 0, 0, 0, 324, 1142, 325, 0, 0, 0, 0, 0, 0, 326, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 974, 975, 976, 327, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 328, 0, 0, 0, 0, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 383 + 0, 0, 0, 0, 0, 0, 0, 1143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 384 + 0, 0, 0, 0, 0, 0, 324, 1145, 325, 0, 0, 0, 0, 0, 0, 326, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 974, 975, 976, 327, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 328, 0, 0, 0, 0, 0, 0, 0, 0, 0, 420, 421, 422, 0, 423, 424, + // State 385 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 386 + 0, 0, 0, 0, 0, 0, 0, -578, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 387 + 0, 0, 0, 0, 0, 0, 0, -569, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 388 + 0, 0, 0, 0, 0, 0, 0, -574, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 389 + 0, 0, 0, 0, 0, 0, 0, -575, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 390 + 0, 0, 0, 0, 0, 0, 0, 1163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 391 + 0, 0, 0, 0, 0, 0, 0, 1164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + // State 392 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 393 + -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, 0, -182, 0, -182, -182, -182, -182, -182, 0, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, 0, 0, 0, -182, -182, -182, -182, -182, -182, 0, -182, 0, 0, 0, 0, 0, 0, 0, 0, -182, 0, 0, -182, -182, 0, -182, 0, -182, -182, 0, 0, 0, -182, -182, 0, 0, 0, 0, 0, 0, 0, 0, 0, -182, -182, -182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 427, + // State 394 + -912, -912, 0, -912, 22, -912, 0, -912, 0, 0, -912, -912, 0, -912, -912, 0, -912, 0, 0, 0, 0, 0, -912, -912, -912, 0, -912, -912, 0, -912, -912, -912, -912, -912, -912, 0, -912, 0, -912, 0, 0, 0, 0, -912, -912, -912, -912, -912, 0, -912, 0, 0, 0, 0, 0, 0, 0, 0, -912, 0, 0, -912, -912, 0, -912, 0, -912, -912, 0, 0, 0, -912, -912, 0, 0, 0, 0, 0, 0, 0, 0, 0, -912, -912, -912, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 395 + -542, 0, 0, -542, 0, -542, 0, -542, 0, 0, -542, -542, 0, -542, -542, 0, -542, 0, 0, 0, 0, 0, -542, -542, -542, 0, -542, 0, 0, -542, 0, -542, 0, 0, 0, 0, -542, 0, -542, 0, 0, 0, 0, -542, 0, -542, 0, -542, 0, -542, 0, 0, 0, 0, 0, 0, 0, 0, -542, 0, 0, -542, -542, 0, -542, 0, 0, 0, 0, 0, 0, 0, 428, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -542, -542, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 396 + -238, -238, -238, -238, -238, -238, -238, -238, -238, -238, -238, -238, -238, -238, -238, -238, -238, 0, -238, 0, -238, -238, -238, -238, -238, 0, -238, -238, -238, -238, -238, -238, -238, -238, -238, -238, -238, -238, -238, 0, 0, 0, -238, -238, -238, -238, -238, -238, 0, -238, 0, 0, 0, 0, 0, 0, 0, 0, -238, 0, 0, -238, -238, 0, -238, 0, -238, -238, 0, 0, 0, -238, -238, 0, 0, 0, 0, 0, 0, 0, 0, 0, -238, -238, -238, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 397 + -247, -247, -247, -247, -247, -247, 24, -247, -247, -247, -247, -247, -247, -247, -247, -247, -247, 0, 25, 0, -247, -247, -247, -247, -247, 0, -247, -247, -247, -247, -247, -247, -247, -247, -247, -247, -247, -247, -247, 0, 0, 0, 26, -247, -247, -247, -247, -247, 0, -247, 0, 0, 0, 0, 0, 0, 0, 0, -247, 0, 0, -247, -247, 0, -247, 0, -247, -247, 0, 0, 0, -247, -247, 0, 0, 0, 0, 0, 0, 0, 0, 0, -247, -247, -247, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 398 + -741, -741, -741, -741, -741, -741, 0, -741, -741, 27, -741, -741, -741, -741, -741, -741, -741, 0, 0, 0, -741, -741, -741, -741, -741, 0, -741, -741, -741, -741, -741, -741, -741, -741, -741, -741, -741, -741, -741, 0, 0, 0, 0, -741, -741, -741, -741, -741, 0, -741, 0, 0, 0, 0, 0, 0, 0, 0, -741, 0, 0, -741, -741, 0, -741, 0, -741, -741, 0, 0, 0, -741, -741, 0, 0, 0, 0, 0, 0, 0, 0, 0, -741, -741, -741, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 399 + -504, 0, 0, -504, 0, -504, 0, -504, 0, 0, -504, -504, 0, -504, -504, 0, -504, 0, 0, 0, 0, 0, -504, -504, -504, 0, -504, 0, 0, -504, 0, -504, 0, 0, 0, 0, -504, 0, -504, 0, 0, 0, 0, -504, 0, -504, -504, -504, 0, -504, 0, 0, 0, 0, 0, 0, 0, 0, -504, 0, 0, -504, -504, 0, -504, 0, 0, 0, 0, 0, 0, 0, -504, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -504, -504, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 400 + -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, 0, -183, 0, -183, -183, -183, -183, -183, 0, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, 0, 0, 0, -183, -183, -183, -183, -183, -183, 0, -183, 0, 0, 0, 0, 0, 0, 0, 0, -183, 0, 0, -183, -183, 0, -183, 0, -183, -183, 0, 0, 0, -183, -183, 0, 0, 0, 0, 0, 0, 0, 0, 0, -183, -183, -183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 401 + -829, -829, -829, -829, -829, -829, 0, -829, -829, 0, -829, -829, -829, -829, -829, -829, -829, 0, 0, 0, -829, -829, -829, -829, -829, 0, -829, -829, -829, -829, -829, -829, -829, -829, -829, -829, -829, -829, -829, 0, 0, 0, 0, -829, -829, -829, -829, -829, 0, -829, 0, 0, 0, 0, 0, 0, 0, 0, -829, 0, 0, -829, -829, 0, -829, 0, -829, -829, 0, 0, 0, -829, -829, 0, 0, 0, 0, 0, 0, 0, 0, 0, -829, -829, -829, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 402 + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, 0, -184, 0, -184, -184, -184, -184, -184, 0, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, 0, 0, 0, -184, -184, -184, -184, -184, -184, 0, -184, 0, 0, 0, 0, 0, 0, 0, 0, -184, 0, 0, -184, -184, 0, -184, 0, -184, -184, 0, 0, 0, -184, -184, 0, 0, 0, 0, 0, 0, 0, 0, 0, -184, -184, -184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 403 + -834, 0, 0, -834, 0, -834, 0, -834, 0, 0, -834, -834, 0, -834, -834, 0, -834, 0, 0, 0, 0, 0, -834, -834, -834, 0, -834, 0, 0, -834, 0, -834, 0, 0, 0, 0, -834, 0, -834, 0, 0, 0, 0, -834, 0, -834, 0, -834, 0, -834, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -834, -834, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -834, -834, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 404 + -160, 0, 0, -160, 0, -160, 0, -160, 0, 0, -160, -160, 0, -160, -160, 0, -160, 0, 0, 0, 0, 0, -160, -160, -160, 0, -160, 0, 0, -160, 0, -160, 0, 0, 0, 0, -160, 0, -160, 0, 0, 0, 0, -160, 0, -160, 442, -160, 0, -160, 0, 0, 0, 0, 0, 0, 0, 0, -160, 0, 0, -160, -160, 0, -160, 0, 0, 0, 0, 0, 0, 0, -160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -160, -160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 405 + -420, 0, 0, -420, 0, -420, 0, -420, 0, 0, -420, -420, 0, -420, 31, 0, -420, 0, 0, 0, 0, 0, -420, -420, -420, 0, -420, 0, 0, -420, 0, -420, 0, 0, 0, 0, -420, 0, -420, 0, 0, 0, 0, 0, 0, -420, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -420, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 406 + -833, 0, 0, -833, 0, -833, 0, -833, 0, 0, -833, -833, 0, -833, -833, 0, -833, 0, 0, 0, 0, 0, -833, -833, -833, 0, -833, 0, 0, -833, 0, -833, 0, 0, 0, 0, -833, 0, -833, 0, 0, 0, 0, -833, 0, -833, 0, -833, 0, -833, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -833, -833, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -833, -833, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 407 + -381, -381, -381, -381, -381, -381, 0, -381, -381, 0, -381, -381, -381, -381, -381, -381, -381, 0, 0, 0, -381, -381, -381, -381, -381, 0, -381, -381, -381, -381, -381, -381, -381, -381, -381, -381, -381, -381, -381, 0, 0, 0, 0, -381, -381, -381, -381, -381, 0, -381, 0, 0, 0, 0, 0, 0, 0, 0, -381, 0, 0, -381, -381, 0, -381, 0, -381, -381, 0, 0, 0, -381, -381, 0, 0, 0, 0, 0, 0, 0, 0, 0, -381, -381, -381, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 408 + -846, 0, 0, -846, 0, -846, 0, -846, 0, 0, -846, -846, 0, -846, -846, 0, -846, 0, 0, 0, 0, 0, -846, -846, -846, 0, -846, 0, 0, -846, 0, -846, 0, 0, 0, 0, -846, 0, -846, 0, 0, 0, 0, 0, 0, -846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 409 + -845, 0, 0, -845, 0, -845, 0, -845, 0, 0, -845, -845, 0, -845, -845, 0, -845, 0, 0, 0, 0, 0, -845, -845, -845, 0, -845, 0, 0, -845, 0, -845, 0, 0, 0, 0, -845, 0, -845, 0, 0, 0, 0, 0, 0, -845, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -845, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 410 + -533, 0, 0, -533, 0, -533, 0, -533, 0, 0, -533, -533, 0, -533, -533, 0, -533, 0, 0, 0, 0, 0, -533, -533, -533, 0, -533, 0, 0, -533, 0, -533, 0, 0, 0, 0, -533, 0, -533, 0, 0, 0, 0, 0, 0, -533, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -533, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 411 + -366, -366, 0, -366, 0, -366, 0, -366, 0, 0, -366, -366, 0, -366, -366, 0, -366, 0, 0, 0, 0, 0, -366, -366, -366, 0, -366, -366, 0, -366, -366, -366, -366, -366, -366, 0, -366, 0, -366, 0, 0, 0, 0, -366, 35, -366, -366, -366, 0, -366, 0, 0, 0, 0, 0, 0, 0, 0, -366, 0, 0, -366, -366, 0, -366, 0, -366, -366, 0, 0, 0, -366, -366, 0, 0, 0, 0, 0, 0, 0, 0, 0, -366, -366, -366, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 412 + 0, 0, 0, 0, 0, 0, -884, 0, 0, 0, 0, 0, -884, 0, 0, -884, 0, 0, 0, -884, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -884, -884, -884, -884, 0, 0, 0, 0, 0, 0, 0, -884, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -884, 0, 0, 0, -884, 0, 0, 0, 0, 0, -884, -884, -884, 0, -884, -884, + // State 413 + 0, 0, 0, 0, 0, 0, -885, 0, 0, 0, 0, 0, -885, 0, 0, -885, 0, 0, 0, -885, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -885, -885, -885, -885, 0, 0, 0, 0, 0, 0, 0, -885, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -885, 0, 0, 0, -885, 0, 0, 0, 0, 0, -885, -885, -885, 0, -885, -885, + // State 414 + -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, 0, -210, 0, -210, -210, -210, -210, -210, 0, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, 0, 0, 0, -210, -210, -210, -210, -210, -210, 0, -210, 0, 0, 0, 0, 0, 0, 0, 0, -210, 0, 0, -210, -210, 0, -210, 0, -210, -210, 0, 0, 0, -210, -210, 0, 0, 0, 0, 0, 0, 0, 0, 0, -210, -210, -210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 415 + -208, -208, -208, -208, -208, -208, -208, -208, -208, -208, -208, -208, -208, -208, -208, -208, -208, 0, -208, 0, -208, -208, -208, -208, -208, 0, -208, -208, -208, -208, -208, -208, -208, -208, -208, -208, -208, -208, -208, 0, 0, 0, -208, -208, -208, -208, -208, -208, 0, -208, 0, 0, 0, 0, 0, 0, 0, 0, -208, 0, 0, -208, -208, 0, -208, 0, -208, -208, 0, 0, 0, -208, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208, -208, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 416 + -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, 0, -209, 0, -209, -209, -209, -209, -209, 0, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, 0, 0, 0, -209, -209, -209, -209, -209, -209, 0, -209, 0, 0, 0, 0, 0, 0, 0, 0, -209, 0, 0, -209, -209, 0, -209, 0, -209, -209, 0, 0, 0, -209, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, -209, -209, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 417 + -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, 0, -207, 0, -207, -207, -207, -207, -207, 0, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, 0, 0, 0, -207, -207, -207, -207, -207, -207, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, -207, 0, 0, -207, -207, 0, -207, 0, -207, -207, 0, 0, 0, -207, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, -207, -207, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 418 + 0, 0, 0, 0, 0, 0, -886, 0, 0, 0, 0, 0, -886, 0, 0, -886, 0, 0, 0, -886, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -886, -886, -886, -886, 0, 0, 0, 0, 0, 0, 0, -886, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -886, 0, 0, 0, -886, 0, 0, 0, 0, 0, -886, -886, -886, 0, -886, -886, + // State 419 + -333, -333, -333, -333, -333, -333, -333, -333, -333, -333, -333, -333, -333, -333, -333, -333, -333, 0, -333, 0, -333, -333, -333, -333, -333, 0, -333, -333, -333, -333, -333, -333, -333, -333, -333, -333, -333, -333, -333, 0, 0, 0, -333, -333, -333, -333, -333, -333, 0, -333, 0, 0, 0, 0, 0, 0, 0, 0, -333, 0, 0, -333, -333, 0, -333, 0, -333, -333, 0, 0, 0, -333, -333, 0, 0, 0, 0, 0, 0, 0, 0, 0, -333, -333, -333, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 420 + -332, -332, -332, -332, -332, -332, -332, -332, -332, -332, -332, -332, -332, -332, -332, -332, -332, 0, -332, 0, -332, -332, -332, -332, -332, 0, -332, -332, -332, -332, -332, -332, -332, -332, -332, -332, -332, -332, -332, 0, 0, 0, -332, -332, -332, -332, -332, -332, 0, -332, 0, 0, 0, 0, 0, 0, 0, 0, -332, 0, 0, -332, -332, 0, -332, 0, -332, -332, 0, 0, 0, -332, -332, 0, 0, 0, 0, 0, 0, 0, 0, 0, -332, -332, -332, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 421 + -331, -331, -331, -331, -331, -331, -331, -331, -331, -331, -331, -331, -331, -331, -331, -331, -331, 0, -331, 0, -331, -331, -331, -331, -331, 0, -331, -331, -331, -331, -331, -331, -331, -331, -331, -331, -331, -331, -331, 0, 0, 0, -331, -331, -331, -331, -331, -331, 0, -331, 0, 0, 0, 0, 0, 0, 0, 0, -331, 0, 0, -331, -331, 0, -331, 0, -331, -331, 0, 0, 0, -331, -331, 0, 0, 0, 0, 0, 0, 0, 0, 0, -331, -331, -331, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 422 + -423, -423, -423, -423, -423, -423, -423, -423, -423, -423, -423, -423, -423, -423, -423, -423, -423, 0, -423, 0, -423, -423, -423, -423, -423, -423, -423, -423, -423, -423, -423, -423, -423, -423, -423, -423, -423, -423, -423, 0, 0, 0, -423, -423, -423, -423, -423, -423, 0, -423, 0, 0, 0, 0, 0, 0, 0, 0, -423, 0, 0, -423, -423, 0, -423, -423, -423, -423, 0, 0, 0, -423, -423, 0, 0, 0, 0, 0, 0, 0, 0, 0, -423, -423, -423, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 423 + -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, 0, -139, 0, -139, -139, -139, -139, -139, 0, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, 0, 0, 0, -139, -139, -139, -139, -139, -139, 0, -139, 0, 0, 0, 0, 0, 0, 0, 0, -139, 0, 0, -139, -139, 0, -139, 0, -139, -139, 0, 0, 0, -139, -139, 0, 0, 0, 0, 0, 0, 0, 0, 0, -139, -139, -139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -139, + // State 424 + -541, 0, 0, -541, 0, -541, 0, -541, 0, 0, -541, -541, 0, -541, -541, 0, -541, 0, 0, 0, 0, 0, -541, -541, -541, 0, -541, 0, 0, -541, 0, -541, 0, 0, 0, 0, -541, 0, -541, 0, 0, 0, 0, -541, 0, -541, 0, -541, 0, -541, 0, 0, 0, 0, 0, 0, 0, 0, -541, 0, 0, -541, -541, 0, -541, 0, 0, 0, 0, 0, 0, 0, 513, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -541, -541, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 425 + -159, 0, 0, -159, 0, -159, 0, -159, 0, 0, -159, -159, 0, -159, -159, 0, -159, 0, 0, 0, 0, 0, -159, -159, -159, 0, -159, 0, 0, -159, 0, -159, 0, 0, 0, 0, -159, 0, -159, 0, 0, 0, 0, -159, 0, -159, 514, -159, 0, -159, 0, 0, 0, 0, 0, 0, 0, 0, -159, 0, 0, -159, -159, 0, -159, 0, 0, 0, 0, 0, 0, 0, -159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -159, -159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 426 + -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, 0, -140, 0, -140, -140, -140, -140, -140, 0, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, 0, 0, 0, -140, -140, -140, -140, -140, -140, 0, -140, 0, 0, 0, 0, 0, 0, 0, 0, -140, 0, 0, -140, -140, 0, -140, 0, -140, -140, 0, 0, 0, -140, -140, 0, 0, 0, 0, 0, 0, 0, 0, 0, -140, -140, -140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -140, + // State 427 + 0, 0, 0, 0, 0, 0, -111, 0, 0, 0, 0, 0, -111, 0, 0, -111, 0, 0, 0, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, -111, -111, 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, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, 0, 0, 0, -111, 0, 0, 0, 0, 0, -111, -111, -111, 0, -111, -111, + // State 428 + 0, 0, 0, 0, 0, 0, -152, 0, 0, 0, 0, 0, -152, 0, 0, -152, 0, 0, 0, -152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -152, -152, -152, -152, 0, 0, 0, 0, 0, 0, 0, -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, -152, 0, 0, 0, -152, 0, 0, 0, 0, 0, -152, -152, -152, 0, -152, -152, + // State 429 + 0, 0, 0, 0, 0, 0, -153, 0, 0, 0, 0, 0, -153, 0, 0, -153, 0, 0, 0, -153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -153, -153, -153, -153, 0, 0, 0, 0, 0, 0, 0, -153, 0, 0, 0, 0, 0, 0, 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, 0, -153, 0, 0, 0, 0, 0, -153, -153, -153, 0, -153, -153, + // State 430 + 0, 0, 0, 0, 0, 0, -305, 0, 0, 0, 0, 0, -305, 0, 0, -305, 0, 0, 0, -305, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -305, -305, -305, -305, 0, 0, 0, 0, 0, 0, 0, -305, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -305, 0, 0, 0, -305, 0, 0, 0, 0, 0, -305, -305, -305, 0, -305, -305, + // State 431 + 0, 0, 0, 0, 0, 0, -306, 0, 0, 0, 0, 0, -306, 0, 0, -306, 0, 0, 0, -306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -306, -306, -306, -306, 0, 0, 0, 0, 0, 0, 0, -306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -306, 0, 0, 0, -306, 0, 0, 0, 0, 0, -306, -306, -306, 0, -306, -306, + // State 432 + 0, 0, 0, 0, 0, 0, -307, 0, 0, 0, 0, 0, -307, 0, 0, -307, 0, 0, 0, -307, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -307, -307, -307, -307, 0, 0, 0, 0, 0, 0, 0, -307, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -307, 0, 0, 0, -307, 0, 0, 0, 0, 0, -307, -307, -307, 0, -307, -307, + // State 433 + 0, 0, 0, 0, 0, 0, -304, 0, 0, 0, 0, 0, -304, 0, 0, -304, 0, 0, 0, -304, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -304, -304, -304, -304, 0, 0, 0, 0, 0, 0, 0, -304, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -304, 0, 0, 0, -304, 0, 0, 0, 0, 0, -304, -304, -304, 0, -304, -304, + // State 434 + 0, 0, 0, 0, 0, 0, -308, 0, 0, 0, 0, 0, -308, 0, 0, -308, 0, 0, 0, -308, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -308, -308, -308, -308, 0, 0, 0, 0, 0, 0, 0, -308, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -308, 0, 0, 0, -308, 0, 0, 0, 0, 0, -308, -308, -308, 0, -308, -308, + // State 435 + 0, 0, 0, 0, 0, 0, -309, 0, 0, 0, 0, 0, -309, 0, 0, -309, 0, 0, 0, -309, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -309, -309, -309, -309, 0, 0, 0, 0, 0, 0, 0, -309, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -309, 0, 0, 0, -309, 0, 0, 0, 0, 0, -309, -309, -309, 0, -309, -309, + // State 436 + 0, 0, 0, 0, 0, 0, -310, 0, 0, 0, 0, 0, -310, 0, 0, -310, 0, 0, 0, -310, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -310, -310, -310, -310, 0, 0, 0, 0, 0, 0, 0, -310, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -310, 0, 0, 0, -310, 0, 0, 0, 0, 0, -310, -310, -310, 0, -310, -310, + // State 437 + 0, 0, 0, 0, 0, 0, -312, 0, 0, 0, 0, 0, -312, 0, 0, -312, 0, 0, 0, -312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -312, -312, -312, -312, 0, 0, 0, 0, 0, 0, 0, -312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 526, 0, 0, 0, 0, 0, 0, 0, 0, 0, -312, 0, 0, 0, -312, 0, 0, 0, 0, 0, -312, -312, -312, 0, -312, -312, + // State 438 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 527, 0, 0, 0, 0, 0, 0, 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 439 + 529, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 440 + -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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 441 + 0, 0, 0, 0, 0, 0, -119, 0, 0, 0, 0, 0, -119, 0, 0, -119, 0, 0, 0, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, -119, -119, -119, 0, 0, 0, 0, 0, 0, 0, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, 0, 0, 0, -119, 0, 0, 0, 0, 0, -119, -119, -119, 0, -119, -119, + // State 442 + 0, 0, 0, 0, 0, 0, -769, 0, 0, 0, 0, 0, -769, 0, 0, -769, 0, 0, 0, -769, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -769, -769, -769, -769, 0, 0, 0, 0, 0, 0, 0, -769, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -769, 0, 0, 0, -769, 0, 0, 0, 0, 0, -769, -769, -769, 0, -769, -769, + // State 443 + 0, 0, 0, 0, 0, 0, -770, 0, 0, 0, 0, 0, -770, 0, 0, -770, 0, 0, 0, -770, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -770, -770, -770, -770, 0, 0, 0, 0, 0, 0, 0, -770, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -770, 0, 0, 0, -770, 0, 0, 0, 0, 0, -770, -770, -770, 0, -770, -770, + // State 444 + 0, 0, 0, 0, 0, 0, -495, 0, 0, 0, 0, 0, -495, 0, 0, -495, 0, 0, 0, -495, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -495, -495, -495, -495, 0, 0, 0, 0, 0, 0, 0, -495, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -495, 0, 0, 0, -495, 0, 0, 0, 0, 0, -495, -495, -495, 0, -495, -495, + // State 445 + 0, 0, 0, 0, 0, 0, -492, 0, 0, 0, 0, 0, -492, 0, 0, -492, 0, 0, 0, -492, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -492, -492, -492, -492, 0, 0, 0, 0, 0, 0, 0, -492, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -492, 0, 0, 0, -492, 0, 0, 0, 0, 0, -492, -492, -492, 0, -492, -492, + // State 446 + 0, 0, 0, 0, 0, 0, -493, 0, 0, 0, 0, 0, -493, 0, 0, -493, 0, 0, 0, -493, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -493, -493, -493, -493, 0, 0, 0, 0, 0, 0, 0, -493, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -493, 0, 0, 0, -493, 0, 0, 0, 0, 0, -493, -493, -493, 0, -493, -493, + // State 447 + 0, 0, 0, 0, 0, 0, -494, 0, 0, 0, 0, 0, -494, 0, 0, -494, 0, 0, 0, -494, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -494, -494, -494, -494, 0, 0, 0, 0, 0, 0, 0, -494, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -494, 0, 0, 0, -494, 0, 0, 0, 0, 0, -494, -494, -494, 0, -494, -494, + // State 448 + 0, 0, 0, 0, 0, 0, -496, 0, 0, 0, 0, 0, -496, 0, 0, -496, 0, 0, 0, -496, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -496, -496, -496, -496, 0, 0, 0, 0, 0, 0, 0, -496, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -496, 0, 0, 0, -496, 0, 0, 0, 0, 0, -496, -496, -496, 0, -496, -496, + // State 449 + -380, -380, -380, -380, -380, -380, 0, -380, -380, 0, -380, -380, -380, -380, -380, -380, -380, 0, 0, 0, -380, -380, -380, -380, -380, 0, -380, -380, -380, -380, -380, -380, -380, -380, -380, -380, -380, -380, -380, 0, 0, 0, 0, -380, -380, -380, -380, -380, 0, -380, 0, 0, 0, 0, 0, 0, 0, 0, -380, 0, 0, -380, -380, 0, -380, 0, -380, -380, 0, 0, 0, -380, -380, 0, 0, 0, 0, 0, 0, 0, 0, 0, -380, -380, -380, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 450 + -184, -184, -184, 0, -184, 0, -184, -184, -184, -184, 0, 0, -184, 0, -184, -184, 0, 0, -184, 0, -184, -184, 0, 0, -184, 76, 0, -184, -184, 0, -184, 0, -184, -184, -184, -184, 0, -184, 0, 0, 0, 0, -184, -184, -184, 0, -184, -184, 0, -184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -184, 0, 0, -184, 0, -184, -184, 0, 0, 0, -184, -184, 0, 0, 0, 0, 0, 0, 0, 0, 0, -184, 0, -184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 451 + 0, 0, 0, 0, 0, 0, 0, -500, 0, 0, 0, 0, 0, 0, -500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -498, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -498, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 452 + 0, 0, 0, 0, 0, 0, 0, 539, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 453 + 0, 0, 0, 0, 0, 0, 0, -501, 0, 0, 0, 0, 0, 0, -501, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 454 + 0, 0, 0, 0, 0, 0, 0, -531, 0, 0, 0, 0, 0, 0, -531, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -499, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -499, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 455 + 0, 0, 0, 0, 0, 0, 0, 540, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 456 + -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, 0, -198, 0, -198, -198, -198, -198, -198, 0, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, 0, 0, 0, -198, -198, -198, -198, -198, -198, 0, -198, 0, 0, 0, 0, 0, 0, 0, 0, -198, 0, 0, -198, -198, 0, -198, 0, -198, -198, 0, 0, 0, -198, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 457 + -791, 0, 0, -791, 0, -791, 0, -791, 0, 0, -791, -791, 0, -791, -791, 0, -791, 0, 0, 0, 0, 0, -791, -791, -791, 0, -791, 0, 0, -791, 0, -791, 0, 0, 0, 0, -791, 0, -791, 0, 0, 0, 0, -791, 0, -791, 0, 0, 0, -791, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -791, 0, 0, 0, 0, -791, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, -791, -791, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 458 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 543, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 459 + -498, 0, 0, 0, 0, 0, 0, -498, 0, 0, 0, 0, 0, 0, -498, 0, 0, 0, 0, 0, 0, 0, 0, 0, -498, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -498, 0, 0, 0, 0, 0, -498, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -498, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -498, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 460 + 0, 0, 0, 0, 0, 0, 0, -848, 0, 0, 0, 0, 0, 0, -848, 0, 0, 0, 0, 0, 0, 0, 0, 0, -848, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -848, 0, 0, 0, 0, 0, -848, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -848, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -848, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 461 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 462 + 0, 0, 0, 0, 0, 0, 0, -849, 0, 0, 0, 0, 0, 0, -849, 0, 0, 0, 0, 0, 0, 0, 0, 0, -849, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -849, 0, 0, 0, 0, 0, -849, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -849, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -849, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 463 + -499, 0, 0, 0, 0, 0, 0, -499, 0, 0, 0, 0, 0, 0, -499, 0, 0, 0, 0, 0, 0, 0, 0, 0, -499, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -499, 0, 0, 0, 0, 0, -499, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -499, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -499, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 464 + -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, 0, -186, 0, -186, -186, -186, -186, -186, 0, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, 0, 0, 0, -186, -186, -186, -186, -186, -186, 0, -186, 0, 0, 0, 0, 0, 0, 0, 0, -186, 0, 0, -186, -186, 0, -186, 0, -186, -186, 0, 0, 0, -186, -186, 0, 0, 0, 0, 0, 0, 0, 0, 0, -186, -186, -186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 465 + -246, -246, -246, -246, -246, -246, 24, -246, -246, -246, -246, -246, -246, -246, -246, -246, -246, 0, 25, 0, -246, -246, -246, -246, -246, 0, -246, -246, -246, -246, -246, -246, -246, -246, -246, -246, -246, -246, -246, 0, 0, 0, 26, -246, -246, -246, -246, -246, 0, -246, 0, 0, 0, 0, 0, 0, 0, 0, -246, 0, 0, -246, -246, 0, -246, 0, -246, -246, 0, 0, 0, -246, -246, 0, 0, 0, 0, 0, 0, 0, 0, 0, -246, -246, -246, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 466 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -887, 0, 0, 0, 0, 0, 0, 0, 0, 0, -887, 0, 0, 0, 0, 0, 0, -887, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 467 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 545, 0, 0, 0, 0, 0, 0, 0, 0, 0, -710, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 468 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, -684, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 469 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -527, 0, 0, 0, 0, 0, 0, 0, 0, 0, -527, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 470 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 471 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -547, 0, 0, 0, 0, 0, 0, 0, 0, 0, -547, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 472 + -503, 0, 0, -503, 0, -503, 0, -503, 0, 0, -503, -503, 0, -503, -503, 0, -503, 0, 0, 0, 0, 0, -503, -503, -503, 0, -503, 0, 0, -503, 0, -503, 0, 0, 0, 0, -503, 0, -503, 0, 0, 0, 0, -503, 0, -503, -503, -503, 0, -503, 0, 0, 0, 0, 0, 0, 0, 0, -503, 0, 0, -503, -503, 0, -503, 0, 0, 0, 0, 0, 0, 0, -503, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -503, -503, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 473 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -507, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -507, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 474 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 551, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 475 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -347, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 476 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -764, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 477 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 553, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 478 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -499, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -499, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -499, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -499, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 479 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -535, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -535, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 480 + -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, 0, -203, 0, -203, -203, -203, -203, -203, 0, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, 0, 0, 0, -203, -203, -203, -203, -203, -203, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, -203, 0, 0, -203, -203, 0, -203, 0, -203, -203, 0, 0, 0, -203, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, -203, -203, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 481 + -788, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -788, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 482 + -325, 0, 0, 0, 0, 0, -325, 0, -325, 0, 0, 0, -325, 0, 0, -325, 0, 0, 0, -325, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -325, 0, -325, -325, -325, -325, 0, 0, 0, 0, 0, -325, -325, -325, -325, 0, -325, -325, -325, -325, 0, 0, 0, 0, -325, -325, -325, -325, -325, 0, 0, -325, -325, -325, -325, 0, -325, -325, -325, -325, -325, -325, -325, -325, -325, 0, 0, 0, -325, -325, 0, 0, 0, 0, -325, -325, -325, -325, -325, -325, + // State 483 + -745, 0, 0, 0, 0, 0, -745, 0, -745, 0, 0, 0, -745, 0, 0, -745, 0, 0, 0, -745, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -745, 0, -745, -745, -745, -745, 0, 0, 0, 0, 0, -745, -745, -745, -745, 0, -745, -745, -745, -745, 0, 0, 0, 0, -745, -745, -745, -745, -745, 0, 0, -745, -745, -745, -745, 0, -745, -745, -745, -745, -745, -745, -745, -745, -745, 0, 0, 0, -745, 0, 0, 0, 0, 0, -745, -745, -745, -745, -745, -745, + // State 484 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -340, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -340, 0, 0, 0, -340, 0, -340, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 485 + -783, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -783, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 486 + -781, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -781, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 487 + -784, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -784, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 488 + -321, 0, 0, 0, 0, 0, -321, 0, -321, 0, 0, 0, -321, 0, 0, -321, 0, 0, 0, -321, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -321, 0, -321, -321, -321, -321, 0, 0, 0, 0, 0, -321, -321, -321, -321, 0, -321, -321, -321, -321, 0, 0, 0, 0, -321, -321, -321, -321, -321, 0, 0, -321, -321, -321, -321, 0, -321, -321, -321, -321, -321, -321, -321, -321, -321, 0, 0, 0, -321, -321, 0, 0, 0, 0, -321, -321, -321, -321, -321, -321, + // State 489 + -324, 0, 0, 0, 0, 0, -324, 0, -324, 0, 0, 0, -324, 0, 0, -324, 0, 0, 0, -324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -324, 0, -324, -324, -324, -324, 0, 0, 0, 0, 0, -324, -324, -324, -324, 0, -324, -324, -324, -324, 0, 0, 0, 0, -324, -324, -324, -324, -324, 0, 0, -324, -324, -324, -324, 0, -324, -324, -324, -324, -324, -324, -324, -324, -324, 0, 0, 0, -324, -324, 0, 0, 0, 0, -324, -324, -324, -324, -324, -324, + // State 490 + -786, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -786, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 491 + -319, 0, 0, 0, 0, 0, -319, 0, -319, 0, 0, 0, -319, 0, 0, -319, 0, 0, 0, -319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -319, 0, -319, -319, -319, -319, 0, 0, 0, 0, 0, -319, -319, -319, -319, 0, -319, -319, -319, -319, 0, 0, 0, 0, -319, -319, -319, -319, -319, 0, 0, -319, -319, -319, -319, 0, -319, -319, -319, -319, -319, -319, -319, -319, -319, 0, 0, 0, -319, -319, 0, 0, 0, 0, -319, -319, -319, -319, -319, -319, + // State 492 + -785, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -785, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 493 + -790, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -790, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 494 + -318, 0, 0, 0, 0, 0, -318, 0, -318, 0, 0, 0, -318, 0, 0, -318, 0, 0, 0, -318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -318, 0, -318, -318, -318, -318, 0, 0, 0, 0, 0, -318, -318, -318, -318, 0, -318, -318, -318, -318, 0, 0, 0, 0, -318, -318, -318, -318, -318, 0, 0, -318, -318, -318, -318, 0, -318, -318, -318, -318, -318, -318, -318, -318, -318, 0, 0, 0, -318, -318, 0, 0, 0, 0, -318, -318, -318, -318, -318, -318, + // State 495 + -787, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -787, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 496 + -782, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -782, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 497 + -389, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -389, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 498 + 572, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 573, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 499 + -845, 0, 0, -845, 0, -845, 0, 0, 0, 0, -845, -845, 0, -845, -845, 0, -845, 0, 0, 0, 0, 0, -845, -845, 96, 0, -845, 0, 0, -845, 0, -845, 0, 0, 0, 0, -845, 0, -845, 0, 0, 0, 0, 0, 0, -845, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -845, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 500 + -322, 0, 0, 0, 0, 0, -322, 0, -322, 0, 0, 0, -322, 0, 0, -322, 0, 0, 0, -322, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -322, 0, -322, -322, -322, -322, 0, 0, 0, 0, 0, -322, -322, -322, -322, 0, -322, -322, -322, -322, 0, 0, 0, 0, -322, -322, -322, -322, -322, 0, 0, -322, -322, -322, -322, 0, -322, -322, -322, -322, -322, -322, -322, -322, -322, 0, 0, 0, -322, -322, 0, 0, 0, 0, -322, -322, -322, -322, -322, -322, + // State 501 + -789, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -789, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 502 + -320, 0, 0, 0, 0, 0, -320, 0, -320, 0, 0, 0, -320, 0, 0, -320, 0, 0, 0, -320, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -320, 0, -320, -320, -320, -320, 0, 0, 0, 0, 0, -320, -320, -320, -320, 0, -320, -320, -320, -320, 0, 0, 0, 0, -320, -320, -320, -320, -320, 0, 0, -320, -320, -320, -320, 0, -320, -320, -320, -320, -320, -320, -320, -320, -320, 0, 0, 0, -320, -320, 0, 0, 0, 0, -320, -320, -320, -320, -320, -320, + // State 503 + -323, 0, 0, 0, 0, 0, -323, 0, -323, 0, 0, 0, -323, 0, 0, -323, 0, 0, 0, -323, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -323, 0, -323, -323, -323, -323, 0, 0, 0, 0, 0, -323, -323, -323, -323, 0, -323, -323, -323, -323, 0, 0, 0, 0, -323, -323, -323, -323, -323, 0, 0, -323, -323, -323, -323, 0, -323, -323, -323, -323, -323, -323, -323, -323, -323, 0, 0, 0, -323, -323, 0, 0, 0, 0, -323, -323, -323, -323, -323, -323, + // State 504 + -388, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -388, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 505 + -750, 0, 0, 0, 0, 0, -750, 0, -750, 0, 0, 0, -750, 0, 0, -750, 0, 0, 0, -750, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -750, 0, -750, -750, -750, -750, 0, 0, 0, 0, 0, -750, -750, -750, -750, 0, -750, -750, -750, -750, 0, 0, 0, 0, -750, -750, -750, -750, -750, 0, 0, -750, -750, -750, -750, 0, -750, -750, -750, -750, -750, -750, -750, -750, -750, 0, 0, 0, -750, 0, 0, 0, 0, 0, -750, -750, -750, -750, -750, -750, + // State 506 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, + // State 507 + -384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 508 + -385, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -385, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 509 + -731, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -731, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 510 + 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 511 + -454, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -454, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 512 + 0, 0, 0, 0, 0, 0, -112, 0, 0, 0, 0, 0, -112, 0, 0, -112, 0, 0, 0, -112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, -112, -112, -112, 0, 0, 0, 0, 0, 0, 0, -112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, 0, 0, 0, -112, 0, 0, 0, 0, 0, -112, -112, -112, 0, -112, -112, + // State 513 + 0, 0, 0, 0, 0, 0, -120, 0, 0, 0, 0, 0, -120, 0, 0, -120, 0, 0, 0, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, -120, -120, -120, 0, 0, 0, 0, 0, 0, 0, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, 0, 0, 0, -120, 0, 0, 0, 0, 0, -120, -120, -120, 0, -120, -120, + // State 514 + 0, 0, 0, 0, 0, 0, 0, 634, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 515 + 0, 0, 0, 0, 0, 0, 0, -163, 0, 0, 0, 0, 0, 0, 635, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 516 + 0, -184, -184, 0, -184, 0, -184, -184, -184, -184, 0, 0, -184, 0, -184, -184, 0, 0, -184, 0, -184, -184, 0, 0, 0, 76, 0, -184, -184, 0, -184, 119, -184, -184, -184, -184, 0, -184, 0, 0, 0, 0, -184, 0, -184, 0, -184, 0, 0, -184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -184, 0, 0, -184, 0, -184, -184, 0, 0, 0, -184, -184, 0, 0, 0, 0, 0, 0, 0, 0, 0, -184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 517 + -241, -241, -241, -241, -241, -241, -241, -241, -241, -241, -241, -241, -241, -241, -241, -241, -241, 0, -241, 0, -241, -241, -241, -241, -241, 0, -241, -241, -241, -241, -241, -241, -241, -241, -241, -241, -241, -241, -241, 0, 0, 0, -241, -241, -241, -241, -241, -241, 0, -241, 0, 0, 0, 0, 0, 0, 0, 0, -241, 0, 0, -241, -241, 0, -241, 0, -241, -241, 0, 0, 0, -241, -241, 0, 0, 0, 0, 0, 0, 0, 0, 0, -241, -241, -241, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 518 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -819, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 519 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 639, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 520 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -499, 0, 0, 0, 0, 0, 0, 0, 0, 0, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -499, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 521 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -810, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -810, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 522 + 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, 0, 0, 0, 0, 0, 0, 0, 0, -822, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 523 + -740, -740, -740, -740, -740, -740, 0, -740, -740, 0, -740, -740, -740, -740, -740, -740, -740, 0, 0, 0, -740, -740, -740, -740, -740, 0, -740, -740, -740, -740, -740, -740, -740, -740, -740, -740, -740, -740, -740, 0, 0, 0, 0, -740, -740, -740, -740, -740, 0, -740, 0, 0, 0, 0, 0, 0, 0, 0, -740, 0, 0, -740, -740, 0, -740, 0, -740, -740, 0, 0, 0, -740, -740, 0, 0, 0, 0, 0, 0, 0, 0, 0, -740, -740, -740, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 524 + -142, -142, 0, -142, 0, -142, 0, -142, 0, 0, -142, -142, 0, -142, -142, 0, -142, 0, 0, 0, 0, 0, -142, -142, -142, 0, -142, -142, 0, -142, -142, -142, -142, -142, -142, 0, -142, 0, -142, 0, 0, 0, 0, -142, 0, -142, -142, -142, 0, -142, 0, 0, 0, 0, 0, 0, 0, 0, -142, 0, 0, -142, -142, 0, -142, 0, -142, -142, 0, 0, 0, -142, -142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, -142, -142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 525 + 0, 0, 0, 0, 0, 0, -313, 0, 0, 0, 0, 0, -313, 0, 0, -313, 0, 0, 0, -313, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -313, -313, -313, -313, 0, 0, 0, 0, 0, 0, 0, -313, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -313, 0, 0, 0, -313, 0, 0, 0, 0, 0, -313, -313, -313, 0, -313, -313, + // State 526 + 0, 0, 0, 0, 0, 0, -311, 0, 0, 0, 0, 0, -311, 0, 0, -311, 0, 0, 0, -311, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -311, -311, -311, -311, 0, 0, 0, 0, 0, 0, 0, -311, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -311, 0, 0, 0, -311, 0, 0, 0, 0, 0, -311, -311, -311, 0, -311, -311, + // State 527 + -365, -365, 0, -365, 0, -365, 0, -365, 0, 0, -365, -365, 0, -365, -365, 0, -365, 0, 0, 0, 0, 0, -365, -365, -365, 0, -365, -365, 0, -365, -365, -365, -365, -365, -365, 0, -365, 0, -365, 0, 0, 0, 0, -365, 35, -365, -365, -365, 0, -365, 0, 0, 0, 0, 0, 0, 0, 0, -365, 0, 0, -365, -365, 0, -365, 0, -365, -365, 0, 0, 0, -365, -365, 0, 0, 0, 0, 0, 0, 0, 0, 0, -365, -365, -365, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 528 + -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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 529 + -534, 0, 0, -534, 0, -534, 0, -534, 0, 0, -534, -534, 0, -534, -534, 0, -534, 0, 0, 0, 0, 0, -534, -534, -534, 0, -534, 0, 0, -534, 0, -534, 0, 0, 0, 0, -534, 0, -534, 0, 0, 0, 0, 0, 0, -534, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -534, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 530 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 531 + -828, -828, -828, -828, -828, -828, 0, -828, -828, 0, -828, -828, -828, -828, -828, -828, -828, 0, 0, 0, -828, -828, -828, -828, -828, 0, -828, -828, -828, -828, -828, -828, -828, -828, -828, -828, -828, -828, -828, 0, 0, 0, 0, -828, -828, -828, -828, -828, 0, -828, 0, 0, 0, 0, 0, 0, 0, 0, -828, 0, 0, -828, -828, 0, -828, 0, -828, -828, 0, 0, 0, -828, -828, 0, 0, 0, 0, 0, 0, 0, 0, 0, -828, -828, -828, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 532 + -911, -911, 0, -911, 22, -911, 0, -911, 0, 0, -911, -911, 0, -911, -911, 0, -911, 0, 0, 0, 0, 0, -911, -911, -911, 0, -911, -911, 0, -911, -911, -911, -911, -911, -911, 0, -911, 0, -911, 0, 0, 0, 0, -911, -911, -911, -911, -911, 0, -911, 0, 0, 0, 0, 0, 0, 0, 0, -911, 0, 0, -911, -911, 0, -911, 0, -911, -911, 0, 0, 0, -911, -911, 0, 0, 0, 0, 0, 0, 0, 0, 0, -911, -911, -911, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 533 + 0, 0, 0, 0, 0, 0, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 534 + 0, 0, 0, 0, 0, 0, 0, -775, 0, 0, 0, 0, 0, 0, -775, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -775, 0, 0, 0, 0, 0, -775, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -775, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -775, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 535 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 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 536 + 0, 0, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 537 + -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, 0, -195, 0, -195, -195, -195, -195, -195, 0, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, 0, 0, 0, -195, -195, -195, -195, -195, -195, 0, -195, 0, 0, 0, 0, 0, 0, 0, 0, -195, 0, 0, -195, -195, 0, -195, 0, -195, -195, 0, 0, 0, -195, -195, 0, 0, 0, 0, 0, 0, 0, 0, 0, -195, -195, -195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 538 + -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, 0, -189, 0, -189, -189, -189, -189, -189, 0, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, 0, 0, 0, -189, -189, -189, -189, -189, -189, 0, -189, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0, 0, -189, -189, 0, -189, 0, -189, -189, 0, 0, 0, -189, -189, 0, 0, 0, 0, 0, 0, 0, 0, 0, -189, -189, -189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 539 + -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, 0, -199, 0, -199, -199, -199, -199, -199, 0, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, 0, 0, 0, -199, -199, -199, -199, -199, -199, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, -199, 0, 0, -199, -199, 0, -199, 0, -199, -199, 0, 0, 0, -199, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, -199, -199, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 540 + 0, 0, 0, 0, 0, 0, 0, 652, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 541 + -915, 0, 0, 0, 0, 0, 0, -915, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -915, 0, 0, 0, 0, -915, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 542 + -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, 0, -185, 0, -185, -185, -185, -185, -185, 0, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, 0, 0, 0, -185, -185, -185, -185, -185, -185, 0, -185, 0, 0, 0, 0, 0, 0, 0, 0, -185, 0, 0, -185, -185, 0, -185, 0, -185, -185, 0, 0, 0, -185, -185, 0, 0, 0, 0, 0, 0, 0, 0, 0, -185, -185, -185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 543 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 544 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -709, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 545 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, -708, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 546 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -797, 0, 0, 0, 0, 0, 0, 0, 0, 0, -797, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 547 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -449, 0, 0, 0, 0, 0, 0, 0, 0, 0, -449, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 548 + -452, 0, 0, -452, 0, -452, 0, -452, 0, 0, -452, -452, 0, -452, -452, 0, -452, 0, 0, 0, 0, 0, -452, -452, -452, 0, -452, 0, 0, -452, 0, -452, 0, 0, 0, 0, -452, 0, -452, 0, 0, 0, 0, -452, 0, -452, 0, -452, 0, -452, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -452, -452, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -452, -452, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 549 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 663, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 550 + -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, 0, -202, 0, -202, -202, -202, -202, -202, 0, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, 0, 0, 0, -202, -202, -202, -202, -202, -202, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, 0, -202, -202, 0, -202, 0, -202, -202, 0, 0, 0, -202, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, -202, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 551 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 664, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 552 + -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, 0, -205, 0, -205, -205, -205, -205, -205, 0, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, 0, 0, 0, -205, -205, -205, -205, -205, -205, 0, -205, 0, 0, 0, 0, 0, 0, 0, 0, -205, 0, 0, -205, -205, 0, -205, 0, -205, -205, 0, 0, 0, -205, -205, 0, 0, 0, 0, 0, 0, 0, 0, 0, -205, -205, -205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 553 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -344, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, -344, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 554 + 669, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 670, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 555 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -341, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -341, 0, 0, 0, -341, 0, -341, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 556 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 557 + -178, 0, 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, 0, 0, -178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 558 + 0, 0, 0, 0, 0, 0, -255, 0, -255, 0, 0, 0, -255, 0, 0, -255, 0, 0, 0, -255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -255, -255, -255, -255, 0, 0, 0, 0, 0, 0, 0, -255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -255, 0, 0, -255, 0, 0, 0, 0, 0, 0, 0, 0, -255, -255, 0, 0, 0, -255, 0, 0, 0, 0, 0, -255, -255, -255, 0, -255, -255, + // State 559 + 0, 0, 0, 0, 0, 0, -256, 0, -256, 0, 0, 0, -256, 0, 0, -256, 0, 0, 0, -256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, -256, -256, -256, 0, 0, 0, 0, 0, 0, 0, -256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -256, 0, 0, -256, 0, 0, 0, 0, 0, 0, 0, 0, -256, -256, 0, 0, 0, -256, 0, 0, 0, 0, 0, -256, -256, -256, 0, -256, -256, + // State 560 + 0, 0, 0, 0, 0, 0, -261, 0, -261, 0, 0, 0, -261, 0, 0, -261, 0, 0, 0, -261, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -261, -261, -261, -261, 0, 0, 0, 0, 0, 0, 0, -261, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -261, 0, 0, -261, 0, 0, 0, 0, 0, 0, 0, 0, -261, -261, 0, 0, 0, -261, 0, 0, 0, 0, 0, -261, -261, -261, 0, -261, -261, + // State 561 + 0, 0, 0, 0, 0, 0, -252, 0, -252, 0, 0, 0, -252, 0, 0, -252, 0, 0, 0, -252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -252, -252, -252, -252, 0, 0, 0, 0, 0, 0, 0, -252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -252, 0, 0, -252, 0, 0, 0, 0, 0, 0, 0, 0, -252, -252, 0, 0, 0, -252, 0, 0, 0, 0, 0, -252, -252, -252, 0, -252, -252, + // State 562 + 0, 0, 0, 0, 0, 0, -250, 0, -250, 0, 0, 0, -250, 0, 0, -250, 0, 0, 0, -250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -250, -250, -250, -250, 0, 0, 0, 0, 0, 0, 0, -250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -250, 0, 0, -250, 0, 0, 0, 0, 0, 0, 0, 0, -250, -250, 0, 0, 0, -250, 0, 0, 0, 0, 0, -250, -250, -250, 0, -250, -250, + // State 563 + 0, 0, 0, 0, 0, 0, -251, 0, -251, 0, 0, 0, -251, 0, 0, -251, 0, 0, 0, -251, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -251, -251, -251, -251, 0, 0, 0, 0, 0, 0, 0, -251, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -251, 0, 0, -251, 0, 0, 0, 0, 0, 0, 0, 0, -251, -251, 0, 0, 0, -251, 0, 0, 0, 0, 0, -251, -251, -251, 0, -251, -251, + // State 564 + 0, 0, 0, 0, 0, 0, -262, 0, -262, 0, 0, 0, -262, 0, 0, -262, 0, 0, 0, -262, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -262, -262, -262, -262, 0, 0, 0, 0, 0, 0, 0, -262, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -262, 0, 0, -262, 0, 0, 0, 0, 0, 0, 0, 0, -262, -262, 0, 0, 0, -262, 0, 0, 0, 0, 0, -262, -262, -262, 0, -262, -262, + // State 565 + 0, 0, 0, 0, 0, 0, -254, 0, -254, 0, 0, 0, -254, 0, 0, -254, 0, 0, 0, -254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -254, -254, -254, -254, 0, 0, 0, 0, 0, 0, 0, -254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -254, 0, 0, -254, 0, 0, 0, 0, 0, 0, 0, 0, -254, -254, 0, 0, 0, -254, 0, 0, 0, 0, 0, -254, -254, -254, 0, -254, -254, + // State 566 + 0, 0, 0, 0, 0, 0, -259, 0, -259, 0, 0, 0, -259, 0, 0, -259, 0, 0, 0, -259, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -259, -259, -259, -259, 0, 0, 0, 0, 0, 0, 0, -259, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -259, 0, 0, -259, 0, 0, 0, 0, 0, 0, 0, 0, -259, -259, 0, 0, 0, -259, 0, 0, 0, 0, 0, -259, -259, -259, 0, -259, -259, + // State 567 + 0, 0, 0, 0, 0, 0, -260, 0, -260, 0, 0, 0, -260, 0, 0, -260, 0, 0, 0, -260, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -260, -260, -260, -260, 0, 0, 0, 0, 0, 0, 0, -260, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -260, 0, 0, -260, 0, 0, 0, 0, 0, 0, 0, 0, -260, -260, 0, 0, 0, -260, 0, 0, 0, 0, 0, -260, -260, -260, 0, -260, -260, + // State 568 + 0, 0, 0, 0, 0, 0, -253, 0, -253, 0, 0, 0, -253, 0, 0, -253, 0, 0, 0, -253, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -253, -253, -253, -253, 0, 0, 0, 0, 0, 0, 0, -253, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -253, 0, 0, -253, 0, 0, 0, 0, 0, 0, 0, 0, -253, -253, 0, 0, 0, -253, 0, 0, 0, 0, 0, -253, -253, -253, 0, -253, -253, + // State 569 + 0, 0, 0, 0, 0, 0, -258, 0, -258, 0, 0, 0, -258, 0, 0, -258, 0, 0, 0, -258, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -258, -258, -258, -258, 0, 0, 0, 0, 0, 0, 0, -258, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -258, 0, 0, -258, 0, 0, 0, 0, 0, 0, 0, 0, -258, -258, 0, 0, 0, -258, 0, 0, 0, 0, 0, -258, -258, -258, 0, -258, -258, + // State 570 + 0, 0, 0, 0, 0, 0, -257, 0, -257, 0, 0, 0, -257, 0, 0, -257, 0, 0, 0, -257, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -257, -257, -257, -257, 0, 0, 0, 0, 0, 0, 0, -257, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -257, 0, 0, -257, 0, 0, 0, 0, 0, 0, 0, 0, -257, -257, 0, 0, 0, -257, 0, 0, 0, 0, 0, -257, -257, -257, 0, -257, -257, + // State 571 + -748, 0, 0, 0, 0, 0, -748, 0, -748, 0, 0, 0, -748, 0, 0, -748, 0, 0, 0, -748, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -748, 0, -748, -748, -748, -748, 0, 0, 0, 0, 0, -748, -748, -748, -748, 0, -748, -748, -748, -748, 0, 0, 0, 0, -748, -748, -748, -748, -748, 0, 0, -748, -748, -748, -748, 0, -748, -748, -748, -748, -748, -748, -748, -748, -748, 0, 0, 0, -748, 0, 0, 0, 0, 0, -748, -748, -748, -748, -748, -748, + // State 572 + 678, 0, 0, 0, 0, 0, -132, 0, -132, 0, 0, 0, -132, 0, 0, -132, 0, 0, 0, -132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -132, -132, -132, -132, 0, 0, 0, 0, 0, -132, 0, -132, -132, 0, 0, -132, 0, -132, 0, 0, 0, 0, 0, -132, -132, 0, -132, 0, 0, -132, 0, -132, -132, 0, -132, -132, -132, 0, -132, 0, 0, -132, -132, 0, 0, 0, -132, 0, 0, 0, 0, 0, -132, -132, -132, -132, -132, -132, + // State 573 + 679, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 574 + -173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 137, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 575 + -373, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -373, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -373, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -373, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 576 + -342, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -342, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 577 + -509, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -509, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -509, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -509, 0, 0, 0, 0, 0, 0, 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 578 + -371, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -371, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 579 + -374, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -374, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -374, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -374, 0, 0, 0, 0, 0, 0, 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 580 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 581 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -369, 0, 0, 0, 0, 0, 0, 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 582 + 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -418, 0, 0, 0, 0, 0, 0, 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 583 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -442, 0, 0, 0, 0, 0, 0, 0, 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 584 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -440, -440, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -440, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -440, 0, + // State 585 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 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 586 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -437, -437, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -437, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -437, 0, + // State 587 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -436, -436, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -436, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -436, 0, + // State 588 + -511, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -511, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -511, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 589 + -421, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 149, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -421, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 590 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 591 + -514, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -514, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -514, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 592 + -445, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -445, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 593 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 687, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 594 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 688, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 595 + -502, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 149, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -502, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 596 + -753, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -753, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 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 597 + -386, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -386, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 598 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -871, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -871, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 599 + 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 600 + 0, -182, -182, 0, -182, 0, -182, 0, -182, -182, 0, 0, -182, 0, -182, -182, 0, 0, -182, 0, -182, -182, 0, 0, -211, 0, 0, -182, -182, 0, -182, 0, -182, -182, -182, -182, 0, -182, 0, 0, 0, 0, -182, 0, -182, 0, -182, -182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -182, 0, -182, -182, 0, 0, 0, -182, -182, 0, 0, 0, 0, 0, 0, 0, 0, 0, -182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 427, + // State 601 + 0, -912, 0, 0, 160, 0, 0, 0, 0, 0, 0, 0, 0, 0, -912, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -912, 0, 0, -912, 0, -912, -912, -912, 0, 0, 0, 0, 0, 0, 0, 0, 0, -912, 0, -912, -912, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -912, 0, -912, -912, 0, 0, 0, -912, -912, 0, 0, 0, 0, 0, 0, 0, 0, 0, -912, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 602 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -914, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 603 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -544, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 604 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -768, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 605 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -242, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 606 + 0, -247, -247, 0, -247, 0, 162, 0, -247, -247, 0, 0, -247, 0, -247, -247, 0, 0, 163, 0, -247, -247, 0, 0, 0, 0, 0, -247, -247, 0, -247, 0, -247, -247, -247, -247, 0, -247, 0, 0, 0, 0, 164, 0, -247, 0, -247, -247, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -247, 0, -247, -247, 0, 0, 0, -247, -247, 0, 0, 0, 0, 0, 0, 0, 0, 0, -247, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 607 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 608 + 0, -741, -741, 0, -741, 0, 0, 0, -741, 165, 0, 0, -741, 0, -741, -741, 0, 0, 0, 0, -741, -741, 0, 0, 0, 0, 0, -741, -741, 0, -741, 0, -741, -741, -741, -741, 0, -741, 0, 0, 0, 0, 0, 0, -741, 0, -741, -741, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -741, 0, -741, -741, 0, 0, 0, -741, -741, 0, 0, 0, 0, 0, 0, 0, 0, 0, -741, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 609 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -743, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 610 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -506, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 611 + 0, -183, -183, 0, -183, 0, -183, 0, -183, -183, 0, 0, -183, 0, -183, -183, 0, 0, -183, 0, -183, -183, 0, 0, -212, 0, 0, -183, -183, 0, -183, 0, -183, -183, -183, -183, 0, -183, 0, 0, 0, 0, -183, 0, -183, 0, -183, -183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -183, 0, -183, -183, 0, 0, 0, -183, -183, 0, 0, 0, 0, 0, 0, 0, 0, 0, -183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 612 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -317, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 613 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -831, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 614 + 0, -184, -184, 0, -184, 0, -184, 0, -184, -184, 0, 0, -184, 0, -184, -184, 0, 0, -184, 0, -184, -184, 0, 0, -213, 0, 0, -184, -184, 0, -184, 0, -184, -184, -184, -184, 0, -184, 0, 0, 0, 0, -184, 0, -184, 0, -184, -184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -184, 0, -184, -184, 0, 0, 0, -184, -184, 0, 0, 0, 0, 0, 0, 0, 0, 0, -184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 615 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -834, 0, 0, 0, 0, 0, 0, 0, 0, 0, -839, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -834, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 616 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -162, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 617 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -833, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -833, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, + // State 618 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -838, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 619 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -383, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 620 + 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 621 + 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 622 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -891, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 623 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -894, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 624 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -906, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 625 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 626 + 0, -366, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -366, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -366, 0, 0, -366, 0, -366, -366, -366, 0, 0, 0, 0, 0, 0, 0, 0, 0, 174, 0, -366, -366, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -366, 0, -366, -366, 0, 0, 0, -366, -366, 0, 0, 0, 0, 0, 0, 0, 0, 0, -366, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 627 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -368, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 628 + 0, -210, -210, 0, -210, 0, -210, 0, -210, -210, 0, 0, -210, 0, -210, -210, 0, 0, -210, 0, -210, -210, 0, 0, -237, 0, 0, -210, -210, 0, -210, 0, -210, -210, -210, -210, 0, -210, 0, 0, 0, 0, -210, 0, -210, 0, -210, -210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -210, 0, -210, -210, 0, 0, 0, -210, -210, 0, 0, 0, 0, 0, 0, 0, 0, 0, -210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 629 + 0, -208, -208, 0, -208, 0, -208, 0, -208, -208, 0, 0, -208, 0, -208, -208, 0, 0, -208, 0, -208, -208, 0, 0, -235, 0, 0, -208, -208, 0, -208, 0, -208, -208, -208, -208, 0, -208, 0, 0, 0, 0, -208, 0, -208, 0, -208, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208, 0, -208, -208, 0, 0, 0, -208, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 630 + 0, -209, -209, 0, -209, 0, -209, 0, -209, -209, 0, 0, -209, 0, -209, -209, 0, 0, -209, 0, -209, -209, 0, 0, -236, 0, 0, -209, -209, 0, -209, 0, -209, -209, -209, -209, 0, -209, 0, 0, 0, 0, -209, 0, -209, 0, -209, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -209, 0, -209, -209, 0, 0, 0, -209, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 631 + 0, -207, -207, 0, -207, 0, -207, 0, -207, -207, 0, 0, -207, 0, -207, -207, 0, 0, -207, 0, -207, -207, 0, 0, -234, 0, 0, -207, -207, 0, -207, 0, -207, -207, -207, -207, 0, -207, 0, 0, 0, 0, -207, 0, -207, 0, -207, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -207, 0, -207, -207, 0, 0, 0, -207, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 632 + 0, 0, 0, 0, 0, 0, 0, -165, 0, 0, 0, 0, 0, 0, 707, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 633 + -239, -239, -239, -239, -239, -239, -239, -239, -239, -239, -239, -239, -239, -239, -239, -239, -239, 0, -239, 0, -239, -239, -239, -239, -239, 0, -239, -239, -239, -239, -239, -239, -239, -239, -239, -239, -239, -239, -239, 0, 0, 0, -239, -239, -239, -239, -239, -239, 0, -239, 0, 0, 0, 0, 0, 0, 0, 0, -239, 0, 0, -239, -239, 0, -239, 0, -239, -239, 0, 0, 0, -239, -239, 0, 0, 0, 0, 0, 0, 0, 0, 0, -239, -239, -239, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 634 + 0, 0, 0, 0, 0, 0, -116, -116, -116, -116, 0, 0, -116, 0, 0, -116, 0, 0, 0, -116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -116, -116, -116, -116, 0, 0, 0, 0, 0, 0, 0, -116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -116, 0, 0, -116, 0, 0, 0, 0, 0, 0, 0, 0, 0, -116, 0, 0, 0, -116, 0, 0, 0, 0, 0, -116, -116, -116, 0, -116, -116, + // State 635 + 0, 0, 0, 0, 0, 0, 0, -410, 0, 0, 0, 0, 0, 0, -410, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 636 + 0, 0, 0, 0, 0, 0, 0, -413, 0, 0, 0, 0, 0, 0, -413, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 637 + 0, 0, 0, 0, 0, 0, 0, -414, 0, 0, 0, 0, 0, 0, -414, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 638 + -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, 0, -240, 0, -240, -240, -240, -240, -240, 0, -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, 0, 0, 0, -240, -240, -240, -240, -240, -240, 0, -240, 0, 0, 0, 0, 0, 0, 0, 0, -240, 0, 0, -240, -240, 0, -240, 0, -240, -240, 0, 0, 0, -240, -240, 0, 0, 0, 0, 0, 0, 0, 0, 0, -240, -240, -240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 639 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -814, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -814, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 640 + -143, -143, 0, -143, 0, -143, 0, -143, 0, 0, -143, -143, 0, -143, -143, 0, -143, 0, 0, 0, 0, 0, -143, -143, -143, 0, -143, -143, 0, -143, -143, -143, -143, -143, -143, 0, -143, 0, -143, 0, 0, 0, 0, -143, 0, -143, -143, -143, 0, -143, 0, 0, 0, 0, 0, 0, 0, 0, -143, 0, 0, -143, -143, 0, -143, 0, -143, -143, 0, 0, 0, -143, -143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, -143, -143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 641 + -497, 0, 0, 0, 0, 0, 0, -497, 0, 0, 0, 0, 0, 0, -497, 0, 0, 0, 0, 0, 0, 0, 0, 0, -497, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -497, 0, 0, 0, 0, 0, -497, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -497, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -497, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 642 + -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, 0, -200, 0, -200, -200, -200, -200, -200, 0, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, 0, 0, 0, -200, -200, -200, -200, -200, -200, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, -200, 0, 0, -200, -200, 0, -200, 0, -200, -200, 0, 0, 0, -200, -200, 0, 0, 0, 0, 0, 0, 0, 0, 0, -200, -200, -200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 643 + 0, 0, 0, 0, 0, 0, 0, -776, 0, 0, 0, 0, 0, 0, -776, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -776, 0, 0, 0, 0, 0, -776, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -776, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -776, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 644 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 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 645 + -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, 0, -197, 0, -197, -197, -197, -197, -197, 0, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, 0, 0, 0, -197, -197, -197, -197, -197, -197, 0, -197, 0, 0, 0, 0, 0, 0, 0, 0, -197, 0, 0, -197, -197, 0, -197, 0, -197, -197, 0, 0, 0, -197, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 646 + 0, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, 0, -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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 647 + -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, 0, -191, 0, -191, -191, -191, -191, -191, 0, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, 0, 0, 0, -191, -191, -191, -191, -191, -191, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0, 0, -191, -191, 0, -191, 0, -191, -191, 0, 0, 0, -191, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, -191, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 648 + 0, 0, 0, 0, 0, 0, 0, -500, 0, 0, 0, 0, 0, 0, -500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 649 + 0, 0, 0, 0, 0, 0, 0, -532, 0, 0, 0, 0, 0, 0, -532, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 650 + -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, 0, -188, 0, -188, -188, -188, -188, -188, 0, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, 0, 0, 0, -188, -188, -188, -188, -188, -188, 0, -188, 0, 0, 0, 0, 0, 0, 0, 0, -188, 0, 0, -188, -188, 0, -188, 0, -188, -188, 0, 0, 0, -188, -188, 0, 0, 0, 0, 0, 0, 0, 0, 0, -188, -188, -188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 651 + -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, 0, -201, 0, -201, -201, -201, -201, -201, 0, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, 0, 0, 0, -201, -201, -201, -201, -201, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, -201, -201, 0, -201, 0, -201, -201, 0, 0, 0, -201, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, -201, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 652 + -917, 0, 0, 0, 0, 0, 0, -917, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -917, 0, 0, 0, 0, -917, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 653 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 654 + -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, 0, -187, 0, -187, -187, -187, -187, -187, 0, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, 0, 0, 0, -187, -187, -187, -187, -187, -187, 0, -187, 0, 0, 0, 0, 0, 0, 0, 0, -187, 0, 0, -187, -187, 0, -187, 0, -187, -187, 0, 0, 0, -187, -187, 0, 0, 0, 0, 0, 0, 0, 0, 0, -187, -187, -187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 655 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 720, 0, 0, 0, 0, 0, 0, 0, 0, 0, -690, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 656 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -528, 0, 0, 0, 0, 0, 0, 0, 0, 0, -528, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 657 + -451, 0, 0, -451, 0, -451, 0, -451, 0, 0, -451, -451, 0, -451, -451, 0, -451, 0, 0, 0, 0, 0, -451, -451, -451, 0, -451, 0, 0, -451, 0, -451, 0, 0, 0, 0, -451, 0, -451, 0, 0, 0, 0, -451, 0, -451, 0, -451, 0, -451, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -451, -451, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -451, -451, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 658 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -548, 0, 0, 0, 0, 0, 0, 0, 0, 0, -548, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 659 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, -707, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 660 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 726, 0, 0, 0, 0, 0, 0, 0, 0, 0, -702, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 661 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, 0, 0, -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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 662 + -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, 0, -204, 0, -204, -204, -204, -204, -204, 0, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, 0, 0, 0, -204, -204, -204, -204, -204, -204, 0, -204, 0, 0, 0, 0, 0, 0, 0, 0, -204, 0, 0, -204, -204, 0, -204, 0, -204, -204, 0, 0, 0, -204, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, -204, -204, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 663 + -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, 0, -206, 0, -206, -206, -206, -206, -206, 0, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, 0, 0, 0, -206, -206, -206, -206, -206, -206, 0, -206, 0, 0, 0, 0, 0, 0, 0, 0, -206, 0, 0, -206, -206, 0, -206, 0, -206, -206, 0, 0, 0, -206, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, -206, -206, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 664 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -508, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -508, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 665 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -343, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -343, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 666 + 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 667 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -345, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -345, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -345, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -345, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 668 + -749, 0, 0, 0, 0, 0, -749, 0, -749, 0, 0, 0, -749, 0, 0, -749, 0, 0, 0, -749, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -749, 0, -749, -749, -749, -749, 0, 0, 0, 0, 0, -749, -749, -749, -749, 0, -749, -749, -749, -749, 0, 0, 0, 0, -749, -749, -749, -749, -749, 0, 0, -749, -749, -749, -749, 0, -749, -749, -749, -749, -749, -749, -749, -749, -749, 0, 0, 0, -749, 0, 0, 0, 0, 0, -749, -749, -749, -749, -749, -749, + // State 669 + 727, 0, 0, 0, 0, 0, -133, 0, -133, 0, 0, 0, -133, 0, 0, -133, 0, 0, 0, -133, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -133, -133, -133, -133, 0, 0, 0, 0, 0, -133, 0, -133, -133, 0, 0, -133, 0, -133, 0, 0, 0, 0, 0, -133, -133, 0, -133, 0, 0, -133, 0, -133, -133, 0, -133, -133, -133, 0, -133, 0, 0, -133, -133, 0, 0, 0, -133, 0, 0, 0, 0, 0, -133, -133, -133, -133, -133, -133, + // State 670 + -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, -179, 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, 0, 0, 0, 0, 0, 0, 0, 0, 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 671 + -843, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -843, 0, 0, 0, 0, -843, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 672 + -377, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -377, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 673 + -844, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -844, 0, 0, 0, 0, -844, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 674 + -175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -175, 0, 0, 0, 0, -175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 675 + -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, 0, 0, 0, 0, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 676 + -453, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -453, 0, 0, 0, 0, -453, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 677 + -746, 0, 0, 0, 0, 0, -746, 0, -746, 0, 0, 0, -746, 0, 0, -746, 0, 0, 0, -746, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -746, 0, -746, -746, -746, -746, 0, 0, 0, 0, 0, -746, -746, -746, -746, 0, -746, -746, -746, -746, 0, 0, 0, 0, -746, -746, -746, -746, -746, 0, 0, -746, -746, -746, -746, 0, -746, -746, -746, -746, -746, -746, -746, -746, -746, 0, 0, 0, -746, 0, 0, 0, 0, 0, -746, -746, -746, -746, -746, -746, + // State 678 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -337, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -337, 0, 0, 0, -337, 0, -337, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 679 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 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 680 + 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 681 + 0, 0, 0, 0, 0, 0, 196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 682 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 683 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -443, 0, 0, 0, 0, 0, 0, 0, 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 684 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -441, -441, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -441, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -441, 0, + // State 685 + -351, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -351, 0, 0, 0, 205, 0, 0, 0, 0, 0, 0, 0, -351, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -351, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -351, 0, 0, 0, 0, 0, 0, 0, 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 686 + 758, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 687 + 761, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 688 + 764, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 765, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 689 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 690 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 691 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -541, 0, 0, 0, 0, 0, 0, 0, 0, 0, -543, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -541, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -541, 0, 0, 0, 0, 0, 0, 0, 513, 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 692 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -159, 0, 0, 0, 0, 0, 0, 0, 0, 0, -161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 514, -159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -159, 0, 0, 0, 0, 0, 0, 0, -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, + // State 693 + 0, -380, -380, 0, -380, 0, 0, 0, -380, 0, 0, 0, -380, 0, -380, -380, 0, 0, 0, 0, -380, -380, 0, 0, -382, 0, 0, -380, -380, 0, -380, 0, -380, -380, -380, -380, 0, -380, 0, 0, 0, 0, 0, 0, -380, 0, -380, -380, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -380, 0, -380, -380, 0, 0, 0, -380, -380, 0, 0, 0, 0, 0, 0, 0, 0, 0, -380, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 694 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 215, 0, 0, 0, 0, 0, 0, 0, 0, 0, -907, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 695 + 0, 0, 0, 0, 0, 0, 0, 786, 0, 0, 0, 0, 0, 0, 217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 696 + 0, 0, 0, 0, 0, 0, 0, -531, 0, 0, 0, 0, 0, 0, -531, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 218, 0, -499, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -499, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 697 + 0, 0, 0, 0, 0, 0, 0, 789, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 698 + 0, -198, -198, 0, -198, 0, -198, 0, -198, -198, 0, 0, -198, 0, -198, -198, 0, 0, -198, 0, -198, -198, 0, 0, -225, 0, 0, -198, -198, 0, -198, 0, -198, -198, -198, -198, 0, -198, 0, 0, 0, 0, -198, 0, -198, 0, -198, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, 0, -198, -198, 0, 0, 0, -198, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 699 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 791, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 700 + 0, -186, -186, 0, -186, 0, -186, 0, -186, -186, 0, 0, -186, 0, -186, -186, 0, 0, -186, 0, -186, -186, 0, 0, -215, 0, 0, -186, -186, 0, -186, 0, -186, -186, -186, -186, 0, -186, 0, 0, 0, 0, -186, 0, -186, 0, -186, -186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -186, 0, -186, -186, 0, 0, 0, -186, -186, 0, 0, 0, 0, 0, 0, 0, 0, 0, -186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 701 + 0, -246, -246, 0, -246, 0, 24, 0, -246, -246, 0, 0, -246, 0, -246, -246, 0, 0, 25, 0, -246, -246, 0, 0, -248, 0, 0, -246, -246, 0, -246, 0, -246, -246, -246, -246, 0, -246, 0, 0, 0, 0, 26, 0, -246, 0, -246, -246, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -246, 0, -246, -246, 0, 0, 0, -246, -246, 0, 0, 0, 0, 0, 0, 0, 0, 0, -246, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 702 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -503, 0, 0, 0, 0, 0, 0, 0, 0, 0, -505, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -503, -503, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -503, 0, 0, 0, 0, 0, 0, 0, -503, 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 703 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 794, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 704 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 796, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 705 + 0, -203, -203, 0, -203, 0, -203, 0, -203, -203, 0, 0, -203, 0, -203, -203, 0, 0, -203, 0, -203, -203, 0, 0, -230, 0, 0, -203, -203, 0, -203, 0, -203, -203, -203, -203, 0, -203, 0, 0, 0, 0, -203, 0, -203, 0, -203, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 0, -203, -203, 0, 0, 0, -203, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 706 + 0, 0, 0, 0, 0, 0, -117, -117, -117, -117, 0, 0, -117, 0, 0, -117, 0, 0, 0, -117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -117, -117, -117, -117, 0, 0, 0, 0, 0, 0, 0, -117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -117, 0, 0, -117, 0, 0, 0, 0, 0, 0, 0, 0, 0, -117, 0, 0, 0, -117, 0, 0, 0, 0, 0, -117, -117, -117, 0, -117, -117, + // State 707 + 0, 0, 0, 0, 0, 0, 0, -412, 0, 0, 0, 0, 0, 0, -412, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 708 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -867, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -867, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 709 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -812, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -812, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 710 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -868, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -868, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 711 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -813, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -813, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 712 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -777, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -777, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 713 + -832, 0, 0, -832, 0, -832, 0, -832, 0, 0, -832, -832, 0, -832, -832, 0, -832, 0, 0, 0, 0, 0, -832, -832, -832, 0, -832, 0, 0, -832, 0, -832, 0, 0, 0, 0, -832, 0, -832, 0, 0, 0, 0, -832, 0, -832, 0, -832, 0, -832, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -832, -832, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -832, -832, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 714 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 0, 0, 0, 0, 0, 0, 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 715 + 0, 0, 0, 0, 0, 0, 0, -67, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 716 + -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, 0, -193, 0, -193, -193, -193, -193, -193, 0, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, 0, 0, 0, -193, -193, -193, -193, -193, -193, 0, -193, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0, 0, -193, -193, 0, -193, 0, -193, -193, 0, 0, 0, -193, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, -193, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 717 + 0, 0, 0, 0, 0, 0, 0, 798, 0, 0, 0, 0, 0, 0, 222, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 718 + -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, 0, -194, 0, -194, -194, -194, -194, -194, 0, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, 0, 0, 0, -194, -194, -194, -194, -194, -194, 0, -194, 0, 0, 0, 0, 0, 0, 0, 0, -194, 0, 0, -194, -194, 0, -194, 0, -194, -194, 0, 0, 0, -194, -194, 0, 0, 0, 0, 0, 0, 0, 0, 0, -194, -194, -194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 719 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -687, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 720 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, -681, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 721 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, 0, 0, 0, 0, 0, 0, 0, 0, 0, -686, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 722 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 803, 0, 0, 0, 0, 0, 0, 0, 0, 0, -704, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 723 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -25, 0, 0, 0, 0, 0, 0, 0, 0, 0, -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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 724 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 805, 0, 0, 0, 0, 0, 0, 0, 0, 0, -701, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 725 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -694, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 726 + -747, 0, 0, 0, 0, 0, -747, 0, -747, 0, 0, 0, -747, 0, 0, -747, 0, 0, 0, -747, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -747, 0, -747, -747, -747, -747, 0, 0, 0, 0, 0, -747, -747, -747, -747, 0, -747, -747, -747, -747, 0, 0, 0, 0, -747, -747, -747, -747, -747, 0, 0, -747, -747, -747, -747, 0, -747, -747, -747, -747, -747, -747, -747, -747, -747, 0, 0, 0, -747, 0, 0, 0, 0, 0, -747, -747, -747, -747, -747, -747, + // State 727 + 0, 0, 0, 0, 0, 0, 228, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 728 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 0, 0, 0, 0, 0, 0, 231, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 729 + -378, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -378, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 730 + -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, -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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 731 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 232, 0, 0, 0, 0, 0, 0, 233, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 732 + 0, 0, 0, 0, 0, 0, 0, 815, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 733 + -269, 0, 0, 0, 0, 0, -269, 0, -269, 0, 0, 0, -269, 0, 0, -269, 0, 0, 0, -269, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -269, 0, -269, -269, -269, -269, 0, 0, 0, 0, 0, -269, -269, -269, -269, 0, -269, -269, -269, -269, 0, 0, 0, 0, -269, -269, -269, -269, -269, 0, 0, -269, -269, -269, -269, 0, -269, -269, -269, -269, -269, -269, -269, -269, -269, 0, 0, 0, -269, -269, 0, 0, 0, 0, -269, -269, -269, -269, -269, -269, + // State 734 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -875, 0, 0, 0, 0, 0, 0, 0, 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -875, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 735 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 816, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 736 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -537, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -537, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 737 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 236, 0, 0, 0, 0, 0, 0, 237, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 738 + 0, 0, 0, 0, 0, 0, 0, -883, 0, 0, 0, 0, 0, 0, -883, 0, 0, 0, 0, 0, 0, 0, 0, 0, 238, 0, 0, 0, 0, 0, 0, -883, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 739 + 0, 0, 0, 0, 0, 0, 0, -632, 0, 0, 0, 0, 0, 0, 821, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 740 + 0, 0, 0, 0, 0, 0, 0, -606, 0, 0, 0, 0, 0, 0, 239, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 741 + 0, 0, 0, 0, 0, 0, 0, -525, 0, 0, 0, 0, 0, 0, -525, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 742 + 0, 0, 0, 0, 0, 0, 0, 822, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 743 + 0, 0, 0, 0, 0, 0, 0, -545, 0, 0, 0, 0, 0, 0, -545, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 744 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -730, 0, 0, 0, 0, 0, 0, -730, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 745 + -510, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -510, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -510, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -510, 0, 0, 0, 0, 0, 0, 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 746 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 243, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 747 + -518, 0, 0, 0, 0, 0, 0, -518, 0, 0, 0, 0, 0, 0, -518, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -518, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 244, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 748 + -446, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -446, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 749 + -432, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 245, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -432, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 750 + -435, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -435, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 751 + -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, 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 752 + -512, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -512, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -512, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 753 + -513, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -513, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -513, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 754 + -516, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -516, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -516, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 247, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 755 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -869, 0, 0, 0, 0, 0, 0, 0, 0, 0, -869, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 756 + 831, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 757 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 248, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 758 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -870, 0, 0, 0, 0, 0, 0, 0, 0, 0, -870, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 759 + 832, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 760 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 249, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 761 + -752, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -752, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 762 + 833, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 834, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 763 + -825, 0, 0, 0, 0, 0, -825, 0, -825, 0, 0, 0, -825, 0, 0, -825, 0, 0, 0, -825, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -825, 0, -825, -825, -825, -825, 0, 0, 0, 0, 0, -825, -825, -825, -825, -825, -825, -825, -825, -825, -825, -825, -825, -825, -825, -825, -825, -825, -825, 0, 0, -825, -825, -825, -825, 0, -825, -825, -825, -825, -825, -825, -825, -825, -825, 0, 0, 0, -825, -825, 0, 0, 0, 0, -825, -825, -825, -825, -825, -825, + // State 764 + 835, 0, 0, 0, 0, 0, -132, 0, -132, 0, 0, 0, -132, 0, 0, -132, 0, 0, 0, -132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -132, -132, -132, -132, 0, 0, 0, 0, 0, -132, 0, -132, -132, 0, 0, -132, 0, -132, 0, 0, 0, 0, 0, -132, -132, 0, -132, 0, 0, -132, 0, -132, -132, 0, -132, -132, -132, 0, -132, 0, 0, -132, -132, 0, 0, 0, -132, 0, 0, 0, 0, 0, -132, -132, -132, -132, -132, -132, + // State 765 + -359, 0, 0, 0, 0, 0, -359, 0, -359, 0, 0, 0, -359, 0, 0, -359, 0, 0, 0, -359, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -359, 0, -359, -359, -359, -359, 0, 0, 0, 0, 0, -359, -359, -359, -359, 0, -359, -359, -359, -359, 0, -359, -359, -359, -359, -359, -359, -359, -359, 0, 0, -359, -359, -359, -359, 0, -359, -359, -359, -359, -359, -359, -359, -359, -359, 0, 0, 0, -359, -359, 0, 0, 0, 0, -359, -359, -359, -359, -359, -359, + // State 766 + -363, 0, 0, 0, 0, 0, -363, 0, -363, 0, 0, 0, -363, 0, 0, -363, 0, 0, 0, -363, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -363, 0, -363, -363, -363, -363, 0, 0, 0, 0, 0, -363, -363, -363, -363, 0, -363, -363, -363, -363, 0, -363, -363, -363, -363, -363, -363, -363, -363, 0, 0, -363, -363, -363, -363, 0, -363, -363, -363, -363, -363, -363, -363, -363, -363, 0, 0, 0, -363, -363, 0, 0, 0, 0, -363, -363, -363, -363, -363, -363, + // State 767 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 253, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 768 + -873, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -873, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 769 + -890, 0, 0, 0, 0, 0, -890, 0, -890, 0, 0, 0, -890, 0, 0, -890, 0, 0, 0, -890, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -890, 0, -890, -890, -890, -890, 0, 0, 0, 0, 0, -890, -890, -890, -890, 0, -890, -890, -890, -890, 0, 847, 0, 0, -890, -890, -890, -890, -890, 0, 0, -890, -890, -890, -890, 0, -890, -890, -890, -890, -890, -890, -890, -890, -890, 0, 0, 0, -890, -890, 0, 0, 0, 0, -890, -890, -890, -890, -890, -890, + // State 770 + 0, 0, 0, 0, 0, 0, 0, 848, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 771 + 0, -241, -241, 0, -241, 0, -241, 0, -241, -241, 0, 0, -241, 0, -241, -241, 0, 0, -241, 0, -241, -241, 0, 0, -245, 0, 0, -241, -241, 0, -241, 0, -241, -241, -241, -241, 0, -241, 0, 0, 0, 0, -241, 0, -241, 0, -241, -241, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -241, 0, -241, -241, 0, 0, 0, -241, -241, 0, 0, 0, 0, 0, 0, 0, 0, 0, -241, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 772 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 849, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 773 + 0, -740, -740, 0, -740, 0, 0, 0, -740, 0, 0, 0, -740, 0, -740, -740, 0, 0, 0, 0, -740, -740, 0, 0, -742, 0, 0, -740, -740, 0, -740, 0, -740, -740, -740, -740, 0, -740, 0, 0, 0, 0, 0, 0, -740, 0, -740, -740, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -740, 0, -740, -740, 0, 0, 0, -740, -740, 0, 0, 0, 0, 0, 0, 0, 0, 0, -740, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 774 + 0, -365, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -365, 0, 0, 0, 0, 0, 0, 0, 0, 0, -367, 0, 0, -365, 0, 0, -365, 0, -365, -365, -365, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, -365, -365, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -365, 0, -365, -365, 0, 0, 0, -365, -365, 0, 0, 0, 0, 0, 0, 0, 0, 0, -365, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 775 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 776 + 0, -828, -828, 0, -828, 0, 0, 0, -828, 0, 0, 0, -828, 0, -828, -828, 0, 0, 0, 0, -828, -828, 0, 0, -830, 0, 0, -828, -828, 0, -828, 0, -828, -828, -828, -828, 0, -828, 0, 0, 0, 0, 0, 0, -828, 0, -828, -828, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -828, 0, -828, -828, 0, 0, 0, -828, -828, 0, 0, 0, 0, 0, 0, 0, 0, 0, -828, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 777 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -892, 0, 0, 0, 0, 0, 0, 0, 0, 0, -895, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 778 + 0, 0, 0, 0, 0, 0, 0, -891, 0, 0, 0, 0, 0, 0, -891, 0, 0, 0, 0, 0, 0, 0, 0, 0, -891, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 257, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 779 + 0, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 780 + -910, 0, 0, 0, 0, 0, -910, 0, -910, 0, 0, 0, -910, 0, 0, -910, 0, 0, 0, -910, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -910, 0, -910, -910, -910, -910, 0, 0, 0, 0, 0, -910, -910, -910, -910, 0, -910, -910, -910, -910, 0, 0, 0, 0, -910, -910, -910, -910, -910, 0, 0, -910, -910, -910, -910, 0, -910, -910, -910, -910, -910, -910, -910, -910, -910, 0, 0, 0, -910, -910, 0, 0, 0, 0, -910, -910, -910, -910, -910, -910, + // State 781 + 0, -911, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, -911, 0, 0, 0, 0, 0, 0, 0, 0, 0, -913, 0, 0, -911, 0, 0, -911, 0, -911, -911, -911, 0, 0, 0, 0, 0, 0, 0, 0, 0, -911, 0, -911, -911, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -911, 0, -911, -911, 0, 0, 0, -911, -911, 0, 0, 0, 0, 0, 0, 0, 0, 0, -911, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 782 + 0, 0, 0, 0, 0, 0, 0, 851, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 783 + 0, 0, 0, 0, 0, 0, 0, 852, 0, 0, 0, 0, 0, 0, 258, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 784 + 0, -195, -195, 0, -195, 0, -195, 0, -195, -195, 0, 0, -195, 0, -195, -195, 0, 0, -195, 0, -195, -195, 0, 0, -222, 0, 0, -195, -195, 0, -195, 0, -195, -195, -195, -195, 0, -195, 0, 0, 0, 0, -195, 0, -195, 0, -195, -195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -195, 0, -195, -195, 0, 0, 0, -195, -195, 0, 0, 0, 0, 0, 0, 0, 0, 0, -195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 785 + 0, -189, -189, 0, -189, 0, -189, 0, -189, -189, 0, 0, -189, 0, -189, -189, 0, 0, -189, 0, -189, -189, 0, 0, -897, 0, 0, -189, -189, 0, -189, 0, -189, -189, -189, -189, 0, -189, 0, 0, 0, 0, -189, 0, -189, 0, -189, -189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0, -189, -189, 0, 0, 0, -189, -189, 0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 786 + 0, 0, 0, 0, 0, 0, 0, 857, 0, 0, 0, 0, 0, 0, 261, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 787 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -903, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 788 + 0, -199, -199, 0, -199, 0, -199, 0, -199, -199, 0, 0, -199, 0, -199, -199, 0, 0, -199, 0, -199, -199, 0, 0, -226, 0, 0, -199, -199, 0, -199, 0, -199, -199, -199, -199, 0, -199, 0, 0, 0, 0, -199, 0, -199, 0, -199, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -199, 0, -199, -199, 0, 0, 0, -199, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 789 + 0, 0, 0, 0, 0, 0, 0, 859, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 790 + 0, -185, -185, 0, -185, 0, -185, 0, -185, -185, 0, 0, -185, 0, -185, -185, 0, 0, -185, 0, -185, -185, 0, 0, -214, 0, 0, -185, -185, 0, -185, 0, -185, -185, -185, -185, 0, -185, 0, 0, 0, 0, -185, 0, -185, 0, -185, -185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -185, 0, -185, -185, 0, 0, 0, -185, -185, 0, 0, 0, 0, 0, 0, 0, 0, 0, -185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 791 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 860, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 792 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 861, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 793 + 0, -202, -202, 0, -202, 0, -202, 0, -202, -202, 0, 0, -202, 0, -202, -202, 0, 0, -202, 0, -202, -202, 0, 0, -229, 0, 0, -202, -202, 0, -202, 0, -202, -202, -202, -202, 0, -202, 0, 0, 0, 0, -202, 0, -202, 0, -202, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, -202, -202, 0, 0, 0, -202, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 794 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 862, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 795 + 0, -205, -205, 0, -205, 0, -205, 0, -205, -205, 0, 0, -205, 0, -205, -205, 0, 0, -205, 0, -205, -205, 0, 0, -232, 0, 0, -205, -205, 0, -205, 0, -205, -205, -205, -205, 0, -205, 0, 0, 0, 0, -205, 0, -205, 0, -205, -205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -205, 0, -205, -205, 0, 0, 0, -205, -205, 0, 0, 0, 0, 0, 0, 0, 0, 0, -205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 796 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -811, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -811, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 797 + -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, 0, -196, 0, -196, -196, -196, -196, -196, 0, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, 0, 0, 0, -196, -196, -196, -196, -196, -196, 0, -196, 0, 0, 0, 0, 0, 0, 0, 0, -196, 0, 0, -196, -196, 0, -196, 0, -196, -196, 0, 0, 0, -196, -196, 0, 0, 0, 0, 0, 0, 0, 0, 0, -196, -196, -196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 798 + -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, 0, -190, 0, -190, -190, -190, -190, -190, 0, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, 0, 0, 0, -190, -190, -190, -190, -190, -190, 0, -190, 0, 0, 0, 0, 0, 0, 0, 0, -190, 0, 0, -190, -190, 0, -190, 0, -190, -190, 0, 0, 0, -190, -190, 0, 0, 0, 0, 0, 0, 0, 0, 0, -190, -190, -190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 799 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 265, 0, 0, 0, 0, 0, 0, 0, 0, 0, -678, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 800 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 867, 0, 0, 0, 0, 0, 0, 0, 0, 0, -663, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 801 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 869, 0, 0, 0, 0, 0, 0, 0, 0, 0, -691, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 802 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -696, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 803 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 871, 0, 0, 0, 0, 0, 0, 0, 0, 0, -703, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 804 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -693, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 805 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 269, 0, 0, 0, 0, 0, 0, 270, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 806 + 0, 0, 0, 0, 0, 0, 0, 875, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 807 + -271, 0, 0, 0, 0, 0, -271, 0, -271, 0, 0, 0, -271, 0, 0, -271, 0, 0, 0, -271, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -271, 0, -271, -271, -271, -271, 0, 0, 0, 0, 0, -271, -271, -271, -271, 0, -271, -271, -271, -271, 0, 0, 0, 0, -271, -271, -271, -271, -271, 0, 0, -271, -271, -271, -271, 0, -271, -271, -271, -271, -271, -271, -271, -271, -271, 0, 0, 0, -271, -271, 0, 0, 0, 0, -271, -271, -271, -271, -271, -271, + // State 808 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 271, 0, 0, 0, 0, 0, 0, 272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 809 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 273, 0, 0, 0, 0, 0, 0, 274, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 810 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 275, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 811 + -909, 0, 0, 0, 0, 0, -909, 0, -909, 0, 0, 0, -909, 0, 0, -909, 0, 0, 0, -909, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -909, 0, -909, -909, -909, -909, 0, 0, 0, 0, 0, -909, -909, -909, -909, 0, -909, -909, -909, -909, 0, 0, 0, 0, -909, -909, -909, -909, -909, 0, 0, -909, -909, -909, -909, 0, -909, -909, -909, -909, -909, -909, -909, -909, -909, 0, 0, 0, -909, -909, 0, 0, 0, 0, -909, -909, -909, -909, -909, -909, + // State 812 + 0, 0, 0, 0, 0, 0, 0, 880, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 813 + -268, 0, 0, 0, 0, 0, -268, 0, -268, 0, 0, 0, -268, 0, 0, -268, 0, 0, 0, -268, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -268, 0, -268, -268, -268, -268, 0, 0, 0, 0, 0, -268, -268, -268, -268, 0, -268, -268, -268, -268, 0, 0, 0, 0, -268, -268, -268, -268, -268, 0, 0, -268, -268, -268, -268, 0, -268, -268, -268, -268, -268, -268, -268, -268, -268, 0, 0, 0, -268, -268, 0, 0, 0, 0, -268, -268, -268, -268, -268, -268, + // State 814 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 276, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 815 + 0, 0, 0, 0, 0, 0, -879, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -879, 0, 0, 0, 0, 0, 0, -879, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 816 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -876, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -876, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 817 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -877, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -877, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 818 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 277, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 819 + -407, 0, 0, 0, 0, 0, -407, 0, -407, 0, 0, 0, -407, 0, 0, -407, 0, 0, 0, -407, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -407, 0, -407, -407, -407, -407, 0, 0, 0, 0, 0, -407, -407, -407, -407, 0, -407, -407, -407, -407, 0, 0, 0, 0, -407, -407, -407, -407, -407, 0, 0, -407, -407, -407, -407, 0, -407, -407, -407, -407, -407, -407, -407, -407, -407, 0, 0, 0, -407, -407, 0, 0, 0, 0, -407, -407, -407, -407, -407, -407, + // State 820 + 0, 0, 0, 0, 0, 0, 0, -631, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 821 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -729, 0, 0, 0, 0, 0, 0, -729, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 822 + 0, 0, 0, 0, 0, 0, 0, -630, 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 823 + 0, 0, 0, 0, 0, 0, 0, -794, 0, 0, 0, 0, 0, 0, -794, 0, 0, 0, 0, 0, 0, 0, 0, 0, 281, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 824 + 0, 0, 0, 0, 0, 0, 0, -447, 0, 0, 0, 0, 0, 0, -447, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 825 + 0, 0, 0, 0, 0, 0, 0, -353, 0, 0, 0, 0, 0, 0, -353, 0, 0, 0, 0, 0, 0, 0, 0, 0, 283, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 826 + 0, 0, 0, 0, 0, 0, 0, 896, 0, 0, 0, 0, 0, 0, 284, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 827 + -78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, 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 828 + -427, 0, 0, 0, 0, 0, -427, 0, -427, 0, 0, 0, -427, 0, 0, -427, 0, 0, 0, -427, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -427, 0, -427, -427, -427, -427, 0, 0, 0, 0, 0, -427, -427, -427, -427, 0, -427, -427, -427, -427, 285, 897, 0, 0, -427, -427, -427, -427, -427, 0, 0, -427, -427, -427, -427, 0, -427, -427, -427, -427, -427, -427, -427, -427, -427, 0, 0, 0, -427, -427, 0, 0, 0, 0, -427, -427, -427, -427, -427, -427, + // State 829 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 286, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 830 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 287, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 831 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 290, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 832 + -826, 0, 0, 0, 0, 0, -826, 0, -826, 0, 0, 0, -826, 0, 0, -826, 0, 0, 0, -826, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -826, 0, -826, -826, -826, -826, 0, 0, 0, 0, 0, -826, -826, -826, -826, -826, -826, -826, -826, -826, -826, -826, -826, -826, -826, -826, -826, -826, -826, 0, 0, -826, -826, -826, -826, 0, -826, -826, -826, -826, -826, -826, -826, -826, -826, 0, 0, 0, -826, -826, 0, 0, 0, 0, -826, -826, -826, -826, -826, -826, + // State 833 + 901, 0, 0, 0, 0, 0, -133, 0, -133, 0, 0, 0, -133, 0, 0, -133, 0, 0, 0, -133, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -133, -133, -133, -133, 0, 0, 0, 0, 0, -133, 0, -133, -133, 0, 0, -133, 0, -133, 0, 0, 0, 0, 0, -133, -133, 0, -133, 0, 0, -133, 0, -133, -133, 0, -133, -133, -133, 0, -133, 0, 0, -133, -133, 0, 0, 0, -133, 0, 0, 0, 0, 0, -133, -133, -133, -133, -133, -133, + // State 834 + -823, 0, 0, 0, 0, 0, -823, 0, -823, 0, 0, 0, -823, 0, 0, -823, 0, 0, 0, -823, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -823, 0, -823, -823, -823, -823, 0, 0, 0, 0, 0, -823, -823, -823, -823, -823, -823, -823, -823, -823, -823, -823, -823, -823, -823, -823, -823, -823, -823, 0, 0, -823, -823, -823, -823, 0, -823, -823, -823, -823, -823, -823, -823, -823, -823, 0, 0, 0, -823, -823, 0, 0, 0, 0, -823, -823, -823, -823, -823, -823, + // State 835 + -360, 0, 0, 0, 0, 0, -360, 0, -360, 0, 0, 0, -360, 0, 0, -360, 0, 0, 0, -360, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -360, 0, -360, -360, -360, -360, 0, 0, 0, 0, 0, -360, -360, -360, -360, 0, -360, -360, -360, -360, 0, -360, -360, -360, -360, -360, -360, -360, -360, 0, 0, -360, -360, -360, -360, 0, -360, -360, -360, -360, -360, -360, -360, -360, -360, 0, 0, 0, -360, -360, 0, 0, 0, 0, -360, -360, -360, -360, -360, -360, + // State 836 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 292, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 837 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 293, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 838 + -364, 0, 0, 0, 0, 0, -364, 0, -364, 0, 0, 0, -364, 0, 0, -364, 0, 0, 0, -364, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -364, 0, -364, -364, -364, -364, 0, 0, 0, 0, 0, -364, -364, -364, -364, 0, -364, -364, -364, -364, 0, -364, -364, -364, -364, -364, -364, -364, -364, 0, 0, -364, -364, -364, -364, 0, -364, -364, -364, -364, -364, -364, -364, -364, -364, 0, 0, 0, -364, -364, 0, 0, 0, 0, -364, -364, -364, -364, -364, -364, + // State 839 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 294, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 840 + 0, 0, 0, 0, 0, 0, 0, 0, 251, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 841 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 295, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 842 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 296, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 297, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 843 + 0, 0, 0, 0, 0, 0, -804, 0, -804, 0, 0, 0, -804, 0, 0, -804, 0, 0, 0, -804, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -804, 0, -804, -804, -804, -804, 0, 0, 0, 0, 0, -804, -804, -804, -804, 0, -804, -804, -804, -804, 0, 0, 0, 0, -804, -804, -804, -804, -804, 0, 0, -804, -804, -804, -804, 0, -804, -804, -804, -804, -804, -804, -804, -804, -804, 0, 0, 0, -804, -804, 0, 0, 0, 0, -804, -804, -804, -804, -804, -804, + // State 844 + 906, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 907, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 845 + -872, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -872, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 846 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 299, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 847 + 0, -239, -239, 0, -239, 0, -239, 0, -239, -239, 0, 0, -239, 0, -239, -239, 0, 0, -239, 0, -239, -239, 0, 0, -243, 0, 0, -239, -239, 0, -239, 0, -239, -239, -239, -239, 0, -239, 0, 0, 0, 0, -239, 0, -239, 0, -239, -239, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -239, 0, -239, -239, 0, 0, 0, -239, -239, 0, 0, 0, 0, 0, 0, 0, 0, 0, -239, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 848 + 0, -240, -240, 0, -240, 0, -240, 0, -240, -240, 0, 0, -240, 0, -240, -240, 0, 0, -240, 0, -240, -240, 0, 0, -244, 0, 0, -240, -240, 0, -240, 0, -240, -240, -240, -240, 0, -240, 0, 0, 0, 0, -240, 0, -240, 0, -240, -240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -240, 0, -240, -240, 0, 0, 0, -240, -240, 0, 0, 0, 0, 0, 0, 0, 0, 0, -240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 849 + 0, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 850 + 0, -200, -200, 0, -200, 0, -200, 0, -200, -200, 0, 0, -200, 0, -200, -200, 0, 0, -200, 0, -200, -200, 0, 0, -227, 0, 0, -200, -200, 0, -200, 0, -200, -200, -200, -200, 0, -200, 0, 0, 0, 0, -200, 0, -200, 0, -200, -200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -200, 0, -200, -200, 0, 0, 0, -200, -200, 0, 0, 0, 0, 0, 0, 0, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 851 + 0, -197, -197, 0, -197, 0, -197, 0, -197, -197, 0, 0, -197, 0, -197, -197, 0, 0, -197, 0, -197, -197, 0, 0, -224, 0, 0, -197, -197, 0, -197, 0, -197, -197, -197, -197, 0, -197, 0, 0, 0, 0, -197, 0, -197, 0, -197, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, 0, -197, -197, 0, 0, 0, -197, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 852 + 0, -191, -191, 0, -191, 0, -191, 0, -191, -191, 0, 0, -191, 0, -191, -191, 0, 0, -191, 0, -191, -191, 0, 0, -218, 0, 0, -191, -191, 0, -191, 0, -191, -191, -191, -191, 0, -191, 0, 0, 0, 0, -191, 0, -191, 0, -191, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0, -191, -191, 0, 0, 0, -191, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 853 + 0, 0, 0, 0, 0, 0, 0, -532, 0, 0, 0, 0, 0, 0, -532, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 854 + 0, -188, -188, 0, -188, 0, -188, 0, -188, -188, 0, 0, -188, 0, -188, -188, 0, 0, -188, 0, -188, -188, 0, 0, -896, 0, 0, -188, -188, 0, -188, 0, -188, -188, -188, -188, 0, -188, 0, 0, 0, 0, -188, 0, -188, 0, -188, -188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -188, 0, -188, -188, 0, 0, 0, -188, -188, 0, 0, 0, 0, 0, 0, 0, 0, 0, -188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 855 + 0, 0, 0, 0, 0, 0, 0, -893, 0, 0, 0, 0, 0, 0, -893, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 856 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -905, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 857 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -899, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 858 + 0, -201, -201, 0, -201, 0, -201, 0, -201, -201, 0, 0, -201, 0, -201, -201, 0, 0, -201, 0, -201, -201, 0, 0, -228, 0, 0, -201, -201, 0, -201, 0, -201, -201, -201, -201, 0, -201, 0, 0, 0, 0, -201, 0, -201, 0, -201, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, -201, -201, 0, 0, 0, -201, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 859 + 0, -187, -187, 0, -187, 0, -187, 0, -187, -187, 0, 0, -187, 0, -187, -187, 0, 0, -187, 0, -187, -187, 0, 0, -216, 0, 0, -187, -187, 0, -187, 0, -187, -187, -187, -187, 0, -187, 0, 0, 0, 0, -187, 0, -187, 0, -187, -187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -187, 0, -187, -187, 0, 0, 0, -187, -187, 0, 0, 0, 0, 0, 0, 0, 0, 0, -187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 860 + 0, -204, -204, 0, -204, 0, -204, 0, -204, -204, 0, 0, -204, 0, -204, -204, 0, 0, -204, 0, -204, -204, 0, 0, -231, 0, 0, -204, -204, 0, -204, 0, -204, -204, -204, -204, 0, -204, 0, 0, 0, 0, -204, 0, -204, 0, -204, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -204, 0, -204, -204, 0, 0, 0, -204, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 861 + 0, -206, -206, 0, -206, 0, -206, 0, -206, -206, 0, 0, -206, 0, -206, -206, 0, 0, -206, 0, -206, -206, 0, 0, -233, 0, 0, -206, -206, 0, -206, 0, -206, -206, -206, -206, 0, -206, 0, 0, 0, 0, -206, 0, -206, 0, -206, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -206, 0, -206, -206, 0, 0, 0, -206, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 862 + 0, 0, 0, 0, 0, 0, 0, -329, 0, 0, 0, 0, 0, 0, -329, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -329, 0, 0, 0, 0, 0, -329, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -329, 0, 0, -329, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -329, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 863 + -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, 0, -192, 0, -192, -192, -192, -192, -192, 0, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, 0, 0, 0, -192, -192, -192, -192, -192, -192, 0, -192, 0, 0, 0, 0, 0, 0, 0, 0, -192, 0, 0, -192, -192, 0, -192, 0, -192, -192, 0, 0, 0, -192, -192, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, -192, -192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 864 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 922, 0, 0, 0, 0, 0, 0, 0, 0, 0, -669, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 865 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 924, 0, 0, 0, 0, 0, 0, 0, 0, 0, -660, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 866 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -636, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 867 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 925, 0, 0, 0, 0, 0, 0, 0, 0, 0, -692, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 868 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -688, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 869 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 305, 0, 0, 0, 0, 0, 0, 0, 0, 0, -682, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 870 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -695, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 871 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 307, 0, 0, 0, 0, 0, 0, 308, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 872 + 0, 0, 0, 0, 0, 0, 0, 931, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 873 + -270, 0, 0, 0, 0, 0, -270, 0, -270, 0, 0, 0, -270, 0, 0, -270, 0, 0, 0, -270, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -270, 0, -270, -270, -270, -270, 0, 0, 0, 0, 0, -270, -270, -270, -270, 0, -270, -270, -270, -270, 0, 0, 0, 0, -270, -270, -270, -270, -270, 0, 0, -270, -270, -270, -270, 0, -270, -270, -270, -270, -270, -270, -270, -270, -270, 0, 0, 0, -270, -270, 0, 0, 0, 0, -270, -270, -270, -270, -270, -270, + // State 874 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 875 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 310, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 876 + -409, 0, 0, 0, 0, 0, -409, 0, -409, 0, 0, 0, -409, 0, 0, -409, 0, 0, 0, -409, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -409, 0, -409, -409, -409, -409, 0, 0, 0, 0, 0, -409, -409, -409, -409, 0, -409, -409, -409, -409, 0, 0, 0, 0, -409, -409, -409, -409, -409, 0, 0, -409, -409, -409, -409, 0, -409, -409, -409, -409, -409, -409, -409, -409, -409, 0, 0, 0, -409, -409, 0, 0, 0, 0, -409, -409, -409, -409, -409, -409, + // State 877 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 311, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 878 + -399, 0, 0, 0, 0, 0, -399, 0, -399, 0, 0, 0, -399, 0, 0, -399, 0, 0, 0, -399, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -399, 0, -399, -399, -399, -399, 0, 0, 0, 0, 0, -399, -399, -399, -399, 0, -399, -399, -399, -399, 0, 0, 0, 0, -399, -399, -399, -399, -399, 0, 0, -399, -399, -399, -399, 0, -399, -399, -399, -399, -399, -399, -399, -399, -399, 0, 0, 0, -399, -399, 0, 0, 0, 0, -399, -399, -399, -399, -399, -399, + // State 879 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 880 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -874, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -874, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 881 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -538, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -538, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 882 + 0, 0, 0, 0, 0, 0, -878, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -878, 0, 0, 0, 0, 0, 0, -878, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 883 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 313, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 884 + -406, 0, 0, 0, 0, 0, -406, 0, -406, 0, 0, 0, -406, 0, 0, -406, 0, 0, 0, -406, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -406, 0, -406, -406, -406, -406, 0, 0, 0, 0, 0, -406, -406, -406, -406, 0, -406, -406, -406, -406, 0, 0, 0, 0, -406, -406, -406, -406, -406, 0, 0, -406, -406, -406, -406, 0, -406, -406, -406, -406, -406, -406, -406, -406, -406, 0, 0, 0, -406, -406, 0, 0, 0, 0, -406, -406, -406, -406, -406, -406, + // State 885 + 0, 0, 0, 0, 0, 0, 0, -882, 0, 0, 0, 0, 0, 0, -882, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -882, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 886 + 0, 0, 0, 0, 0, 0, 0, -612, 0, 0, 0, 0, 0, 0, 939, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 887 + 0, 0, 0, 0, 0, 0, 0, -526, 0, 0, 0, 0, 0, 0, -526, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 888 + 0, 0, 0, 0, 0, 0, 0, -546, 0, 0, 0, 0, 0, 0, -546, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 889 + 0, 0, 0, 0, 0, 0, 0, -629, 0, 0, 0, 0, 0, 0, 317, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 890 + 0, 0, 0, 0, 0, 0, 0, -624, 0, 0, 0, 0, 0, 0, 946, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 891 + 0, 0, 0, 0, 0, 0, 0, -19, 0, 0, 0, 0, 0, 0, -19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 892 + -393, 0, 0, 0, 0, 0, -393, 0, -393, 0, 0, 0, -393, 0, 0, -393, 0, 0, 0, -393, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -393, 0, -393, -393, -393, -393, 0, 0, 0, 0, 0, -393, -393, -393, -393, 0, -393, -393, -393, -393, 0, 948, 0, 0, -393, -393, -393, -393, -393, 0, 0, -393, -393, -393, -393, 0, -393, -393, -393, -393, -393, -393, -393, -393, -393, 0, 0, 0, -393, -393, 0, 0, 0, 0, -393, -393, -393, -393, -393, -393, + // State 893 + -517, 0, 0, 0, 0, 0, 0, -517, 0, 0, 0, 0, 0, 0, -517, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -517, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 894 + -520, 0, 0, 0, 0, 0, 0, -520, 0, 0, 0, 0, 0, 0, -520, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -520, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 895 + -434, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -434, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 896 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 897 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 320, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 898 + -515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 899 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -481, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -481, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 900 + -824, 0, 0, 0, 0, 0, -824, 0, -824, 0, 0, 0, -824, 0, 0, -824, 0, 0, 0, -824, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -824, 0, -824, -824, -824, -824, 0, 0, 0, 0, 0, -824, -824, -824, -824, -824, -824, -824, -824, -824, -824, -824, -824, -824, -824, -824, -824, -824, -824, 0, 0, -824, -824, -824, -824, 0, -824, -824, -824, -824, -824, -824, -824, -824, -824, 0, 0, 0, -824, -824, 0, 0, 0, 0, -824, -824, -824, -824, -824, -824, + // State 901 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 330, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 331, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 902 + -357, 0, 0, 0, 0, 0, -357, 0, -357, 0, 0, 0, -357, 0, 0, -357, 0, 0, 0, -357, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -357, 0, -357, -357, -357, -357, 0, 0, 0, 0, 0, -357, -357, -357, -357, 0, -357, -357, -357, -357, 0, -357, -357, -357, -357, -357, -357, -357, -357, 0, 0, -357, -357, -357, -357, 0, -357, -357, -357, -357, -357, -357, -357, -357, -357, 0, 0, 0, -357, -357, 0, 0, 0, 0, -357, -357, -357, -357, -357, -357, + // State 903 + -862, 0, 0, 0, 0, 0, -862, 0, -862, 0, 0, 0, -862, 0, 0, -862, 0, 0, 0, -862, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -862, 0, -862, -862, -862, -862, 0, 0, 0, 0, 0, -862, -862, -862, -862, 0, -862, -862, -862, -862, 0, 0, 0, 0, -862, -862, -862, -862, -862, 0, 0, -862, -862, -862, -862, 0, -862, -862, -862, -862, -862, -862, -862, -862, -862, 0, 0, 0, -862, -862, 0, 0, 0, 0, -862, -862, -862, -862, -862, -862, + // State 904 + 984, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 985, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 905 + 0, 0, 0, 0, 0, 0, -802, 0, -802, 0, 0, 0, -802, 0, 0, -802, 0, 0, 0, -802, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -802, 0, -802, -802, -802, -802, 0, 0, 0, 0, 0, -802, -802, -802, -802, 0, -802, -802, -802, -802, 0, 0, 0, 0, -802, -802, -802, -802, -802, 0, 0, -802, -802, -802, -802, 0, -802, -802, -802, -802, -802, -802, -802, -802, -802, 0, 0, 0, -802, -802, 0, 0, 0, 0, -802, -802, -802, -802, -802, -802, + // State 906 + 986, 0, 0, 0, 0, 0, -132, 0, -132, 0, 0, 0, -132, 0, 0, -132, 0, 0, 0, -132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -132, -132, -132, -132, 0, 0, 0, 0, 0, -132, 0, -132, -132, 0, 0, -132, 0, -132, 0, 0, 0, 0, 0, -132, -132, 0, -132, 0, 0, -132, 0, -132, -132, 0, -132, -132, -132, 0, -132, 0, 0, -132, -132, 0, 0, 0, -132, 0, 0, 0, 0, 0, -132, -132, -132, -132, -132, -132, + // State 907 + 0, 0, 0, 0, 0, 0, -805, 0, -805, 0, 0, 0, -805, 0, 0, -805, 0, 0, 0, -805, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -805, 0, -805, -805, -805, -805, 0, 0, 0, 0, 0, -805, -805, -805, -805, 0, -805, -805, -805, -805, 0, 0, 0, 0, -805, -805, -805, -805, -805, 0, 0, -805, -805, -805, -805, 0, -805, -805, -805, -805, -805, -805, -805, -805, -805, 0, 0, 0, -805, -805, 0, 0, 0, 0, -805, -805, -805, -805, -805, -805, + // State 908 + 988, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 989, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 909 + -827, 0, 0, 0, 0, 0, -827, 0, -827, 0, 0, 0, -827, 0, 0, -827, 0, 0, 0, -827, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -827, 0, -827, -827, -827, -827, 0, 0, 0, 0, 0, -827, -827, -827, -827, -827, -827, -827, -827, -827, -827, -827, -827, -827, -827, -827, -827, -827, -827, 0, 0, -827, -827, -827, -827, 0, -827, -827, -827, -827, -827, -827, -827, -827, -827, 0, 0, 0, -827, -827, 0, 0, 0, 0, -827, -827, -827, -827, -827, -827, + // State 910 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -832, 0, 0, 0, 0, 0, 0, 0, 0, 0, -837, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -832, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 911 + 0, 0, 0, 0, 0, 0, 0, -892, 0, 0, 0, 0, 0, 0, -892, 0, 0, 0, 0, 0, 0, 0, 0, 0, -892, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 912 + 0, -193, -193, 0, -193, 0, -193, 0, -193, -193, 0, 0, -193, 0, -193, -193, 0, 0, -193, 0, -193, -193, 0, 0, -220, 0, 0, -193, -193, 0, -193, 0, -193, -193, -193, -193, 0, -193, 0, 0, 0, 0, -193, 0, -193, 0, -193, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0, -193, -193, 0, 0, 0, -193, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 913 + 0, 0, 0, 0, 0, 0, 0, 991, 0, 0, 0, 0, 0, 0, 332, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 914 + 0, -194, -194, 0, -194, 0, -194, 0, -194, -194, 0, 0, -194, 0, -194, -194, 0, 0, -194, 0, -194, -194, 0, 0, -221, 0, 0, -194, -194, 0, -194, 0, -194, -194, -194, -194, 0, -194, 0, 0, 0, 0, -194, 0, -194, 0, -194, -194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -194, 0, -194, -194, 0, 0, 0, -194, -194, 0, 0, 0, 0, 0, 0, 0, 0, 0, -194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 915 + 0, 0, 0, 0, 0, 0, 0, 993, 0, 0, 0, 0, 0, 0, 333, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 916 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -902, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 917 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -901, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 918 + 0, 0, 0, 0, 0, 0, 0, -330, 0, 0, 0, 0, 0, 0, -330, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -330, 0, 0, 0, 0, 0, -330, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -330, 0, 0, -330, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -330, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 919 + 0, 0, 0, 0, 0, 0, 0, -326, 0, 0, 0, 0, 0, 0, -326, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -326, 0, 0, 0, 0, 0, -326, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -326, 0, 0, -326, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -326, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 920 + 0, 0, 0, 0, 0, 0, 0, -372, 0, 0, 0, 0, 0, 0, -372, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -372, 0, 0, 0, 0, 0, -372, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -372, 0, 0, -372, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -372, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 921 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -642, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 922 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 995, 0, 0, 0, 0, 0, 0, 0, 0, 0, -666, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 923 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -633, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 924 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -689, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 925 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 334, 0, 0, 0, 0, 0, 0, 0, 0, 0, -683, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 926 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 336, 0, 0, 0, 0, 0, 0, 0, 0, 0, -679, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 927 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 0, -664, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 928 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 337, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 929 + -401, 0, 0, 0, 0, 0, -401, 0, -401, 0, 0, 0, -401, 0, 0, -401, 0, 0, 0, -401, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -401, 0, -401, -401, -401, -401, 0, 0, 0, 0, 0, -401, -401, -401, -401, 0, -401, -401, -401, -401, 0, 0, 0, 0, -401, -401, -401, -401, -401, 0, 0, -401, -401, -401, -401, 0, -401, -401, -401, -401, -401, -401, -401, -401, -401, 0, 0, 0, -401, -401, 0, 0, 0, 0, -401, -401, -401, -401, -401, -401, + // State 930 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 338, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 931 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 339, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 932 + -408, 0, 0, 0, 0, 0, -408, 0, -408, 0, 0, 0, -408, 0, 0, -408, 0, 0, 0, -408, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -408, 0, -408, -408, -408, -408, 0, 0, 0, 0, 0, -408, -408, -408, -408, 0, -408, -408, -408, -408, 0, 0, 0, 0, -408, -408, -408, -408, -408, 0, 0, -408, -408, -408, -408, 0, -408, -408, -408, -408, -408, -408, -408, -408, -408, 0, 0, 0, -408, -408, 0, 0, 0, 0, -408, -408, -408, -408, -408, -408, + // State 933 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 340, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 934 + -398, 0, 0, 0, 0, 0, -398, 0, -398, 0, 0, 0, -398, 0, 0, -398, 0, 0, 0, -398, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -398, 0, -398, -398, -398, -398, 0, 0, 0, 0, 0, -398, -398, -398, -398, 0, -398, -398, -398, -398, 0, 0, 0, 0, -398, -398, -398, -398, -398, 0, 0, -398, -398, -398, -398, 0, -398, -398, -398, -398, -398, -398, -398, -398, -398, 0, 0, 0, -398, -398, 0, 0, 0, 0, -398, -398, -398, -398, -398, -398, + // State 935 + -391, 0, 0, 0, 0, 0, -391, 0, -391, 0, 0, 0, -391, 0, 0, -391, 0, 0, 0, -391, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -391, 0, -391, -391, -391, -391, 0, 0, 0, 0, 0, -391, -391, -391, -391, 0, -391, -391, -391, -391, 0, 1006, 0, 0, -391, -391, -391, -391, -391, 0, 0, -391, -391, -391, -391, 0, -391, -391, -391, -391, -391, -391, -391, -391, -391, 0, 0, 0, -391, -391, 0, 0, 0, 0, -391, -391, -391, -391, -391, -391, + // State 936 + -265, 0, 0, 0, 0, 0, -265, 0, -265, 0, 0, 0, -265, 0, 0, -265, 0, 0, 0, -265, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -265, 0, -265, -265, -265, -265, 0, 0, 0, 0, 0, -265, -265, -265, -265, 0, -265, -265, -265, -265, 0, 0, 0, 0, -265, -265, -265, -265, -265, 0, 0, -265, -265, -265, -265, 0, -265, -265, -265, -265, -265, -265, -265, -265, -265, 0, 0, 0, -265, -265, 0, 0, 0, 0, -265, -265, -265, -265, -265, -265, + // State 937 + -403, 0, 0, 0, 0, 0, -403, 0, -403, 0, 0, 0, -403, 0, 0, -403, 0, 0, 0, -403, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -403, 0, -403, -403, -403, -403, 0, 0, 0, 0, 0, -403, -403, -403, -403, 0, -403, -403, -403, -403, 0, 0, 0, 0, -403, -403, -403, -403, -403, 0, 0, -403, -403, -403, -403, 0, -403, -403, -403, -403, -403, -403, -403, -403, -403, 0, 0, 0, -403, -403, 0, 0, 0, 0, -403, -403, -403, -403, -403, -403, + // State 938 + 0, 0, 0, 0, 0, 0, 0, -609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 939 + 0, 0, 0, 0, 0, 0, 0, -603, 0, 0, 0, 0, 0, 0, 341, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 940 + 0, 0, 0, 0, 0, 0, 0, -608, 0, 0, 0, 0, 0, 0, 343, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 941 + 0, 0, 0, 0, 0, 0, 0, -626, 0, 0, 0, 0, 0, 0, 1012, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 942 + 0, 0, 0, 0, 0, 0, 0, -20, 0, 0, 0, 0, 0, 0, -20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 943 + 0, 0, 0, 0, 0, 0, 0, -793, 0, 0, 0, 0, 0, 0, -793, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 944 + 0, 0, 0, 0, 0, 0, 0, -623, 0, 0, 0, 0, 0, 0, 1014, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 945 + 0, 0, 0, 0, 0, 0, 0, -616, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 946 + 0, 0, 0, 0, 0, 0, 0, -352, 0, 0, 0, 0, 0, 0, -352, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 947 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 345, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 948 + -433, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -433, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 949 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 346, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 950 + -424, 0, 0, 0, 0, 0, -424, 0, -424, 0, 0, 0, -424, 0, 0, -424, 0, 0, 0, -424, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -424, 0, -424, -424, -424, -424, 0, 0, 0, 0, 0, -424, -424, -424, -424, 0, -424, -424, -424, -424, 0, 0, 0, 0, -424, -424, -424, -424, -424, 0, 0, -424, -424, -424, -424, 0, -424, -424, -424, -424, -424, -424, -424, -424, -424, 0, 0, 0, -424, -424, 0, 0, 0, 0, -424, -424, -424, -424, -424, -424, + // State 951 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -482, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -482, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 952 + -488, 0, 0, 0, 0, 0, -488, 0, -488, 0, 0, 0, -488, 0, 0, -488, 0, 0, 0, -488, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -488, 0, -488, -488, -488, -488, 0, 0, 0, 0, 0, -488, -488, -488, -488, 0, -488, -488, -488, -488, 0, 0, 0, 0, -488, -488, -488, -488, -488, 0, 0, -488, -488, -488, -488, 0, -488, -488, -488, -488, -488, -488, -488, -488, -488, 0, 0, 0, -488, -488, 0, 0, 0, 0, -488, -488, -488, -488, -488, -488, + // State 953 + 0, 0, 0, 0, 0, 0, 0, -464, 0, 0, 0, 0, 0, 0, -464, 0, 0, 0, 0, 0, 0, 0, 0, 0, -464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -464, 0, 0, 0, -464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -464, 0, -464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 427, + // State 954 + 0, 0, 0, 0, 0, 0, 0, -463, 0, 0, 0, 0, 0, 0, -463, 0, 0, 0, 0, 0, 0, 0, 0, 0, -463, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -463, 0, 0, 0, -463, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -463, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -463, 0, -463, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 955 + 0, 0, 0, 0, 0, 0, 0, -732, 0, 0, 0, 0, 0, 0, -732, 0, 0, 0, 0, 0, 0, 0, 0, 0, -732, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -732, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -732, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -732, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 956 + 0, 0, 0, 0, 0, 0, 0, -287, 0, 0, 0, 0, 0, 0, -287, 0, 0, 0, 0, 0, 0, 0, 0, 0, -287, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -287, 0, 0, 0, -287, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -287, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -287, 0, -287, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 957 + 0, 0, 0, 0, 0, 0, 0, -292, 0, 0, 0, 0, 0, 0, -292, 0, 0, 0, 0, 0, 0, 0, 0, 0, -292, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -292, 0, 0, 0, -292, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -292, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -292, 0, -292, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 958 + 0, 0, 0, 0, 0, 0, 0, -539, 0, 0, 0, 0, 0, 0, -539, 0, 0, 0, 0, 0, 0, 0, 0, 0, -539, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -539, 0, 0, 0, -539, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -539, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 347, 0, -539, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 959 + 0, 0, 0, 0, 0, 0, 0, -334, 0, 0, 0, 0, -334, 0, -334, -334, 0, 0, 0, 0, 0, 0, 0, 0, -334, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -334, 0, 0, 0, -334, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -334, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -334, 0, -334, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 960 + 0, 0, 0, 0, 0, 0, 0, -335, 0, 0, 0, 0, -335, 0, -335, -335, 0, 0, 0, 0, 0, 0, 0, 0, -335, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -335, 0, 0, 0, -335, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -335, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -335, 0, -335, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 961 + 0, 0, 0, 0, 0, 0, -485, -263, 0, 0, 0, 0, 0, 0, -263, 0, 0, 0, -485, 0, 0, 0, 0, 0, -263, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -263, 0, 0, 0, -263, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -263, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -263, 0, -263, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 962 + 0, 0, 0, 0, 0, 0, 0, -286, 0, 0, 0, 0, 0, 0, -286, 0, 0, 0, 0, 0, 0, 0, 0, 0, -286, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -286, 0, 0, 0, -286, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -286, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -286, 0, -286, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 963 + 0, 0, 0, 0, 0, 0, 0, -291, 0, 0, 0, 0, 0, 0, -291, 0, 0, 0, 0, 0, 0, 0, 0, 0, -291, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -291, 0, 0, 0, -291, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -291, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -291, 0, -291, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 964 + 0, 0, 0, 0, 0, 0, 349, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 350, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 965 + 0, 0, 0, 0, 0, 0, 351, -888, 0, 0, 0, 0, 0, 0, -888, 0, 0, 0, 352, 0, 0, 0, 0, 0, -888, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -888, 0, 0, 0, -888, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -888, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -888, 0, -888, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 966 + 0, 0, 0, 0, 0, 0, 0, -733, 0, 0, 0, 0, 0, 0, -733, 0, 0, 0, 0, 0, 0, 0, 0, 0, -733, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -733, 0, 0, 0, 353, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -733, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -733, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 967 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 354, 0, 0, 0, 0, 0, 0, 0, 0, 0, -739, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -739, 0, 0, 0, 0, 0, 0, 0, 0, 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 968 + 0, 0, 0, 0, 0, 0, 0, -290, 0, 0, 0, 0, 0, 0, -290, 0, 0, 0, 0, 0, 0, 0, 0, 0, -290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -290, 0, 0, 0, -290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -290, 0, -290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 969 + 0, 0, 0, 0, 0, 0, 0, -288, 0, 0, 0, 0, 0, 0, -288, 0, 0, 0, 0, 0, 0, 0, 0, 0, -288, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -288, 0, 0, 0, -288, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -288, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -288, 0, -288, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 970 + 0, 0, 0, 0, 0, 0, 0, -540, 0, 0, 0, 0, 0, 0, -540, 0, 0, 0, 0, 0, 0, 0, 0, 0, -540, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -540, 0, 0, 0, -540, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -540, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 357, 0, -540, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 971 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 358, 0, 0, 0, 0, 0, 0, 0, 0, 0, -738, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -738, 0, 0, 0, 0, 0, 0, 0, 0, 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 972 + 0, 0, 0, 0, 0, 0, 0, -289, 0, 0, 0, 0, 0, 0, -289, 0, 0, 0, 0, 0, 0, 0, 0, 0, -289, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -289, 0, 0, 0, -289, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -289, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -289, 0, -289, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 973 + 0, 0, 0, 0, 0, 0, 0, -461, 0, 0, 0, 0, 0, 0, -461, 0, 0, 0, 0, 0, 0, 0, 0, 0, -461, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -461, 0, 0, 0, -461, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -461, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -461, 0, -461, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 974 + 0, 0, 0, 0, 0, 0, 0, -459, 0, 0, 0, 0, 0, 0, -459, 0, 0, 0, 0, 0, 0, 0, 0, 0, -459, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -459, 0, 0, 0, -459, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -459, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -459, 0, -459, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 975 + 0, 0, 0, 0, 0, 0, 0, -460, 0, 0, 0, 0, 0, 0, -460, 0, 0, 0, 0, 0, 0, 0, 0, 0, -460, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -460, 0, 0, 0, -460, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -460, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -460, 0, -460, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 976 + -491, 0, 0, 0, 0, 0, -491, 0, -491, 0, 0, 0, -491, 0, 0, -491, 0, 0, 0, -491, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -491, 0, -491, -491, -491, -491, 0, 0, 0, 0, 0, -491, -491, -491, -491, 0, -491, -491, -491, -491, 0, 0, 0, 0, -491, -491, -491, -491, -491, 0, 0, -491, -491, -491, -491, 0, -491, -491, -491, -491, -491, -491, -491, -491, -491, 0, 0, 0, -491, -491, 0, 0, 0, 0, -491, -491, -491, -491, -491, -491, + // State 977 + -855, 0, 0, 0, 0, 0, -855, 0, -855, 0, 0, 0, -855, 0, 0, -855, 0, 0, 0, -855, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -855, 0, -855, -855, -855, -855, 0, 0, 0, 0, 0, -855, -855, -855, -855, 0, -855, -855, -855, -855, 0, 0, 0, 1039, -855, -855, -855, -855, -855, 0, 0, -855, -855, -855, -855, 0, -855, -855, -855, -855, -855, -855, -855, -855, -855, 0, 0, 0, -855, -855, 0, 0, 0, 0, -855, -855, -855, -855, -855, -855, + // State 978 + -856, 0, 0, 0, 0, 0, -856, 0, -856, 0, 0, 0, -856, 0, 0, -856, 0, 0, 0, -856, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -856, 0, -856, -856, -856, -856, 0, 0, 0, 0, 0, -856, -856, -856, -856, 0, -856, -856, -856, -856, 0, 0, 0, 0, -856, -856, -856, -856, -856, 0, 0, -856, -856, -856, -856, 0, -856, -856, -856, -856, -856, -856, -856, -856, -856, 0, 0, 0, -856, -856, 0, 0, 0, 0, -856, -856, -856, -856, -856, -856, + // State 979 + -859, 0, 0, 0, 0, 0, -859, 0, -859, 0, 0, 0, -859, 0, 0, -859, 0, 0, 0, -859, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -859, 0, -859, -859, -859, -859, 0, 0, 0, 0, 0, -859, -859, -859, -859, 0, -859, -859, -859, -859, 0, 0, 0, 1040, -859, -859, -859, -859, -859, 0, 0, -859, -859, -859, -859, 0, -859, -859, -859, -859, -859, -859, -859, -859, -859, 0, 0, 0, -859, -859, 0, 0, 0, 0, -859, -859, -859, -859, -859, -859, + // State 980 + -860, 0, 0, 0, 0, 0, -860, 0, -860, 0, 0, 0, -860, 0, 0, -860, 0, 0, 0, -860, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -860, 0, -860, -860, -860, -860, 0, 0, 0, 0, 0, -860, -860, -860, -860, 0, -860, -860, -860, -860, 0, 0, 0, 0, -860, -860, -860, -860, -860, 0, 0, -860, -860, -860, -860, 0, -860, -860, -860, -860, -860, -860, -860, -860, -860, 0, 0, 0, -860, -860, 0, 0, 0, 0, -860, -860, -860, -860, -860, -860, + // State 981 + -356, 0, 0, 0, 0, 0, -356, 0, -356, 0, 0, 0, -356, 0, 0, -356, 0, 0, 0, -356, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -356, 0, -356, -356, -356, -356, 0, 0, 0, 0, 0, -356, -356, -356, -356, 0, -356, -356, -356, -356, 0, -356, -356, -356, -356, -356, -356, -356, -356, 0, 0, -356, -356, -356, -356, 0, -356, -356, -356, -356, -356, -356, -356, -356, -356, 0, 0, 0, -356, -356, 0, 0, 0, 0, -356, -356, -356, -356, -356, -356, + // State 982 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 363, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 983 + 0, 0, 0, 0, 0, 0, -803, 0, -803, 0, 0, 0, -803, 0, 0, -803, 0, 0, 0, -803, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -803, 0, -803, -803, -803, -803, 0, 0, 0, 0, 0, -803, -803, -803, -803, 0, -803, -803, -803, -803, 0, 0, 0, 0, -803, -803, -803, -803, -803, 0, 0, -803, -803, -803, -803, 0, -803, -803, -803, -803, -803, -803, -803, -803, -803, 0, 0, 0, -803, -803, 0, 0, 0, 0, -803, -803, -803, -803, -803, -803, + // State 984 + 1043, 0, 0, 0, 0, 0, -133, 0, -133, 0, 0, 0, -133, 0, 0, -133, 0, 0, 0, -133, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -133, -133, -133, -133, 0, 0, 0, 0, 0, -133, 0, -133, -133, 0, 0, -133, 0, -133, 0, 0, 0, 0, 0, -133, -133, 0, -133, 0, 0, -133, 0, -133, -133, 0, -133, -133, -133, 0, -133, 0, 0, -133, -133, 0, 0, 0, -133, 0, 0, 0, 0, 0, -133, -133, -133, -133, -133, -133, + // State 985 + 0, 0, 0, 0, 0, 0, -800, 0, -800, 0, 0, 0, -800, 0, 0, -800, 0, 0, 0, -800, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -800, 0, -800, -800, -800, -800, 0, 0, 0, 0, 0, -800, -800, -800, -800, 0, -800, -800, -800, -800, 0, 0, 0, 0, -800, -800, -800, -800, -800, 0, 0, -800, -800, -800, -800, 0, -800, -800, -800, -800, -800, -800, -800, -800, -800, 0, 0, 0, -800, -800, 0, 0, 0, 0, -800, -800, -800, -800, -800, -800, + // State 986 + 1044, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1045, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 987 + 0, 0, 0, 0, 0, 0, -808, 0, -808, 0, 0, 0, -808, 0, 0, -808, 0, 0, 0, -808, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -808, 0, -808, -808, -808, -808, 0, 0, 0, 0, 0, -808, -808, -808, -808, 0, -808, -808, -808, -808, 0, 0, 0, 0, -808, -808, -808, -808, -808, 0, 0, -808, -808, -808, -808, 0, -808, -808, -808, -808, -808, -808, -808, -808, -808, 0, 0, 0, -808, -808, 0, 0, 0, 0, -808, -808, -808, -808, -808, -808, + // State 988 + 1046, 0, 0, 0, 0, 0, -132, 0, -132, 0, 0, 0, -132, 0, 0, -132, 0, 0, 0, -132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -132, -132, -132, -132, 0, 0, 0, 0, 0, -132, 0, -132, -132, 0, 0, -132, 0, -132, 0, 0, 0, 0, 0, -132, -132, 0, -132, 0, 0, -132, 0, -132, -132, 0, -132, -132, -132, 0, -132, 0, 0, -132, -132, 0, 0, 0, -132, 0, 0, 0, 0, 0, -132, -132, -132, -132, -132, -132, + // State 989 + -889, 0, 0, 0, 0, 0, -889, 0, -889, 0, 0, 0, -889, 0, 0, -889, 0, 0, 0, -889, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -889, 0, -889, -889, -889, -889, 0, 0, 0, 0, 0, -889, -889, -889, -889, 0, -889, -889, -889, -889, 0, 0, 0, 0, -889, -889, -889, -889, -889, 0, 0, -889, -889, -889, -889, 0, -889, -889, -889, -889, -889, -889, -889, -889, -889, 0, 0, 0, -889, -889, 0, 0, 0, 0, -889, -889, -889, -889, -889, -889, + // State 990 + 0, -196, -196, 0, -196, 0, -196, 0, -196, -196, 0, 0, -196, 0, -196, -196, 0, 0, -196, 0, -196, -196, 0, 0, -223, 0, 0, -196, -196, 0, -196, 0, -196, -196, -196, -196, 0, -196, 0, 0, 0, 0, -196, 0, -196, 0, -196, -196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -196, 0, -196, -196, 0, 0, 0, -196, -196, 0, 0, 0, 0, 0, 0, 0, 0, 0, -196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 991 + 0, -190, -190, 0, -190, 0, -190, 0, -190, -190, 0, 0, -190, 0, -190, -190, 0, 0, -190, 0, -190, -190, 0, 0, -217, 0, 0, -190, -190, 0, -190, 0, -190, -190, -190, -190, 0, -190, 0, 0, 0, 0, -190, 0, -190, 0, -190, -190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -190, 0, -190, -190, 0, 0, 0, -190, -190, 0, 0, 0, 0, 0, 0, 0, 0, 0, -190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 992 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 993 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -898, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 994 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -639, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 995 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 364, 0, 0, 0, 0, 0, 0, 0, 0, 0, -680, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 996 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1051, 0, 0, 0, 0, 0, 0, 0, 0, 0, -665, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 997 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1052, 0, 0, 0, 0, 0, 0, 0, 0, 0, -670, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 998 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1054, 0, 0, 0, 0, 0, 0, 0, 0, 0, -661, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 999 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -637, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1000 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 365, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1001 + -400, 0, 0, 0, 0, 0, -400, 0, -400, 0, 0, 0, -400, 0, 0, -400, 0, 0, 0, -400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -400, 0, -400, -400, -400, -400, 0, 0, 0, 0, 0, -400, -400, -400, -400, 0, -400, -400, -400, -400, 0, 0, 0, 0, -400, -400, -400, -400, -400, 0, 0, -400, -400, -400, -400, 0, -400, -400, -400, -400, -400, -400, -400, -400, -400, 0, 0, 0, -400, -400, 0, 0, 0, 0, -400, -400, -400, -400, -400, -400, + // State 1002 + -267, 0, 0, 0, 0, 0, -267, 0, -267, 0, 0, 0, -267, 0, 0, -267, 0, 0, 0, -267, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -267, 0, -267, -267, -267, -267, 0, 0, 0, 0, 0, -267, -267, -267, -267, 0, -267, -267, -267, -267, 0, 0, 0, 0, -267, -267, -267, -267, -267, 0, 0, -267, -267, -267, -267, 0, -267, -267, -267, -267, -267, -267, -267, -267, -267, 0, 0, 0, -267, -267, 0, 0, 0, 0, -267, -267, -267, -267, -267, -267, + // State 1003 + -405, 0, 0, 0, 0, 0, -405, 0, -405, 0, 0, 0, -405, 0, 0, -405, 0, 0, 0, -405, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -405, 0, -405, -405, -405, -405, 0, 0, 0, 0, 0, -405, -405, -405, -405, 0, -405, -405, -405, -405, 0, 0, 0, 0, -405, -405, -405, -405, -405, 0, 0, -405, -405, -405, -405, 0, -405, -405, -405, -405, -405, -405, -405, -405, -405, 0, 0, 0, -405, -405, 0, 0, 0, 0, -405, -405, -405, -405, -405, -405, + // State 1004 + -395, 0, 0, 0, 0, 0, -395, 0, -395, 0, 0, 0, -395, 0, 0, -395, 0, 0, 0, -395, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -395, 0, -395, -395, -395, -395, 0, 0, 0, 0, 0, -395, -395, -395, -395, 0, -395, -395, -395, -395, 0, 0, 0, 0, -395, -395, -395, -395, -395, 0, 0, -395, -395, -395, -395, 0, -395, -395, -395, -395, -395, -395, -395, -395, -395, 0, 0, 0, -395, -395, 0, 0, 0, 0, -395, -395, -395, -395, -395, -395, + // State 1005 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 366, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1006 + -264, 0, 0, 0, 0, 0, -264, 0, -264, 0, 0, 0, -264, 0, 0, -264, 0, 0, 0, -264, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -264, 0, -264, -264, -264, -264, 0, 0, 0, 0, 0, -264, -264, -264, -264, 0, -264, -264, -264, -264, 0, 0, 0, 0, -264, -264, -264, -264, -264, 0, 0, -264, -264, -264, -264, 0, -264, -264, -264, -264, -264, -264, -264, -264, -264, 0, 0, 0, -264, -264, 0, 0, 0, 0, -264, -264, -264, -264, -264, -264, + // State 1007 + -402, 0, 0, 0, 0, 0, -402, 0, -402, 0, 0, 0, -402, 0, 0, -402, 0, 0, 0, -402, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -402, 0, -402, -402, -402, -402, 0, 0, 0, 0, 0, -402, -402, -402, -402, 0, -402, -402, -402, -402, 0, 0, 0, 0, -402, -402, -402, -402, -402, 0, 0, -402, -402, -402, -402, 0, -402, -402, -402, -402, -402, -402, -402, -402, -402, 0, 0, 0, -402, -402, 0, 0, 0, 0, -402, -402, -402, -402, -402, -402, + // State 1008 + 0, 0, 0, 0, 0, 0, 0, -600, 0, 0, 0, 0, 0, 0, 367, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1009 + 0, 0, 0, 0, 0, 0, 0, -585, 0, 0, 0, 0, 0, 0, 1061, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1010 + 0, 0, 0, 0, 0, 0, 0, -613, 0, 0, 0, 0, 0, 0, 1063, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1011 + 0, 0, 0, 0, 0, 0, 0, -618, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1012 + 0, 0, 0, 0, 0, 0, 0, -625, 0, 0, 0, 0, 0, 0, 1065, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1013 + 0, 0, 0, 0, 0, 0, 0, -615, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1014 + -519, 0, 0, 0, 0, 0, 0, -519, 0, 0, 0, 0, 0, 0, -519, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -519, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1015 + -426, 0, 0, 0, 0, 0, -426, 0, -426, 0, 0, 0, -426, 0, 0, -426, 0, 0, 0, -426, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -426, 0, -426, -426, -426, -426, 0, 0, 0, 0, 0, -426, -426, -426, -426, 0, -426, -426, -426, -426, 0, 0, 0, 0, -426, -426, -426, -426, -426, 0, 0, -426, -426, -426, -426, 0, -426, -426, -426, -426, -426, -426, -426, -426, -426, 0, 0, 0, -426, -426, 0, 0, 0, 0, -426, -426, -426, -426, -426, -426, + // State 1016 + -105, 0, 0, 0, 0, 0, -105, 0, -105, 0, 0, 0, -105, 0, 0, -105, 0, 0, 0, -105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -105, 0, -105, -105, -105, -105, 0, 0, 0, 0, 0, -105, -105, -105, -105, 0, -105, -105, -105, -105, -105, -105, 0, 0, -105, -105, -105, -105, -105, 0, 0, -105, -105, -105, -105, 0, -105, -105, -105, -105, -105, -105, -105, -105, -105, 0, 0, 0, -105, -105, 0, 0, 0, 0, -105, -105, -105, -105, -105, -105, + // State 1017 + -489, 0, 0, 0, 0, 0, -489, 0, -489, 0, 0, 0, -489, 0, 0, -489, 0, 0, 0, -489, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -489, 0, -489, -489, -489, -489, 0, 0, 0, 0, 0, -489, -489, -489, -489, 0, -489, -489, -489, -489, 0, 0, 0, 0, -489, -489, -489, -489, -489, 0, 0, -489, -489, -489, -489, 0, -489, -489, -489, -489, -489, -489, -489, -489, -489, 0, 0, 0, -489, -489, 0, 0, 0, 0, -489, -489, -489, -489, -489, -489, + // State 1018 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 371, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1019 + 0, 0, 0, 0, 0, 0, 0, 1088, 0, 0, 0, 0, 0, 0, 1089, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1020 + 0, 0, 0, 0, 0, 0, 0, -755, 0, 0, 0, 0, 0, 0, -755, 0, 0, 0, 0, 0, 0, 0, 0, 0, -755, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -755, 0, 0, 0, -755, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -755, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -755, 0, -755, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 1021 + 0, 0, 0, 0, 0, 0, 0, -792, 0, 0, 0, 0, 0, 0, -792, 0, 0, 0, 0, 0, 0, 0, 0, 0, -792, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -792, 0, 0, 0, -792, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -792, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -792, 0, -792, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 1022 + 0, 0, 0, 0, 0, 0, 0, -336, 0, 0, 0, 0, -336, 0, -336, -336, 0, 0, 0, 0, 0, 0, 0, 0, -336, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -336, 0, 0, 0, -336, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -336, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -336, 0, -336, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 1023 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1092, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1093, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1024 + 0, 0, 0, 0, 0, 0, 0, -760, 0, 0, 0, 0, 0, 0, -760, 0, 0, 0, 0, 0, 0, 0, 0, 0, -760, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -760, 0, 0, 0, -760, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -760, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -760, 0, -760, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 1025 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -471, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 427, + // State 1026 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -466, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1027 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -485, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1028 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 372, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1029 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -523, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -523, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 1030 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 350, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1031 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 352, 0, 0, 0, 0, 0, -467, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1032 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 373, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1094, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 1033 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -470, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1034 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -468, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1035 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -469, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1036 + 0, 0, 0, 0, 0, 0, 0, -472, 0, 0, 0, 0, 0, 0, -472, 0, 0, 0, 0, 0, 0, 0, 0, 0, -472, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -472, 0, 0, 0, -472, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -472, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -472, 0, -472, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 1037 + -490, 0, 0, 0, 0, 0, -490, 0, -490, 0, 0, 0, -490, 0, 0, -490, 0, 0, 0, -490, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -490, 0, -490, -490, -490, -490, 0, 0, 0, 0, 0, -490, -490, -490, -490, 0, -490, -490, -490, -490, 0, 0, 0, 0, -490, -490, -490, -490, -490, 0, 0, -490, -490, -490, -490, 0, -490, -490, -490, -490, -490, -490, -490, -490, -490, 0, 0, 0, -490, -490, 0, 0, 0, 0, -490, -490, -490, -490, -490, -490, + // State 1038 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 374, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1039 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 375, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1040 + -361, 0, 0, 0, 0, 0, -361, 0, -361, 0, 0, 0, -361, 0, 0, -361, 0, 0, 0, -361, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -361, 0, -361, -361, -361, -361, 0, 0, 0, 0, 0, -361, -361, -361, -361, 0, -361, -361, -361, -361, 0, -361, -361, -361, -361, -361, -361, -361, -361, 0, 0, -361, -361, -361, -361, 0, -361, -361, -361, -361, -361, -361, -361, -361, -361, 0, 0, 0, -361, -361, 0, 0, 0, 0, -361, -361, -361, -361, -361, -361, + // State 1041 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 376, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1042 + 0, 0, 0, 0, 0, 0, -801, 0, -801, 0, 0, 0, -801, 0, 0, -801, 0, 0, 0, -801, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -801, 0, -801, -801, -801, -801, 0, 0, 0, 0, 0, -801, -801, -801, -801, 0, -801, -801, -801, -801, 0, 0, 0, 0, -801, -801, -801, -801, -801, 0, 0, -801, -801, -801, -801, 0, -801, -801, -801, -801, -801, -801, -801, -801, -801, 0, 0, 0, -801, -801, 0, 0, 0, 0, -801, -801, -801, -801, -801, -801, + // State 1043 + 0, 0, 0, 0, 0, 0, -809, 0, -809, 0, 0, 0, -809, 0, 0, -809, 0, 0, 0, -809, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -809, 0, -809, -809, -809, -809, 0, 0, 0, 0, 0, -809, -809, -809, -809, 0, -809, -809, -809, -809, 0, 0, 0, 0, -809, -809, -809, -809, -809, 0, 0, -809, -809, -809, -809, 0, -809, -809, -809, -809, -809, -809, -809, -809, -809, 0, 0, 0, -809, -809, 0, 0, 0, 0, -809, -809, -809, -809, -809, -809, + // State 1044 + 1097, 0, 0, 0, 0, 0, -133, 0, -133, 0, 0, 0, -133, 0, 0, -133, 0, 0, 0, -133, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -133, -133, -133, -133, 0, 0, 0, 0, 0, -133, 0, -133, -133, 0, 0, -133, 0, -133, 0, 0, 0, 0, 0, -133, -133, 0, -133, 0, 0, -133, 0, -133, -133, 0, -133, -133, -133, 0, -133, 0, 0, -133, -133, 0, 0, 0, -133, 0, 0, 0, 0, 0, -133, -133, -133, -133, -133, -133, + // State 1045 + 0, 0, 0, 0, 0, 0, -806, 0, -806, 0, 0, 0, -806, 0, 0, -806, 0, 0, 0, -806, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -806, 0, -806, -806, -806, -806, 0, 0, 0, 0, 0, -806, -806, -806, -806, 0, -806, -806, -806, -806, 0, 0, 0, 0, -806, -806, -806, -806, -806, 0, 0, -806, -806, -806, -806, 0, -806, -806, -806, -806, -806, -806, -806, -806, -806, 0, 0, 0, -806, -806, 0, 0, 0, 0, -806, -806, -806, -806, -806, -806, + // State 1046 + 0, -192, -192, 0, -192, 0, -192, 0, -192, -192, 0, 0, -192, 0, -192, -192, 0, 0, -192, 0, -192, -192, 0, 0, -219, 0, 0, -192, -192, 0, -192, 0, -192, -192, -192, -192, 0, -192, 0, 0, 0, 0, -192, 0, -192, 0, -192, -192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, 0, -192, -192, 0, 0, 0, -192, -192, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 1047 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -900, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1048 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1098, 0, 0, 0, 0, 0, 0, 0, 0, 0, -671, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1049 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1100, 0, 0, 0, 0, 0, 0, 0, 0, 0, -662, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1050 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -638, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1051 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1052 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1101, 0, 0, 0, 0, 0, 0, 0, 0, 0, -667, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1053 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -634, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1054 + -397, 0, 0, 0, 0, 0, -397, 0, -397, 0, 0, 0, -397, 0, 0, -397, 0, 0, 0, -397, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -397, 0, -397, -397, -397, -397, 0, 0, 0, 0, 0, -397, -397, -397, -397, 0, -397, -397, -397, -397, 0, 0, 0, 0, -397, -397, -397, -397, -397, 0, 0, -397, -397, -397, -397, 0, -397, -397, -397, -397, -397, -397, -397, -397, -397, 0, 0, 0, -397, -397, 0, 0, 0, 0, -397, -397, -397, -397, -397, -397, + // State 1055 + -266, 0, 0, 0, 0, 0, -266, 0, -266, 0, 0, 0, -266, 0, 0, -266, 0, 0, 0, -266, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -266, 0, -266, -266, -266, -266, 0, 0, 0, 0, 0, -266, -266, -266, -266, 0, -266, -266, -266, -266, 0, 0, 0, 0, -266, -266, -266, -266, -266, 0, 0, -266, -266, -266, -266, 0, -266, -266, -266, -266, -266, -266, -266, -266, -266, 0, 0, 0, -266, -266, 0, 0, 0, 0, -266, -266, -266, -266, -266, -266, + // State 1056 + -404, 0, 0, 0, 0, 0, -404, 0, -404, 0, 0, 0, -404, 0, 0, -404, 0, 0, 0, -404, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -404, 0, -404, -404, -404, -404, 0, 0, 0, 0, 0, -404, -404, -404, -404, 0, -404, -404, -404, -404, 0, 0, 0, 0, -404, -404, -404, -404, -404, 0, 0, -404, -404, -404, -404, 0, -404, -404, -404, -404, -404, -404, -404, -404, -404, 0, 0, 0, -404, -404, 0, 0, 0, 0, -404, -404, -404, -404, -404, -404, + // State 1057 + -394, 0, 0, 0, 0, 0, -394, 0, -394, 0, 0, 0, -394, 0, 0, -394, 0, 0, 0, -394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -394, 0, -394, -394, -394, -394, 0, 0, 0, 0, 0, -394, -394, -394, -394, 0, -394, -394, -394, -394, 0, 0, 0, 0, -394, -394, -394, -394, -394, 0, 0, -394, -394, -394, -394, 0, -394, -394, -394, -394, -394, -394, -394, -394, -394, 0, 0, 0, -394, -394, 0, 0, 0, 0, -394, -394, -394, -394, -394, -394, + // State 1058 + 0, 0, 0, 0, 0, 0, 0, -591, 0, 0, 0, 0, 0, 0, 1104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1059 + 0, 0, 0, 0, 0, 0, 0, -582, 0, 0, 0, 0, 0, 0, 1106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1060 + 0, 0, 0, 0, 0, 0, 0, -558, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1061 + 0, 0, 0, 0, 0, 0, 0, -614, 0, 0, 0, 0, 0, 0, 1107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1062 + 0, 0, 0, 0, 0, 0, 0, -610, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1063 + 0, 0, 0, 0, 0, 0, 0, -604, 0, 0, 0, 0, 0, 0, 379, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1064 + 0, 0, 0, 0, 0, 0, 0, -617, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1065 + -392, 0, 0, 0, 0, 0, -392, 0, -392, 0, 0, 0, -392, 0, 0, -392, 0, 0, 0, -392, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -392, 0, -392, -392, -392, -392, 0, 0, 0, 0, 0, -392, -392, -392, -392, 0, -392, -392, -392, -392, 0, 0, 0, 0, -392, -392, -392, -392, -392, 0, 0, -392, -392, -392, -392, 0, -392, -392, -392, -392, -392, -392, -392, -392, -392, 0, 0, 0, -392, -392, 0, 0, 0, 0, -392, -392, -392, -392, -392, -392, + // State 1066 + -106, 0, 0, 0, 0, 0, -106, 0, -106, 0, 0, 0, -106, 0, 0, -106, 0, 0, 0, -106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -106, 0, -106, -106, -106, -106, 0, 0, 0, 0, 0, -106, -106, -106, -106, 0, -106, -106, -106, -106, -106, -106, 0, 0, -106, -106, -106, -106, -106, 0, 0, -106, -106, -106, -106, 0, -106, -106, -106, -106, -106, -106, -106, -106, -106, 0, 0, 0, -106, -106, 0, 0, 0, 0, -106, -106, -106, -106, -106, -106, + // State 1067 + 0, 0, 0, 0, 0, 0, 0, -863, 0, 0, 0, 0, 0, 0, -863, 0, 0, 0, 0, 0, 0, 0, 0, 0, -863, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -863, 0, 0, 0, -863, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -863, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -863, 0, -863, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 1068 + 0, 0, 0, 0, 0, 0, 0, -154, 0, 0, 0, 0, 0, 0, -154, 0, 0, 0, 0, 0, 0, 0, 0, 0, -154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -154, 0, 0, 0, -154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -154, 0, -154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 1069 + 0, 0, 0, 0, 0, 0, -485, -263, 0, 0, 0, 0, 0, 0, -263, 0, 0, 0, -485, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 381, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -263, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -263, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 1070 + 0, 0, 0, 0, 0, 0, 0, -521, 0, 0, 0, 0, 0, 0, -521, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1071 + 0, 0, 0, 0, 0, 0, 0, 1111, 0, 0, 0, 0, 0, 0, 382, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1072 + 0, 0, 0, 0, 0, 0, 0, 1112, 0, 0, 0, 0, 0, 0, 383, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1073 + 0, 0, 0, 0, 0, 0, 0, -529, 0, 0, 0, 0, 0, 0, -529, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1074 + 0, 0, 0, 0, 0, 0, 0, -278, 0, 0, 0, 0, 0, 0, -278, 0, 0, 0, 0, 0, 0, 0, 0, 0, -278, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -278, 0, 0, 0, -278, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -278, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -278, 0, -278, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 1075 + 0, 0, 0, 0, 0, 0, -486, -486, 0, 0, 0, 0, 0, 0, -486, 0, 0, 0, -486, 0, 0, 0, 0, 0, -486, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -486, 0, 0, 0, -486, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -486, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -486, 0, -486, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 1076 + 0, 0, 0, 0, 0, 0, 0, 1113, 0, 0, 0, 0, 0, 0, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1077 + 0, 0, 0, 0, 0, 0, 0, 1114, 0, 0, 0, 0, 0, 0, 385, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1078 + 0, 0, 0, 0, 0, 0, 0, -285, 0, 0, 0, 0, 0, 0, -285, 0, 0, 0, 0, 0, 0, 0, 0, 0, -285, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -285, 0, 0, 0, -285, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -285, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -285, 0, -285, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 1079 + 0, 0, 0, 0, 0, 0, -487, -487, 0, 0, 0, 0, 0, 0, -487, 0, 0, 0, -487, 0, 0, 0, 0, 0, -487, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -487, 0, 0, 0, -487, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -487, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -487, 0, -487, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 1080 + 0, 0, 0, 0, 0, 0, 0, -171, 0, 0, 0, 0, 0, 0, -171, 0, 0, 0, 0, 0, 0, 0, 0, 0, -171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 1081 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -865, 0, 0, 0, 0, 0, 0, 0, 0, 0, -865, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -865, 0, 0, 0, 0, 0, 0, 0, 0, 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 1082 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -480, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -480, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 1083 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -422, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1084 + 0, 0, 0, 0, 0, 0, 0, -864, 0, 0, 0, 0, 0, 0, -864, 0, 0, 0, 0, 0, 0, 0, 0, 0, -864, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -864, 0, 0, 0, -864, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -864, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -864, 0, -864, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 1085 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -866, 0, 0, 0, 0, 0, 0, 0, 0, 0, -866, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -866, 0, 0, 0, 0, 0, 0, 0, 0, 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 1086 + 0, 0, 0, 0, 0, 0, 0, 1116, 0, 0, 0, 0, 0, 0, 1117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1087 + 0, 0, 0, 0, 0, 0, 0, -754, 0, 0, 0, 0, 0, 0, -754, 0, 0, 0, 0, 0, 0, 0, 0, 0, -754, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -754, 0, 0, 0, -754, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -754, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -754, 0, -754, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 1088 + 0, 0, 0, 0, 0, 0, -127, 1118, -127, 0, 0, 0, 0, 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, -127, -127, -127, -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, 0, 0, 0, 0, 0, 0, 0, 0, -127, -127, -127, 0, -127, -127, + // State 1089 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1090 + 0, 0, 0, 0, 0, 0, 0, -762, 0, 0, 0, 0, 0, 0, -762, 0, 0, 0, 0, 0, 0, 0, 0, 0, -762, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -762, 0, 0, 0, -762, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -762, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -762, 0, -762, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 1091 + 0, 0, 0, 0, 0, 0, -127, 0, -127, 0, 0, 0, 0, 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, -127, -127, -127, -127, -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, -127, 0, 0, 0, 0, 0, 0, 0, 0, 0, -127, -127, -127, 0, -127, -127, + // State 1092 + 0, 0, 0, 0, 0, 0, 0, -759, 0, 0, 0, 0, 0, 0, -759, 0, 0, 0, 0, 0, 0, 0, 0, 0, -759, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -759, 0, 0, 0, -759, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -759, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -759, 0, -759, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 1093 + 0, 0, 0, 0, 0, 0, 0, -474, 0, 0, 0, 0, 0, 0, -474, 0, 0, 0, 0, 0, 0, 0, 0, 0, -474, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -474, 0, 0, 0, -474, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -474, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -474, 0, -474, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 1094 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 1095 + -358, 0, 0, 0, 0, 0, -358, 0, -358, 0, 0, 0, -358, 0, 0, -358, 0, 0, 0, -358, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -358, 0, -358, -358, -358, -358, 0, 0, 0, 0, 0, -358, -358, -358, -358, 0, -358, -358, -358, -358, 0, -358, -358, -358, -358, -358, -358, -358, -358, 0, 0, -358, -358, -358, -358, 0, -358, -358, -358, -358, -358, -358, -358, -358, -358, 0, 0, 0, -358, -358, 0, 0, 0, 0, -358, -358, -358, -358, -358, -358, + // State 1096 + 0, 0, 0, 0, 0, 0, -807, 0, -807, 0, 0, 0, -807, 0, 0, -807, 0, 0, 0, -807, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -807, 0, -807, -807, -807, -807, 0, 0, 0, 0, 0, -807, -807, -807, -807, 0, -807, -807, -807, -807, 0, 0, 0, 0, -807, -807, -807, -807, -807, 0, 0, -807, -807, -807, -807, 0, -807, -807, -807, -807, -807, -807, -807, -807, -807, 0, 0, 0, -807, -807, 0, 0, 0, 0, -807, -807, -807, -807, -807, -807, + // State 1097 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -644, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1098 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1129, 0, 0, 0, 0, 0, 0, 0, 0, 0, -668, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1099 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -635, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1100 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -640, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1101 + -396, 0, 0, 0, 0, 0, -396, 0, -396, 0, 0, 0, -396, 0, 0, -396, 0, 0, 0, -396, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -396, 0, -396, -396, -396, -396, 0, 0, 0, 0, 0, -396, -396, -396, -396, 0, -396, -396, -396, -396, 0, 0, 0, 0, -396, -396, -396, -396, -396, 0, 0, -396, -396, -396, -396, 0, -396, -396, -396, -396, -396, -396, -396, -396, -396, 0, 0, 0, -396, -396, 0, 0, 0, 0, -396, -396, -396, -396, -396, -396, + // State 1102 + -390, 0, 0, 0, 0, 0, -390, 0, -390, 0, 0, 0, -390, 0, 0, -390, 0, 0, 0, -390, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -390, 0, -390, -390, -390, -390, 0, 0, 0, 0, 0, -390, -390, -390, -390, 0, -390, -390, -390, -390, 0, 0, 0, 0, -390, -390, -390, -390, -390, 0, 0, -390, -390, -390, -390, 0, -390, -390, -390, -390, -390, -390, -390, -390, -390, 0, 0, 0, -390, -390, 0, 0, 0, 0, -390, -390, -390, -390, -390, -390, + // State 1103 + 0, 0, 0, 0, 0, 0, 0, -564, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1104 + 0, 0, 0, 0, 0, 0, 0, -588, 0, 0, 0, 0, 0, 0, 1130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1105 + 0, 0, 0, 0, 0, 0, 0, -555, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1106 + 0, 0, 0, 0, 0, 0, 0, -611, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1107 + 0, 0, 0, 0, 0, 0, 0, -605, 0, 0, 0, 0, 0, 0, 387, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1108 + 0, 0, 0, 0, 0, 0, 0, -601, 0, 0, 0, 0, 0, 0, 389, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1109 + 0, 0, 0, 0, 0, 0, 0, -586, 0, 0, 0, 0, 0, 0, 1135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1110 + 0, 0, 0, 0, 0, 0, 0, -277, 0, 0, 0, 0, 0, 0, -277, 0, 0, 0, 0, 0, 0, 0, 0, 0, -277, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -277, 0, 0, 0, -277, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -277, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -277, 0, -277, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 1111 + 0, 0, 0, 0, 0, 0, 0, -275, 0, 0, 0, 0, 0, 0, -275, 0, 0, 0, 0, 0, 0, 0, 0, 0, -275, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -275, 0, 0, 0, -275, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -275, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -275, 0, -275, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 1112 + 0, 0, 0, 0, 0, 0, 0, -284, 0, 0, 0, 0, 0, 0, -284, 0, 0, 0, 0, 0, 0, 0, 0, 0, -284, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -284, 0, 0, 0, -284, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -284, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -284, 0, -284, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 1113 + 0, 0, 0, 0, 0, 0, 0, -282, 0, 0, 0, 0, 0, 0, -282, 0, 0, 0, 0, 0, 0, 0, 0, 0, -282, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -282, 0, 0, 0, -282, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -282, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -282, 0, -282, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 1114 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -479, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -479, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 1115 + 0, 0, 0, 0, 0, 0, 0, -758, 0, 0, 0, 0, 0, 0, -758, 0, 0, 0, 0, 0, 0, 0, 0, 0, -758, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -758, 0, 0, 0, -758, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -758, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -758, 0, -758, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 1116 + 0, 0, 0, 0, 0, 0, -128, 1146, -128, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, -128, -128, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, -128, -128, -128, 0, -128, -128, + // State 1117 + 0, 0, 0, 0, 0, 0, 0, -756, 0, 0, 0, 0, 0, 0, -756, 0, 0, 0, 0, 0, 0, 0, 0, 0, -756, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -756, 0, 0, 0, -756, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -756, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -756, 0, -756, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 1118 + 0, 0, 0, 0, 0, 0, -128, 0, -128, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, -128, -128, -128, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, -128, -128, -128, 0, -128, -128, + // State 1119 + 0, 0, 0, 0, 0, 0, 0, -761, 0, 0, 0, 0, 0, 0, -761, 0, 0, 0, 0, 0, 0, 0, 0, 0, -761, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -761, 0, 0, 0, -761, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -761, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -761, 0, -761, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 1120 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -484, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -484, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 1121 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -524, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -524, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 1122 + 0, 0, 0, 0, 0, 0, 0, -473, 0, 0, 0, 0, 0, 0, -473, 0, 0, 0, 0, 0, 0, 0, 0, 0, -473, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -473, 0, 0, 0, -473, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -473, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -473, 0, -473, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 1123 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 1124 + 0, 0, 0, 0, 0, 0, 0, -476, 0, 0, 0, 0, 0, 0, -476, 0, 0, 0, 0, 0, 0, 0, 0, 0, -476, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -476, 0, 0, 0, -476, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -476, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -476, 0, -476, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 1125 + -854, 0, 0, 0, 0, 0, -854, 0, -854, 0, 0, 0, -854, 0, 0, -854, 0, 0, 0, -854, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -854, 0, -854, -854, -854, -854, 0, 0, 0, 0, 0, -854, -854, -854, -854, 0, -854, -854, -854, -854, 0, 0, 0, 0, -854, -854, -854, -854, -854, 0, 0, -854, -854, -854, -854, 0, -854, -854, -854, -854, -854, -854, -854, -854, -854, 0, 0, 0, -854, -854, 0, 0, 0, 0, -854, -854, -854, -854, -854, -854, + // State 1126 + -858, 0, 0, 0, 0, 0, -858, 0, -858, 0, 0, 0, -858, 0, 0, -858, 0, 0, 0, -858, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -858, 0, -858, -858, -858, -858, 0, 0, 0, 0, 0, -858, -858, -858, -858, 0, -858, -858, -858, -858, 0, 0, 0, 0, -858, -858, -858, -858, -858, 0, 0, -858, -858, -858, -858, 0, -858, -858, -858, -858, -858, -858, -858, -858, -858, 0, 0, 0, -858, -858, 0, 0, 0, 0, -858, -858, -858, -858, -858, -858, + // State 1127 + -362, 0, 0, 0, 0, 0, -362, 0, -362, 0, 0, 0, -362, 0, 0, -362, 0, 0, 0, -362, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -362, 0, -362, -362, -362, -362, 0, 0, 0, 0, 0, -362, -362, -362, -362, 0, -362, -362, -362, -362, 0, -362, -362, -362, -362, -362, -362, -362, -362, 0, 0, -362, -362, -362, -362, 0, -362, -362, -362, -362, -362, -362, -362, -362, -362, 0, 0, 0, -362, -362, 0, 0, 0, 0, -362, -362, -362, -362, -362, -362, + // State 1128 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -641, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1129 + 0, 0, 0, 0, 0, 0, 0, -561, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1130 + 0, 0, 0, 0, 0, 0, 0, -602, 0, 0, 0, 0, 0, 0, 390, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1131 + 0, 0, 0, 0, 0, 0, 0, -587, 0, 0, 0, 0, 0, 0, 1151, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1132 + 0, 0, 0, 0, 0, 0, 0, -592, 0, 0, 0, 0, 0, 0, 1152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1133 + 0, 0, 0, 0, 0, 0, 0, -583, 0, 0, 0, 0, 0, 0, 1154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1134 + 0, 0, 0, 0, 0, 0, 0, -559, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1135 + 0, 0, 0, 0, 0, 0, 0, -483, 0, 0, 0, 0, 0, 0, -483, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1136 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 381, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1137 + 0, 0, 0, 0, 0, 0, 0, -522, 0, 0, 0, 0, 0, 0, -522, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1138 + 0, 0, 0, 0, 0, 0, 0, -276, 0, 0, 0, 0, 0, 0, -276, 0, 0, 0, 0, 0, 0, 0, 0, 0, -276, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -276, 0, 0, 0, -276, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -276, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -276, 0, -276, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 1139 + 0, 0, 0, 0, 0, 0, 0, 1155, 0, 0, 0, 0, 0, 0, 391, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1140 + 0, 0, 0, 0, 0, 0, 0, -530, 0, 0, 0, 0, 0, 0, -530, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1141 + 0, 0, 0, 0, 0, 0, 0, -274, 0, 0, 0, 0, 0, 0, -274, 0, 0, 0, 0, 0, 0, 0, 0, 0, -274, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -274, 0, 0, 0, -274, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -274, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -274, 0, -274, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 1142 + 0, 0, 0, 0, 0, 0, 0, -283, 0, 0, 0, 0, 0, 0, -283, 0, 0, 0, 0, 0, 0, 0, 0, 0, -283, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -283, 0, 0, 0, -283, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -283, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -283, 0, -283, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 1143 + 0, 0, 0, 0, 0, 0, 0, 1156, 0, 0, 0, 0, 0, 0, 392, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1144 + 0, 0, 0, 0, 0, 0, 0, -281, 0, 0, 0, 0, 0, 0, -281, 0, 0, 0, 0, 0, 0, 0, 0, 0, -281, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -281, 0, 0, 0, -281, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -281, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -281, 0, -281, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 1145 + 0, 0, 0, 0, 0, 0, 0, -757, 0, 0, 0, 0, 0, 0, -757, 0, 0, 0, 0, 0, 0, 0, 0, 0, -757, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -757, 0, 0, 0, -757, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -757, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -757, 0, -757, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 1146 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 1147 + 0, 0, 0, 0, 0, 0, 0, -475, 0, 0, 0, 0, 0, 0, -475, 0, 0, 0, 0, 0, 0, 0, 0, 0, -475, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -475, 0, 0, 0, -475, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -475, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -475, 0, -475, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 1148 + 0, 0, 0, 0, 0, 0, 0, -593, 0, 0, 0, 0, 0, 0, 1159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1149 + 0, 0, 0, 0, 0, 0, 0, -584, 0, 0, 0, 0, 0, 0, 1161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1150 + 0, 0, 0, 0, 0, 0, 0, -560, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1151 + 0, 0, 0, 0, 0, 0, 0, -565, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1152 + 0, 0, 0, 0, 0, 0, 0, -589, 0, 0, 0, 0, 0, 0, 1162, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1153 + 0, 0, 0, 0, 0, 0, 0, -556, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1154 + 0, 0, 0, 0, 0, 0, 0, -273, 0, 0, 0, 0, 0, 0, -273, 0, 0, 0, 0, 0, 0, 0, 0, 0, -273, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -273, 0, 0, 0, -273, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -273, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -273, 0, -273, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 1155 + 0, 0, 0, 0, 0, 0, 0, -280, 0, 0, 0, 0, 0, 0, -280, 0, 0, 0, 0, 0, 0, 0, 0, 0, -280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -280, 0, 0, 0, -280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -280, 0, -280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 1156 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 1157 + 0, 0, 0, 0, 0, 0, 0, -478, 0, 0, 0, 0, 0, 0, -478, 0, 0, 0, 0, 0, 0, 0, 0, 0, -478, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -478, 0, 0, 0, -478, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -478, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -478, 0, -478, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 1158 + 0, 0, 0, 0, 0, 0, 0, -566, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1159 + 0, 0, 0, 0, 0, 0, 0, -590, 0, 0, 0, 0, 0, 0, 1166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1160 + 0, 0, 0, 0, 0, 0, 0, -557, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1161 + 0, 0, 0, 0, 0, 0, 0, -562, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 1162 + 0, 0, 0, 0, 0, 0, 0, -272, 0, 0, 0, 0, 0, 0, -272, 0, 0, 0, 0, 0, 0, 0, 0, 0, -272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -272, 0, 0, 0, -272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -272, 0, -272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 1163 + 0, 0, 0, 0, 0, 0, 0, -279, 0, 0, 0, 0, 0, 0, -279, 0, 0, 0, 0, 0, 0, 0, 0, 0, -279, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -279, 0, 0, 0, -279, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -279, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -279, 0, -279, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 1164 + 0, 0, 0, 0, 0, 0, 0, -477, 0, 0, 0, 0, 0, 0, -477, 0, 0, 0, 0, 0, 0, 0, 0, 0, -477, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -477, 0, 0, 0, -477, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -477, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -477, 0, -477, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 1165 + 0, 0, 0, 0, 0, 0, 0, -563, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + ]; + fn __action(state: i16, integer: usize) -> i16 { + __ACTION[(state as usize) * 97 + integer] + } + const __EOF_ACTION: &[i16] = &[ + // State 0 + 0, + // State 1 + 0, + // State 2 + -744, + // State 3 + -744, + // State 4 + 0, + // State 5 + 0, + // State 6 + -766, + // State 7 + -315, + // State 8 + -852, + // State 9 + -156, + // State 10 + -168, + // State 11 + 0, + // State 12 + 0, + // State 13 + 0, + // State 14 + 0, + // State 15 + 0, + // State 16 + 0, + // State 17 + 0, + // State 18 + 0, + // State 19 + -851, + // State 20 + -850, + // State 21 + 0, + // State 22 + 0, + // State 23 + 0, + // State 24 + 0, + // State 25 + 0, + // State 26 + 0, + // State 27 + -314, + // State 28 + 0, + // State 29 + 0, + // State 30 + -419, + // 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 + 0, + // State 57 + 0, + // State 58 + 0, + // State 59 + 0, + // State 60 + 0, + // State 61 + 0, + // State 62 + 0, + // State 63 + 0, + // State 64 + 0, + // State 65 + 0, + // State 66 + -155, + // State 67 + -167, + // State 68 + 0, + // State 69 + 0, + // State 70 + 0, + // State 71 + 0, + // State 72 + 0, + // State 73 + 0, + // State 74 + -765, + // State 75 + 0, + // State 76 + 0, + // State 77 + 0, + // State 78 + 0, + // State 79 + 0, + // State 80 + 0, + // State 81 + 0, + // State 82 + 0, + // 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 + 0, + // 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 + 0, + // State 112 + 0, + // State 113 + 0, + // State 114 + 0, + // State 115 + 0, + // 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 + 0, + // State 131 + 0, + // State 132 + 0, + // State 133 + 0, + // State 134 + 0, + // State 135 + 0, + // State 136 + 0, + // State 137 + 0, + // State 138 + 0, + // State 139 + 0, + // State 140 + 0, + // State 141 + 0, + // 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 + 0, + // State 151 + 0, + // State 152 + 0, + // State 153 + 0, + // State 154 + 0, + // State 155 + 0, + // State 156 + 0, + // State 157 + 0, + // State 158 + 0, + // State 159 + 0, + // State 160 + 0, + // State 161 + 0, + // State 162 + 0, + // 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 + 0, + // State 178 + 0, + // State 179 + 0, + // State 180 + 0, + // State 181 + 0, + // State 182 + 0, + // State 183 + 0, + // State 184 + 0, + // State 185 + 0, + // State 186 + 0, + // State 187 + 0, + // State 188 + 0, + // State 189 + 0, + // State 190 + 0, + // State 191 + 0, + // State 192 + 0, + // State 193 + 0, + // State 194 + 0, + // State 195 + 0, + // State 196 + 0, + // State 197 + 0, + // State 198 + 0, + // State 199 + 0, + // State 200 + 0, + // State 201 + 0, + // State 202 + 0, + // State 203 + 0, + // State 204 + 0, + // State 205 + -425, + // State 206 + -857, + // State 207 + -861, + // State 208 + 0, + // State 209 + 0, + // State 210 + 0, + // State 211 + 0, + // State 212 + 0, + // State 213 + 0, + // State 214 + 0, + // State 215 + 0, + // State 216 + 0, + // State 217 + 0, + // State 218 + 0, + // State 219 + 0, + // State 220 + 0, + // State 221 + 0, + // State 222 + 0, + // State 223 + 0, + // State 224 + 0, + // State 225 + 0, + // State 226 + 0, + // State 227 + 0, + // State 228 + 0, + // State 229 + 0, + // State 230 + 0, + // State 231 + 0, + // State 232 + 0, + // State 233 + 0, + // State 234 + 0, + // State 235 + 0, + // State 236 + 0, + // State 237 + 0, + // State 238 + 0, + // State 239 + 0, + // State 240 + 0, + // State 241 + 0, + // State 242 + 0, + // State 243 + 0, + // State 244 + 0, + // State 245 + 0, + // State 246 + 0, + // State 247 + 0, + // State 248 + 0, + // State 249 + 0, + // State 250 + 0, + // State 251 + 0, + // State 252 + 0, + // State 253 + 0, + // State 254 + 0, + // State 255 + 0, + // State 256 + 0, + // State 257 + 0, + // State 258 + 0, + // State 259 + 0, + // State 260 + 0, + // State 261 + 0, + // State 262 + 0, + // State 263 + 0, + // State 264 + 0, + // State 265 + 0, + // State 266 + 0, + // State 267 + 0, + // State 268 + 0, + // State 269 + 0, + // State 270 + 0, + // State 271 + 0, + // State 272 + 0, + // State 273 + 0, + // State 274 + 0, + // State 275 + 0, + // State 276 + 0, + // State 277 + 0, + // State 278 + 0, + // State 279 + 0, + // State 280 + 0, + // State 281 + 0, + // State 282 + 0, + // State 283 + 0, + // State 284 + 0, + // State 285 + 0, + // State 286 + 0, + // State 287 + 0, + // State 288 + 0, + // State 289 + 0, + // State 290 + 0, + // State 291 + 0, + // State 292 + 0, + // State 293 + 0, + // State 294 + 0, + // State 295 + 0, + // State 296 + 0, + // State 297 + 0, + // State 298 + 0, + // State 299 + 0, + // State 300 + 0, + // State 301 + 0, + // State 302 + 0, + // State 303 + 0, + // State 304 + 0, + // State 305 + 0, + // State 306 + 0, + // State 307 + 0, + // State 308 + 0, + // State 309 + 0, + // State 310 + 0, + // State 311 + 0, + // State 312 + 0, + // State 313 + 0, + // State 314 + 0, + // State 315 + 0, + // State 316 + 0, + // State 317 + 0, + // State 318 + 0, + // State 319 + 0, + // State 320 + 0, + // State 321 + 0, + // State 322 + 0, + // State 323 + 0, + // State 324 + 0, + // State 325 + 0, + // State 326 + 0, + // State 327 + 0, + // State 328 + 0, + // State 329 + 0, + // State 330 + 0, + // State 331 + 0, + // State 332 + 0, + // State 333 + 0, + // State 334 + 0, + // State 335 + 0, + // State 336 + 0, + // State 337 + 0, + // State 338 + 0, + // State 339 + 0, + // State 340 + 0, + // State 341 + 0, + // State 342 + 0, + // State 343 + 0, + // State 344 + 0, + // State 345 + 0, + // State 346 + 0, + // State 347 + 0, + // State 348 + 0, + // State 349 + 0, + // State 350 + 0, + // State 351 + 0, + // State 352 + 0, + // State 353 + 0, + // State 354 + 0, + // State 355 + 0, + // State 356 + 0, + // State 357 + 0, + // State 358 + 0, + // State 359 + 0, + // State 360 + 0, + // State 361 + 0, + // State 362 + 0, + // State 363 + 0, + // State 364 + 0, + // State 365 + 0, + // State 366 + 0, + // State 367 + 0, + // State 368 + 0, + // State 369 + 0, + // State 370 + 0, + // State 371 + 0, + // State 372 + 0, + // State 373 + 0, + // State 374 + 0, + // State 375 + 0, + // State 376 + 0, + // State 377 + 0, + // State 378 + 0, + // State 379 + 0, + // State 380 + 0, + // State 381 + 0, + // State 382 + 0, + // State 383 + 0, + // State 384 + 0, + // State 385 + 0, + // State 386 + 0, + // State 387 + 0, + // State 388 + 0, + // State 389 + 0, + // State 390 + 0, + // State 391 + 0, + // State 392 + -918, + // State 393 + -182, + // State 394 + -912, + // State 395 + -542, + // State 396 + -238, + // State 397 + -247, + // State 398 + -741, + // State 399 + -504, + // State 400 + -183, + // State 401 + -829, + // State 402 + -184, + // State 403 + -834, + // State 404 + -160, + // State 405 + -420, + // State 406 + -833, + // State 407 + -381, + // State 408 + -846, + // State 409 + -845, + // State 410 + -533, + // State 411 + -366, + // State 412 + 0, + // State 413 + 0, + // State 414 + -210, + // State 415 + -208, + // State 416 + -209, + // State 417 + -207, + // State 418 + 0, + // State 419 + -333, + // State 420 + -332, + // State 421 + -331, + // State 422 + -423, + // State 423 + -139, + // State 424 + -541, + // State 425 + -159, + // State 426 + -140, + // State 427 + 0, + // State 428 + 0, + // State 429 + 0, + // State 430 + 0, + // State 431 + 0, + // State 432 + 0, + // State 433 + 0, + // State 434 + 0, + // State 435 + 0, + // State 436 + 0, + // State 437 + 0, + // State 438 + 0, + // State 439 + -853, + // State 440 + -88, + // State 441 + 0, + // State 442 + 0, + // State 443 + 0, + // State 444 + 0, + // State 445 + 0, + // State 446 + 0, + // State 447 + 0, + // State 448 + 0, + // State 449 + -380, + // State 450 + 0, + // State 451 + 0, + // State 452 + 0, + // State 453 + 0, + // State 454 + 0, + // State 455 + 0, + // State 456 + -198, + // State 457 + -791, + // State 458 + 0, + // State 459 + 0, + // State 460 + 0, + // State 461 + 0, + // State 462 + 0, + // State 463 + 0, + // State 464 + -186, + // State 465 + -246, + // State 466 + 0, + // State 467 + 0, + // State 468 + 0, + // State 469 + 0, + // State 470 + 0, + // State 471 + 0, + // State 472 + -503, + // State 473 + 0, + // State 474 + 0, + // State 475 + 0, + // State 476 + 0, + // State 477 + 0, + // State 478 + 0, + // State 479 + 0, + // State 480 + -203, + // State 481 + 0, + // State 482 + -325, + // State 483 + -745, + // State 484 + 0, + // State 485 + 0, + // State 486 + 0, + // State 487 + 0, + // State 488 + -321, + // State 489 + -324, + // State 490 + 0, + // State 491 + -319, + // State 492 + 0, + // State 493 + 0, + // State 494 + -318, + // State 495 + 0, + // State 496 + 0, + // State 497 + 0, + // State 498 + 0, + // State 499 + 0, + // State 500 + -322, + // State 501 + 0, + // State 502 + -320, + // State 503 + -323, + // State 504 + 0, + // State 505 + -750, + // State 506 + 0, + // State 507 + 0, + // State 508 + 0, + // State 509 + 0, + // State 510 + 0, + // State 511 + 0, + // State 512 + 0, + // State 513 + 0, + // State 514 + 0, + // State 515 + 0, + // State 516 + 0, + // State 517 + -241, + // State 518 + 0, + // State 519 + 0, + // State 520 + 0, + // State 521 + 0, + // State 522 + 0, + // State 523 + -740, + // State 524 + -142, + // State 525 + 0, + // State 526 + 0, + // State 527 + -365, + // State 528 + -89, + // State 529 + -534, + // State 530 + 0, + // State 531 + -828, + // State 532 + -911, + // State 533 + 0, + // State 534 + 0, + // State 535 + 0, + // State 536 + 0, + // State 537 + -195, + // State 538 + -189, + // State 539 + -199, + // State 540 + 0, + // State 541 + 0, + // State 542 + -185, + // State 543 + 0, + // State 544 + 0, + // State 545 + 0, + // State 546 + 0, + // State 547 + 0, + // State 548 + -452, + // State 549 + 0, + // State 550 + -202, + // State 551 + 0, + // State 552 + -205, + // State 553 + 0, + // State 554 + 0, + // State 555 + 0, + // State 556 + 0, + // State 557 + 0, + // State 558 + 0, + // State 559 + 0, + // State 560 + 0, + // State 561 + 0, + // State 562 + 0, + // State 563 + 0, + // State 564 + 0, + // State 565 + 0, + // State 566 + 0, + // State 567 + 0, + // State 568 + 0, + // State 569 + 0, + // State 570 + 0, + // State 571 + -748, + // State 572 + 0, + // State 573 + 0, + // State 574 + 0, + // State 575 + 0, + // State 576 + 0, + // State 577 + 0, + // State 578 + 0, + // State 579 + 0, + // State 580 + 0, + // State 581 + 0, + // State 582 + 0, + // State 583 + 0, + // State 584 + 0, + // State 585 + 0, + // State 586 + 0, + // State 587 + 0, + // State 588 + 0, + // State 589 + 0, + // State 590 + 0, + // State 591 + 0, + // State 592 + 0, + // State 593 + 0, + // State 594 + 0, + // State 595 + 0, + // State 596 + 0, + // State 597 + 0, + // State 598 + 0, + // State 599 + 0, + // State 600 + 0, + // State 601 + 0, + // State 602 + 0, + // State 603 + 0, + // State 604 + 0, + // State 605 + 0, + // State 606 + 0, + // State 607 + 0, + // State 608 + 0, + // State 609 + 0, + // State 610 + 0, + // State 611 + 0, + // State 612 + 0, + // State 613 + 0, + // State 614 + 0, + // State 615 + 0, + // State 616 + 0, + // State 617 + 0, + // State 618 + 0, + // State 619 + 0, + // State 620 + 0, + // State 621 + 0, + // State 622 + 0, + // State 623 + 0, + // State 624 + 0, + // State 625 + 0, + // State 626 + 0, + // State 627 + 0, + // State 628 + 0, + // State 629 + 0, + // State 630 + 0, + // State 631 + 0, + // State 632 + 0, + // State 633 + -239, + // State 634 + 0, + // State 635 + 0, + // State 636 + 0, + // State 637 + 0, + // State 638 + -240, + // State 639 + 0, + // State 640 + -143, + // State 641 + 0, + // State 642 + -200, + // State 643 + 0, + // State 644 + 0, + // State 645 + -197, + // State 646 + 0, + // State 647 + -191, + // State 648 + 0, + // State 649 + 0, + // State 650 + -188, + // State 651 + -201, + // State 652 + 0, + // State 653 + 0, + // State 654 + -187, + // State 655 + 0, + // State 656 + 0, + // State 657 + -451, + // State 658 + 0, + // State 659 + 0, + // State 660 + 0, + // State 661 + 0, + // State 662 + -204, + // State 663 + -206, + // State 664 + 0, + // State 665 + 0, + // State 666 + 0, + // State 667 + 0, + // State 668 + -749, + // State 669 + 0, + // State 670 + 0, + // State 671 + 0, + // State 672 + 0, + // State 673 + 0, + // State 674 + 0, + // State 675 + 0, + // State 676 + 0, + // State 677 + -746, + // State 678 + 0, + // State 679 + 0, + // State 680 + 0, + // State 681 + 0, + // State 682 + 0, + // State 683 + 0, + // State 684 + 0, + // State 685 + 0, + // State 686 + 0, + // State 687 + 0, + // State 688 + 0, + // State 689 + 0, + // State 690 + 0, + // State 691 + 0, + // State 692 + 0, + // State 693 + 0, + // State 694 + 0, + // State 695 + 0, + // State 696 + 0, + // State 697 + 0, + // State 698 + 0, + // State 699 + 0, + // State 700 + 0, + // State 701 + 0, + // State 702 + 0, + // State 703 + 0, + // State 704 + 0, + // State 705 + 0, + // State 706 + 0, + // State 707 + 0, + // State 708 + 0, + // State 709 + 0, + // State 710 + 0, + // State 711 + 0, + // State 712 + 0, + // State 713 + -832, + // State 714 + 0, + // State 715 + 0, + // State 716 + -193, + // State 717 + 0, + // State 718 + -194, + // State 719 + 0, + // State 720 + 0, + // State 721 + 0, + // State 722 + 0, + // State 723 + 0, + // State 724 + 0, + // State 725 + 0, + // State 726 + -747, + // State 727 + 0, + // State 728 + 0, + // State 729 + 0, + // State 730 + 0, + // State 731 + 0, + // State 732 + 0, + // State 733 + -269, + // State 734 + 0, + // State 735 + 0, + // State 736 + 0, + // State 737 + 0, + // State 738 + 0, + // State 739 + 0, + // State 740 + 0, + // State 741 + 0, + // State 742 + 0, + // State 743 + 0, + // State 744 + 0, + // State 745 + 0, + // State 746 + 0, + // State 747 + 0, + // State 748 + 0, + // State 749 + 0, + // State 750 + 0, + // State 751 + 0, + // State 752 + 0, + // State 753 + 0, + // State 754 + 0, + // State 755 + 0, + // State 756 + 0, + // State 757 + 0, + // State 758 + 0, + // State 759 + 0, + // State 760 + 0, + // State 761 + 0, + // State 762 + 0, + // State 763 + -825, + // State 764 + 0, + // State 765 + -359, + // State 766 + -363, + // State 767 + 0, + // State 768 + 0, + // State 769 + -890, + // State 770 + 0, + // State 771 + 0, + // State 772 + 0, + // State 773 + 0, + // State 774 + 0, + // State 775 + 0, + // State 776 + 0, + // State 777 + 0, + // State 778 + 0, + // State 779 + 0, + // State 780 + -910, + // State 781 + 0, + // State 782 + 0, + // State 783 + 0, + // State 784 + 0, + // State 785 + 0, + // State 786 + 0, + // State 787 + 0, + // State 788 + 0, + // State 789 + 0, + // State 790 + 0, + // State 791 + 0, + // State 792 + 0, + // State 793 + 0, + // State 794 + 0, + // State 795 + 0, + // State 796 + 0, + // State 797 + -196, + // State 798 + -190, + // State 799 + 0, + // State 800 + 0, + // State 801 + 0, + // State 802 + 0, + // State 803 + 0, + // State 804 + 0, + // State 805 + 0, + // State 806 + 0, + // State 807 + -271, + // State 808 + 0, + // State 809 + 0, + // State 810 + 0, + // State 811 + -909, + // State 812 + 0, + // State 813 + -268, + // State 814 + 0, + // State 815 + 0, + // State 816 + 0, + // State 817 + 0, + // State 818 + 0, + // State 819 + -407, + // State 820 + 0, + // State 821 + 0, + // State 822 + 0, + // State 823 + 0, + // State 824 + 0, + // State 825 + 0, + // State 826 + 0, + // State 827 + 0, + // State 828 + -427, + // State 829 + 0, + // State 830 + 0, + // State 831 + 0, + // State 832 + -826, + // State 833 + 0, + // State 834 + -823, + // State 835 + -360, + // State 836 + 0, + // State 837 + 0, + // State 838 + -364, + // State 839 + 0, + // State 840 + 0, + // State 841 + 0, + // State 842 + 0, + // State 843 + 0, + // State 844 + 0, + // State 845 + 0, + // State 846 + 0, + // State 847 + 0, + // State 848 + 0, + // State 849 + 0, + // State 850 + 0, + // State 851 + 0, + // State 852 + 0, + // State 853 + 0, + // State 854 + 0, + // State 855 + 0, + // State 856 + 0, + // State 857 + 0, + // State 858 + 0, + // State 859 + 0, + // State 860 + 0, + // State 861 + 0, + // State 862 + 0, + // State 863 + -192, + // State 864 + 0, + // State 865 + 0, + // State 866 + 0, + // State 867 + 0, + // State 868 + 0, + // State 869 + 0, + // State 870 + 0, + // State 871 + 0, + // State 872 + 0, + // State 873 + -270, + // State 874 + 0, + // State 875 + 0, + // State 876 + -409, + // State 877 + 0, + // State 878 + -399, + // State 879 + 0, + // State 880 + 0, + // State 881 + 0, + // State 882 + 0, + // State 883 + 0, + // State 884 + -406, + // State 885 + 0, + // State 886 + 0, + // State 887 + 0, + // State 888 + 0, + // State 889 + 0, + // State 890 + 0, + // State 891 + 0, + // State 892 + -393, + // State 893 + 0, + // State 894 + 0, + // State 895 + 0, + // State 896 + 0, + // State 897 + 0, + // State 898 + 0, + // State 899 + 0, + // State 900 + -824, + // State 901 + 0, + // State 902 + -357, + // State 903 + -862, + // State 904 + 0, + // State 905 + 0, + // State 906 + 0, + // State 907 + 0, + // State 908 + 0, + // State 909 + -827, + // State 910 + 0, + // State 911 + 0, + // State 912 + 0, + // State 913 + 0, + // State 914 + 0, + // State 915 + 0, + // State 916 + 0, + // State 917 + 0, + // State 918 + 0, + // State 919 + 0, + // State 920 + 0, + // State 921 + 0, + // State 922 + 0, + // State 923 + 0, + // State 924 + 0, + // State 925 + 0, + // State 926 + 0, + // State 927 + 0, + // State 928 + 0, + // State 929 + -401, + // State 930 + 0, + // State 931 + 0, + // State 932 + -408, + // State 933 + 0, + // State 934 + -398, + // State 935 + -391, + // State 936 + -265, + // State 937 + -403, + // State 938 + 0, + // State 939 + 0, + // State 940 + 0, + // State 941 + 0, + // State 942 + 0, + // State 943 + 0, + // State 944 + 0, + // State 945 + 0, + // State 946 + 0, + // State 947 + 0, + // State 948 + 0, + // State 949 + 0, + // State 950 + -424, + // State 951 + 0, + // State 952 + -488, + // State 953 + 0, + // State 954 + 0, + // State 955 + 0, + // State 956 + 0, + // State 957 + 0, + // State 958 + 0, + // State 959 + 0, + // State 960 + 0, + // State 961 + 0, + // State 962 + 0, + // State 963 + 0, + // State 964 + 0, + // State 965 + 0, + // State 966 + 0, + // State 967 + 0, + // State 968 + 0, + // State 969 + 0, + // State 970 + 0, + // State 971 + 0, + // State 972 + 0, + // State 973 + 0, + // State 974 + 0, + // State 975 + 0, + // State 976 + -491, + // State 977 + -855, + // State 978 + -856, + // State 979 + -859, + // State 980 + -860, + // State 981 + -356, + // State 982 + 0, + // State 983 + 0, + // State 984 + 0, + // State 985 + 0, + // State 986 + 0, + // State 987 + 0, + // State 988 + 0, + // State 989 + -889, + // State 990 + 0, + // State 991 + 0, + // State 992 + 0, + // State 993 + 0, + // State 994 + 0, + // State 995 + 0, + // State 996 + 0, + // State 997 + 0, + // State 998 + 0, + // State 999 + 0, + // State 1000 + 0, + // State 1001 + -400, + // State 1002 + -267, + // State 1003 + -405, + // State 1004 + -395, + // State 1005 + 0, + // State 1006 + -264, + // State 1007 + -402, + // State 1008 + 0, + // State 1009 + 0, + // State 1010 + 0, + // State 1011 + 0, + // State 1012 + 0, + // State 1013 + 0, + // State 1014 + 0, + // State 1015 + -426, + // State 1016 + -105, + // State 1017 + -489, + // State 1018 + 0, + // State 1019 + 0, + // State 1020 + 0, + // State 1021 + 0, + // State 1022 + 0, + // State 1023 + 0, + // State 1024 + 0, + // State 1025 + 0, + // State 1026 + 0, + // State 1027 + 0, + // State 1028 + 0, + // State 1029 + 0, + // State 1030 + 0, + // State 1031 + 0, + // State 1032 + 0, + // State 1033 + 0, + // State 1034 + 0, + // State 1035 + 0, + // State 1036 + 0, + // State 1037 + -490, + // State 1038 + 0, + // State 1039 + 0, + // State 1040 + -361, + // State 1041 + 0, + // State 1042 + 0, + // State 1043 + 0, + // State 1044 + 0, + // State 1045 + 0, + // State 1046 + 0, + // State 1047 + 0, + // State 1048 + 0, + // State 1049 + 0, + // State 1050 + 0, + // State 1051 + 0, + // State 1052 + 0, + // State 1053 + 0, + // State 1054 + -397, + // State 1055 + -266, + // State 1056 + -404, + // State 1057 + -394, + // State 1058 + 0, + // State 1059 + 0, + // State 1060 + 0, + // State 1061 + 0, + // State 1062 + 0, + // State 1063 + 0, + // State 1064 + 0, + // State 1065 + -392, + // State 1066 + -106, + // State 1067 + 0, + // State 1068 + 0, + // State 1069 + 0, + // State 1070 + 0, + // State 1071 + 0, + // State 1072 + 0, + // State 1073 + 0, + // State 1074 + 0, + // State 1075 + 0, + // State 1076 + 0, + // State 1077 + 0, + // State 1078 + 0, + // State 1079 + 0, + // State 1080 + 0, + // State 1081 + 0, + // State 1082 + 0, + // State 1083 + 0, + // State 1084 + 0, + // State 1085 + 0, + // State 1086 + 0, + // State 1087 + 0, + // State 1088 + 0, + // State 1089 + 0, + // State 1090 + 0, + // State 1091 + 0, + // State 1092 + 0, + // State 1093 + 0, + // State 1094 + 0, + // State 1095 + -358, + // State 1096 + 0, + // State 1097 + 0, + // State 1098 + 0, + // State 1099 + 0, + // State 1100 + 0, + // State 1101 + -396, + // State 1102 + -390, + // State 1103 + 0, + // State 1104 + 0, + // State 1105 + 0, + // State 1106 + 0, + // State 1107 + 0, + // State 1108 + 0, + // State 1109 + 0, + // State 1110 + 0, + // State 1111 + 0, + // State 1112 + 0, + // State 1113 + 0, + // State 1114 + 0, + // State 1115 + 0, + // State 1116 + 0, + // State 1117 + 0, + // State 1118 + 0, + // State 1119 + 0, + // State 1120 + 0, + // State 1121 + 0, + // State 1122 + 0, + // State 1123 + 0, + // State 1124 + 0, + // State 1125 + -854, + // State 1126 + -858, + // State 1127 + -362, + // State 1128 + 0, + // State 1129 + 0, + // State 1130 + 0, + // State 1131 + 0, + // State 1132 + 0, + // State 1133 + 0, + // State 1134 + 0, + // State 1135 + 0, + // State 1136 + 0, + // State 1137 + 0, + // State 1138 + 0, + // State 1139 + 0, + // State 1140 + 0, + // State 1141 + 0, + // State 1142 + 0, + // State 1143 + 0, + // State 1144 + 0, + // State 1145 + 0, + // State 1146 + 0, + // State 1147 + 0, + // State 1148 + 0, + // State 1149 + 0, + // State 1150 + 0, + // State 1151 + 0, + // State 1152 + 0, + // State 1153 + 0, + // State 1154 + 0, + // State 1155 + 0, + // State 1156 + 0, + // State 1157 + 0, + // State 1158 + 0, + // State 1159 + 0, + // State 1160 + 0, + // State 1161 + 0, + // State 1162 + 0, + // State 1163 + 0, + // State 1164 + 0, + // State 1165 + 0, + ]; + fn __goto(state: i16, nt: usize) -> i16 { + match nt { + 11 => match state { + 240 => 889, + 277 => 939, + 278 => 940, + 313 => 1008, + 343 => 1063, + 367 => 1107, + 368 => 1108, + 376 => 1130, + _ => 822, + }, + 14 => match state { + 85 => 659, + 128 => 720, + 129 => 721, + 184 => 799, + 225 => 869, + 265 => 925, + 266 => 926, + 302 => 995, + _ => 545, + }, + 23 => match state { + 127 => 717, + 175 => 783, + 258 => 913, + _ => 536, + }, + 26 => match state { + 176 => 786, + 259 => 915, + _ => 694, + }, + 30 => 685, + 37 => 439, + 48 => 828, + 52 => match state { + 65 | 98 => 105, + _ => 4, + }, + 55 => 68, + 57 => match state { + 65 | 98 => 106, + _ => 5, + }, + 62 => match state { + 326 => 359, + _ => 358, + }, + 65 => match state { + 19..=20 => 46, + 209 => 253, + 254 => 297, + _ => 155, + }, + 70 => match state { + 65 | 98 => 600, + 288 | 323 | 326 | 346 | 348 | 350 | 353 | 356..=359 | 371 | 380 | 382 | 384 => 953, + 327 | 372 => 1025, + _ => 393, + }, + 72 => match state { + 108 => 165, + _ => 27, + }, + 79 => match state { + 107 => 160, + 321 | 360 => 347, + _ => 22, + }, + 80 => match state { + 327 | 372 => 1026, + _ => 954, + }, + 81 => match state { + 34 => 532, + 65 | 98 => 601, + 173 => 781, + _ => 394, + }, + 82 => 602, + 83 => match state { + 4 => 424, + 105 => 691, + _ => 395, + }, + 84 => 603, + 85 => match state { + 138 => 732, + 161 => 770, + 189 => 806, + 195 => 812, + 227 => 872, + _ => 514, + }, + 86 => match state { + 32 => 74, + 65 | 98 => 107, + 168 => 213, + _ => 6, + }, + 87 => 604, + 88 => 955, + 89 => 481, + 90 => match state { + 92 => 670, + 135 => 729, + _ => 557, + }, + 92 => 92, + 94 => 396, + 95 => 605, + 96 => match state { + 15 => 465, + 65 | 98 => 606, + 115 => 701, + _ => 397, + }, + 97 => 607, + 98 => match state { + 65 | 98 => 608, + _ => 398, + }, + 99 => 609, + 100 => 93, + 101 => 956, + 102 => 482, + 103 => 957, + 104 => match state { + 346 => 1067, + 356 => 1084, + _ => 958, + }, + 107 => match state { + 39 => 543, + 43 => 549, + 44 => 551, + 69 => 635, + 174 => 782, + 178 => 791, + 179 => 792, + 180 => 794, + _ => 533, + }, + 109 => match state { + 27 | 165 => 73, + _ => 28, + }, + 110 => 399, + 111 => 610, + 112 => match state { + 209 => 843, + 254 => 907, + _ => 483, + }, + 113 => match state { + 262 | 301 => 918, + _ => 862, + }, + 115 => match state { + 261 => 301, + _ => 262, + }, + 116 => match state { + 65 | 98 => 611, + 288 | 323 | 325..=327 | 346..=348 | 350 | 353 | 356..=359 | 371..=372 | 380 | 382 | 384 => 959, + _ => 400, + }, + 117 => match state { + 325 => 1022, + 347 => 1068, + _ => 960, + }, + 118 => match state { + 327 | 372 => 360, + _ => 321, + }, + 119 => match state { + 47 => 555, + _ => 484, + }, + 121 => 47, + 122 => 485, + 123 => match state { + 87 => 664, + _ => 473, + }, + 124 => match state { + 117 => 179, + 87 => 665, + _ => 43, + }, + 125 => match state { + 117 => 703, + _ => 474, + }, + 127 => match state { + 58 => 591, + 101 => 683, + 151 => 754, + _ => 583, + }, + 128 => 824, + 130 => match state { + 206 => 835, + _ => 765, + }, + 131 => 206, + 132 => match state { + 207 => 838, + _ => 766, + }, + 133 => 207, + 134 => match state { + 65 | 98 => 108, + 13 => 457, + 28 => 524, + 37 => 540, + 45 => 553, + 53..=54 | 77 | 97 | 125 | 143 | 145 => 575, + 73 => 640, + 170 => 777, + 177 => 789, + 217 => 855, + 256 => 911, + _ => 7, + }, + 135 => 612, + 136 => match state { + 77 => 644, + 97 => 679, + 125 => 714, + _ => 580, + }, + 137 => 576, + 138 => 919, + 139 => match state { + 143 | 145 => 745, + _ => 577, + }, + 140 => 486, + 141 => match state { + 11 => 449, + 26 => 523, + 33 => 531, + 111 => 693, + 164 => 773, + 169 => 776, + _ => 401, + }, + 142 => 613, + 143 => 487, + 144 => 488, + 145 => 489, + 146 => match state { + 68 => 632, + _ => 515, + }, + 148 => 581, + 149 => match state { + 1 => 8, + 38 => 541, + 62 => 597, + 93..=94 => 671, + 144 => 746, + 193 => 810, + _ => 48, + }, + 150 => 490, + 151 => 1018, + 152 => match state { + 51 => 99, + 52 => 100, + 90 => 133, + 91 => 134, + 96 => 137, + 132 => 188, + 12 | 14 | 18 | 25 | 49 | 57 | 59 | 64 | 78..=79 | 81 | 88 | 113..=114 | 117 | 119 | 121 | 126 | 152..=153 | 163 | 183 | 215..=216 | 221 | 245 | 257 | 284 | 299 | 331 | 355 => 450, + 16 | 82 | 86 | 130..=131 | 185..=187 | 222..=224 | 264 | 267 | 303..=305 | 333..=335 | 363 => 466, + 23 | 68 | 138 | 161 | 189 | 195 | 227 => 516, + 24 => 517, + 40..=41 | 128 | 225 | 265 => 546, + 56 | 60 => 588, + 63 => 598, + 65 | 98 => 614, + 140 | 234 => 734, + 142 | 238 | 241 | 279 | 281 | 314..=316 | 340..=342 | 366 | 369 | 377..=379 | 386..=389 => 738, + 146 | 203 => 747, + 147 => 751, + 148 => 752, + 150 => 753, + 162 => 771, + 197 => 816, + 198 => 817, + 201 | 277 | 343 | 367 => 823, + 202 => 825, + 204 => 827, + 243 => 893, + 244 | 283 => 894, + 246 => 898, + 288 | 323 | 326 | 346 | 353 | 356..=359 | 371 | 380 => 961, + 296 => 982, + 317 => 1014, + 324 => 1021, + 327 | 372 => 1027, + 330 => 1041, + 348 | 350 | 382 | 384 => 1069, + 349 => 1075, + 351 => 1079, + 352 => 1080, + 361 => 1094, + 381 | 383 | 390..=391 => 1136, + 385 => 1146, + _ => 402, + }, + 153 => 491, + 156 => 748, + 157 => match state { + 101 => 684, + _ => 584, + }, + 159 => 101, + 160 => 585, + 161 => 492, + 162 => match state { + 238 => 886, + 241 => 890, + 279 => 941, + 281 => 944, + 314 => 1009, + 315 => 1010, + 316 => 1012, + 340 => 1058, + 341 => 1059, + 342 => 1061, + 366 => 1104, + 369 => 1109, + 377 => 1131, + 378 => 1132, + 379 => 1133, + 386 => 1148, + 387 => 1149, + 388 => 1152, + 389 => 1159, + _ => 739, + }, + 163 => match state { + 82 => 655, + 86 => 660, + 130 => 722, + 131 => 724, + 185 => 800, + 186 => 801, + 187 => 803, + 222 => 864, + 223 => 865, + 224 => 867, + 264 => 922, + 267 => 927, + 303 => 996, + 304 => 997, + 305 => 998, + 333 => 1048, + 334 => 1049, + 335 => 1052, + 363 => 1098, + _ => 467, + }, + 164 => match state { + 65 | 98 => 615, + _ => 403, + }, + 165 => 674, + 166 => 493, + 167 => match state { + 114 => 699, + _ => 458, + }, + 169 => 962, + 170 => 1028, + 171 => 963, + 172 => match state { + 247..=248 | 286 | 289 => 899, + _ => 951, + }, + 173 => match state { + 248 => 290, + 286 => 320, + 289 => 328, + _ => 287, + }, + 174 => match state { + 381 | 383 | 390..=391 => 1137, + _ => 1070, + }, + 175 => match state { + 372 => 1121, + _ => 1029, + }, + 176 => match state { + 327 | 372 => 1030, + _ => 964, + }, + 177 => match state { + 327 | 372 => 1031, + _ => 965, + }, + 178 => 494, + 179 => match state { + 110 => 169, + _ => 33, + }, + 180 => match state { + 12 | 113 => 451, + 79 | 216 => 648, + _ => 459, + }, + 181 => match state { + 12 => 35, + 18 => 44, + 23 | 68 | 138 | 161 | 189 | 195 | 227 => 69, + 113 => 174, + 117 => 180, + 49 => 573, + 57 => 590, + 64 => 599, + 245 => 897, + 284 => 949, + 355 => 1083, + _ => 460, + }, + 182 => match state { + 79 => 127, + 113 => 175, + 216 => 258, + _ => 36, + }, + 183 => 495, + 184 => match state { + 5 => 425, + 17 => 472, + 106 => 692, + 116 => 702, + _ => 404, + }, + 185 => 616, + 186 => 475, + 187 => match state { + 53 => 578, + _ => 582, + }, + 188 => match state { + 60 => 595, + _ => 589, + }, + 189 => 592, + 190 => match state { + 203 => 826, + _ => 749, + }, + 191 => match state { + 350 => 1076, + 382 => 1139, + 384 => 1143, + _ => 1071, + }, + 192 => 1032, + 193 => 740, + 194 => 468, + 195 => match state { + 350 => 1077, + _ => 1072, + }, + 196 => match state { + 113 => 695, + _ => 452, + }, + 197 => 405, + 198 => match state { + 18 | 117 => 476, + _ => 461, + }, + 199 => 735, + 200 => 966, + 201 => match state { + 182 => 220, + 219 => 261, + 31 => 530, + 65 | 98 => 617, + 167 => 775, + 263 => 920, + _ => 406, + }, + 202 => 618, + 203 => match state { + 142 => 741, + 238 => 887, + 279 | 316 | 340 | 342 | 366 | 378 | 386 | 388..=389 => 942, + _ => 891, + }, + 204 => match state { + 16 => 469, + 82 => 656, + 86 | 131 | 185..=186 | 223 | 267 | 303 | 305 | 334 => 661, + _ => 723, + }, + 207 => 742, + 208 => 470, + 212 => match state { + 134 => 728, + 137 => 731, + 141 => 737, + 188 => 805, + 191 => 808, + 192 => 809, + 226 => 871, + _ => 682, + }, + 213 => 496, + 214 => match state { + 288 => 967, + 323 => 1019, + 326 => 1023, + 353 => 1081, + 357 => 1085, + 358 => 1086, + 359 => 1089, + 371 => 1120, + 380 => 1135, + 382 | 384 => 1140, + _ => 1073, + }, + 216 => 322, + 217 => 407, + 218 => 619, + 219 => match state { + 3 => 20, + _ => 19, + }, + 220 => 497, + 221 => 968, + 222 => match state { + 117 => 704, + _ => 477, + }, + 223 => match state { + 21 => 66, + 65 | 98 => 109, + 159 => 211, + _ => 9, + }, + 224 => 620, + 225 => match state { + 109 => 168, + _ => 32, + }, + 226 => match state { + 76 => 643, + _ => 534, + }, + 227 => 76, + 228 => match state { + 120 => 709, + 122 => 711, + 181 => 796, + _ => 639, + }, + 230 => match state { + 19..=20 => 498, + 46 => 554, + 155 => 762, + 209 => 844, + 253 => 904, + 254 => 908, + 297 => 986, + _ => 688, + }, + 231 => match state { + 12 | 79 | 113 | 216 => 453, + 14 | 18 | 25 | 59 | 78 | 81 | 88 | 114 | 117 | 119 | 121 | 126 | 152..=153 | 163 | 183 | 215 | 221 | 257 | 299 | 331 => 462, + 53..=54 | 77 | 97 | 125 | 143 | 145 => 579, + _ => 408, + }, + 232 => 969, + 233 => match state { + 277 => 313, + 343 => 368, + 367 => 376, + _ => 240, + }, + 235 => match state { + 128 => 184, + 225 => 266, + 265 => 302, + 41 => 547, + _ => 85, + }, + 237 => 254, + 238 => match state { + 119 => 708, + 121 => 710, + _ => 518, + }, + 239 => match state { + 163 => 772, + _ => 519, + }, + 240 => match state { + 149 => 205, + 139 => 733, + 158 => 769, + 172 => 780, + 190 => 807, + 194 => 811, + 196 => 813, + 200 => 819, + 228 => 873, + 230 => 876, + 232 => 878, + 236 => 884, + 242 => 892, + 251 => 902, + 252 => 903, + 269 => 929, + 271 => 932, + 273 => 934, + 274 => 935, + 275 => 936, + 276 => 937, + 285 => 950, + 291 => 977, + 292 => 978, + 293 => 979, + 294 => 980, + 295 => 981, + 298 => 989, + 307 => 1001, + 308 => 1002, + 309 => 1003, + 310 => 1004, + 311 => 1006, + 312 => 1007, + 318 => 1015, + 319 => 1016, + 329 => 1040, + 336 => 1054, + 337 => 1055, + 338 => 1056, + 339 => 1057, + 344 => 1065, + 345 => 1066, + 354 => 1082, + 362 => 1095, + 364 => 1101, + 365 => 1102, + 370 => 1114, + 373 => 1125, + 374 => 1126, + 375 => 1127, + _ => 156, + }, + 241 => match state { + 22 => 67, + 65 | 98 => 110, + 160 => 212, + _ => 10, + }, + 242 => 621, + 243 => match state { + 72 => 122, + 95 => 135, + 120 => 181, + 1 | 30 | 38 | 62 | 93..=94 | 144 | 193 | 280 => 409, + 12 => 454, + 14 | 23 | 49 | 57 | 59 | 64 | 68 | 78 | 81 | 88 | 114 | 126 | 138 | 152..=153 | 161 | 183 | 189 | 195 | 215 | 221 | 227 | 245 | 257 | 284 | 299 | 331 | 355 => 463, + 18 | 117 => 478, + 25 | 119 | 121 | 163 => 520, + 42 => 548, + 50 => 574, + 61 => 596, + 65 | 98 => 622, + 70 => 636, + 71 => 637, + 75 => 641, + 79 => 649, + 80 => 652, + 83 => 657, + 84 => 658, + 87 => 666, + 89 => 667, + 113 => 696, + 118 => 707, + 123 => 712, + 124 => 713, + 136 => 730, + 154 => 761, + 157 => 768, + 171 | 214 | 218 | 260 | 300 | 332 => 778, + 199 => 818, + 208 | 249 => 842, + 210 => 845, + 216 => 853, + 229 => 875, + 231 => 877, + 233 => 880, + 235 => 883, + 237 => 885, + 239 => 888, + 250 => 901, + 255 => 910, + 268 => 928, + 270 => 931, + 272 => 933, + 282 => 946, + 306 => 1000, + _ => 499, + }, + 245 => 623, + 248 => match state { + 94 => 675, + _ => 672, + }, + 249 => match state { + 30 => 529, + 280 => 943, + _ => 410, + }, + 251 => match state { + 14 => 39, + 114 => 178, + 18 | 117 => 479, + 59 => 593, + 78 | 183 | 215 | 299 => 646, + 81 | 88 => 653, + 126 | 221 | 257 | 331 => 715, + 152 => 755, + 153 => 758, + _ => 521, + }, + 252 => 392, + 253 => 500, + 254 => 970, + 255 => 971, + 256 => 522, + 257 => 594, + 258 => 104, + 259 => 501, + 260 => match state { + 234 => 881, + _ => 736, + }, + 261 => match state { + 134 => 191, + 137 => 192, + 188 => 226, + 99 => 681, + 104 => 690, + 133 => 727, + _ => 141, + }, + 263 => 743, + 264 => match state { + 65 | 98 => 111, + _ => 11, + }, + 265 => 471, + 266 => 972, + 267 => 502, + 268 => match state { + 65 | 98 => 112, + 214 | 260 | 332 => 849, + _ => 779, + }, + 269 => match state { + 216 => 259, + _ => 176, + }, + 270 => 624, + 271 => match state { + 98 => 680, + _ => 625, + }, + 273 => 503, + 274 => match state { + 29 => 527, + 65 | 98 => 626, + 166 => 774, + _ => 411, + }, + 275 => 627, + 276 => match state { + 12 => 455, + 93..=94 => 673, + 113 => 697, + _ => 504, + }, + _ => 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###"";""###, + r###""<""###, + r###""<<""###, + r###""<<=""###, + r###""<=""###, + r###""=""###, + r###""==""###, + r###"">""###, + r###"">=""###, + r###"">>""###, + r###"">>=""###, + r###""@""###, + r###""@=""###, + r###""False""###, + r###""None""###, + r###""True""###, + r###""[""###, + r###""]""###, + r###""^""###, + r###""^=""###, + r###""and""###, + r###""as""###, + r###""assert""###, + r###""async""###, + r###""await""###, + r###""break""###, + r###""case""###, + r###""class""###, + r###""continue""###, + r###""def""###, + r###""del""###, + r###""elif""###, + r###""else""###, + r###""except""###, + r###""finally""###, + r###""for""###, + r###""from""###, + r###""global""###, + r###""if""###, + r###""import""###, + r###""in""###, + r###""is""###, + r###""lambda""###, + r###""match""###, + r###""nonlocal""###, + r###""not""###, + r###""or""###, + r###""pass""###, + r###""raise""###, + r###""return""###, + r###""try""###, + r###""type""###, + r###""while""###, + r###""with""###, + r###""yield""###, + r###""{""###, + r###""|""###, + r###""|=""###, + r###""}""###, + r###""~""###, + r###"Dedent"###, + r###"Indent"###, + r###"StartExpression"###, + r###"StartInteractive"###, + r###"StartModule"###, + r###"complex"###, + r###"float"###, + r###"int"###, + r###"line_magic"###, + r###"name"###, + r###"string"###, + ]; + 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< + >( + __states: &[i16], + _: core::marker::PhantomData<()>, + ) -> alloc::vec::Vec + { + __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() + } + pub(crate) struct __StateMachine<> + where + { + mode: Mode, + __phantom: core::marker::PhantomData<()>, + } + impl<> __state_machine::ParserDefinition for __StateMachine<> + where + { + type Location = TextSize; + type Error = LexicalError; + type Token = token::Tok; + type TokenIndex = usize; + type Symbol = __Symbol<>; + type Success = ast::Mod; + 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, 97 - 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 { + false + } + + #[inline] + fn error_recovery_symbol( + &self, + recovery: __state_machine::ErrorRecovery, + ) -> Self::Symbol { + panic!("error recovery not enabled for this grammar") + } + + 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.mode, + 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< + >( + __token: &token::Tok, + _: core::marker::PhantomData<()>, + ) -> Option + { + match *__token { + token::Tok::Newline if true => Some(0), + token::Tok::NotEqual if true => Some(1), + token::Tok::Percent if true => Some(2), + token::Tok::PercentEqual if true => Some(3), + token::Tok::Amper if true => Some(4), + token::Tok::AmperEqual if true => Some(5), + token::Tok::Lpar if true => Some(6), + token::Tok::Rpar if true => Some(7), + token::Tok::Star if true => Some(8), + token::Tok::DoubleStar if true => Some(9), + token::Tok::DoubleStarEqual if true => Some(10), + token::Tok::StarEqual if true => Some(11), + token::Tok::Plus if true => Some(12), + token::Tok::PlusEqual if true => Some(13), + token::Tok::Comma if true => Some(14), + token::Tok::Minus if true => Some(15), + token::Tok::MinusEqual if true => Some(16), + token::Tok::Rarrow if true => Some(17), + token::Tok::Dot if true => Some(18), + token::Tok::Ellipsis if true => Some(19), + token::Tok::Slash if true => Some(20), + token::Tok::DoubleSlash if true => Some(21), + token::Tok::DoubleSlashEqual if true => Some(22), + token::Tok::SlashEqual if true => Some(23), + token::Tok::Colon if true => Some(24), + token::Tok::ColonEqual if true => Some(25), + token::Tok::Semi if true => Some(26), + token::Tok::Less if true => Some(27), + token::Tok::LeftShift if true => Some(28), + token::Tok::LeftShiftEqual if true => Some(29), + token::Tok::LessEqual if true => Some(30), + token::Tok::Equal if true => Some(31), + token::Tok::EqEqual if true => Some(32), + token::Tok::Greater if true => Some(33), + token::Tok::GreaterEqual if true => Some(34), + token::Tok::RightShift if true => Some(35), + token::Tok::RightShiftEqual if true => Some(36), + token::Tok::At if true => Some(37), + token::Tok::AtEqual if true => Some(38), + token::Tok::False if true => Some(39), + token::Tok::None if true => Some(40), + token::Tok::True if true => Some(41), + token::Tok::Lsqb if true => Some(42), + token::Tok::Rsqb if true => Some(43), + token::Tok::CircumFlex if true => Some(44), + token::Tok::CircumflexEqual if true => Some(45), + token::Tok::And if true => Some(46), + token::Tok::As if true => Some(47), + token::Tok::Assert if true => Some(48), + token::Tok::Async if true => Some(49), + token::Tok::Await if true => Some(50), + token::Tok::Break if true => Some(51), + token::Tok::Case if true => Some(52), + token::Tok::Class if true => Some(53), + token::Tok::Continue if true => Some(54), + token::Tok::Def if true => Some(55), + token::Tok::Del if true => Some(56), + token::Tok::Elif if true => Some(57), + token::Tok::Else if true => Some(58), + token::Tok::Except if true => Some(59), + token::Tok::Finally if true => Some(60), + token::Tok::For if true => Some(61), + token::Tok::From if true => Some(62), + token::Tok::Global if true => Some(63), + token::Tok::If if true => Some(64), + token::Tok::Import if true => Some(65), + token::Tok::In if true => Some(66), + token::Tok::Is if true => Some(67), + token::Tok::Lambda if true => Some(68), + token::Tok::Match if true => Some(69), + token::Tok::Nonlocal if true => Some(70), + token::Tok::Not if true => Some(71), + token::Tok::Or if true => Some(72), + token::Tok::Pass if true => Some(73), + token::Tok::Raise if true => Some(74), + token::Tok::Return if true => Some(75), + token::Tok::Try if true => Some(76), + token::Tok::Type if true => Some(77), + token::Tok::While if true => Some(78), + token::Tok::With if true => Some(79), + token::Tok::Yield if true => Some(80), + token::Tok::Lbrace if true => Some(81), + token::Tok::Vbar if true => Some(82), + token::Tok::VbarEqual if true => Some(83), + token::Tok::Rbrace if true => Some(84), + token::Tok::Tilde if true => Some(85), + token::Tok::Dedent if true => Some(86), + token::Tok::Indent if true => Some(87), + token::Tok::StartExpression if true => Some(88), + token::Tok::StartInteractive if true => Some(89), + token::Tok::StartModule if true => Some(90), + token::Tok::Complex { real: _, imag: _ } if true => Some(91), + token::Tok::Float { value: _ } if true => Some(92), + token::Tok::Int { value: _ } if true => Some(93), + token::Tok::MagicCommand { kind: _, value: _ } if true => Some(94), + token::Tok::Name { name: _ } if true => Some(95), + token::Tok::String { value: _, kind: _, triple_quoted: _ } if true => Some(96), + _ => None, + } + } + fn __token_to_symbol< + >( + __token_index: usize, + __token: token::Tok, + _: core::marker::PhantomData<()>, + ) -> __Symbol<> + { + 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 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 => __Symbol::Variant0(__token), + 91 => match __token { + token::Tok::Complex { real: __tok0, imag: __tok1 } if true => __Symbol::Variant1((__tok0, __tok1)), + _ => unreachable!(), + }, + 92 => match __token { + token::Tok::Float { value: __tok0 } if true => __Symbol::Variant2(__tok0), + _ => unreachable!(), + }, + 93 => match __token { + token::Tok::Int { value: __tok0 } if true => __Symbol::Variant3(__tok0), + _ => unreachable!(), + }, + 94 => match __token { + token::Tok::MagicCommand { kind: __tok0, value: __tok1 } if true => __Symbol::Variant4((__tok0, __tok1)), + _ => unreachable!(), + }, + 95 => match __token { + token::Tok::Name { name: __tok0 } if true => __Symbol::Variant5(__tok0), + _ => unreachable!(), + }, + 96 => match __token { + token::Tok::String { value: __tok0, kind: __tok1, triple_quoted: __tok2 } if true => __Symbol::Variant6((__tok0, __tok1, __tok2)), + _ => unreachable!(), + }, + _ => unreachable!(), + } + } + fn __simulate_reduce< + >( + __reduce_index: i16, + _: core::marker::PhantomData<()>, + ) -> __state_machine::SimulatedReduce<__StateMachine<>> + { + match __reduce_index { + 0 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 0, + } + } + 1 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 0, + } + } + 2 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 1, + } + } + 3 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + 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: 3, + nonterminal_produced: 3, + } + } + 7 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + 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: 2, + nonterminal_produced: 6, + } + } + 11 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 6, + } + } + 12 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 7, + } + } + 13 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 8, + } + } + 14 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 8, + } + } + 15 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 9, + } + } + 16 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 10, + } + } + 17 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 10, + } + } + 18 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 11, + } + } + 19 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 11, + } + } + 20 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 12, + } + } + 21 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 13, + } + } + 22 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 13, + } + } + 23 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 14, + } + } + 24 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 14, + } + } + 25 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 5, + nonterminal_produced: 15, + } + } + 26 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 15, + } + } + 27 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 6, + nonterminal_produced: 15, + } + } + 28 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 5, + nonterminal_produced: 15, + } + } + 29 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 15, + } + } + 30 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 15, + } + } + 31 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 15, + } + } + 32 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 15, + } + } + 33 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 5, + nonterminal_produced: 16, + } + } + 34 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 16, + } + } + 35 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 6, + nonterminal_produced: 16, + } + } + 36 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 5, + nonterminal_produced: 16, + } + } + 37 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 16, + } + } + 38 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 16, + } + } + 39 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 16, + } + } + 40 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 16, + } + } + 41 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 16, + } + } + 42 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 5, + nonterminal_produced: 17, + } + } + 43 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 17, + } + } + 44 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 6, + nonterminal_produced: 17, + } + } + 45 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 5, + nonterminal_produced: 17, + } + } + 46 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 17, + } + } + 47 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 17, + } + } + 48 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 17, + } + } + 49 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 17, + } + } + 50 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 5, + nonterminal_produced: 18, + } + } + 51 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 18, + } + } + 52 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 6, + nonterminal_produced: 18, + } + } + 53 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 5, + nonterminal_produced: 18, + } + } + 54 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 18, + } + } + 55 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 18, + } + } + 56 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 18, + } + } + 57 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 18, + } + } + 58 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 18, + } + } + 59 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 19, + } + } + 60 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 20, + } + } + 61 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 20, + } + } + 62 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 21, + } + } + 63 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 22, + } + } + 64 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 22, + } + } + 65 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 23, + } + } + 66 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 23, + } + } + 67 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 24, + } + } + 68 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 25, + } + } + 69 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 25, + } + } + 70 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 26, + } + } + 71 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 26, + } + } + 72 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 27, + } + } + 73 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 28, + } + } + 74 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 28, + } + } + 75 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 29, + } + } + 76 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 30, + } + } + 77 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 30, + } + } + 78 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 31, + } + } + 79 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 32, + } + } + 80 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 32, + } + } + 81 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 33, + } + } + 82 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 34, + } + } + 83 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 34, + } + } + 84 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 35, + } + } + 85 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 36, + } + } + 86 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 36, + } + } + 87 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 37, + } + } + 88 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 37, + } + } + 89 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 38, + } + } + 90 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 39, + } + } + 91 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 39, + } + } + 92 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 40, + } + } + 93 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 41, + } + } + 94 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 41, + } + } + 95 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 42, + } + } + 96 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 43, + } + } + 97 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 43, + } + } + 98 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 44, + } + } + 99 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 45, + } + } + 100 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 45, + } + } + 101 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 46, + } + } + 102 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 47, + } + } + 103 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 47, + } + } + 104 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 48, + } + } + 105 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 5, + nonterminal_produced: 48, + } + } + 106 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 49, + } + } + 107 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 50, + } + } + 108 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 50, + } + } + 109 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 51, + } + } + 110 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 52, + } + } + 111 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 52, + } + } + 112 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 53, + } + } + 113 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 54, + } + } + 114 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 54, + } + } + 115 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 55, + } + } + 116 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 55, + } + } + 117 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 56, + } + } + 118 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 57, + } + } + 119 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 57, + } + } + 120 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 58, + } + } + 121 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 59, + } + } + 122 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 59, + } + } + 123 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 60, + } + } + 124 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 61, + } + } + 125 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 61, + } + } + 126 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 62, + } + } + 127 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 62, + } + } + 128 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 63, + } + } + 129 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 64, + } + } + 130 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 64, + } + } + 131 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 65, + } + } + 132 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 65, + } + } + 133 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 66, + } + } + 134 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 67, + } + } + 135 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 68, + } + } + 136 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 68, + } + } + 137 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 69, + } + } + 138 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 70, + } + } + 139 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 70, + } + } + 140 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 71, + } + } + 141 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 72, + } + } + 142 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 72, + } + } + 143 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 73, + } + } + 144 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 74, + } + } + 145 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 74, + } + } + 146 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 75, + } + } + 147 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 76, + } + } + 148 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 76, + } + } + 149 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 77, + } + } + 150 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 78, + } + } + 151 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 79, + } + } + 152 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 79, + } + } + 153 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 80, + } + } + 154 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 81, + } + } + 155 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 81, + } + } + 156 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 82, + } + } + 157 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 82, + } + } + 158 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 83, + } + } + 159 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 83, + } + } + 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: 0, + nonterminal_produced: 85, + } + } + 164 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 85, + } + } + 165 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 85, + } + } + 166 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 86, + } + } + 167 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 86, + } + } + 168 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 87, + } + } + 169 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 87, + } + } + 170 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 88, + } + } + 171 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 89, + } + } + 172 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 89, + } + } + 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: 0, + nonterminal_produced: 91, + } + } + 176 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 91, + } + } + 177 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 92, + } + } + 178 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 92, + } + } + 179 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 93, + } + } + 180 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 93, + } + } + 181 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 94, + } + } + 182 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 94, + } + } + 183 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 94, + } + } + 184 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 94, + } + } + 185 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 94, + } + } + 186 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 94, + } + } + 187 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 94, + } + } + 188 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 94, + } + } + 189 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 6, + nonterminal_produced: 94, + } + } + 190 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 94, + } + } + 191 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 7, + nonterminal_produced: 94, + } + } + 192 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 5, + nonterminal_produced: 94, + } + } + 193 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 5, + nonterminal_produced: 94, + } + } + 194 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 94, + } + } + 195 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 6, + nonterminal_produced: 94, + } + } + 196 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 94, + } + } + 197 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 94, + } + } + 198 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 94, + } + } + 199 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 94, + } + } + 200 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 94, + } + } + 201 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 94, + } + } + 202 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 94, + } + } + 203 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 94, + } + } + 204 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 94, + } + } + 205 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 94, + } + } + 206 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 94, + } + } + 207 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 94, + } + } + 208 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 94, + } + } + 209 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 94, + } + } + 210 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 95, + } + } + 211 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 95, + } + } + 212 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 95, + } + } + 213 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 95, + } + } + 214 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 95, + } + } + 215 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 95, + } + } + 216 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 6, + nonterminal_produced: 95, + } + } + 217 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 95, + } + } + 218 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 7, + nonterminal_produced: 95, + } + } + 219 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 5, + nonterminal_produced: 95, + } + } + 220 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 5, + nonterminal_produced: 95, + } + } + 221 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 95, + } + } + 222 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 6, + nonterminal_produced: 95, + } + } + 223 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 95, + } + } + 224 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 95, + } + } + 225 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 95, + } + } + 226 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 95, + } + } + 227 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 95, + } + } + 228 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 95, + } + } + 229 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 95, + } + } + 230 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 95, + } + } + 231 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 95, + } + } + 232 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 95, + } + } + 233 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 95, + } + } + 234 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 95, + } + } + 235 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 95, + } + } + 236 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 95, + } + } + 237 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 96, + } + } + 238 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 96, + } + } + 239 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 96, + } + } + 240 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 96, + } + } + 241 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 97, + } + } + 242 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 97, + } + } + 243 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 97, + } + } + 244 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 97, + } + } + 245 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 98, + } + } + 246 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 98, + } + } + 247 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 99, + } + } + 248 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 99, + } + } + 249 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 100, + } + } + 250 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 100, + } + } + 251 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 100, + } + } + 252 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 100, + } + } + 253 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 100, + } + } + 254 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 100, + } + } + 255 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 100, + } + } + 256 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 100, + } + } + 257 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 100, + } + } + 258 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 100, + } + } + 259 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 100, + } + } + 260 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 100, + } + } + 261 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 100, + } + } + 262 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 101, + } + } + 263 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 8, + nonterminal_produced: 102, + } + } + 264 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 7, + nonterminal_produced: 102, + } + } + 265 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 9, + nonterminal_produced: 102, + } + } + 266 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 8, + nonterminal_produced: 102, + } + } + 267 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 5, + nonterminal_produced: 102, + } + } + 268 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 102, + } + } + 269 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 6, + nonterminal_produced: 102, + } + } + 270 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 5, + nonterminal_produced: 102, + } + } + 271 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 7, + nonterminal_produced: 103, + } + } + 272 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 6, + nonterminal_produced: 103, + } + } + 273 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 5, + nonterminal_produced: 103, + } + } + 274 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 103, + } + } + 275 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 5, + nonterminal_produced: 103, + } + } + 276 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 103, + } + } + 277 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 103, + } + } + 278 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 7, + nonterminal_produced: 103, + } + } + 279 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 6, + nonterminal_produced: 103, + } + } + 280 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 5, + nonterminal_produced: 103, + } + } + 281 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 103, + } + } + 282 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 5, + nonterminal_produced: 103, + } + } + 283 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 103, + } + } + 284 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 103, + } + } + 285 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 104, + } + } + 286 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 104, + } + } + 287 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 104, + } + } + 288 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 104, + } + } + 289 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 104, + } + } + 290 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 104, + } + } + 291 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 104, + } + } + 292 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 105, + } + } + 293 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 105, + } + } + 294 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 105, + } + } + 295 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 105, + } + } + 296 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 106, + } + } + 297 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 106, + } + } + 298 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 106, + } + } + 299 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 106, + } + } + 300 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 107, + } + } + 301 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 108, + } + } + 302 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 108, + } + } + 303 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 109, + } + } + 304 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 109, + } + } + 305 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 109, + } + } + 306 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 109, + } + } + 307 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 109, + } + } + 308 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 109, + } + } + 309 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 109, + } + } + 310 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 109, + } + } + 311 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 109, + } + } + 312 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 109, + } + } + 313 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 110, + } + } + 314 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 110, + } + } + 315 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 111, + } + } + 316 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 111, + } + } + 317 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 112, + } + } + 318 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 112, + } + } + 319 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 112, + } + } + 320 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 112, + } + } + 321 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 112, + } + } + 322 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 112, + } + } + 323 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 112, + } + } + 324 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 112, + } + } + 325 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 113, + } + } + 326 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 114, + } + } + 327 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 114, + } + } + 328 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 115, + } + } + 329 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 115, + } + } + 330 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 116, + } + } + 331 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 116, + } + } + 332 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 116, + } + } + 333 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 117, + } + } + 334 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 118, + } + } + 335 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 118, + } + } + 336 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 119, + } + } + 337 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 120, + } + } + 338 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 120, + } + } + 339 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 121, + } + } + 340 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 121, + } + } + 341 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 122, + } + } + 342 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 123, + } + } + 343 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 123, + } + } + 344 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 124, + } + } + 345 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 125, + } + } + 346 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 125, + } + } + 347 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 126, + } + } + 348 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 126, + } + } + 349 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 127, + } + } + 350 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 127, + } + } + 351 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 128, + } + } + 352 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 128, + } + } + 353 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 129, + } + } + 354 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 129, + } + } + 355 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 130, + } + } + 356 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 130, + } + } + 357 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 6, + nonterminal_produced: 130, + } + } + 358 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 131, + } + } + 359 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 131, + } + } + 360 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 5, + nonterminal_produced: 132, + } + } + 361 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 7, + nonterminal_produced: 132, + } + } + 362 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 133, + } + } + 363 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 133, + } + } + 364 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 134, + } + } + 365 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 134, + } + } + 366 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 135, + } + } + 367 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 135, + } + } + 368 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 136, + } + } + 369 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 137, + } + } + 370 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 137, + } + } + 371 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 138, + } + } + 372 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 139, + } + } + 373 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 139, + } + } + 374 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 140, + } + } + 375 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 140, + } + } + 376 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 140, + } + } + 377 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 140, + } + } + 378 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 140, + } + } + 379 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 141, + } + } + 380 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 141, + } + } + 381 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 142, + } + } + 382 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 142, + } + } + 383 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 143, + } + } + 384 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 143, + } + } + 385 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 143, + } + } + 386 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 143, + } + } + 387 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 143, + } + } + 388 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 143, + } + } + 389 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 10, + nonterminal_produced: 144, + } + } + 390 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 7, + nonterminal_produced: 144, + } + } + 391 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 9, + nonterminal_produced: 144, + } + } + 392 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 6, + nonterminal_produced: 144, + } + } + 393 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 9, + nonterminal_produced: 145, + } + } + 394 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 8, + nonterminal_produced: 145, + } + } + 395 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 10, + nonterminal_produced: 145, + } + } + 396 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 9, + nonterminal_produced: 145, + } + } + 397 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 7, + nonterminal_produced: 145, + } + } + 398 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 6, + nonterminal_produced: 145, + } + } + 399 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 8, + nonterminal_produced: 145, + } + } + 400 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 7, + nonterminal_produced: 145, + } + } + 401 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 8, + nonterminal_produced: 145, + } + } + 402 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 7, + nonterminal_produced: 145, + } + } + 403 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 9, + nonterminal_produced: 145, + } + } + 404 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 8, + nonterminal_produced: 145, + } + } + 405 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 6, + nonterminal_produced: 145, + } + } + 406 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 5, + nonterminal_produced: 145, + } + } + 407 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 7, + nonterminal_produced: 145, + } + } + 408 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 6, + nonterminal_produced: 145, + } + } + 409 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 146, + } + } + 410 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 146, + } + } + 411 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 146, + } + } + 412 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 146, + } + } + 413 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 146, + } + } + 414 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 147, + } + } + 415 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 147, + } + } + 416 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 148, + } + } + 417 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 148, + } + } + 418 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 149, + } + } + 419 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 149, + } + } + 420 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 150, + } + } + 421 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 151, + } + } + 422 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 152, + } + } + 423 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 7, + nonterminal_produced: 153, + } + } + 424 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 153, + } + } + 425 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 8, + nonterminal_produced: 153, + } + } + 426 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 5, + nonterminal_produced: 153, + } + } + 427 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 154, + } + } + 428 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 154, + } + } + 429 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 155, + } + } + 430 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 155, + } + } + 431 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 156, + } + } + 432 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 156, + } + } + 433 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 156, + } + } + 434 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 156, + } + } + 435 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 157, + } + } + 436 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 157, + } + } + 437 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 158, + } + } + 438 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 158, + } + } + 439 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 159, + } + } + 440 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 159, + } + } + 441 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 160, + } + } + 442 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 160, + } + } + 443 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 160, + } + } + 444 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 161, + } + } + 445 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 161, + } + } + 446 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 162, + } + } + 447 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 162, + } + } + 448 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 163, + } + } + 449 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 163, + } + } + 450 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 164, + } + } + 451 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 164, + } + } + 452 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 165, + } + } + 453 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 166, + } + } + 454 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 167, + } + } + 455 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 167, + } + } + 456 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 168, + } + } + 457 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 168, + } + } + 458 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 169, + } + } + 459 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 169, + } + } + 460 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 169, + } + } + 461 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 169, + } + } + 462 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 169, + } + } + 463 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 169, + } + } + 464 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 170, + } + } + 465 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 170, + } + } + 466 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 170, + } + } + 467 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 170, + } + } + 468 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 170, + } + } + 469 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 170, + } + } + 470 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 170, + } + } + 471 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 171, + } + } + 472 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 171, + } + } + 473 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 171, + } + } + 474 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 5, + nonterminal_produced: 171, + } + } + 475 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 171, + } + } + 476 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 7, + nonterminal_produced: 171, + } + } + 477 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 6, + nonterminal_produced: 171, + } + } + 478 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 5, + nonterminal_produced: 172, + } + } + 479 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 172, + } + } + 480 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 173, + } + } + 481 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 173, + } + } + 482 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 174, + } + } + 483 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 175, + } + } + 484 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 176, + } + } + 485 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 177, + } + } + 486 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 177, + } + } + 487 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 7, + nonterminal_produced: 178, + } + } + 488 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 8, + nonterminal_produced: 178, + } + } + 489 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 8, + nonterminal_produced: 178, + } + } + 490 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 7, + nonterminal_produced: 178, + } + } + 491 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 179, + } + } + 492 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 179, + } + } + 493 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 179, + } + } + 494 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 179, + } + } + 495 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 179, + } + } + 496 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 180, + } + } + 497 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 181, + } + } + 498 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 181, + } + } + 499 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 182, + } + } + 500 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 182, + } + } + 501 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 183, + } + } + 502 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 184, + } + } + 503 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 184, + } + } + 504 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 185, + } + } + 505 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 185, + } + } + 506 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 186, + } + } + 507 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 186, + } + } + 508 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 187, + } + } + 509 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 187, + } + } + 510 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 188, + } + } + 511 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 188, + } + } + 512 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 189, + } + } + 513 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 189, + } + } + 514 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 5, + nonterminal_produced: 189, + } + } + 515 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 189, + } + } + 516 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 190, + } + } + 517 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 190, + } + } + 518 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 5, + nonterminal_produced: 190, + } + } + 519 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 190, + } + } + 520 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 191, + } + } + 521 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 191, + } + } + 522 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 192, + } + } + 523 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 192, + } + } + 524 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 193, + } + } + 525 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 193, + } + } + 526 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 194, + } + } + 527 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 194, + } + } + 528 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 195, + } + } + 529 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 195, + } + } + 530 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 196, + } + } + 531 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 196, + } + } + 532 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 197, + } + } + 533 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 197, + } + } + 534 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 198, + } + } + 535 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 198, + } + } + 536 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 199, + } + } + 537 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 199, + } + } + 538 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 200, + } + } + 539 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 200, + } + } + 540 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 201, + } + } + 541 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 201, + } + } + 542 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 202, + } + } + 543 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 202, + } + } + 544 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 203, + } + } + 545 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 203, + } + } + 546 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 204, + } + } + 547 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 204, + } + } + 548 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 205, + } + } + 549 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 205, + } + } + 550 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 205, + } + } + 551 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 206, + } + } + 552 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 206, + } + } + 553 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 206, + } + } + 554 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 7, + nonterminal_produced: 207, + } + } + 555 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 9, + nonterminal_produced: 207, + } + } + 556 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 10, + nonterminal_produced: 207, + } + } + 557 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 6, + nonterminal_produced: 207, + } + } + 558 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 8, + nonterminal_produced: 207, + } + } + 559 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 9, + nonterminal_produced: 207, + } + } + 560 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 8, + nonterminal_produced: 207, + } + } + 561 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 10, + nonterminal_produced: 207, + } + } + 562 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 11, + nonterminal_produced: 207, + } + } + 563 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 7, + nonterminal_produced: 207, + } + } + 564 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 9, + nonterminal_produced: 207, + } + } + 565 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 10, + nonterminal_produced: 207, + } + } + 566 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 5, + nonterminal_produced: 207, + } + } + 567 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 7, + nonterminal_produced: 207, + } + } + 568 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 8, + nonterminal_produced: 207, + } + } + 569 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 207, + } + } + 570 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 6, + nonterminal_produced: 207, + } + } + 571 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 7, + nonterminal_produced: 207, + } + } + 572 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 6, + nonterminal_produced: 207, + } + } + 573 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 8, + nonterminal_produced: 207, + } + } + 574 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 9, + nonterminal_produced: 207, + } + } + 575 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 5, + nonterminal_produced: 207, + } + } + 576 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 7, + nonterminal_produced: 207, + } + } + 577 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 8, + nonterminal_produced: 207, + } + } + 578 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 207, + } + } + 579 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 207, + } + } + 580 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 5, + nonterminal_produced: 207, + } + } + 581 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 6, + nonterminal_produced: 207, + } + } + 582 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 8, + nonterminal_produced: 207, + } + } + 583 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 9, + nonterminal_produced: 207, + } + } + 584 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 5, + nonterminal_produced: 207, + } + } + 585 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 7, + nonterminal_produced: 207, + } + } + 586 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 8, + nonterminal_produced: 207, + } + } + 587 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 7, + nonterminal_produced: 207, + } + } + 588 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 9, + nonterminal_produced: 207, + } + } + 589 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 10, + nonterminal_produced: 207, + } + } + 590 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 6, + nonterminal_produced: 207, + } + } + 591 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 8, + nonterminal_produced: 207, + } + } + 592 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 9, + nonterminal_produced: 207, + } + } + 593 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 207, + } + } + 594 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 6, + nonterminal_produced: 207, + } + } + 595 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 7, + nonterminal_produced: 207, + } + } + 596 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 207, + } + } + 597 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 5, + nonterminal_produced: 207, + } + } + 598 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 6, + nonterminal_produced: 207, + } + } + 599 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 5, + nonterminal_produced: 207, + } + } + 600 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 7, + nonterminal_produced: 207, + } + } + 601 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 8, + nonterminal_produced: 207, + } + } + 602 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 207, + } + } + 603 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 6, + nonterminal_produced: 207, + } + } + 604 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 7, + nonterminal_produced: 207, + } + } + 605 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 207, + } + } + 606 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 207, + } + } + 607 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 207, + } + } + 608 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 207, + } + } + 609 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 6, + nonterminal_produced: 207, + } + } + 610 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 7, + nonterminal_produced: 207, + } + } + 611 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 207, + } + } + 612 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 5, + nonterminal_produced: 207, + } + } + 613 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 6, + nonterminal_produced: 207, + } + } + 614 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 5, + nonterminal_produced: 207, + } + } + 615 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 207, + } + } + 616 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 6, + nonterminal_produced: 207, + } + } + 617 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 5, + nonterminal_produced: 207, + } + } + 618 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 207, + } + } + 619 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 207, + } + } + 620 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 207, + } + } + 621 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 207, + } + } + 622 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 207, + } + } + 623 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 207, + } + } + 624 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 5, + nonterminal_produced: 207, + } + } + 625 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 207, + } + } + 626 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 207, + } + } + 627 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 207, + } + } + 628 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 207, + } + } + 629 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 207, + } + } + 630 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 207, + } + } + 631 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 207, + } + } + 632 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 7, + nonterminal_produced: 208, + } + } + 633 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 9, + nonterminal_produced: 208, + } + } + 634 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 10, + nonterminal_produced: 208, + } + } + 635 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 6, + nonterminal_produced: 208, + } + } + 636 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 8, + nonterminal_produced: 208, + } + } + 637 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 9, + nonterminal_produced: 208, + } + } + 638 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 8, + nonterminal_produced: 208, + } + } + 639 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 10, + nonterminal_produced: 208, + } + } + 640 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 11, + nonterminal_produced: 208, + } + } + 641 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 7, + nonterminal_produced: 208, + } + } + 642 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 9, + nonterminal_produced: 208, + } + } + 643 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 10, + nonterminal_produced: 208, + } + } + 644 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 5, + nonterminal_produced: 208, + } + } + 645 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 7, + nonterminal_produced: 208, + } + } + 646 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 8, + nonterminal_produced: 208, + } + } + 647 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 208, + } + } + 648 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 6, + nonterminal_produced: 208, + } + } + 649 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 7, + nonterminal_produced: 208, + } + } + 650 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 6, + nonterminal_produced: 208, + } + } + 651 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 8, + nonterminal_produced: 208, + } + } + 652 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 9, + nonterminal_produced: 208, + } + } + 653 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 5, + nonterminal_produced: 208, + } + } + 654 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 7, + nonterminal_produced: 208, + } + } + 655 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 8, + nonterminal_produced: 208, + } + } + 656 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 208, + } + } + 657 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 208, + } + } + 658 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 5, + nonterminal_produced: 208, + } + } + 659 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 6, + nonterminal_produced: 208, + } + } + 660 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 8, + nonterminal_produced: 208, + } + } + 661 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 9, + nonterminal_produced: 208, + } + } + 662 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 5, + nonterminal_produced: 208, + } + } + 663 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 7, + nonterminal_produced: 208, + } + } + 664 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 8, + nonterminal_produced: 208, + } + } + 665 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 7, + nonterminal_produced: 208, + } + } + 666 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 9, + nonterminal_produced: 208, + } + } + 667 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 10, + nonterminal_produced: 208, + } + } + 668 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 6, + nonterminal_produced: 208, + } + } + 669 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 8, + nonterminal_produced: 208, + } + } + 670 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 9, + nonterminal_produced: 208, + } + } + 671 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 208, + } + } + 672 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 6, + nonterminal_produced: 208, + } + } + 673 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 7, + nonterminal_produced: 208, + } + } + 674 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 208, + } + } + 675 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 5, + nonterminal_produced: 208, + } + } + 676 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 6, + nonterminal_produced: 208, + } + } + 677 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 5, + nonterminal_produced: 208, + } + } + 678 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 7, + nonterminal_produced: 208, + } + } + 679 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 8, + nonterminal_produced: 208, + } + } + 680 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 208, + } + } + 681 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 6, + nonterminal_produced: 208, + } + } + 682 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 7, + nonterminal_produced: 208, + } + } + 683 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 208, + } + } + 684 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 208, + } + } + 685 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 208, + } + } + 686 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 208, + } + } + 687 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 6, + nonterminal_produced: 208, + } + } + 688 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 7, + nonterminal_produced: 208, + } + } + 689 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 208, + } + } + 690 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 5, + nonterminal_produced: 208, + } + } + 691 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 6, + nonterminal_produced: 208, + } + } + 692 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 5, + nonterminal_produced: 208, + } + } + 693 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 208, + } + } + 694 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 6, + nonterminal_produced: 208, + } + } + 695 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 5, + nonterminal_produced: 208, + } + } + 696 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 208, + } + } + 697 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 208, + } + } + 698 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 208, + } + } + 699 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 208, + } + } + 700 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 208, + } + } + 701 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 208, + } + } + 702 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 5, + nonterminal_produced: 208, + } + } + 703 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 208, + } + } + 704 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 208, + } + } + 705 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 208, + } + } + 706 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 208, + } + } + 707 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 208, + } + } + 708 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 208, + } + } + 709 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 208, + } + } + 710 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 209, + } + } + 711 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 209, + } + } + 712 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 210, + } + } + 713 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 210, + } + } + 714 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 5, + nonterminal_produced: 210, + } + } + 715 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 210, + } + } + 716 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 210, + } + } + 717 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 210, + } + } + 718 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 210, + } + } + 719 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 210, + } + } + 720 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 211, + } + } + 721 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 211, + } + } + 722 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 5, + nonterminal_produced: 211, + } + } + 723 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 211, + } + } + 724 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 211, + } + } + 725 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 211, + } + } + 726 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 211, + } + } + 727 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 211, + } + } + 728 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 212, + } + } + 729 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 212, + } + } + 730 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 213, + } + } + 731 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 214, + } + } + 732 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 214, + } + } + 733 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 215, + } + } + 734 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 215, + } + } + 735 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 216, + } + } + 736 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 216, + } + } + 737 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 216, + } + } + 738 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 216, + } + } + 739 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 217, + } + } + 740 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 217, + } + } + 741 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 218, + } + } + 742 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 218, + } + } + 743 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 219, + } + } + 744 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 219, + } + } + 745 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 219, + } + } + 746 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 5, + nonterminal_produced: 219, + } + } + 747 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 219, + } + } + 748 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 219, + } + } + 749 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 219, + } + } + 750 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 220, + } + } + 751 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 220, + } + } + 752 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 220, + } + } + 753 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 221, + } + } + 754 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 221, + } + } + 755 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 221, + } + } + 756 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 5, + nonterminal_produced: 221, + } + } + 757 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 221, + } + } + 758 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 221, + } + } + 759 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 221, + } + } + 760 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 221, + } + } + 761 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 221, + } + } + 762 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 222, + } + } + 763 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 222, + } + } + 764 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 223, + } + } + 765 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 223, + } + } + 766 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 224, + } + } + 767 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 224, + } + } + 768 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 225, + } + } + 769 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 225, + } + } + 770 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 5, + nonterminal_produced: 226, + } + } + 771 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 6, + nonterminal_produced: 226, + } + } + 772 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 226, + } + } + 773 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 5, + nonterminal_produced: 226, + } + } + 774 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 227, + } + } + 775 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 227, + } + } + 776 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 228, + } + } + 777 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 228, + } + } + 778 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 229, + } + } + 779 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 229, + } + } + 780 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 230, + } + } + 781 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 230, + } + } + 782 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 230, + } + } + 783 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 230, + } + } + 784 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 230, + } + } + 785 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 230, + } + } + 786 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 230, + } + } + 787 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 230, + } + } + 788 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 230, + } + } + 789 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 230, + } + } + 790 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 231, + } + } + 791 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 232, + } + } + 792 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 233, + } + } + 793 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 233, + } + } + 794 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 234, + } + } + 795 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 234, + } + } + 796 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 235, + } + } + 797 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 236, + } + } + 798 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 236, + } + } + 799 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 237, + } + } + 800 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 237, + } + } + 801 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 237, + } + } + 802 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 237, + } + } + 803 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 237, + } + } + 804 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 237, + } + } + 805 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 237, + } + } + 806 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 5, + nonterminal_produced: 237, + } + } + 807 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 237, + } + } + 808 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 237, + } + } + 809 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 238, + } + } + 810 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 238, + } + } + 811 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 238, + } + } + 812 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 238, + } + } + 813 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 238, + } + } + 814 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 238, + } + } + 815 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 238, + } + } + 816 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 238, + } + } + 817 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 238, + } + } + 818 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 239, + } + } + 819 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 239, + } + } + 820 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 239, + } + } + 821 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 239, + } + } + 822 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 240, + } + } + 823 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 240, + } + } + 824 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 240, + } + } + 825 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 240, + } + } + 826 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 240, + } + } + 827 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 241, + } + } + 828 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 241, + } + } + 829 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 242, + } + } + 830 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 242, + } + } + 831 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 5, + nonterminal_produced: 243, + } + } + 832 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 243, + } + } + 833 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 243, + } + } + 834 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 244, + } + } + 835 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 244, + } + } + 836 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 5, + nonterminal_produced: 245, + } + } + 837 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 245, + } + } + 838 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 245, + } + } + 839 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 246, + } + } + 840 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 247, + } + } + 841 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 247, + } + } + 842 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 248, + } + } + 843 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 248, + } + } + 844 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 249, + } + } + 845 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 249, + } + } + 846 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 250, + } + } + 847 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 251, + } + } + 848 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 251, + } + } + 849 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 252, + } + } + 850 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 252, + } + } + 851 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 252, + } + } + 852 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 252, + } + } + 853 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 10, + nonterminal_produced: 253, + } + } + 854 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 7, + nonterminal_produced: 253, + } + } + 855 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 7, + nonterminal_produced: 253, + } + } + 856 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 253, + } + } + 857 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 10, + nonterminal_produced: 253, + } + } + 858 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 7, + nonterminal_produced: 253, + } + } + 859 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 7, + nonterminal_produced: 253, + } + } + 860 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 253, + } + } + 861 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 6, + nonterminal_produced: 253, + } + } + 862 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 254, + } + } + 863 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 254, + } + } + 864 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 255, + } + } + 865 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 255, + } + } + 866 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 256, + } + } + 867 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 256, + } + } + 868 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 257, + } + } + 869 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 257, + } + } + 870 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 258, + } + } + 871 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 5, + nonterminal_produced: 259, + } + } + 872 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 259, + } + } + 873 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 260, + } + } + 874 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 260, + } + } + 875 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 260, + } + } + 876 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 260, + } + } + 877 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 261, + } + } + 878 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 261, + } + } + 879 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 262, + } + } + 880 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 0, + nonterminal_produced: 262, + } + } + 881 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 263, + } + } + 882 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 263, + } + } + 883 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 264, + } + } + 884 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 264, + } + } + 885 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 264, + } + } + 886 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 265, + } + } + 887 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 266, + } + } + 888 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 7, + nonterminal_produced: 267, + } + } + 889 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 267, + } + } + 890 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 268, + } + } + 891 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 268, + } + } + 892 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 269, + } + } + 893 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 270, + } + } + 894 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 270, + } + } + 895 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 271, + } + } + 896 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 271, + } + } + 897 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 6, + nonterminal_produced: 271, + } + } + 898 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 271, + } + } + 899 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 7, + nonterminal_produced: 271, + } + } + 900 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 5, + nonterminal_produced: 271, + } + } + 901 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 5, + nonterminal_produced: 271, + } + } + 902 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 271, + } + } + 903 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 6, + nonterminal_produced: 271, + } + } + 904 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 271, + } + } + 905 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 271, + } + } + 906 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 271, + } + } + 907 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 272, + } + } + 908 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 5, + nonterminal_produced: 273, + } + } + 909 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 4, + nonterminal_produced: 273, + } + } + 910 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 274, + } + } + 911 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 274, + } + } + 912 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 275, + } + } + 913 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 275, + } + } + 914 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 2, + nonterminal_produced: 276, + } + } + 915 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 1, + nonterminal_produced: 276, + } + } + 916 => { + __state_machine::SimulatedReduce::Reduce { + states_to_pop: 3, + nonterminal_produced: 276, + } + } + 917 => __state_machine::SimulatedReduce::Accept, + _ => panic!("invalid reduction index {}", __reduce_index) + } + } + pub(crate) struct TopParser { + _priv: (), + } + + impl TopParser { + pub(crate) fn new() -> TopParser { + TopParser { + _priv: (), + } + } + + #[allow(dead_code)] + pub(crate) fn parse< + __TOKEN: __ToTriple<>, + __TOKENS: IntoIterator, + >( + &self, + mode: Mode, + __tokens0: __TOKENS, + ) -> Result> + { + let __tokens = __tokens0.into_iter(); + let mut __tokens = __tokens.map(|t| __ToTriple::to_triple(t)); + __state_machine::Parser::drive( + __StateMachine { + mode, + __phantom: core::marker::PhantomData::<()>, + }, + __tokens, + ) + } + } + fn __accepts< + >( + __error_state: Option, + __states: &[i16], + __opt_integer: Option, + _: core::marker::PhantomData<()>, + ) -> bool + { + 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); + } + } + pub(crate) fn __reduce< + >( + mode: Mode, + __action: i16, + __lookahead_start: Option<&TextSize>, + __states: &mut alloc::vec::Vec, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> Option>> + { + let (__pop_states, __nonterminal) = match __action { + 0 => { + __reduce0(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 1 => { + __reduce1(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 2 => { + __reduce2(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 3 => { + __reduce3(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 4 => { + __reduce4(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 5 => { + __reduce5(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 6 => { + __reduce6(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 7 => { + __reduce7(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 8 => { + __reduce8(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 9 => { + __reduce9(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 10 => { + __reduce10(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 11 => { + __reduce11(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 12 => { + __reduce12(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 13 => { + __reduce13(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 14 => { + __reduce14(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 15 => { + __reduce15(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 16 => { + __reduce16(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 17 => { + __reduce17(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 18 => { + __reduce18(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 19 => { + __reduce19(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 20 => { + __reduce20(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 21 => { + __reduce21(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 22 => { + __reduce22(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 23 => { + __reduce23(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 24 => { + __reduce24(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 25 => { + // ("," >) = ",", "*", StarTypedParameter, ",", KwargParameter => ActionFn(949); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant10(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant64(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym4.2; + let __nt = match super::__action949::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (5, 15) + } + 26 => { + // ("," >) = ",", "*", ",", KwargParameter => ActionFn(950); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant10(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = match super::__action950::<>(mode, __sym0, __sym1, __sym2, __sym3) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (4, 15) + } + 27 => { + // ("," >) = ",", "*", StarTypedParameter, ("," >)+, ",", KwargParameter => ActionFn(951); + assert!(__symbols.len() >= 6); + let __sym5 = __pop_Variant10(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant13(__symbols); + let __sym2 = __pop_Variant64(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym5.2; + let __nt = match super::__action951::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (6, 15) + } + 28 => { + // ("," >) = ",", "*", ("," >)+, ",", KwargParameter => ActionFn(952); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant10(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant13(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym4.2; + let __nt = match super::__action952::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (5, 15) + } + 29 => { + // ("," >) = ",", "*", StarTypedParameter => ActionFn(953); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant64(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = match super::__action953::<>(mode, __sym0, __sym1, __sym2) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (3, 15) + } + 30 => { + // ("," >) = ",", "*" => ActionFn(954); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = match super::__action954::<>(mode, __sym0, __sym1) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (2, 15) + } + 31 => { + // ("," >) = ",", "*", StarTypedParameter, ("," >)+ => ActionFn(955); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant13(__symbols); + let __sym2 = __pop_Variant64(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = match super::__action955::<>(mode, __sym0, __sym1, __sym2, __sym3) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (4, 15) + } + 32 => { + // ("," >) = ",", "*", ("," >)+ => ActionFn(956); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant13(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = match super::__action956::<>(mode, __sym0, __sym1, __sym2) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (3, 15) + } + 33 => { + // ("," >)? = ",", "*", StarTypedParameter, ",", KwargParameter => ActionFn(973); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant10(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant64(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym4.2; + let __nt = match super::__action973::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (5, 16) + } + 34 => { + // ("," >)? = ",", "*", ",", KwargParameter => ActionFn(974); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant10(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = match super::__action974::<>(mode, __sym0, __sym1, __sym2, __sym3) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (4, 16) + } + 35 => { + // ("," >)? = ",", "*", StarTypedParameter, ("," >)+, ",", KwargParameter => ActionFn(975); + assert!(__symbols.len() >= 6); + let __sym5 = __pop_Variant10(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant13(__symbols); + let __sym2 = __pop_Variant64(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym5.2; + let __nt = match super::__action975::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (6, 16) + } + 36 => { + // ("," >)? = ",", "*", ("," >)+, ",", KwargParameter => ActionFn(976); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant10(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant13(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym4.2; + let __nt = match super::__action976::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (5, 16) + } + 37 => { + // ("," >)? = ",", "*", StarTypedParameter => ActionFn(977); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant64(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = match super::__action977::<>(mode, __sym0, __sym1, __sym2) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (3, 16) + } + 38 => { + // ("," >)? = ",", "*" => ActionFn(978); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = match super::__action978::<>(mode, __sym0, __sym1) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (2, 16) + } + 39 => { + // ("," >)? = ",", "*", StarTypedParameter, ("," >)+ => ActionFn(979); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant13(__symbols); + let __sym2 = __pop_Variant64(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = match super::__action979::<>(mode, __sym0, __sym1, __sym2, __sym3) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (4, 16) + } + 40 => { + // ("," >)? = ",", "*", ("," >)+ => ActionFn(980); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant13(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = match super::__action980::<>(mode, __sym0, __sym1, __sym2) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (3, 16) + } + 41 => { + __reduce41(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 42 => { + // ("," >) = ",", "*", StarUntypedParameter, ",", KwargParameter => ActionFn(1009); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant10(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant64(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym4.2; + let __nt = match super::__action1009::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (5, 17) + } + 43 => { + // ("," >) = ",", "*", ",", KwargParameter => ActionFn(1010); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant10(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = match super::__action1010::<>(mode, __sym0, __sym1, __sym2, __sym3) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (4, 17) + } + 44 => { + // ("," >) = ",", "*", StarUntypedParameter, ("," >)+, ",", KwargParameter => ActionFn(1011); + assert!(__symbols.len() >= 6); + let __sym5 = __pop_Variant10(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant13(__symbols); + let __sym2 = __pop_Variant64(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym5.2; + let __nt = match super::__action1011::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (6, 17) + } + 45 => { + // ("," >) = ",", "*", ("," >)+, ",", KwargParameter => ActionFn(1012); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant10(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant13(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym4.2; + let __nt = match super::__action1012::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (5, 17) + } + 46 => { + // ("," >) = ",", "*", StarUntypedParameter => ActionFn(1013); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant64(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = match super::__action1013::<>(mode, __sym0, __sym1, __sym2) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (3, 17) + } + 47 => { + // ("," >) = ",", "*" => ActionFn(1014); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = match super::__action1014::<>(mode, __sym0, __sym1) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (2, 17) + } + 48 => { + // ("," >) = ",", "*", StarUntypedParameter, ("," >)+ => ActionFn(1015); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant13(__symbols); + let __sym2 = __pop_Variant64(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = match super::__action1015::<>(mode, __sym0, __sym1, __sym2, __sym3) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (4, 17) + } + 49 => { + // ("," >) = ",", "*", ("," >)+ => ActionFn(1016); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant13(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = match super::__action1016::<>(mode, __sym0, __sym1, __sym2) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (3, 17) + } + 50 => { + // ("," >)? = ",", "*", StarUntypedParameter, ",", KwargParameter => ActionFn(1033); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant10(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant64(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym4.2; + let __nt = match super::__action1033::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (5, 18) + } + 51 => { + // ("," >)? = ",", "*", ",", KwargParameter => ActionFn(1034); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant10(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = match super::__action1034::<>(mode, __sym0, __sym1, __sym2, __sym3) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (4, 18) + } + 52 => { + // ("," >)? = ",", "*", StarUntypedParameter, ("," >)+, ",", KwargParameter => ActionFn(1035); + assert!(__symbols.len() >= 6); + let __sym5 = __pop_Variant10(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant13(__symbols); + let __sym2 = __pop_Variant64(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym5.2; + let __nt = match super::__action1035::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (6, 18) + } + 53 => { + // ("," >)? = ",", "*", ("," >)+, ",", KwargParameter => ActionFn(1036); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant10(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant13(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym4.2; + let __nt = match super::__action1036::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (5, 18) + } + 54 => { + // ("," >)? = ",", "*", StarUntypedParameter => ActionFn(1037); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant64(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = match super::__action1037::<>(mode, __sym0, __sym1, __sym2) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (3, 18) + } + 55 => { + // ("," >)? = ",", "*" => ActionFn(1038); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = match super::__action1038::<>(mode, __sym0, __sym1) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (2, 18) + } + 56 => { + // ("," >)? = ",", "*", StarUntypedParameter, ("," >)+ => ActionFn(1039); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant13(__symbols); + let __sym2 = __pop_Variant64(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = match super::__action1039::<>(mode, __sym0, __sym1, __sym2, __sym3) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (4, 18) + } + 57 => { + // ("," >)? = ",", "*", ("," >)+ => ActionFn(1040); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant13(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = match super::__action1040::<>(mode, __sym0, __sym1, __sym2) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (3, 18) + } + 58 => { + __reduce58(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 59 => { + __reduce59(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 60 => { + __reduce60(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 61 => { + __reduce61(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 62 => { + __reduce62(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 63 => { + __reduce63(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 64 => { + __reduce64(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 65 => { + __reduce65(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 66 => { + __reduce66(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 67 => { + __reduce67(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 68 => { + __reduce68(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 69 => { + __reduce69(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 70 => { + __reduce70(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 71 => { + __reduce71(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 72 => { + __reduce72(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 73 => { + __reduce73(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 74 => { + __reduce74(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 75 => { + __reduce75(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 76 => { + __reduce76(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 77 => { + __reduce77(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 78 => { + __reduce78(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 79 => { + __reduce79(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 80 => { + __reduce80(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 81 => { + __reduce81(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 82 => { + __reduce82(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 83 => { + __reduce83(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 84 => { + __reduce84(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 85 => { + __reduce85(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 86 => { + __reduce86(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 87 => { + __reduce87(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 88 => { + __reduce88(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 89 => { + __reduce89(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 90 => { + __reduce90(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 91 => { + __reduce91(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 92 => { + __reduce92(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 93 => { + __reduce93(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 94 => { + __reduce94(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 95 => { + __reduce95(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 96 => { + __reduce96(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 97 => { + __reduce97(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 98 => { + __reduce98(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 99 => { + __reduce99(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 100 => { + __reduce100(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 101 => { + __reduce101(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 102 => { + __reduce102(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 103 => { + __reduce103(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 104 => { + __reduce104(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 105 => { + __reduce105(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 106 => { + __reduce106(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 107 => { + __reduce107(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 108 => { + __reduce108(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 109 => { + __reduce109(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 110 => { + __reduce110(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 111 => { + __reduce111(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 112 => { + __reduce112(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 113 => { + __reduce113(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 114 => { + __reduce114(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 115 => { + __reduce115(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 116 => { + __reduce116(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 117 => { + __reduce117(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 118 => { + __reduce118(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 119 => { + __reduce119(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 120 => { + __reduce120(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 121 => { + __reduce121(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 122 => { + __reduce122(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 123 => { + __reduce123(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 124 => { + __reduce124(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 125 => { + __reduce125(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 126 => { + __reduce126(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 127 => { + __reduce127(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 128 => { + __reduce128(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 129 => { + __reduce129(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 130 => { + __reduce130(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 131 => { + __reduce131(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 132 => { + __reduce132(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 133 => { + __reduce133(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 134 => { + __reduce134(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 135 => { + __reduce135(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 136 => { + __reduce136(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 137 => { + __reduce137(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 138 => { + __reduce138(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 139 => { + __reduce139(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 140 => { + __reduce140(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 141 => { + __reduce141(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 142 => { + __reduce142(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 143 => { + __reduce143(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 144 => { + __reduce144(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 145 => { + __reduce145(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 146 => { + __reduce146(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 147 => { + __reduce147(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 148 => { + __reduce148(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 149 => { + __reduce149(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 150 => { + __reduce150(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 151 => { + __reduce151(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 152 => { + __reduce152(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 153 => { + __reduce153(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 154 => { + __reduce154(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 155 => { + __reduce155(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 156 => { + __reduce156(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 157 => { + __reduce157(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 158 => { + __reduce158(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 159 => { + __reduce159(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 160 => { + __reduce160(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 161 => { + __reduce161(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 162 => { + // ArgumentList = FunctionArgument => ActionFn(1514); + let __sym0 = __pop_Variant32(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = match super::__action1514::<>(mode, __sym0) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant51(__nt), __end)); + (1, 85) + } + 163 => { + // ArgumentList = => ActionFn(1515); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = match super::__action1515::<>(mode, &__start, &__end) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant51(__nt), __end)); + (0, 85) + } + 164 => { + // ArgumentList = ( ",")+, FunctionArgument => ActionFn(1516); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant32(__symbols); + let __sym0 = __pop_Variant33(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = match super::__action1516::<>(mode, __sym0, __sym1) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant51(__nt), __end)); + (2, 85) + } + 165 => { + // ArgumentList = ( ",")+ => ActionFn(1517); + let __sym0 = __pop_Variant33(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = match super::__action1517::<>(mode, __sym0) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant51(__nt), __end)); + (1, 85) + } + 166 => { + __reduce166(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 167 => { + __reduce167(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 168 => { + __reduce168(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 169 => { + __reduce169(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 170 => { + // AsPattern = OrPattern, "as", Identifier => ActionFn(1194); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant24(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant36(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = match super::__action1194::<>(mode, __sym0, __sym1, __sym2) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant36(__nt), __end)); + (3, 88) + } + 171 => { + __reduce171(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 172 => { + __reduce172(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 173 => { + __reduce173(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 174 => { + __reduce174(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 175 => { + __reduce175(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 176 => { + __reduce176(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 177 => { + __reduce177(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 178 => { + __reduce178(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 179 => { + __reduce179(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 180 => { + __reduce180(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 181 => { + // Atom<"all"> = (@L string @R)+ => ActionFn(714); + let __sym0 = __pop_Variant44(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = match super::__action714::<>(mode, __sym0) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 94) + } + 182 => { + __reduce182(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 183 => { + __reduce183(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 184 => { + __reduce184(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 185 => { + __reduce185(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 186 => { + __reduce186(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 187 => { + __reduce187(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 188 => { + __reduce188(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 189 => { + // Atom<"all"> = "(", OneOrMore>, ",", NamedOrStarExpr, ",", ")" => ActionFn(1203); + assert!(__symbols.len() >= 6); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant16(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant34(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym5.2; + let __nt = match super::__action1203::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (6, 94) + } + 190 => { + // Atom<"all"> = "(", NamedOrStarExpr, ",", ")" => ActionFn(1204); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = match super::__action1204::<>(mode, __sym0, __sym1, __sym2, __sym3) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (4, 94) + } + 191 => { + // Atom<"all"> = "(", OneOrMore>, ",", NamedOrStarExpr, ("," )+, ",", ")" => ActionFn(1205); + assert!(__symbols.len() >= 7); + let __sym6 = __pop_Variant0(__symbols); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant18(__symbols); + let __sym3 = __pop_Variant16(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant34(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym6.2; + let __nt = match super::__action1205::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (7, 94) + } + 192 => { + // Atom<"all"> = "(", NamedOrStarExpr, ("," )+, ",", ")" => ActionFn(1206); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant18(__symbols); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym4.2; + let __nt = match super::__action1206::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (5, 94) + } + 193 => { + // Atom<"all"> = "(", OneOrMore>, ",", NamedOrStarExpr, ")" => ActionFn(1207); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant16(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant34(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym4.2; + let __nt = match super::__action1207::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (5, 94) + } + 194 => { + // Atom<"all"> = "(", NamedOrStarExpr, ")" => ActionFn(1208); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = match super::__action1208::<>(mode, __sym0, __sym1, __sym2) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (3, 94) + } + 195 => { + // Atom<"all"> = "(", OneOrMore>, ",", NamedOrStarExpr, ("," )+, ")" => ActionFn(1209); + assert!(__symbols.len() >= 6); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant18(__symbols); + let __sym3 = __pop_Variant16(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant34(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym5.2; + let __nt = match super::__action1209::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (6, 94) + } + 196 => { + // Atom<"all"> = "(", NamedOrStarExpr, ("," )+, ")" => ActionFn(1210); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant18(__symbols); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = match super::__action1210::<>(mode, __sym0, __sym1, __sym2, __sym3) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (4, 94) + } + 197 => { + __reduce197(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 198 => { + __reduce198(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 199 => { + __reduce199(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 200 => { + // Atom<"all"> = "(", "**", Expression<"all">, ")" => ActionFn(1213); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant16(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = match super::__action1213::<>(mode, __sym0, __sym1, __sym2, __sym3) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (4, 94) + } + 201 => { + __reduce201(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 202 => { + __reduce202(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 203 => { + __reduce203(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 204 => { + __reduce204(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 205 => { + __reduce205(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 206 => { + __reduce206(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 207 => { + __reduce207(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 208 => { + __reduce208(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 209 => { + __reduce209(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 210 => { + // Atom<"no-withitems"> = (@L string @R)+ => ActionFn(734); + let __sym0 = __pop_Variant44(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = match super::__action734::<>(mode, __sym0) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 95) + } + 211 => { + __reduce211(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 212 => { + __reduce212(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 213 => { + __reduce213(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 214 => { + __reduce214(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 215 => { + __reduce215(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 216 => { + // Atom<"no-withitems"> = "(", OneOrMore>, ",", NamedOrStarExpr, ",", ")" => ActionFn(1226); + assert!(__symbols.len() >= 6); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant16(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant34(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym5.2; + let __nt = match super::__action1226::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (6, 95) + } + 217 => { + // Atom<"no-withitems"> = "(", NamedOrStarExpr, ",", ")" => ActionFn(1227); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = match super::__action1227::<>(mode, __sym0, __sym1, __sym2, __sym3) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (4, 95) + } + 218 => { + // Atom<"no-withitems"> = "(", OneOrMore>, ",", NamedOrStarExpr, ("," )+, ",", ")" => ActionFn(1228); + assert!(__symbols.len() >= 7); + let __sym6 = __pop_Variant0(__symbols); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant18(__symbols); + let __sym3 = __pop_Variant16(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant34(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym6.2; + let __nt = match super::__action1228::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (7, 95) + } + 219 => { + // Atom<"no-withitems"> = "(", NamedOrStarExpr, ("," )+, ",", ")" => ActionFn(1229); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant18(__symbols); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym4.2; + let __nt = match super::__action1229::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (5, 95) + } + 220 => { + // Atom<"no-withitems"> = "(", OneOrMore>, ",", NamedOrStarExpr, ")" => ActionFn(1230); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant16(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant34(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym4.2; + let __nt = match super::__action1230::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (5, 95) + } + 221 => { + // Atom<"no-withitems"> = "(", NamedOrStarExpr, ")" => ActionFn(1231); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = match super::__action1231::<>(mode, __sym0, __sym1, __sym2) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (3, 95) + } + 222 => { + // Atom<"no-withitems"> = "(", OneOrMore>, ",", NamedOrStarExpr, ("," )+, ")" => ActionFn(1232); + assert!(__symbols.len() >= 6); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant18(__symbols); + let __sym3 = __pop_Variant16(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant34(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym5.2; + let __nt = match super::__action1232::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (6, 95) + } + 223 => { + // Atom<"no-withitems"> = "(", NamedOrStarExpr, ("," )+, ")" => ActionFn(1233); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant18(__symbols); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = match super::__action1233::<>(mode, __sym0, __sym1, __sym2, __sym3) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (4, 95) + } + 224 => { + __reduce224(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 225 => { + __reduce225(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 226 => { + __reduce226(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 227 => { + // Atom<"no-withitems"> = "(", "**", Expression<"all">, ")" => ActionFn(1236); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant16(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = match super::__action1236::<>(mode, __sym0, __sym1, __sym2, __sym3) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (4, 95) + } + 228 => { + __reduce228(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 229 => { + __reduce229(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 230 => { + __reduce230(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 231 => { + __reduce231(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 232 => { + __reduce232(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 233 => { + __reduce233(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 234 => { + __reduce234(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 235 => { + __reduce235(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 236 => { + __reduce236(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 237 => { + __reduce237(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 238 => { + __reduce238(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 239 => { + __reduce239(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 240 => { + __reduce240(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 241 => { + __reduce241(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 242 => { + __reduce242(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 243 => { + __reduce243(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 244 => { + __reduce244(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 245 => { + __reduce245(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 246 => { + __reduce246(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 247 => { + __reduce247(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 248 => { + __reduce248(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 249 => { + __reduce249(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 250 => { + __reduce250(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 251 => { + __reduce251(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 252 => { + __reduce252(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 253 => { + __reduce253(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 254 => { + __reduce254(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 255 => { + __reduce255(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 256 => { + __reduce256(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 257 => { + __reduce257(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 258 => { + __reduce258(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 259 => { + __reduce259(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 260 => { + __reduce260(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 261 => { + __reduce261(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 262 => { + __reduce262(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 263 => { + __reduce263(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 264 => { + __reduce264(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 265 => { + __reduce265(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 266 => { + __reduce266(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 267 => { + __reduce267(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 268 => { + __reduce268(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 269 => { + __reduce269(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 270 => { + __reduce270(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 271 => { + __reduce271(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 272 => { + __reduce272(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 273 => { + __reduce273(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 274 => { + __reduce274(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 275 => { + __reduce275(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 276 => { + __reduce276(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 277 => { + __reduce277(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 278 => { + __reduce278(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 279 => { + __reduce279(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 280 => { + __reduce280(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 281 => { + __reduce281(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 282 => { + __reduce282(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 283 => { + __reduce283(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 284 => { + __reduce284(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 285 => { + __reduce285(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 286 => { + __reduce286(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 287 => { + __reduce287(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 288 => { + __reduce288(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 289 => { + __reduce289(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 290 => { + __reduce290(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 291 => { + __reduce291(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 292 => { + __reduce292(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 293 => { + __reduce293(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 294 => { + __reduce294(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 295 => { + __reduce295(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 296 => { + __reduce296(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 297 => { + __reduce297(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 298 => { + __reduce298(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 299 => { + __reduce299(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 300 => { + __reduce300(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 301 => { + __reduce301(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 302 => { + __reduce302(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 303 => { + __reduce303(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 304 => { + __reduce304(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 305 => { + __reduce305(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 306 => { + __reduce306(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 307 => { + __reduce307(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 308 => { + __reduce308(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 309 => { + __reduce309(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 310 => { + __reduce310(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 311 => { + __reduce311(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 312 => { + __reduce312(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 313 => { + __reduce313(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 314 => { + __reduce314(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 315 => { + __reduce315(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 316 => { + __reduce316(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 317 => { + __reduce317(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 318 => { + __reduce318(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 319 => { + __reduce319(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 320 => { + __reduce320(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 321 => { + __reduce321(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 322 => { + __reduce322(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 323 => { + __reduce323(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 324 => { + __reduce324(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 325 => { + __reduce325(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 326 => { + __reduce326(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 327 => { + __reduce327(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 328 => { + __reduce328(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 329 => { + __reduce329(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 330 => { + __reduce330(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 331 => { + __reduce331(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 332 => { + __reduce332(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 333 => { + __reduce333(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 334 => { + __reduce334(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 335 => { + __reduce335(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 336 => { + __reduce336(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 337 => { + __reduce337(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 338 => { + __reduce338(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 339 => { + __reduce339(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 340 => { + __reduce340(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 341 => { + __reduce341(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 342 => { + __reduce342(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 343 => { + __reduce343(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 344 => { + __reduce344(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 345 => { + __reduce345(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 346 => { + __reduce346(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 347 => { + __reduce347(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 348 => { + __reduce348(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 349 => { + __reduce349(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 350 => { + __reduce350(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 351 => { + __reduce351(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 352 => { + __reduce352(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 353 => { + __reduce353(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 354 => { + __reduce354(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 355 => { + __reduce355(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 356 => { + __reduce356(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 357 => { + __reduce357(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 358 => { + __reduce358(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 359 => { + __reduce359(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 360 => { + __reduce360(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 361 => { + __reduce361(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 362 => { + __reduce362(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 363 => { + __reduce363(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 364 => { + __reduce364(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 365 => { + __reduce365(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 366 => { + __reduce366(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 367 => { + __reduce367(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 368 => { + __reduce368(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 369 => { + __reduce369(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 370 => { + __reduce370(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 371 => { + __reduce371(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 372 => { + __reduce372(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 373 => { + __reduce373(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 374 => { + __reduce374(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 375 => { + __reduce375(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 376 => { + __reduce376(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 377 => { + __reduce377(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 378 => { + __reduce378(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 379 => { + __reduce379(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 380 => { + __reduce380(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 381 => { + __reduce381(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 382 => { + __reduce382(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 383 => { + __reduce383(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 384 => { + __reduce384(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 385 => { + __reduce385(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 386 => { + __reduce386(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 387 => { + __reduce387(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 388 => { + __reduce388(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 389 => { + __reduce389(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 390 => { + __reduce390(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 391 => { + __reduce391(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 392 => { + __reduce392(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 393 => { + __reduce393(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 394 => { + __reduce394(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 395 => { + __reduce395(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 396 => { + __reduce396(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 397 => { + __reduce397(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 398 => { + __reduce398(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 399 => { + __reduce399(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 400 => { + __reduce400(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 401 => { + __reduce401(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 402 => { + __reduce402(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 403 => { + __reduce403(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 404 => { + __reduce404(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 405 => { + __reduce405(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 406 => { + __reduce406(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 407 => { + __reduce407(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 408 => { + __reduce408(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 409 => { + __reduce409(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 410 => { + __reduce410(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 411 => { + __reduce411(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 412 => { + __reduce412(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 413 => { + __reduce413(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 414 => { + __reduce414(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 415 => { + __reduce415(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 416 => { + __reduce416(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 417 => { + __reduce417(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 418 => { + __reduce418(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 419 => { + __reduce419(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 420 => { + __reduce420(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 421 => { + __reduce421(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 422 => { + __reduce422(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 423 => { + __reduce423(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 424 => { + __reduce424(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 425 => { + __reduce425(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 426 => { + __reduce426(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 427 => { + __reduce427(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 428 => { + __reduce428(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 429 => { + __reduce429(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 430 => { + __reduce430(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 431 => { + __reduce431(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 432 => { + __reduce432(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 433 => { + __reduce433(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 434 => { + __reduce434(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 435 => { + __reduce435(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 436 => { + __reduce436(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 437 => { + __reduce437(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 438 => { + __reduce438(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 439 => { + __reduce439(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 440 => { + __reduce440(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 441 => { + __reduce441(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 442 => { + __reduce442(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 443 => { + __reduce443(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 444 => { + __reduce444(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 445 => { + __reduce445(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 446 => { + __reduce446(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 447 => { + __reduce447(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 448 => { + __reduce448(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 449 => { + __reduce449(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 450 => { + // LambdaDef = "lambda", ParameterList, ":", Test<"all"> => ActionFn(1684); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant16(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant47(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = match super::__action1684::<>(mode, __sym0, __sym1, __sym2, __sym3) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (4, 164) + } + 451 => { + // LambdaDef = "lambda", ":", Test<"all"> => ActionFn(1685); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant16(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = match super::__action1685::<>(mode, __sym0, __sym1, __sym2) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (3, 164) + } + 452 => { + // LineMagicExpr = line_magic => ActionFn(1310); + let __sym0 = __pop_Variant4(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = match super::__action1310::<>(mode, __sym0) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 165) + } + 453 => { + // LineMagicStatement = line_magic => ActionFn(1311); + let __sym0 = __pop_Variant4(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = match super::__action1311::<>(mode, __sym0) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (1, 166) + } + 454 => { + __reduce454(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 455 => { + __reduce455(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 456 => { + __reduce456(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 457 => { + __reduce457(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 458 => { + __reduce458(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 459 => { + __reduce459(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 460 => { + __reduce460(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 461 => { + __reduce461(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 462 => { + __reduce462(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 463 => { + // LiteralPattern = (@L string @R)+ => ActionFn(1317); + let __sym0 = __pop_Variant44(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = match super::__action1317::<>(mode, __sym0) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant36(__nt), __end)); + (1, 169) + } + 464 => { + __reduce464(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 465 => { + __reduce465(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 466 => { + __reduce466(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 467 => { + __reduce467(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 468 => { + __reduce468(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 469 => { + __reduce469(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 470 => { + // MappingKey = (@L string @R)+ => ActionFn(836); + let __sym0 = __pop_Variant44(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = match super::__action836::<>(mode, __sym0) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 170) + } + 471 => { + __reduce471(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 472 => { + __reduce472(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 473 => { + __reduce473(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 474 => { + __reduce474(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 475 => { + __reduce475(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 476 => { + __reduce476(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 477 => { + __reduce477(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 478 => { + __reduce478(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 479 => { + __reduce479(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 480 => { + __reduce480(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 481 => { + __reduce481(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 482 => { + __reduce482(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 483 => { + __reduce483(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 484 => { + __reduce484(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 485 => { + __reduce485(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 486 => { + __reduce486(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 487 => { + __reduce487(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 488 => { + __reduce488(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 489 => { + __reduce489(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 490 => { + __reduce490(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 491 => { + __reduce491(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 492 => { + __reduce492(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 493 => { + __reduce493(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 494 => { + __reduce494(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 495 => { + __reduce495(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 496 => { + __reduce496(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 497 => { + __reduce497(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 498 => { + __reduce498(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 499 => { + __reduce499(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 500 => { + __reduce500(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 501 => { + __reduce501(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 502 => { + __reduce502(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 503 => { + __reduce503(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 504 => { + __reduce504(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 505 => { + __reduce505(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 506 => { + __reduce506(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 507 => { + __reduce507(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 508 => { + __reduce508(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 509 => { + __reduce509(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 510 => { + __reduce510(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 511 => { + __reduce511(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 512 => { + __reduce512(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 513 => { + __reduce513(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 514 => { + __reduce514(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 515 => { + __reduce515(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 516 => { + __reduce516(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 517 => { + __reduce517(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 518 => { + __reduce518(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 519 => { + __reduce519(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 520 => { + __reduce520(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 521 => { + __reduce521(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 522 => { + __reduce522(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 523 => { + __reduce523(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 524 => { + __reduce524(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 525 => { + __reduce525(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 526 => { + __reduce526(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 527 => { + __reduce527(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 528 => { + __reduce528(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 529 => { + __reduce529(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 530 => { + __reduce530(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 531 => { + __reduce531(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 532 => { + __reduce532(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 533 => { + __reduce533(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 534 => { + __reduce534(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 535 => { + __reduce535(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 536 => { + __reduce536(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 537 => { + __reduce537(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 538 => { + __reduce538(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 539 => { + __reduce539(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 540 => { + __reduce540(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 541 => { + __reduce541(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 542 => { + __reduce542(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 543 => { + __reduce543(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 544 => { + __reduce544(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 545 => { + __reduce545(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 546 => { + __reduce546(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 547 => { + __reduce547(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 548 => { + __reduce548(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 549 => { + __reduce549(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 550 => { + __reduce550(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 551 => { + __reduce551(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 552 => { + __reduce552(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 553 => { + __reduce553(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 554 => { + // ParameterList = OneOrMore>, ",", "*", StarTypedParameter, ",", KwargParameter, "," => ActionFn(1564); + assert!(__symbols.len() >= 7); + let __sym6 = __pop_Variant0(__symbols); + let __sym5 = __pop_Variant10(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant64(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym6.2; + let __nt = match super::__action1564::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (7, 207) + } + 555 => { + // ParameterList = OneOrMore>, ",", "/", ",", "*", StarTypedParameter, ",", KwargParameter, "," => ActionFn(1565); + assert!(__symbols.len() >= 9); + let __sym8 = __pop_Variant0(__symbols); + let __sym7 = __pop_Variant10(__symbols); + let __sym6 = __pop_Variant0(__symbols); + let __sym5 = __pop_Variant64(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym8.2; + let __nt = match super::__action1565::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (9, 207) + } + 556 => { + // ParameterList = OneOrMore>, ",", "/", ("," >)+, ",", "*", StarTypedParameter, ",", KwargParameter, "," => ActionFn(1566); + assert!(__symbols.len() >= 10); + let __sym9 = __pop_Variant0(__symbols); + let __sym8 = __pop_Variant10(__symbols); + let __sym7 = __pop_Variant0(__symbols); + let __sym6 = __pop_Variant64(__symbols); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant13(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym9.2; + let __nt = match super::__action1566::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (10, 207) + } + 557 => { + // ParameterList = OneOrMore>, ",", "*", ",", KwargParameter, "," => ActionFn(1567); + assert!(__symbols.len() >= 6); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant10(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym5.2; + let __nt = match super::__action1567::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (6, 207) + } + 558 => { + // ParameterList = OneOrMore>, ",", "/", ",", "*", ",", KwargParameter, "," => ActionFn(1568); + assert!(__symbols.len() >= 8); + let __sym7 = __pop_Variant0(__symbols); + let __sym6 = __pop_Variant10(__symbols); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym7.2; + let __nt = match super::__action1568::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (8, 207) + } + 559 => { + // ParameterList = OneOrMore>, ",", "/", ("," >)+, ",", "*", ",", KwargParameter, "," => ActionFn(1569); + assert!(__symbols.len() >= 9); + let __sym8 = __pop_Variant0(__symbols); + let __sym7 = __pop_Variant10(__symbols); + let __sym6 = __pop_Variant0(__symbols); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant13(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym8.2; + let __nt = match super::__action1569::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (9, 207) + } + 560 => { + // ParameterList = OneOrMore>, ",", "*", StarTypedParameter, ("," >)+, ",", KwargParameter, "," => ActionFn(1570); + assert!(__symbols.len() >= 8); + let __sym7 = __pop_Variant0(__symbols); + let __sym6 = __pop_Variant10(__symbols); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant13(__symbols); + let __sym3 = __pop_Variant64(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym7.2; + let __nt = match super::__action1570::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (8, 207) + } + 561 => { + // ParameterList = OneOrMore>, ",", "/", ",", "*", StarTypedParameter, ("," >)+, ",", KwargParameter, "," => ActionFn(1571); + assert!(__symbols.len() >= 10); + let __sym9 = __pop_Variant0(__symbols); + let __sym8 = __pop_Variant10(__symbols); + let __sym7 = __pop_Variant0(__symbols); + let __sym6 = __pop_Variant13(__symbols); + let __sym5 = __pop_Variant64(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym9.2; + let __nt = match super::__action1571::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (10, 207) + } + 562 => { + // ParameterList = OneOrMore>, ",", "/", ("," >)+, ",", "*", StarTypedParameter, ("," >)+, ",", KwargParameter, "," => ActionFn(1572); + assert!(__symbols.len() >= 11); + let __sym10 = __pop_Variant0(__symbols); + let __sym9 = __pop_Variant10(__symbols); + let __sym8 = __pop_Variant0(__symbols); + let __sym7 = __pop_Variant13(__symbols); + let __sym6 = __pop_Variant64(__symbols); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant13(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym10.2; + let __nt = match super::__action1572::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9, __sym10) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (11, 207) + } + 563 => { + // ParameterList = OneOrMore>, ",", "*", ("," >)+, ",", KwargParameter, "," => ActionFn(1573); + assert!(__symbols.len() >= 7); + let __sym6 = __pop_Variant0(__symbols); + let __sym5 = __pop_Variant10(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant13(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym6.2; + let __nt = match super::__action1573::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (7, 207) + } + 564 => { + // ParameterList = OneOrMore>, ",", "/", ",", "*", ("," >)+, ",", KwargParameter, "," => ActionFn(1574); + assert!(__symbols.len() >= 9); + let __sym8 = __pop_Variant0(__symbols); + let __sym7 = __pop_Variant10(__symbols); + let __sym6 = __pop_Variant0(__symbols); + let __sym5 = __pop_Variant13(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym8.2; + let __nt = match super::__action1574::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (9, 207) + } + 565 => { + // ParameterList = OneOrMore>, ",", "/", ("," >)+, ",", "*", ("," >)+, ",", KwargParameter, "," => ActionFn(1575); + assert!(__symbols.len() >= 10); + let __sym9 = __pop_Variant0(__symbols); + let __sym8 = __pop_Variant10(__symbols); + let __sym7 = __pop_Variant0(__symbols); + let __sym6 = __pop_Variant13(__symbols); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant13(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym9.2; + let __nt = match super::__action1575::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (10, 207) + } + 566 => { + // ParameterList = OneOrMore>, ",", "*", StarTypedParameter, "," => ActionFn(1576); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant64(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym4.2; + let __nt = match super::__action1576::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (5, 207) + } + 567 => { + // ParameterList = OneOrMore>, ",", "/", ",", "*", StarTypedParameter, "," => ActionFn(1577); + assert!(__symbols.len() >= 7); + let __sym6 = __pop_Variant0(__symbols); + let __sym5 = __pop_Variant64(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym6.2; + let __nt = match super::__action1577::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (7, 207) + } + 568 => { + // ParameterList = OneOrMore>, ",", "/", ("," >)+, ",", "*", StarTypedParameter, "," => ActionFn(1578); + assert!(__symbols.len() >= 8); + let __sym7 = __pop_Variant0(__symbols); + let __sym6 = __pop_Variant64(__symbols); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant13(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym7.2; + let __nt = match super::__action1578::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (8, 207) + } + 569 => { + // ParameterList = OneOrMore>, ",", "*", "," => ActionFn(1579); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = match super::__action1579::<>(mode, __sym0, __sym1, __sym2, __sym3) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (4, 207) + } + 570 => { + // ParameterList = OneOrMore>, ",", "/", ",", "*", "," => ActionFn(1580); + assert!(__symbols.len() >= 6); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym5.2; + let __nt = match super::__action1580::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (6, 207) + } + 571 => { + // ParameterList = OneOrMore>, ",", "/", ("," >)+, ",", "*", "," => ActionFn(1581); + assert!(__symbols.len() >= 7); + let __sym6 = __pop_Variant0(__symbols); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant13(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym6.2; + let __nt = match super::__action1581::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (7, 207) + } + 572 => { + // ParameterList = OneOrMore>, ",", "*", StarTypedParameter, ("," >)+, "," => ActionFn(1582); + assert!(__symbols.len() >= 6); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant13(__symbols); + let __sym3 = __pop_Variant64(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym5.2; + let __nt = match super::__action1582::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (6, 207) + } + 573 => { + // ParameterList = OneOrMore>, ",", "/", ",", "*", StarTypedParameter, ("," >)+, "," => ActionFn(1583); + assert!(__symbols.len() >= 8); + let __sym7 = __pop_Variant0(__symbols); + let __sym6 = __pop_Variant13(__symbols); + let __sym5 = __pop_Variant64(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym7.2; + let __nt = match super::__action1583::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (8, 207) + } + 574 => { + // ParameterList = OneOrMore>, ",", "/", ("," >)+, ",", "*", StarTypedParameter, ("," >)+, "," => ActionFn(1584); + assert!(__symbols.len() >= 9); + let __sym8 = __pop_Variant0(__symbols); + let __sym7 = __pop_Variant13(__symbols); + let __sym6 = __pop_Variant64(__symbols); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant13(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym8.2; + let __nt = match super::__action1584::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (9, 207) + } + 575 => { + // ParameterList = OneOrMore>, ",", "*", ("," >)+, "," => ActionFn(1585); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant13(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym4.2; + let __nt = match super::__action1585::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (5, 207) + } + 576 => { + // ParameterList = OneOrMore>, ",", "/", ",", "*", ("," >)+, "," => ActionFn(1586); + assert!(__symbols.len() >= 7); + let __sym6 = __pop_Variant0(__symbols); + let __sym5 = __pop_Variant13(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym6.2; + let __nt = match super::__action1586::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (7, 207) + } + 577 => { + // ParameterList = OneOrMore>, ",", "/", ("," >)+, ",", "*", ("," >)+, "," => ActionFn(1587); + assert!(__symbols.len() >= 8); + let __sym7 = __pop_Variant0(__symbols); + let __sym6 = __pop_Variant13(__symbols); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant13(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym7.2; + let __nt = match super::__action1587::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (8, 207) + } + 578 => { + // ParameterList = OneOrMore>, "," => ActionFn(1588); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = match super::__action1588::<>(mode, __sym0, __sym1) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (2, 207) + } + 579 => { + // ParameterList = OneOrMore>, ",", "/", "," => ActionFn(1589); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = match super::__action1589::<>(mode, __sym0, __sym1, __sym2, __sym3) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (4, 207) + } + 580 => { + // ParameterList = OneOrMore>, ",", "/", ("," >)+, "," => ActionFn(1590); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant13(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym4.2; + let __nt = match super::__action1590::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (5, 207) + } + 581 => { + // ParameterList = OneOrMore>, ",", "*", StarTypedParameter, ",", KwargParameter => ActionFn(1591); + assert!(__symbols.len() >= 6); + let __sym5 = __pop_Variant10(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant64(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym5.2; + let __nt = match super::__action1591::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (6, 207) + } + 582 => { + // ParameterList = OneOrMore>, ",", "/", ",", "*", StarTypedParameter, ",", KwargParameter => ActionFn(1592); + assert!(__symbols.len() >= 8); + let __sym7 = __pop_Variant10(__symbols); + let __sym6 = __pop_Variant0(__symbols); + let __sym5 = __pop_Variant64(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym7.2; + let __nt = match super::__action1592::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (8, 207) + } + 583 => { + // ParameterList = OneOrMore>, ",", "/", ("," >)+, ",", "*", StarTypedParameter, ",", KwargParameter => ActionFn(1593); + assert!(__symbols.len() >= 9); + let __sym8 = __pop_Variant10(__symbols); + let __sym7 = __pop_Variant0(__symbols); + let __sym6 = __pop_Variant64(__symbols); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant13(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym8.2; + let __nt = match super::__action1593::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (9, 207) + } + 584 => { + // ParameterList = OneOrMore>, ",", "*", ",", KwargParameter => ActionFn(1594); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant10(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym4.2; + let __nt = match super::__action1594::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (5, 207) + } + 585 => { + // ParameterList = OneOrMore>, ",", "/", ",", "*", ",", KwargParameter => ActionFn(1595); + assert!(__symbols.len() >= 7); + let __sym6 = __pop_Variant10(__symbols); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym6.2; + let __nt = match super::__action1595::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (7, 207) + } + 586 => { + // ParameterList = OneOrMore>, ",", "/", ("," >)+, ",", "*", ",", KwargParameter => ActionFn(1596); + assert!(__symbols.len() >= 8); + let __sym7 = __pop_Variant10(__symbols); + let __sym6 = __pop_Variant0(__symbols); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant13(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym7.2; + let __nt = match super::__action1596::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (8, 207) + } + 587 => { + // ParameterList = OneOrMore>, ",", "*", StarTypedParameter, ("," >)+, ",", KwargParameter => ActionFn(1597); + assert!(__symbols.len() >= 7); + let __sym6 = __pop_Variant10(__symbols); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant13(__symbols); + let __sym3 = __pop_Variant64(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym6.2; + let __nt = match super::__action1597::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (7, 207) + } + 588 => { + // ParameterList = OneOrMore>, ",", "/", ",", "*", StarTypedParameter, ("," >)+, ",", KwargParameter => ActionFn(1598); + assert!(__symbols.len() >= 9); + let __sym8 = __pop_Variant10(__symbols); + let __sym7 = __pop_Variant0(__symbols); + let __sym6 = __pop_Variant13(__symbols); + let __sym5 = __pop_Variant64(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym8.2; + let __nt = match super::__action1598::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (9, 207) + } + 589 => { + // ParameterList = OneOrMore>, ",", "/", ("," >)+, ",", "*", StarTypedParameter, ("," >)+, ",", KwargParameter => ActionFn(1599); + assert!(__symbols.len() >= 10); + let __sym9 = __pop_Variant10(__symbols); + let __sym8 = __pop_Variant0(__symbols); + let __sym7 = __pop_Variant13(__symbols); + let __sym6 = __pop_Variant64(__symbols); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant13(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym9.2; + let __nt = match super::__action1599::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (10, 207) + } + 590 => { + // ParameterList = OneOrMore>, ",", "*", ("," >)+, ",", KwargParameter => ActionFn(1600); + assert!(__symbols.len() >= 6); + let __sym5 = __pop_Variant10(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant13(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym5.2; + let __nt = match super::__action1600::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (6, 207) + } + 591 => { + // ParameterList = OneOrMore>, ",", "/", ",", "*", ("," >)+, ",", KwargParameter => ActionFn(1601); + assert!(__symbols.len() >= 8); + let __sym7 = __pop_Variant10(__symbols); + let __sym6 = __pop_Variant0(__symbols); + let __sym5 = __pop_Variant13(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym7.2; + let __nt = match super::__action1601::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (8, 207) + } + 592 => { + // ParameterList = OneOrMore>, ",", "/", ("," >)+, ",", "*", ("," >)+, ",", KwargParameter => ActionFn(1602); + assert!(__symbols.len() >= 9); + let __sym8 = __pop_Variant10(__symbols); + let __sym7 = __pop_Variant0(__symbols); + let __sym6 = __pop_Variant13(__symbols); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant13(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym8.2; + let __nt = match super::__action1602::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (9, 207) + } + 593 => { + // ParameterList = OneOrMore>, ",", "*", StarTypedParameter => ActionFn(1603); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant64(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = match super::__action1603::<>(mode, __sym0, __sym1, __sym2, __sym3) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (4, 207) + } + 594 => { + // ParameterList = OneOrMore>, ",", "/", ",", "*", StarTypedParameter => ActionFn(1604); + assert!(__symbols.len() >= 6); + let __sym5 = __pop_Variant64(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym5.2; + let __nt = match super::__action1604::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (6, 207) + } + 595 => { + // ParameterList = OneOrMore>, ",", "/", ("," >)+, ",", "*", StarTypedParameter => ActionFn(1605); + assert!(__symbols.len() >= 7); + let __sym6 = __pop_Variant64(__symbols); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant13(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym6.2; + let __nt = match super::__action1605::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (7, 207) + } + 596 => { + // ParameterList = OneOrMore>, ",", "*" => ActionFn(1606); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = match super::__action1606::<>(mode, __sym0, __sym1, __sym2) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (3, 207) + } + 597 => { + // ParameterList = OneOrMore>, ",", "/", ",", "*" => ActionFn(1607); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym4.2; + let __nt = match super::__action1607::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (5, 207) + } + 598 => { + // ParameterList = OneOrMore>, ",", "/", ("," >)+, ",", "*" => ActionFn(1608); + assert!(__symbols.len() >= 6); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant13(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym5.2; + let __nt = match super::__action1608::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (6, 207) + } + 599 => { + // ParameterList = OneOrMore>, ",", "*", StarTypedParameter, ("," >)+ => ActionFn(1609); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant13(__symbols); + let __sym3 = __pop_Variant64(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym4.2; + let __nt = match super::__action1609::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (5, 207) + } + 600 => { + // ParameterList = OneOrMore>, ",", "/", ",", "*", StarTypedParameter, ("," >)+ => ActionFn(1610); + assert!(__symbols.len() >= 7); + let __sym6 = __pop_Variant13(__symbols); + let __sym5 = __pop_Variant64(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym6.2; + let __nt = match super::__action1610::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (7, 207) + } + 601 => { + // ParameterList = OneOrMore>, ",", "/", ("," >)+, ",", "*", StarTypedParameter, ("," >)+ => ActionFn(1611); + assert!(__symbols.len() >= 8); + let __sym7 = __pop_Variant13(__symbols); + let __sym6 = __pop_Variant64(__symbols); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant13(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym7.2; + let __nt = match super::__action1611::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (8, 207) + } + 602 => { + // ParameterList = OneOrMore>, ",", "*", ("," >)+ => ActionFn(1612); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant13(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = match super::__action1612::<>(mode, __sym0, __sym1, __sym2, __sym3) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (4, 207) + } + 603 => { + // ParameterList = OneOrMore>, ",", "/", ",", "*", ("," >)+ => ActionFn(1613); + assert!(__symbols.len() >= 6); + let __sym5 = __pop_Variant13(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym5.2; + let __nt = match super::__action1613::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (6, 207) + } + 604 => { + // ParameterList = OneOrMore>, ",", "/", ("," >)+, ",", "*", ("," >)+ => ActionFn(1614); + assert!(__symbols.len() >= 7); + let __sym6 = __pop_Variant13(__symbols); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant13(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym6.2; + let __nt = match super::__action1614::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (7, 207) + } + 605 => { + // ParameterList = OneOrMore> => ActionFn(1615); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = match super::__action1615::<>(mode, __sym0) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (1, 207) + } + 606 => { + // ParameterList = OneOrMore>, ",", "/" => ActionFn(1616); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = match super::__action1616::<>(mode, __sym0, __sym1, __sym2) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (3, 207) + } + 607 => { + // ParameterList = OneOrMore>, ",", "/", ("," >)+ => ActionFn(1617); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant13(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = match super::__action1617::<>(mode, __sym0, __sym1, __sym2, __sym3) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (4, 207) + } + 608 => { + // ParameterList = OneOrMore>, ",", KwargParameter, "," => ActionFn(1618); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant10(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = match super::__action1618::<>(mode, __sym0, __sym1, __sym2, __sym3) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (4, 207) + } + 609 => { + // ParameterList = OneOrMore>, ",", "/", ",", KwargParameter, "," => ActionFn(1619); + assert!(__symbols.len() >= 6); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant10(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym5.2; + let __nt = match super::__action1619::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (6, 207) + } + 610 => { + // ParameterList = OneOrMore>, ",", "/", ("," >)+, ",", KwargParameter, "," => ActionFn(1620); + assert!(__symbols.len() >= 7); + let __sym6 = __pop_Variant0(__symbols); + let __sym5 = __pop_Variant10(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant13(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym6.2; + let __nt = match super::__action1620::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (7, 207) + } + 611 => { + // ParameterList = OneOrMore>, ",", KwargParameter => ActionFn(1621); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant10(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = match super::__action1621::<>(mode, __sym0, __sym1, __sym2) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (3, 207) + } + 612 => { + // ParameterList = OneOrMore>, ",", "/", ",", KwargParameter => ActionFn(1622); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant10(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym4.2; + let __nt = match super::__action1622::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (5, 207) + } + 613 => { + // ParameterList = OneOrMore>, ",", "/", ("," >)+, ",", KwargParameter => ActionFn(1623); + assert!(__symbols.len() >= 6); + let __sym5 = __pop_Variant10(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant13(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym5.2; + let __nt = match super::__action1623::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (6, 207) + } + 614 => { + // ParameterList = "*", StarTypedParameter, ",", KwargParameter, "," => ActionFn(1360); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant10(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant64(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym4.2; + let __nt = match super::__action1360::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (5, 207) + } + 615 => { + // ParameterList = "*", ",", KwargParameter, "," => ActionFn(1361); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant10(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = match super::__action1361::<>(mode, __sym0, __sym1, __sym2, __sym3) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (4, 207) + } + 616 => { + // ParameterList = "*", StarTypedParameter, ("," >)+, ",", KwargParameter, "," => ActionFn(1362); + assert!(__symbols.len() >= 6); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant10(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant13(__symbols); + let __sym1 = __pop_Variant64(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym5.2; + let __nt = match super::__action1362::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (6, 207) + } + 617 => { + // ParameterList = "*", ("," >)+, ",", KwargParameter, "," => ActionFn(1363); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant10(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant13(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym4.2; + let __nt = match super::__action1363::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (5, 207) + } + 618 => { + // ParameterList = "*", StarTypedParameter, "," => ActionFn(1364); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant64(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = match super::__action1364::<>(mode, __sym0, __sym1, __sym2) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (3, 207) + } + 619 => { + // ParameterList = "*", "," => ActionFn(1365); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = match super::__action1365::<>(mode, __sym0, __sym1) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (2, 207) + } + 620 => { + // ParameterList = "*", StarTypedParameter, ("," >)+, "," => ActionFn(1366); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant13(__symbols); + let __sym1 = __pop_Variant64(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = match super::__action1366::<>(mode, __sym0, __sym1, __sym2, __sym3) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (4, 207) + } + 621 => { + // ParameterList = "*", ("," >)+, "," => ActionFn(1367); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant13(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = match super::__action1367::<>(mode, __sym0, __sym1, __sym2) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (3, 207) + } + 622 => { + // ParameterList = "*", StarTypedParameter, ",", KwargParameter => ActionFn(1368); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant10(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant64(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = match super::__action1368::<>(mode, __sym0, __sym1, __sym2, __sym3) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (4, 207) + } + 623 => { + // ParameterList = "*", ",", KwargParameter => ActionFn(1369); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant10(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = match super::__action1369::<>(mode, __sym0, __sym1, __sym2) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (3, 207) + } + 624 => { + // ParameterList = "*", StarTypedParameter, ("," >)+, ",", KwargParameter => ActionFn(1370); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant10(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant13(__symbols); + let __sym1 = __pop_Variant64(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym4.2; + let __nt = match super::__action1370::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (5, 207) + } + 625 => { + // ParameterList = "*", ("," >)+, ",", KwargParameter => ActionFn(1371); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant10(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant13(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = match super::__action1371::<>(mode, __sym0, __sym1, __sym2, __sym3) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (4, 207) + } + 626 => { + // ParameterList = "*", StarTypedParameter => ActionFn(1372); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant64(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = match super::__action1372::<>(mode, __sym0, __sym1) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (2, 207) + } + 627 => { + // ParameterList = "*" => ActionFn(1373); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = match super::__action1373::<>(mode, __sym0) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (1, 207) + } + 628 => { + // ParameterList = "*", StarTypedParameter, ("," >)+ => ActionFn(1374); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant13(__symbols); + let __sym1 = __pop_Variant64(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = match super::__action1374::<>(mode, __sym0, __sym1, __sym2) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (3, 207) + } + 629 => { + // ParameterList = "*", ("," >)+ => ActionFn(1375); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant13(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = match super::__action1375::<>(mode, __sym0, __sym1) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (2, 207) + } + 630 => { + __reduce630(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 631 => { + __reduce631(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 632 => { + // ParameterList = OneOrMore>, ",", "*", StarUntypedParameter, ",", KwargParameter, "," => ActionFn(1624); + assert!(__symbols.len() >= 7); + let __sym6 = __pop_Variant0(__symbols); + let __sym5 = __pop_Variant10(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant64(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym6.2; + let __nt = match super::__action1624::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (7, 208) + } + 633 => { + // ParameterList = OneOrMore>, ",", "/", ",", "*", StarUntypedParameter, ",", KwargParameter, "," => ActionFn(1625); + assert!(__symbols.len() >= 9); + let __sym8 = __pop_Variant0(__symbols); + let __sym7 = __pop_Variant10(__symbols); + let __sym6 = __pop_Variant0(__symbols); + let __sym5 = __pop_Variant64(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym8.2; + let __nt = match super::__action1625::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (9, 208) + } + 634 => { + // ParameterList = OneOrMore>, ",", "/", ("," >)+, ",", "*", StarUntypedParameter, ",", KwargParameter, "," => ActionFn(1626); + assert!(__symbols.len() >= 10); + let __sym9 = __pop_Variant0(__symbols); + let __sym8 = __pop_Variant10(__symbols); + let __sym7 = __pop_Variant0(__symbols); + let __sym6 = __pop_Variant64(__symbols); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant13(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym9.2; + let __nt = match super::__action1626::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (10, 208) + } + 635 => { + // ParameterList = OneOrMore>, ",", "*", ",", KwargParameter, "," => ActionFn(1627); + assert!(__symbols.len() >= 6); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant10(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym5.2; + let __nt = match super::__action1627::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (6, 208) + } + 636 => { + // ParameterList = OneOrMore>, ",", "/", ",", "*", ",", KwargParameter, "," => ActionFn(1628); + assert!(__symbols.len() >= 8); + let __sym7 = __pop_Variant0(__symbols); + let __sym6 = __pop_Variant10(__symbols); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym7.2; + let __nt = match super::__action1628::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (8, 208) + } + 637 => { + // ParameterList = OneOrMore>, ",", "/", ("," >)+, ",", "*", ",", KwargParameter, "," => ActionFn(1629); + assert!(__symbols.len() >= 9); + let __sym8 = __pop_Variant0(__symbols); + let __sym7 = __pop_Variant10(__symbols); + let __sym6 = __pop_Variant0(__symbols); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant13(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym8.2; + let __nt = match super::__action1629::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (9, 208) + } + 638 => { + // ParameterList = OneOrMore>, ",", "*", StarUntypedParameter, ("," >)+, ",", KwargParameter, "," => ActionFn(1630); + assert!(__symbols.len() >= 8); + let __sym7 = __pop_Variant0(__symbols); + let __sym6 = __pop_Variant10(__symbols); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant13(__symbols); + let __sym3 = __pop_Variant64(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym7.2; + let __nt = match super::__action1630::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (8, 208) + } + 639 => { + // ParameterList = OneOrMore>, ",", "/", ",", "*", StarUntypedParameter, ("," >)+, ",", KwargParameter, "," => ActionFn(1631); + assert!(__symbols.len() >= 10); + let __sym9 = __pop_Variant0(__symbols); + let __sym8 = __pop_Variant10(__symbols); + let __sym7 = __pop_Variant0(__symbols); + let __sym6 = __pop_Variant13(__symbols); + let __sym5 = __pop_Variant64(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym9.2; + let __nt = match super::__action1631::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (10, 208) + } + 640 => { + // ParameterList = OneOrMore>, ",", "/", ("," >)+, ",", "*", StarUntypedParameter, ("," >)+, ",", KwargParameter, "," => ActionFn(1632); + assert!(__symbols.len() >= 11); + let __sym10 = __pop_Variant0(__symbols); + let __sym9 = __pop_Variant10(__symbols); + let __sym8 = __pop_Variant0(__symbols); + let __sym7 = __pop_Variant13(__symbols); + let __sym6 = __pop_Variant64(__symbols); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant13(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym10.2; + let __nt = match super::__action1632::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9, __sym10) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (11, 208) + } + 641 => { + // ParameterList = OneOrMore>, ",", "*", ("," >)+, ",", KwargParameter, "," => ActionFn(1633); + assert!(__symbols.len() >= 7); + let __sym6 = __pop_Variant0(__symbols); + let __sym5 = __pop_Variant10(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant13(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym6.2; + let __nt = match super::__action1633::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (7, 208) + } + 642 => { + // ParameterList = OneOrMore>, ",", "/", ",", "*", ("," >)+, ",", KwargParameter, "," => ActionFn(1634); + assert!(__symbols.len() >= 9); + let __sym8 = __pop_Variant0(__symbols); + let __sym7 = __pop_Variant10(__symbols); + let __sym6 = __pop_Variant0(__symbols); + let __sym5 = __pop_Variant13(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym8.2; + let __nt = match super::__action1634::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (9, 208) + } + 643 => { + // ParameterList = OneOrMore>, ",", "/", ("," >)+, ",", "*", ("," >)+, ",", KwargParameter, "," => ActionFn(1635); + assert!(__symbols.len() >= 10); + let __sym9 = __pop_Variant0(__symbols); + let __sym8 = __pop_Variant10(__symbols); + let __sym7 = __pop_Variant0(__symbols); + let __sym6 = __pop_Variant13(__symbols); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant13(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym9.2; + let __nt = match super::__action1635::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (10, 208) + } + 644 => { + // ParameterList = OneOrMore>, ",", "*", StarUntypedParameter, "," => ActionFn(1636); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant64(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym4.2; + let __nt = match super::__action1636::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (5, 208) + } + 645 => { + // ParameterList = OneOrMore>, ",", "/", ",", "*", StarUntypedParameter, "," => ActionFn(1637); + assert!(__symbols.len() >= 7); + let __sym6 = __pop_Variant0(__symbols); + let __sym5 = __pop_Variant64(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym6.2; + let __nt = match super::__action1637::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (7, 208) + } + 646 => { + // ParameterList = OneOrMore>, ",", "/", ("," >)+, ",", "*", StarUntypedParameter, "," => ActionFn(1638); + assert!(__symbols.len() >= 8); + let __sym7 = __pop_Variant0(__symbols); + let __sym6 = __pop_Variant64(__symbols); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant13(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym7.2; + let __nt = match super::__action1638::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (8, 208) + } + 647 => { + // ParameterList = OneOrMore>, ",", "*", "," => ActionFn(1639); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = match super::__action1639::<>(mode, __sym0, __sym1, __sym2, __sym3) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (4, 208) + } + 648 => { + // ParameterList = OneOrMore>, ",", "/", ",", "*", "," => ActionFn(1640); + assert!(__symbols.len() >= 6); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym5.2; + let __nt = match super::__action1640::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (6, 208) + } + 649 => { + // ParameterList = OneOrMore>, ",", "/", ("," >)+, ",", "*", "," => ActionFn(1641); + assert!(__symbols.len() >= 7); + let __sym6 = __pop_Variant0(__symbols); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant13(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym6.2; + let __nt = match super::__action1641::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (7, 208) + } + 650 => { + // ParameterList = OneOrMore>, ",", "*", StarUntypedParameter, ("," >)+, "," => ActionFn(1642); + assert!(__symbols.len() >= 6); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant13(__symbols); + let __sym3 = __pop_Variant64(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym5.2; + let __nt = match super::__action1642::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (6, 208) + } + 651 => { + // ParameterList = OneOrMore>, ",", "/", ",", "*", StarUntypedParameter, ("," >)+, "," => ActionFn(1643); + assert!(__symbols.len() >= 8); + let __sym7 = __pop_Variant0(__symbols); + let __sym6 = __pop_Variant13(__symbols); + let __sym5 = __pop_Variant64(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym7.2; + let __nt = match super::__action1643::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (8, 208) + } + 652 => { + // ParameterList = OneOrMore>, ",", "/", ("," >)+, ",", "*", StarUntypedParameter, ("," >)+, "," => ActionFn(1644); + assert!(__symbols.len() >= 9); + let __sym8 = __pop_Variant0(__symbols); + let __sym7 = __pop_Variant13(__symbols); + let __sym6 = __pop_Variant64(__symbols); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant13(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym8.2; + let __nt = match super::__action1644::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (9, 208) + } + 653 => { + // ParameterList = OneOrMore>, ",", "*", ("," >)+, "," => ActionFn(1645); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant13(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym4.2; + let __nt = match super::__action1645::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (5, 208) + } + 654 => { + // ParameterList = OneOrMore>, ",", "/", ",", "*", ("," >)+, "," => ActionFn(1646); + assert!(__symbols.len() >= 7); + let __sym6 = __pop_Variant0(__symbols); + let __sym5 = __pop_Variant13(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym6.2; + let __nt = match super::__action1646::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (7, 208) + } + 655 => { + // ParameterList = OneOrMore>, ",", "/", ("," >)+, ",", "*", ("," >)+, "," => ActionFn(1647); + assert!(__symbols.len() >= 8); + let __sym7 = __pop_Variant0(__symbols); + let __sym6 = __pop_Variant13(__symbols); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant13(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym7.2; + let __nt = match super::__action1647::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (8, 208) + } + 656 => { + // ParameterList = OneOrMore>, "," => ActionFn(1648); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = match super::__action1648::<>(mode, __sym0, __sym1) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (2, 208) + } + 657 => { + // ParameterList = OneOrMore>, ",", "/", "," => ActionFn(1649); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = match super::__action1649::<>(mode, __sym0, __sym1, __sym2, __sym3) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (4, 208) + } + 658 => { + // ParameterList = OneOrMore>, ",", "/", ("," >)+, "," => ActionFn(1650); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant13(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym4.2; + let __nt = match super::__action1650::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (5, 208) + } + 659 => { + // ParameterList = OneOrMore>, ",", "*", StarUntypedParameter, ",", KwargParameter => ActionFn(1651); + assert!(__symbols.len() >= 6); + let __sym5 = __pop_Variant10(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant64(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym5.2; + let __nt = match super::__action1651::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (6, 208) + } + 660 => { + // ParameterList = OneOrMore>, ",", "/", ",", "*", StarUntypedParameter, ",", KwargParameter => ActionFn(1652); + assert!(__symbols.len() >= 8); + let __sym7 = __pop_Variant10(__symbols); + let __sym6 = __pop_Variant0(__symbols); + let __sym5 = __pop_Variant64(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym7.2; + let __nt = match super::__action1652::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (8, 208) + } + 661 => { + // ParameterList = OneOrMore>, ",", "/", ("," >)+, ",", "*", StarUntypedParameter, ",", KwargParameter => ActionFn(1653); + assert!(__symbols.len() >= 9); + let __sym8 = __pop_Variant10(__symbols); + let __sym7 = __pop_Variant0(__symbols); + let __sym6 = __pop_Variant64(__symbols); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant13(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym8.2; + let __nt = match super::__action1653::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (9, 208) + } + 662 => { + // ParameterList = OneOrMore>, ",", "*", ",", KwargParameter => ActionFn(1654); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant10(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym4.2; + let __nt = match super::__action1654::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (5, 208) + } + 663 => { + // ParameterList = OneOrMore>, ",", "/", ",", "*", ",", KwargParameter => ActionFn(1655); + assert!(__symbols.len() >= 7); + let __sym6 = __pop_Variant10(__symbols); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym6.2; + let __nt = match super::__action1655::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (7, 208) + } + 664 => { + // ParameterList = OneOrMore>, ",", "/", ("," >)+, ",", "*", ",", KwargParameter => ActionFn(1656); + assert!(__symbols.len() >= 8); + let __sym7 = __pop_Variant10(__symbols); + let __sym6 = __pop_Variant0(__symbols); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant13(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym7.2; + let __nt = match super::__action1656::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (8, 208) + } + 665 => { + // ParameterList = OneOrMore>, ",", "*", StarUntypedParameter, ("," >)+, ",", KwargParameter => ActionFn(1657); + assert!(__symbols.len() >= 7); + let __sym6 = __pop_Variant10(__symbols); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant13(__symbols); + let __sym3 = __pop_Variant64(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym6.2; + let __nt = match super::__action1657::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (7, 208) + } + 666 => { + // ParameterList = OneOrMore>, ",", "/", ",", "*", StarUntypedParameter, ("," >)+, ",", KwargParameter => ActionFn(1658); + assert!(__symbols.len() >= 9); + let __sym8 = __pop_Variant10(__symbols); + let __sym7 = __pop_Variant0(__symbols); + let __sym6 = __pop_Variant13(__symbols); + let __sym5 = __pop_Variant64(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym8.2; + let __nt = match super::__action1658::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (9, 208) + } + 667 => { + // ParameterList = OneOrMore>, ",", "/", ("," >)+, ",", "*", StarUntypedParameter, ("," >)+, ",", KwargParameter => ActionFn(1659); + assert!(__symbols.len() >= 10); + let __sym9 = __pop_Variant10(__symbols); + let __sym8 = __pop_Variant0(__symbols); + let __sym7 = __pop_Variant13(__symbols); + let __sym6 = __pop_Variant64(__symbols); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant13(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym9.2; + let __nt = match super::__action1659::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (10, 208) + } + 668 => { + // ParameterList = OneOrMore>, ",", "*", ("," >)+, ",", KwargParameter => ActionFn(1660); + assert!(__symbols.len() >= 6); + let __sym5 = __pop_Variant10(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant13(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym5.2; + let __nt = match super::__action1660::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (6, 208) + } + 669 => { + // ParameterList = OneOrMore>, ",", "/", ",", "*", ("," >)+, ",", KwargParameter => ActionFn(1661); + assert!(__symbols.len() >= 8); + let __sym7 = __pop_Variant10(__symbols); + let __sym6 = __pop_Variant0(__symbols); + let __sym5 = __pop_Variant13(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym7.2; + let __nt = match super::__action1661::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (8, 208) + } + 670 => { + // ParameterList = OneOrMore>, ",", "/", ("," >)+, ",", "*", ("," >)+, ",", KwargParameter => ActionFn(1662); + assert!(__symbols.len() >= 9); + let __sym8 = __pop_Variant10(__symbols); + let __sym7 = __pop_Variant0(__symbols); + let __sym6 = __pop_Variant13(__symbols); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant13(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym8.2; + let __nt = match super::__action1662::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (9, 208) + } + 671 => { + // ParameterList = OneOrMore>, ",", "*", StarUntypedParameter => ActionFn(1663); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant64(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = match super::__action1663::<>(mode, __sym0, __sym1, __sym2, __sym3) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (4, 208) + } + 672 => { + // ParameterList = OneOrMore>, ",", "/", ",", "*", StarUntypedParameter => ActionFn(1664); + assert!(__symbols.len() >= 6); + let __sym5 = __pop_Variant64(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym5.2; + let __nt = match super::__action1664::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (6, 208) + } + 673 => { + // ParameterList = OneOrMore>, ",", "/", ("," >)+, ",", "*", StarUntypedParameter => ActionFn(1665); + assert!(__symbols.len() >= 7); + let __sym6 = __pop_Variant64(__symbols); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant13(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym6.2; + let __nt = match super::__action1665::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (7, 208) + } + 674 => { + // ParameterList = OneOrMore>, ",", "*" => ActionFn(1666); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = match super::__action1666::<>(mode, __sym0, __sym1, __sym2) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (3, 208) + } + 675 => { + // ParameterList = OneOrMore>, ",", "/", ",", "*" => ActionFn(1667); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym4.2; + let __nt = match super::__action1667::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (5, 208) + } + 676 => { + // ParameterList = OneOrMore>, ",", "/", ("," >)+, ",", "*" => ActionFn(1668); + assert!(__symbols.len() >= 6); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant13(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym5.2; + let __nt = match super::__action1668::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (6, 208) + } + 677 => { + // ParameterList = OneOrMore>, ",", "*", StarUntypedParameter, ("," >)+ => ActionFn(1669); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant13(__symbols); + let __sym3 = __pop_Variant64(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym4.2; + let __nt = match super::__action1669::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (5, 208) + } + 678 => { + // ParameterList = OneOrMore>, ",", "/", ",", "*", StarUntypedParameter, ("," >)+ => ActionFn(1670); + assert!(__symbols.len() >= 7); + let __sym6 = __pop_Variant13(__symbols); + let __sym5 = __pop_Variant64(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym6.2; + let __nt = match super::__action1670::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (7, 208) + } + 679 => { + // ParameterList = OneOrMore>, ",", "/", ("," >)+, ",", "*", StarUntypedParameter, ("," >)+ => ActionFn(1671); + assert!(__symbols.len() >= 8); + let __sym7 = __pop_Variant13(__symbols); + let __sym6 = __pop_Variant64(__symbols); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant13(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym7.2; + let __nt = match super::__action1671::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (8, 208) + } + 680 => { + // ParameterList = OneOrMore>, ",", "*", ("," >)+ => ActionFn(1672); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant13(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = match super::__action1672::<>(mode, __sym0, __sym1, __sym2, __sym3) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (4, 208) + } + 681 => { + // ParameterList = OneOrMore>, ",", "/", ",", "*", ("," >)+ => ActionFn(1673); + assert!(__symbols.len() >= 6); + let __sym5 = __pop_Variant13(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym5.2; + let __nt = match super::__action1673::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (6, 208) + } + 682 => { + // ParameterList = OneOrMore>, ",", "/", ("," >)+, ",", "*", ("," >)+ => ActionFn(1674); + assert!(__symbols.len() >= 7); + let __sym6 = __pop_Variant13(__symbols); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant13(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym6.2; + let __nt = match super::__action1674::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (7, 208) + } + 683 => { + // ParameterList = OneOrMore> => ActionFn(1675); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = match super::__action1675::<>(mode, __sym0) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (1, 208) + } + 684 => { + // ParameterList = OneOrMore>, ",", "/" => ActionFn(1676); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = match super::__action1676::<>(mode, __sym0, __sym1, __sym2) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (3, 208) + } + 685 => { + // ParameterList = OneOrMore>, ",", "/", ("," >)+ => ActionFn(1677); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant13(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = match super::__action1677::<>(mode, __sym0, __sym1, __sym2, __sym3) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (4, 208) + } + 686 => { + // ParameterList = OneOrMore>, ",", KwargParameter, "," => ActionFn(1678); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant10(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = match super::__action1678::<>(mode, __sym0, __sym1, __sym2, __sym3) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (4, 208) + } + 687 => { + // ParameterList = OneOrMore>, ",", "/", ",", KwargParameter, "," => ActionFn(1679); + assert!(__symbols.len() >= 6); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant10(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym5.2; + let __nt = match super::__action1679::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (6, 208) + } + 688 => { + // ParameterList = OneOrMore>, ",", "/", ("," >)+, ",", KwargParameter, "," => ActionFn(1680); + assert!(__symbols.len() >= 7); + let __sym6 = __pop_Variant0(__symbols); + let __sym5 = __pop_Variant10(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant13(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym6.2; + let __nt = match super::__action1680::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (7, 208) + } + 689 => { + // ParameterList = OneOrMore>, ",", KwargParameter => ActionFn(1681); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant10(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = match super::__action1681::<>(mode, __sym0, __sym1, __sym2) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (3, 208) + } + 690 => { + // ParameterList = OneOrMore>, ",", "/", ",", KwargParameter => ActionFn(1682); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant10(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym4.2; + let __nt = match super::__action1682::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (5, 208) + } + 691 => { + // ParameterList = OneOrMore>, ",", "/", ("," >)+, ",", KwargParameter => ActionFn(1683); + assert!(__symbols.len() >= 6); + let __sym5 = __pop_Variant10(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant13(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym5.2; + let __nt = match super::__action1683::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (6, 208) + } + 692 => { + // ParameterList = "*", StarUntypedParameter, ",", KwargParameter, "," => ActionFn(1398); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant10(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant64(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym4.2; + let __nt = match super::__action1398::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (5, 208) + } + 693 => { + // ParameterList = "*", ",", KwargParameter, "," => ActionFn(1399); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant10(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = match super::__action1399::<>(mode, __sym0, __sym1, __sym2, __sym3) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (4, 208) + } + 694 => { + // ParameterList = "*", StarUntypedParameter, ("," >)+, ",", KwargParameter, "," => ActionFn(1400); + assert!(__symbols.len() >= 6); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant10(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant13(__symbols); + let __sym1 = __pop_Variant64(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym5.2; + let __nt = match super::__action1400::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (6, 208) + } + 695 => { + // ParameterList = "*", ("," >)+, ",", KwargParameter, "," => ActionFn(1401); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant10(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant13(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym4.2; + let __nt = match super::__action1401::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (5, 208) + } + 696 => { + // ParameterList = "*", StarUntypedParameter, "," => ActionFn(1402); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant64(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = match super::__action1402::<>(mode, __sym0, __sym1, __sym2) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (3, 208) + } + 697 => { + // ParameterList = "*", "," => ActionFn(1403); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = match super::__action1403::<>(mode, __sym0, __sym1) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (2, 208) + } + 698 => { + // ParameterList = "*", StarUntypedParameter, ("," >)+, "," => ActionFn(1404); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant13(__symbols); + let __sym1 = __pop_Variant64(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = match super::__action1404::<>(mode, __sym0, __sym1, __sym2, __sym3) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (4, 208) + } + 699 => { + // ParameterList = "*", ("," >)+, "," => ActionFn(1405); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant13(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = match super::__action1405::<>(mode, __sym0, __sym1, __sym2) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (3, 208) + } + 700 => { + // ParameterList = "*", StarUntypedParameter, ",", KwargParameter => ActionFn(1406); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant10(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant64(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = match super::__action1406::<>(mode, __sym0, __sym1, __sym2, __sym3) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (4, 208) + } + 701 => { + // ParameterList = "*", ",", KwargParameter => ActionFn(1407); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant10(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = match super::__action1407::<>(mode, __sym0, __sym1, __sym2) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (3, 208) + } + 702 => { + // ParameterList = "*", StarUntypedParameter, ("," >)+, ",", KwargParameter => ActionFn(1408); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant10(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant13(__symbols); + let __sym1 = __pop_Variant64(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym4.2; + let __nt = match super::__action1408::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (5, 208) + } + 703 => { + // ParameterList = "*", ("," >)+, ",", KwargParameter => ActionFn(1409); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant10(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant13(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = match super::__action1409::<>(mode, __sym0, __sym1, __sym2, __sym3) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (4, 208) + } + 704 => { + // ParameterList = "*", StarUntypedParameter => ActionFn(1410); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant64(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = match super::__action1410::<>(mode, __sym0, __sym1) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (2, 208) + } + 705 => { + // ParameterList = "*" => ActionFn(1411); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = match super::__action1411::<>(mode, __sym0) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (1, 208) + } + 706 => { + // ParameterList = "*", StarUntypedParameter, ("," >)+ => ActionFn(1412); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant13(__symbols); + let __sym1 = __pop_Variant64(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = match super::__action1412::<>(mode, __sym0, __sym1, __sym2) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (3, 208) + } + 707 => { + // ParameterList = "*", ("," >)+ => ActionFn(1413); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant13(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = match super::__action1413::<>(mode, __sym0, __sym1) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (2, 208) + } + 708 => { + __reduce708(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 709 => { + __reduce709(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 710 => { + __reduce710(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 711 => { + __reduce711(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 712 => { + // ParameterListStarArgs = "*", StarTypedParameter, ",", KwargParameter => ActionFn(875); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant10(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant64(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = match super::__action875::<>(mode, __sym0, __sym1, __sym2, __sym3) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (4, 210) + } + 713 => { + // ParameterListStarArgs = "*", ",", KwargParameter => ActionFn(876); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant10(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = match super::__action876::<>(mode, __sym0, __sym1, __sym2) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (3, 210) + } + 714 => { + // ParameterListStarArgs = "*", StarTypedParameter, ("," >)+, ",", KwargParameter => ActionFn(877); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant10(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant13(__symbols); + let __sym1 = __pop_Variant64(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym4.2; + let __nt = match super::__action877::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (5, 210) + } + 715 => { + // ParameterListStarArgs = "*", ("," >)+, ",", KwargParameter => ActionFn(878); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant10(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant13(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = match super::__action878::<>(mode, __sym0, __sym1, __sym2, __sym3) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (4, 210) + } + 716 => { + // ParameterListStarArgs = "*", StarTypedParameter => ActionFn(879); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant64(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = match super::__action879::<>(mode, __sym0, __sym1) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (2, 210) + } + 717 => { + // ParameterListStarArgs = "*" => ActionFn(880); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = match super::__action880::<>(mode, __sym0) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 210) + } + 718 => { + // ParameterListStarArgs = "*", StarTypedParameter, ("," >)+ => ActionFn(881); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant13(__symbols); + let __sym1 = __pop_Variant64(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = match super::__action881::<>(mode, __sym0, __sym1, __sym2) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (3, 210) + } + 719 => { + // ParameterListStarArgs = "*", ("," >)+ => ActionFn(882); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant13(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = match super::__action882::<>(mode, __sym0, __sym1) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (2, 210) + } + 720 => { + // ParameterListStarArgs = "*", StarUntypedParameter, ",", KwargParameter => ActionFn(1001); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant10(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant64(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = match super::__action1001::<>(mode, __sym0, __sym1, __sym2, __sym3) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (4, 211) + } + 721 => { + // ParameterListStarArgs = "*", ",", KwargParameter => ActionFn(1002); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant10(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = match super::__action1002::<>(mode, __sym0, __sym1, __sym2) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (3, 211) + } + 722 => { + // ParameterListStarArgs = "*", StarUntypedParameter, ("," >)+, ",", KwargParameter => ActionFn(1003); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant10(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant13(__symbols); + let __sym1 = __pop_Variant64(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym4.2; + let __nt = match super::__action1003::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (5, 211) + } + 723 => { + // ParameterListStarArgs = "*", ("," >)+, ",", KwargParameter => ActionFn(1004); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant10(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant13(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = match super::__action1004::<>(mode, __sym0, __sym1, __sym2, __sym3) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (4, 211) + } + 724 => { + // ParameterListStarArgs = "*", StarUntypedParameter => ActionFn(1005); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant64(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = match super::__action1005::<>(mode, __sym0, __sym1) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (2, 211) + } + 725 => { + // ParameterListStarArgs = "*" => ActionFn(1006); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = match super::__action1006::<>(mode, __sym0) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (1, 211) + } + 726 => { + // ParameterListStarArgs = "*", StarUntypedParameter, ("," >)+ => ActionFn(1007); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant13(__symbols); + let __sym1 = __pop_Variant64(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = match super::__action1007::<>(mode, __sym0, __sym1, __sym2) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (3, 211) + } + 727 => { + // ParameterListStarArgs = "*", ("," >)+ => ActionFn(1008); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant13(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = match super::__action1008::<>(mode, __sym0, __sym1) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant14(__nt), __end)); + (2, 211) + } + 728 => { + // Parameters = "(", ParameterList, ")" => ActionFn(1504); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant47(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = match super::__action1504::<>(mode, __sym0, __sym1, __sym2) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (3, 212) + } + 729 => { + // Parameters = "(", ")" => ActionFn(1505); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = match super::__action1505::<>(mode, __sym0, __sym1) { + Ok(v) => v, + Err(e) => return Some(Err(e)), + }; + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (2, 212) + } + 730 => { + __reduce730(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 731 => { + __reduce731(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 732 => { + __reduce732(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 733 => { + __reduce733(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 734 => { + __reduce734(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 735 => { + __reduce735(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 736 => { + __reduce736(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 737 => { + __reduce737(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 738 => { + __reduce738(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 739 => { + __reduce739(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 740 => { + __reduce740(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 741 => { + __reduce741(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 742 => { + __reduce742(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 743 => { + __reduce743(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 744 => { + __reduce744(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 745 => { + __reduce745(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 746 => { + __reduce746(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 747 => { + __reduce747(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 748 => { + __reduce748(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 749 => { + __reduce749(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 750 => { + __reduce750(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 751 => { + __reduce751(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 752 => { + __reduce752(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 753 => { + __reduce753(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 754 => { + __reduce754(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 755 => { + __reduce755(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 756 => { + __reduce756(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 757 => { + __reduce757(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 758 => { + __reduce758(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 759 => { + __reduce759(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 760 => { + __reduce760(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 761 => { + __reduce761(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 762 => { + __reduce762(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 763 => { + __reduce763(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 764 => { + __reduce764(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 765 => { + __reduce765(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 766 => { + __reduce766(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 767 => { + __reduce767(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 768 => { + __reduce768(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 769 => { + __reduce769(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 770 => { + __reduce770(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 771 => { + __reduce771(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 772 => { + __reduce772(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 773 => { + __reduce773(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 774 => { + __reduce774(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 775 => { + __reduce775(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 776 => { + __reduce776(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 777 => { + __reduce777(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 778 => { + __reduce778(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 779 => { + __reduce779(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 780 => { + __reduce780(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 781 => { + __reduce781(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 782 => { + __reduce782(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 783 => { + __reduce783(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 784 => { + __reduce784(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 785 => { + __reduce785(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 786 => { + __reduce786(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 787 => { + __reduce787(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 788 => { + __reduce788(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 789 => { + __reduce789(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 790 => { + __reduce790(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 791 => { + __reduce791(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 792 => { + __reduce792(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 793 => { + __reduce793(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 794 => { + __reduce794(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 795 => { + __reduce795(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 796 => { + __reduce796(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 797 => { + __reduce797(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 798 => { + __reduce798(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 799 => { + __reduce799(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 800 => { + __reduce800(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 801 => { + __reduce801(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 802 => { + __reduce802(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 803 => { + __reduce803(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 804 => { + __reduce804(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 805 => { + __reduce805(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 806 => { + __reduce806(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 807 => { + __reduce807(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 808 => { + __reduce808(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 809 => { + __reduce809(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 810 => { + __reduce810(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 811 => { + __reduce811(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 812 => { + __reduce812(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 813 => { + __reduce813(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 814 => { + __reduce814(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 815 => { + __reduce815(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 816 => { + __reduce816(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 817 => { + __reduce817(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 818 => { + __reduce818(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 819 => { + __reduce819(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 820 => { + __reduce820(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 821 => { + __reduce821(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 822 => { + __reduce822(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 823 => { + __reduce823(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 824 => { + __reduce824(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 825 => { + __reduce825(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 826 => { + __reduce826(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 827 => { + __reduce827(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 828 => { + __reduce828(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 829 => { + __reduce829(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 830 => { + __reduce830(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 831 => { + __reduce831(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 832 => { + __reduce832(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 833 => { + __reduce833(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 834 => { + __reduce834(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 835 => { + __reduce835(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 836 => { + __reduce836(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 837 => { + __reduce837(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 838 => { + __reduce838(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 839 => { + __reduce839(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 840 => { + __reduce840(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 841 => { + __reduce841(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 842 => { + __reduce842(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 843 => { + __reduce843(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 844 => { + __reduce844(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 845 => { + __reduce845(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 846 => { + __reduce846(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 847 => { + __reduce847(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 848 => { + __reduce848(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 849 => { + __reduce849(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 850 => { + __reduce850(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 851 => { + __reduce851(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 852 => { + __reduce852(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 853 => { + __reduce853(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 854 => { + __reduce854(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 855 => { + __reduce855(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 856 => { + __reduce856(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 857 => { + __reduce857(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 858 => { + __reduce858(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 859 => { + __reduce859(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 860 => { + __reduce860(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 861 => { + __reduce861(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 862 => { + __reduce862(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 863 => { + __reduce863(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 864 => { + __reduce864(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 865 => { + __reduce865(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 866 => { + __reduce866(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 867 => { + __reduce867(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 868 => { + __reduce868(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 869 => { + __reduce869(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 870 => { + __reduce870(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 871 => { + __reduce871(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 872 => { + __reduce872(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 873 => { + __reduce873(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 874 => { + __reduce874(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 875 => { + __reduce875(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 876 => { + __reduce876(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 877 => { + __reduce877(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 878 => { + __reduce878(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 879 => { + __reduce879(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 880 => { + __reduce880(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 881 => { + __reduce881(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 882 => { + __reduce882(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 883 => { + __reduce883(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 884 => { + __reduce884(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 885 => { + __reduce885(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 886 => { + __reduce886(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 887 => { + __reduce887(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 888 => { + __reduce888(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 889 => { + __reduce889(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 890 => { + __reduce890(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 891 => { + __reduce891(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 892 => { + __reduce892(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 893 => { + __reduce893(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 894 => { + __reduce894(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 895 => { + __reduce895(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 896 => { + __reduce896(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 897 => { + __reduce897(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 898 => { + __reduce898(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 899 => { + __reduce899(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 900 => { + __reduce900(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 901 => { + __reduce901(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 902 => { + __reduce902(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 903 => { + __reduce903(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 904 => { + __reduce904(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 905 => { + __reduce905(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 906 => { + __reduce906(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 907 => { + __reduce907(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 908 => { + __reduce908(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 909 => { + __reduce909(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 910 => { + __reduce910(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 911 => { + __reduce911(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 912 => { + __reduce912(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 913 => { + __reduce913(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 914 => { + __reduce914(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 915 => { + __reduce915(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 916 => { + __reduce916(mode, __lookahead_start, __symbols, core::marker::PhantomData::<()>) + } + 917 => { + // __Top = Top => ActionFn(0); + let __sym0 = __pop_Variant90(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action0::<>(mode, __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_Variant4< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, (MagicKind, String), TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant4(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant32< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, (Option<(TextSize, TextSize, Option)>, ast::Expr), TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant32(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant14< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, (Option>, Vec, Option>), TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant14(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant60< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, (Option>, ast::Expr), TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant73< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, (Option, Option), TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant73(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant6< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, (String, StringKind, bool), TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant6(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant43< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, (TextSize, (String, StringKind, bool), TextSize), TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant43(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant28< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, (TextSize, ast::Expr, ast::Suite), TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant28(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant30< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, (TextSize, ast::Suite), TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant30(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant83< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, (Vec, Vec), TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant83(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant45< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, (ast::CmpOp, ast::Expr), TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant45(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant61< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, (ast::Expr, ast::Expr), TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant40< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, (ast::Expr, ast::Identifier), TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant40(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant77< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, (ast::Expr, ast::Pattern), TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant77(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant76< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, (ast::Identifier, ast::Pattern), TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant76(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant1< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, (f64, f64), TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant1(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant8< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, (token::Tok, ArgumentList, token::Tok), TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant8(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant21< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, (token::Tok, ast::Identifier), TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant21(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant51< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, ArgumentList, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant3< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, BigInt, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant3(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant10< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, Option>, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant10(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant87< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, Option, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant87(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant5< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, String, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant5(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant49< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, TextSize, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant52< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, Vec<(Option<(TextSize, TextSize, Option)>, ast::Expr)>, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant62< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, Vec<(Option>, ast::Expr)>, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant80< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, Vec<(ast::Expr, ast::Pattern)>, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant80(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant79< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, Vec<(ast::Identifier, ast::Pattern)>, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant79(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant70< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, Vec, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant70(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant81< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, Vec, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant81(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant54< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, Vec, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant34< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, Vec, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant34(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant78< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, Vec, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant78(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant53< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, Vec, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant89< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, Vec, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant89(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant82< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, Vec, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant82(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant41< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, Vec, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant41(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant33< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, alloc::vec::Vec<(Option<(TextSize, TextSize, Option)>, ast::Expr)>, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant33(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant44< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, alloc::vec::Vec<(TextSize, (String, StringKind, bool), TextSize)>, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant44(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant29< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, alloc::vec::Vec<(TextSize, ast::Expr, ast::Suite)>, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant29(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant46< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, alloc::vec::Vec<(ast::CmpOp, ast::Expr)>, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant46(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant22< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, alloc::vec::Vec<(token::Tok, ast::Identifier)>, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant22(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant13< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, alloc::vec::Vec, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant13(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant86< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, alloc::vec::Vec, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant86(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant59< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, alloc::vec::Vec, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant67< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, alloc::vec::Vec, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant67(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant18< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, alloc::vec::Vec, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant18(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant72< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, alloc::vec::Vec, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant72(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant75< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, alloc::vec::Vec, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant75(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant37< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, alloc::vec::Vec, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant37(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant39< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, alloc::vec::Vec, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant39(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant20< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, alloc::vec::Vec, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant20(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant23< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, alloc::vec::Vec, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant23(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant69< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, ast::Alias, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant69(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant64< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, ast::Arg, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant12< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, ast::ArgWithDefault, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant12(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant47< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, ast::Arguments, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant56< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, ast::CmpOp, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant85< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, ast::Comprehension, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant85(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant57< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, ast::Constant, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant58< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, ast::Decorator, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant66< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, ast::ExceptHandler, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant66(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant16< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, ast::Expr, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant16(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant24< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, ast::Identifier, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant24(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant71< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, ast::Int, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant71(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant74< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, ast::MatchCase, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant74(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant90< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, ast::Mod, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant90(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant50< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, ast::Operator, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant36< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, ast::Pattern, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant36(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant38< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, ast::Stmt, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant38(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant26< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, ast::Suite, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant26(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant91< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, ast::TypeParam, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant91(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant93< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, ast::UnaryOp, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant93(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant19< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, ast::WithItem, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant19(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant68< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, core::option::Option<(Option<(TextSize, TextSize, Option)>, ast::Expr)>, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant68(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant15< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, core::option::Option<(Option>, Vec, Option>)>, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant15(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant31< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, core::option::Option<(TextSize, ast::Suite)>, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant31(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant9< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, core::option::Option<(token::Tok, ArgumentList, token::Tok)>, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant9(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant11< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, core::option::Option>>, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant11(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant88< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, core::option::Option>, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant88(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant63< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, core::option::Option>, ast::Expr)>>, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant55< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, core::option::Option>, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant35< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, core::option::Option>, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant35(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant92< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, core::option::Option>, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant92(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant42< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, core::option::Option>, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant42(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant65< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, core::option::Option, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant65(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant48< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, core::option::Option, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant17< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, core::option::Option, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant17(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant25< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, core::option::Option, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant25(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant84< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, core::option::Option, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant84(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant27< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, core::option::Option, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant27(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant7< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, core::option::Option, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant7(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant2< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, f64, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant2(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + fn __pop_Variant0< + >( + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)> + ) -> (TextSize, token::Tok, TextSize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant0(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } + pub(crate) fn __reduce0< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ","? = "," => ActionFn(358); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action358::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + (1, 0) + } + pub(crate) fn __reduce1< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ","? = => ActionFn(359); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action359::<>(mode, &__start, &__end); + __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + (0, 0) + } + pub(crate) fn __reduce2< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ";"? = ";" => ActionFn(382); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action382::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + (1, 1) + } + pub(crate) fn __reduce3< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ";"? = => ActionFn(383); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action383::<>(mode, &__start, &__end); + __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + (0, 1) + } + pub(crate) fn __reduce4< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // "async"? = "async" => ActionFn(315); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action315::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + (1, 2) + } + pub(crate) fn __reduce5< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // "async"? = => ActionFn(316); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action316::<>(mode, &__start, &__end); + __symbols.push((__start, __Symbol::Variant7(__nt), __end)); + (0, 2) + } + pub(crate) fn __reduce6< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ("(" ArgumentList ")") = "(", ArgumentList, ")" => ActionFn(269); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant51(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action269::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (3, 3) + } + pub(crate) fn __reduce7< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ("(" ArgumentList ")")? = "(", ArgumentList, ")" => ActionFn(665); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant51(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action665::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (3, 4) + } + pub(crate) fn __reduce8< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ("(" ArgumentList ")")? = => ActionFn(268); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action268::<>(mode, &__start, &__end); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (0, 4) + } + pub(crate) fn __reduce9< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ("," >) = ",", KwargParameter => ActionFn(412); + 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::__action412::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant10(__nt), __end)); + (2, 5) + } + pub(crate) fn __reduce10< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ("," >)? = ",", KwargParameter => ActionFn(668); + 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::__action668::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); + (2, 6) + } + pub(crate) fn __reduce11< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ("," >)? = => ActionFn(467); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action467::<>(mode, &__start, &__end); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); + (0, 6) + } + pub(crate) fn __reduce12< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ("," >) = ",", KwargParameter => ActionFn(420); + 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::__action420::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant10(__nt), __end)); + (2, 7) + } + pub(crate) fn __reduce13< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ("," >)? = ",", KwargParameter => ActionFn(673); + 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::__action673::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); + (2, 8) + } + pub(crate) fn __reduce14< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ("," >)? = => ActionFn(456); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action456::<>(mode, &__start, &__end); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); + (0, 8) + } + pub(crate) fn __reduce15< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ("," >) = ",", ParameterDef => ActionFn(470); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant12(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action470::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (2, 9) + } + pub(crate) fn __reduce16< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ("," >)* = => ActionFn(468); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action468::<>(mode, &__start, &__end); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (0, 10) + } + pub(crate) fn __reduce17< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ("," >)* = ("," >)+ => ActionFn(469); + let __sym0 = __pop_Variant13(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action469::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (1, 10) + } + pub(crate) fn __reduce18< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ("," >)+ = ",", ParameterDef => ActionFn(678); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant12(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action678::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (2, 11) + } + pub(crate) fn __reduce19< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ("," >)+ = ("," >)+, ",", ParameterDef => ActionFn(679); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant12(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant13(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action679::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (3, 11) + } + pub(crate) fn __reduce20< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ("," >) = ",", ParameterDef => ActionFn(459); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant12(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action459::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (2, 12) + } + pub(crate) fn __reduce21< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ("," >)* = => ActionFn(457); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action457::<>(mode, &__start, &__end); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (0, 13) + } + pub(crate) fn __reduce22< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ("," >)* = ("," >)+ => ActionFn(458); + let __sym0 = __pop_Variant13(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action458::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (1, 13) + } + pub(crate) fn __reduce23< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ("," >)+ = ",", ParameterDef => ActionFn(686); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant12(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action686::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (2, 14) + } + pub(crate) fn __reduce24< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ("," >)+ = ("," >)+, ",", ParameterDef => ActionFn(687); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant12(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant13(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action687::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (3, 14) + } + pub(crate) fn __reduce41< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ("," >)? = => ActionFn(415); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action415::<>(mode, &__start, &__end); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (0, 16) + } + pub(crate) fn __reduce58< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ("," >)? = => ActionFn(423); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action423::<>(mode, &__start, &__end); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (0, 18) + } + pub(crate) fn __reduce59< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ("," >) = ",", Test<"all"> => ActionFn(352); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action352::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (2, 19) + } + pub(crate) fn __reduce60< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ("," >)? = ",", Test<"all"> => ActionFn(1059); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1059::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (2, 20) + } + pub(crate) fn __reduce61< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ("," >)? = => ActionFn(351); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action351::<>(mode, &__start, &__end); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (0, 20) + } + pub(crate) fn __reduce62< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ("," ) = ",", TestOrStarNamedExpr => ActionFn(545); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action545::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (2, 21) + } + pub(crate) fn __reduce63< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ("," )* = => ActionFn(543); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action543::<>(mode, &__start, &__end); + __symbols.push((__start, __Symbol::Variant18(__nt), __end)); + (0, 22) + } + pub(crate) fn __reduce64< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ("," )* = ("," )+ => ActionFn(544); + let __sym0 = __pop_Variant18(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action544::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant18(__nt), __end)); + (1, 22) + } + pub(crate) fn __reduce65< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ("," )+ = ",", TestOrStarNamedExpr => ActionFn(1062); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1062::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant18(__nt), __end)); + (2, 23) + } + pub(crate) fn __reduce66< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ("," )+ = ("," )+, ",", TestOrStarNamedExpr => ActionFn(1063); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant16(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant18(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1063::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant18(__nt), __end)); + (3, 23) + } + pub(crate) fn __reduce67< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ("," >) = ",", WithItem<"all"> => ActionFn(298); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant19(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action298::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant19(__nt), __end)); + (2, 24) + } + pub(crate) fn __reduce68< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ("," >)* = => ActionFn(296); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action296::<>(mode, &__start, &__end); + __symbols.push((__start, __Symbol::Variant20(__nt), __end)); + (0, 25) + } + pub(crate) fn __reduce69< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ("," >)* = ("," >)+ => ActionFn(297); + let __sym0 = __pop_Variant20(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action297::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant20(__nt), __end)); + (1, 25) + } + pub(crate) fn __reduce70< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ("," >)+ = ",", WithItem<"all"> => ActionFn(1072); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant19(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1072::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant20(__nt), __end)); + (2, 26) + } + pub(crate) fn __reduce71< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ("," >)+ = ("," >)+, ",", WithItem<"all"> => ActionFn(1073); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant19(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant20(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1073::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant20(__nt), __end)); + (3, 26) + } + pub(crate) fn __reduce72< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ("->" >) = "->", Test<"all"> => ActionFn(285); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action285::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (2, 27) + } + pub(crate) fn __reduce73< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ("->" >)? = "->", Test<"all"> => ActionFn(1078); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1078::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (2, 28) + } + pub(crate) fn __reduce74< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ("->" >)? = => ActionFn(284); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action284::<>(mode, &__start, &__end); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (0, 28) + } + pub(crate) fn __reduce75< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ("." Identifier) = ".", Identifier => ActionFn(357); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant24(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action357::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant21(__nt), __end)); + (2, 29) + } + pub(crate) fn __reduce76< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ("." Identifier)+ = ".", Identifier => ActionFn(1083); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant24(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1083::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant22(__nt), __end)); + (2, 30) + } + pub(crate) fn __reduce77< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ("." Identifier)+ = ("." Identifier)+, ".", Identifier => ActionFn(1084); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant24(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant22(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1084::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant22(__nt), __end)); + (3, 30) + } + pub(crate) fn __reduce78< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // (":" >) = ":", Test<"all"> => ActionFn(275); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action275::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (2, 31) + } + pub(crate) fn __reduce79< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // (":" >)? = ":", Test<"all"> => ActionFn(1085); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1085::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (2, 32) + } + pub(crate) fn __reduce80< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // (":" >)? = => ActionFn(274); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action274::<>(mode, &__start, &__end); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (0, 32) + } + pub(crate) fn __reduce81< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // (":" ) = ":", TestOrStarExpr => ActionFn(272); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action272::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (2, 33) + } + pub(crate) fn __reduce82< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // (":" )? = ":", TestOrStarExpr => ActionFn(1092); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1092::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (2, 34) + } + pub(crate) fn __reduce83< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // (":" )? = => ActionFn(271); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action271::<>(mode, &__start, &__end); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (0, 34) + } + pub(crate) fn __reduce84< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ("\n") = "\n" => ActionFn(389); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action389::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant0(__nt), __end)); + (1, 35) + } + pub(crate) fn __reduce85< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ("\n")* = => ActionFn(387); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action387::<>(mode, &__start, &__end); + __symbols.push((__start, __Symbol::Variant23(__nt), __end)); + (0, 36) + } + pub(crate) fn __reduce86< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ("\n")* = ("\n")+ => ActionFn(388); + let __sym0 = __pop_Variant23(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action388::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant23(__nt), __end)); + (1, 36) + } + pub(crate) fn __reduce87< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ("\n")+ = "\n" => ActionFn(1095); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1095::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant23(__nt), __end)); + (1, 37) + } + pub(crate) fn __reduce88< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ("\n")+ = ("\n")+, "\n" => ActionFn(1096); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant23(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1096::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant23(__nt), __end)); + (2, 37) + } + pub(crate) fn __reduce89< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ("as" ) = "as", Identifier => ActionFn(400); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant24(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action400::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant24(__nt), __end)); + (2, 38) + } + pub(crate) fn __reduce90< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ("as" )? = "as", Identifier => ActionFn(1099); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant24(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1099::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant25(__nt), __end)); + (2, 39) + } + pub(crate) fn __reduce91< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ("as" )? = => ActionFn(399); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action399::<>(mode, &__start, &__end); + __symbols.push((__start, __Symbol::Variant25(__nt), __end)); + (0, 39) + } + pub(crate) fn __reduce92< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ("else" ":" ) = "else", ":", Suite => ActionFn(319); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant26(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action319::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant26(__nt), __end)); + (3, 40) + } + pub(crate) fn __reduce93< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ("else" ":" )? = "else", ":", Suite => ActionFn(1104); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant26(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1104::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant27(__nt), __end)); + (3, 41) + } + pub(crate) fn __reduce94< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ("else" ":" )? = => ActionFn(318); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action318::<>(mode, &__start, &__end); + __symbols.push((__start, __Symbol::Variant27(__nt), __end)); + (0, 41) + } + pub(crate) fn __reduce95< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ("finally" ":" ) = "finally", ":", Suite => ActionFn(312); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant26(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action312::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant26(__nt), __end)); + (3, 42) + } + pub(crate) fn __reduce96< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ("finally" ":" )? = "finally", ":", Suite => ActionFn(1115); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant26(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1115::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant27(__nt), __end)); + (3, 43) + } + pub(crate) fn __reduce97< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ("finally" ":" )? = => ActionFn(311); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action311::<>(mode, &__start, &__end); + __symbols.push((__start, __Symbol::Variant27(__nt), __end)); + (0, 43) + } + pub(crate) fn __reduce98< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ("from" >) = "from", Test<"all"> => ActionFn(372); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action372::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (2, 44) + } + pub(crate) fn __reduce99< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ("from" >)? = "from", Test<"all"> => ActionFn(1125); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1125::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (2, 45) + } + pub(crate) fn __reduce100< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ("from" >)? = => ActionFn(371); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action371::<>(mode, &__start, &__end); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (0, 45) + } + pub(crate) fn __reduce101< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // (<@L> "elif" ":" ) = "elif", NamedExpressionTest, ":", Suite => ActionFn(702); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant26(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = super::__action702::<>(mode, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant28(__nt), __end)); + (4, 46) + } + pub(crate) fn __reduce102< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // (<@L> "elif" ":" )* = => ActionFn(323); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action323::<>(mode, &__start, &__end); + __symbols.push((__start, __Symbol::Variant29(__nt), __end)); + (0, 47) + } + pub(crate) fn __reduce103< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // (<@L> "elif" ":" )* = (<@L> "elif" ":" )+ => ActionFn(324); + let __sym0 = __pop_Variant29(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action324::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant29(__nt), __end)); + (1, 47) + } + pub(crate) fn __reduce104< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // (<@L> "elif" ":" )+ = "elif", NamedExpressionTest, ":", Suite => ActionFn(1128); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant26(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = super::__action1128::<>(mode, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant29(__nt), __end)); + (4, 48) + } + pub(crate) fn __reduce105< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // (<@L> "elif" ":" )+ = (<@L> "elif" ":" )+, "elif", NamedExpressionTest, ":", Suite => ActionFn(1129); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant26(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant16(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant29(__symbols); + let __start = __sym0.0; + let __end = __sym4.2; + let __nt = super::__action1129::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4); + __symbols.push((__start, __Symbol::Variant29(__nt), __end)); + (5, 48) + } + pub(crate) fn __reduce106< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // (<@L> "else" ":" ) = "else", ":", Suite => ActionFn(703); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant26(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action703::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant30(__nt), __end)); + (3, 49) + } + pub(crate) fn __reduce107< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // (<@L> "else" ":" )? = "else", ":", Suite => ActionFn(1132); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant26(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1132::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant31(__nt), __end)); + (3, 50) + } + pub(crate) fn __reduce108< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // (<@L> "else" ":" )? = => ActionFn(321); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action321::<>(mode, &__start, &__end); + __symbols.push((__start, __Symbol::Variant31(__nt), __end)); + (0, 50) + } + pub(crate) fn __reduce109< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // (> "or") = AndTest<"all">, "or" => ActionFn(434); + 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::__action434::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (2, 51) + } + pub(crate) fn __reduce110< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // (> "or")+ = AndTest<"all">, "or" => ActionFn(1137); + 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::__action1137::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant18(__nt), __end)); + (2, 52) + } + pub(crate) fn __reduce111< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // (> "or")+ = (> "or")+, AndTest<"all">, "or" => ActionFn(1138); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant18(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1138::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant18(__nt), __end)); + (3, 52) + } + pub(crate) fn __reduce112< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ( ",") = FunctionArgument, "," => ActionFn(443); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant32(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action443::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant32(__nt), __end)); + (2, 53) + } + pub(crate) fn __reduce113< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ( ",")* = => ActionFn(441); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action441::<>(mode, &__start, &__end); + __symbols.push((__start, __Symbol::Variant33(__nt), __end)); + (0, 54) + } + pub(crate) fn __reduce114< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ( ",")* = ( ",")+ => ActionFn(442); + let __sym0 = __pop_Variant33(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action442::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant33(__nt), __end)); + (1, 54) + } + pub(crate) fn __reduce115< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ( ",")+ = FunctionArgument, "," => ActionFn(1139); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant32(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1139::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant33(__nt), __end)); + (2, 55) + } + pub(crate) fn __reduce116< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ( ",")+ = ( ",")+, FunctionArgument, "," => ActionFn(1140); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant32(__symbols); + let __sym0 = __pop_Variant33(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1140::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant33(__nt), __end)); + (3, 55) + } + pub(crate) fn __reduce117< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // (> "and") = NotTest<"all">, "and" => ActionFn(448); + 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::__action448::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (2, 56) + } + pub(crate) fn __reduce118< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // (> "and")+ = NotTest<"all">, "and" => ActionFn(1143); + 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::__action1143::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant18(__nt), __end)); + (2, 57) + } + pub(crate) fn __reduce119< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // (> "and")+ = (> "and")+, NotTest<"all">, "and" => ActionFn(1144); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant18(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1144::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant18(__nt), __end)); + (3, 57) + } + pub(crate) fn __reduce120< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // (>> ",") = OneOrMore>, "," => ActionFn(548); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant34(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action548::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant34(__nt), __end)); + (2, 58) + } + pub(crate) fn __reduce121< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // (>> ",")? = OneOrMore>, "," => ActionFn(1145); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant34(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1145::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant35(__nt), __end)); + (2, 59) + } + pub(crate) fn __reduce122< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // (>> ",")? = => ActionFn(547); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action547::<>(mode, &__start, &__end); + __symbols.push((__start, __Symbol::Variant35(__nt), __end)); + (0, 59) + } + pub(crate) fn __reduce123< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ( ",") = Pattern, "," => ActionFn(338); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant36(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action338::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant36(__nt), __end)); + (2, 60) + } + pub(crate) fn __reduce124< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ( ",")* = => ActionFn(403); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action403::<>(mode, &__start, &__end); + __symbols.push((__start, __Symbol::Variant37(__nt), __end)); + (0, 61) + } + pub(crate) fn __reduce125< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ( ",")* = ( ",")+ => ActionFn(404); + let __sym0 = __pop_Variant37(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action404::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant37(__nt), __end)); + (1, 61) + } + pub(crate) fn __reduce126< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ( ",")+ = Pattern, "," => ActionFn(1162); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant36(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1162::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant37(__nt), __end)); + (2, 62) + } + pub(crate) fn __reduce127< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ( ",")+ = ( ",")+, Pattern, "," => ActionFn(1163); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant36(__symbols); + let __sym0 = __pop_Variant37(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1163::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant37(__nt), __end)); + (3, 62) + } + pub(crate) fn __reduce128< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ( ";") = SmallStatement, ";" => ActionFn(386); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant38(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action386::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (2, 63) + } + pub(crate) fn __reduce129< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ( ";")* = => ActionFn(384); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action384::<>(mode, &__start, &__end); + __symbols.push((__start, __Symbol::Variant39(__nt), __end)); + (0, 64) + } + pub(crate) fn __reduce130< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ( ";")* = ( ";")+ => ActionFn(385); + let __sym0 = __pop_Variant39(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action385::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant39(__nt), __end)); + (1, 64) + } + pub(crate) fn __reduce131< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ( ";")+ = SmallStatement, ";" => ActionFn(1166); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant38(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1166::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant39(__nt), __end)); + (2, 65) + } + pub(crate) fn __reduce132< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ( ";")+ = ( ";")+, SmallStatement, ";" => ActionFn(1167); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant38(__symbols); + let __sym0 = __pop_Variant39(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1167::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant39(__nt), __end)); + (3, 65) + } + pub(crate) fn __reduce133< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // (> "as" ) = Test<"all">, "as", Identifier => ActionFn(307); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant24(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action307::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant40(__nt), __end)); + (3, 66) + } + pub(crate) fn __reduce134< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ( ",") = OneOrMore>, "," => ActionFn(1484); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant34(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1484::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant41(__nt), __end)); + (2, 67) + } + pub(crate) fn __reduce135< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ( ",")? = OneOrMore>, "," => ActionFn(1487); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant34(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1487::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant42(__nt), __end)); + (2, 68) + } + pub(crate) fn __reduce136< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ( ",")? = => ActionFn(303); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action303::<>(mode, &__start, &__end); + __symbols.push((__start, __Symbol::Variant42(__nt), __end)); + (0, 68) + } + pub(crate) fn __reduce137< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // (@L string @R) = string => ActionFn(1186); + let __sym0 = __pop_Variant6(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1186::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant43(__nt), __end)); + (1, 69) + } + pub(crate) fn __reduce138< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // (@L string @R)+ = string => ActionFn(1496); + let __sym0 = __pop_Variant6(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1496::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant44(__nt), __end)); + (1, 70) + } + pub(crate) fn __reduce139< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // (@L string @R)+ = (@L string @R)+, string => ActionFn(1497); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant6(__symbols); + let __sym0 = __pop_Variant44(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1497::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant44(__nt), __end)); + (2, 70) + } + pub(crate) fn __reduce140< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // (CompOp Expression<"all">) = CompOp, Expression<"all"> => ActionFn(491); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant56(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action491::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant45(__nt), __end)); + (2, 71) + } + pub(crate) fn __reduce141< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // (CompOp Expression<"all">)+ = CompOp, Expression<"all"> => ActionFn(1498); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant56(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1498::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant46(__nt), __end)); + (2, 72) + } + pub(crate) fn __reduce142< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // (CompOp Expression<"all">)+ = (CompOp Expression<"all">)+, CompOp, Expression<"all"> => ActionFn(1499); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant16(__symbols); + let __sym1 = __pop_Variant56(__symbols); + let __sym0 = __pop_Variant46(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1499::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant46(__nt), __end)); + (3, 72) + } + pub(crate) fn __reduce143< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // (Guard) = Guard => ActionFn(345); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action345::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 73) + } + pub(crate) fn __reduce144< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // (Guard)? = Guard => ActionFn(1500); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1500::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (1, 74) + } + pub(crate) fn __reduce145< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // (Guard)? = => ActionFn(344); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action344::<>(mode, &__start, &__end); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (0, 74) + } + pub(crate) fn __reduce146< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // (ParameterList) = ParameterList => ActionFn(278); + let __sym0 = __pop_Variant47(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action278::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (1, 75) + } + pub(crate) fn __reduce147< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // (ParameterList)? = ParameterList => ActionFn(1503); + let __sym0 = __pop_Variant47(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1503::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant48(__nt), __end)); + (1, 76) + } + pub(crate) fn __reduce148< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // (ParameterList)? = => ActionFn(277); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action277::<>(mode, &__start, &__end); + __symbols.push((__start, __Symbol::Variant48(__nt), __end)); + (0, 76) + } + pub(crate) fn __reduce149< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // @L = => ActionFn(391); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action391::<>(mode, &__start, &__end); + __symbols.push((__start, __Symbol::Variant49(__nt), __end)); + (0, 77) + } + pub(crate) fn __reduce150< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // @R = => ActionFn(390); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action390::<>(mode, &__start, &__end); + __symbols.push((__start, __Symbol::Variant49(__nt), __end)); + (0, 78) + } + pub(crate) fn __reduce151< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // AddOp = "+" => ActionFn(195); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action195::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant50(__nt), __end)); + (1, 79) + } + pub(crate) fn __reduce152< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // AddOp = "-" => ActionFn(196); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action196::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant50(__nt), __end)); + (1, 79) + } + pub(crate) fn __reduce153< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // AddOpExpr = ConstantExpr, AddOp, ConstantAtom => ActionFn(1187); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant16(__symbols); + let __sym1 = __pop_Variant50(__symbols); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1187::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (3, 80) + } + pub(crate) fn __reduce154< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // AndExpression<"all"> = AndExpression<"all">, "&", ShiftExpression<"all"> => ActionFn(1188); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant16(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1188::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (3, 81) + } + pub(crate) fn __reduce155< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // AndExpression<"all"> = ShiftExpression<"all"> => ActionFn(452); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action452::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 81) + } + pub(crate) fn __reduce156< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // AndExpression<"no-withitems"> = AndExpression<"all">, "&", ShiftExpression<"all"> => ActionFn(1189); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant16(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1189::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (3, 82) + } + pub(crate) fn __reduce157< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // AndExpression<"no-withitems"> = ShiftExpression<"no-withitems"> => ActionFn(511); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action511::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 82) + } + pub(crate) fn __reduce158< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // AndTest<"all"> = (> "and")+, NotTest<"all"> => ActionFn(1190); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant18(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1190::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (2, 83) + } + pub(crate) fn __reduce159< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // AndTest<"all"> = NotTest<"all"> => ActionFn(436); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action436::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 83) + } + pub(crate) fn __reduce160< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // AndTest<"no-withitems"> = (> "and")+, NotTest<"all"> => ActionFn(1191); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant18(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1191::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (2, 84) + } + pub(crate) fn __reduce161< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // AndTest<"no-withitems"> = NotTest<"no-withitems"> => ActionFn(480); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action480::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 84) + } + pub(crate) fn __reduce166< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ArithmeticExpression<"all"> = ArithmeticExpression<"all">, AddOp, Term<"all"> => ActionFn(1192); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant16(__symbols); + let __sym1 = __pop_Variant50(__symbols); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1192::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (3, 86) + } + pub(crate) fn __reduce167< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ArithmeticExpression<"all"> = Term<"all"> => ActionFn(493); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action493::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 86) + } + pub(crate) fn __reduce168< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ArithmeticExpression<"no-withitems"> = ArithmeticExpression<"all">, AddOp, Term<"all"> => ActionFn(1193); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant16(__symbols); + let __sym1 = __pop_Variant50(__symbols); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1193::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (3, 87) + } + pub(crate) fn __reduce169< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ArithmeticExpression<"no-withitems"> = Term<"no-withitems"> => ActionFn(538); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action538::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 87) + } + pub(crate) fn __reduce171< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // AssertStatement = "assert", Test<"all">, ",", Test<"all"> => ActionFn(1195); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant16(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = super::__action1195::<>(mode, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (4, 89) + } + pub(crate) fn __reduce172< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // AssertStatement = "assert", Test<"all"> => ActionFn(1196); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1196::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (2, 89) + } + pub(crate) fn __reduce173< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // AssignSuffix = "=", TestListOrYieldExpr => ActionFn(29); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action29::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (2, 90) + } + pub(crate) fn __reduce174< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // AssignSuffix = "=", LineMagicExpr => ActionFn(30); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action30::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (2, 90) + } + pub(crate) fn __reduce175< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // AssignSuffix* = => ActionFn(380); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action380::<>(mode, &__start, &__end); + __symbols.push((__start, __Symbol::Variant18(__nt), __end)); + (0, 91) + } + pub(crate) fn __reduce176< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // AssignSuffix* = AssignSuffix+ => ActionFn(381); + let __sym0 = __pop_Variant18(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action381::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant18(__nt), __end)); + (1, 91) + } + pub(crate) fn __reduce177< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // AssignSuffix+ = AssignSuffix => ActionFn(396); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action396::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant18(__nt), __end)); + (1, 92) + } + pub(crate) fn __reduce178< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // AssignSuffix+ = AssignSuffix+, AssignSuffix => ActionFn(397); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant18(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action397::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant18(__nt), __end)); + (2, 92) + } + pub(crate) fn __reduce179< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // AssignSuffix? = AssignSuffix => ActionFn(375); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action375::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (1, 93) + } + pub(crate) fn __reduce180< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // AssignSuffix? = => ActionFn(376); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action376::<>(mode, &__start, &__end); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (0, 93) + } + pub(crate) fn __reduce182< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Atom<"all"> = Constant => ActionFn(1197); + let __sym0 = __pop_Variant57(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1197::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 94) + } + pub(crate) fn __reduce183< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Atom<"all"> = Identifier => ActionFn(1198); + let __sym0 = __pop_Variant24(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1198::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 94) + } + pub(crate) fn __reduce184< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Atom<"all"> = "[", ListLiteralValues, "]" => ActionFn(1560); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant34(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1560::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (3, 94) + } + pub(crate) fn __reduce185< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Atom<"all"> = "[", "]" => ActionFn(1561); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1561::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (2, 94) + } + pub(crate) fn __reduce186< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Atom<"all"> = "[", TestOrStarNamedExpr, CompFor, "]" => ActionFn(1200); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant54(__symbols); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = super::__action1200::<>(mode, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (4, 94) + } + pub(crate) fn __reduce187< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Atom<"all"> = "(", OneOrMore>, ",", ")" => ActionFn(1201); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant34(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = super::__action1201::<>(mode, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (4, 94) + } + pub(crate) fn __reduce188< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Atom<"all"> = "(", OneOrMore>, ")" => ActionFn(1202); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant34(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1202::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (3, 94) + } + pub(crate) fn __reduce197< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Atom<"all"> = "(", ")" => ActionFn(1211); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1211::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (2, 94) + } + pub(crate) fn __reduce198< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Atom<"all"> = "(", YieldExpr, ")" => ActionFn(526); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action526::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (3, 94) + } + pub(crate) fn __reduce199< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Atom<"all"> = "(", NamedExpressionTest, CompFor, ")" => ActionFn(1212); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant54(__symbols); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = super::__action1212::<>(mode, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (4, 94) + } + pub(crate) fn __reduce201< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Atom<"all"> = "{", DictLiteralValues, "}" => ActionFn(1544); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant62(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1544::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (3, 94) + } + pub(crate) fn __reduce202< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Atom<"all"> = "{", "}" => ActionFn(1545); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1545::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (2, 94) + } + pub(crate) fn __reduce203< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Atom<"all"> = "{", DictEntry, CompFor, "}" => ActionFn(1215); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant54(__symbols); + let __sym1 = __pop_Variant61(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = super::__action1215::<>(mode, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (4, 94) + } + pub(crate) fn __reduce204< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Atom<"all"> = "{", SetLiteralValues, "}" => ActionFn(1216); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant34(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1216::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (3, 94) + } + pub(crate) fn __reduce205< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Atom<"all"> = "{", NamedExpressionTest, CompFor, "}" => ActionFn(1217); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant54(__symbols); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = super::__action1217::<>(mode, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (4, 94) + } + pub(crate) fn __reduce206< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Atom<"all"> = "True" => ActionFn(1218); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1218::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 94) + } + pub(crate) fn __reduce207< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Atom<"all"> = "False" => ActionFn(1219); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1219::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 94) + } + pub(crate) fn __reduce208< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Atom<"all"> = "None" => ActionFn(1220); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1220::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 94) + } + pub(crate) fn __reduce209< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Atom<"all"> = "..." => ActionFn(1221); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1221::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 94) + } + pub(crate) fn __reduce211< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Atom<"no-withitems"> = Constant => ActionFn(1222); + let __sym0 = __pop_Variant57(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1222::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 95) + } + pub(crate) fn __reduce212< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Atom<"no-withitems"> = Identifier => ActionFn(1223); + let __sym0 = __pop_Variant24(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1223::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 95) + } + pub(crate) fn __reduce213< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Atom<"no-withitems"> = "[", ListLiteralValues, "]" => ActionFn(1562); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant34(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1562::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (3, 95) + } + pub(crate) fn __reduce214< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Atom<"no-withitems"> = "[", "]" => ActionFn(1563); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1563::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (2, 95) + } + pub(crate) fn __reduce215< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Atom<"no-withitems"> = "[", TestOrStarNamedExpr, CompFor, "]" => ActionFn(1225); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant54(__symbols); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = super::__action1225::<>(mode, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (4, 95) + } + pub(crate) fn __reduce224< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Atom<"no-withitems"> = "(", ")" => ActionFn(1234); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1234::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (2, 95) + } + pub(crate) fn __reduce225< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Atom<"no-withitems"> = "(", YieldExpr, ")" => ActionFn(570); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action570::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (3, 95) + } + pub(crate) fn __reduce226< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Atom<"no-withitems"> = "(", NamedExpressionTest, CompFor, ")" => ActionFn(1235); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant54(__symbols); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = super::__action1235::<>(mode, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (4, 95) + } + pub(crate) fn __reduce228< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Atom<"no-withitems"> = "{", DictLiteralValues, "}" => ActionFn(1546); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant62(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1546::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (3, 95) + } + pub(crate) fn __reduce229< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Atom<"no-withitems"> = "{", "}" => ActionFn(1547); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1547::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (2, 95) + } + pub(crate) fn __reduce230< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Atom<"no-withitems"> = "{", DictEntry, CompFor, "}" => ActionFn(1238); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant54(__symbols); + let __sym1 = __pop_Variant61(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = super::__action1238::<>(mode, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (4, 95) + } + pub(crate) fn __reduce231< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Atom<"no-withitems"> = "{", SetLiteralValues, "}" => ActionFn(1239); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant34(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1239::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (3, 95) + } + pub(crate) fn __reduce232< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Atom<"no-withitems"> = "{", NamedExpressionTest, CompFor, "}" => ActionFn(1240); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant54(__symbols); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = super::__action1240::<>(mode, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (4, 95) + } + pub(crate) fn __reduce233< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Atom<"no-withitems"> = "True" => ActionFn(1241); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1241::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 95) + } + pub(crate) fn __reduce234< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Atom<"no-withitems"> = "False" => ActionFn(1242); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1242::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 95) + } + pub(crate) fn __reduce235< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Atom<"no-withitems"> = "None" => ActionFn(1243); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1243::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 95) + } + pub(crate) fn __reduce236< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Atom<"no-withitems"> = "..." => ActionFn(1244); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1244::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 95) + } + pub(crate) fn __reduce237< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // AtomExpr2<"all"> = Atom<"all"> => ActionFn(514); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action514::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 96) + } + pub(crate) fn __reduce238< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // AtomExpr2<"all"> = AtomExpr2<"all">, "(", ArgumentList, ")" => ActionFn(1245); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant51(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = super::__action1245::<>(mode, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (4, 96) + } + pub(crate) fn __reduce239< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // AtomExpr2<"all"> = AtomExpr2<"all">, "[", SubscriptList, "]" => ActionFn(1246); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant16(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = super::__action1246::<>(mode, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (4, 96) + } + pub(crate) fn __reduce240< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // AtomExpr2<"all"> = AtomExpr2<"all">, ".", Identifier => ActionFn(1247); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant24(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1247::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (3, 96) + } + pub(crate) fn __reduce241< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // AtomExpr2<"no-withitems"> = Atom<"no-withitems"> => ActionFn(559); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action559::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 97) + } + pub(crate) fn __reduce242< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // AtomExpr2<"no-withitems"> = AtomExpr2<"all">, "(", ArgumentList, ")" => ActionFn(1248); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant51(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = super::__action1248::<>(mode, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (4, 97) + } + pub(crate) fn __reduce243< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // AtomExpr2<"no-withitems"> = AtomExpr2<"all">, "[", SubscriptList, "]" => ActionFn(1249); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant16(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = super::__action1249::<>(mode, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (4, 97) + } + pub(crate) fn __reduce244< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // AtomExpr2<"no-withitems"> = AtomExpr2<"all">, ".", Identifier => ActionFn(1250); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant24(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1250::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (3, 97) + } + pub(crate) fn __reduce245< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // AtomExpr<"all"> = "await", AtomExpr2<"all"> => ActionFn(1251); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1251::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (2, 98) + } + pub(crate) fn __reduce246< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // AtomExpr<"all"> = AtomExpr2<"all"> => ActionFn(509); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action509::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 98) + } + pub(crate) fn __reduce247< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // AtomExpr<"no-withitems"> = "await", AtomExpr2<"all"> => ActionFn(1252); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1252::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (2, 99) + } + pub(crate) fn __reduce248< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // AtomExpr<"no-withitems"> = AtomExpr2<"no-withitems"> => ActionFn(558); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action558::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 99) + } + pub(crate) fn __reduce249< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // AugAssign = "+=" => ActionFn(40); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action40::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant50(__nt), __end)); + (1, 100) + } + pub(crate) fn __reduce250< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // AugAssign = "-=" => ActionFn(41); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action41::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant50(__nt), __end)); + (1, 100) + } + pub(crate) fn __reduce251< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // AugAssign = "*=" => ActionFn(42); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action42::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant50(__nt), __end)); + (1, 100) + } + pub(crate) fn __reduce252< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // AugAssign = "@=" => ActionFn(43); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action43::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant50(__nt), __end)); + (1, 100) + } + pub(crate) fn __reduce253< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // AugAssign = "/=" => ActionFn(44); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action44::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant50(__nt), __end)); + (1, 100) + } + pub(crate) fn __reduce254< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // AugAssign = "%=" => ActionFn(45); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action45::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant50(__nt), __end)); + (1, 100) + } + pub(crate) fn __reduce255< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // AugAssign = "&=" => ActionFn(46); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action46::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant50(__nt), __end)); + (1, 100) + } + pub(crate) fn __reduce256< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // AugAssign = "|=" => ActionFn(47); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action47::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant50(__nt), __end)); + (1, 100) + } + pub(crate) fn __reduce257< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // AugAssign = "^=" => ActionFn(48); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action48::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant50(__nt), __end)); + (1, 100) + } + pub(crate) fn __reduce258< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // AugAssign = "<<=" => ActionFn(49); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action49::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant50(__nt), __end)); + (1, 100) + } + pub(crate) fn __reduce259< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // AugAssign = ">>=" => ActionFn(50); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action50::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant50(__nt), __end)); + (1, 100) + } + pub(crate) fn __reduce260< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // AugAssign = "**=" => ActionFn(51); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action51::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant50(__nt), __end)); + (1, 100) + } + pub(crate) fn __reduce261< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // AugAssign = "//=" => ActionFn(52); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action52::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant50(__nt), __end)); + (1, 100) + } + pub(crate) fn __reduce262< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // CapturePattern = Identifier => ActionFn(1253); + let __sym0 = __pop_Variant24(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1253::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant36(__nt), __end)); + (1, 101) + } + pub(crate) fn __reduce263< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ClassDef = "class", Identifier, TypeParamList, "(", ArgumentList, ")", ":", Suite => ActionFn(1716); + assert!(__symbols.len() >= 8); + let __sym7 = __pop_Variant26(__symbols); + let __sym6 = __pop_Variant0(__symbols); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant51(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant82(__symbols); + let __sym1 = __pop_Variant24(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym7.2; + let __nt = super::__action1716::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (8, 102) + } + pub(crate) fn __reduce264< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ClassDef = "class", Identifier, "(", ArgumentList, ")", ":", Suite => ActionFn(1717); + assert!(__symbols.len() >= 7); + let __sym6 = __pop_Variant26(__symbols); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant51(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant24(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym6.2; + let __nt = super::__action1717::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (7, 102) + } + pub(crate) fn __reduce265< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ClassDef = Decorator+, "class", Identifier, TypeParamList, "(", ArgumentList, ")", ":", Suite => ActionFn(1718); + assert!(__symbols.len() >= 9); + let __sym8 = __pop_Variant26(__symbols); + let __sym7 = __pop_Variant0(__symbols); + let __sym6 = __pop_Variant0(__symbols); + let __sym5 = __pop_Variant51(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant82(__symbols); + let __sym2 = __pop_Variant24(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant59(__symbols); + let __start = __sym0.0; + let __end = __sym8.2; + let __nt = super::__action1718::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (9, 102) + } + pub(crate) fn __reduce266< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ClassDef = Decorator+, "class", Identifier, "(", ArgumentList, ")", ":", Suite => ActionFn(1719); + assert!(__symbols.len() >= 8); + let __sym7 = __pop_Variant26(__symbols); + let __sym6 = __pop_Variant0(__symbols); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant51(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant24(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant59(__symbols); + let __start = __sym0.0; + let __end = __sym7.2; + let __nt = super::__action1719::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (8, 102) + } + pub(crate) fn __reduce267< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ClassDef = "class", Identifier, TypeParamList, ":", Suite => ActionFn(1720); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant26(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant82(__symbols); + let __sym1 = __pop_Variant24(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym4.2; + let __nt = super::__action1720::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (5, 102) + } + pub(crate) fn __reduce268< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ClassDef = "class", Identifier, ":", Suite => ActionFn(1721); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant26(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant24(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = super::__action1721::<>(mode, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (4, 102) + } + pub(crate) fn __reduce269< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ClassDef = Decorator+, "class", Identifier, TypeParamList, ":", Suite => ActionFn(1722); + assert!(__symbols.len() >= 6); + let __sym5 = __pop_Variant26(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant82(__symbols); + let __sym2 = __pop_Variant24(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant59(__symbols); + let __start = __sym0.0; + let __end = __sym5.2; + let __nt = super::__action1722::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (6, 102) + } + pub(crate) fn __reduce270< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ClassDef = Decorator+, "class", Identifier, ":", Suite => ActionFn(1723); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant26(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant24(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant59(__symbols); + let __start = __sym0.0; + let __end = __sym4.2; + let __nt = super::__action1723::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (5, 102) + } + pub(crate) fn __reduce271< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ClassPattern = MatchName, "(", OneOrMore, ",", OneOrMore, ",", ")" => ActionFn(1254); + assert!(__symbols.len() >= 7); + let __sym6 = __pop_Variant0(__symbols); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant79(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant53(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym6.2; + let __nt = super::__action1254::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6); + __symbols.push((__start, __Symbol::Variant36(__nt), __end)); + (7, 103) + } + pub(crate) fn __reduce272< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ClassPattern = MatchName, "(", OneOrMore, ",", OneOrMore, ")" => ActionFn(1255); + assert!(__symbols.len() >= 6); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant79(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant53(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym5.2; + let __nt = super::__action1255::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5); + __symbols.push((__start, __Symbol::Variant36(__nt), __end)); + (6, 103) + } + pub(crate) fn __reduce273< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ClassPattern = MatchName, "(", OneOrMore, ",", ")" => ActionFn(1256); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant53(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym4.2; + let __nt = super::__action1256::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4); + __symbols.push((__start, __Symbol::Variant36(__nt), __end)); + (5, 103) + } + pub(crate) fn __reduce274< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ClassPattern = MatchName, "(", OneOrMore, ")" => ActionFn(1257); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant53(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = super::__action1257::<>(mode, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant36(__nt), __end)); + (4, 103) + } + pub(crate) fn __reduce275< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ClassPattern = MatchName, "(", OneOrMore, ",", ")" => ActionFn(1258); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant79(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym4.2; + let __nt = super::__action1258::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4); + __symbols.push((__start, __Symbol::Variant36(__nt), __end)); + (5, 103) + } + pub(crate) fn __reduce276< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ClassPattern = MatchName, "(", OneOrMore, ")" => ActionFn(1259); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant79(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = super::__action1259::<>(mode, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant36(__nt), __end)); + (4, 103) + } + pub(crate) fn __reduce277< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ClassPattern = MatchName, "(", ")" => ActionFn(1260); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1260::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant36(__nt), __end)); + (3, 103) + } + pub(crate) fn __reduce278< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ClassPattern = MatchNameOrAttr, "(", OneOrMore, ",", OneOrMore, ",", ")" => ActionFn(1261); + assert!(__symbols.len() >= 7); + let __sym6 = __pop_Variant0(__symbols); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant79(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant53(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym6.2; + let __nt = super::__action1261::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6); + __symbols.push((__start, __Symbol::Variant36(__nt), __end)); + (7, 103) + } + pub(crate) fn __reduce279< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ClassPattern = MatchNameOrAttr, "(", OneOrMore, ",", OneOrMore, ")" => ActionFn(1262); + assert!(__symbols.len() >= 6); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant79(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant53(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym5.2; + let __nt = super::__action1262::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5); + __symbols.push((__start, __Symbol::Variant36(__nt), __end)); + (6, 103) + } + pub(crate) fn __reduce280< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ClassPattern = MatchNameOrAttr, "(", OneOrMore, ",", ")" => ActionFn(1263); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant53(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym4.2; + let __nt = super::__action1263::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4); + __symbols.push((__start, __Symbol::Variant36(__nt), __end)); + (5, 103) + } + pub(crate) fn __reduce281< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ClassPattern = MatchNameOrAttr, "(", OneOrMore, ")" => ActionFn(1264); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant53(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = super::__action1264::<>(mode, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant36(__nt), __end)); + (4, 103) + } + pub(crate) fn __reduce282< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ClassPattern = MatchNameOrAttr, "(", OneOrMore, ",", ")" => ActionFn(1265); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant79(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym4.2; + let __nt = super::__action1265::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4); + __symbols.push((__start, __Symbol::Variant36(__nt), __end)); + (5, 103) + } + pub(crate) fn __reduce283< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ClassPattern = MatchNameOrAttr, "(", OneOrMore, ")" => ActionFn(1266); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant79(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = super::__action1266::<>(mode, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant36(__nt), __end)); + (4, 103) + } + pub(crate) fn __reduce284< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ClassPattern = MatchNameOrAttr, "(", ")" => ActionFn(1267); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1267::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant36(__nt), __end)); + (3, 103) + } + pub(crate) fn __reduce285< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ClosedPattern = LiteralPattern => ActionFn(97); + let __sym0 = __pop_Variant36(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action97::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant36(__nt), __end)); + (1, 104) + } + pub(crate) fn __reduce286< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ClosedPattern = CapturePattern => ActionFn(98); + let __sym0 = __pop_Variant36(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action98::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant36(__nt), __end)); + (1, 104) + } + pub(crate) fn __reduce287< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ClosedPattern = StarPattern => ActionFn(99); + let __sym0 = __pop_Variant36(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action99::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant36(__nt), __end)); + (1, 104) + } + pub(crate) fn __reduce288< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ClosedPattern = ValuePattern => ActionFn(100); + let __sym0 = __pop_Variant36(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action100::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant36(__nt), __end)); + (1, 104) + } + pub(crate) fn __reduce289< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ClosedPattern = SequencePattern => ActionFn(101); + let __sym0 = __pop_Variant36(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action101::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant36(__nt), __end)); + (1, 104) + } + pub(crate) fn __reduce290< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ClosedPattern = MappingPattern => ActionFn(102); + let __sym0 = __pop_Variant36(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action102::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant36(__nt), __end)); + (1, 104) + } + pub(crate) fn __reduce291< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ClosedPattern = ClassPattern => ActionFn(103); + let __sym0 = __pop_Variant36(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action103::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant36(__nt), __end)); + (1, 104) + } + pub(crate) fn __reduce292< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Comma = FunctionArgument => ActionFn(1510); + let __sym0 = __pop_Variant32(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1510::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant52(__nt), __end)); + (1, 105) + } + pub(crate) fn __reduce293< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Comma = => ActionFn(1511); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action1511::<>(mode, &__start, &__end); + __symbols.push((__start, __Symbol::Variant52(__nt), __end)); + (0, 105) + } + pub(crate) fn __reduce294< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Comma = ( ",")+, FunctionArgument => ActionFn(1512); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant32(__symbols); + let __sym0 = __pop_Variant33(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1512::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant52(__nt), __end)); + (2, 105) + } + pub(crate) fn __reduce295< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Comma = ( ",")+ => ActionFn(1513); + let __sym0 = __pop_Variant33(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1513::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant52(__nt), __end)); + (1, 105) + } + pub(crate) fn __reduce296< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Comma = Pattern => ActionFn(1518); + let __sym0 = __pop_Variant36(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1518::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant53(__nt), __end)); + (1, 106) + } + pub(crate) fn __reduce297< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Comma = => ActionFn(1519); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action1519::<>(mode, &__start, &__end); + __symbols.push((__start, __Symbol::Variant53(__nt), __end)); + (0, 106) + } + pub(crate) fn __reduce298< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Comma = ( ",")+, Pattern => ActionFn(1520); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant36(__symbols); + let __sym0 = __pop_Variant37(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1520::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant53(__nt), __end)); + (2, 106) + } + pub(crate) fn __reduce299< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Comma = ( ",")+ => ActionFn(1521); + let __sym0 = __pop_Variant37(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1521::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant53(__nt), __end)); + (1, 106) + } + pub(crate) fn __reduce300< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // CompFor = SingleForComprehension+ => ActionFn(223); + let __sym0 = __pop_Variant86(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action223::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant54(__nt), __end)); + (1, 107) + } + pub(crate) fn __reduce301< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // CompFor? = CompFor => ActionFn(236); + let __sym0 = __pop_Variant54(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action236::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant55(__nt), __end)); + (1, 108) + } + pub(crate) fn __reduce302< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // CompFor? = => ActionFn(237); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action237::<>(mode, &__start, &__end); + __symbols.push((__start, __Symbol::Variant55(__nt), __end)); + (0, 108) + } + pub(crate) fn __reduce303< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // CompOp = "==" => ActionFn(183); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action183::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant56(__nt), __end)); + (1, 109) + } + pub(crate) fn __reduce304< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // CompOp = "!=" => ActionFn(184); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action184::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant56(__nt), __end)); + (1, 109) + } + pub(crate) fn __reduce305< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // CompOp = "<" => ActionFn(185); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action185::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant56(__nt), __end)); + (1, 109) + } + pub(crate) fn __reduce306< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // CompOp = "<=" => ActionFn(186); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action186::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant56(__nt), __end)); + (1, 109) + } + pub(crate) fn __reduce307< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // CompOp = ">" => ActionFn(187); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action187::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant56(__nt), __end)); + (1, 109) + } + pub(crate) fn __reduce308< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // CompOp = ">=" => ActionFn(188); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action188::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant56(__nt), __end)); + (1, 109) + } + pub(crate) fn __reduce309< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // CompOp = "in" => ActionFn(189); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action189::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant56(__nt), __end)); + (1, 109) + } + pub(crate) fn __reduce310< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // CompOp = "not", "in" => ActionFn(190); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action190::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant56(__nt), __end)); + (2, 109) + } + pub(crate) fn __reduce311< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // CompOp = "is" => ActionFn(191); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action191::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant56(__nt), __end)); + (1, 109) + } + pub(crate) fn __reduce312< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // CompOp = "is", "not" => ActionFn(192); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action192::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant56(__nt), __end)); + (2, 109) + } + pub(crate) fn __reduce313< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Comparison<"all"> = Expression<"all">, (CompOp Expression<"all">)+ => ActionFn(1268); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant46(__symbols); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1268::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (2, 110) + } + pub(crate) fn __reduce314< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Comparison<"all"> = Expression<"all"> => ActionFn(488); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action488::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 110) + } + pub(crate) fn __reduce315< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Comparison<"no-withitems"> = Expression<"all">, (CompOp Expression<"all">)+ => ActionFn(1269); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant46(__symbols); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1269::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (2, 111) + } + pub(crate) fn __reduce316< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Comparison<"no-withitems"> = Expression<"no-withitems"> => ActionFn(497); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action497::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 111) + } + pub(crate) fn __reduce317< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // CompoundStatement = MatchStatement => ActionFn(76); + let __sym0 = __pop_Variant38(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action76::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (1, 112) + } + pub(crate) fn __reduce318< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // CompoundStatement = IfStatement => ActionFn(77); + let __sym0 = __pop_Variant38(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action77::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (1, 112) + } + pub(crate) fn __reduce319< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // CompoundStatement = WhileStatement => ActionFn(78); + let __sym0 = __pop_Variant38(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action78::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (1, 112) + } + pub(crate) fn __reduce320< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // CompoundStatement = ForStatement => ActionFn(79); + let __sym0 = __pop_Variant38(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action79::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (1, 112) + } + pub(crate) fn __reduce321< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // CompoundStatement = TryStatement => ActionFn(80); + let __sym0 = __pop_Variant38(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action80::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (1, 112) + } + pub(crate) fn __reduce322< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // CompoundStatement = WithStatement => ActionFn(81); + let __sym0 = __pop_Variant38(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action81::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (1, 112) + } + pub(crate) fn __reduce323< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // CompoundStatement = FuncDef => ActionFn(82); + let __sym0 = __pop_Variant38(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action82::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (1, 112) + } + pub(crate) fn __reduce324< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // CompoundStatement = ClassDef => ActionFn(83); + let __sym0 = __pop_Variant38(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action83::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (1, 112) + } + pub(crate) fn __reduce325< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ComprehensionIf = "if", ExpressionNoCond => ActionFn(226); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action226::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (2, 113) + } + pub(crate) fn __reduce326< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ComprehensionIf* = => ActionFn(239); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action239::<>(mode, &__start, &__end); + __symbols.push((__start, __Symbol::Variant18(__nt), __end)); + (0, 114) + } + pub(crate) fn __reduce327< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ComprehensionIf* = ComprehensionIf+ => ActionFn(240); + let __sym0 = __pop_Variant18(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action240::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant18(__nt), __end)); + (1, 114) + } + pub(crate) fn __reduce328< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ComprehensionIf+ = ComprehensionIf => ActionFn(437); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action437::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant18(__nt), __end)); + (1, 115) + } + pub(crate) fn __reduce329< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ComprehensionIf+ = ComprehensionIf+, ComprehensionIf => ActionFn(438); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant18(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action438::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant18(__nt), __end)); + (2, 115) + } + pub(crate) fn __reduce330< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Constant = int => ActionFn(232); + let __sym0 = __pop_Variant3(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action232::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant57(__nt), __end)); + (1, 116) + } + pub(crate) fn __reduce331< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Constant = float => ActionFn(233); + let __sym0 = __pop_Variant2(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action233::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant57(__nt), __end)); + (1, 116) + } + pub(crate) fn __reduce332< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Constant = complex => ActionFn(234); + let __sym0 = __pop_Variant1(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action234::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant57(__nt), __end)); + (1, 116) + } + pub(crate) fn __reduce333< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ConstantAtom = Constant => ActionFn(1270); + let __sym0 = __pop_Variant57(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1270::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 117) + } + pub(crate) fn __reduce334< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ConstantExpr = ConstantAtom => ActionFn(111); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action111::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 118) + } + pub(crate) fn __reduce335< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ConstantExpr = "-", ConstantAtom => ActionFn(1271); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1271::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (2, 118) + } + pub(crate) fn __reduce336< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Decorator = "@", NamedExpressionTest, "\n" => ActionFn(1272); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1272::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant58(__nt), __end)); + (3, 119) + } + pub(crate) fn __reduce337< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Decorator* = => ActionFn(288); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action288::<>(mode, &__start, &__end); + __symbols.push((__start, __Symbol::Variant59(__nt), __end)); + (0, 120) + } + pub(crate) fn __reduce338< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Decorator* = Decorator+ => ActionFn(289); + let __sym0 = __pop_Variant59(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action289::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant59(__nt), __end)); + (1, 120) + } + pub(crate) fn __reduce339< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Decorator+ = Decorator => ActionFn(410); + let __sym0 = __pop_Variant58(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action410::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant59(__nt), __end)); + (1, 121) + } + pub(crate) fn __reduce340< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Decorator+ = Decorator+, Decorator => ActionFn(411); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant58(__symbols); + let __sym0 = __pop_Variant59(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action411::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant59(__nt), __end)); + (2, 121) + } + pub(crate) fn __reduce341< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // DelStatement = "del", ExpressionList2 => ActionFn(1273); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant34(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1273::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (2, 122) + } + pub(crate) fn __reduce342< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // DictElement = DictEntry => ActionFn(214); + let __sym0 = __pop_Variant61(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action214::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant60(__nt), __end)); + (1, 123) + } + pub(crate) fn __reduce343< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // DictElement = "**", Expression<"all"> => ActionFn(215); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action215::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant60(__nt), __end)); + (2, 123) + } + pub(crate) fn __reduce344< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // DictEntry = Test<"all">, ":", Test<"all"> => ActionFn(213); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant16(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action213::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant61(__nt), __end)); + (3, 124) + } + pub(crate) fn __reduce345< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // DictLiteralValues = OneOrMore, "," => ActionFn(599); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant62(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action599::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant62(__nt), __end)); + (2, 125) + } + pub(crate) fn __reduce346< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // DictLiteralValues = OneOrMore => ActionFn(600); + let __sym0 = __pop_Variant62(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action600::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant62(__nt), __end)); + (1, 125) + } + pub(crate) fn __reduce347< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // DictLiteralValues? = DictLiteralValues => ActionFn(541); + let __sym0 = __pop_Variant62(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action541::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant63(__nt), __end)); + (1, 126) + } + pub(crate) fn __reduce348< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // DictLiteralValues? = => ActionFn(542); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action542::<>(mode, &__start, &__end); + __symbols.push((__start, __Symbol::Variant63(__nt), __end)); + (0, 126) + } + pub(crate) fn __reduce349< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // DottedName = name => ActionFn(1274); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1274::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant24(__nt), __end)); + (1, 127) + } + pub(crate) fn __reduce350< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // DottedName = name, ("." Identifier)+ => ActionFn(1275); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant22(__symbols); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1275::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant24(__nt), __end)); + (2, 127) + } + pub(crate) fn __reduce351< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // DoubleStarTypedParameter = Identifier, ":", Test<"all"> => ActionFn(1276); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant16(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant24(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1276::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant64(__nt), __end)); + (3, 128) + } + pub(crate) fn __reduce352< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // DoubleStarTypedParameter = Identifier => ActionFn(1277); + let __sym0 = __pop_Variant24(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1277::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant64(__nt), __end)); + (1, 128) + } + pub(crate) fn __reduce353< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // DoubleStarTypedParameter? = DoubleStarTypedParameter => ActionFn(475); + let __sym0 = __pop_Variant64(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action475::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant65(__nt), __end)); + (1, 129) + } + pub(crate) fn __reduce354< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // DoubleStarTypedParameter? = => ActionFn(476); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action476::<>(mode, &__start, &__end); + __symbols.push((__start, __Symbol::Variant65(__nt), __end)); + (0, 129) + } + pub(crate) fn __reduce355< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ExceptClause = "except", Test<"all">, ":", Suite => ActionFn(1688); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant26(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = super::__action1688::<>(mode, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant66(__nt), __end)); + (4, 130) + } + pub(crate) fn __reduce356< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ExceptClause = "except", ":", Suite => ActionFn(1689); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant26(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1689::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant66(__nt), __end)); + (3, 130) + } + pub(crate) fn __reduce357< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ExceptClause = "except", Test<"all">, "as", Identifier, ":", Suite => ActionFn(1184); + assert!(__symbols.len() >= 6); + let __sym5 = __pop_Variant26(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant24(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym5.2; + let __nt = super::__action1184::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5); + __symbols.push((__start, __Symbol::Variant66(__nt), __end)); + (6, 130) + } + pub(crate) fn __reduce358< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ExceptClause+ = ExceptClause => ActionFn(313); + let __sym0 = __pop_Variant66(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action313::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant67(__nt), __end)); + (1, 131) + } + pub(crate) fn __reduce359< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ExceptClause+ = ExceptClause+, ExceptClause => ActionFn(314); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant66(__symbols); + let __sym0 = __pop_Variant67(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action314::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant67(__nt), __end)); + (2, 131) + } + pub(crate) fn __reduce360< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ExceptStarClause = "except", "*", Test<"all">, ":", Suite => ActionFn(788); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant26(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant16(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym4.2; + let __nt = super::__action788::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4); + __symbols.push((__start, __Symbol::Variant66(__nt), __end)); + (5, 132) + } + pub(crate) fn __reduce361< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ExceptStarClause = "except", "*", Test<"all">, "as", Identifier, ":", Suite => ActionFn(1185); + assert!(__symbols.len() >= 7); + let __sym6 = __pop_Variant26(__symbols); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant24(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant16(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym6.2; + let __nt = super::__action1185::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6); + __symbols.push((__start, __Symbol::Variant66(__nt), __end)); + (7, 132) + } + pub(crate) fn __reduce362< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ExceptStarClause+ = ExceptStarClause => ActionFn(308); + let __sym0 = __pop_Variant66(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action308::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant67(__nt), __end)); + (1, 133) + } + pub(crate) fn __reduce363< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ExceptStarClause+ = ExceptStarClause+, ExceptStarClause => ActionFn(309); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant66(__symbols); + let __sym0 = __pop_Variant67(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action309::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant67(__nt), __end)); + (2, 133) + } + pub(crate) fn __reduce364< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Expression<"all"> = Expression<"all">, "|", XorExpression<"all"> => ActionFn(1278); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant16(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1278::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (3, 134) + } + pub(crate) fn __reduce365< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Expression<"all"> = XorExpression<"all"> => ActionFn(250); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action250::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 134) + } + pub(crate) fn __reduce366< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Expression<"no-withitems"> = Expression<"all">, "|", XorExpression<"all"> => ActionFn(1279); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant16(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1279::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (3, 135) + } + pub(crate) fn __reduce367< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Expression<"no-withitems"> = XorExpression<"no-withitems"> => ActionFn(503); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action503::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 135) + } + pub(crate) fn __reduce368< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ExpressionList = GenericList => ActionFn(219); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action219::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 136) + } + pub(crate) fn __reduce369< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ExpressionList2 = OneOrMore, "," => ActionFn(601); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant34(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action601::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant34(__nt), __end)); + (2, 137) + } + pub(crate) fn __reduce370< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ExpressionList2 = OneOrMore => ActionFn(602); + let __sym0 = __pop_Variant34(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action602::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant34(__nt), __end)); + (1, 137) + } + pub(crate) fn __reduce371< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ExpressionNoCond = OrTest<"all"> => ActionFn(225); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action225::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 138) + } + pub(crate) fn __reduce372< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ExpressionOrStarExpression = Expression<"all"> => ActionFn(217); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action217::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 139) + } + pub(crate) fn __reduce373< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ExpressionOrStarExpression = StarExpr => ActionFn(218); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action218::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 139) + } + pub(crate) fn __reduce374< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ExpressionStatement = GenericList => ActionFn(1713); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1713::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (1, 140) + } + pub(crate) fn __reduce375< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ExpressionStatement = GenericList, AssignSuffix+ => ActionFn(1714); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant18(__symbols); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1714::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (2, 140) + } + pub(crate) fn __reduce376< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ExpressionStatement = GenericList, AugAssign, TestListOrYieldExpr => ActionFn(1715); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant16(__symbols); + let __sym1 = __pop_Variant50(__symbols); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1715::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (3, 140) + } + pub(crate) fn __reduce377< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ExpressionStatement = Test<"all">, ":", Test<"all">, AssignSuffix => ActionFn(1508); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant16(__symbols); + let __sym2 = __pop_Variant16(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = super::__action1508::<>(mode, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (4, 140) + } + pub(crate) fn __reduce378< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ExpressionStatement = Test<"all">, ":", Test<"all"> => ActionFn(1509); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant16(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1509::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (3, 140) + } + pub(crate) fn __reduce379< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Factor<"all"> = UnaryOp, Factor<"all"> => ActionFn(1283); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant93(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1283::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (2, 141) + } + pub(crate) fn __reduce380< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Factor<"all"> = Power<"all"> => ActionFn(501); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action501::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 141) + } + pub(crate) fn __reduce381< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Factor<"no-withitems"> = UnaryOp, Factor<"all"> => ActionFn(1284); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant93(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1284::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (2, 142) + } + pub(crate) fn __reduce382< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Factor<"no-withitems"> = Power<"no-withitems"> => ActionFn(554); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action554::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 142) + } + pub(crate) fn __reduce383< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // FlowStatement = "break" => ActionFn(1285); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1285::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (1, 143) + } + pub(crate) fn __reduce384< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // FlowStatement = "continue" => ActionFn(1286); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1286::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (1, 143) + } + pub(crate) fn __reduce385< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // FlowStatement = "return", GenericList => ActionFn(1709); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1709::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (2, 143) + } + pub(crate) fn __reduce386< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // FlowStatement = "return" => ActionFn(1710); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1710::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (1, 143) + } + pub(crate) fn __reduce387< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // FlowStatement = YieldExpr => ActionFn(1288); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1288::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (1, 143) + } + pub(crate) fn __reduce388< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // FlowStatement = RaiseStatement => ActionFn(57); + let __sym0 = __pop_Variant38(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action57::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (1, 143) + } + pub(crate) fn __reduce389< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ForStatement = "async", "for", ExpressionList, "in", GenericList, ":", Suite, "else", ":", Suite => ActionFn(1700); + assert!(__symbols.len() >= 10); + let __sym9 = __pop_Variant26(__symbols); + let __sym8 = __pop_Variant0(__symbols); + let __sym7 = __pop_Variant0(__symbols); + let __sym6 = __pop_Variant26(__symbols); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant16(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant16(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym9.2; + let __nt = super::__action1700::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (10, 144) + } + pub(crate) fn __reduce390< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ForStatement = "async", "for", ExpressionList, "in", GenericList, ":", Suite => ActionFn(1701); + assert!(__symbols.len() >= 7); + let __sym6 = __pop_Variant26(__symbols); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant16(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant16(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym6.2; + let __nt = super::__action1701::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (7, 144) + } + pub(crate) fn __reduce391< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ForStatement = "for", ExpressionList, "in", GenericList, ":", Suite, "else", ":", Suite => ActionFn(1702); + assert!(__symbols.len() >= 9); + let __sym8 = __pop_Variant26(__symbols); + let __sym7 = __pop_Variant0(__symbols); + let __sym6 = __pop_Variant0(__symbols); + let __sym5 = __pop_Variant26(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant16(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym8.2; + let __nt = super::__action1702::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (9, 144) + } + pub(crate) fn __reduce392< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ForStatement = "for", ExpressionList, "in", GenericList, ":", Suite => ActionFn(1703); + assert!(__symbols.len() >= 6); + let __sym5 = __pop_Variant26(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant16(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym5.2; + let __nt = super::__action1703::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (6, 144) + } + pub(crate) fn __reduce393< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // FuncDef = "async", "def", Identifier, TypeParamList, Parameters, "->", Test<"all">, ":", Suite => ActionFn(1724); + assert!(__symbols.len() >= 9); + let __sym8 = __pop_Variant26(__symbols); + let __sym7 = __pop_Variant0(__symbols); + let __sym6 = __pop_Variant16(__symbols); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant47(__symbols); + let __sym3 = __pop_Variant82(__symbols); + let __sym2 = __pop_Variant24(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym8.2; + let __nt = super::__action1724::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (9, 145) + } + pub(crate) fn __reduce394< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // FuncDef = "async", "def", Identifier, Parameters, "->", Test<"all">, ":", Suite => ActionFn(1725); + assert!(__symbols.len() >= 8); + let __sym7 = __pop_Variant26(__symbols); + let __sym6 = __pop_Variant0(__symbols); + let __sym5 = __pop_Variant16(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant47(__symbols); + let __sym2 = __pop_Variant24(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym7.2; + let __nt = super::__action1725::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (8, 145) + } + pub(crate) fn __reduce395< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // FuncDef = Decorator+, "async", "def", Identifier, TypeParamList, Parameters, "->", Test<"all">, ":", Suite => ActionFn(1726); + assert!(__symbols.len() >= 10); + let __sym9 = __pop_Variant26(__symbols); + let __sym8 = __pop_Variant0(__symbols); + let __sym7 = __pop_Variant16(__symbols); + let __sym6 = __pop_Variant0(__symbols); + let __sym5 = __pop_Variant47(__symbols); + let __sym4 = __pop_Variant82(__symbols); + let __sym3 = __pop_Variant24(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant59(__symbols); + let __start = __sym0.0; + let __end = __sym9.2; + let __nt = super::__action1726::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (10, 145) + } + pub(crate) fn __reduce396< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // FuncDef = Decorator+, "async", "def", Identifier, Parameters, "->", Test<"all">, ":", Suite => ActionFn(1727); + assert!(__symbols.len() >= 9); + let __sym8 = __pop_Variant26(__symbols); + let __sym7 = __pop_Variant0(__symbols); + let __sym6 = __pop_Variant16(__symbols); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant47(__symbols); + let __sym3 = __pop_Variant24(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant59(__symbols); + let __start = __sym0.0; + let __end = __sym8.2; + let __nt = super::__action1727::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (9, 145) + } + pub(crate) fn __reduce397< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // FuncDef = "async", "def", Identifier, TypeParamList, Parameters, ":", Suite => ActionFn(1728); + assert!(__symbols.len() >= 7); + let __sym6 = __pop_Variant26(__symbols); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant47(__symbols); + let __sym3 = __pop_Variant82(__symbols); + let __sym2 = __pop_Variant24(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym6.2; + let __nt = super::__action1728::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (7, 145) + } + pub(crate) fn __reduce398< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // FuncDef = "async", "def", Identifier, Parameters, ":", Suite => ActionFn(1729); + assert!(__symbols.len() >= 6); + let __sym5 = __pop_Variant26(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant47(__symbols); + let __sym2 = __pop_Variant24(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym5.2; + let __nt = super::__action1729::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (6, 145) + } + pub(crate) fn __reduce399< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // FuncDef = Decorator+, "async", "def", Identifier, TypeParamList, Parameters, ":", Suite => ActionFn(1730); + assert!(__symbols.len() >= 8); + let __sym7 = __pop_Variant26(__symbols); + let __sym6 = __pop_Variant0(__symbols); + let __sym5 = __pop_Variant47(__symbols); + let __sym4 = __pop_Variant82(__symbols); + let __sym3 = __pop_Variant24(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant59(__symbols); + let __start = __sym0.0; + let __end = __sym7.2; + let __nt = super::__action1730::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (8, 145) + } + pub(crate) fn __reduce400< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // FuncDef = Decorator+, "async", "def", Identifier, Parameters, ":", Suite => ActionFn(1731); + assert!(__symbols.len() >= 7); + let __sym6 = __pop_Variant26(__symbols); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant47(__symbols); + let __sym3 = __pop_Variant24(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant59(__symbols); + let __start = __sym0.0; + let __end = __sym6.2; + let __nt = super::__action1731::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (7, 145) + } + pub(crate) fn __reduce401< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // FuncDef = "def", Identifier, TypeParamList, Parameters, "->", Test<"all">, ":", Suite => ActionFn(1732); + assert!(__symbols.len() >= 8); + let __sym7 = __pop_Variant26(__symbols); + let __sym6 = __pop_Variant0(__symbols); + let __sym5 = __pop_Variant16(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant47(__symbols); + let __sym2 = __pop_Variant82(__symbols); + let __sym1 = __pop_Variant24(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym7.2; + let __nt = super::__action1732::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (8, 145) + } + pub(crate) fn __reduce402< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // FuncDef = "def", Identifier, Parameters, "->", Test<"all">, ":", Suite => ActionFn(1733); + assert!(__symbols.len() >= 7); + let __sym6 = __pop_Variant26(__symbols); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant16(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant47(__symbols); + let __sym1 = __pop_Variant24(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym6.2; + let __nt = super::__action1733::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (7, 145) + } + pub(crate) fn __reduce403< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // FuncDef = Decorator+, "def", Identifier, TypeParamList, Parameters, "->", Test<"all">, ":", Suite => ActionFn(1734); + assert!(__symbols.len() >= 9); + let __sym8 = __pop_Variant26(__symbols); + let __sym7 = __pop_Variant0(__symbols); + let __sym6 = __pop_Variant16(__symbols); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant47(__symbols); + let __sym3 = __pop_Variant82(__symbols); + let __sym2 = __pop_Variant24(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant59(__symbols); + let __start = __sym0.0; + let __end = __sym8.2; + let __nt = super::__action1734::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (9, 145) + } + pub(crate) fn __reduce404< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // FuncDef = Decorator+, "def", Identifier, Parameters, "->", Test<"all">, ":", Suite => ActionFn(1735); + assert!(__symbols.len() >= 8); + let __sym7 = __pop_Variant26(__symbols); + let __sym6 = __pop_Variant0(__symbols); + let __sym5 = __pop_Variant16(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant47(__symbols); + let __sym2 = __pop_Variant24(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant59(__symbols); + let __start = __sym0.0; + let __end = __sym7.2; + let __nt = super::__action1735::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (8, 145) + } + pub(crate) fn __reduce405< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // FuncDef = "def", Identifier, TypeParamList, Parameters, ":", Suite => ActionFn(1736); + assert!(__symbols.len() >= 6); + let __sym5 = __pop_Variant26(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant47(__symbols); + let __sym2 = __pop_Variant82(__symbols); + let __sym1 = __pop_Variant24(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym5.2; + let __nt = super::__action1736::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (6, 145) + } + pub(crate) fn __reduce406< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // FuncDef = "def", Identifier, Parameters, ":", Suite => ActionFn(1737); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant26(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant47(__symbols); + let __sym1 = __pop_Variant24(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym4.2; + let __nt = super::__action1737::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (5, 145) + } + pub(crate) fn __reduce407< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // FuncDef = Decorator+, "def", Identifier, TypeParamList, Parameters, ":", Suite => ActionFn(1738); + assert!(__symbols.len() >= 7); + let __sym6 = __pop_Variant26(__symbols); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant47(__symbols); + let __sym3 = __pop_Variant82(__symbols); + let __sym2 = __pop_Variant24(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant59(__symbols); + let __start = __sym0.0; + let __end = __sym6.2; + let __nt = super::__action1738::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (7, 145) + } + pub(crate) fn __reduce408< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // FuncDef = Decorator+, "def", Identifier, Parameters, ":", Suite => ActionFn(1739); + assert!(__symbols.len() >= 6); + let __sym5 = __pop_Variant26(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant47(__symbols); + let __sym2 = __pop_Variant24(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant59(__symbols); + let __start = __sym0.0; + let __end = __sym5.2; + let __nt = super::__action1739::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (6, 145) + } + pub(crate) fn __reduce409< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // FunctionArgument = NamedExpressionTest, CompFor => ActionFn(1526); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant54(__symbols); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1526::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant32(__nt), __end)); + (2, 146) + } + pub(crate) fn __reduce410< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // FunctionArgument = NamedExpressionTest => ActionFn(1527); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1527::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant32(__nt), __end)); + (1, 146) + } + pub(crate) fn __reduce411< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // FunctionArgument = Identifier, "=", Test<"all"> => ActionFn(1290); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant16(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant24(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1290::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant32(__nt), __end)); + (3, 146) + } + pub(crate) fn __reduce412< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // FunctionArgument = "*", Test<"all"> => ActionFn(1291); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1291::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant32(__nt), __end)); + (2, 146) + } + pub(crate) fn __reduce413< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // FunctionArgument = "**", Test<"all"> => ActionFn(1292); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1292::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant32(__nt), __end)); + (2, 146) + } + pub(crate) fn __reduce414< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // FunctionArgument? = FunctionArgument => ActionFn(439); + let __sym0 = __pop_Variant32(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action439::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant68(__nt), __end)); + (1, 147) + } + pub(crate) fn __reduce415< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // FunctionArgument? = => ActionFn(440); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action440::<>(mode, &__start, &__end); + __symbols.push((__start, __Symbol::Variant68(__nt), __end)); + (0, 147) + } + pub(crate) fn __reduce416< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // GenericList = OneOrMore, "," => ActionFn(1293); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant34(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1293::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (2, 148) + } + pub(crate) fn __reduce417< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // GenericList = OneOrMore => ActionFn(1294); + let __sym0 = __pop_Variant34(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1294::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 148) + } + pub(crate) fn __reduce418< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // GenericList = OneOrMore, "," => ActionFn(1295); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant34(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1295::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (2, 149) + } + pub(crate) fn __reduce419< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // GenericList = OneOrMore => ActionFn(1296); + let __sym0 = __pop_Variant34(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1296::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 149) + } + pub(crate) fn __reduce420< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // GlobalStatement = "global", OneOrMore => ActionFn(1297); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant78(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1297::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (2, 150) + } + pub(crate) fn __reduce421< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Guard = "if", NamedExpressionTest => ActionFn(88); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action88::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (2, 151) + } + pub(crate) fn __reduce422< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Identifier = name => ActionFn(1298); + let __sym0 = __pop_Variant5(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1298::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant24(__nt), __end)); + (1, 152) + } + pub(crate) fn __reduce423< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // IfStatement = "if", NamedExpressionTest, ":", Suite, "else", ":", Suite => ActionFn(1133); + assert!(__symbols.len() >= 7); + let __sym6 = __pop_Variant26(__symbols); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant26(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym6.2; + let __nt = super::__action1133::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (7, 153) + } + pub(crate) fn __reduce424< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // IfStatement = "if", NamedExpressionTest, ":", Suite => ActionFn(1134); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant26(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = super::__action1134::<>(mode, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (4, 153) + } + pub(crate) fn __reduce425< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // IfStatement = "if", NamedExpressionTest, ":", Suite, (<@L> "elif" ":" )+, "else", ":", Suite => ActionFn(1135); + assert!(__symbols.len() >= 8); + let __sym7 = __pop_Variant26(__symbols); + let __sym6 = __pop_Variant0(__symbols); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant29(__symbols); + let __sym3 = __pop_Variant26(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym7.2; + let __nt = super::__action1135::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (8, 153) + } + pub(crate) fn __reduce426< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // IfStatement = "if", NamedExpressionTest, ":", Suite, (<@L> "elif" ":" )+ => ActionFn(1136); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant29(__symbols); + let __sym3 = __pop_Variant26(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym4.2; + let __nt = super::__action1136::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (5, 153) + } + pub(crate) fn __reduce427< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ImportAsAlias = DottedName, "as", Identifier => ActionFn(1299); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant24(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant24(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1299::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant69(__nt), __end)); + (3, 154) + } + pub(crate) fn __reduce428< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ImportAsAlias = DottedName => ActionFn(1300); + let __sym0 = __pop_Variant24(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1300::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant69(__nt), __end)); + (1, 154) + } + pub(crate) fn __reduce429< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ImportAsAlias = Identifier, "as", Identifier => ActionFn(1301); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant24(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant24(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1301::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant69(__nt), __end)); + (3, 155) + } + pub(crate) fn __reduce430< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ImportAsAlias = Identifier => ActionFn(1302); + let __sym0 = __pop_Variant24(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1302::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant69(__nt), __end)); + (1, 155) + } + pub(crate) fn __reduce431< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ImportAsNames = OneOrMore> => ActionFn(1303); + let __sym0 = __pop_Variant70(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1303::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant70(__nt), __end)); + (1, 156) + } + pub(crate) fn __reduce432< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ImportAsNames = "(", OneOrMore>, ",", ")" => ActionFn(1304); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant70(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = super::__action1304::<>(mode, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant70(__nt), __end)); + (4, 156) + } + pub(crate) fn __reduce433< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ImportAsNames = "(", OneOrMore>, ")" => ActionFn(1305); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant70(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1305::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant70(__nt), __end)); + (3, 156) + } + pub(crate) fn __reduce434< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ImportAsNames = "*" => ActionFn(1306); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1306::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant70(__nt), __end)); + (1, 156) + } + pub(crate) fn __reduce435< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ImportDots = "..." => ActionFn(64); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action64::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant71(__nt), __end)); + (1, 157) + } + pub(crate) fn __reduce436< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ImportDots = "." => ActionFn(65); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action65::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant71(__nt), __end)); + (1, 157) + } + pub(crate) fn __reduce437< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ImportDots* = => ActionFn(365); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action365::<>(mode, &__start, &__end); + __symbols.push((__start, __Symbol::Variant72(__nt), __end)); + (0, 158) + } + pub(crate) fn __reduce438< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ImportDots* = ImportDots+ => ActionFn(366); + let __sym0 = __pop_Variant72(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action366::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant72(__nt), __end)); + (1, 158) + } + pub(crate) fn __reduce439< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ImportDots+ = ImportDots => ActionFn(363); + let __sym0 = __pop_Variant71(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action363::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant72(__nt), __end)); + (1, 159) + } + pub(crate) fn __reduce440< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ImportDots+ = ImportDots+, ImportDots => ActionFn(364); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant71(__symbols); + let __sym0 = __pop_Variant72(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action364::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant72(__nt), __end)); + (2, 159) + } + pub(crate) fn __reduce441< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ImportFromLocation = DottedName => ActionFn(1558); + let __sym0 = __pop_Variant24(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1558::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant73(__nt), __end)); + (1, 160) + } + pub(crate) fn __reduce442< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ImportFromLocation = ImportDots+, DottedName => ActionFn(1559); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant24(__symbols); + let __sym0 = __pop_Variant72(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1559::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant73(__nt), __end)); + (2, 160) + } + pub(crate) fn __reduce443< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ImportFromLocation = ImportDots+ => ActionFn(63); + let __sym0 = __pop_Variant72(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action63::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant73(__nt), __end)); + (1, 160) + } + pub(crate) fn __reduce444< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ImportStatement = "import", OneOrMore> => ActionFn(1307); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant70(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1307::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (2, 161) + } + pub(crate) fn __reduce445< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ImportStatement = "from", ImportFromLocation, "import", ImportAsNames => ActionFn(1308); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant70(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant73(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = super::__action1308::<>(mode, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (4, 161) + } + pub(crate) fn __reduce446< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // KwargParameter = "**", DoubleStarTypedParameter => ActionFn(1548); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant64(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1548::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant10(__nt), __end)); + (2, 162) + } + pub(crate) fn __reduce447< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // KwargParameter = "**" => ActionFn(1549); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1549::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant10(__nt), __end)); + (1, 162) + } + pub(crate) fn __reduce448< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // KwargParameter = "**", StarUntypedParameter => ActionFn(999); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant64(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action999::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant10(__nt), __end)); + (2, 163) + } + pub(crate) fn __reduce449< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // KwargParameter = "**" => ActionFn(1000); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1000::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant10(__nt), __end)); + (1, 163) + } + pub(crate) fn __reduce454< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ListLiteralValues = OneOrMore, "," => ActionFn(609); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant34(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action609::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant34(__nt), __end)); + (2, 167) + } + pub(crate) fn __reduce455< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ListLiteralValues = OneOrMore => ActionFn(610); + let __sym0 = __pop_Variant34(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action610::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant34(__nt), __end)); + (1, 167) + } + pub(crate) fn __reduce456< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ListLiteralValues? = ListLiteralValues => ActionFn(549); + let __sym0 = __pop_Variant34(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action549::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant35(__nt), __end)); + (1, 168) + } + pub(crate) fn __reduce457< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ListLiteralValues? = => ActionFn(550); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action550::<>(mode, &__start, &__end); + __symbols.push((__start, __Symbol::Variant35(__nt), __end)); + (0, 168) + } + pub(crate) fn __reduce458< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // LiteralPattern = "None" => ActionFn(1312); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1312::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant36(__nt), __end)); + (1, 169) + } + pub(crate) fn __reduce459< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // LiteralPattern = "True" => ActionFn(1313); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1313::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant36(__nt), __end)); + (1, 169) + } + pub(crate) fn __reduce460< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // LiteralPattern = "False" => ActionFn(1314); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1314::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant36(__nt), __end)); + (1, 169) + } + pub(crate) fn __reduce461< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // LiteralPattern = ConstantExpr => ActionFn(1315); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1315::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant36(__nt), __end)); + (1, 169) + } + pub(crate) fn __reduce462< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // LiteralPattern = AddOpExpr => ActionFn(1316); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1316::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant36(__nt), __end)); + (1, 169) + } + pub(crate) fn __reduce464< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // MappingKey = ConstantExpr => ActionFn(125); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action125::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 170) + } + pub(crate) fn __reduce465< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // MappingKey = AddOpExpr => ActionFn(126); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action126::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 170) + } + pub(crate) fn __reduce466< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // MappingKey = MatchNameOrAttr => ActionFn(127); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action127::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 170) + } + pub(crate) fn __reduce467< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // MappingKey = "None" => ActionFn(1318); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1318::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 170) + } + pub(crate) fn __reduce468< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // MappingKey = "True" => ActionFn(1319); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1319::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 170) + } + pub(crate) fn __reduce469< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // MappingKey = "False" => ActionFn(1320); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1320::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 170) + } + pub(crate) fn __reduce471< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // MappingPattern = "{", "}" => ActionFn(1321); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1321::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant36(__nt), __end)); + (2, 171) + } + pub(crate) fn __reduce472< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // MappingPattern = "{", OneOrMore, ",", "}" => ActionFn(1322); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant80(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = super::__action1322::<>(mode, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant36(__nt), __end)); + (4, 171) + } + pub(crate) fn __reduce473< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // MappingPattern = "{", OneOrMore, "}" => ActionFn(1323); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant80(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1323::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant36(__nt), __end)); + (3, 171) + } + pub(crate) fn __reduce474< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // MappingPattern = "{", "**", Identifier, ",", "}" => ActionFn(1324); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant24(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym4.2; + let __nt = super::__action1324::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4); + __symbols.push((__start, __Symbol::Variant36(__nt), __end)); + (5, 171) + } + pub(crate) fn __reduce475< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // MappingPattern = "{", "**", Identifier, "}" => ActionFn(1325); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant24(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = super::__action1325::<>(mode, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant36(__nt), __end)); + (4, 171) + } + pub(crate) fn __reduce476< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // MappingPattern = "{", OneOrMore, ",", "**", Identifier, ",", "}" => ActionFn(1326); + assert!(__symbols.len() >= 7); + let __sym6 = __pop_Variant0(__symbols); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant24(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant80(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym6.2; + let __nt = super::__action1326::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6); + __symbols.push((__start, __Symbol::Variant36(__nt), __end)); + (7, 171) + } + pub(crate) fn __reduce477< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // MappingPattern = "{", OneOrMore, ",", "**", Identifier, "}" => ActionFn(1327); + assert!(__symbols.len() >= 6); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant24(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant80(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym5.2; + let __nt = super::__action1327::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5); + __symbols.push((__start, __Symbol::Variant36(__nt), __end)); + (6, 171) + } + pub(crate) fn __reduce478< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // MatchCase = "case", Patterns, Guard, ":", Suite => ActionFn(1501); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant26(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant16(__symbols); + let __sym1 = __pop_Variant36(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym4.2; + let __nt = super::__action1501::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4); + __symbols.push((__start, __Symbol::Variant74(__nt), __end)); + (5, 172) + } + pub(crate) fn __reduce479< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // MatchCase = "case", Patterns, ":", Suite => ActionFn(1502); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant26(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant36(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = super::__action1502::<>(mode, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant74(__nt), __end)); + (4, 172) + } + pub(crate) fn __reduce480< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // MatchCase+ = MatchCase => ActionFn(348); + let __sym0 = __pop_Variant74(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action348::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant75(__nt), __end)); + (1, 173) + } + pub(crate) fn __reduce481< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // MatchCase+ = MatchCase+, MatchCase => ActionFn(349); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant74(__symbols); + let __sym0 = __pop_Variant75(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action349::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant75(__nt), __end)); + (2, 173) + } + pub(crate) fn __reduce482< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // MatchKeywordEntry = Identifier, "=", Pattern => ActionFn(137); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant36(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant24(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action137::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant76(__nt), __end)); + (3, 174) + } + pub(crate) fn __reduce483< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // MatchMappingEntry = MappingKey, ":", Pattern => ActionFn(132); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant36(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action132::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant77(__nt), __end)); + (3, 175) + } + pub(crate) fn __reduce484< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // MatchName = Identifier => ActionFn(1328); + let __sym0 = __pop_Variant24(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1328::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 176) + } + pub(crate) fn __reduce485< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // MatchNameOrAttr = MatchName, ".", Identifier => ActionFn(1329); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant24(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1329::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (3, 177) + } + pub(crate) fn __reduce486< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // MatchNameOrAttr = MatchNameOrAttr, ".", Identifier => ActionFn(1330); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant24(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1330::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (3, 177) + } + pub(crate) fn __reduce487< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // MatchStatement = "match", TestOrStarNamedExpr, ":", "\n", Indent, MatchCase+, Dedent => ActionFn(848); + assert!(__symbols.len() >= 7); + let __sym6 = __pop_Variant0(__symbols); + let __sym5 = __pop_Variant75(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym6.2; + let __nt = super::__action848::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (7, 178) + } + pub(crate) fn __reduce488< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // MatchStatement = "match", TestOrStarNamedExpr, ",", ":", "\n", Indent, MatchCase+, Dedent => ActionFn(849); + assert!(__symbols.len() >= 8); + let __sym7 = __pop_Variant0(__symbols); + let __sym6 = __pop_Variant75(__symbols); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym7.2; + let __nt = super::__action849::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (8, 178) + } + pub(crate) fn __reduce489< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // MatchStatement = "match", TwoOrMore, ",", ":", "\n", Indent, MatchCase+, Dedent => ActionFn(850); + assert!(__symbols.len() >= 8); + let __sym7 = __pop_Variant0(__symbols); + let __sym6 = __pop_Variant75(__symbols); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant34(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym7.2; + let __nt = super::__action850::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (8, 178) + } + pub(crate) fn __reduce490< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // MatchStatement = "match", TwoOrMore, ":", "\n", Indent, MatchCase+, Dedent => ActionFn(851); + assert!(__symbols.len() >= 7); + let __sym6 = __pop_Variant0(__symbols); + let __sym5 = __pop_Variant75(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant34(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym6.2; + let __nt = super::__action851::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (7, 178) + } + pub(crate) fn __reduce491< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // MulOp = "*" => ActionFn(197); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action197::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant50(__nt), __end)); + (1, 179) + } + pub(crate) fn __reduce492< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // MulOp = "/" => ActionFn(198); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action198::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant50(__nt), __end)); + (1, 179) + } + pub(crate) fn __reduce493< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // MulOp = "//" => ActionFn(199); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action199::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant50(__nt), __end)); + (1, 179) + } + pub(crate) fn __reduce494< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // MulOp = "%" => ActionFn(200); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action200::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant50(__nt), __end)); + (1, 179) + } + pub(crate) fn __reduce495< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // MulOp = "@" => ActionFn(201); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action201::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant50(__nt), __end)); + (1, 179) + } + pub(crate) fn __reduce496< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // NamedExpression = Identifier, ":=", Test<"all"> => ActionFn(1331); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant16(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant24(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1331::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (3, 180) + } + pub(crate) fn __reduce497< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // NamedExpressionTest = NamedExpression => ActionFn(179); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action179::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 181) + } + pub(crate) fn __reduce498< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // NamedExpressionTest = Test<"all"> => ActionFn(180); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action180::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 181) + } + pub(crate) fn __reduce499< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // NamedOrStarExpr = NamedExpression => ActionFn(36); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action36::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 182) + } + pub(crate) fn __reduce500< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // NamedOrStarExpr = StarExpr => ActionFn(37); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action37::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 182) + } + pub(crate) fn __reduce501< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // NonlocalStatement = "nonlocal", OneOrMore => ActionFn(1332); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant78(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1332::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (2, 183) + } + pub(crate) fn __reduce502< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // NotTest<"all"> = "not", NotTest<"all"> => ActionFn(1333); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1333::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (2, 184) + } + pub(crate) fn __reduce503< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // NotTest<"all"> = Comparison<"all"> => ActionFn(450); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action450::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 184) + } + pub(crate) fn __reduce504< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // NotTest<"no-withitems"> = "not", NotTest<"all"> => ActionFn(1334); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1334::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (2, 185) + } + pub(crate) fn __reduce505< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // NotTest<"no-withitems"> = Comparison<"no-withitems"> => ActionFn(495); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action495::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 185) + } + pub(crate) fn __reduce506< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // OneOrMore = DictElement => ActionFn(251); + let __sym0 = __pop_Variant60(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action251::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant62(__nt), __end)); + (1, 186) + } + pub(crate) fn __reduce507< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // OneOrMore = OneOrMore, ",", DictElement => ActionFn(252); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant60(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant62(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action252::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant62(__nt), __end)); + (3, 186) + } + pub(crate) fn __reduce508< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // OneOrMore = ExpressionOrStarExpression => ActionFn(246); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action246::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant34(__nt), __end)); + (1, 187) + } + pub(crate) fn __reduce509< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // OneOrMore = OneOrMore, ",", ExpressionOrStarExpression => ActionFn(247); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant16(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant34(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action247::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant34(__nt), __end)); + (3, 187) + } + pub(crate) fn __reduce510< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // OneOrMore = Identifier => ActionFn(353); + let __sym0 = __pop_Variant24(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action353::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant78(__nt), __end)); + (1, 188) + } + pub(crate) fn __reduce511< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // OneOrMore = OneOrMore, ",", Identifier => ActionFn(354); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant24(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant78(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action354::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant78(__nt), __end)); + (3, 188) + } + pub(crate) fn __reduce512< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // OneOrMore> = DottedName, "as", Identifier => ActionFn(1550); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant24(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant24(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1550::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant70(__nt), __end)); + (3, 189) + } + pub(crate) fn __reduce513< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // OneOrMore> = DottedName => ActionFn(1551); + let __sym0 = __pop_Variant24(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1551::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant70(__nt), __end)); + (1, 189) + } + pub(crate) fn __reduce514< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // OneOrMore> = OneOrMore>, ",", DottedName, "as", Identifier => ActionFn(1552); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant24(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant24(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant70(__symbols); + let __start = __sym0.0; + let __end = __sym4.2; + let __nt = super::__action1552::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4); + __symbols.push((__start, __Symbol::Variant70(__nt), __end)); + (5, 189) + } + pub(crate) fn __reduce515< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // OneOrMore> = OneOrMore>, ",", DottedName => ActionFn(1553); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant24(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant70(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1553::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant70(__nt), __end)); + (3, 189) + } + pub(crate) fn __reduce516< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // OneOrMore> = Identifier, "as", Identifier => ActionFn(1554); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant24(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant24(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1554::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant70(__nt), __end)); + (3, 190) + } + pub(crate) fn __reduce517< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // OneOrMore> = Identifier => ActionFn(1555); + let __sym0 = __pop_Variant24(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1555::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant70(__nt), __end)); + (1, 190) + } + pub(crate) fn __reduce518< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // OneOrMore> = OneOrMore>, ",", Identifier, "as", Identifier => ActionFn(1556); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant24(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant24(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant70(__symbols); + let __start = __sym0.0; + let __end = __sym4.2; + let __nt = super::__action1556::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4); + __symbols.push((__start, __Symbol::Variant70(__nt), __end)); + (5, 190) + } + pub(crate) fn __reduce519< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // OneOrMore> = OneOrMore>, ",", Identifier => ActionFn(1557); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant24(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant70(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1557::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant70(__nt), __end)); + (3, 190) + } + pub(crate) fn __reduce520< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // OneOrMore = MatchKeywordEntry => ActionFn(326); + let __sym0 = __pop_Variant76(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action326::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant79(__nt), __end)); + (1, 191) + } + pub(crate) fn __reduce521< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // OneOrMore = OneOrMore, ",", MatchKeywordEntry => ActionFn(327); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant76(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant79(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action327::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant79(__nt), __end)); + (3, 191) + } + pub(crate) fn __reduce522< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // OneOrMore = MatchMappingEntry => ActionFn(330); + let __sym0 = __pop_Variant77(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action330::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant80(__nt), __end)); + (1, 192) + } + pub(crate) fn __reduce523< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // OneOrMore = OneOrMore, ",", MatchMappingEntry => ActionFn(331); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant77(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant80(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action331::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant80(__nt), __end)); + (3, 192) + } + pub(crate) fn __reduce524< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // OneOrMore> = ParameterDef => ActionFn(464); + let __sym0 = __pop_Variant12(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action464::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant81(__nt), __end)); + (1, 193) + } + pub(crate) fn __reduce525< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // OneOrMore> = OneOrMore>, ",", ParameterDef => ActionFn(465); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant12(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action465::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant81(__nt), __end)); + (3, 193) + } + pub(crate) fn __reduce526< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // OneOrMore> = ParameterDef => ActionFn(453); + let __sym0 = __pop_Variant12(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action453::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant81(__nt), __end)); + (1, 194) + } + pub(crate) fn __reduce527< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // OneOrMore> = OneOrMore>, ",", ParameterDef => ActionFn(454); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant12(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action454::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant81(__nt), __end)); + (3, 194) + } + pub(crate) fn __reduce528< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // OneOrMore = Pattern => ActionFn(328); + let __sym0 = __pop_Variant36(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action328::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant53(__nt), __end)); + (1, 195) + } + pub(crate) fn __reduce529< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // OneOrMore = OneOrMore, ",", Pattern => ActionFn(329); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant36(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant53(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action329::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant53(__nt), __end)); + (3, 195) + } + pub(crate) fn __reduce530< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // OneOrMore> = Test<"all"> => ActionFn(290); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action290::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant34(__nt), __end)); + (1, 196) + } + pub(crate) fn __reduce531< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // OneOrMore> = OneOrMore>, ",", Test<"all"> => ActionFn(291); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant16(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant34(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action291::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant34(__nt), __end)); + (3, 196) + } + pub(crate) fn __reduce532< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // OneOrMore = TestOrStarExpr => ActionFn(430); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action430::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant34(__nt), __end)); + (1, 197) + } + pub(crate) fn __reduce533< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // OneOrMore = OneOrMore, ",", TestOrStarExpr => ActionFn(431); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant16(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant34(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action431::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant34(__nt), __end)); + (3, 197) + } + pub(crate) fn __reduce534< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // OneOrMore = TestOrStarNamedExpr => ActionFn(253); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action253::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant34(__nt), __end)); + (1, 198) + } + pub(crate) fn __reduce535< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // OneOrMore = OneOrMore, ",", TestOrStarNamedExpr => ActionFn(254); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant16(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant34(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action254::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant34(__nt), __end)); + (3, 198) + } + pub(crate) fn __reduce536< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // OneOrMore = TypeParam => ActionFn(265); + let __sym0 = __pop_Variant91(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action265::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant82(__nt), __end)); + (1, 199) + } + pub(crate) fn __reduce537< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // OneOrMore = OneOrMore, ",", TypeParam => ActionFn(266); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant91(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant82(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action266::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant82(__nt), __end)); + (3, 199) + } + pub(crate) fn __reduce538< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // OrPattern = ClosedPattern => ActionFn(95); + let __sym0 = __pop_Variant36(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action95::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant36(__nt), __end)); + (1, 200) + } + pub(crate) fn __reduce539< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // OrPattern = TwoOrMore => ActionFn(1335); + let __sym0 = __pop_Variant53(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1335::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant36(__nt), __end)); + (1, 200) + } + pub(crate) fn __reduce540< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // OrTest<"all"> = (> "or")+, AndTest<"all"> => ActionFn(1336); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant18(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1336::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (2, 201) + } + pub(crate) fn __reduce541< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // OrTest<"all"> = AndTest<"all"> => ActionFn(242); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action242::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 201) + } + pub(crate) fn __reduce542< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // OrTest<"no-withitems"> = (> "or")+, AndTest<"all"> => ActionFn(1337); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant18(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1337::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (2, 202) + } + pub(crate) fn __reduce543< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // OrTest<"no-withitems"> = AndTest<"no-withitems"> => ActionFn(478); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action478::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 202) + } + pub(crate) fn __reduce544< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ParameterDef = TypedParameter => ActionFn(471); + let __sym0 = __pop_Variant12(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action471::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (1, 203) + } + pub(crate) fn __reduce545< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ParameterDef = TypedParameter, "=", Test<"all"> => ActionFn(1338); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant16(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant12(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1338::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (3, 203) + } + pub(crate) fn __reduce546< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ParameterDef = UntypedParameter => ActionFn(460); + let __sym0 = __pop_Variant12(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action460::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (1, 204) + } + pub(crate) fn __reduce547< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ParameterDef = UntypedParameter, "=", Test<"all"> => ActionFn(1339); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant16(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant12(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1339::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (3, 204) + } + pub(crate) fn __reduce548< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ParameterDefs = OneOrMore> => ActionFn(418); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action418::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant83(__nt), __end)); + (1, 205) + } + pub(crate) fn __reduce549< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ParameterDefs = OneOrMore>, ",", "/" => ActionFn(680); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action680::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant83(__nt), __end)); + (3, 205) + } + pub(crate) fn __reduce550< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ParameterDefs = OneOrMore>, ",", "/", ("," >)+ => ActionFn(681); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant13(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = super::__action681::<>(mode, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant83(__nt), __end)); + (4, 205) + } + pub(crate) fn __reduce551< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ParameterDefs = OneOrMore> => ActionFn(426); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action426::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant83(__nt), __end)); + (1, 206) + } + pub(crate) fn __reduce552< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ParameterDefs = OneOrMore>, ",", "/" => ActionFn(688); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action688::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant83(__nt), __end)); + (3, 206) + } + pub(crate) fn __reduce553< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ParameterDefs = OneOrMore>, ",", "/", ("," >)+ => ActionFn(689); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant13(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant81(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = super::__action689::<>(mode, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant83(__nt), __end)); + (4, 206) + } + pub(crate) fn __reduce630< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ParameterList = KwargParameter, "," => ActionFn(1376); + 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::__action1376::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (2, 207) + } + pub(crate) fn __reduce631< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ParameterList = KwargParameter => ActionFn(1377); + let __sym0 = __pop_Variant10(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1377::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (1, 207) + } + pub(crate) fn __reduce708< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ParameterList = KwargParameter, "," => ActionFn(1414); + 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::__action1414::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (2, 208) + } + pub(crate) fn __reduce709< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ParameterList = KwargParameter => ActionFn(1415); + let __sym0 = __pop_Variant10(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1415::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant47(__nt), __end)); + (1, 208) + } + pub(crate) fn __reduce710< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ParameterList? = ParameterList => ActionFn(259); + let __sym0 = __pop_Variant47(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action259::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant48(__nt), __end)); + (1, 209) + } + pub(crate) fn __reduce711< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ParameterList? = => ActionFn(260); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action260::<>(mode, &__start, &__end); + __symbols.push((__start, __Symbol::Variant48(__nt), __end)); + (0, 209) + } + pub(crate) fn __reduce730< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // PassStatement = "pass" => ActionFn(1417); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1417::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (1, 213) + } + pub(crate) fn __reduce731< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Pattern = AsPattern => ActionFn(92); + let __sym0 = __pop_Variant36(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action92::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant36(__nt), __end)); + (1, 214) + } + pub(crate) fn __reduce732< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Pattern = OrPattern => ActionFn(93); + let __sym0 = __pop_Variant36(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action93::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant36(__nt), __end)); + (1, 214) + } + pub(crate) fn __reduce733< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Pattern? = Pattern => ActionFn(401); + let __sym0 = __pop_Variant36(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action401::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant84(__nt), __end)); + (1, 215) + } + pub(crate) fn __reduce734< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Pattern? = => ActionFn(402); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action402::<>(mode, &__start, &__end); + __symbols.push((__start, __Symbol::Variant84(__nt), __end)); + (0, 215) + } + pub(crate) fn __reduce735< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Patterns = Pattern, "," => ActionFn(1418); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant36(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1418::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant36(__nt), __end)); + (2, 216) + } + pub(crate) fn __reduce736< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Patterns = TwoOrMore, "," => ActionFn(1419); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant53(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1419::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant36(__nt), __end)); + (2, 216) + } + pub(crate) fn __reduce737< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Patterns = TwoOrMore => ActionFn(1420); + let __sym0 = __pop_Variant53(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1420::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant36(__nt), __end)); + (1, 216) + } + pub(crate) fn __reduce738< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Patterns = Pattern => ActionFn(91); + let __sym0 = __pop_Variant36(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action91::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant36(__nt), __end)); + (1, 216) + } + pub(crate) fn __reduce739< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Power<"all"> = AtomExpr<"all">, "**", Factor<"all"> => ActionFn(1421); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant16(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1421::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (3, 217) + } + pub(crate) fn __reduce740< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Power<"all"> = AtomExpr<"all"> => ActionFn(507); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action507::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 217) + } + pub(crate) fn __reduce741< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Power<"no-withitems"> = AtomExpr<"all">, "**", Factor<"all"> => ActionFn(1422); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant16(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1422::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (3, 218) + } + pub(crate) fn __reduce742< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Power<"no-withitems"> = AtomExpr<"no-withitems"> => ActionFn(556); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action556::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 218) + } + pub(crate) fn __reduce743< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Program = => ActionFn(4); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action4::<>(mode, &__start, &__end); + __symbols.push((__start, __Symbol::Variant26(__nt), __end)); + (0, 219) + } + pub(crate) fn __reduce744< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Program = Program, CompoundStatement => ActionFn(5); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant38(__symbols); + let __sym0 = __pop_Variant26(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action5::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant26(__nt), __end)); + (2, 219) + } + pub(crate) fn __reduce745< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Program = Program, SmallStatement, ";", "\n" => ActionFn(1168); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant38(__symbols); + let __sym0 = __pop_Variant26(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = super::__action1168::<>(mode, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant26(__nt), __end)); + (4, 219) + } + pub(crate) fn __reduce746< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Program = Program, ( ";")+, SmallStatement, ";", "\n" => ActionFn(1169); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant38(__symbols); + let __sym1 = __pop_Variant39(__symbols); + let __sym0 = __pop_Variant26(__symbols); + let __start = __sym0.0; + let __end = __sym4.2; + let __nt = super::__action1169::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4); + __symbols.push((__start, __Symbol::Variant26(__nt), __end)); + (5, 219) + } + pub(crate) fn __reduce747< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Program = Program, SmallStatement, "\n" => ActionFn(1170); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant38(__symbols); + let __sym0 = __pop_Variant26(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1170::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant26(__nt), __end)); + (3, 219) + } + pub(crate) fn __reduce748< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Program = Program, ( ";")+, SmallStatement, "\n" => ActionFn(1171); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant38(__symbols); + let __sym1 = __pop_Variant39(__symbols); + let __sym0 = __pop_Variant26(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = super::__action1171::<>(mode, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant26(__nt), __end)); + (4, 219) + } + pub(crate) fn __reduce749< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Program = Program, "\n" => ActionFn(7); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant26(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action7::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant26(__nt), __end)); + (2, 219) + } + pub(crate) fn __reduce750< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // RaiseStatement = "raise" => ActionFn(1423); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1423::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (1, 220) + } + pub(crate) fn __reduce751< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // RaiseStatement = "raise", Test<"all">, "from", Test<"all"> => ActionFn(1424); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant16(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = super::__action1424::<>(mode, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (4, 220) + } + pub(crate) fn __reduce752< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // RaiseStatement = "raise", Test<"all"> => ActionFn(1425); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1425::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (2, 220) + } + pub(crate) fn __reduce753< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // SequencePattern = "(", Pattern, ")" => ActionFn(1426); + 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::__action1426::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant36(__nt), __end)); + (3, 221) + } + pub(crate) fn __reduce754< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // SequencePattern = "(", ")" => ActionFn(1427); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1427::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant36(__nt), __end)); + (2, 221) + } + pub(crate) fn __reduce755< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // SequencePattern = "(", Pattern, ",", ")" => ActionFn(1428); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant36(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = super::__action1428::<>(mode, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant36(__nt), __end)); + (4, 221) + } + pub(crate) fn __reduce756< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // SequencePattern = "(", ( ",")+, Pattern, ",", ")" => ActionFn(1429); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant36(__symbols); + let __sym1 = __pop_Variant37(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym4.2; + let __nt = super::__action1429::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4); + __symbols.push((__start, __Symbol::Variant36(__nt), __end)); + (5, 221) + } + pub(crate) fn __reduce757< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // SequencePattern = "(", ( ",")+, Pattern, ")" => ActionFn(1430); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant36(__symbols); + let __sym1 = __pop_Variant37(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = super::__action1430::<>(mode, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant36(__nt), __end)); + (4, 221) + } + pub(crate) fn __reduce758< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // SequencePattern = "[", Pattern, "]" => ActionFn(1522); + 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::__action1522::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant36(__nt), __end)); + (3, 221) + } + pub(crate) fn __reduce759< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // SequencePattern = "[", "]" => ActionFn(1523); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1523::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant36(__nt), __end)); + (2, 221) + } + pub(crate) fn __reduce760< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // SequencePattern = "[", ( ",")+, Pattern, "]" => ActionFn(1524); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant36(__symbols); + let __sym1 = __pop_Variant37(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = super::__action1524::<>(mode, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant36(__nt), __end)); + (4, 221) + } + pub(crate) fn __reduce761< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // SequencePattern = "[", ( ",")+, "]" => ActionFn(1525); + 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::__action1525::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant36(__nt), __end)); + (3, 221) + } + pub(crate) fn __reduce762< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // SetLiteralValues = OneOrMore, "," => ActionFn(639); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant34(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action639::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant34(__nt), __end)); + (2, 222) + } + pub(crate) fn __reduce763< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // SetLiteralValues = OneOrMore => ActionFn(640); + let __sym0 = __pop_Variant34(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action640::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant34(__nt), __end)); + (1, 222) + } + pub(crate) fn __reduce764< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ShiftExpression<"all"> = ShiftExpression<"all">, ShiftOp, ArithmeticExpression<"all"> => ActionFn(1432); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant16(__symbols); + let __sym1 = __pop_Variant50(__symbols); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1432::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (3, 223) + } + pub(crate) fn __reduce765< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ShiftExpression<"all"> = ArithmeticExpression<"all"> => ActionFn(486); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action486::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 223) + } + pub(crate) fn __reduce766< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ShiftExpression<"no-withitems"> = ShiftExpression<"all">, ShiftOp, ArithmeticExpression<"all"> => ActionFn(1433); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant16(__symbols); + let __sym1 = __pop_Variant50(__symbols); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1433::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (3, 224) + } + pub(crate) fn __reduce767< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ShiftExpression<"no-withitems"> = ArithmeticExpression<"no-withitems"> => ActionFn(513); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action513::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 224) + } + pub(crate) fn __reduce768< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ShiftOp = "<<" => ActionFn(193); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action193::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant50(__nt), __end)); + (1, 225) + } + pub(crate) fn __reduce769< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ShiftOp = ">>" => ActionFn(194); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action194::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant50(__nt), __end)); + (1, 225) + } + pub(crate) fn __reduce770< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // SingleForComprehension = "async", "for", ExpressionList, "in", OrTest<"all"> => ActionFn(1528); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant16(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant16(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym4.2; + let __nt = super::__action1528::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4); + __symbols.push((__start, __Symbol::Variant85(__nt), __end)); + (5, 226) + } + pub(crate) fn __reduce771< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // SingleForComprehension = "async", "for", ExpressionList, "in", OrTest<"all">, ComprehensionIf+ => ActionFn(1529); + assert!(__symbols.len() >= 6); + let __sym5 = __pop_Variant18(__symbols); + let __sym4 = __pop_Variant16(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant16(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym5.2; + let __nt = super::__action1529::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5); + __symbols.push((__start, __Symbol::Variant85(__nt), __end)); + (6, 226) + } + pub(crate) fn __reduce772< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // SingleForComprehension = "for", ExpressionList, "in", OrTest<"all"> => ActionFn(1530); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant16(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = super::__action1530::<>(mode, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant85(__nt), __end)); + (4, 226) + } + pub(crate) fn __reduce773< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // SingleForComprehension = "for", ExpressionList, "in", OrTest<"all">, ComprehensionIf+ => ActionFn(1531); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant18(__symbols); + let __sym3 = __pop_Variant16(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym4.2; + let __nt = super::__action1531::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4); + __symbols.push((__start, __Symbol::Variant85(__nt), __end)); + (5, 226) + } + pub(crate) fn __reduce774< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // SingleForComprehension+ = SingleForComprehension => ActionFn(243); + let __sym0 = __pop_Variant85(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action243::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant86(__nt), __end)); + (1, 227) + } + pub(crate) fn __reduce775< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // SingleForComprehension+ = SingleForComprehension+, SingleForComprehension => ActionFn(244); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant85(__symbols); + let __sym0 = __pop_Variant86(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action244::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant86(__nt), __end)); + (2, 227) + } + pub(crate) fn __reduce776< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // SliceOp = ":", Test<"all"> => ActionFn(1690); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1690::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant87(__nt), __end)); + (2, 228) + } + pub(crate) fn __reduce777< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // SliceOp = ":" => ActionFn(1691); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1691::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant87(__nt), __end)); + (1, 228) + } + pub(crate) fn __reduce778< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // SliceOp? = SliceOp => ActionFn(255); + let __sym0 = __pop_Variant87(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action255::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant88(__nt), __end)); + (1, 229) + } + pub(crate) fn __reduce779< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // SliceOp? = => ActionFn(256); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action256::<>(mode, &__start, &__end); + __symbols.push((__start, __Symbol::Variant88(__nt), __end)); + (0, 229) + } + pub(crate) fn __reduce780< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // SmallStatement = ExpressionStatement => ActionFn(14); + let __sym0 = __pop_Variant38(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action14::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (1, 230) + } + pub(crate) fn __reduce781< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // SmallStatement = PassStatement => ActionFn(15); + let __sym0 = __pop_Variant38(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action15::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (1, 230) + } + pub(crate) fn __reduce782< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // SmallStatement = DelStatement => ActionFn(16); + let __sym0 = __pop_Variant38(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action16::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (1, 230) + } + pub(crate) fn __reduce783< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // SmallStatement = FlowStatement => ActionFn(17); + let __sym0 = __pop_Variant38(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action17::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (1, 230) + } + pub(crate) fn __reduce784< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // SmallStatement = ImportStatement => ActionFn(18); + let __sym0 = __pop_Variant38(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action18::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (1, 230) + } + pub(crate) fn __reduce785< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // SmallStatement = GlobalStatement => ActionFn(19); + let __sym0 = __pop_Variant38(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action19::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (1, 230) + } + pub(crate) fn __reduce786< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // SmallStatement = NonlocalStatement => ActionFn(20); + let __sym0 = __pop_Variant38(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action20::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (1, 230) + } + pub(crate) fn __reduce787< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // SmallStatement = AssertStatement => ActionFn(21); + let __sym0 = __pop_Variant38(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action21::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (1, 230) + } + pub(crate) fn __reduce788< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // SmallStatement = TypeAliasStatement => ActionFn(22); + let __sym0 = __pop_Variant38(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action22::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (1, 230) + } + pub(crate) fn __reduce789< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // SmallStatement = LineMagicStatement => ActionFn(23); + let __sym0 = __pop_Variant38(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action23::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (1, 230) + } + pub(crate) fn __reduce790< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // StarExpr = "*", Expression<"all"> => ActionFn(1436); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1436::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (2, 231) + } + pub(crate) fn __reduce791< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // StarPattern = "*", Identifier => ActionFn(1437); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant24(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1437::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant36(__nt), __end)); + (2, 232) + } + pub(crate) fn __reduce792< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // StarTypedParameter = Identifier, ":", TestOrStarExpr => ActionFn(1438); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant16(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant24(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1438::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant64(__nt), __end)); + (3, 233) + } + pub(crate) fn __reduce793< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // StarTypedParameter = Identifier => ActionFn(1439); + let __sym0 = __pop_Variant24(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1439::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant64(__nt), __end)); + (1, 233) + } + pub(crate) fn __reduce794< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // StarTypedParameter? = StarTypedParameter => ActionFn(473); + let __sym0 = __pop_Variant64(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action473::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant65(__nt), __end)); + (1, 234) + } + pub(crate) fn __reduce795< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // StarTypedParameter? = => ActionFn(474); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action474::<>(mode, &__start, &__end); + __symbols.push((__start, __Symbol::Variant65(__nt), __end)); + (0, 234) + } + pub(crate) fn __reduce796< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // StarUntypedParameter = Identifier => ActionFn(1440); + let __sym0 = __pop_Variant24(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1440::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant64(__nt), __end)); + (1, 235) + } + pub(crate) fn __reduce797< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // StarUntypedParameter? = StarUntypedParameter => ActionFn(462); + let __sym0 = __pop_Variant64(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action462::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant65(__nt), __end)); + (1, 236) + } + pub(crate) fn __reduce798< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // StarUntypedParameter? = => ActionFn(463); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action463::<>(mode, &__start, &__end); + __symbols.push((__start, __Symbol::Variant65(__nt), __end)); + (0, 236) + } + pub(crate) fn __reduce799< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Statements = SmallStatement, ";", "\n" => ActionFn(1172); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant38(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1172::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant89(__nt), __end)); + (3, 237) + } + pub(crate) fn __reduce800< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Statements = ( ";")+, SmallStatement, ";", "\n" => ActionFn(1173); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant38(__symbols); + let __sym0 = __pop_Variant39(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = super::__action1173::<>(mode, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant89(__nt), __end)); + (4, 237) + } + pub(crate) fn __reduce801< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Statements = SmallStatement, "\n" => ActionFn(1174); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant38(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1174::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant89(__nt), __end)); + (2, 237) + } + pub(crate) fn __reduce802< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Statements = ( ";")+, SmallStatement, "\n" => ActionFn(1175); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant38(__symbols); + let __sym0 = __pop_Variant39(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1175::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant89(__nt), __end)); + (3, 237) + } + pub(crate) fn __reduce803< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Statements = CompoundStatement => ActionFn(11); + let __sym0 = __pop_Variant38(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action11::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant89(__nt), __end)); + (1, 237) + } + pub(crate) fn __reduce804< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Statements = Statements, CompoundStatement => ActionFn(12); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant38(__symbols); + let __sym0 = __pop_Variant89(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action12::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant89(__nt), __end)); + (2, 237) + } + pub(crate) fn __reduce805< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Statements = Statements, SmallStatement, ";", "\n" => ActionFn(1176); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant38(__symbols); + let __sym0 = __pop_Variant89(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = super::__action1176::<>(mode, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant89(__nt), __end)); + (4, 237) + } + pub(crate) fn __reduce806< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Statements = Statements, ( ";")+, SmallStatement, ";", "\n" => ActionFn(1177); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant38(__symbols); + let __sym1 = __pop_Variant39(__symbols); + let __sym0 = __pop_Variant89(__symbols); + let __start = __sym0.0; + let __end = __sym4.2; + let __nt = super::__action1177::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4); + __symbols.push((__start, __Symbol::Variant89(__nt), __end)); + (5, 237) + } + pub(crate) fn __reduce807< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Statements = Statements, SmallStatement, "\n" => ActionFn(1178); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant38(__symbols); + let __sym0 = __pop_Variant89(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1178::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant89(__nt), __end)); + (3, 237) + } + pub(crate) fn __reduce808< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Statements = Statements, ( ";")+, SmallStatement, "\n" => ActionFn(1179); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant38(__symbols); + let __sym1 = __pop_Variant39(__symbols); + let __sym0 = __pop_Variant89(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = super::__action1179::<>(mode, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant89(__nt), __end)); + (4, 237) + } + pub(crate) fn __reduce809< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Subscript = TestOrStarNamedExpr => ActionFn(208); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action208::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 238) + } + pub(crate) fn __reduce810< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Subscript = Test<"all">, ":", Test<"all">, SliceOp => ActionFn(1692); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant87(__symbols); + let __sym2 = __pop_Variant16(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = super::__action1692::<>(mode, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (4, 238) + } + pub(crate) fn __reduce811< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Subscript = Test<"all">, ":", SliceOp => ActionFn(1693); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant87(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1693::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (3, 238) + } + pub(crate) fn __reduce812< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Subscript = ":", Test<"all">, SliceOp => ActionFn(1694); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant87(__symbols); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1694::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (3, 238) + } + pub(crate) fn __reduce813< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Subscript = ":", SliceOp => ActionFn(1695); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant87(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1695::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (2, 238) + } + pub(crate) fn __reduce814< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Subscript = Test<"all">, ":", Test<"all"> => ActionFn(1696); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant16(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1696::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (3, 238) + } + pub(crate) fn __reduce815< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Subscript = Test<"all">, ":" => ActionFn(1697); + 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::__action1697::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (2, 238) + } + pub(crate) fn __reduce816< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Subscript = ":", Test<"all"> => ActionFn(1698); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1698::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (2, 238) + } + pub(crate) fn __reduce817< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Subscript = ":" => ActionFn(1699); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1699::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 238) + } + pub(crate) fn __reduce818< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // SubscriptList = Subscript => ActionFn(1442); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1442::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 239) + } + pub(crate) fn __reduce819< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // SubscriptList = Subscript, "," => ActionFn(1443); + 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::__action1443::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (2, 239) + } + pub(crate) fn __reduce820< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // SubscriptList = TwoOrMore, "," => ActionFn(1444); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant34(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1444::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (2, 239) + } + pub(crate) fn __reduce821< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // SubscriptList = TwoOrMore => ActionFn(1445); + let __sym0 = __pop_Variant34(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1445::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 239) + } + pub(crate) fn __reduce822< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Suite = SmallStatement, ";", "\n" => ActionFn(1180); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant38(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1180::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant26(__nt), __end)); + (3, 240) + } + pub(crate) fn __reduce823< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Suite = ( ";")+, SmallStatement, ";", "\n" => ActionFn(1181); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant38(__symbols); + let __sym0 = __pop_Variant39(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = super::__action1181::<>(mode, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant26(__nt), __end)); + (4, 240) + } + pub(crate) fn __reduce824< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Suite = SmallStatement, "\n" => ActionFn(1182); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant38(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1182::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant26(__nt), __end)); + (2, 240) + } + pub(crate) fn __reduce825< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Suite = ( ";")+, SmallStatement, "\n" => ActionFn(1183); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant38(__symbols); + let __sym0 = __pop_Variant39(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1183::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant26(__nt), __end)); + (3, 240) + } + pub(crate) fn __reduce826< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Suite = "\n", Indent, Statements, Dedent => ActionFn(9); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant89(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = super::__action9::<>(mode, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant26(__nt), __end)); + (4, 240) + } + pub(crate) fn __reduce827< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Term<"all"> = Term<"all">, MulOp, Factor<"all"> => ActionFn(1446); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant16(__symbols); + let __sym1 = __pop_Variant50(__symbols); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1446::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (3, 241) + } + pub(crate) fn __reduce828< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Term<"all"> = Factor<"all"> => ActionFn(499); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action499::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 241) + } + pub(crate) fn __reduce829< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Term<"no-withitems"> = Term<"all">, MulOp, Factor<"all"> => ActionFn(1447); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant16(__symbols); + let __sym1 = __pop_Variant50(__symbols); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1447::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (3, 242) + } + pub(crate) fn __reduce830< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Term<"no-withitems"> = Factor<"no-withitems"> => ActionFn(540); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action540::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 242) + } + pub(crate) fn __reduce831< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Test<"all"> = OrTest<"all">, "if", OrTest<"all">, "else", Test<"all"> => ActionFn(1448); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant16(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant16(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym4.2; + let __nt = super::__action1448::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (5, 243) + } + pub(crate) fn __reduce832< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Test<"all"> = OrTest<"all"> => ActionFn(378); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action378::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 243) + } + pub(crate) fn __reduce833< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Test<"all"> = LambdaDef => ActionFn(379); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action379::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 243) + } + pub(crate) fn __reduce834< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Test<"all">? = Test<"all"> => ActionFn(305); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action305::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (1, 244) + } + pub(crate) fn __reduce835< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Test<"all">? = => ActionFn(306); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action306::<>(mode, &__start, &__end); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (0, 244) + } + pub(crate) fn __reduce836< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Test<"no-withitems"> = OrTest<"all">, "if", OrTest<"all">, "else", Test<"all"> => ActionFn(1449); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant16(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant16(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym4.2; + let __nt = super::__action1449::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (5, 245) + } + pub(crate) fn __reduce837< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Test<"no-withitems"> = OrTest<"no-withitems"> => ActionFn(408); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action408::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 245) + } + pub(crate) fn __reduce838< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Test<"no-withitems"> = LambdaDef => ActionFn(409); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action409::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 245) + } + pub(crate) fn __reduce839< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // TestList = GenericList => ActionFn(221); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action221::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 246) + } + pub(crate) fn __reduce840< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // TestList? = GenericList => ActionFn(1704); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1704::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (1, 247) + } + pub(crate) fn __reduce841< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // TestList? = => ActionFn(374); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action374::<>(mode, &__start, &__end); + __symbols.push((__start, __Symbol::Variant17(__nt), __end)); + (0, 247) + } + pub(crate) fn __reduce842< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // TestListOrYieldExpr = GenericList => ActionFn(1705); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1705::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 248) + } + pub(crate) fn __reduce843< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // TestListOrYieldExpr = YieldExpr => ActionFn(32); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action32::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 248) + } + pub(crate) fn __reduce844< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // TestOrStarExpr = Test<"all"> => ActionFn(34); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action34::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 249) + } + pub(crate) fn __reduce845< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // TestOrStarExpr = StarExpr => ActionFn(35); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action35::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 249) + } + pub(crate) fn __reduce846< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // TestOrStarExprList = GenericList => ActionFn(1706); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1706::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 250) + } + pub(crate) fn __reduce847< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // TestOrStarNamedExpr = NamedExpressionTest => ActionFn(38); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action38::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 251) + } + pub(crate) fn __reduce848< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // TestOrStarNamedExpr = StarExpr => ActionFn(39); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action39::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 251) + } + pub(crate) fn __reduce849< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Top = StartModule, Program => ActionFn(1450); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant26(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1450::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant90(__nt), __end)); + (2, 252) + } + pub(crate) fn __reduce850< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Top = StartInteractive, Program => ActionFn(1451); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant26(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1451::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant90(__nt), __end)); + (2, 252) + } + pub(crate) fn __reduce851< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Top = StartExpression, GenericList => ActionFn(1707); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1707::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant90(__nt), __end)); + (2, 252) + } + pub(crate) fn __reduce852< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // Top = StartExpression, GenericList, ("\n")+ => ActionFn(1708); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant23(__symbols); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1708::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant90(__nt), __end)); + (3, 252) + } + pub(crate) fn __reduce853< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // TryStatement = "try", ":", Suite, ExceptClause+, "else", ":", Suite, "finally", ":", Suite => ActionFn(1454); + assert!(__symbols.len() >= 10); + let __sym9 = __pop_Variant26(__symbols); + let __sym8 = __pop_Variant0(__symbols); + let __sym7 = __pop_Variant0(__symbols); + let __sym6 = __pop_Variant26(__symbols); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant67(__symbols); + let __sym2 = __pop_Variant26(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym9.2; + let __nt = super::__action1454::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (10, 253) + } + pub(crate) fn __reduce854< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // TryStatement = "try", ":", Suite, ExceptClause+, "else", ":", Suite => ActionFn(1455); + assert!(__symbols.len() >= 7); + let __sym6 = __pop_Variant26(__symbols); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant67(__symbols); + let __sym2 = __pop_Variant26(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym6.2; + let __nt = super::__action1455::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (7, 253) + } + pub(crate) fn __reduce855< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // TryStatement = "try", ":", Suite, ExceptClause+, "finally", ":", Suite => ActionFn(1456); + assert!(__symbols.len() >= 7); + let __sym6 = __pop_Variant26(__symbols); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant67(__symbols); + let __sym2 = __pop_Variant26(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym6.2; + let __nt = super::__action1456::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (7, 253) + } + pub(crate) fn __reduce856< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // TryStatement = "try", ":", Suite, ExceptClause+ => ActionFn(1457); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant67(__symbols); + let __sym2 = __pop_Variant26(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = super::__action1457::<>(mode, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (4, 253) + } + pub(crate) fn __reduce857< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // TryStatement = "try", ":", Suite, ExceptStarClause+, "else", ":", Suite, "finally", ":", Suite => ActionFn(1458); + assert!(__symbols.len() >= 10); + let __sym9 = __pop_Variant26(__symbols); + let __sym8 = __pop_Variant0(__symbols); + let __sym7 = __pop_Variant0(__symbols); + let __sym6 = __pop_Variant26(__symbols); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant67(__symbols); + let __sym2 = __pop_Variant26(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym9.2; + let __nt = super::__action1458::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (10, 253) + } + pub(crate) fn __reduce858< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // TryStatement = "try", ":", Suite, ExceptStarClause+, "else", ":", Suite => ActionFn(1459); + assert!(__symbols.len() >= 7); + let __sym6 = __pop_Variant26(__symbols); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant67(__symbols); + let __sym2 = __pop_Variant26(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym6.2; + let __nt = super::__action1459::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (7, 253) + } + pub(crate) fn __reduce859< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // TryStatement = "try", ":", Suite, ExceptStarClause+, "finally", ":", Suite => ActionFn(1460); + assert!(__symbols.len() >= 7); + let __sym6 = __pop_Variant26(__symbols); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant67(__symbols); + let __sym2 = __pop_Variant26(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym6.2; + let __nt = super::__action1460::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (7, 253) + } + pub(crate) fn __reduce860< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // TryStatement = "try", ":", Suite, ExceptStarClause+ => ActionFn(1461); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant67(__symbols); + let __sym2 = __pop_Variant26(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = super::__action1461::<>(mode, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (4, 253) + } + pub(crate) fn __reduce861< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // TryStatement = "try", ":", Suite, "finally", ":", Suite => ActionFn(1116); + assert!(__symbols.len() >= 6); + let __sym5 = __pop_Variant26(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant26(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym5.2; + let __nt = super::__action1116::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (6, 253) + } + pub(crate) fn __reduce862< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // TwoOrMore = ClosedPattern, "|", ClosedPattern => ActionFn(339); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant36(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant36(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action339::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant53(__nt), __end)); + (3, 254) + } + pub(crate) fn __reduce863< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // TwoOrMore = TwoOrMore, "|", ClosedPattern => ActionFn(340); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant36(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant53(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action340::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant53(__nt), __end)); + (3, 254) + } + pub(crate) fn __reduce864< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // TwoOrMore = Pattern, ",", Pattern => ActionFn(341); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant36(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant36(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action341::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant53(__nt), __end)); + (3, 255) + } + pub(crate) fn __reduce865< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // TwoOrMore = TwoOrMore, ",", Pattern => ActionFn(342); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant36(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant53(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action342::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant53(__nt), __end)); + (3, 255) + } + pub(crate) fn __reduce866< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // TwoOrMore = Subscript, ",", Subscript => ActionFn(257); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant16(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action257::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant34(__nt), __end)); + (3, 256) + } + pub(crate) fn __reduce867< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // TwoOrMore = TwoOrMore, ",", Subscript => ActionFn(258); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant16(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant34(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action258::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant34(__nt), __end)); + (3, 256) + } + pub(crate) fn __reduce868< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // TwoOrMore = TestOrStarNamedExpr, ",", TestOrStarNamedExpr => ActionFn(346); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant16(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action346::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant34(__nt), __end)); + (3, 257) + } + pub(crate) fn __reduce869< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // TwoOrMore = TwoOrMore, ",", TestOrStarNamedExpr => ActionFn(347); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant16(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant34(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action347::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant34(__nt), __end)); + (3, 257) + } + pub(crate) fn __reduce870< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // TypeAliasName = Identifier => ActionFn(1462); + let __sym0 = __pop_Variant24(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1462::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 258) + } + pub(crate) fn __reduce871< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // TypeAliasStatement = "type", TypeAliasName, TypeParamList, "=", Test<"all"> => ActionFn(1740); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant16(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant82(__symbols); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym4.2; + let __nt = super::__action1740::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (5, 259) + } + pub(crate) fn __reduce872< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // TypeAliasStatement = "type", TypeAliasName, "=", Test<"all"> => ActionFn(1741); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant16(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = super::__action1741::<>(mode, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (4, 259) + } + pub(crate) fn __reduce873< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // TypeParam = Identifier, ":", Test<"all"> => ActionFn(1464); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant16(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant24(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1464::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant91(__nt), __end)); + (3, 260) + } + pub(crate) fn __reduce874< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // TypeParam = Identifier => ActionFn(1465); + let __sym0 = __pop_Variant24(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1465::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant91(__nt), __end)); + (1, 260) + } + pub(crate) fn __reduce875< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // TypeParam = "*", Identifier => ActionFn(1466); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant24(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1466::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant91(__nt), __end)); + (2, 260) + } + pub(crate) fn __reduce876< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // TypeParam = "**", Identifier => ActionFn(1467); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant24(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1467::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant91(__nt), __end)); + (2, 260) + } + pub(crate) fn __reduce877< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // TypeParamList = "[", OneOrMore, ",", "]" => ActionFn(1468); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant82(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = super::__action1468::<>(mode, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant82(__nt), __end)); + (4, 261) + } + pub(crate) fn __reduce878< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // TypeParamList = "[", OneOrMore, "]" => ActionFn(1469); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant82(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1469::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant82(__nt), __end)); + (3, 261) + } + pub(crate) fn __reduce879< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // TypeParamList? = TypeParamList => ActionFn(286); + let __sym0 = __pop_Variant82(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action286::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant92(__nt), __end)); + (1, 262) + } + pub(crate) fn __reduce880< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // TypeParamList? = => ActionFn(287); + let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); + let __end = __start.clone(); + let __nt = super::__action287::<>(mode, &__start, &__end); + __symbols.push((__start, __Symbol::Variant92(__nt), __end)); + (0, 262) + } + pub(crate) fn __reduce881< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // TypedParameter = Identifier, ":", Test<"all"> => ActionFn(1470); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant16(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant24(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1470::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (3, 263) + } + pub(crate) fn __reduce882< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // TypedParameter = Identifier => ActionFn(1471); + let __sym0 = __pop_Variant24(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1471::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (1, 263) + } + pub(crate) fn __reduce883< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // UnaryOp = "+" => ActionFn(202); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action202::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant93(__nt), __end)); + (1, 264) + } + pub(crate) fn __reduce884< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // UnaryOp = "-" => ActionFn(203); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action203::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant93(__nt), __end)); + (1, 264) + } + pub(crate) fn __reduce885< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // UnaryOp = "~" => ActionFn(204); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action204::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant93(__nt), __end)); + (1, 264) + } + pub(crate) fn __reduce886< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // UntypedParameter = Identifier => ActionFn(1472); + let __sym0 = __pop_Variant24(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1472::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant12(__nt), __end)); + (1, 265) + } + pub(crate) fn __reduce887< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // ValuePattern = MatchNameOrAttr => ActionFn(1473); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1473::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant36(__nt), __end)); + (1, 266) + } + pub(crate) fn __reduce888< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // WhileStatement = "while", NamedExpressionTest, ":", Suite, "else", ":", Suite => ActionFn(1113); + assert!(__symbols.len() >= 7); + let __sym6 = __pop_Variant26(__symbols); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant26(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym6.2; + let __nt = super::__action1113::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (7, 267) + } + pub(crate) fn __reduce889< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // WhileStatement = "while", NamedExpressionTest, ":", Suite => ActionFn(1114); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant26(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = super::__action1114::<>(mode, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (4, 267) + } + pub(crate) fn __reduce890< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // WithItem<"all"> = Test<"all"> => ActionFn(1474); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1474::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant19(__nt), __end)); + (1, 268) + } + pub(crate) fn __reduce891< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // WithItem<"all"> = Test<"all">, "as", Expression<"all"> => ActionFn(1475); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant16(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1475::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant19(__nt), __end)); + (3, 268) + } + pub(crate) fn __reduce892< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // WithItem<"as"> = Test<"all">, "as", Expression<"all"> => ActionFn(1476); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant16(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1476::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant19(__nt), __end)); + (3, 269) + } + pub(crate) fn __reduce893< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // WithItem<"no-withitems"> = Test<"no-withitems"> => ActionFn(1477); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1477::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant19(__nt), __end)); + (1, 270) + } + pub(crate) fn __reduce894< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // WithItem<"no-withitems"> = Test<"all">, "as", Expression<"all"> => ActionFn(1478); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant16(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1478::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant19(__nt), __end)); + (3, 270) + } + pub(crate) fn __reduce895< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // WithItems = "(", OneOrMore>, ",", ")" => ActionFn(1485); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant34(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = super::__action1485::<>(mode, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant41(__nt), __end)); + (4, 271) + } + pub(crate) fn __reduce896< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // WithItems = "(", OneOrMore>, ")" => ActionFn(1486); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant34(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1486::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant41(__nt), __end)); + (3, 271) + } + pub(crate) fn __reduce897< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // WithItems = "(", OneOrMore>, ",", WithItem<"as">, ",", ")" => ActionFn(1488); + assert!(__symbols.len() >= 6); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant19(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant34(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym5.2; + let __nt = super::__action1488::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5); + __symbols.push((__start, __Symbol::Variant41(__nt), __end)); + (6, 271) + } + pub(crate) fn __reduce898< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // WithItems = "(", WithItem<"as">, ",", ")" => ActionFn(1489); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant19(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = super::__action1489::<>(mode, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant41(__nt), __end)); + (4, 271) + } + pub(crate) fn __reduce899< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // WithItems = "(", OneOrMore>, ",", WithItem<"as">, ("," >)+, ",", ")" => ActionFn(1490); + assert!(__symbols.len() >= 7); + let __sym6 = __pop_Variant0(__symbols); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant20(__symbols); + let __sym3 = __pop_Variant19(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant34(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym6.2; + let __nt = super::__action1490::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6); + __symbols.push((__start, __Symbol::Variant41(__nt), __end)); + (7, 271) + } + pub(crate) fn __reduce900< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // WithItems = "(", WithItem<"as">, ("," >)+, ",", ")" => ActionFn(1491); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant20(__symbols); + let __sym1 = __pop_Variant19(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym4.2; + let __nt = super::__action1491::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4); + __symbols.push((__start, __Symbol::Variant41(__nt), __end)); + (5, 271) + } + pub(crate) fn __reduce901< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // WithItems = "(", OneOrMore>, ",", WithItem<"as">, ")" => ActionFn(1492); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant0(__symbols); + let __sym3 = __pop_Variant19(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant34(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym4.2; + let __nt = super::__action1492::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4); + __symbols.push((__start, __Symbol::Variant41(__nt), __end)); + (5, 271) + } + pub(crate) fn __reduce902< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // WithItems = "(", WithItem<"as">, ")" => ActionFn(1493); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant19(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1493::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant41(__nt), __end)); + (3, 271) + } + pub(crate) fn __reduce903< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // WithItems = "(", OneOrMore>, ",", WithItem<"as">, ("," >)+, ")" => ActionFn(1494); + assert!(__symbols.len() >= 6); + let __sym5 = __pop_Variant0(__symbols); + let __sym4 = __pop_Variant20(__symbols); + let __sym3 = __pop_Variant19(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant34(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym5.2; + let __nt = super::__action1494::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5); + __symbols.push((__start, __Symbol::Variant41(__nt), __end)); + (6, 271) + } + pub(crate) fn __reduce904< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // WithItems = "(", WithItem<"as">, ("," >)+, ")" => ActionFn(1495); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant20(__symbols); + let __sym1 = __pop_Variant19(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = super::__action1495::<>(mode, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant41(__nt), __end)); + (4, 271) + } + pub(crate) fn __reduce905< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // WithItems = WithItem<"no-withitems"> => ActionFn(159); + let __sym0 = __pop_Variant19(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action159::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant41(__nt), __end)); + (1, 271) + } + pub(crate) fn __reduce906< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // WithItems = WithItem<"all">, ("," >)+ => ActionFn(160); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant20(__symbols); + let __sym0 = __pop_Variant19(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action160::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant41(__nt), __end)); + (2, 271) + } + pub(crate) fn __reduce907< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // WithItemsNoAs = OneOrMore> => ActionFn(1479); + let __sym0 = __pop_Variant34(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1479::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant41(__nt), __end)); + (1, 272) + } + pub(crate) fn __reduce908< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // WithStatement = "async", "with", WithItems, ":", Suite => ActionFn(943); + assert!(__symbols.len() >= 5); + let __sym4 = __pop_Variant26(__symbols); + let __sym3 = __pop_Variant0(__symbols); + let __sym2 = __pop_Variant41(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym4.2; + let __nt = super::__action943::<>(mode, __sym0, __sym1, __sym2, __sym3, __sym4); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (5, 273) + } + pub(crate) fn __reduce909< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // WithStatement = "with", WithItems, ":", Suite => ActionFn(944); + assert!(__symbols.len() >= 4); + let __sym3 = __pop_Variant26(__symbols); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant41(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym3.2; + let __nt = super::__action944::<>(mode, __sym0, __sym1, __sym2, __sym3); + __symbols.push((__start, __Symbol::Variant38(__nt), __end)); + (4, 273) + } + pub(crate) fn __reduce910< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // XorExpression<"all"> = XorExpression<"all">, "^", AndExpression<"all"> => ActionFn(1480); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant16(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1480::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (3, 274) + } + pub(crate) fn __reduce911< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // XorExpression<"all"> = AndExpression<"all"> => ActionFn(429); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action429::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 274) + } + pub(crate) fn __reduce912< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // XorExpression<"no-withitems"> = XorExpression<"all">, "^", AndExpression<"all"> => ActionFn(1481); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant16(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1481::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (3, 275) + } + pub(crate) fn __reduce913< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // XorExpression<"no-withitems"> = AndExpression<"no-withitems"> => ActionFn(505); + let __sym0 = __pop_Variant16(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action505::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 275) + } + pub(crate) fn __reduce914< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // YieldExpr = "yield", GenericList => ActionFn(1711); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant16(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym1.2; + let __nt = super::__action1711::<>(mode, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (2, 276) + } + pub(crate) fn __reduce915< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // YieldExpr = "yield" => ActionFn(1712); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym0.2; + let __nt = super::__action1712::<>(mode, __sym0); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (1, 276) + } + pub(crate) fn __reduce916< + >( + mode: Mode, + __lookahead_start: Option<&TextSize>, + __symbols: &mut alloc::vec::Vec<(TextSize,__Symbol<>,TextSize)>, + _: core::marker::PhantomData<()>, + ) -> (usize, usize) + { + // YieldExpr = "yield", "from", Test<"all"> => ActionFn(1483); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant16(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0; + let __end = __sym2.2; + let __nt = super::__action1483::<>(mode, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant16(__nt), __end)); + (3, 276) + } +} +pub(crate) use self::__parse__Top::TopParser; + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action0< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Mod, TextSize), +) -> ast::Mod +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1< +>( + mode: Mode, + (_, start, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, body, _): (TextSize, ast::Suite, TextSize), + (_, end, _): (TextSize, TextSize, TextSize), +) -> ast::Mod +{ + ast::ModModule { body, type_ignores: vec![], range: (start..end).into() }.into() +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action2< +>( + mode: Mode, + (_, start, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, body, _): (TextSize, ast::Suite, TextSize), + (_, end, _): (TextSize, TextSize, TextSize), +) -> ast::Mod +{ + ast::ModInteractive { body, range: (start..end).into() }.into() +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action3< +>( + mode: Mode, + (_, start, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, body, _): (TextSize, ast::Expr, TextSize), + (_, _, _): (TextSize, alloc::vec::Vec, TextSize), + (_, end, _): (TextSize, TextSize, TextSize), +) -> ast::Mod +{ + ast::ModExpression { body: Box::new(body), range: (start..end).into() }.into() +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action4< +>( + mode: Mode, + __lookbehind: &TextSize, + __lookahead: &TextSize, +) -> ast::Suite +{ + vec![] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action5< +>( + mode: Mode, + (_, mut statements, _): (TextSize, ast::Suite, TextSize), + (_, next, _): (TextSize, ast::Stmt, TextSize), +) -> ast::Suite +{ + { + statements.push(next); + statements + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action6< +>( + mode: Mode, + (_, mut statements, _): (TextSize, ast::Suite, TextSize), + (_, small, _): (TextSize, alloc::vec::Vec, TextSize), + (_, last, _): (TextSize, ast::Stmt, TextSize), + (_, _, _): (TextSize, core::option::Option, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), +) -> ast::Suite +{ + { + statements.extend(small); + statements.push(last); + statements + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action7< +>( + mode: Mode, + (_, s, _): (TextSize, ast::Suite, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), +) -> ast::Suite +{ + s +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action8< +>( + mode: Mode, + (_, mut statements, _): (TextSize, alloc::vec::Vec, TextSize), + (_, last, _): (TextSize, ast::Stmt, TextSize), + (_, _, _): (TextSize, core::option::Option, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), +) -> ast::Suite +{ + { + statements.push(last); + statements + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action9< +>( + mode: Mode, + (_, _, _): (TextSize, token::Tok, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, s, _): (TextSize, Vec, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), +) -> ast::Suite +{ + s +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action10< +>( + mode: Mode, + (_, mut head, _): (TextSize, alloc::vec::Vec, TextSize), + (_, last, _): (TextSize, ast::Stmt, TextSize), + (_, _, _): (TextSize, core::option::Option, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), +) -> Vec +{ + { + head.push(last); + head + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action11< +>( + mode: Mode, + (_, s, _): (TextSize, ast::Stmt, TextSize), +) -> Vec +{ + vec![s] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action12< +>( + mode: Mode, + (_, mut statements, _): (TextSize, Vec, TextSize), + (_, next, _): (TextSize, ast::Stmt, TextSize), +) -> Vec +{ + { + statements.push(next); + statements + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action13< +>( + mode: Mode, + (_, mut statements, _): (TextSize, Vec, TextSize), + (_, small, _): (TextSize, alloc::vec::Vec, TextSize), + (_, last, _): (TextSize, ast::Stmt, TextSize), + (_, _, _): (TextSize, core::option::Option, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), +) -> Vec +{ + { + statements.extend(small); + statements.push(last); + statements + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action14< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Stmt, TextSize), +) -> ast::Stmt +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action15< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Stmt, TextSize), +) -> ast::Stmt +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action16< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Stmt, TextSize), +) -> ast::Stmt +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action17< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Stmt, TextSize), +) -> ast::Stmt +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action18< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Stmt, TextSize), +) -> ast::Stmt +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action19< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Stmt, TextSize), +) -> ast::Stmt +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action20< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Stmt, TextSize), +) -> ast::Stmt +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action21< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Stmt, TextSize), +) -> ast::Stmt +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action22< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Stmt, TextSize), +) -> ast::Stmt +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action23< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Stmt, TextSize), +) -> ast::Stmt +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action24< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Stmt +{ + { + ast::Stmt::Pass(ast::StmtPass { range: (location..end_location).into() }) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action25< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, targets, _): (TextSize, Vec, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Stmt +{ + { + ast::Stmt::Delete( + ast::StmtDelete { targets: targets.into_iter().map(|expr| set_context(expr, ast::ExprContext::Del)).collect(), range: (location..end_location).into() } + ) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action26< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, expression, _): (TextSize, ast::Expr, TextSize), + (_, suffix, _): (TextSize, alloc::vec::Vec, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Stmt +{ + { + // Just an expression, no assignment: + if suffix.is_empty() { + ast::Stmt::Expr( + ast::StmtExpr { value: Box::new(expression), range: (location..end_location).into() } + ) + } else { + let mut targets = vec![set_context(expression, ast::ExprContext::Store)]; + let mut values = suffix; + + let value = Box::new(values.pop().unwrap()); + + for target in values { + targets.push(set_context(target, ast::ExprContext::Store)); + } + + ast::Stmt::Assign( + ast::StmtAssign { targets, value, type_comment: None, range: (location..end_location).into() } + ) + } + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action27< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, target, _): (TextSize, ast::Expr, TextSize), + (_, op, _): (TextSize, ast::Operator, TextSize), + (_, rhs, _): (TextSize, ast::Expr, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Stmt +{ + { + ast::Stmt::AugAssign( + ast::StmtAugAssign { + target: Box::new(set_context(target, ast::ExprContext::Store)), + op, + value: Box::new(rhs), + range: (location..end_location).into() + }, + ) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action28< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, target, _): (TextSize, ast::Expr, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, annotation, _): (TextSize, ast::Expr, TextSize), + (_, rhs, _): (TextSize, core::option::Option, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Stmt +{ + { + let simple = target.is_name_expr(); + ast::Stmt::AnnAssign( + ast::StmtAnnAssign { + target: Box::new(set_context(target, ast::ExprContext::Store)), + annotation: Box::new(annotation), + value: rhs.map(Box::new), + simple, + range: (location..end_location).into() + }, + ) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action29< +>( + mode: Mode, + (_, _, _): (TextSize, token::Tok, TextSize), + (_, e, _): (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + e +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action30< +>( + mode: Mode, + (_, _, _): (TextSize, token::Tok, TextSize), + (_, e, _): (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + e +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action31< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action32< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action33< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action34< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action35< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action36< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action37< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action38< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action39< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action40< +>( + mode: Mode, + (_, __0, _): (TextSize, token::Tok, TextSize), +) -> ast::Operator +{ + ast::Operator::Add +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action41< +>( + mode: Mode, + (_, __0, _): (TextSize, token::Tok, TextSize), +) -> ast::Operator +{ + ast::Operator::Sub +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action42< +>( + mode: Mode, + (_, __0, _): (TextSize, token::Tok, TextSize), +) -> ast::Operator +{ + ast::Operator::Mult +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action43< +>( + mode: Mode, + (_, __0, _): (TextSize, token::Tok, TextSize), +) -> ast::Operator +{ + ast::Operator::MatMult +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action44< +>( + mode: Mode, + (_, __0, _): (TextSize, token::Tok, TextSize), +) -> ast::Operator +{ + ast::Operator::Div +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action45< +>( + mode: Mode, + (_, __0, _): (TextSize, token::Tok, TextSize), +) -> ast::Operator +{ + ast::Operator::Mod +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action46< +>( + mode: Mode, + (_, __0, _): (TextSize, token::Tok, TextSize), +) -> ast::Operator +{ + ast::Operator::BitAnd +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action47< +>( + mode: Mode, + (_, __0, _): (TextSize, token::Tok, TextSize), +) -> ast::Operator +{ + ast::Operator::BitOr +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action48< +>( + mode: Mode, + (_, __0, _): (TextSize, token::Tok, TextSize), +) -> ast::Operator +{ + ast::Operator::BitXor +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action49< +>( + mode: Mode, + (_, __0, _): (TextSize, token::Tok, TextSize), +) -> ast::Operator +{ + ast::Operator::LShift +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action50< +>( + mode: Mode, + (_, __0, _): (TextSize, token::Tok, TextSize), +) -> ast::Operator +{ + ast::Operator::RShift +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action51< +>( + mode: Mode, + (_, __0, _): (TextSize, token::Tok, TextSize), +) -> ast::Operator +{ + ast::Operator::Pow +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action52< +>( + mode: Mode, + (_, __0, _): (TextSize, token::Tok, TextSize), +) -> ast::Operator +{ + ast::Operator::FloorDiv +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action53< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Stmt +{ + { + + ast::Stmt::Break(ast::StmtBreak { range: (location..end_location).into() }) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action54< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Stmt +{ + { + ast::Stmt::Continue(ast::StmtContinue { range: (location..end_location).into() }) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action55< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, value, _): (TextSize, core::option::Option, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Stmt +{ + { + ast::Stmt::Return( + ast::StmtReturn { value: value.map(Box::new), range: (location..end_location).into() } + ) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action56< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, expression, _): (TextSize, ast::Expr, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Stmt +{ + { + ast::Stmt::Expr( + ast::StmtExpr { value: Box::new(expression), range: (location..end_location).into() } + ) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action57< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Stmt, TextSize), +) -> ast::Stmt +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action58< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Stmt +{ + { + ast::Stmt::Raise( + ast::StmtRaise { exc: None, cause: None, range: (location..end_location).into() } + ) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action59< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, t, _): (TextSize, ast::Expr, TextSize), + (_, c, _): (TextSize, core::option::Option, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Stmt +{ + { + ast::Stmt::Raise( + ast::StmtRaise { exc: Some(Box::new(t)), cause: c.map(Box::new), range: (location..end_location).into() } + ) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action60< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, names, _): (TextSize, Vec, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Stmt +{ + { + ast::Stmt::Import( + ast::StmtImport { names, range: (location..end_location).into() } + ) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action61< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, source, _): (TextSize, (Option, Option), TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, names, _): (TextSize, Vec, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Stmt +{ + { + let (level, module) = source; + ast::Stmt::ImportFrom( + ast::StmtImportFrom { + level, + module, + names, + range: (location..end_location).into() + }, + ) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action62< +>( + mode: Mode, + (_, dots, _): (TextSize, alloc::vec::Vec, TextSize), + (_, name, _): (TextSize, ast::Identifier, TextSize), +) -> (Option, Option) +{ + { + (Some(ast::Int::new(dots.iter().map(ast::Int::to_u32).sum())), Some(name)) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action63< +>( + mode: Mode, + (_, dots, _): (TextSize, alloc::vec::Vec, TextSize), +) -> (Option, Option) +{ + { + (Some(ast::Int::new(dots.iter().map(ast::Int::to_u32).sum())), None) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action64< +>( + mode: Mode, + (_, __0, _): (TextSize, token::Tok, TextSize), +) -> ast::Int +{ + ast::Int::new(3) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action65< +>( + mode: Mode, + (_, __0, _): (TextSize, token::Tok, TextSize), +) -> ast::Int +{ + ast::Int::new(1) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action66< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, i, _): (TextSize, Vec, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> Vec +{ + i +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action67< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, i, _): (TextSize, Vec, TextSize), + (_, _, _): (TextSize, core::option::Option, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> Vec +{ + i +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action68< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> Vec +{ + { + // Star import all + vec![ast::Alias { name: ast::Identifier::new("*", (location..end_location).into()), asname: None, range: (location..end_location).into() }] + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action69< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, n, _): (TextSize, String, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Identifier +{ + ast::Identifier::new(n, (location..end_location).into()) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action70< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, n, _): (TextSize, String, TextSize), + (_, n2, _): (TextSize, alloc::vec::Vec<(token::Tok, ast::Identifier)>, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Identifier +{ + { + let mut r = n; + for x in n2 { + r.push('.'); + r.push_str(x.1.as_str()); + } + ast::Identifier::new(r, (location..end_location).into()) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action71< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, names, _): (TextSize, Vec, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Stmt +{ + { + ast::Stmt::Global( + ast::StmtGlobal { names, range: (location..end_location).into() } + ) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action72< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, names, _): (TextSize, Vec, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Stmt +{ + { + ast::Stmt::Nonlocal( + ast::StmtNonlocal { names, range: (location..end_location).into() } + ) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action73< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, test, _): (TextSize, ast::Expr, TextSize), + (_, msg, _): (TextSize, core::option::Option, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Stmt +{ + { + ast::Stmt::Assert( + ast::StmtAssert { + test: Box::new(test), + msg: msg.map(Box::new), + range: (location..end_location).into() + } + ) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action74< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, m, _): (TextSize, (MagicKind, String), TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> Result> +{ + { + if mode == Mode::Jupyter { + Ok(ast::Stmt::LineMagic( + ast::StmtLineMagic { + kind: m.0, + value: m.1, + range: (location..end_location).into() + } + )) + } else { + Err(LexicalError { + error: LexicalErrorType::OtherError("line magics are only allowed in Jupyter mode".to_string()), + location, + })? + } + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action75< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, m, _): (TextSize, (MagicKind, String), TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> Result> +{ + { + if mode == Mode::Jupyter { + // This should never occur as the lexer won't allow it. + if !matches!(m.0, MagicKind::Magic | MagicKind::Shell) { + return Err(LexicalError { + error: LexicalErrorType::OtherError("expr line magics are only allowed for % and !".to_string()), + location, + })?; + } + Ok(ast::Expr::LineMagic( + ast::ExprLineMagic { + kind: m.0, + value: m.1, + range: (location..end_location).into() + } + )) + } else { + Err(LexicalError { + error: LexicalErrorType::OtherError("line magics are only allowed in Jupyter mode".to_string()), + location, + })? + } + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action76< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Stmt, TextSize), +) -> ast::Stmt +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action77< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Stmt, TextSize), +) -> ast::Stmt +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action78< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Stmt, TextSize), +) -> ast::Stmt +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action79< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Stmt, TextSize), +) -> ast::Stmt +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action80< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Stmt, TextSize), +) -> ast::Stmt +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action81< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Stmt, TextSize), +) -> ast::Stmt +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action82< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Stmt, TextSize), +) -> ast::Stmt +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action83< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Stmt, TextSize), +) -> ast::Stmt +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action84< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, subject, _): (TextSize, ast::Expr, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, cases, _): (TextSize, alloc::vec::Vec, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), +) -> ast::Stmt +{ + { + let end_location = cases + .last() + .unwrap() + .body + .last() + .unwrap() + .end(); + ast::Stmt::Match( + ast::StmtMatch { + subject: Box::new(subject), + cases, + range: (location..end_location).into() + } + ) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action85< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, subject, _): (TextSize, ast::Expr, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, cases, _): (TextSize, alloc::vec::Vec, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), +) -> ast::Stmt +{ + { + let end_location = cases + .last() + .unwrap() + .body + .last() + .unwrap() + .end(); + ast::Stmt::Match( + ast::StmtMatch { + subject: Box::new(subject), + cases, + range: (location..end_location).into() + } + ) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action86< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, subjects, _): (TextSize, Vec, TextSize), + (_, _, _): (TextSize, core::option::Option, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, cases, _): (TextSize, alloc::vec::Vec, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), +) -> ast::Stmt +{ + { + let end_location = cases + .last() + .unwrap() + .body + .last() + .unwrap() + .end(); + ast::Stmt::Match( + ast::StmtMatch { + subject: Box::new(ast::Expr::Tuple( + ast::ExprTuple { + elts: subjects, + ctx: ast::ExprContext::Load, + range: (location..end_location).into() + }, + )), + cases, + range: (location..end_location).into() + } + ) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action87< +>( + mode: Mode, + (_, start, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, pattern, _): (TextSize, ast::Pattern, TextSize), + (_, guard, _): (TextSize, core::option::Option, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, body, _): (TextSize, ast::Suite, TextSize), +) -> ast::MatchCase +{ + { + // SAFETY: `body` is never empty because it is non-optional and `Suite` matches one or more statements. + let end = body.last().unwrap().end(); + ast::MatchCase { + pattern, + guard: guard.map(Box::new), + body, + range: (start..end).into() + } + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action88< +>( + mode: Mode, + (_, _, _): (TextSize, token::Tok, TextSize), + (_, guard, _): (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + { + guard + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action89< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, pattern, _): (TextSize, ast::Pattern, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + ast::Pattern::MatchSequence( + ast::PatternMatchSequence { + patterns: vec![pattern], + range: (location..end_location).into() + }, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action90< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, patterns, _): (TextSize, Vec, TextSize), + (_, _, _): (TextSize, core::option::Option, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + { + ast::Pattern::MatchSequence( + ast::PatternMatchSequence { + patterns, + range: (location..end_location).into() + }, + ) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action91< +>( + mode: Mode, + (_, pattern, _): (TextSize, ast::Pattern, TextSize), +) -> ast::Pattern +{ + pattern +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action92< +>( + mode: Mode, + (_, pattern, _): (TextSize, ast::Pattern, TextSize), +) -> ast::Pattern +{ + pattern +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action93< +>( + mode: Mode, + (_, pattern, _): (TextSize, ast::Pattern, TextSize), +) -> ast::Pattern +{ + pattern +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action94< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, pattern, _): (TextSize, ast::Pattern, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, name, _): (TextSize, ast::Identifier, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> Result> +{ + { + if name.as_str() == "_" { + Err(LexicalError { + error: LexicalErrorType::OtherError("cannot use '_' as a target".to_string()), + location, + })? + } else { + Ok(ast::Pattern::MatchAs( + ast::PatternMatchAs { + pattern: Some(Box::new(pattern)), + name: Some(name), + range: (location..end_location).into() + }, + )) + } + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action95< +>( + mode: Mode, + (_, pattern, _): (TextSize, ast::Pattern, TextSize), +) -> ast::Pattern +{ + pattern +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action96< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, patterns, _): (TextSize, Vec, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + { + ast::Pattern::MatchOr( + ast::PatternMatchOr { patterns, range: (location..end_location).into() } + ) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action97< +>( + mode: Mode, + (_, node, _): (TextSize, ast::Pattern, TextSize), +) -> ast::Pattern +{ + node +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action98< +>( + mode: Mode, + (_, node, _): (TextSize, ast::Pattern, TextSize), +) -> ast::Pattern +{ + node +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action99< +>( + mode: Mode, + (_, node, _): (TextSize, ast::Pattern, TextSize), +) -> ast::Pattern +{ + node +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action100< +>( + mode: Mode, + (_, node, _): (TextSize, ast::Pattern, TextSize), +) -> ast::Pattern +{ + node +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action101< +>( + mode: Mode, + (_, node, _): (TextSize, ast::Pattern, TextSize), +) -> ast::Pattern +{ + node +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action102< +>( + mode: Mode, + (_, node, _): (TextSize, ast::Pattern, TextSize), +) -> ast::Pattern +{ + node +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action103< +>( + mode: Mode, + (_, node, _): (TextSize, ast::Pattern, TextSize), +) -> ast::Pattern +{ + node +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action104< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, pattern, _): (TextSize, ast::Pattern, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + pattern +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action105< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + ast::PatternMatchSequence { + patterns: vec![], + range: (location..end_location).into() + }.into() +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action106< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, pattern, _): (TextSize, ast::Pattern, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + { + ast::PatternMatchSequence { + patterns: vec![pattern], + range: (location..end_location).into() + }.into() + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action107< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, patterns, _): (TextSize, alloc::vec::Vec, TextSize), + (_, last, _): (TextSize, ast::Pattern, TextSize), + (_, _, _): (TextSize, core::option::Option, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + { + let mut patterns = patterns; + patterns.push(last); + ast::PatternMatchSequence { + patterns, + range: (location..end_location).into() + }.into() + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action108< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, patterns, _): (TextSize, Vec, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + ast::PatternMatchSequence { + patterns, + range: (location..end_location).into() + }.into() +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action109< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, name, _): (TextSize, ast::Identifier, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + ast::PatternMatchStar { + name: if name.as_str() == "_" { None } else { Some(name) }, + range: (location..end_location).into() + }.into() +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action110< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, value, _): (TextSize, ast::Constant, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + ast::Expr::Constant( + ast::ExprConstant { value, kind: None, range: (location..end_location).into() } + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action111< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action112< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, operand, _): (TextSize, ast::Expr, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + ast::Expr::UnaryOp( + ast::ExprUnaryOp { + op: ast::UnaryOp::USub, + operand: Box::new(operand), + range: (location..end_location).into() + } + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action113< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, left, _): (TextSize, ast::Expr, TextSize), + (_, op, _): (TextSize, ast::Operator, TextSize), + (_, right, _): (TextSize, ast::Expr, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + ast::Expr::BinOp( + ast::ExprBinOp { + left: Box::new(left), + op, + right: Box::new(right), + range: (location..end_location).into() + } + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action114< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + ast::PatternMatchSingleton { + value: ast::Constant::None, + range: (location..end_location).into() + }.into() +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action115< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + ast::PatternMatchSingleton { + value: true.into(), + range: (location..end_location).into() + }.into() +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action116< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + ast::PatternMatchSingleton { + value: false.into(), + range: (location..end_location).into() + }.into() +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action117< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, value, _): (TextSize, ast::Expr, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + ast::PatternMatchValue { + value: Box::new(value), + range: (location..end_location).into() + }.into() +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action118< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, value, _): (TextSize, ast::Expr, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + ast::PatternMatchValue { + value: Box::new(value), + range: (location..end_location).into() + }.into() +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action119< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, s, _): (TextSize, alloc::vec::Vec<(TextSize, (String, StringKind, bool), TextSize)>, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> Result> +{ + Ok(ast::PatternMatchValue { + value: Box::new(parse_strings(s)?), + range: (location..end_location).into() + }.into()) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action120< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, name, _): (TextSize, ast::Identifier, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + ast::PatternMatchAs { + pattern: None, + name: if name.as_str() == "_" { None } else { Some(name) }, + range: (location..end_location).into() + }.into() +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action121< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, id, _): (TextSize, ast::Identifier, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + ast::Expr::Name( + ast::ExprName { id: id.into(), ctx: ast::ExprContext::Load, range: (location..end_location).into() }, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action122< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, name, _): (TextSize, ast::Expr, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, attr, _): (TextSize, ast::Identifier, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + ast::Expr::Attribute( + ast::ExprAttribute { + value: Box::new(name), + attr, + ctx: ast::ExprContext::Load, + range: (location..end_location).into() + }, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action123< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, e, _): (TextSize, ast::Expr, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, attr, _): (TextSize, ast::Identifier, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + ast::Expr::Attribute( + ast::ExprAttribute { + value: Box::new(e), + attr, + ctx: ast::ExprContext::Load, + range: (location..end_location).into() + }, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action124< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, e, _): (TextSize, ast::Expr, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + ast::PatternMatchValue { + value: Box::new(e), + range: (location..end_location).into() + }.into() +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action125< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action126< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action127< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action128< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + ast::Expr::Constant( + ast::ExprConstant { + value: ast::Constant::None, + kind: None, + range: (location..end_location).into() + }, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action129< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + ast::Expr::Constant( + ast::ExprConstant { + value: true.into(), + kind: None, + range: (location..end_location).into() + }, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action130< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + ast::Expr::Constant( + ast::ExprConstant { + value: false.into(), + kind: None, + range: (location..end_location).into() + }, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action131< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, s, _): (TextSize, alloc::vec::Vec<(TextSize, (String, StringKind, bool), TextSize)>, TextSize), +) -> Result> +{ + Ok(parse_strings(s)?) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action132< +>( + mode: Mode, + (_, k, _): (TextSize, ast::Expr, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, v, _): (TextSize, ast::Pattern, TextSize), +) -> (ast::Expr, ast::Pattern) +{ + (k, v) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action133< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + { + ast::PatternMatchMapping { + keys: vec![], + patterns: vec![], + rest: None, + range: (location..end_location).into() + }.into() + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action134< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, e, _): (TextSize, Vec<(ast::Expr, ast::Pattern)>, TextSize), + (_, _, _): (TextSize, core::option::Option, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + { + let (keys, patterns) = e + .into_iter() + .unzip(); + ast::PatternMatchMapping { + keys, + patterns, + rest: None, + range: (location..end_location).into() + }.into() + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action135< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, rest, _): (TextSize, ast::Identifier, TextSize), + (_, _, _): (TextSize, core::option::Option, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + { + ast::PatternMatchMapping { + keys: vec![], + patterns: vec![], + rest: Some(rest), + range: (location..end_location).into() + }.into() + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action136< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, e, _): (TextSize, Vec<(ast::Expr, ast::Pattern)>, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, rest, _): (TextSize, ast::Identifier, TextSize), + (_, _, _): (TextSize, core::option::Option, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + { + let (keys, patterns) = e + .into_iter() + .unzip(); + ast::PatternMatchMapping { + keys, + patterns, + rest: Some(rest), + range: (location..end_location).into() + }.into() + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action137< +>( + mode: Mode, + (_, k, _): (TextSize, ast::Identifier, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, v, _): (TextSize, ast::Pattern, TextSize), +) -> (ast::Identifier, ast::Pattern) +{ + (k, v) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action138< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, e, _): (TextSize, ast::Expr, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, patterns, _): (TextSize, Vec, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, kwds, _): (TextSize, Vec<(ast::Identifier, ast::Pattern)>, TextSize), + (_, _, _): (TextSize, core::option::Option, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + { + let (kwd_attrs, kwd_patterns) = kwds + .into_iter() + .unzip(); + ast::PatternMatchClass { + cls: Box::new(e), + patterns, + kwd_attrs, + kwd_patterns, + range: (location..end_location).into() + }.into() + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action139< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, e, _): (TextSize, ast::Expr, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, patterns, _): (TextSize, Vec, TextSize), + (_, _, _): (TextSize, core::option::Option, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + { + ast::PatternMatchClass { + cls: Box::new(e), + patterns, + kwd_attrs: vec![], + kwd_patterns: vec![], + range: (location..end_location).into() + }.into() + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action140< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, e, _): (TextSize, ast::Expr, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, kwds, _): (TextSize, Vec<(ast::Identifier, ast::Pattern)>, TextSize), + (_, _, _): (TextSize, core::option::Option, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + { + let (kwd_attrs, kwd_patterns) = kwds + .into_iter() + .unzip(); + ast::PatternMatchClass { + cls: Box::new(e), + patterns: vec![], + kwd_attrs, + kwd_patterns, + range: (location..end_location).into() + }.into() + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action141< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, e, _): (TextSize, ast::Expr, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + { + ast::PatternMatchClass { + cls: Box::new(e), + patterns: vec![], + kwd_attrs: vec![], + kwd_patterns: vec![], + range: (location..end_location).into() + }.into() + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action142< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, e, _): (TextSize, ast::Expr, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, patterns, _): (TextSize, Vec, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, kwds, _): (TextSize, Vec<(ast::Identifier, ast::Pattern)>, TextSize), + (_, _, _): (TextSize, core::option::Option, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + { + let (kwd_attrs, kwd_patterns) = kwds + .into_iter() + .unzip(); + ast::PatternMatchClass { + cls: Box::new(e), + patterns, + kwd_attrs, + kwd_patterns, + range: (location..end_location).into() + }.into() + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action143< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, e, _): (TextSize, ast::Expr, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, patterns, _): (TextSize, Vec, TextSize), + (_, _, _): (TextSize, core::option::Option, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + { + ast::PatternMatchClass { + cls: Box::new(e), + patterns, + kwd_attrs: vec![], + kwd_patterns: vec![], + range: (location..end_location).into() + }.into() + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action144< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, e, _): (TextSize, ast::Expr, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, kwds, _): (TextSize, Vec<(ast::Identifier, ast::Pattern)>, TextSize), + (_, _, _): (TextSize, core::option::Option, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + { + let (kwd_attrs, kwd_patterns) = kwds + .into_iter() + .unzip(); + ast::PatternMatchClass { + cls: Box::new(e), + patterns: vec![], + kwd_attrs, + kwd_patterns, + range: (location..end_location).into() + }.into() + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action145< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, e, _): (TextSize, ast::Expr, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + { + ast::PatternMatchClass { + cls: Box::new(e), + patterns: vec![], + kwd_attrs: vec![], + kwd_patterns: vec![], + range: (location..end_location).into() + }.into() + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action146< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, test, _): (TextSize, ast::Expr, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, body, _): (TextSize, ast::Suite, TextSize), + (_, s2, _): (TextSize, alloc::vec::Vec<(TextSize, ast::Expr, ast::Suite)>, TextSize), + (_, s3, _): (TextSize, core::option::Option<(TextSize, ast::Suite)>, TextSize), +) -> ast::Stmt +{ + { + let elif_else_clauses: Vec<_> = s2.into_iter().map(|(start, test, body)| ast::ElifElseClause { + range: (start..body.last().unwrap().end()).into(), + test: Some(test), + body, + }).chain(s3.into_iter().map(|(start, body)| ast::ElifElseClause { + range: (start..body.last().unwrap().end()).into(), + test: None, + body, + })).collect(); + + let end_location = elif_else_clauses + .last() + .map_or_else(|| body.last().unwrap().end(), Ranged::end); + + ast::Stmt::If( + ast::StmtIf { test: Box::new(test), body, elif_else_clauses, range: (location..end_location).into() } + ) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action147< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, test, _): (TextSize, ast::Expr, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, body, _): (TextSize, ast::Suite, TextSize), + (_, s2, _): (TextSize, core::option::Option, TextSize), +) -> ast::Stmt +{ + { + let orelse = s2.unwrap_or_default(); + let end_location = orelse + .last() + .or_else(|| body.last()) + .unwrap() + .end(); + ast::Stmt::While( + ast::StmtWhile { + test: Box::new(test), + body, + orelse, + range: (location..end_location).into() + }, + ) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action148< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, is_async, _): (TextSize, core::option::Option, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, target, _): (TextSize, ast::Expr, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, iter, _): (TextSize, ast::Expr, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, body, _): (TextSize, ast::Suite, TextSize), + (_, orelse, _): (TextSize, core::option::Option, TextSize), +) -> ast::Stmt +{ + { + let orelse = orelse.unwrap_or_default(); + let end_location = orelse + .last() + .or_else(|| body.last()) + .unwrap() + .end(); + let target = Box::new(set_context(target, ast::ExprContext::Store)); + let iter = Box::new(iter); + let type_comment = None; + if is_async.is_some() { + ast::Stmt::AsyncFor(ast::StmtAsyncFor { target, iter, body, orelse, type_comment, range: (location..end_location).into() }) + } else { + ast::Stmt::For(ast::StmtFor { target, iter, body, orelse, type_comment, range: (location..end_location).into() }) + } + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action149< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, body, _): (TextSize, ast::Suite, TextSize), + (_, handlers, _): (TextSize, alloc::vec::Vec, TextSize), + (_, orelse, _): (TextSize, core::option::Option, TextSize), + (_, finalbody, _): (TextSize, core::option::Option, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Stmt +{ + { + let orelse = orelse.unwrap_or_default(); + let finalbody = finalbody.unwrap_or_default(); + let end_location = finalbody + .last() + .map(Ranged::end) + .or_else(|| orelse.last().map(Ranged::end)) + .or_else(|| handlers.last().map(Ranged::end)) + .unwrap(); + ast::Stmt::Try( + ast::StmtTry { + body, + handlers, + orelse, + finalbody, + range: (location..end_location).into() + }, + ) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action150< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, body, _): (TextSize, ast::Suite, TextSize), + (_, handlers, _): (TextSize, alloc::vec::Vec, TextSize), + (_, orelse, _): (TextSize, core::option::Option, TextSize), + (_, finalbody, _): (TextSize, core::option::Option, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Stmt +{ + { + let orelse = orelse.unwrap_or_default(); + let finalbody = finalbody.unwrap_or_default(); + let end_location = finalbody + .last() + .or_else(|| orelse.last()) + .map(Ranged::end) + .or_else(|| handlers.last().map(Ranged::end)) + .unwrap(); + ast::Stmt::TryStar( + ast::StmtTryStar { + body, + handlers, + orelse, + finalbody, + range: (location..end_location).into() + }, + ) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action151< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, body, _): (TextSize, ast::Suite, TextSize), + (_, finalbody, _): (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + { + let handlers = vec![]; + let orelse = vec![]; + let end_location = finalbody.last().unwrap().end(); + ast::Stmt::Try( + ast::StmtTry { + body, + handlers, + orelse, + finalbody, + range: (location..end_location).into() + }, + ) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action152< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, typ, _): (TextSize, ast::Expr, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, body, _): (TextSize, ast::Suite, TextSize), +) -> ast::ExceptHandler +{ + { + let end_location = body.last().unwrap().end(); + ast::ExceptHandler::ExceptHandler( + ast::ExceptHandlerExceptHandler { + type_: Some(Box::new(typ)), + name: None, + body, + range: (location..end_location).into() + }, + ) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action153< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, x, _): (TextSize, (ast::Expr, ast::Identifier), TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, body, _): (TextSize, ast::Suite, TextSize), +) -> ast::ExceptHandler +{ + { + let end_location = body.last().unwrap().end(); + ast::ExceptHandler::ExceptHandler( + ast::ExceptHandlerExceptHandler { + type_: Some(Box::new(x.0)), + name: Some(x.1), + body, + range: (location..end_location).into() + }, + ) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action154< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, typ, _): (TextSize, core::option::Option, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, body, _): (TextSize, ast::Suite, TextSize), +) -> ast::ExceptHandler +{ + { + let end_location = body.last().unwrap().end(); + ast::ExceptHandler::ExceptHandler( + ast::ExceptHandlerExceptHandler { + type_: typ.map(Box::new), + name: None, + body, + range: (location..end_location).into() + }, + ) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action155< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, x, _): (TextSize, (ast::Expr, ast::Identifier), TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, body, _): (TextSize, ast::Suite, TextSize), +) -> ast::ExceptHandler +{ + { + let end_location = body.last().unwrap().end(); + ast::ExceptHandler::ExceptHandler( + ast::ExceptHandlerExceptHandler { + type_: Some(Box::new(x.0)), + name: Some(x.1), + body, + range: (location..end_location).into() + }, + ) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action156< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, is_async, _): (TextSize, core::option::Option, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, items, _): (TextSize, Vec, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, body, _): (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + { + let end_location = body.last().unwrap().end(); + let type_comment = None; + if is_async.is_some() { + ast::StmtAsyncWith { items, body, type_comment, range: (location..end_location).into() }.into() + } else { + ast::StmtWith { items, body, type_comment, range: (location..end_location).into() }.into() + } + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action157< +>( + mode: Mode, + (_, _, _): (TextSize, token::Tok, TextSize), + (_, __0, _): (TextSize, Vec, TextSize), + (_, _, _): (TextSize, core::option::Option, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), +) -> Vec +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action158< +>( + mode: Mode, + (_, _, _): (TextSize, token::Tok, TextSize), + (_, left, _): (TextSize, core::option::Option>, TextSize), + (_, mid, _): (TextSize, ast::WithItem, TextSize), + (_, right, _): (TextSize, alloc::vec::Vec, TextSize), + (_, _, _): (TextSize, core::option::Option, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), +) -> Vec +{ + { + left.into_iter().flatten().chain([mid]).chain(right).collect() + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action159< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::WithItem, TextSize), +) -> Vec +{ + vec![__0] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action160< +>( + mode: Mode, + (_, item, _): (TextSize, ast::WithItem, TextSize), + (_, items, _): (TextSize, alloc::vec::Vec, TextSize), +) -> Vec +{ + { + [item].into_iter().chain(items).collect() + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action161< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, all, _): (TextSize, Vec, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> Vec +{ + { + all.into_iter().map(|context_expr| ast::WithItem { context_expr, optional_vars: None, range: (location..end_location).into() }).collect() + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action162< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, decorator_list, _): (TextSize, alloc::vec::Vec, TextSize), + (_, is_async, _): (TextSize, core::option::Option, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, name, _): (TextSize, ast::Identifier, TextSize), + (_, type_params, _): (TextSize, core::option::Option>, TextSize), + (_, args, _): (TextSize, ast::Arguments, TextSize), + (_, r, _): (TextSize, core::option::Option, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, body, _): (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + { + let args = Box::new(args); + let returns = r.map(Box::new); + let end_location = body.last().unwrap().end(); + let type_comment = None; + if is_async.is_some() { + ast::StmtAsyncFunctionDef { name, args, body, decorator_list, returns, type_comment, type_params: type_params.unwrap_or_default(), range: (location..end_location).into() }.into() + } else { + ast::StmtFunctionDef { name, args, body, decorator_list, returns, type_comment, type_params: type_params.unwrap_or_default(), range: (location..end_location).into() }.into() + } + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action163< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, name, _): (TextSize, ast::Identifier, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + ast::Expr::Name( + ast::ExprName { id: name.into(), ctx: ast::ExprContext::Store, range: (location..end_location).into() }, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action164< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, name, _): (TextSize, ast::Expr, TextSize), + (_, type_params, _): (TextSize, core::option::Option>, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, value, _): (TextSize, ast::Expr, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Stmt +{ + { + ast::Stmt::TypeAlias( + ast::StmtTypeAlias { + name: Box::new(name), + value: Box::new(value), + type_params: type_params.unwrap_or_default(), + range: (location..end_location).into() + }, + ) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action165< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, a, _): (TextSize, core::option::Option, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> Result> +{ + { + a.as_ref().map(validate_arguments).transpose()?; + + let range = (location..end_location).into(); + let args = a + .map_or_else(|| ast::Arguments::empty(range), |mut arguments| { + arguments.range = range; + arguments + }); + + Ok(args) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action166< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, arg, _): (TextSize, ast::Identifier, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::ArgWithDefault +{ + { + let def = ast::Arg { arg, annotation: None, type_comment: None, range: (location..end_location).into() }; + ast::ArgWithDefault { def, default: None, range: (location..end_location).into() } + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action167< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, arg, _): (TextSize, ast::Identifier, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Arg +{ + ast::Arg { arg, annotation: None, type_comment: None, range: (location..end_location).into() } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action168< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, arg, _): (TextSize, ast::Identifier, TextSize), + (_, a, _): (TextSize, core::option::Option, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::ArgWithDefault +{ + { + let annotation = a.map(Box::new); + let def = ast::Arg { arg, annotation, type_comment: None, range: (location..end_location).into() }; + ast::ArgWithDefault { def, default: None, range: (location..end_location).into() } + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action169< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, arg, _): (TextSize, ast::Identifier, TextSize), + (_, a, _): (TextSize, core::option::Option, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Arg +{ + { + let annotation = a.map(Box::new); + ast::Arg { arg, annotation, type_comment: None, range: (location..end_location).into() } + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action170< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, arg, _): (TextSize, ast::Identifier, TextSize), + (_, a, _): (TextSize, core::option::Option, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Arg +{ + { + let annotation = a.map(Box::new); + ast::Arg { arg, annotation, type_comment: None, range: (location..end_location).into() } + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action171< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, decorator_list, _): (TextSize, alloc::vec::Vec, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, name, _): (TextSize, ast::Identifier, TextSize), + (_, type_params, _): (TextSize, core::option::Option>, TextSize), + (_, a, _): (TextSize, core::option::Option<(token::Tok, ArgumentList, token::Tok)>, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, body, _): (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + { + let (bases, keywords) = match a { + Some((_, arg, _)) => (arg.args, arg.keywords), + None => (vec![], vec![]), + }; + let end_location = body.last().unwrap().end(); + ast::Stmt::ClassDef( + ast::StmtClassDef { + name, + bases, + keywords, + body, + decorator_list, + type_params: type_params.unwrap_or_default(), + range: (location..end_location).into() + }, + ) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action172< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, vars, _): (TextSize, Vec, TextSize), + (_, _, _): (TextSize, core::option::Option, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> Vec +{ + { + vars + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action173< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, name, _): (TextSize, ast::Identifier, TextSize), + (_, bound, _): (TextSize, core::option::Option, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::TypeParam +{ + { + ast::TypeParam::TypeVar( + ast::TypeParamTypeVar { name, bound: bound.map(Box::new), range: (location..end_location).into() } + ) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action174< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, name, _): (TextSize, ast::Identifier, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::TypeParam +{ + { + ast::TypeParam::TypeVarTuple( + ast::TypeParamTypeVarTuple { name, range: (location..end_location).into() } + ) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action175< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, name, _): (TextSize, ast::Identifier, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::TypeParam +{ + { + ast::TypeParam::ParamSpec( + ast::TypeParamParamSpec { name, range: (location..end_location).into() } + ) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action176< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, p, _): (TextSize, ast::Expr, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), +) -> ast::Decorator +{ + { + ast::Decorator { range: (location..end_location).into(), expression: p } + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action177< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, value, _): (TextSize, core::option::Option, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + ast::Expr::Yield( + ast::ExprYield { value: value.map(Box::new), range: (location..end_location).into() } + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action178< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, e, _): (TextSize, ast::Expr, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + ast::Expr::YieldFrom( + ast::ExprYieldFrom { value: Box::new(e), range: (location..end_location).into() } + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action179< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action180< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action181< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, id, _): (TextSize, ast::Identifier, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, value, _): (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + { + ast::Expr::NamedExpr( + ast::ExprNamedExpr { + target: Box::new(ast::Expr::Name( + ast::ExprName { id: id.into(), ctx: ast::ExprContext::Store, range: (location..end_location).into() }, + )), + range: (location..value.end()).into(), + value: Box::new(value), + } + ) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action182< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, location_args, _): (TextSize, TextSize, TextSize), + (_, p, _): (TextSize, core::option::Option, TextSize), + (_, end_location_args, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, body, _): (TextSize, ast::Expr, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> Result> +{ + { + p.as_ref().map(validate_arguments).transpose()?; + let p = p + .unwrap_or_else(|| ast::Arguments::empty((location_args..end_location_args).into())); + + Ok(ast::Expr::Lambda( + ast::ExprLambda { + args: Box::new(p), + body: Box::new(body), + range: (location..end_location).into() + } + )) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action183< +>( + mode: Mode, + (_, __0, _): (TextSize, token::Tok, TextSize), +) -> ast::CmpOp +{ + ast::CmpOp::Eq +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action184< +>( + mode: Mode, + (_, __0, _): (TextSize, token::Tok, TextSize), +) -> ast::CmpOp +{ + ast::CmpOp::NotEq +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action185< +>( + mode: Mode, + (_, __0, _): (TextSize, token::Tok, TextSize), +) -> ast::CmpOp +{ + ast::CmpOp::Lt +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action186< +>( + mode: Mode, + (_, __0, _): (TextSize, token::Tok, TextSize), +) -> ast::CmpOp +{ + ast::CmpOp::LtE +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action187< +>( + mode: Mode, + (_, __0, _): (TextSize, token::Tok, TextSize), +) -> ast::CmpOp +{ + ast::CmpOp::Gt +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action188< +>( + mode: Mode, + (_, __0, _): (TextSize, token::Tok, TextSize), +) -> ast::CmpOp +{ + ast::CmpOp::GtE +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action189< +>( + mode: Mode, + (_, __0, _): (TextSize, token::Tok, TextSize), +) -> ast::CmpOp +{ + ast::CmpOp::In +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action190< +>( + mode: Mode, + (_, __0, _): (TextSize, token::Tok, TextSize), + (_, __1, _): (TextSize, token::Tok, TextSize), +) -> ast::CmpOp +{ + ast::CmpOp::NotIn +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action191< +>( + mode: Mode, + (_, __0, _): (TextSize, token::Tok, TextSize), +) -> ast::CmpOp +{ + ast::CmpOp::Is +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action192< +>( + mode: Mode, + (_, __0, _): (TextSize, token::Tok, TextSize), + (_, __1, _): (TextSize, token::Tok, TextSize), +) -> ast::CmpOp +{ + ast::CmpOp::IsNot +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action193< +>( + mode: Mode, + (_, __0, _): (TextSize, token::Tok, TextSize), +) -> ast::Operator +{ + ast::Operator::LShift +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action194< +>( + mode: Mode, + (_, __0, _): (TextSize, token::Tok, TextSize), +) -> ast::Operator +{ + ast::Operator::RShift +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action195< +>( + mode: Mode, + (_, __0, _): (TextSize, token::Tok, TextSize), +) -> ast::Operator +{ + ast::Operator::Add +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action196< +>( + mode: Mode, + (_, __0, _): (TextSize, token::Tok, TextSize), +) -> ast::Operator +{ + ast::Operator::Sub +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action197< +>( + mode: Mode, + (_, __0, _): (TextSize, token::Tok, TextSize), +) -> ast::Operator +{ + ast::Operator::Mult +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action198< +>( + mode: Mode, + (_, __0, _): (TextSize, token::Tok, TextSize), +) -> ast::Operator +{ + ast::Operator::Div +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action199< +>( + mode: Mode, + (_, __0, _): (TextSize, token::Tok, TextSize), +) -> ast::Operator +{ + ast::Operator::FloorDiv +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action200< +>( + mode: Mode, + (_, __0, _): (TextSize, token::Tok, TextSize), +) -> ast::Operator +{ + ast::Operator::Mod +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action201< +>( + mode: Mode, + (_, __0, _): (TextSize, token::Tok, TextSize), +) -> ast::Operator +{ + ast::Operator::MatMult +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action202< +>( + mode: Mode, + (_, __0, _): (TextSize, token::Tok, TextSize), +) -> ast::UnaryOp +{ + ast::UnaryOp::UAdd +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action203< +>( + mode: Mode, + (_, __0, _): (TextSize, token::Tok, TextSize), +) -> ast::UnaryOp +{ + ast::UnaryOp::USub +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action204< +>( + mode: Mode, + (_, __0, _): (TextSize, token::Tok, TextSize), +) -> ast::UnaryOp +{ + ast::UnaryOp::Invert +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action205< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, s1, _): (TextSize, ast::Expr, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + { + s1 + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action206< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, s1, _): (TextSize, ast::Expr, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + { + ast::Expr::Tuple( + ast::ExprTuple { elts: vec![s1], ctx: ast::ExprContext::Load, range: (location..end_location).into() }, + ) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action207< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, elts, _): (TextSize, Vec, TextSize), + (_, _, _): (TextSize, core::option::Option, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + { + ast::Expr::Tuple( + ast::ExprTuple { elts, ctx: ast::ExprContext::Load, range: (location..end_location).into() }, + ) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action208< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action209< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, e1, _): (TextSize, core::option::Option, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, e2, _): (TextSize, core::option::Option, TextSize), + (_, e3, _): (TextSize, core::option::Option>, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + { + let lower = e1.map(Box::new); + let upper = e2.map(Box::new); + let step = e3.flatten().map(Box::new); + ast::Expr::Slice( + ast::ExprSlice { lower, upper, step, range: (location..end_location).into() } + ) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action210< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, e, _): (TextSize, core::option::Option, TextSize), +) -> Option +{ + e +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action211< +>( + mode: Mode, + (_, e, _): (TextSize, Vec, TextSize), + (_, _, _): (TextSize, core::option::Option, TextSize), +) -> Vec +{ + e +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action212< +>( + mode: Mode, + (_, elements, _): (TextSize, Vec<(Option>, ast::Expr)>, TextSize), + (_, _, _): (TextSize, core::option::Option, TextSize), +) -> Vec<(Option>, ast::Expr)> +{ + elements +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action213< +>( + mode: Mode, + (_, e1, _): (TextSize, ast::Expr, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, e2, _): (TextSize, ast::Expr, TextSize), +) -> (ast::Expr, ast::Expr) +{ + (e1, e2) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action214< +>( + mode: Mode, + (_, e, _): (TextSize, (ast::Expr, ast::Expr), TextSize), +) -> (Option>, ast::Expr) +{ + (Some(Box::new(e.0)), e.1) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action215< +>( + mode: Mode, + (_, _, _): (TextSize, token::Tok, TextSize), + (_, e, _): (TextSize, ast::Expr, TextSize), +) -> (Option>, ast::Expr) +{ + (None, e) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action216< +>( + mode: Mode, + (_, e1, _): (TextSize, Vec, TextSize), + (_, _, _): (TextSize, core::option::Option, TextSize), +) -> Vec +{ + e1 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action217< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action218< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action219< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action220< +>( + mode: Mode, + (_, elements, _): (TextSize, Vec, TextSize), + (_, _, _): (TextSize, core::option::Option, TextSize), +) -> Vec +{ + elements +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action221< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action222< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, e, _): (TextSize, ast::Expr, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + ast::Expr::Starred( + ast::ExprStarred { value: Box::new(e), ctx: ast::ExprContext::Load, range: (location..end_location).into() }, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action223< +>( + mode: Mode, + (_, c, _): (TextSize, alloc::vec::Vec, TextSize), +) -> Vec +{ + c +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action224< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, is_async, _): (TextSize, core::option::Option, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, target, _): (TextSize, ast::Expr, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, iter, _): (TextSize, ast::Expr, TextSize), + (_, ifs, _): (TextSize, alloc::vec::Vec, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Comprehension +{ + { + let is_async = is_async.is_some(); + ast::Comprehension { + target: set_context(target, ast::ExprContext::Store), + iter, + ifs, + is_async, + range: (location..end_location).into() + } + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action225< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action226< +>( + mode: Mode, + (_, _, _): (TextSize, token::Tok, TextSize), + (_, c, _): (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + c +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action227< +>( + mode: Mode, + (_, e, _): (TextSize, Vec<(Option<(TextSize, TextSize, Option)>, ast::Expr)>, TextSize), +) -> Result> +{ + { + let arg_list = parse_args(e)?; + Ok(arg_list) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action228< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, e, _): (TextSize, ast::Expr, TextSize), + (_, c, _): (TextSize, core::option::Option>, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> (Option<(TextSize, TextSize, Option)>, ast::Expr) +{ + { + let expr = match c { + Some(c) => ast::Expr::GeneratorExp( + ast::ExprGeneratorExp { + elt: Box::new(e), + generators: c, + range: (location..end_location).into() + } + ), + None => e, + }; + (None, expr) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action229< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, i, _): (TextSize, ast::Identifier, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, e, _): (TextSize, ast::Expr, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> (Option<(TextSize, TextSize, Option)>, ast::Expr) +{ + (Some((location, end_location, Some(i))), e) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action230< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, e, _): (TextSize, ast::Expr, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> (Option<(TextSize, TextSize, Option)>, ast::Expr) +{ + { + let expr = ast::Expr::Starred( + ast::ExprStarred { value: Box::new(e), ctx: ast::ExprContext::Load, range: (location..end_location).into() }, + ); + (None, expr) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action231< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, e, _): (TextSize, ast::Expr, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> (Option<(TextSize, TextSize, Option)>, ast::Expr) +{ + (Some((location, end_location, None)), e) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action232< +>( + mode: Mode, + (_, value, _): (TextSize, BigInt, TextSize), +) -> ast::Constant +{ + ast::Constant::Int(value) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action233< +>( + mode: Mode, + (_, value, _): (TextSize, f64, TextSize), +) -> ast::Constant +{ + ast::Constant::Float(value) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action234< +>( + mode: Mode, + (_, s, _): (TextSize, (f64, f64), TextSize), +) -> ast::Constant +{ + ast::Constant::Complex { real: s.0, imag: s.1 } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action235< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, s, _): (TextSize, String, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Identifier +{ + ast::Identifier::new(s, (location..end_location).into()) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action236< +>( + mode: Mode, + (_, __0, _): (TextSize, Vec, TextSize), +) -> core::option::Option> +{ + Some(__0) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action237< +>( + mode: Mode, + __lookbehind: &TextSize, + __lookahead: &TextSize, +) -> core::option::Option> +{ + None +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action238< +>( + mode: Mode, + (_, mut v, _): (TextSize, alloc::vec::Vec<(Option<(TextSize, TextSize, Option)>, ast::Expr)>, TextSize), + (_, last, _): (TextSize, core::option::Option<(Option<(TextSize, TextSize, Option)>, ast::Expr)>, TextSize), +) -> Vec<(Option<(TextSize, TextSize, Option)>, ast::Expr)> +{ + { + if let Some(element) = last { + v.push(element); + } + v + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action239< +>( + mode: Mode, + __lookbehind: &TextSize, + __lookahead: &TextSize, +) -> alloc::vec::Vec +{ + alloc::vec![] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action240< +>( + mode: Mode, + (_, v, _): (TextSize, alloc::vec::Vec, TextSize), +) -> alloc::vec::Vec +{ + v +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action241< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, mut values, _): (TextSize, alloc::vec::Vec, TextSize), + (_, last, _): (TextSize, ast::Expr, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + { + values.push(last); + ast::Expr::BoolOp( + ast::ExprBoolOp { op: ast::BoolOp::Or, values, range: (location..end_location).into() } + ) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action242< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action243< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Comprehension, TextSize), +) -> alloc::vec::Vec +{ + alloc::vec![__0] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action244< +>( + mode: Mode, + (_, v, _): (TextSize, alloc::vec::Vec, TextSize), + (_, e, _): (TextSize, ast::Comprehension, TextSize), +) -> alloc::vec::Vec +{ + { let mut v = v; v.push(e); v } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action245< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, elts, _): (TextSize, Vec, TextSize), + (_, trailing_comma, _): (TextSize, core::option::Option, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + { + if elts.len() == 1 && trailing_comma.is_none() { + elts.into_iter().next().unwrap() + } else { + ast::Expr::Tuple( + ast::ExprTuple { elts, ctx: ast::ExprContext::Load, range: (location..end_location).into() } + ) + } + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action246< +>( + mode: Mode, + (_, e, _): (TextSize, ast::Expr, TextSize), +) -> Vec +{ + vec![e] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action247< +>( + mode: Mode, + (_, mut v, _): (TextSize, Vec, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, e, _): (TextSize, ast::Expr, TextSize), +) -> Vec +{ + { + v.push(e); + v + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action248< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, elts, _): (TextSize, Vec, TextSize), + (_, trailing_comma, _): (TextSize, core::option::Option, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + { + if elts.len() == 1 && trailing_comma.is_none() { + elts.into_iter().next().unwrap() + } else { + ast::Expr::Tuple( + ast::ExprTuple { elts, ctx: ast::ExprContext::Load, range: (location..end_location).into() } + ) + } + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action249< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, e1, _): (TextSize, ast::Expr, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, e2, _): (TextSize, ast::Expr, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + ast::Expr::BinOp( + ast::ExprBinOp { left: Box::new(e1), op: ast::Operator::BitOr, right: Box::new(e2), range: (location..end_location).into() } + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action250< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action251< +>( + mode: Mode, + (_, e, _): (TextSize, (Option>, ast::Expr), TextSize), +) -> Vec<(Option>, ast::Expr)> +{ + vec![e] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action252< +>( + mode: Mode, + (_, mut v, _): (TextSize, Vec<(Option>, ast::Expr)>, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, e, _): (TextSize, (Option>, ast::Expr), TextSize), +) -> Vec<(Option>, ast::Expr)> +{ + { + v.push(e); + v + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action253< +>( + mode: Mode, + (_, e, _): (TextSize, ast::Expr, TextSize), +) -> Vec +{ + vec![e] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action254< +>( + mode: Mode, + (_, mut v, _): (TextSize, Vec, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, e, _): (TextSize, ast::Expr, TextSize), +) -> Vec +{ + { + v.push(e); + v + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action255< +>( + mode: Mode, + (_, __0, _): (TextSize, Option, TextSize), +) -> core::option::Option> +{ + Some(__0) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action256< +>( + mode: Mode, + __lookbehind: &TextSize, + __lookahead: &TextSize, +) -> core::option::Option> +{ + None +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action257< +>( + mode: Mode, + (_, e1, _): (TextSize, ast::Expr, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, e2, _): (TextSize, ast::Expr, TextSize), +) -> Vec +{ + vec![e1, e2] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action258< +>( + mode: Mode, + (_, mut v, _): (TextSize, Vec, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, e, _): (TextSize, ast::Expr, TextSize), +) -> Vec +{ + { + v.push(e); + v + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action259< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Arguments, TextSize), +) -> core::option::Option +{ + Some(__0) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action260< +>( + mode: Mode, + __lookbehind: &TextSize, + __lookahead: &TextSize, +) -> core::option::Option +{ + None +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action261< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, param1, _): (TextSize, (Vec, Vec), TextSize), + (_, args2, _): (TextSize, core::option::Option<(Option>, Vec, Option>)>, TextSize), + (_, _, _): (TextSize, core::option::Option, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> Result> +{ + { + validate_pos_params(¶m1)?; + let (posonlyargs, args) = param1; + + // Now gather rest of parameters: + let (vararg, kwonlyargs, kwarg) = args2.unwrap_or((None, vec![], None)); + + Ok(ast::Arguments { + posonlyargs, + args, + kwonlyargs, + vararg, + kwarg, + range: (location..end_location).into() + }) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action262< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, param1, _): (TextSize, (Vec, Vec), TextSize), + (_, kw, _): (TextSize, Option>, TextSize), + (_, _, _): (TextSize, core::option::Option, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> Result> +{ + { + validate_pos_params(¶m1)?; + let (posonlyargs, args) = param1; + + // Now gather rest of parameters: + let vararg = None; + let kwonlyargs = vec![]; + let kwarg = kw; + + Ok(ast::Arguments { + posonlyargs, + args, + kwonlyargs, + vararg, + kwarg, + range: (location..end_location).into() + }) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action263< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, params, _): (TextSize, (Option>, Vec, Option>), TextSize), + (_, _, _): (TextSize, core::option::Option, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Arguments +{ + { + let (vararg, kwonlyargs, kwarg) = params; + ast::Arguments { + posonlyargs: vec![], + args: vec![], + kwonlyargs, + vararg, + kwarg, + range: (location..end_location).into() + } + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action264< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, kwarg, _): (TextSize, Option>, TextSize), + (_, _, _): (TextSize, core::option::Option, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Arguments +{ + { + ast::Arguments { + posonlyargs: vec![], + args: vec![], + kwonlyargs: vec![], + vararg: None, + kwarg, + range: (location..end_location).into() + } + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action265< +>( + mode: Mode, + (_, e, _): (TextSize, ast::TypeParam, TextSize), +) -> Vec +{ + vec![e] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action266< +>( + mode: Mode, + (_, mut v, _): (TextSize, Vec, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, e, _): (TextSize, ast::TypeParam, TextSize), +) -> Vec +{ + { + v.push(e); + v + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action267< +>( + mode: Mode, + (_, __0, _): (TextSize, (token::Tok, ArgumentList, token::Tok), TextSize), +) -> core::option::Option<(token::Tok, ArgumentList, token::Tok)> +{ + Some(__0) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action268< +>( + mode: Mode, + __lookbehind: &TextSize, + __lookahead: &TextSize, +) -> core::option::Option<(token::Tok, ArgumentList, token::Tok)> +{ + None +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action269< +>( + mode: Mode, + (_, __0, _): (TextSize, token::Tok, TextSize), + (_, __1, _): (TextSize, ArgumentList, TextSize), + (_, __2, _): (TextSize, token::Tok, TextSize), +) -> (token::Tok, ArgumentList, token::Tok) +{ + (__0, __1, __2) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action270< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> core::option::Option +{ + Some(__0) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action271< +>( + mode: Mode, + __lookbehind: &TextSize, + __lookahead: &TextSize, +) -> core::option::Option +{ + None +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action272< +>( + mode: Mode, + (_, _, _): (TextSize, token::Tok, TextSize), + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action273< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> core::option::Option +{ + Some(__0) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action274< +>( + mode: Mode, + __lookbehind: &TextSize, + __lookahead: &TextSize, +) -> core::option::Option +{ + None +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action275< +>( + mode: Mode, + (_, _, _): (TextSize, token::Tok, TextSize), + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action276< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Arguments, TextSize), +) -> core::option::Option +{ + Some(__0) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action277< +>( + mode: Mode, + __lookbehind: &TextSize, + __lookahead: &TextSize, +) -> core::option::Option +{ + None +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action278< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Arguments, TextSize), +) -> ast::Arguments +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action279< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, param1, _): (TextSize, (Vec, Vec), TextSize), + (_, args2, _): (TextSize, core::option::Option<(Option>, Vec, Option>)>, TextSize), + (_, _, _): (TextSize, core::option::Option, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> Result> +{ + { + validate_pos_params(¶m1)?; + let (posonlyargs, args) = param1; + + // Now gather rest of parameters: + let (vararg, kwonlyargs, kwarg) = args2.unwrap_or((None, vec![], None)); + + Ok(ast::Arguments { + posonlyargs, + args, + kwonlyargs, + vararg, + kwarg, + range: (location..end_location).into() + }) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action280< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, param1, _): (TextSize, (Vec, Vec), TextSize), + (_, kw, _): (TextSize, Option>, TextSize), + (_, _, _): (TextSize, core::option::Option, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> Result> +{ + { + validate_pos_params(¶m1)?; + let (posonlyargs, args) = param1; + + // Now gather rest of parameters: + let vararg = None; + let kwonlyargs = vec![]; + let kwarg = kw; + + Ok(ast::Arguments { + posonlyargs, + args, + kwonlyargs, + vararg, + kwarg, + range: (location..end_location).into() + }) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action281< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, params, _): (TextSize, (Option>, Vec, Option>), TextSize), + (_, _, _): (TextSize, core::option::Option, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Arguments +{ + { + let (vararg, kwonlyargs, kwarg) = params; + ast::Arguments { + posonlyargs: vec![], + args: vec![], + kwonlyargs, + vararg, + kwarg, + range: (location..end_location).into() + } + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action282< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, kwarg, _): (TextSize, Option>, TextSize), + (_, _, _): (TextSize, core::option::Option, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Arguments +{ + { + ast::Arguments { + posonlyargs: vec![], + args: vec![], + kwonlyargs: vec![], + vararg: None, + kwarg, + range: (location..end_location).into() + } + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action283< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> core::option::Option +{ + Some(__0) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action284< +>( + mode: Mode, + __lookbehind: &TextSize, + __lookahead: &TextSize, +) -> core::option::Option +{ + None +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action285< +>( + mode: Mode, + (_, _, _): (TextSize, token::Tok, TextSize), + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action286< +>( + mode: Mode, + (_, __0, _): (TextSize, Vec, TextSize), +) -> core::option::Option> +{ + Some(__0) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action287< +>( + mode: Mode, + __lookbehind: &TextSize, + __lookahead: &TextSize, +) -> core::option::Option> +{ + None +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action288< +>( + mode: Mode, + __lookbehind: &TextSize, + __lookahead: &TextSize, +) -> alloc::vec::Vec +{ + alloc::vec![] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action289< +>( + mode: Mode, + (_, v, _): (TextSize, alloc::vec::Vec, TextSize), +) -> alloc::vec::Vec +{ + v +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action290< +>( + mode: Mode, + (_, e, _): (TextSize, ast::Expr, TextSize), +) -> Vec +{ + vec![e] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action291< +>( + mode: Mode, + (_, mut v, _): (TextSize, Vec, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, e, _): (TextSize, ast::Expr, TextSize), +) -> Vec +{ + { + v.push(e); + v + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action292< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::WithItem, TextSize), +) -> alloc::vec::Vec +{ + alloc::vec![__0] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action293< +>( + mode: Mode, + (_, v, _): (TextSize, alloc::vec::Vec, TextSize), + (_, e, _): (TextSize, ast::WithItem, TextSize), +) -> alloc::vec::Vec +{ + { let mut v = v; v.push(e); v } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action294< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, context_expr, _): (TextSize, ast::Expr, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::WithItem +{ + ast::WithItem { context_expr, optional_vars: None, range: (location..end_location).into() } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action295< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, context_expr, _): (TextSize, ast::Expr, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, vars, _): (TextSize, ast::Expr, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::WithItem +{ + { + let optional_vars = Some(Box::new(set_context(vars, ast::ExprContext::Store))); + ast::WithItem { context_expr, optional_vars, range: (location..end_location).into() } + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action296< +>( + mode: Mode, + __lookbehind: &TextSize, + __lookahead: &TextSize, +) -> alloc::vec::Vec +{ + alloc::vec![] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action297< +>( + mode: Mode, + (_, v, _): (TextSize, alloc::vec::Vec, TextSize), +) -> alloc::vec::Vec +{ + v +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action298< +>( + mode: Mode, + (_, _, _): (TextSize, token::Tok, TextSize), + (_, __0, _): (TextSize, ast::WithItem, TextSize), +) -> ast::WithItem +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action299< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, context_expr, _): (TextSize, ast::Expr, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::WithItem +{ + ast::WithItem { context_expr, optional_vars: None, range: (location..end_location).into() } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action300< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, context_expr, _): (TextSize, ast::Expr, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, vars, _): (TextSize, ast::Expr, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::WithItem +{ + { + let optional_vars = Some(Box::new(set_context(vars, ast::ExprContext::Store))); + ast::WithItem { context_expr, optional_vars, range: (location..end_location).into() } + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action301< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, context_expr, _): (TextSize, ast::Expr, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, vars, _): (TextSize, ast::Expr, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::WithItem +{ + { + let optional_vars = Some(Box::new(set_context(vars, ast::ExprContext::Store))); + ast::WithItem { context_expr, optional_vars, range: (location..end_location).into() } + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action302< +>( + mode: Mode, + (_, __0, _): (TextSize, Vec, TextSize), +) -> core::option::Option> +{ + Some(__0) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action303< +>( + mode: Mode, + __lookbehind: &TextSize, + __lookahead: &TextSize, +) -> core::option::Option> +{ + None +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action304< +>( + mode: Mode, + (_, __0, _): (TextSize, Vec, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), +) -> Vec +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action305< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> core::option::Option +{ + Some(__0) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action306< +>( + mode: Mode, + __lookbehind: &TextSize, + __lookahead: &TextSize, +) -> core::option::Option +{ + None +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action307< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Expr, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, __1, _): (TextSize, ast::Identifier, TextSize), +) -> (ast::Expr, ast::Identifier) +{ + (__0, __1) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action308< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::ExceptHandler, TextSize), +) -> alloc::vec::Vec +{ + alloc::vec![__0] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action309< +>( + mode: Mode, + (_, v, _): (TextSize, alloc::vec::Vec, TextSize), + (_, e, _): (TextSize, ast::ExceptHandler, TextSize), +) -> alloc::vec::Vec +{ + { let mut v = v; v.push(e); v } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action310< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Suite, TextSize), +) -> core::option::Option +{ + Some(__0) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action311< +>( + mode: Mode, + __lookbehind: &TextSize, + __lookahead: &TextSize, +) -> core::option::Option +{ + None +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action312< +>( + mode: Mode, + (_, _, _): (TextSize, token::Tok, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, __0, _): (TextSize, ast::Suite, TextSize), +) -> ast::Suite +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action313< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::ExceptHandler, TextSize), +) -> alloc::vec::Vec +{ + alloc::vec![__0] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action314< +>( + mode: Mode, + (_, v, _): (TextSize, alloc::vec::Vec, TextSize), + (_, e, _): (TextSize, ast::ExceptHandler, TextSize), +) -> alloc::vec::Vec +{ + { let mut v = v; v.push(e); v } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action315< +>( + mode: Mode, + (_, __0, _): (TextSize, token::Tok, TextSize), +) -> core::option::Option +{ + Some(__0) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action316< +>( + mode: Mode, + __lookbehind: &TextSize, + __lookahead: &TextSize, +) -> core::option::Option +{ + None +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action317< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Suite, TextSize), +) -> core::option::Option +{ + Some(__0) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action318< +>( + mode: Mode, + __lookbehind: &TextSize, + __lookahead: &TextSize, +) -> core::option::Option +{ + None +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action319< +>( + mode: Mode, + (_, _, _): (TextSize, token::Tok, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, __0, _): (TextSize, ast::Suite, TextSize), +) -> ast::Suite +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action320< +>( + mode: Mode, + (_, __0, _): (TextSize, (TextSize, ast::Suite), TextSize), +) -> core::option::Option<(TextSize, ast::Suite)> +{ + Some(__0) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action321< +>( + mode: Mode, + __lookbehind: &TextSize, + __lookahead: &TextSize, +) -> core::option::Option<(TextSize, ast::Suite)> +{ + None +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action322< +>( + mode: Mode, + (_, __0, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, __1, _): (TextSize, ast::Suite, TextSize), +) -> (TextSize, ast::Suite) +{ + (__0, __1) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action323< +>( + mode: Mode, + __lookbehind: &TextSize, + __lookahead: &TextSize, +) -> alloc::vec::Vec<(TextSize, ast::Expr, ast::Suite)> +{ + alloc::vec![] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action324< +>( + mode: Mode, + (_, v, _): (TextSize, alloc::vec::Vec<(TextSize, ast::Expr, ast::Suite)>, TextSize), +) -> alloc::vec::Vec<(TextSize, ast::Expr, ast::Suite)> +{ + v +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action325< +>( + mode: Mode, + (_, __0, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, __1, _): (TextSize, ast::Expr, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, __2, _): (TextSize, ast::Suite, TextSize), +) -> (TextSize, ast::Expr, ast::Suite) +{ + (__0, __1, __2) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action326< +>( + mode: Mode, + (_, e, _): (TextSize, (ast::Identifier, ast::Pattern), TextSize), +) -> Vec<(ast::Identifier, ast::Pattern)> +{ + vec![e] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action327< +>( + mode: Mode, + (_, mut v, _): (TextSize, Vec<(ast::Identifier, ast::Pattern)>, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, e, _): (TextSize, (ast::Identifier, ast::Pattern), TextSize), +) -> Vec<(ast::Identifier, ast::Pattern)> +{ + { + v.push(e); + v + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action328< +>( + mode: Mode, + (_, e, _): (TextSize, ast::Pattern, TextSize), +) -> Vec +{ + vec![e] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action329< +>( + mode: Mode, + (_, mut v, _): (TextSize, Vec, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, e, _): (TextSize, ast::Pattern, TextSize), +) -> Vec +{ + { + v.push(e); + v + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action330< +>( + mode: Mode, + (_, e, _): (TextSize, (ast::Expr, ast::Pattern), TextSize), +) -> Vec<(ast::Expr, ast::Pattern)> +{ + vec![e] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action331< +>( + mode: Mode, + (_, mut v, _): (TextSize, Vec<(ast::Expr, ast::Pattern)>, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, e, _): (TextSize, (ast::Expr, ast::Pattern), TextSize), +) -> Vec<(ast::Expr, ast::Pattern)> +{ + { + v.push(e); + v + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action332< +>( + mode: Mode, + (_, __0, _): (TextSize, (TextSize, (String, StringKind, bool), TextSize), TextSize), +) -> alloc::vec::Vec<(TextSize, (String, StringKind, bool), TextSize)> +{ + alloc::vec![__0] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action333< +>( + mode: Mode, + (_, v, _): (TextSize, alloc::vec::Vec<(TextSize, (String, StringKind, bool), TextSize)>, TextSize), + (_, e, _): (TextSize, (TextSize, (String, StringKind, bool), TextSize), TextSize), +) -> alloc::vec::Vec<(TextSize, (String, StringKind, bool), TextSize)> +{ + { let mut v = v; v.push(e); v } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action334< +>( + mode: Mode, + (_, __0, _): (TextSize, TextSize, TextSize), + (_, __1, _): (TextSize, (String, StringKind, bool), TextSize), + (_, __2, _): (TextSize, TextSize, TextSize), +) -> (TextSize, (String, StringKind, bool), TextSize) +{ + (__0, __1, __2) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action335< +>( + mode: Mode, + (_, mut v, _): (TextSize, alloc::vec::Vec, TextSize), + (_, last, _): (TextSize, core::option::Option, TextSize), +) -> Vec +{ + { + if let Some(element) = last { + v.push(element); + } + v + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action336< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Pattern, TextSize), +) -> alloc::vec::Vec +{ + alloc::vec![__0] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action337< +>( + mode: Mode, + (_, v, _): (TextSize, alloc::vec::Vec, TextSize), + (_, e, _): (TextSize, ast::Pattern, TextSize), +) -> alloc::vec::Vec +{ + { let mut v = v; v.push(e); v } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action338< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Pattern, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), +) -> ast::Pattern +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action339< +>( + mode: Mode, + (_, e1, _): (TextSize, ast::Pattern, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, e2, _): (TextSize, ast::Pattern, TextSize), +) -> Vec +{ + vec![e1, e2] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action340< +>( + mode: Mode, + (_, mut v, _): (TextSize, Vec, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, e, _): (TextSize, ast::Pattern, TextSize), +) -> Vec +{ + { + v.push(e); + v + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action341< +>( + mode: Mode, + (_, e1, _): (TextSize, ast::Pattern, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, e2, _): (TextSize, ast::Pattern, TextSize), +) -> Vec +{ + vec![e1, e2] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action342< +>( + mode: Mode, + (_, mut v, _): (TextSize, Vec, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, e, _): (TextSize, ast::Pattern, TextSize), +) -> Vec +{ + { + v.push(e); + v + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action343< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> core::option::Option +{ + Some(__0) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action344< +>( + mode: Mode, + __lookbehind: &TextSize, + __lookahead: &TextSize, +) -> core::option::Option +{ + None +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action345< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action346< +>( + mode: Mode, + (_, e1, _): (TextSize, ast::Expr, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, e2, _): (TextSize, ast::Expr, TextSize), +) -> Vec +{ + vec![e1, e2] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action347< +>( + mode: Mode, + (_, mut v, _): (TextSize, Vec, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, e, _): (TextSize, ast::Expr, TextSize), +) -> Vec +{ + { + v.push(e); + v + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action348< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::MatchCase, TextSize), +) -> alloc::vec::Vec +{ + alloc::vec![__0] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action349< +>( + mode: Mode, + (_, v, _): (TextSize, alloc::vec::Vec, TextSize), + (_, e, _): (TextSize, ast::MatchCase, TextSize), +) -> alloc::vec::Vec +{ + { let mut v = v; v.push(e); v } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action350< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> core::option::Option +{ + Some(__0) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action351< +>( + mode: Mode, + __lookbehind: &TextSize, + __lookahead: &TextSize, +) -> core::option::Option +{ + None +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action352< +>( + mode: Mode, + (_, _, _): (TextSize, token::Tok, TextSize), + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action353< +>( + mode: Mode, + (_, e, _): (TextSize, ast::Identifier, TextSize), +) -> Vec +{ + vec![e] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action354< +>( + mode: Mode, + (_, mut v, _): (TextSize, Vec, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, e, _): (TextSize, ast::Identifier, TextSize), +) -> Vec +{ + { + v.push(e); + v + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action355< +>( + mode: Mode, + (_, __0, _): (TextSize, (token::Tok, ast::Identifier), TextSize), +) -> alloc::vec::Vec<(token::Tok, ast::Identifier)> +{ + alloc::vec![__0] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action356< +>( + mode: Mode, + (_, v, _): (TextSize, alloc::vec::Vec<(token::Tok, ast::Identifier)>, TextSize), + (_, e, _): (TextSize, (token::Tok, ast::Identifier), TextSize), +) -> alloc::vec::Vec<(token::Tok, ast::Identifier)> +{ + { let mut v = v; v.push(e); v } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action357< +>( + mode: Mode, + (_, __0, _): (TextSize, token::Tok, TextSize), + (_, __1, _): (TextSize, ast::Identifier, TextSize), +) -> (token::Tok, ast::Identifier) +{ + (__0, __1) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action358< +>( + mode: Mode, + (_, __0, _): (TextSize, token::Tok, TextSize), +) -> core::option::Option +{ + Some(__0) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action359< +>( + mode: Mode, + __lookbehind: &TextSize, + __lookahead: &TextSize, +) -> core::option::Option +{ + None +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action360< +>( + mode: Mode, + (_, e, _): (TextSize, ast::Alias, TextSize), +) -> Vec +{ + vec![e] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action361< +>( + mode: Mode, + (_, mut v, _): (TextSize, Vec, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, e, _): (TextSize, ast::Alias, TextSize), +) -> Vec +{ + { + v.push(e); + v + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action362< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, name, _): (TextSize, ast::Identifier, TextSize), + (_, a, _): (TextSize, core::option::Option, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Alias +{ + ast::Alias { name, asname: a, range: (location..end_location).into() } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action363< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Int, TextSize), +) -> alloc::vec::Vec +{ + alloc::vec![__0] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action364< +>( + mode: Mode, + (_, v, _): (TextSize, alloc::vec::Vec, TextSize), + (_, e, _): (TextSize, ast::Int, TextSize), +) -> alloc::vec::Vec +{ + { let mut v = v; v.push(e); v } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action365< +>( + mode: Mode, + __lookbehind: &TextSize, + __lookahead: &TextSize, +) -> alloc::vec::Vec +{ + alloc::vec![] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action366< +>( + mode: Mode, + (_, v, _): (TextSize, alloc::vec::Vec, TextSize), +) -> alloc::vec::Vec +{ + v +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action367< +>( + mode: Mode, + (_, e, _): (TextSize, ast::Alias, TextSize), +) -> Vec +{ + vec![e] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action368< +>( + mode: Mode, + (_, mut v, _): (TextSize, Vec, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, e, _): (TextSize, ast::Alias, TextSize), +) -> Vec +{ + { + v.push(e); + v + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action369< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, name, _): (TextSize, ast::Identifier, TextSize), + (_, a, _): (TextSize, core::option::Option, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Alias +{ + ast::Alias { name, asname: a, range: (location..end_location).into() } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action370< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> core::option::Option +{ + Some(__0) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action371< +>( + mode: Mode, + __lookbehind: &TextSize, + __lookahead: &TextSize, +) -> core::option::Option +{ + None +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action372< +>( + mode: Mode, + (_, _, _): (TextSize, token::Tok, TextSize), + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action373< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> core::option::Option +{ + Some(__0) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action374< +>( + mode: Mode, + __lookbehind: &TextSize, + __lookahead: &TextSize, +) -> core::option::Option +{ + None +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action375< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> core::option::Option +{ + Some(__0) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action376< +>( + mode: Mode, + __lookbehind: &TextSize, + __lookahead: &TextSize, +) -> core::option::Option +{ + None +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action377< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, body, _): (TextSize, ast::Expr, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, test, _): (TextSize, ast::Expr, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, orelse, _): (TextSize, ast::Expr, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + ast::Expr::IfExp( + ast::ExprIfExp { + test: Box::new(test), + body: Box::new(body), + orelse: Box::new(orelse), + range: (location..end_location).into() + } + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action378< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action379< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action380< +>( + mode: Mode, + __lookbehind: &TextSize, + __lookahead: &TextSize, +) -> alloc::vec::Vec +{ + alloc::vec![] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action381< +>( + mode: Mode, + (_, v, _): (TextSize, alloc::vec::Vec, TextSize), +) -> alloc::vec::Vec +{ + v +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action382< +>( + mode: Mode, + (_, __0, _): (TextSize, token::Tok, TextSize), +) -> core::option::Option +{ + Some(__0) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action383< +>( + mode: Mode, + __lookbehind: &TextSize, + __lookahead: &TextSize, +) -> core::option::Option +{ + None +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action384< +>( + mode: Mode, + __lookbehind: &TextSize, + __lookahead: &TextSize, +) -> alloc::vec::Vec +{ + alloc::vec![] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action385< +>( + mode: Mode, + (_, v, _): (TextSize, alloc::vec::Vec, TextSize), +) -> alloc::vec::Vec +{ + v +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action386< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Stmt, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), +) -> ast::Stmt +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action387< +>( + mode: Mode, + __lookbehind: &TextSize, + __lookahead: &TextSize, +) -> alloc::vec::Vec +{ + alloc::vec![] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action388< +>( + mode: Mode, + (_, v, _): (TextSize, alloc::vec::Vec, TextSize), +) -> alloc::vec::Vec +{ + v +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action389< +>( + mode: Mode, + (_, __0, _): (TextSize, token::Tok, TextSize), +) -> token::Tok +{ + __0 +} + +#[allow(unused_variables)] +fn __action390< +>( + mode: Mode, + __lookbehind: &TextSize, + __lookahead: &TextSize, +) -> TextSize +{ + *__lookbehind +} + +#[allow(unused_variables)] +fn __action391< +>( + mode: Mode, + __lookbehind: &TextSize, + __lookahead: &TextSize, +) -> TextSize +{ + *__lookahead +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action392< +>( + mode: Mode, + (_, __0, _): (TextSize, token::Tok, TextSize), +) -> alloc::vec::Vec +{ + alloc::vec![__0] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action393< +>( + mode: Mode, + (_, v, _): (TextSize, alloc::vec::Vec, TextSize), + (_, e, _): (TextSize, token::Tok, TextSize), +) -> alloc::vec::Vec +{ + { let mut v = v; v.push(e); v } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action394< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Stmt, TextSize), +) -> alloc::vec::Vec +{ + alloc::vec![__0] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action395< +>( + mode: Mode, + (_, v, _): (TextSize, alloc::vec::Vec, TextSize), + (_, e, _): (TextSize, ast::Stmt, TextSize), +) -> alloc::vec::Vec +{ + { let mut v = v; v.push(e); v } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action396< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> alloc::vec::Vec +{ + alloc::vec![__0] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action397< +>( + mode: Mode, + (_, v, _): (TextSize, alloc::vec::Vec, TextSize), + (_, e, _): (TextSize, ast::Expr, TextSize), +) -> alloc::vec::Vec +{ + { let mut v = v; v.push(e); v } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action398< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Identifier, TextSize), +) -> core::option::Option +{ + Some(__0) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action399< +>( + mode: Mode, + __lookbehind: &TextSize, + __lookahead: &TextSize, +) -> core::option::Option +{ + None +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action400< +>( + mode: Mode, + (_, _, _): (TextSize, token::Tok, TextSize), + (_, __0, _): (TextSize, ast::Identifier, TextSize), +) -> ast::Identifier +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action401< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Pattern, TextSize), +) -> core::option::Option +{ + Some(__0) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action402< +>( + mode: Mode, + __lookbehind: &TextSize, + __lookahead: &TextSize, +) -> core::option::Option +{ + None +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action403< +>( + mode: Mode, + __lookbehind: &TextSize, + __lookahead: &TextSize, +) -> alloc::vec::Vec +{ + alloc::vec![] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action404< +>( + mode: Mode, + (_, v, _): (TextSize, alloc::vec::Vec, TextSize), +) -> alloc::vec::Vec +{ + v +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action405< +>( + mode: Mode, + (_, __0, _): (TextSize, (TextSize, ast::Expr, ast::Suite), TextSize), +) -> alloc::vec::Vec<(TextSize, ast::Expr, ast::Suite)> +{ + alloc::vec![__0] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action406< +>( + mode: Mode, + (_, v, _): (TextSize, alloc::vec::Vec<(TextSize, ast::Expr, ast::Suite)>, TextSize), + (_, e, _): (TextSize, (TextSize, ast::Expr, ast::Suite), TextSize), +) -> alloc::vec::Vec<(TextSize, ast::Expr, ast::Suite)> +{ + { let mut v = v; v.push(e); v } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action407< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, body, _): (TextSize, ast::Expr, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, test, _): (TextSize, ast::Expr, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, orelse, _): (TextSize, ast::Expr, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + ast::Expr::IfExp( + ast::ExprIfExp { + test: Box::new(test), + body: Box::new(body), + orelse: Box::new(orelse), + range: (location..end_location).into() + } + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action408< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action409< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action410< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Decorator, TextSize), +) -> alloc::vec::Vec +{ + alloc::vec![__0] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action411< +>( + mode: Mode, + (_, v, _): (TextSize, alloc::vec::Vec, TextSize), + (_, e, _): (TextSize, ast::Decorator, TextSize), +) -> alloc::vec::Vec +{ + { let mut v = v; v.push(e); v } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action412< +>( + mode: Mode, + (_, _, _): (TextSize, token::Tok, TextSize), + (_, __0, _): (TextSize, Option>, TextSize), +) -> Option> +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action413< +>( + mode: Mode, + (_, _, _): (TextSize, token::Tok, TextSize), + (_, kwarg, _): (TextSize, core::option::Option, TextSize), +) -> Option> +{ + { + kwarg.map(Box::new) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action414< +>( + mode: Mode, + (_, __0, _): (TextSize, (Option>, Vec, Option>), TextSize), +) -> core::option::Option<(Option>, Vec, Option>)> +{ + Some(__0) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action415< +>( + mode: Mode, + __lookbehind: &TextSize, + __lookahead: &TextSize, +) -> core::option::Option<(Option>, Vec, Option>)> +{ + None +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action416< +>( + mode: Mode, + (_, _, _): (TextSize, token::Tok, TextSize), + (_, __0, _): (TextSize, (Option>, Vec, Option>), TextSize), +) -> (Option>, Vec, Option>) +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action417< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, va, _): (TextSize, core::option::Option, TextSize), + (_, kwonlyargs, _): (TextSize, alloc::vec::Vec, TextSize), + (_, kwarg, _): (TextSize, core::option::Option>>, TextSize), +) -> Result<(Option>, Vec, Option>),__lalrpop_util::ParseError> +{ + { + if va.is_none() && kwonlyargs.is_empty() && kwarg.is_none() { + return Err(LexicalError { + error: LexicalErrorType::OtherError("named arguments must follow bare *".to_string()), + location, + })?; + } + + let kwarg = kwarg.flatten(); + let va = va.map(Box::new); + + Ok((va, kwonlyargs, kwarg)) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action418< +>( + mode: Mode, + (_, args, _): (TextSize, Vec, TextSize), +) -> (Vec, Vec) +{ + { + (vec![], args) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action419< +>( + mode: Mode, + (_, posonlyargs, _): (TextSize, Vec, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, args, _): (TextSize, alloc::vec::Vec, TextSize), +) -> (Vec, Vec) +{ + { + (posonlyargs, args) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action420< +>( + mode: Mode, + (_, _, _): (TextSize, token::Tok, TextSize), + (_, __0, _): (TextSize, Option>, TextSize), +) -> Option> +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action421< +>( + mode: Mode, + (_, _, _): (TextSize, token::Tok, TextSize), + (_, kwarg, _): (TextSize, core::option::Option, TextSize), +) -> Option> +{ + { + kwarg.map(Box::new) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action422< +>( + mode: Mode, + (_, __0, _): (TextSize, (Option>, Vec, Option>), TextSize), +) -> core::option::Option<(Option>, Vec, Option>)> +{ + Some(__0) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action423< +>( + mode: Mode, + __lookbehind: &TextSize, + __lookahead: &TextSize, +) -> core::option::Option<(Option>, Vec, Option>)> +{ + None +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action424< +>( + mode: Mode, + (_, _, _): (TextSize, token::Tok, TextSize), + (_, __0, _): (TextSize, (Option>, Vec, Option>), TextSize), +) -> (Option>, Vec, Option>) +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action425< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, va, _): (TextSize, core::option::Option, TextSize), + (_, kwonlyargs, _): (TextSize, alloc::vec::Vec, TextSize), + (_, kwarg, _): (TextSize, core::option::Option>>, TextSize), +) -> Result<(Option>, Vec, Option>),__lalrpop_util::ParseError> +{ + { + if va.is_none() && kwonlyargs.is_empty() && kwarg.is_none() { + return Err(LexicalError { + error: LexicalErrorType::OtherError("named arguments must follow bare *".to_string()), + location, + })?; + } + + let kwarg = kwarg.flatten(); + let va = va.map(Box::new); + + Ok((va, kwonlyargs, kwarg)) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action426< +>( + mode: Mode, + (_, args, _): (TextSize, Vec, TextSize), +) -> (Vec, Vec) +{ + { + (vec![], args) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action427< +>( + mode: Mode, + (_, posonlyargs, _): (TextSize, Vec, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, args, _): (TextSize, alloc::vec::Vec, TextSize), +) -> (Vec, Vec) +{ + { + (posonlyargs, args) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action428< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, e1, _): (TextSize, ast::Expr, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, e2, _): (TextSize, ast::Expr, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + ast::Expr::BinOp( + ast::ExprBinOp { left: Box::new(e1), op: ast::Operator::BitXor, right: Box::new(e2), range: (location..end_location).into() } + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action429< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action430< +>( + mode: Mode, + (_, e, _): (TextSize, ast::Expr, TextSize), +) -> Vec +{ + vec![e] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action431< +>( + mode: Mode, + (_, mut v, _): (TextSize, Vec, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, e, _): (TextSize, ast::Expr, TextSize), +) -> Vec +{ + { + v.push(e); + v + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action432< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> alloc::vec::Vec +{ + alloc::vec![__0] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action433< +>( + mode: Mode, + (_, v, _): (TextSize, alloc::vec::Vec, TextSize), + (_, e, _): (TextSize, ast::Expr, TextSize), +) -> alloc::vec::Vec +{ + { let mut v = v; v.push(e); v } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action434< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Expr, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), +) -> ast::Expr +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action435< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, mut values, _): (TextSize, alloc::vec::Vec, TextSize), + (_, last, _): (TextSize, ast::Expr, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + { + values.push(last); + ast::Expr::BoolOp( + ast::ExprBoolOp { op: ast::BoolOp::And, values, range: (location..end_location).into() } + ) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action436< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action437< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> alloc::vec::Vec +{ + alloc::vec![__0] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action438< +>( + mode: Mode, + (_, v, _): (TextSize, alloc::vec::Vec, TextSize), + (_, e, _): (TextSize, ast::Expr, TextSize), +) -> alloc::vec::Vec +{ + { let mut v = v; v.push(e); v } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action439< +>( + mode: Mode, + (_, __0, _): (TextSize, (Option<(TextSize, TextSize, Option)>, ast::Expr), TextSize), +) -> core::option::Option<(Option<(TextSize, TextSize, Option)>, ast::Expr)> +{ + Some(__0) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action440< +>( + mode: Mode, + __lookbehind: &TextSize, + __lookahead: &TextSize, +) -> core::option::Option<(Option<(TextSize, TextSize, Option)>, ast::Expr)> +{ + None +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action441< +>( + mode: Mode, + __lookbehind: &TextSize, + __lookahead: &TextSize, +) -> alloc::vec::Vec<(Option<(TextSize, TextSize, Option)>, ast::Expr)> +{ + alloc::vec![] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action442< +>( + mode: Mode, + (_, v, _): (TextSize, alloc::vec::Vec<(Option<(TextSize, TextSize, Option)>, ast::Expr)>, TextSize), +) -> alloc::vec::Vec<(Option<(TextSize, TextSize, Option)>, ast::Expr)> +{ + v +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action443< +>( + mode: Mode, + (_, __0, _): (TextSize, (Option<(TextSize, TextSize, Option)>, ast::Expr), TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), +) -> (Option<(TextSize, TextSize, Option)>, ast::Expr) +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action444< +>( + mode: Mode, + (_, __0, _): (TextSize, (Option<(TextSize, TextSize, Option)>, ast::Expr), TextSize), +) -> alloc::vec::Vec<(Option<(TextSize, TextSize, Option)>, ast::Expr)> +{ + alloc::vec![__0] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action445< +>( + mode: Mode, + (_, v, _): (TextSize, alloc::vec::Vec<(Option<(TextSize, TextSize, Option)>, ast::Expr)>, TextSize), + (_, e, _): (TextSize, (Option<(TextSize, TextSize, Option)>, ast::Expr), TextSize), +) -> alloc::vec::Vec<(Option<(TextSize, TextSize, Option)>, ast::Expr)> +{ + { let mut v = v; v.push(e); v } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action446< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> alloc::vec::Vec +{ + alloc::vec![__0] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action447< +>( + mode: Mode, + (_, v, _): (TextSize, alloc::vec::Vec, TextSize), + (_, e, _): (TextSize, ast::Expr, TextSize), +) -> alloc::vec::Vec +{ + { let mut v = v; v.push(e); v } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action448< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Expr, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), +) -> ast::Expr +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action449< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, e, _): (TextSize, ast::Expr, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + ast::Expr::UnaryOp( + ast::ExprUnaryOp { operand: Box::new(e), op: ast::UnaryOp::Not, range: (location..end_location).into() } + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action450< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action451< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, e1, _): (TextSize, ast::Expr, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, e2, _): (TextSize, ast::Expr, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + ast::Expr::BinOp( + ast::ExprBinOp { left: Box::new(e1), op: ast::Operator::BitAnd, right: Box::new(e2), range: (location..end_location).into() } + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action452< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action453< +>( + mode: Mode, + (_, e, _): (TextSize, ast::ArgWithDefault, TextSize), +) -> Vec +{ + vec![e] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action454< +>( + mode: Mode, + (_, mut v, _): (TextSize, Vec, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, e, _): (TextSize, ast::ArgWithDefault, TextSize), +) -> Vec +{ + { + v.push(e); + v + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action455< +>( + mode: Mode, + (_, __0, _): (TextSize, Option>, TextSize), +) -> core::option::Option>> +{ + Some(__0) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action456< +>( + mode: Mode, + __lookbehind: &TextSize, + __lookahead: &TextSize, +) -> core::option::Option>> +{ + None +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action457< +>( + mode: Mode, + __lookbehind: &TextSize, + __lookahead: &TextSize, +) -> alloc::vec::Vec +{ + alloc::vec![] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action458< +>( + mode: Mode, + (_, v, _): (TextSize, alloc::vec::Vec, TextSize), +) -> alloc::vec::Vec +{ + v +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action459< +>( + mode: Mode, + (_, _, _): (TextSize, token::Tok, TextSize), + (_, __0, _): (TextSize, ast::ArgWithDefault, TextSize), +) -> ast::ArgWithDefault +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action460< +>( + mode: Mode, + (_, i, _): (TextSize, ast::ArgWithDefault, TextSize), +) -> ast::ArgWithDefault +{ + i +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action461< +>( + mode: Mode, + (_, mut i, _): (TextSize, ast::ArgWithDefault, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, e, _): (TextSize, ast::Expr, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::ArgWithDefault +{ + { + i.default = Some(Box::new(e)); + i.range = (i.range.start()..end_location).into(); + i + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action462< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Arg, TextSize), +) -> core::option::Option +{ + Some(__0) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action463< +>( + mode: Mode, + __lookbehind: &TextSize, + __lookahead: &TextSize, +) -> core::option::Option +{ + None +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action464< +>( + mode: Mode, + (_, e, _): (TextSize, ast::ArgWithDefault, TextSize), +) -> Vec +{ + vec![e] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action465< +>( + mode: Mode, + (_, mut v, _): (TextSize, Vec, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, e, _): (TextSize, ast::ArgWithDefault, TextSize), +) -> Vec +{ + { + v.push(e); + v + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action466< +>( + mode: Mode, + (_, __0, _): (TextSize, Option>, TextSize), +) -> core::option::Option>> +{ + Some(__0) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action467< +>( + mode: Mode, + __lookbehind: &TextSize, + __lookahead: &TextSize, +) -> core::option::Option>> +{ + None +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action468< +>( + mode: Mode, + __lookbehind: &TextSize, + __lookahead: &TextSize, +) -> alloc::vec::Vec +{ + alloc::vec![] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action469< +>( + mode: Mode, + (_, v, _): (TextSize, alloc::vec::Vec, TextSize), +) -> alloc::vec::Vec +{ + v +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action470< +>( + mode: Mode, + (_, _, _): (TextSize, token::Tok, TextSize), + (_, __0, _): (TextSize, ast::ArgWithDefault, TextSize), +) -> ast::ArgWithDefault +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action471< +>( + mode: Mode, + (_, i, _): (TextSize, ast::ArgWithDefault, TextSize), +) -> ast::ArgWithDefault +{ + i +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action472< +>( + mode: Mode, + (_, mut i, _): (TextSize, ast::ArgWithDefault, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, e, _): (TextSize, ast::Expr, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::ArgWithDefault +{ + { + i.default = Some(Box::new(e)); + i.range = (i.range.start()..end_location).into(); + i + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action473< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Arg, TextSize), +) -> core::option::Option +{ + Some(__0) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action474< +>( + mode: Mode, + __lookbehind: &TextSize, + __lookahead: &TextSize, +) -> core::option::Option +{ + None +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action475< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Arg, TextSize), +) -> core::option::Option +{ + Some(__0) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action476< +>( + mode: Mode, + __lookbehind: &TextSize, + __lookahead: &TextSize, +) -> core::option::Option +{ + None +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action477< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, mut values, _): (TextSize, alloc::vec::Vec, TextSize), + (_, last, _): (TextSize, ast::Expr, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + { + values.push(last); + ast::Expr::BoolOp( + ast::ExprBoolOp { op: ast::BoolOp::Or, values, range: (location..end_location).into() } + ) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action478< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action479< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, mut values, _): (TextSize, alloc::vec::Vec, TextSize), + (_, last, _): (TextSize, ast::Expr, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + { + values.push(last); + ast::Expr::BoolOp( + ast::ExprBoolOp { op: ast::BoolOp::And, values, range: (location..end_location).into() } + ) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action480< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action481< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::ArgWithDefault, TextSize), +) -> alloc::vec::Vec +{ + alloc::vec![__0] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action482< +>( + mode: Mode, + (_, v, _): (TextSize, alloc::vec::Vec, TextSize), + (_, e, _): (TextSize, ast::ArgWithDefault, TextSize), +) -> alloc::vec::Vec +{ + { let mut v = v; v.push(e); v } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action483< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::ArgWithDefault, TextSize), +) -> alloc::vec::Vec +{ + alloc::vec![__0] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action484< +>( + mode: Mode, + (_, v, _): (TextSize, alloc::vec::Vec, TextSize), + (_, e, _): (TextSize, ast::ArgWithDefault, TextSize), +) -> alloc::vec::Vec +{ + { let mut v = v; v.push(e); v } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action485< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, e1, _): (TextSize, ast::Expr, TextSize), + (_, op, _): (TextSize, ast::Operator, TextSize), + (_, e2, _): (TextSize, ast::Expr, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + ast::Expr::BinOp( + ast::ExprBinOp { left: Box::new(e1), op, right: Box::new(e2), range: (location..end_location).into() } + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action486< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action487< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, left, _): (TextSize, ast::Expr, TextSize), + (_, comparisons, _): (TextSize, alloc::vec::Vec<(ast::CmpOp, ast::Expr)>, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + { + let (ops, comparators) = comparisons.into_iter().unzip(); + ast::Expr::Compare( + ast::ExprCompare { left: Box::new(left), ops, comparators, range: (location..end_location).into() } + ) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action488< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action489< +>( + mode: Mode, + (_, __0, _): (TextSize, (ast::CmpOp, ast::Expr), TextSize), +) -> alloc::vec::Vec<(ast::CmpOp, ast::Expr)> +{ + alloc::vec![__0] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action490< +>( + mode: Mode, + (_, v, _): (TextSize, alloc::vec::Vec<(ast::CmpOp, ast::Expr)>, TextSize), + (_, e, _): (TextSize, (ast::CmpOp, ast::Expr), TextSize), +) -> alloc::vec::Vec<(ast::CmpOp, ast::Expr)> +{ + { let mut v = v; v.push(e); v } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action491< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::CmpOp, TextSize), + (_, __1, _): (TextSize, ast::Expr, TextSize), +) -> (ast::CmpOp, ast::Expr) +{ + (__0, __1) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action492< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, a, _): (TextSize, ast::Expr, TextSize), + (_, op, _): (TextSize, ast::Operator, TextSize), + (_, b, _): (TextSize, ast::Expr, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + ast::Expr::BinOp( + ast::ExprBinOp { left: Box::new(a), op, right: Box::new(b), range: (location..end_location).into() } + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action493< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action494< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, e, _): (TextSize, ast::Expr, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + ast::Expr::UnaryOp( + ast::ExprUnaryOp { operand: Box::new(e), op: ast::UnaryOp::Not, range: (location..end_location).into() } + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action495< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action496< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, left, _): (TextSize, ast::Expr, TextSize), + (_, comparisons, _): (TextSize, alloc::vec::Vec<(ast::CmpOp, ast::Expr)>, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + { + let (ops, comparators) = comparisons.into_iter().unzip(); + ast::Expr::Compare( + ast::ExprCompare { left: Box::new(left), ops, comparators, range: (location..end_location).into() } + ) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action497< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action498< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, a, _): (TextSize, ast::Expr, TextSize), + (_, op, _): (TextSize, ast::Operator, TextSize), + (_, b, _): (TextSize, ast::Expr, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + ast::Expr::BinOp( + ast::ExprBinOp { left: Box::new(a), op, right: Box::new(b), range: (location..end_location).into() } + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action499< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action500< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, op, _): (TextSize, ast::UnaryOp, TextSize), + (_, e, _): (TextSize, ast::Expr, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + ast::Expr::UnaryOp( + ast::ExprUnaryOp { operand: Box::new(e), op, range: (location..end_location).into() } + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action501< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action502< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, e1, _): (TextSize, ast::Expr, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, e2, _): (TextSize, ast::Expr, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + ast::Expr::BinOp( + ast::ExprBinOp { left: Box::new(e1), op: ast::Operator::BitOr, right: Box::new(e2), range: (location..end_location).into() } + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action503< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action504< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, e1, _): (TextSize, ast::Expr, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, e2, _): (TextSize, ast::Expr, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + ast::Expr::BinOp( + ast::ExprBinOp { left: Box::new(e1), op: ast::Operator::BitXor, right: Box::new(e2), range: (location..end_location).into() } + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action505< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action506< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, e, _): (TextSize, ast::Expr, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, b, _): (TextSize, ast::Expr, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + ast::Expr::BinOp( + ast::ExprBinOp { left: Box::new(e), op: ast::Operator::Pow, right: Box::new(b), range: (location..end_location).into() } + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action507< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action508< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, atom, _): (TextSize, ast::Expr, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + { + ast::Expr::Await( + ast::ExprAwait { value: Box::new(atom), range: (location..end_location).into() } + ) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action509< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action510< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, e1, _): (TextSize, ast::Expr, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, e2, _): (TextSize, ast::Expr, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + ast::Expr::BinOp( + ast::ExprBinOp { left: Box::new(e1), op: ast::Operator::BitAnd, right: Box::new(e2), range: (location..end_location).into() } + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action511< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action512< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, e1, _): (TextSize, ast::Expr, TextSize), + (_, op, _): (TextSize, ast::Operator, TextSize), + (_, e2, _): (TextSize, ast::Expr, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + ast::Expr::BinOp( + ast::ExprBinOp { left: Box::new(e1), op, right: Box::new(e2), range: (location..end_location).into() } + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action513< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action514< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action515< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, f, _): (TextSize, ast::Expr, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, a, _): (TextSize, ArgumentList, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + { + ast::Expr::Call( + ast::ExprCall { func: Box::new(f), args: a.args, keywords: a.keywords, range: (location..end_location).into() } + ) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action516< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, e, _): (TextSize, ast::Expr, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, s, _): (TextSize, ast::Expr, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + ast::Expr::Subscript( + ast::ExprSubscript { value: Box::new(e), slice: Box::new(s), ctx: ast::ExprContext::Load, range: (location..end_location).into() } + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action517< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, e, _): (TextSize, ast::Expr, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, attr, _): (TextSize, ast::Identifier, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + ast::Expr::Attribute( + ast::ExprAttribute { value: Box::new(e), attr, ctx: ast::ExprContext::Load, range: (location..end_location).into() } + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action518< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, s, _): (TextSize, alloc::vec::Vec<(TextSize, (String, StringKind, bool), TextSize)>, TextSize), +) -> Result> +{ + Ok(parse_strings(s)?) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action519< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, value, _): (TextSize, ast::Constant, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + ast::Expr::Constant( + ast::ExprConstant { value, kind: None, range: (location..end_location).into() } + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action520< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, id, _): (TextSize, ast::Identifier, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + ast::Expr::Name( + ast::ExprName { id: id.into(), ctx: ast::ExprContext::Load, range: (location..end_location).into() } + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action521< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, e, _): (TextSize, core::option::Option>, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + { + let elts = e.unwrap_or_default(); + ast::Expr::List( + ast::ExprList { elts, ctx: ast::ExprContext::Load, range: (location..end_location).into() } + ) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action522< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, elt, _): (TextSize, ast::Expr, TextSize), + (_, generators, _): (TextSize, Vec, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + { + ast::Expr::ListComp( + ast::ExprListComp { elt: Box::new(elt), generators, range: (location..end_location).into() } + ) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action523< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, elts, _): (TextSize, Vec, TextSize), + (_, trailing_comma, _): (TextSize, core::option::Option, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + { + if elts.len() == 1 && trailing_comma.is_none() { + elts.into_iter().next().unwrap() + } else { + ast::Expr::Tuple( + ast::ExprTuple { elts, ctx: ast::ExprContext::Load, range: (location..end_location).into() } + ) + } + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action524< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, left, _): (TextSize, core::option::Option>, TextSize), + (_, mid, _): (TextSize, ast::Expr, TextSize), + (_, right, _): (TextSize, alloc::vec::Vec, TextSize), + (_, trailing_comma, _): (TextSize, core::option::Option, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> Result> +{ + { + if left.is_none() && right.is_empty() && trailing_comma.is_none() { + if mid.is_starred_expr() { + return Err(LexicalError{ + error: LexicalErrorType::OtherError("cannot use starred expression here".to_string()), + location: mid.start(), + })?; + } + Ok(mid) + } else { + let elts = left.into_iter().flatten().chain([mid]).chain(right).collect(); + Ok(ast::Expr::Tuple( + ast::ExprTuple { elts, ctx: ast::ExprContext::Load, range: (location..end_location).into() }, + )) + } + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action525< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + ast::Expr::Tuple( + ast::ExprTuple { elts: Vec::new(), ctx: ast::ExprContext::Load, range: (location..end_location).into() } + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action526< +>( + mode: Mode, + (_, _, _): (TextSize, token::Tok, TextSize), + (_, e, _): (TextSize, ast::Expr, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), +) -> ast::Expr +{ + e +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action527< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, elt, _): (TextSize, ast::Expr, TextSize), + (_, generators, _): (TextSize, Vec, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + { + ast::Expr::GeneratorExp( + ast::ExprGeneratorExp { elt: Box::new(elt), generators, range: (location..end_location).into() } + ) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action528< +>( + mode: Mode, + (_, _, _): (TextSize, token::Tok, TextSize), + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, e, _): (TextSize, ast::Expr, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> Result> +{ + { + Err(LexicalError{ + error : LexicalErrorType::OtherError("cannot use double starred expression here".to_string()), + location, + }.into()) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action529< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, e, _): (TextSize, core::option::Option>, ast::Expr)>>, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + { + let (keys, values) = e + .unwrap_or_default() + .into_iter() + .map(|(k, v)| (k.map(|x| *x), v)) + .unzip(); + ast::Expr::Dict( + ast::ExprDict { keys, values, range: (location..end_location).into() } + ) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action530< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, e1, _): (TextSize, (ast::Expr, ast::Expr), TextSize), + (_, generators, _): (TextSize, Vec, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + { + ast::Expr::DictComp( + ast::ExprDictComp { + key: Box::new(e1.0), + value: Box::new(e1.1), + generators, + range: (location..end_location).into() + } + ) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action531< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, elts, _): (TextSize, Vec, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + ast::Expr::Set( + ast::ExprSet { elts, range: (location..end_location).into() } + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action532< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, elt, _): (TextSize, ast::Expr, TextSize), + (_, generators, _): (TextSize, Vec, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + { + ast::Expr::SetComp( + ast::ExprSetComp { elt: Box::new(elt), generators, range: (location..end_location).into() } + ) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action533< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + ast::Expr::Constant(ast::ExprConstant { value: true.into(), kind: None, range: (location..end_location).into() }) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action534< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + ast::Expr::Constant(ast::ExprConstant { value: false.into(), kind: None, range: (location..end_location).into() }) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action535< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + ast::Expr::Constant(ast::ExprConstant { value: ast::Constant::None, kind: None, range: (location..end_location).into() }) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action536< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + ast::Expr::Constant(ast::ExprConstant { value: ast::Constant::Ellipsis, kind: None, range: (location..end_location).into() }) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action537< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, a, _): (TextSize, ast::Expr, TextSize), + (_, op, _): (TextSize, ast::Operator, TextSize), + (_, b, _): (TextSize, ast::Expr, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + ast::Expr::BinOp( + ast::ExprBinOp { left: Box::new(a), op, right: Box::new(b), range: (location..end_location).into() } + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action538< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action539< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, a, _): (TextSize, ast::Expr, TextSize), + (_, op, _): (TextSize, ast::Operator, TextSize), + (_, b, _): (TextSize, ast::Expr, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + ast::Expr::BinOp( + ast::ExprBinOp { left: Box::new(a), op, right: Box::new(b), range: (location..end_location).into() } + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action540< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action541< +>( + mode: Mode, + (_, __0, _): (TextSize, Vec<(Option>, ast::Expr)>, TextSize), +) -> core::option::Option>, ast::Expr)>> +{ + Some(__0) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action542< +>( + mode: Mode, + __lookbehind: &TextSize, + __lookahead: &TextSize, +) -> core::option::Option>, ast::Expr)>> +{ + None +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action543< +>( + mode: Mode, + __lookbehind: &TextSize, + __lookahead: &TextSize, +) -> alloc::vec::Vec +{ + alloc::vec![] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action544< +>( + mode: Mode, + (_, v, _): (TextSize, alloc::vec::Vec, TextSize), +) -> alloc::vec::Vec +{ + v +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action545< +>( + mode: Mode, + (_, _, _): (TextSize, token::Tok, TextSize), + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action546< +>( + mode: Mode, + (_, __0, _): (TextSize, Vec, TextSize), +) -> core::option::Option> +{ + Some(__0) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action547< +>( + mode: Mode, + __lookbehind: &TextSize, + __lookahead: &TextSize, +) -> core::option::Option> +{ + None +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action548< +>( + mode: Mode, + (_, __0, _): (TextSize, Vec, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), +) -> Vec +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action549< +>( + mode: Mode, + (_, __0, _): (TextSize, Vec, TextSize), +) -> core::option::Option> +{ + Some(__0) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action550< +>( + mode: Mode, + __lookbehind: &TextSize, + __lookahead: &TextSize, +) -> core::option::Option> +{ + None +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action551< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> alloc::vec::Vec +{ + alloc::vec![__0] +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action552< +>( + mode: Mode, + (_, v, _): (TextSize, alloc::vec::Vec, TextSize), + (_, e, _): (TextSize, ast::Expr, TextSize), +) -> alloc::vec::Vec +{ + { let mut v = v; v.push(e); v } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action553< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, op, _): (TextSize, ast::UnaryOp, TextSize), + (_, e, _): (TextSize, ast::Expr, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + ast::Expr::UnaryOp( + ast::ExprUnaryOp { operand: Box::new(e), op, range: (location..end_location).into() } + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action554< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action555< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, e, _): (TextSize, ast::Expr, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, b, _): (TextSize, ast::Expr, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + ast::Expr::BinOp( + ast::ExprBinOp { left: Box::new(e), op: ast::Operator::Pow, right: Box::new(b), range: (location..end_location).into() } + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action556< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action557< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, atom, _): (TextSize, ast::Expr, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + { + ast::Expr::Await( + ast::ExprAwait { value: Box::new(atom), range: (location..end_location).into() } + ) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action558< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action559< +>( + mode: Mode, + (_, __0, _): (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + __0 +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action560< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, f, _): (TextSize, ast::Expr, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, a, _): (TextSize, ArgumentList, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + { + ast::Expr::Call( + ast::ExprCall { func: Box::new(f), args: a.args, keywords: a.keywords, range: (location..end_location).into() } + ) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action561< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, e, _): (TextSize, ast::Expr, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, s, _): (TextSize, ast::Expr, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + ast::Expr::Subscript( + ast::ExprSubscript { value: Box::new(e), slice: Box::new(s), ctx: ast::ExprContext::Load, range: (location..end_location).into() } + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action562< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, e, _): (TextSize, ast::Expr, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, attr, _): (TextSize, ast::Identifier, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + ast::Expr::Attribute( + ast::ExprAttribute { value: Box::new(e), attr, ctx: ast::ExprContext::Load, range: (location..end_location).into() } + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action563< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, s, _): (TextSize, alloc::vec::Vec<(TextSize, (String, StringKind, bool), TextSize)>, TextSize), +) -> Result> +{ + Ok(parse_strings(s)?) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action564< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, value, _): (TextSize, ast::Constant, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + ast::Expr::Constant( + ast::ExprConstant { value, kind: None, range: (location..end_location).into() } + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action565< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, id, _): (TextSize, ast::Identifier, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + ast::Expr::Name( + ast::ExprName { id: id.into(), ctx: ast::ExprContext::Load, range: (location..end_location).into() } + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action566< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, e, _): (TextSize, core::option::Option>, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + { + let elts = e.unwrap_or_default(); + ast::Expr::List( + ast::ExprList { elts, ctx: ast::ExprContext::Load, range: (location..end_location).into() } + ) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action567< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, elt, _): (TextSize, ast::Expr, TextSize), + (_, generators, _): (TextSize, Vec, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + { + ast::Expr::ListComp( + ast::ExprListComp { elt: Box::new(elt), generators, range: (location..end_location).into() } + ) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action568< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, left, _): (TextSize, core::option::Option>, TextSize), + (_, mid, _): (TextSize, ast::Expr, TextSize), + (_, right, _): (TextSize, alloc::vec::Vec, TextSize), + (_, trailing_comma, _): (TextSize, core::option::Option, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> Result> +{ + { + if left.is_none() && right.is_empty() && trailing_comma.is_none() { + if mid.is_starred_expr() { + return Err(LexicalError{ + error: LexicalErrorType::OtherError("cannot use starred expression here".to_string()), + location: mid.start(), + })?; + } + Ok(mid) + } else { + let elts = left.into_iter().flatten().chain([mid]).chain(right).collect(); + Ok(ast::Expr::Tuple( + ast::ExprTuple { elts, ctx: ast::ExprContext::Load, range: (location..end_location).into() }, + )) + } + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action569< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + ast::Expr::Tuple( + ast::ExprTuple { elts: Vec::new(), ctx: ast::ExprContext::Load, range: (location..end_location).into() } + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action570< +>( + mode: Mode, + (_, _, _): (TextSize, token::Tok, TextSize), + (_, e, _): (TextSize, ast::Expr, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), +) -> ast::Expr +{ + e +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action571< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, elt, _): (TextSize, ast::Expr, TextSize), + (_, generators, _): (TextSize, Vec, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + { + ast::Expr::GeneratorExp( + ast::ExprGeneratorExp { elt: Box::new(elt), generators, range: (location..end_location).into() } + ) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action572< +>( + mode: Mode, + (_, _, _): (TextSize, token::Tok, TextSize), + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, e, _): (TextSize, ast::Expr, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> Result> +{ + { + Err(LexicalError{ + error : LexicalErrorType::OtherError("cannot use double starred expression here".to_string()), + location, + }.into()) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action573< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, e, _): (TextSize, core::option::Option>, ast::Expr)>>, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + { + let (keys, values) = e + .unwrap_or_default() + .into_iter() + .map(|(k, v)| (k.map(|x| *x), v)) + .unzip(); + ast::Expr::Dict( + ast::ExprDict { keys, values, range: (location..end_location).into() } + ) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action574< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, e1, _): (TextSize, (ast::Expr, ast::Expr), TextSize), + (_, generators, _): (TextSize, Vec, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + { + ast::Expr::DictComp( + ast::ExprDictComp { + key: Box::new(e1.0), + value: Box::new(e1.1), + generators, + range: (location..end_location).into() + } + ) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action575< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, elts, _): (TextSize, Vec, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + ast::Expr::Set( + ast::ExprSet { elts, range: (location..end_location).into() } + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action576< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, elt, _): (TextSize, ast::Expr, TextSize), + (_, generators, _): (TextSize, Vec, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + { + ast::Expr::SetComp( + ast::ExprSetComp { elt: Box::new(elt), generators, range: (location..end_location).into() } + ) + } +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action577< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + ast::Expr::Constant(ast::ExprConstant { value: true.into(), kind: None, range: (location..end_location).into() }) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action578< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + ast::Expr::Constant(ast::ExprConstant { value: false.into(), kind: None, range: (location..end_location).into() }) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action579< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + ast::Expr::Constant(ast::ExprConstant { value: ast::Constant::None, kind: None, range: (location..end_location).into() }) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action580< +>( + mode: Mode, + (_, location, _): (TextSize, TextSize, TextSize), + (_, _, _): (TextSize, token::Tok, TextSize), + (_, end_location, _): (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + ast::Expr::Constant(ast::ExprConstant { value: ast::Constant::Ellipsis, kind: None, range: (location..end_location).into() }) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action581< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __3.0; + let __end0 = __3.2; + let __temp0 = __action358( + mode, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action523( + mode, + __0, + __1, + __2, + __temp0, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action582< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __2.2; + let __end0 = __3.0; + let __temp0 = __action359( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action523( + mode, + __0, + __1, + __2, + __temp0, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action583< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, core::option::Option>, TextSize), + __3: (TextSize, ast::Expr, TextSize), + __4: (TextSize, alloc::vec::Vec, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, token::Tok, TextSize), + __7: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __5.0; + let __end0 = __5.2; + let __temp0 = __action358( + mode, + __5, + ); + let __temp0 = (__start0, __temp0, __end0); + __action524( + mode, + __0, + __1, + __2, + __3, + __4, + __temp0, + __6, + __7, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action584< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, core::option::Option>, TextSize), + __3: (TextSize, ast::Expr, TextSize), + __4: (TextSize, alloc::vec::Vec, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __4.2; + let __end0 = __5.0; + let __temp0 = __action359( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action524( + mode, + __0, + __1, + __2, + __3, + __4, + __temp0, + __5, + __6, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action585< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, core::option::Option>, TextSize), + __3: (TextSize, ast::Expr, TextSize), + __4: (TextSize, alloc::vec::Vec, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, token::Tok, TextSize), + __7: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __5.0; + let __end0 = __5.2; + let __temp0 = __action358( + mode, + __5, + ); + let __temp0 = (__start0, __temp0, __end0); + __action568( + mode, + __0, + __1, + __2, + __3, + __4, + __temp0, + __6, + __7, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action586< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, core::option::Option>, TextSize), + __3: (TextSize, ast::Expr, TextSize), + __4: (TextSize, alloc::vec::Vec, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __4.2; + let __end0 = __5.0; + let __temp0 = __action359( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action568( + mode, + __0, + __1, + __2, + __3, + __4, + __temp0, + __5, + __6, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action587< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, Vec<(ast::Identifier, ast::Pattern)>, TextSize), + __6: (TextSize, token::Tok, TextSize), + __7: (TextSize, token::Tok, TextSize), + __8: (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + let __start0 = __6.0; + let __end0 = __6.2; + let __temp0 = __action358( + mode, + __6, + ); + let __temp0 = (__start0, __temp0, __end0); + __action138( + mode, + __0, + __1, + __2, + __3, + __4, + __5, + __temp0, + __7, + __8, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action588< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, Vec<(ast::Identifier, ast::Pattern)>, TextSize), + __6: (TextSize, token::Tok, TextSize), + __7: (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + let __start0 = __5.2; + let __end0 = __6.0; + let __temp0 = __action359( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action138( + mode, + __0, + __1, + __2, + __3, + __4, + __5, + __temp0, + __6, + __7, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action589< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + let __start0 = __4.0; + let __end0 = __4.2; + let __temp0 = __action358( + mode, + __4, + ); + let __temp0 = (__start0, __temp0, __end0); + __action139( + mode, + __0, + __1, + __2, + __3, + __temp0, + __5, + __6, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action590< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + let __start0 = __3.2; + let __end0 = __4.0; + let __temp0 = __action359( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action139( + mode, + __0, + __1, + __2, + __3, + __temp0, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action591< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, Vec<(ast::Identifier, ast::Pattern)>, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + let __start0 = __4.0; + let __end0 = __4.2; + let __temp0 = __action358( + mode, + __4, + ); + let __temp0 = (__start0, __temp0, __end0); + __action140( + mode, + __0, + __1, + __2, + __3, + __temp0, + __5, + __6, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action592< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, Vec<(ast::Identifier, ast::Pattern)>, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + let __start0 = __3.2; + let __end0 = __4.0; + let __temp0 = __action359( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action140( + mode, + __0, + __1, + __2, + __3, + __temp0, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action593< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, Vec<(ast::Identifier, ast::Pattern)>, TextSize), + __6: (TextSize, token::Tok, TextSize), + __7: (TextSize, token::Tok, TextSize), + __8: (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + let __start0 = __6.0; + let __end0 = __6.2; + let __temp0 = __action358( + mode, + __6, + ); + let __temp0 = (__start0, __temp0, __end0); + __action142( + mode, + __0, + __1, + __2, + __3, + __4, + __5, + __temp0, + __7, + __8, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action594< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, Vec<(ast::Identifier, ast::Pattern)>, TextSize), + __6: (TextSize, token::Tok, TextSize), + __7: (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + let __start0 = __5.2; + let __end0 = __6.0; + let __temp0 = __action359( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action142( + mode, + __0, + __1, + __2, + __3, + __4, + __5, + __temp0, + __6, + __7, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action595< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + let __start0 = __4.0; + let __end0 = __4.2; + let __temp0 = __action358( + mode, + __4, + ); + let __temp0 = (__start0, __temp0, __end0); + __action143( + mode, + __0, + __1, + __2, + __3, + __temp0, + __5, + __6, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action596< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + let __start0 = __3.2; + let __end0 = __4.0; + let __temp0 = __action359( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action143( + mode, + __0, + __1, + __2, + __3, + __temp0, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action597< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, Vec<(ast::Identifier, ast::Pattern)>, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + let __start0 = __4.0; + let __end0 = __4.2; + let __temp0 = __action358( + mode, + __4, + ); + let __temp0 = (__start0, __temp0, __end0); + __action144( + mode, + __0, + __1, + __2, + __3, + __temp0, + __5, + __6, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action598< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, Vec<(ast::Identifier, ast::Pattern)>, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + let __start0 = __3.2; + let __end0 = __4.0; + let __temp0 = __action359( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action144( + mode, + __0, + __1, + __2, + __3, + __temp0, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action599< +>( + mode: Mode, + __0: (TextSize, Vec<(Option>, ast::Expr)>, TextSize), + __1: (TextSize, token::Tok, TextSize), +) -> Vec<(Option>, ast::Expr)> +{ + let __start0 = __1.0; + let __end0 = __1.2; + let __temp0 = __action358( + mode, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action212( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action600< +>( + mode: Mode, + __0: (TextSize, Vec<(Option>, ast::Expr)>, TextSize), +) -> Vec<(Option>, ast::Expr)> +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action359( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action212( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action601< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), +) -> Vec +{ + let __start0 = __1.0; + let __end0 = __1.2; + let __temp0 = __action358( + mode, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action220( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action602< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), +) -> Vec +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action359( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action220( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action603< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, Vec, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __2.0; + let __end0 = __2.2; + let __temp0 = __action358( + mode, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action248( + mode, + __0, + __1, + __temp0, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action604< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, Vec, TextSize), + __2: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __1.2; + let __end0 = __2.0; + let __temp0 = __action359( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action248( + mode, + __0, + __1, + __temp0, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action605< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, Vec, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __2.0; + let __end0 = __2.2; + let __temp0 = __action358( + mode, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action245( + mode, + __0, + __1, + __temp0, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action606< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, Vec, TextSize), + __2: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __1.2; + let __end0 = __2.0; + let __temp0 = __action359( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action245( + mode, + __0, + __1, + __temp0, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action607< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, TextSize, TextSize), +) -> Vec +{ + let __start0 = __3.0; + let __end0 = __3.2; + let __temp0 = __action358( + mode, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action67( + mode, + __0, + __1, + __2, + __temp0, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action608< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, TextSize, TextSize), +) -> Vec +{ + let __start0 = __2.2; + let __end0 = __3.0; + let __temp0 = __action359( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action67( + mode, + __0, + __1, + __2, + __temp0, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action609< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), +) -> Vec +{ + let __start0 = __1.0; + let __end0 = __1.2; + let __temp0 = __action358( + mode, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action211( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action610< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), +) -> Vec +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action359( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action211( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action611< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, Vec<(ast::Expr, ast::Pattern)>, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + let __start0 = __3.0; + let __end0 = __3.2; + let __temp0 = __action358( + mode, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action134( + mode, + __0, + __1, + __2, + __temp0, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action612< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, Vec<(ast::Expr, ast::Pattern)>, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + let __start0 = __2.2; + let __end0 = __3.0; + let __temp0 = __action359( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action134( + mode, + __0, + __1, + __2, + __temp0, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action613< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Identifier, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + let __start0 = __4.0; + let __end0 = __4.2; + let __temp0 = __action358( + mode, + __4, + ); + let __temp0 = (__start0, __temp0, __end0); + __action135( + mode, + __0, + __1, + __2, + __3, + __temp0, + __5, + __6, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action614< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Identifier, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + let __start0 = __3.2; + let __end0 = __4.0; + let __temp0 = __action359( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action135( + mode, + __0, + __1, + __2, + __3, + __temp0, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action615< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, Vec<(ast::Expr, ast::Pattern)>, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, ast::Identifier, TextSize), + __6: (TextSize, token::Tok, TextSize), + __7: (TextSize, token::Tok, TextSize), + __8: (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + let __start0 = __6.0; + let __end0 = __6.2; + let __temp0 = __action358( + mode, + __6, + ); + let __temp0 = (__start0, __temp0, __end0); + __action136( + mode, + __0, + __1, + __2, + __3, + __4, + __5, + __temp0, + __7, + __8, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action616< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, Vec<(ast::Expr, ast::Pattern)>, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, ast::Identifier, TextSize), + __6: (TextSize, token::Tok, TextSize), + __7: (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + let __start0 = __5.2; + let __end0 = __6.0; + let __temp0 = __action359( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action136( + mode, + __0, + __1, + __2, + __3, + __4, + __5, + __temp0, + __6, + __7, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action617< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, token::Tok, TextSize), + __7: (TextSize, alloc::vec::Vec, TextSize), + __8: (TextSize, token::Tok, TextSize), +) -> ast::Stmt +{ + let __start0 = __3.0; + let __end0 = __3.2; + let __temp0 = __action358( + mode, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action86( + mode, + __0, + __1, + __2, + __temp0, + __4, + __5, + __6, + __7, + __8, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action618< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, alloc::vec::Vec, TextSize), + __7: (TextSize, token::Tok, TextSize), +) -> ast::Stmt +{ + let __start0 = __2.2; + let __end0 = __3.0; + let __temp0 = __action359( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action86( + mode, + __0, + __1, + __2, + __temp0, + __3, + __4, + __5, + __6, + __7, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action619< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, (Vec, Vec), TextSize), + __2: (TextSize, core::option::Option<(Option>, Vec, Option>)>, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __3.0; + let __end0 = __3.2; + let __temp0 = __action358( + mode, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action279( + mode, + __0, + __1, + __2, + __temp0, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action620< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, (Vec, Vec), TextSize), + __2: (TextSize, core::option::Option<(Option>, Vec, Option>)>, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __2.2; + let __end0 = __3.0; + let __temp0 = __action359( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action279( + mode, + __0, + __1, + __2, + __temp0, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action621< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, (Vec, Vec), TextSize), + __2: (TextSize, Option>, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __3.0; + let __end0 = __3.2; + let __temp0 = __action358( + mode, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action280( + mode, + __0, + __1, + __2, + __temp0, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action622< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, (Vec, Vec), TextSize), + __2: (TextSize, Option>, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __2.2; + let __end0 = __3.0; + let __temp0 = __action359( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action280( + mode, + __0, + __1, + __2, + __temp0, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action623< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, (Option>, Vec, Option>), TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> ast::Arguments +{ + let __start0 = __2.0; + let __end0 = __2.2; + let __temp0 = __action358( + mode, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action281( + mode, + __0, + __1, + __temp0, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action624< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, (Option>, Vec, Option>), TextSize), + __2: (TextSize, TextSize, TextSize), +) -> ast::Arguments +{ + let __start0 = __1.2; + let __end0 = __2.0; + let __temp0 = __action359( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action281( + mode, + __0, + __1, + __temp0, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action625< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, Option>, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> ast::Arguments +{ + let __start0 = __2.0; + let __end0 = __2.2; + let __temp0 = __action358( + mode, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action282( + mode, + __0, + __1, + __temp0, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action626< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, Option>, TextSize), + __2: (TextSize, TextSize, TextSize), +) -> ast::Arguments +{ + let __start0 = __1.2; + let __end0 = __2.0; + let __temp0 = __action359( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action282( + mode, + __0, + __1, + __temp0, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action627< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, (Vec, Vec), TextSize), + __2: (TextSize, core::option::Option<(Option>, Vec, Option>)>, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __3.0; + let __end0 = __3.2; + let __temp0 = __action358( + mode, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action261( + mode, + __0, + __1, + __2, + __temp0, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action628< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, (Vec, Vec), TextSize), + __2: (TextSize, core::option::Option<(Option>, Vec, Option>)>, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __2.2; + let __end0 = __3.0; + let __temp0 = __action359( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action261( + mode, + __0, + __1, + __2, + __temp0, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action629< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, (Vec, Vec), TextSize), + __2: (TextSize, Option>, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __3.0; + let __end0 = __3.2; + let __temp0 = __action358( + mode, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action262( + mode, + __0, + __1, + __2, + __temp0, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action630< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, (Vec, Vec), TextSize), + __2: (TextSize, Option>, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __2.2; + let __end0 = __3.0; + let __temp0 = __action359( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action262( + mode, + __0, + __1, + __2, + __temp0, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action631< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, (Option>, Vec, Option>), TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> ast::Arguments +{ + let __start0 = __2.0; + let __end0 = __2.2; + let __temp0 = __action358( + mode, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action263( + mode, + __0, + __1, + __temp0, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action632< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, (Option>, Vec, Option>), TextSize), + __2: (TextSize, TextSize, TextSize), +) -> ast::Arguments +{ + let __start0 = __1.2; + let __end0 = __2.0; + let __temp0 = __action359( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action263( + mode, + __0, + __1, + __temp0, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action633< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, Option>, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> ast::Arguments +{ + let __start0 = __2.0; + let __end0 = __2.2; + let __temp0 = __action358( + mode, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action264( + mode, + __0, + __1, + __temp0, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action634< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, Option>, TextSize), + __2: (TextSize, TextSize, TextSize), +) -> ast::Arguments +{ + let __start0 = __1.2; + let __end0 = __2.0; + let __temp0 = __action359( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action264( + mode, + __0, + __1, + __temp0, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action635< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, Vec, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + let __start0 = __2.0; + let __end0 = __2.2; + let __temp0 = __action358( + mode, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action90( + mode, + __0, + __1, + __temp0, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action636< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, Vec, TextSize), + __2: (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + let __start0 = __1.2; + let __end0 = __2.0; + let __temp0 = __action359( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action90( + mode, + __0, + __1, + __temp0, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action637< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, alloc::vec::Vec, TextSize), + __3: (TextSize, ast::Pattern, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + let __start0 = __4.0; + let __end0 = __4.2; + let __temp0 = __action358( + mode, + __4, + ); + let __temp0 = (__start0, __temp0, __end0); + __action107( + mode, + __0, + __1, + __2, + __3, + __temp0, + __5, + __6, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action638< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, alloc::vec::Vec, TextSize), + __3: (TextSize, ast::Pattern, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + let __start0 = __3.2; + let __end0 = __4.0; + let __temp0 = __action359( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action107( + mode, + __0, + __1, + __2, + __3, + __temp0, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action639< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), +) -> Vec +{ + let __start0 = __1.0; + let __end0 = __1.2; + let __temp0 = __action358( + mode, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action216( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action640< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), +) -> Vec +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action359( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action216( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action641< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, Vec, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __2.0; + let __end0 = __2.2; + let __temp0 = __action358( + mode, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action207( + mode, + __0, + __1, + __temp0, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action642< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, Vec, TextSize), + __2: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __1.2; + let __end0 = __2.0; + let __temp0 = __action359( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action207( + mode, + __0, + __1, + __temp0, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action643< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, TextSize, TextSize), +) -> Vec +{ + let __start0 = __3.0; + let __end0 = __3.2; + let __temp0 = __action358( + mode, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action172( + mode, + __0, + __1, + __2, + __temp0, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action644< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, TextSize, TextSize), +) -> Vec +{ + let __start0 = __2.2; + let __end0 = __3.0; + let __temp0 = __action359( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action172( + mode, + __0, + __1, + __2, + __temp0, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action645< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, Vec, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), +) -> Vec +{ + let __start0 = __2.0; + let __end0 = __2.2; + let __temp0 = __action358( + mode, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action157( + mode, + __0, + __1, + __temp0, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action646< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, Vec, TextSize), + __2: (TextSize, token::Tok, TextSize), +) -> Vec +{ + let __start0 = __1.2; + let __end0 = __2.0; + let __temp0 = __action359( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action157( + mode, + __0, + __1, + __temp0, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action647< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, core::option::Option>, TextSize), + __2: (TextSize, ast::WithItem, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), +) -> Vec +{ + let __start0 = __4.0; + let __end0 = __4.2; + let __temp0 = __action358( + mode, + __4, + ); + let __temp0 = (__start0, __temp0, __end0); + __action158( + mode, + __0, + __1, + __2, + __3, + __temp0, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action648< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, core::option::Option>, TextSize), + __2: (TextSize, ast::WithItem, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), +) -> Vec +{ + let __start0 = __3.2; + let __end0 = __4.0; + let __temp0 = __action359( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action158( + mode, + __0, + __1, + __2, + __3, + __temp0, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action649< +>( + mode: Mode, + __0: (TextSize, ast::Suite, TextSize), + __1: (TextSize, alloc::vec::Vec, TextSize), + __2: (TextSize, ast::Stmt, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, token::Tok, TextSize), +) -> ast::Suite +{ + let __start0 = __3.0; + let __end0 = __3.2; + let __temp0 = __action382( + mode, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action6( + mode, + __0, + __1, + __2, + __temp0, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action650< +>( + mode: Mode, + __0: (TextSize, ast::Suite, TextSize), + __1: (TextSize, alloc::vec::Vec, TextSize), + __2: (TextSize, ast::Stmt, TextSize), + __3: (TextSize, token::Tok, TextSize), +) -> ast::Suite +{ + let __start0 = __2.2; + let __end0 = __3.0; + let __temp0 = __action383( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action6( + mode, + __0, + __1, + __2, + __temp0, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action651< +>( + mode: Mode, + __0: (TextSize, alloc::vec::Vec, TextSize), + __1: (TextSize, ast::Stmt, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), +) -> Vec +{ + let __start0 = __2.0; + let __end0 = __2.2; + let __temp0 = __action382( + mode, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action10( + mode, + __0, + __1, + __temp0, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action652< +>( + mode: Mode, + __0: (TextSize, alloc::vec::Vec, TextSize), + __1: (TextSize, ast::Stmt, TextSize), + __2: (TextSize, token::Tok, TextSize), +) -> Vec +{ + let __start0 = __1.2; + let __end0 = __2.0; + let __temp0 = __action383( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action10( + mode, + __0, + __1, + __temp0, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action653< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, alloc::vec::Vec, TextSize), + __2: (TextSize, ast::Stmt, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, token::Tok, TextSize), +) -> Vec +{ + let __start0 = __3.0; + let __end0 = __3.2; + let __temp0 = __action382( + mode, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action13( + mode, + __0, + __1, + __2, + __temp0, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action654< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, alloc::vec::Vec, TextSize), + __2: (TextSize, ast::Stmt, TextSize), + __3: (TextSize, token::Tok, TextSize), +) -> Vec +{ + let __start0 = __2.2; + let __end0 = __3.0; + let __temp0 = __action383( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action13( + mode, + __0, + __1, + __2, + __temp0, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action655< +>( + mode: Mode, + __0: (TextSize, alloc::vec::Vec, TextSize), + __1: (TextSize, ast::Stmt, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), +) -> ast::Suite +{ + let __start0 = __2.0; + let __end0 = __2.2; + let __temp0 = __action382( + mode, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action8( + mode, + __0, + __1, + __temp0, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action656< +>( + mode: Mode, + __0: (TextSize, alloc::vec::Vec, TextSize), + __1: (TextSize, ast::Stmt, TextSize), + __2: (TextSize, token::Tok, TextSize), +) -> ast::Suite +{ + let __start0 = __1.2; + let __end0 = __2.0; + let __temp0 = __action383( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action8( + mode, + __0, + __1, + __temp0, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action657< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Expr, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, ast::Expr, TextSize), + __6: (TextSize, token::Tok, TextSize), + __7: (TextSize, ast::Suite, TextSize), + __8: (TextSize, core::option::Option, TextSize), +) -> ast::Stmt +{ + let __start0 = __1.0; + let __end0 = __1.2; + let __temp0 = __action315( + mode, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action148( + mode, + __0, + __temp0, + __2, + __3, + __4, + __5, + __6, + __7, + __8, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action658< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Expr, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, ast::Expr, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, ast::Suite, TextSize), + __7: (TextSize, core::option::Option, TextSize), +) -> ast::Stmt +{ + let __start0 = __0.2; + let __end0 = __1.0; + let __temp0 = __action316( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action148( + mode, + __0, + __temp0, + __1, + __2, + __3, + __4, + __5, + __6, + __7, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action659< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, alloc::vec::Vec, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, ast::Identifier, TextSize), + __5: (TextSize, core::option::Option>, TextSize), + __6: (TextSize, ast::Arguments, TextSize), + __7: (TextSize, core::option::Option, TextSize), + __8: (TextSize, token::Tok, TextSize), + __9: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __2.0; + let __end0 = __2.2; + let __temp0 = __action315( + mode, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action162( + mode, + __0, + __1, + __temp0, + __3, + __4, + __5, + __6, + __7, + __8, + __9, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action660< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, alloc::vec::Vec, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Identifier, TextSize), + __4: (TextSize, core::option::Option>, TextSize), + __5: (TextSize, ast::Arguments, TextSize), + __6: (TextSize, core::option::Option, TextSize), + __7: (TextSize, token::Tok, TextSize), + __8: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __1.2; + let __end0 = __2.0; + let __temp0 = __action316( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action162( + mode, + __0, + __1, + __temp0, + __2, + __3, + __4, + __5, + __6, + __7, + __8, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action661< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Expr, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, ast::Expr, TextSize), + __6: (TextSize, alloc::vec::Vec, TextSize), + __7: (TextSize, TextSize, TextSize), +) -> ast::Comprehension +{ + let __start0 = __1.0; + let __end0 = __1.2; + let __temp0 = __action315( + mode, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action224( + mode, + __0, + __temp0, + __2, + __3, + __4, + __5, + __6, + __7, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action662< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Expr, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, ast::Expr, TextSize), + __5: (TextSize, alloc::vec::Vec, TextSize), + __6: (TextSize, TextSize, TextSize), +) -> ast::Comprehension +{ + let __start0 = __0.2; + let __end0 = __1.0; + let __temp0 = __action316( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action224( + mode, + __0, + __temp0, + __1, + __2, + __3, + __4, + __5, + __6, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action663< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __1.0; + let __end0 = __1.2; + let __temp0 = __action315( + mode, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action156( + mode, + __0, + __temp0, + __2, + __3, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action664< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __0.2; + let __end0 = __1.0; + let __temp0 = __action316( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action156( + mode, + __0, + __temp0, + __1, + __2, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action665< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ArgumentList, TextSize), + __2: (TextSize, token::Tok, TextSize), +) -> core::option::Option<(token::Tok, ArgumentList, token::Tok)> +{ + let __start0 = __0.0; + let __end0 = __2.2; + let __temp0 = __action269( + mode, + __0, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action267( + mode, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action666< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, alloc::vec::Vec, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Identifier, TextSize), + __4: (TextSize, core::option::Option>, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, ArgumentList, TextSize), + __7: (TextSize, token::Tok, TextSize), + __8: (TextSize, token::Tok, TextSize), + __9: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __5.0; + let __end0 = __7.2; + let __temp0 = __action665( + mode, + __5, + __6, + __7, + ); + let __temp0 = (__start0, __temp0, __end0); + __action171( + mode, + __0, + __1, + __2, + __3, + __4, + __temp0, + __8, + __9, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action667< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, alloc::vec::Vec, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Identifier, TextSize), + __4: (TextSize, core::option::Option>, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __4.2; + let __end0 = __5.0; + let __temp0 = __action268( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action171( + mode, + __0, + __1, + __2, + __3, + __4, + __temp0, + __5, + __6, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action668< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, Option>, TextSize), +) -> core::option::Option>> +{ + let __start0 = __0.0; + let __end0 = __1.2; + let __temp0 = __action412( + mode, + __0, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action466( + mode, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action669< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, (Vec, Vec), TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, Option>, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __2.0; + let __end0 = __3.2; + let __temp0 = __action412( + mode, + __2, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action621( + mode, + __0, + __1, + __temp0, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action670< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, (Vec, Vec), TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, Option>, TextSize), + __4: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __2.0; + let __end0 = __3.2; + let __temp0 = __action412( + mode, + __2, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action622( + mode, + __0, + __1, + __temp0, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action671< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, core::option::Option, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, Option>, TextSize), +) -> Result<(Option>, Vec, Option>),__lalrpop_util::ParseError> +{ + let __start0 = __4.0; + let __end0 = __5.2; + let __temp0 = __action668( + mode, + __4, + __5, + ); + let __temp0 = (__start0, __temp0, __end0); + __action417( + mode, + __0, + __1, + __2, + __3, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action672< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, core::option::Option, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), +) -> Result<(Option>, Vec, Option>),__lalrpop_util::ParseError> +{ + let __start0 = __3.2; + let __end0 = __3.2; + let __temp0 = __action467( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action417( + mode, + __0, + __1, + __2, + __3, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action673< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, Option>, TextSize), +) -> core::option::Option>> +{ + let __start0 = __0.0; + let __end0 = __1.2; + let __temp0 = __action420( + mode, + __0, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action455( + mode, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action674< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, (Vec, Vec), TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, Option>, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __2.0; + let __end0 = __3.2; + let __temp0 = __action420( + mode, + __2, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action629( + mode, + __0, + __1, + __temp0, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action675< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, (Vec, Vec), TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, Option>, TextSize), + __4: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __2.0; + let __end0 = __3.2; + let __temp0 = __action420( + mode, + __2, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action630( + mode, + __0, + __1, + __temp0, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action676< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, core::option::Option, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, Option>, TextSize), +) -> Result<(Option>, Vec, Option>),__lalrpop_util::ParseError> +{ + let __start0 = __4.0; + let __end0 = __5.2; + let __temp0 = __action673( + mode, + __4, + __5, + ); + let __temp0 = (__start0, __temp0, __end0); + __action425( + mode, + __0, + __1, + __2, + __3, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action677< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, core::option::Option, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), +) -> Result<(Option>, Vec, Option>),__lalrpop_util::ParseError> +{ + let __start0 = __3.2; + let __end0 = __3.2; + let __temp0 = __action456( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action425( + mode, + __0, + __1, + __2, + __3, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action678< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::ArgWithDefault, TextSize), +) -> alloc::vec::Vec +{ + let __start0 = __0.0; + let __end0 = __1.2; + let __temp0 = __action470( + mode, + __0, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action481( + mode, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action679< +>( + mode: Mode, + __0: (TextSize, alloc::vec::Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::ArgWithDefault, TextSize), +) -> alloc::vec::Vec +{ + let __start0 = __1.0; + let __end0 = __2.2; + let __temp0 = __action470( + mode, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action482( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action680< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), +) -> (Vec, Vec) +{ + let __start0 = __2.2; + let __end0 = __2.2; + let __temp0 = __action468( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action419( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action681< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), +) -> (Vec, Vec) +{ + let __start0 = __3.0; + let __end0 = __3.2; + let __temp0 = __action469( + mode, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action419( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action682< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, core::option::Option, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, Option>, TextSize), +) -> Result<(Option>, Vec, Option>),__lalrpop_util::ParseError> +{ + let __start0 = __2.2; + let __end0 = __3.0; + let __temp0 = __action468( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action671( + mode, + __0, + __1, + __2, + __temp0, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action683< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, core::option::Option, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, Option>, TextSize), +) -> Result<(Option>, Vec, Option>),__lalrpop_util::ParseError> +{ + let __start0 = __3.0; + let __end0 = __3.2; + let __temp0 = __action469( + mode, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action671( + mode, + __0, + __1, + __2, + __temp0, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action684< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, core::option::Option, TextSize), +) -> Result<(Option>, Vec, Option>),__lalrpop_util::ParseError> +{ + let __start0 = __2.2; + let __end0 = __2.2; + let __temp0 = __action468( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action672( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action685< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, core::option::Option, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), +) -> Result<(Option>, Vec, Option>),__lalrpop_util::ParseError> +{ + let __start0 = __3.0; + let __end0 = __3.2; + let __temp0 = __action469( + mode, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action672( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action686< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::ArgWithDefault, TextSize), +) -> alloc::vec::Vec +{ + let __start0 = __0.0; + let __end0 = __1.2; + let __temp0 = __action459( + mode, + __0, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action483( + mode, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action687< +>( + mode: Mode, + __0: (TextSize, alloc::vec::Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::ArgWithDefault, TextSize), +) -> alloc::vec::Vec +{ + let __start0 = __1.0; + let __end0 = __2.2; + let __temp0 = __action459( + mode, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action484( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action688< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), +) -> (Vec, Vec) +{ + let __start0 = __2.2; + let __end0 = __2.2; + let __temp0 = __action457( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action427( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action689< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), +) -> (Vec, Vec) +{ + let __start0 = __3.0; + let __end0 = __3.2; + let __temp0 = __action458( + mode, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action427( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action690< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, core::option::Option, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, Option>, TextSize), +) -> Result<(Option>, Vec, Option>),__lalrpop_util::ParseError> +{ + let __start0 = __2.2; + let __end0 = __3.0; + let __temp0 = __action457( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action676( + mode, + __0, + __1, + __2, + __temp0, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action691< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, core::option::Option, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, Option>, TextSize), +) -> Result<(Option>, Vec, Option>),__lalrpop_util::ParseError> +{ + let __start0 = __3.0; + let __end0 = __3.2; + let __temp0 = __action458( + mode, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action676( + mode, + __0, + __1, + __2, + __temp0, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action692< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, core::option::Option, TextSize), +) -> Result<(Option>, Vec, Option>),__lalrpop_util::ParseError> +{ + let __start0 = __2.2; + let __end0 = __2.2; + let __temp0 = __action457( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action677( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action693< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, core::option::Option, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), +) -> Result<(Option>, Vec, Option>),__lalrpop_util::ParseError> +{ + let __start0 = __3.0; + let __end0 = __3.2; + let __temp0 = __action458( + mode, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action677( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action694< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Arg, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, Option>, TextSize), +) -> Result<(Option>, Vec, Option>),__lalrpop_util::ParseError> +{ + let __start0 = __2.0; + let __end0 = __2.2; + let __temp0 = __action473( + mode, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action682( + mode, + __0, + __1, + __temp0, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action695< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, Option>, TextSize), +) -> Result<(Option>, Vec, Option>),__lalrpop_util::ParseError> +{ + let __start0 = __1.2; + let __end0 = __2.0; + let __temp0 = __action474( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action682( + mode, + __0, + __1, + __temp0, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action696< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Arg, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, Option>, TextSize), +) -> Result<(Option>, Vec, Option>),__lalrpop_util::ParseError> +{ + let __start0 = __2.0; + let __end0 = __2.2; + let __temp0 = __action473( + mode, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action683( + mode, + __0, + __1, + __temp0, + __3, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action697< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, alloc::vec::Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, Option>, TextSize), +) -> Result<(Option>, Vec, Option>),__lalrpop_util::ParseError> +{ + let __start0 = __1.2; + let __end0 = __2.0; + let __temp0 = __action474( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action683( + mode, + __0, + __1, + __temp0, + __2, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action698< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Arg, TextSize), +) -> Result<(Option>, Vec, Option>),__lalrpop_util::ParseError> +{ + let __start0 = __2.0; + let __end0 = __2.2; + let __temp0 = __action473( + mode, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action684( + mode, + __0, + __1, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action699< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, token::Tok, TextSize), +) -> Result<(Option>, Vec, Option>),__lalrpop_util::ParseError> +{ + let __start0 = __1.2; + let __end0 = __1.2; + let __temp0 = __action474( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action684( + mode, + __0, + __1, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action700< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Arg, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), +) -> Result<(Option>, Vec, Option>),__lalrpop_util::ParseError> +{ + let __start0 = __2.0; + let __end0 = __2.2; + let __temp0 = __action473( + mode, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action685( + mode, + __0, + __1, + __temp0, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action701< +>( + mode: Mode, + __0: (TextSize, TextSize, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, alloc::vec::Vec, TextSize), +) -> Result<(Option>, Vec, Option>),__lalrpop_util::ParseError> +{ + let __start0 = __1.2; + let __end0 = __2.0; + let __temp0 = __action474( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action685( + mode, + __0, + __1, + __temp0, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action702< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Suite, TextSize), +) -> (TextSize, ast::Expr, ast::Suite) +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action325( + mode, + __temp0, + __0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action703< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Suite, TextSize), +) -> (TextSize, ast::Suite) +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action322( + mode, + __temp0, + __0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action704< +>( + mode: Mode, + __0: (TextSize, (String, StringKind, bool), TextSize), + __1: (TextSize, TextSize, TextSize), +) -> (TextSize, (String, StringKind, bool), TextSize) +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action334( + mode, + __temp0, + __0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action705< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, ast::Operator, TextSize), + __2: (TextSize, ast::Expr, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action113( + mode, + __temp0, + __0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action706< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Expr, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action451( + mode, + __temp0, + __0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action707< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Expr, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action510( + mode, + __temp0, + __0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action708< +>( + mode: Mode, + __0: (TextSize, alloc::vec::Vec, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action435( + mode, + __temp0, + __0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action709< +>( + mode: Mode, + __0: (TextSize, alloc::vec::Vec, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action479( + mode, + __temp0, + __0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action710< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, ast::Operator, TextSize), + __2: (TextSize, ast::Expr, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action492( + mode, + __temp0, + __0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action711< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, ast::Operator, TextSize), + __2: (TextSize, ast::Expr, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action537( + mode, + __temp0, + __0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action712< +>( + mode: Mode, + __0: (TextSize, ast::Pattern, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Identifier, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action94( + mode, + __temp0, + __0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action713< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, core::option::Option, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> ast::Stmt +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action73( + mode, + __temp0, + __0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action714< +>( + mode: Mode, + __0: (TextSize, alloc::vec::Vec<(TextSize, (String, StringKind, bool), TextSize)>, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action518( + mode, + __temp0, + __0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action715< +>( + mode: Mode, + __0: (TextSize, ast::Constant, TextSize), + __1: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action519( + mode, + __temp0, + __0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action716< +>( + mode: Mode, + __0: (TextSize, ast::Identifier, TextSize), + __1: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action520( + mode, + __temp0, + __0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action717< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, core::option::Option>, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action521( + mode, + __temp0, + __0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action718< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action522( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action719< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, Vec, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action581( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action720< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, Vec, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action582( + mode, + __temp0, + __0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action721< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, core::option::Option>, TextSize), + __2: (TextSize, ast::Expr, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action583( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + __5, + __6, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action722< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, core::option::Option>, TextSize), + __2: (TextSize, ast::Expr, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action584( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action723< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action525( + mode, + __temp0, + __0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action724< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action527( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action725< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Expr, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __0.2; + let __end0 = __1.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action528( + mode, + __0, + __temp0, + __1, + __2, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action726< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, core::option::Option>, ast::Expr)>>, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action529( + mode, + __temp0, + __0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action727< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, (ast::Expr, ast::Expr), TextSize), + __2: (TextSize, Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action530( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action728< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, Vec, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action531( + mode, + __temp0, + __0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action729< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action532( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action730< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action533( + mode, + __temp0, + __0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action731< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action534( + mode, + __temp0, + __0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action732< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action535( + mode, + __temp0, + __0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action733< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action536( + mode, + __temp0, + __0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action734< +>( + mode: Mode, + __0: (TextSize, alloc::vec::Vec<(TextSize, (String, StringKind, bool), TextSize)>, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action563( + mode, + __temp0, + __0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action735< +>( + mode: Mode, + __0: (TextSize, ast::Constant, TextSize), + __1: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action564( + mode, + __temp0, + __0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action736< +>( + mode: Mode, + __0: (TextSize, ast::Identifier, TextSize), + __1: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action565( + mode, + __temp0, + __0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action737< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, core::option::Option>, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action566( + mode, + __temp0, + __0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action738< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action567( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action739< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, core::option::Option>, TextSize), + __2: (TextSize, ast::Expr, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action585( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + __5, + __6, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action740< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, core::option::Option>, TextSize), + __2: (TextSize, ast::Expr, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action586( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action741< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action569( + mode, + __temp0, + __0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action742< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action571( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action743< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Expr, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __0.2; + let __end0 = __1.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action572( + mode, + __0, + __temp0, + __1, + __2, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action744< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, core::option::Option>, ast::Expr)>>, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action573( + mode, + __temp0, + __0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action745< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, (ast::Expr, ast::Expr), TextSize), + __2: (TextSize, Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action574( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action746< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, Vec, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action575( + mode, + __temp0, + __0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action747< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action576( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action748< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action577( + mode, + __temp0, + __0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action749< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action578( + mode, + __temp0, + __0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action750< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action579( + mode, + __temp0, + __0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action751< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action580( + mode, + __temp0, + __0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action752< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ArgumentList, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action515( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action753< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Expr, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action516( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action754< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Identifier, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action517( + mode, + __temp0, + __0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action755< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ArgumentList, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action560( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action756< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Expr, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action561( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action757< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Identifier, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action562( + mode, + __temp0, + __0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action758< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action508( + mode, + __temp0, + __0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action759< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action557( + mode, + __temp0, + __0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action760< +>( + mode: Mode, + __0: (TextSize, ast::Identifier, TextSize), + __1: (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action120( + mode, + __temp0, + __0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action761< +>( + mode: Mode, + __0: (TextSize, alloc::vec::Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Identifier, TextSize), + __3: (TextSize, core::option::Option>, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, ArgumentList, TextSize), + __6: (TextSize, token::Tok, TextSize), + __7: (TextSize, token::Tok, TextSize), + __8: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action666( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + __5, + __6, + __7, + __8, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action762< +>( + mode: Mode, + __0: (TextSize, alloc::vec::Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Identifier, TextSize), + __3: (TextSize, core::option::Option>, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action667( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action763< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, Vec<(ast::Identifier, ast::Pattern)>, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, token::Tok, TextSize), + __7: (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action587( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + __5, + __6, + __7, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action764< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, Vec<(ast::Identifier, ast::Pattern)>, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action588( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + __5, + __6, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action765< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action589( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action766< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action590( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action767< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, Vec<(ast::Identifier, ast::Pattern)>, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action591( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action768< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, Vec<(ast::Identifier, ast::Pattern)>, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action592( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action769< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action141( + mode, + __temp0, + __0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action770< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, Vec<(ast::Identifier, ast::Pattern)>, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, token::Tok, TextSize), + __7: (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action593( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + __5, + __6, + __7, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action771< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, Vec<(ast::Identifier, ast::Pattern)>, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action594( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + __5, + __6, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action772< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action595( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action773< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action596( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action774< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, Vec<(ast::Identifier, ast::Pattern)>, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action597( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action775< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, Vec<(ast::Identifier, ast::Pattern)>, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action598( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action776< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action145( + mode, + __temp0, + __0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action777< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, alloc::vec::Vec<(ast::CmpOp, ast::Expr)>, TextSize), + __2: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action487( + mode, + __temp0, + __0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action778< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, alloc::vec::Vec<(ast::CmpOp, ast::Expr)>, TextSize), + __2: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action496( + mode, + __temp0, + __0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action779< +>( + mode: Mode, + __0: (TextSize, ast::Constant, TextSize), + __1: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action110( + mode, + __temp0, + __0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action780< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action112( + mode, + __temp0, + __0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action781< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, TextSize, TextSize), + __3: (TextSize, token::Tok, TextSize), +) -> ast::Decorator +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action176( + mode, + __temp0, + __0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action782< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, Vec, TextSize), + __2: (TextSize, TextSize, TextSize), +) -> ast::Stmt +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action25( + mode, + __temp0, + __0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action783< +>( + mode: Mode, + __0: (TextSize, String, TextSize), + __1: (TextSize, TextSize, TextSize), +) -> ast::Identifier +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action69( + mode, + __temp0, + __0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action784< +>( + mode: Mode, + __0: (TextSize, String, TextSize), + __1: (TextSize, alloc::vec::Vec<(token::Tok, ast::Identifier)>, TextSize), + __2: (TextSize, TextSize, TextSize), +) -> ast::Identifier +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action70( + mode, + __temp0, + __0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action785< +>( + mode: Mode, + __0: (TextSize, ast::Identifier, TextSize), + __1: (TextSize, core::option::Option, TextSize), + __2: (TextSize, TextSize, TextSize), +) -> ast::Arg +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action170( + mode, + __temp0, + __0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action786< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, core::option::Option, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Suite, TextSize), +) -> ast::ExceptHandler +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action154( + mode, + __temp0, + __0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action787< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, (ast::Expr, ast::Identifier), TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Suite, TextSize), +) -> ast::ExceptHandler +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action155( + mode, + __temp0, + __0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action788< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Expr, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, ast::Suite, TextSize), +) -> ast::ExceptHandler +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action152( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action789< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, (ast::Expr, ast::Identifier), TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, ast::Suite, TextSize), +) -> ast::ExceptHandler +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action153( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action790< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Expr, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action249( + mode, + __temp0, + __0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action791< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Expr, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action502( + mode, + __temp0, + __0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action792< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, alloc::vec::Vec, TextSize), + __2: (TextSize, TextSize, TextSize), +) -> ast::Stmt +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action26( + mode, + __temp0, + __0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action793< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, ast::Operator, TextSize), + __2: (TextSize, ast::Expr, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> ast::Stmt +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action27( + mode, + __temp0, + __0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action794< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Expr, TextSize), + __3: (TextSize, core::option::Option, TextSize), + __4: (TextSize, TextSize, TextSize), +) -> ast::Stmt +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action28( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action795< +>( + mode: Mode, + __0: (TextSize, ast::UnaryOp, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action500( + mode, + __temp0, + __0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action796< +>( + mode: Mode, + __0: (TextSize, ast::UnaryOp, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action553( + mode, + __temp0, + __0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action797< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, TextSize, TextSize), +) -> ast::Stmt +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action53( + mode, + __temp0, + __0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action798< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, TextSize, TextSize), +) -> ast::Stmt +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action54( + mode, + __temp0, + __0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action799< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, core::option::Option, TextSize), + __2: (TextSize, TextSize, TextSize), +) -> ast::Stmt +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action55( + mode, + __temp0, + __0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action800< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, TextSize, TextSize), +) -> ast::Stmt +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action56( + mode, + __temp0, + __0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action801< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Expr, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, ast::Expr, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, ast::Suite, TextSize), + __7: (TextSize, core::option::Option, TextSize), +) -> ast::Stmt +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action657( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + __5, + __6, + __7, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action802< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Expr, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, ast::Suite, TextSize), + __6: (TextSize, core::option::Option, TextSize), +) -> ast::Stmt +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action658( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + __5, + __6, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action803< +>( + mode: Mode, + __0: (TextSize, alloc::vec::Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Identifier, TextSize), + __4: (TextSize, core::option::Option>, TextSize), + __5: (TextSize, ast::Arguments, TextSize), + __6: (TextSize, core::option::Option, TextSize), + __7: (TextSize, token::Tok, TextSize), + __8: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action659( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + __5, + __6, + __7, + __8, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action804< +>( + mode: Mode, + __0: (TextSize, alloc::vec::Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Identifier, TextSize), + __3: (TextSize, core::option::Option>, TextSize), + __4: (TextSize, ast::Arguments, TextSize), + __5: (TextSize, core::option::Option, TextSize), + __6: (TextSize, token::Tok, TextSize), + __7: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action660( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + __5, + __6, + __7, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action805< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, core::option::Option>, TextSize), + __2: (TextSize, TextSize, TextSize), +) -> (Option<(TextSize, TextSize, Option)>, ast::Expr) +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action228( + mode, + __temp0, + __0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action806< +>( + mode: Mode, + __0: (TextSize, ast::Identifier, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Expr, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> (Option<(TextSize, TextSize, Option)>, ast::Expr) +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action229( + mode, + __temp0, + __0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action807< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, TextSize, TextSize), +) -> (Option<(TextSize, TextSize, Option)>, ast::Expr) +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action230( + mode, + __temp0, + __0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action808< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, TextSize, TextSize), +) -> (Option<(TextSize, TextSize, Option)>, ast::Expr) +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action231( + mode, + __temp0, + __0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action809< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action603( + mode, + __temp0, + __0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action810< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action604( + mode, + __temp0, + __0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action811< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action605( + mode, + __temp0, + __0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action812< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action606( + mode, + __temp0, + __0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action813< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, Vec, TextSize), + __2: (TextSize, TextSize, TextSize), +) -> ast::Stmt +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action71( + mode, + __temp0, + __0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action814< +>( + mode: Mode, + __0: (TextSize, String, TextSize), + __1: (TextSize, TextSize, TextSize), +) -> ast::Identifier +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action235( + mode, + __temp0, + __0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action815< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Suite, TextSize), + __4: (TextSize, alloc::vec::Vec<(TextSize, ast::Expr, ast::Suite)>, TextSize), + __5: (TextSize, core::option::Option<(TextSize, ast::Suite)>, TextSize), +) -> ast::Stmt +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action146( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action816< +>( + mode: Mode, + __0: (TextSize, ast::Identifier, TextSize), + __1: (TextSize, core::option::Option, TextSize), + __2: (TextSize, TextSize, TextSize), +) -> ast::Alias +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action369( + mode, + __temp0, + __0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action817< +>( + mode: Mode, + __0: (TextSize, ast::Identifier, TextSize), + __1: (TextSize, core::option::Option, TextSize), + __2: (TextSize, TextSize, TextSize), +) -> ast::Alias +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action362( + mode, + __temp0, + __0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action818< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, TextSize, TextSize), +) -> Vec +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action66( + mode, + __temp0, + __0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action819< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, Vec, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, TextSize, TextSize), +) -> Vec +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action607( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action820< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, Vec, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> Vec +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action608( + mode, + __temp0, + __0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action821< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, TextSize, TextSize), +) -> Vec +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action68( + mode, + __temp0, + __0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action822< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, Vec, TextSize), + __2: (TextSize, TextSize, TextSize), +) -> ast::Stmt +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action60( + mode, + __temp0, + __0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action823< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, (Option, Option), TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, Vec, TextSize), + __4: (TextSize, TextSize, TextSize), +) -> ast::Stmt +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action61( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action824< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, core::option::Option, TextSize), + __2: (TextSize, TextSize, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, ast::Expr, TextSize), + __5: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __start1 = __0.2; + let __end1 = __1.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + let __temp1 = __action391( + mode, + &__start1, + &__end1, + ); + let __temp1 = (__start1, __temp1, __end1); + __action182( + mode, + __temp0, + __0, + __temp1, + __1, + __2, + __3, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action825< +>( + mode: Mode, + __0: (TextSize, (MagicKind, String), TextSize), + __1: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action75( + mode, + __temp0, + __0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action826< +>( + mode: Mode, + __0: (TextSize, (MagicKind, String), TextSize), + __1: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action74( + mode, + __temp0, + __0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action827< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action114( + mode, + __temp0, + __0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action828< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action115( + mode, + __temp0, + __0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action829< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action116( + mode, + __temp0, + __0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action830< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action117( + mode, + __temp0, + __0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action831< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action118( + mode, + __temp0, + __0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action832< +>( + mode: Mode, + __0: (TextSize, alloc::vec::Vec<(TextSize, (String, StringKind, bool), TextSize)>, TextSize), + __1: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action119( + mode, + __temp0, + __0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action833< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action128( + mode, + __temp0, + __0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action834< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action129( + mode, + __temp0, + __0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action835< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action130( + mode, + __temp0, + __0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action836< +>( + mode: Mode, + __0: (TextSize, alloc::vec::Vec<(TextSize, (String, StringKind, bool), TextSize)>, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action131( + mode, + __temp0, + __0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action837< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action133( + mode, + __temp0, + __0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action838< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, Vec<(ast::Expr, ast::Pattern)>, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action611( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action839< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, Vec<(ast::Expr, ast::Pattern)>, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action612( + mode, + __temp0, + __0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action840< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Identifier, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action613( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action841< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Identifier, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action614( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action842< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, Vec<(ast::Expr, ast::Pattern)>, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, ast::Identifier, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, token::Tok, TextSize), + __7: (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action615( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + __5, + __6, + __7, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action843< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, Vec<(ast::Expr, ast::Pattern)>, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, ast::Identifier, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action616( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + __5, + __6, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action844< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Pattern, TextSize), + __2: (TextSize, core::option::Option, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, ast::Suite, TextSize), +) -> ast::MatchCase +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action87( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action845< +>( + mode: Mode, + __0: (TextSize, ast::Identifier, TextSize), + __1: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action121( + mode, + __temp0, + __0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action846< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Identifier, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action122( + mode, + __temp0, + __0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action847< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Identifier, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action123( + mode, + __temp0, + __0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action848< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, alloc::vec::Vec, TextSize), + __6: (TextSize, token::Tok, TextSize), +) -> ast::Stmt +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action84( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + __5, + __6, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action849< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, alloc::vec::Vec, TextSize), + __7: (TextSize, token::Tok, TextSize), +) -> ast::Stmt +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action85( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + __5, + __6, + __7, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action850< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, Vec, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, alloc::vec::Vec, TextSize), + __7: (TextSize, token::Tok, TextSize), +) -> ast::Stmt +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action617( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + __5, + __6, + __7, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action851< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, Vec, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, alloc::vec::Vec, TextSize), + __6: (TextSize, token::Tok, TextSize), +) -> ast::Stmt +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action618( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + __5, + __6, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action852< +>( + mode: Mode, + __0: (TextSize, ast::Identifier, TextSize), + __1: (TextSize, TextSize, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action181( + mode, + __temp0, + __0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action853< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, Vec, TextSize), + __2: (TextSize, TextSize, TextSize), +) -> ast::Stmt +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action72( + mode, + __temp0, + __0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action854< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action449( + mode, + __temp0, + __0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action855< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action494( + mode, + __temp0, + __0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action856< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action96( + mode, + __temp0, + __0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action857< +>( + mode: Mode, + __0: (TextSize, alloc::vec::Vec, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action241( + mode, + __temp0, + __0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action858< +>( + mode: Mode, + __0: (TextSize, alloc::vec::Vec, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action477( + mode, + __temp0, + __0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action859< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, core::option::Option<(Option>, Vec, Option>)>, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action619( + mode, + __temp0, + __0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action860< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, core::option::Option<(Option>, Vec, Option>)>, TextSize), + __2: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action620( + mode, + __temp0, + __0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action861< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, Option>, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action669( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action862< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, Option>, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action670( + mode, + __temp0, + __0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action863< +>( + mode: Mode, + __0: (TextSize, (Option>, Vec, Option>), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, TextSize, TextSize), +) -> ast::Arguments +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action623( + mode, + __temp0, + __0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action864< +>( + mode: Mode, + __0: (TextSize, (Option>, Vec, Option>), TextSize), + __1: (TextSize, TextSize, TextSize), +) -> ast::Arguments +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action624( + mode, + __temp0, + __0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action865< +>( + mode: Mode, + __0: (TextSize, Option>, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, TextSize, TextSize), +) -> ast::Arguments +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action625( + mode, + __temp0, + __0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action866< +>( + mode: Mode, + __0: (TextSize, Option>, TextSize), + __1: (TextSize, TextSize, TextSize), +) -> ast::Arguments +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action626( + mode, + __temp0, + __0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action867< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, core::option::Option<(Option>, Vec, Option>)>, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action627( + mode, + __temp0, + __0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action868< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, core::option::Option<(Option>, Vec, Option>)>, TextSize), + __2: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action628( + mode, + __temp0, + __0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action869< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, Option>, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action674( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action870< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, Option>, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action675( + mode, + __temp0, + __0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action871< +>( + mode: Mode, + __0: (TextSize, (Option>, Vec, Option>), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, TextSize, TextSize), +) -> ast::Arguments +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action631( + mode, + __temp0, + __0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action872< +>( + mode: Mode, + __0: (TextSize, (Option>, Vec, Option>), TextSize), + __1: (TextSize, TextSize, TextSize), +) -> ast::Arguments +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action632( + mode, + __temp0, + __0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action873< +>( + mode: Mode, + __0: (TextSize, Option>, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, TextSize, TextSize), +) -> ast::Arguments +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action633( + mode, + __temp0, + __0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action874< +>( + mode: Mode, + __0: (TextSize, Option>, TextSize), + __1: (TextSize, TextSize, TextSize), +) -> ast::Arguments +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action634( + mode, + __temp0, + __0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action875< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Arg, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, Option>, TextSize), +) -> Result<(Option>, Vec, Option>),__lalrpop_util::ParseError> +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action694( + mode, + __temp0, + __0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action876< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, Option>, TextSize), +) -> Result<(Option>, Vec, Option>),__lalrpop_util::ParseError> +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action695( + mode, + __temp0, + __0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action877< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Arg, TextSize), + __2: (TextSize, alloc::vec::Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, Option>, TextSize), +) -> Result<(Option>, Vec, Option>),__lalrpop_util::ParseError> +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action696( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action878< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, alloc::vec::Vec, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, Option>, TextSize), +) -> Result<(Option>, Vec, Option>),__lalrpop_util::ParseError> +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action697( + mode, + __temp0, + __0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action879< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Arg, TextSize), +) -> Result<(Option>, Vec, Option>),__lalrpop_util::ParseError> +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action698( + mode, + __temp0, + __0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action880< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), +) -> Result<(Option>, Vec, Option>),__lalrpop_util::ParseError> +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action699( + mode, + __temp0, + __0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action881< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Arg, TextSize), + __2: (TextSize, alloc::vec::Vec, TextSize), +) -> Result<(Option>, Vec, Option>),__lalrpop_util::ParseError> +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action700( + mode, + __temp0, + __0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action882< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, alloc::vec::Vec, TextSize), +) -> Result<(Option>, Vec, Option>),__lalrpop_util::ParseError> +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action701( + mode, + __temp0, + __0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action883< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, core::option::Option, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, Option>, TextSize), +) -> Result<(Option>, Vec, Option>),__lalrpop_util::ParseError> +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action690( + mode, + __temp0, + __0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action884< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, core::option::Option, TextSize), + __2: (TextSize, alloc::vec::Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, Option>, TextSize), +) -> Result<(Option>, Vec, Option>),__lalrpop_util::ParseError> +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action691( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action885< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, core::option::Option, TextSize), +) -> Result<(Option>, Vec, Option>),__lalrpop_util::ParseError> +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action692( + mode, + __temp0, + __0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action886< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, core::option::Option, TextSize), + __2: (TextSize, alloc::vec::Vec, TextSize), +) -> Result<(Option>, Vec, Option>),__lalrpop_util::ParseError> +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action693( + mode, + __temp0, + __0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action887< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, core::option::Option, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action165( + mode, + __temp0, + __0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action888< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, TextSize, TextSize), +) -> ast::Stmt +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action24( + mode, + __temp0, + __0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action889< +>( + mode: Mode, + __0: (TextSize, ast::Pattern, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action89( + mode, + __temp0, + __0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action890< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action635( + mode, + __temp0, + __0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action891< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action636( + mode, + __temp0, + __0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action892< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Expr, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action506( + mode, + __temp0, + __0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action893< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Expr, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action555( + mode, + __temp0, + __0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action894< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, TextSize, TextSize), +) -> ast::Stmt +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action58( + mode, + __temp0, + __0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action895< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, core::option::Option, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> ast::Stmt +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action59( + mode, + __temp0, + __0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action896< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Pattern, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action104( + mode, + __temp0, + __0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action897< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action105( + mode, + __temp0, + __0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action898< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Pattern, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action106( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action899< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, alloc::vec::Vec, TextSize), + __2: (TextSize, ast::Pattern, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action637( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action900< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, alloc::vec::Vec, TextSize), + __2: (TextSize, ast::Pattern, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action638( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action901< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, Vec, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action108( + mode, + __temp0, + __0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action902< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, ast::Operator, TextSize), + __2: (TextSize, ast::Expr, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action485( + mode, + __temp0, + __0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action903< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, ast::Operator, TextSize), + __2: (TextSize, ast::Expr, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action512( + mode, + __temp0, + __0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action904< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Expr, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, ast::Expr, TextSize), + __5: (TextSize, alloc::vec::Vec, TextSize), + __6: (TextSize, TextSize, TextSize), +) -> ast::Comprehension +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action661( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + __5, + __6, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action905< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Expr, TextSize), + __4: (TextSize, alloc::vec::Vec, TextSize), + __5: (TextSize, TextSize, TextSize), +) -> ast::Comprehension +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action662( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action906< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, core::option::Option, TextSize), +) -> Option +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action210( + mode, + __temp0, + __0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action907< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action222( + mode, + __temp0, + __0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action908< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Identifier, TextSize), + __2: (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action109( + mode, + __temp0, + __0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action909< +>( + mode: Mode, + __0: (TextSize, ast::Identifier, TextSize), + __1: (TextSize, core::option::Option, TextSize), + __2: (TextSize, TextSize, TextSize), +) -> ast::Arg +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action169( + mode, + __temp0, + __0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action910< +>( + mode: Mode, + __0: (TextSize, ast::Identifier, TextSize), + __1: (TextSize, TextSize, TextSize), +) -> ast::Arg +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action167( + mode, + __temp0, + __0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action911< +>( + mode: Mode, + __0: (TextSize, core::option::Option, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, core::option::Option, TextSize), + __3: (TextSize, core::option::Option>, TextSize), + __4: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action209( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action912< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action205( + mode, + __temp0, + __0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action913< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action206( + mode, + __temp0, + __0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action914< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action641( + mode, + __temp0, + __0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action915< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action642( + mode, + __temp0, + __0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action916< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, ast::Operator, TextSize), + __2: (TextSize, ast::Expr, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action498( + mode, + __temp0, + __0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action917< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, ast::Operator, TextSize), + __2: (TextSize, ast::Expr, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action539( + mode, + __temp0, + __0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action918< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Expr, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, ast::Expr, TextSize), + __5: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action377( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action919< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Expr, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, ast::Expr, TextSize), + __5: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action407( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action920< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Suite, TextSize), + __2: (TextSize, TextSize, TextSize), +) -> ast::Mod +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1( + mode, + __temp0, + __0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action921< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Suite, TextSize), + __2: (TextSize, TextSize, TextSize), +) -> ast::Mod +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action2( + mode, + __temp0, + __0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action922< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, alloc::vec::Vec, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> ast::Mod +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action3( + mode, + __temp0, + __0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action923< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Suite, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, core::option::Option, TextSize), + __5: (TextSize, core::option::Option, TextSize), + __6: (TextSize, TextSize, TextSize), +) -> ast::Stmt +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action149( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + __5, + __6, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action924< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Suite, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, core::option::Option, TextSize), + __5: (TextSize, core::option::Option, TextSize), + __6: (TextSize, TextSize, TextSize), +) -> ast::Stmt +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action150( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + __5, + __6, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action925< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Suite, TextSize), + __3: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action151( + mode, + __temp0, + __0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action926< +>( + mode: Mode, + __0: (TextSize, ast::Identifier, TextSize), + __1: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action163( + mode, + __temp0, + __0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action927< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, core::option::Option>, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, ast::Expr, TextSize), + __5: (TextSize, TextSize, TextSize), +) -> ast::Stmt +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action164( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action928< +>( + mode: Mode, + __0: (TextSize, ast::Identifier, TextSize), + __1: (TextSize, core::option::Option, TextSize), + __2: (TextSize, TextSize, TextSize), +) -> ast::TypeParam +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action173( + mode, + __temp0, + __0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action929< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Identifier, TextSize), + __2: (TextSize, TextSize, TextSize), +) -> ast::TypeParam +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action174( + mode, + __temp0, + __0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action930< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Identifier, TextSize), + __2: (TextSize, TextSize, TextSize), +) -> ast::TypeParam +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action175( + mode, + __temp0, + __0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action931< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, Vec, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, TextSize, TextSize), +) -> Vec +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action643( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action932< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, Vec, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> Vec +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action644( + mode, + __temp0, + __0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action933< +>( + mode: Mode, + __0: (TextSize, ast::Identifier, TextSize), + __1: (TextSize, core::option::Option, TextSize), + __2: (TextSize, TextSize, TextSize), +) -> ast::ArgWithDefault +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action168( + mode, + __temp0, + __0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action934< +>( + mode: Mode, + __0: (TextSize, ast::Identifier, TextSize), + __1: (TextSize, TextSize, TextSize), +) -> ast::ArgWithDefault +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action166( + mode, + __temp0, + __0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action935< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, TextSize, TextSize), +) -> ast::Pattern +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action124( + mode, + __temp0, + __0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action936< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Suite, TextSize), + __4: (TextSize, core::option::Option, TextSize), +) -> ast::Stmt +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action147( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action937< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, TextSize, TextSize), +) -> ast::WithItem +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action299( + mode, + __temp0, + __0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action938< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Expr, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> ast::WithItem +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action300( + mode, + __temp0, + __0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action939< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Expr, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> ast::WithItem +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action301( + mode, + __temp0, + __0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action940< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, TextSize, TextSize), +) -> ast::WithItem +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action294( + mode, + __temp0, + __0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action941< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Expr, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> ast::WithItem +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action295( + mode, + __temp0, + __0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action942< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, TextSize, TextSize), +) -> Vec +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action161( + mode, + __temp0, + __0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action943< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action663( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action944< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, Vec, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action664( + mode, + __temp0, + __0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action945< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Expr, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action428( + mode, + __temp0, + __0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action946< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Expr, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action504( + mode, + __temp0, + __0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action947< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, core::option::Option, TextSize), + __2: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action177( + mode, + __temp0, + __0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action948< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Expr, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action391( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action178( + mode, + __temp0, + __0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action949< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Arg, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, Option>, TextSize), +) -> Result<(Option>, Vec, Option>),__lalrpop_util::ParseError> +{ + let __start0 = __1.0; + let __end0 = __4.2; + let __temp0 = __action875( + mode, + __1, + __2, + __3, + __4, + )?; + let __temp0 = (__start0, __temp0, __end0); + Ok(__action416( + mode, + __0, + __temp0, + )) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action950< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, Option>, TextSize), +) -> Result<(Option>, Vec, Option>),__lalrpop_util::ParseError> +{ + let __start0 = __1.0; + let __end0 = __3.2; + let __temp0 = __action876( + mode, + __1, + __2, + __3, + )?; + let __temp0 = (__start0, __temp0, __end0); + Ok(__action416( + mode, + __0, + __temp0, + )) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action951< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Arg, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, Option>, TextSize), +) -> Result<(Option>, Vec, Option>),__lalrpop_util::ParseError> +{ + let __start0 = __1.0; + let __end0 = __5.2; + let __temp0 = __action877( + mode, + __1, + __2, + __3, + __4, + __5, + )?; + let __temp0 = (__start0, __temp0, __end0); + Ok(__action416( + mode, + __0, + __temp0, + )) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action952< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, alloc::vec::Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, Option>, TextSize), +) -> Result<(Option>, Vec, Option>),__lalrpop_util::ParseError> +{ + let __start0 = __1.0; + let __end0 = __4.2; + let __temp0 = __action878( + mode, + __1, + __2, + __3, + __4, + )?; + let __temp0 = (__start0, __temp0, __end0); + Ok(__action416( + mode, + __0, + __temp0, + )) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action953< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Arg, TextSize), +) -> Result<(Option>, Vec, Option>),__lalrpop_util::ParseError> +{ + let __start0 = __1.0; + let __end0 = __2.2; + let __temp0 = __action879( + mode, + __1, + __2, + )?; + let __temp0 = (__start0, __temp0, __end0); + Ok(__action416( + mode, + __0, + __temp0, + )) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action954< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), +) -> Result<(Option>, Vec, Option>),__lalrpop_util::ParseError> +{ + let __start0 = __1.0; + let __end0 = __1.2; + let __temp0 = __action880( + mode, + __1, + )?; + let __temp0 = (__start0, __temp0, __end0); + Ok(__action416( + mode, + __0, + __temp0, + )) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action955< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Arg, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), +) -> Result<(Option>, Vec, Option>),__lalrpop_util::ParseError> +{ + let __start0 = __1.0; + let __end0 = __3.2; + let __temp0 = __action881( + mode, + __1, + __2, + __3, + )?; + let __temp0 = (__start0, __temp0, __end0); + Ok(__action416( + mode, + __0, + __temp0, + )) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action956< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, alloc::vec::Vec, TextSize), +) -> Result<(Option>, Vec, Option>),__lalrpop_util::ParseError> +{ + let __start0 = __1.0; + let __end0 = __2.2; + let __temp0 = __action882( + mode, + __1, + __2, + )?; + let __temp0 = (__start0, __temp0, __end0); + Ok(__action416( + mode, + __0, + __temp0, + )) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action957< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Arg, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, Option>, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __3.2; + let __temp0 = __action875( + mode, + __0, + __1, + __2, + __3, + )?; + let __temp0 = (__start0, __temp0, __end0); + Ok(__action863( + mode, + __temp0, + __4, + __5, + )) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action958< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, Option>, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __2.2; + let __temp0 = __action876( + mode, + __0, + __1, + __2, + )?; + let __temp0 = (__start0, __temp0, __end0); + Ok(__action863( + mode, + __temp0, + __3, + __4, + )) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action959< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Arg, TextSize), + __2: (TextSize, alloc::vec::Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, Option>, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __4.2; + let __temp0 = __action877( + mode, + __0, + __1, + __2, + __3, + __4, + )?; + let __temp0 = (__start0, __temp0, __end0); + Ok(__action863( + mode, + __temp0, + __5, + __6, + )) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action960< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, alloc::vec::Vec, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, Option>, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __3.2; + let __temp0 = __action878( + mode, + __0, + __1, + __2, + __3, + )?; + let __temp0 = (__start0, __temp0, __end0); + Ok(__action863( + mode, + __temp0, + __4, + __5, + )) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action961< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Arg, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __1.2; + let __temp0 = __action879( + mode, + __0, + __1, + )?; + let __temp0 = (__start0, __temp0, __end0); + Ok(__action863( + mode, + __temp0, + __2, + __3, + )) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action962< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action880( + mode, + __0, + )?; + let __temp0 = (__start0, __temp0, __end0); + Ok(__action863( + mode, + __temp0, + __1, + __2, + )) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action963< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Arg, TextSize), + __2: (TextSize, alloc::vec::Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __2.2; + let __temp0 = __action881( + mode, + __0, + __1, + __2, + )?; + let __temp0 = (__start0, __temp0, __end0); + Ok(__action863( + mode, + __temp0, + __3, + __4, + )) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action964< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, alloc::vec::Vec, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __1.2; + let __temp0 = __action882( + mode, + __0, + __1, + )?; + let __temp0 = (__start0, __temp0, __end0); + Ok(__action863( + mode, + __temp0, + __2, + __3, + )) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action965< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Arg, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, Option>, TextSize), + __4: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __3.2; + let __temp0 = __action875( + mode, + __0, + __1, + __2, + __3, + )?; + let __temp0 = (__start0, __temp0, __end0); + Ok(__action864( + mode, + __temp0, + __4, + )) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action966< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, Option>, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __2.2; + let __temp0 = __action876( + mode, + __0, + __1, + __2, + )?; + let __temp0 = (__start0, __temp0, __end0); + Ok(__action864( + mode, + __temp0, + __3, + )) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action967< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Arg, TextSize), + __2: (TextSize, alloc::vec::Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, Option>, TextSize), + __5: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __4.2; + let __temp0 = __action877( + mode, + __0, + __1, + __2, + __3, + __4, + )?; + let __temp0 = (__start0, __temp0, __end0); + Ok(__action864( + mode, + __temp0, + __5, + )) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action968< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, alloc::vec::Vec, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, Option>, TextSize), + __4: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __3.2; + let __temp0 = __action878( + mode, + __0, + __1, + __2, + __3, + )?; + let __temp0 = (__start0, __temp0, __end0); + Ok(__action864( + mode, + __temp0, + __4, + )) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action969< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Arg, TextSize), + __2: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __1.2; + let __temp0 = __action879( + mode, + __0, + __1, + )?; + let __temp0 = (__start0, __temp0, __end0); + Ok(__action864( + mode, + __temp0, + __2, + )) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action970< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action880( + mode, + __0, + )?; + let __temp0 = (__start0, __temp0, __end0); + Ok(__action864( + mode, + __temp0, + __1, + )) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action971< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Arg, TextSize), + __2: (TextSize, alloc::vec::Vec, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __2.2; + let __temp0 = __action881( + mode, + __0, + __1, + __2, + )?; + let __temp0 = (__start0, __temp0, __end0); + Ok(__action864( + mode, + __temp0, + __3, + )) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action972< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, alloc::vec::Vec, TextSize), + __2: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __1.2; + let __temp0 = __action882( + mode, + __0, + __1, + )?; + let __temp0 = (__start0, __temp0, __end0); + Ok(__action864( + mode, + __temp0, + __2, + )) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action973< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Arg, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, Option>, TextSize), +) -> Result>, Vec, Option>)>,__lalrpop_util::ParseError> +{ + let __start0 = __0.0; + let __end0 = __4.2; + let __temp0 = __action949( + mode, + __0, + __1, + __2, + __3, + __4, + )?; + let __temp0 = (__start0, __temp0, __end0); + Ok(__action414( + mode, + __temp0, + )) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action974< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, Option>, TextSize), +) -> Result>, Vec, Option>)>,__lalrpop_util::ParseError> +{ + let __start0 = __0.0; + let __end0 = __3.2; + let __temp0 = __action950( + mode, + __0, + __1, + __2, + __3, + )?; + let __temp0 = (__start0, __temp0, __end0); + Ok(__action414( + mode, + __temp0, + )) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action975< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Arg, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, Option>, TextSize), +) -> Result>, Vec, Option>)>,__lalrpop_util::ParseError> +{ + let __start0 = __0.0; + let __end0 = __5.2; + let __temp0 = __action951( + mode, + __0, + __1, + __2, + __3, + __4, + __5, + )?; + let __temp0 = (__start0, __temp0, __end0); + Ok(__action414( + mode, + __temp0, + )) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action976< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, alloc::vec::Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, Option>, TextSize), +) -> Result>, Vec, Option>)>,__lalrpop_util::ParseError> +{ + let __start0 = __0.0; + let __end0 = __4.2; + let __temp0 = __action952( + mode, + __0, + __1, + __2, + __3, + __4, + )?; + let __temp0 = (__start0, __temp0, __end0); + Ok(__action414( + mode, + __temp0, + )) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action977< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Arg, TextSize), +) -> Result>, Vec, Option>)>,__lalrpop_util::ParseError> +{ + let __start0 = __0.0; + let __end0 = __2.2; + let __temp0 = __action953( + mode, + __0, + __1, + __2, + )?; + let __temp0 = (__start0, __temp0, __end0); + Ok(__action414( + mode, + __temp0, + )) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action978< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), +) -> Result>, Vec, Option>)>,__lalrpop_util::ParseError> +{ + let __start0 = __0.0; + let __end0 = __1.2; + let __temp0 = __action954( + mode, + __0, + __1, + )?; + let __temp0 = (__start0, __temp0, __end0); + Ok(__action414( + mode, + __temp0, + )) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action979< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Arg, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), +) -> Result>, Vec, Option>)>,__lalrpop_util::ParseError> +{ + let __start0 = __0.0; + let __end0 = __3.2; + let __temp0 = __action955( + mode, + __0, + __1, + __2, + __3, + )?; + let __temp0 = (__start0, __temp0, __end0); + Ok(__action414( + mode, + __temp0, + )) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action980< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, alloc::vec::Vec, TextSize), +) -> Result>, Vec, Option>)>,__lalrpop_util::ParseError> +{ + let __start0 = __0.0; + let __end0 = __2.2; + let __temp0 = __action956( + mode, + __0, + __1, + __2, + )?; + let __temp0 = (__start0, __temp0, __end0); + Ok(__action414( + mode, + __temp0, + )) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action981< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Arg, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, Option>, TextSize), + __6: (TextSize, token::Tok, TextSize), + __7: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __1.0; + let __end0 = __5.2; + let __temp0 = __action973( + mode, + __1, + __2, + __3, + __4, + __5, + )?; + let __temp0 = (__start0, __temp0, __end0); + __action859( + mode, + __0, + __temp0, + __6, + __7, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action982< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, Option>, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __1.0; + let __end0 = __4.2; + let __temp0 = __action974( + mode, + __1, + __2, + __3, + __4, + )?; + let __temp0 = (__start0, __temp0, __end0); + __action859( + mode, + __0, + __temp0, + __5, + __6, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action983< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Arg, TextSize), + __4: (TextSize, alloc::vec::Vec, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, Option>, TextSize), + __7: (TextSize, token::Tok, TextSize), + __8: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __1.0; + let __end0 = __6.2; + let __temp0 = __action975( + mode, + __1, + __2, + __3, + __4, + __5, + __6, + )?; + let __temp0 = (__start0, __temp0, __end0); + __action859( + mode, + __0, + __temp0, + __7, + __8, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action984< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, Option>, TextSize), + __6: (TextSize, token::Tok, TextSize), + __7: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __1.0; + let __end0 = __5.2; + let __temp0 = __action976( + mode, + __1, + __2, + __3, + __4, + __5, + )?; + let __temp0 = (__start0, __temp0, __end0); + __action859( + mode, + __0, + __temp0, + __6, + __7, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action985< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Arg, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __1.0; + let __end0 = __3.2; + let __temp0 = __action977( + mode, + __1, + __2, + __3, + )?; + let __temp0 = (__start0, __temp0, __end0); + __action859( + mode, + __0, + __temp0, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action986< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __1.0; + let __end0 = __2.2; + let __temp0 = __action978( + mode, + __1, + __2, + )?; + let __temp0 = (__start0, __temp0, __end0); + __action859( + mode, + __0, + __temp0, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action987< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Arg, TextSize), + __4: (TextSize, alloc::vec::Vec, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __1.0; + let __end0 = __4.2; + let __temp0 = __action979( + mode, + __1, + __2, + __3, + __4, + )?; + let __temp0 = (__start0, __temp0, __end0); + __action859( + mode, + __0, + __temp0, + __5, + __6, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action988< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __1.0; + let __end0 = __3.2; + let __temp0 = __action980( + mode, + __1, + __2, + __3, + )?; + let __temp0 = (__start0, __temp0, __end0); + __action859( + mode, + __0, + __temp0, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action989< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __0.2; + let __end0 = __1.0; + let __temp0 = __action415( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action859( + mode, + __0, + __temp0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action990< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Arg, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, Option>, TextSize), + __6: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __1.0; + let __end0 = __5.2; + let __temp0 = __action973( + mode, + __1, + __2, + __3, + __4, + __5, + )?; + let __temp0 = (__start0, __temp0, __end0); + __action860( + mode, + __0, + __temp0, + __6, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action991< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, Option>, TextSize), + __5: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __1.0; + let __end0 = __4.2; + let __temp0 = __action974( + mode, + __1, + __2, + __3, + __4, + )?; + let __temp0 = (__start0, __temp0, __end0); + __action860( + mode, + __0, + __temp0, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action992< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Arg, TextSize), + __4: (TextSize, alloc::vec::Vec, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, Option>, TextSize), + __7: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __1.0; + let __end0 = __6.2; + let __temp0 = __action975( + mode, + __1, + __2, + __3, + __4, + __5, + __6, + )?; + let __temp0 = (__start0, __temp0, __end0); + __action860( + mode, + __0, + __temp0, + __7, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action993< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, Option>, TextSize), + __6: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __1.0; + let __end0 = __5.2; + let __temp0 = __action976( + mode, + __1, + __2, + __3, + __4, + __5, + )?; + let __temp0 = (__start0, __temp0, __end0); + __action860( + mode, + __0, + __temp0, + __6, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action994< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Arg, TextSize), + __4: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __1.0; + let __end0 = __3.2; + let __temp0 = __action977( + mode, + __1, + __2, + __3, + )?; + let __temp0 = (__start0, __temp0, __end0); + __action860( + mode, + __0, + __temp0, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action995< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __1.0; + let __end0 = __2.2; + let __temp0 = __action978( + mode, + __1, + __2, + )?; + let __temp0 = (__start0, __temp0, __end0); + __action860( + mode, + __0, + __temp0, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action996< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Arg, TextSize), + __4: (TextSize, alloc::vec::Vec, TextSize), + __5: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __1.0; + let __end0 = __4.2; + let __temp0 = __action979( + mode, + __1, + __2, + __3, + __4, + )?; + let __temp0 = (__start0, __temp0, __end0); + __action860( + mode, + __0, + __temp0, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action997< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __1.0; + let __end0 = __3.2; + let __temp0 = __action980( + mode, + __1, + __2, + __3, + )?; + let __temp0 = (__start0, __temp0, __end0); + __action860( + mode, + __0, + __temp0, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action998< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __0.2; + let __end0 = __1.0; + let __temp0 = __action415( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action860( + mode, + __0, + __temp0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action999< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Arg, TextSize), +) -> Option> +{ + let __start0 = __1.0; + let __end0 = __1.2; + let __temp0 = __action462( + mode, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action421( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1000< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), +) -> Option> +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action463( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action421( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1001< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Arg, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, Option>, TextSize), +) -> Result<(Option>, Vec, Option>),__lalrpop_util::ParseError> +{ + let __start0 = __1.0; + let __end0 = __1.2; + let __temp0 = __action462( + mode, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action883( + mode, + __0, + __temp0, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1002< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, Option>, TextSize), +) -> Result<(Option>, Vec, Option>),__lalrpop_util::ParseError> +{ + let __start0 = __0.2; + let __end0 = __1.0; + let __temp0 = __action463( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action883( + mode, + __0, + __temp0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1003< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Arg, TextSize), + __2: (TextSize, alloc::vec::Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, Option>, TextSize), +) -> Result<(Option>, Vec, Option>),__lalrpop_util::ParseError> +{ + let __start0 = __1.0; + let __end0 = __1.2; + let __temp0 = __action462( + mode, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action884( + mode, + __0, + __temp0, + __2, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1004< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, alloc::vec::Vec, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, Option>, TextSize), +) -> Result<(Option>, Vec, Option>),__lalrpop_util::ParseError> +{ + let __start0 = __0.2; + let __end0 = __1.0; + let __temp0 = __action463( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action884( + mode, + __0, + __temp0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1005< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Arg, TextSize), +) -> Result<(Option>, Vec, Option>),__lalrpop_util::ParseError> +{ + let __start0 = __1.0; + let __end0 = __1.2; + let __temp0 = __action462( + mode, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action885( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1006< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), +) -> Result<(Option>, Vec, Option>),__lalrpop_util::ParseError> +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action463( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action885( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1007< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Arg, TextSize), + __2: (TextSize, alloc::vec::Vec, TextSize), +) -> Result<(Option>, Vec, Option>),__lalrpop_util::ParseError> +{ + let __start0 = __1.0; + let __end0 = __1.2; + let __temp0 = __action462( + mode, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action886( + mode, + __0, + __temp0, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1008< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, alloc::vec::Vec, TextSize), +) -> Result<(Option>, Vec, Option>),__lalrpop_util::ParseError> +{ + let __start0 = __0.2; + let __end0 = __1.0; + let __temp0 = __action463( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action886( + mode, + __0, + __temp0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1009< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Arg, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, Option>, TextSize), +) -> Result<(Option>, Vec, Option>),__lalrpop_util::ParseError> +{ + let __start0 = __1.0; + let __end0 = __4.2; + let __temp0 = __action1001( + mode, + __1, + __2, + __3, + __4, + )?; + let __temp0 = (__start0, __temp0, __end0); + Ok(__action424( + mode, + __0, + __temp0, + )) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1010< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, Option>, TextSize), +) -> Result<(Option>, Vec, Option>),__lalrpop_util::ParseError> +{ + let __start0 = __1.0; + let __end0 = __3.2; + let __temp0 = __action1002( + mode, + __1, + __2, + __3, + )?; + let __temp0 = (__start0, __temp0, __end0); + Ok(__action424( + mode, + __0, + __temp0, + )) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1011< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Arg, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, Option>, TextSize), +) -> Result<(Option>, Vec, Option>),__lalrpop_util::ParseError> +{ + let __start0 = __1.0; + let __end0 = __5.2; + let __temp0 = __action1003( + mode, + __1, + __2, + __3, + __4, + __5, + )?; + let __temp0 = (__start0, __temp0, __end0); + Ok(__action424( + mode, + __0, + __temp0, + )) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1012< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, alloc::vec::Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, Option>, TextSize), +) -> Result<(Option>, Vec, Option>),__lalrpop_util::ParseError> +{ + let __start0 = __1.0; + let __end0 = __4.2; + let __temp0 = __action1004( + mode, + __1, + __2, + __3, + __4, + )?; + let __temp0 = (__start0, __temp0, __end0); + Ok(__action424( + mode, + __0, + __temp0, + )) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1013< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Arg, TextSize), +) -> Result<(Option>, Vec, Option>),__lalrpop_util::ParseError> +{ + let __start0 = __1.0; + let __end0 = __2.2; + let __temp0 = __action1005( + mode, + __1, + __2, + )?; + let __temp0 = (__start0, __temp0, __end0); + Ok(__action424( + mode, + __0, + __temp0, + )) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1014< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), +) -> Result<(Option>, Vec, Option>),__lalrpop_util::ParseError> +{ + let __start0 = __1.0; + let __end0 = __1.2; + let __temp0 = __action1006( + mode, + __1, + )?; + let __temp0 = (__start0, __temp0, __end0); + Ok(__action424( + mode, + __0, + __temp0, + )) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1015< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Arg, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), +) -> Result<(Option>, Vec, Option>),__lalrpop_util::ParseError> +{ + let __start0 = __1.0; + let __end0 = __3.2; + let __temp0 = __action1007( + mode, + __1, + __2, + __3, + )?; + let __temp0 = (__start0, __temp0, __end0); + Ok(__action424( + mode, + __0, + __temp0, + )) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1016< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, alloc::vec::Vec, TextSize), +) -> Result<(Option>, Vec, Option>),__lalrpop_util::ParseError> +{ + let __start0 = __1.0; + let __end0 = __2.2; + let __temp0 = __action1008( + mode, + __1, + __2, + )?; + let __temp0 = (__start0, __temp0, __end0); + Ok(__action424( + mode, + __0, + __temp0, + )) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1017< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Arg, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, Option>, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __3.2; + let __temp0 = __action1001( + mode, + __0, + __1, + __2, + __3, + )?; + let __temp0 = (__start0, __temp0, __end0); + Ok(__action871( + mode, + __temp0, + __4, + __5, + )) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1018< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, Option>, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __2.2; + let __temp0 = __action1002( + mode, + __0, + __1, + __2, + )?; + let __temp0 = (__start0, __temp0, __end0); + Ok(__action871( + mode, + __temp0, + __3, + __4, + )) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1019< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Arg, TextSize), + __2: (TextSize, alloc::vec::Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, Option>, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __4.2; + let __temp0 = __action1003( + mode, + __0, + __1, + __2, + __3, + __4, + )?; + let __temp0 = (__start0, __temp0, __end0); + Ok(__action871( + mode, + __temp0, + __5, + __6, + )) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1020< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, alloc::vec::Vec, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, Option>, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __3.2; + let __temp0 = __action1004( + mode, + __0, + __1, + __2, + __3, + )?; + let __temp0 = (__start0, __temp0, __end0); + Ok(__action871( + mode, + __temp0, + __4, + __5, + )) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1021< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Arg, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __1.2; + let __temp0 = __action1005( + mode, + __0, + __1, + )?; + let __temp0 = (__start0, __temp0, __end0); + Ok(__action871( + mode, + __temp0, + __2, + __3, + )) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1022< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action1006( + mode, + __0, + )?; + let __temp0 = (__start0, __temp0, __end0); + Ok(__action871( + mode, + __temp0, + __1, + __2, + )) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1023< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Arg, TextSize), + __2: (TextSize, alloc::vec::Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __2.2; + let __temp0 = __action1007( + mode, + __0, + __1, + __2, + )?; + let __temp0 = (__start0, __temp0, __end0); + Ok(__action871( + mode, + __temp0, + __3, + __4, + )) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1024< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, alloc::vec::Vec, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __1.2; + let __temp0 = __action1008( + mode, + __0, + __1, + )?; + let __temp0 = (__start0, __temp0, __end0); + Ok(__action871( + mode, + __temp0, + __2, + __3, + )) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1025< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Arg, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, Option>, TextSize), + __4: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __3.2; + let __temp0 = __action1001( + mode, + __0, + __1, + __2, + __3, + )?; + let __temp0 = (__start0, __temp0, __end0); + Ok(__action872( + mode, + __temp0, + __4, + )) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1026< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, Option>, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __2.2; + let __temp0 = __action1002( + mode, + __0, + __1, + __2, + )?; + let __temp0 = (__start0, __temp0, __end0); + Ok(__action872( + mode, + __temp0, + __3, + )) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1027< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Arg, TextSize), + __2: (TextSize, alloc::vec::Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, Option>, TextSize), + __5: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __4.2; + let __temp0 = __action1003( + mode, + __0, + __1, + __2, + __3, + __4, + )?; + let __temp0 = (__start0, __temp0, __end0); + Ok(__action872( + mode, + __temp0, + __5, + )) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1028< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, alloc::vec::Vec, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, Option>, TextSize), + __4: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __3.2; + let __temp0 = __action1004( + mode, + __0, + __1, + __2, + __3, + )?; + let __temp0 = (__start0, __temp0, __end0); + Ok(__action872( + mode, + __temp0, + __4, + )) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1029< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Arg, TextSize), + __2: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __1.2; + let __temp0 = __action1005( + mode, + __0, + __1, + )?; + let __temp0 = (__start0, __temp0, __end0); + Ok(__action872( + mode, + __temp0, + __2, + )) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1030< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action1006( + mode, + __0, + )?; + let __temp0 = (__start0, __temp0, __end0); + Ok(__action872( + mode, + __temp0, + __1, + )) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1031< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Arg, TextSize), + __2: (TextSize, alloc::vec::Vec, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __2.2; + let __temp0 = __action1007( + mode, + __0, + __1, + __2, + )?; + let __temp0 = (__start0, __temp0, __end0); + Ok(__action872( + mode, + __temp0, + __3, + )) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1032< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, alloc::vec::Vec, TextSize), + __2: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __1.2; + let __temp0 = __action1008( + mode, + __0, + __1, + )?; + let __temp0 = (__start0, __temp0, __end0); + Ok(__action872( + mode, + __temp0, + __2, + )) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1033< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Arg, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, Option>, TextSize), +) -> Result>, Vec, Option>)>,__lalrpop_util::ParseError> +{ + let __start0 = __0.0; + let __end0 = __4.2; + let __temp0 = __action1009( + mode, + __0, + __1, + __2, + __3, + __4, + )?; + let __temp0 = (__start0, __temp0, __end0); + Ok(__action422( + mode, + __temp0, + )) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1034< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, Option>, TextSize), +) -> Result>, Vec, Option>)>,__lalrpop_util::ParseError> +{ + let __start0 = __0.0; + let __end0 = __3.2; + let __temp0 = __action1010( + mode, + __0, + __1, + __2, + __3, + )?; + let __temp0 = (__start0, __temp0, __end0); + Ok(__action422( + mode, + __temp0, + )) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1035< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Arg, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, Option>, TextSize), +) -> Result>, Vec, Option>)>,__lalrpop_util::ParseError> +{ + let __start0 = __0.0; + let __end0 = __5.2; + let __temp0 = __action1011( + mode, + __0, + __1, + __2, + __3, + __4, + __5, + )?; + let __temp0 = (__start0, __temp0, __end0); + Ok(__action422( + mode, + __temp0, + )) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1036< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, alloc::vec::Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, Option>, TextSize), +) -> Result>, Vec, Option>)>,__lalrpop_util::ParseError> +{ + let __start0 = __0.0; + let __end0 = __4.2; + let __temp0 = __action1012( + mode, + __0, + __1, + __2, + __3, + __4, + )?; + let __temp0 = (__start0, __temp0, __end0); + Ok(__action422( + mode, + __temp0, + )) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1037< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Arg, TextSize), +) -> Result>, Vec, Option>)>,__lalrpop_util::ParseError> +{ + let __start0 = __0.0; + let __end0 = __2.2; + let __temp0 = __action1013( + mode, + __0, + __1, + __2, + )?; + let __temp0 = (__start0, __temp0, __end0); + Ok(__action422( + mode, + __temp0, + )) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1038< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), +) -> Result>, Vec, Option>)>,__lalrpop_util::ParseError> +{ + let __start0 = __0.0; + let __end0 = __1.2; + let __temp0 = __action1014( + mode, + __0, + __1, + )?; + let __temp0 = (__start0, __temp0, __end0); + Ok(__action422( + mode, + __temp0, + )) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1039< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Arg, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), +) -> Result>, Vec, Option>)>,__lalrpop_util::ParseError> +{ + let __start0 = __0.0; + let __end0 = __3.2; + let __temp0 = __action1015( + mode, + __0, + __1, + __2, + __3, + )?; + let __temp0 = (__start0, __temp0, __end0); + Ok(__action422( + mode, + __temp0, + )) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1040< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, alloc::vec::Vec, TextSize), +) -> Result>, Vec, Option>)>,__lalrpop_util::ParseError> +{ + let __start0 = __0.0; + let __end0 = __2.2; + let __temp0 = __action1016( + mode, + __0, + __1, + __2, + )?; + let __temp0 = (__start0, __temp0, __end0); + Ok(__action422( + mode, + __temp0, + )) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1041< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Arg, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, Option>, TextSize), + __6: (TextSize, token::Tok, TextSize), + __7: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __1.0; + let __end0 = __5.2; + let __temp0 = __action1033( + mode, + __1, + __2, + __3, + __4, + __5, + )?; + let __temp0 = (__start0, __temp0, __end0); + __action867( + mode, + __0, + __temp0, + __6, + __7, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1042< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, Option>, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __1.0; + let __end0 = __4.2; + let __temp0 = __action1034( + mode, + __1, + __2, + __3, + __4, + )?; + let __temp0 = (__start0, __temp0, __end0); + __action867( + mode, + __0, + __temp0, + __5, + __6, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1043< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Arg, TextSize), + __4: (TextSize, alloc::vec::Vec, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, Option>, TextSize), + __7: (TextSize, token::Tok, TextSize), + __8: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __1.0; + let __end0 = __6.2; + let __temp0 = __action1035( + mode, + __1, + __2, + __3, + __4, + __5, + __6, + )?; + let __temp0 = (__start0, __temp0, __end0); + __action867( + mode, + __0, + __temp0, + __7, + __8, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1044< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, Option>, TextSize), + __6: (TextSize, token::Tok, TextSize), + __7: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __1.0; + let __end0 = __5.2; + let __temp0 = __action1036( + mode, + __1, + __2, + __3, + __4, + __5, + )?; + let __temp0 = (__start0, __temp0, __end0); + __action867( + mode, + __0, + __temp0, + __6, + __7, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1045< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Arg, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __1.0; + let __end0 = __3.2; + let __temp0 = __action1037( + mode, + __1, + __2, + __3, + )?; + let __temp0 = (__start0, __temp0, __end0); + __action867( + mode, + __0, + __temp0, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1046< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __1.0; + let __end0 = __2.2; + let __temp0 = __action1038( + mode, + __1, + __2, + )?; + let __temp0 = (__start0, __temp0, __end0); + __action867( + mode, + __0, + __temp0, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1047< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Arg, TextSize), + __4: (TextSize, alloc::vec::Vec, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __1.0; + let __end0 = __4.2; + let __temp0 = __action1039( + mode, + __1, + __2, + __3, + __4, + )?; + let __temp0 = (__start0, __temp0, __end0); + __action867( + mode, + __0, + __temp0, + __5, + __6, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1048< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __1.0; + let __end0 = __3.2; + let __temp0 = __action1040( + mode, + __1, + __2, + __3, + )?; + let __temp0 = (__start0, __temp0, __end0); + __action867( + mode, + __0, + __temp0, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1049< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __0.2; + let __end0 = __1.0; + let __temp0 = __action423( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action867( + mode, + __0, + __temp0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1050< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Arg, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, Option>, TextSize), + __6: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __1.0; + let __end0 = __5.2; + let __temp0 = __action1033( + mode, + __1, + __2, + __3, + __4, + __5, + )?; + let __temp0 = (__start0, __temp0, __end0); + __action868( + mode, + __0, + __temp0, + __6, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1051< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, Option>, TextSize), + __5: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __1.0; + let __end0 = __4.2; + let __temp0 = __action1034( + mode, + __1, + __2, + __3, + __4, + )?; + let __temp0 = (__start0, __temp0, __end0); + __action868( + mode, + __0, + __temp0, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1052< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Arg, TextSize), + __4: (TextSize, alloc::vec::Vec, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, Option>, TextSize), + __7: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __1.0; + let __end0 = __6.2; + let __temp0 = __action1035( + mode, + __1, + __2, + __3, + __4, + __5, + __6, + )?; + let __temp0 = (__start0, __temp0, __end0); + __action868( + mode, + __0, + __temp0, + __7, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1053< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, Option>, TextSize), + __6: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __1.0; + let __end0 = __5.2; + let __temp0 = __action1036( + mode, + __1, + __2, + __3, + __4, + __5, + )?; + let __temp0 = (__start0, __temp0, __end0); + __action868( + mode, + __0, + __temp0, + __6, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1054< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Arg, TextSize), + __4: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __1.0; + let __end0 = __3.2; + let __temp0 = __action1037( + mode, + __1, + __2, + __3, + )?; + let __temp0 = (__start0, __temp0, __end0); + __action868( + mode, + __0, + __temp0, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1055< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __1.0; + let __end0 = __2.2; + let __temp0 = __action1038( + mode, + __1, + __2, + )?; + let __temp0 = (__start0, __temp0, __end0); + __action868( + mode, + __0, + __temp0, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1056< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Arg, TextSize), + __4: (TextSize, alloc::vec::Vec, TextSize), + __5: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __1.0; + let __end0 = __4.2; + let __temp0 = __action1039( + mode, + __1, + __2, + __3, + __4, + )?; + let __temp0 = (__start0, __temp0, __end0); + __action868( + mode, + __0, + __temp0, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1057< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __1.0; + let __end0 = __3.2; + let __temp0 = __action1040( + mode, + __1, + __2, + __3, + )?; + let __temp0 = (__start0, __temp0, __end0); + __action868( + mode, + __0, + __temp0, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1058< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __0.2; + let __end0 = __1.0; + let __temp0 = __action423( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action868( + mode, + __0, + __temp0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1059< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), +) -> core::option::Option +{ + let __start0 = __0.0; + let __end0 = __1.2; + let __temp0 = __action352( + mode, + __0, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action350( + mode, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1060< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Expr, TextSize), + __4: (TextSize, TextSize, TextSize), +) -> ast::Stmt +{ + let __start0 = __2.0; + let __end0 = __3.2; + let __temp0 = __action1059( + mode, + __2, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action713( + mode, + __0, + __1, + __temp0, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1061< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, TextSize, TextSize), +) -> ast::Stmt +{ + let __start0 = __1.2; + let __end0 = __2.0; + let __temp0 = __action351( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action713( + mode, + __0, + __1, + __temp0, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1062< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), +) -> alloc::vec::Vec +{ + let __start0 = __0.0; + let __end0 = __1.2; + let __temp0 = __action545( + mode, + __0, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action551( + mode, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1063< +>( + mode: Mode, + __0: (TextSize, alloc::vec::Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Expr, TextSize), +) -> alloc::vec::Vec +{ + let __start0 = __1.0; + let __end0 = __2.2; + let __temp0 = __action545( + mode, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action552( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1064< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, core::option::Option>, TextSize), + __2: (TextSize, ast::Expr, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __2.2; + let __end0 = __3.0; + let __temp0 = __action543( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action721( + mode, + __0, + __1, + __2, + __temp0, + __3, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1065< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, core::option::Option>, TextSize), + __2: (TextSize, ast::Expr, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __3.0; + let __end0 = __3.2; + let __temp0 = __action544( + mode, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action721( + mode, + __0, + __1, + __2, + __temp0, + __4, + __5, + __6, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1066< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, core::option::Option>, TextSize), + __2: (TextSize, ast::Expr, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __2.2; + let __end0 = __3.0; + let __temp0 = __action543( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action722( + mode, + __0, + __1, + __2, + __temp0, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1067< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, core::option::Option>, TextSize), + __2: (TextSize, ast::Expr, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __3.0; + let __end0 = __3.2; + let __temp0 = __action544( + mode, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action722( + mode, + __0, + __1, + __2, + __temp0, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1068< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, core::option::Option>, TextSize), + __2: (TextSize, ast::Expr, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __2.2; + let __end0 = __3.0; + let __temp0 = __action543( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action739( + mode, + __0, + __1, + __2, + __temp0, + __3, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1069< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, core::option::Option>, TextSize), + __2: (TextSize, ast::Expr, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __3.0; + let __end0 = __3.2; + let __temp0 = __action544( + mode, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action739( + mode, + __0, + __1, + __2, + __temp0, + __4, + __5, + __6, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1070< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, core::option::Option>, TextSize), + __2: (TextSize, ast::Expr, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __2.2; + let __end0 = __3.0; + let __temp0 = __action543( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action740( + mode, + __0, + __1, + __2, + __temp0, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1071< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, core::option::Option>, TextSize), + __2: (TextSize, ast::Expr, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __3.0; + let __end0 = __3.2; + let __temp0 = __action544( + mode, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action740( + mode, + __0, + __1, + __2, + __temp0, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1072< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::WithItem, TextSize), +) -> alloc::vec::Vec +{ + let __start0 = __0.0; + let __end0 = __1.2; + let __temp0 = __action298( + mode, + __0, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action292( + mode, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1073< +>( + mode: Mode, + __0: (TextSize, alloc::vec::Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::WithItem, TextSize), +) -> alloc::vec::Vec +{ + let __start0 = __1.0; + let __end0 = __2.2; + let __temp0 = __action298( + mode, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action293( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1074< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, core::option::Option>, TextSize), + __2: (TextSize, ast::WithItem, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, token::Tok, TextSize), +) -> Vec +{ + let __start0 = __2.2; + let __end0 = __3.0; + let __temp0 = __action296( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action647( + mode, + __0, + __1, + __2, + __temp0, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1075< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, core::option::Option>, TextSize), + __2: (TextSize, ast::WithItem, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), +) -> Vec +{ + let __start0 = __3.0; + let __end0 = __3.2; + let __temp0 = __action297( + mode, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action647( + mode, + __0, + __1, + __2, + __temp0, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1076< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, core::option::Option>, TextSize), + __2: (TextSize, ast::WithItem, TextSize), + __3: (TextSize, token::Tok, TextSize), +) -> Vec +{ + let __start0 = __2.2; + let __end0 = __3.0; + let __temp0 = __action296( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action648( + mode, + __0, + __1, + __2, + __temp0, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1077< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, core::option::Option>, TextSize), + __2: (TextSize, ast::WithItem, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), +) -> Vec +{ + let __start0 = __3.0; + let __end0 = __3.2; + let __temp0 = __action297( + mode, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action648( + mode, + __0, + __1, + __2, + __temp0, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1078< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), +) -> core::option::Option +{ + let __start0 = __0.0; + let __end0 = __1.2; + let __temp0 = __action285( + mode, + __0, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action283( + mode, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1079< +>( + mode: Mode, + __0: (TextSize, alloc::vec::Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Identifier, TextSize), + __4: (TextSize, core::option::Option>, TextSize), + __5: (TextSize, ast::Arguments, TextSize), + __6: (TextSize, token::Tok, TextSize), + __7: (TextSize, ast::Expr, TextSize), + __8: (TextSize, token::Tok, TextSize), + __9: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __6.0; + let __end0 = __7.2; + let __temp0 = __action1078( + mode, + __6, + __7, + ); + let __temp0 = (__start0, __temp0, __end0); + __action803( + mode, + __0, + __1, + __2, + __3, + __4, + __5, + __temp0, + __8, + __9, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1080< +>( + mode: Mode, + __0: (TextSize, alloc::vec::Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Identifier, TextSize), + __4: (TextSize, core::option::Option>, TextSize), + __5: (TextSize, ast::Arguments, TextSize), + __6: (TextSize, token::Tok, TextSize), + __7: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __5.2; + let __end0 = __6.0; + let __temp0 = __action284( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action803( + mode, + __0, + __1, + __2, + __3, + __4, + __5, + __temp0, + __6, + __7, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1081< +>( + mode: Mode, + __0: (TextSize, alloc::vec::Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Identifier, TextSize), + __3: (TextSize, core::option::Option>, TextSize), + __4: (TextSize, ast::Arguments, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, ast::Expr, TextSize), + __7: (TextSize, token::Tok, TextSize), + __8: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __5.0; + let __end0 = __6.2; + let __temp0 = __action1078( + mode, + __5, + __6, + ); + let __temp0 = (__start0, __temp0, __end0); + __action804( + mode, + __0, + __1, + __2, + __3, + __4, + __temp0, + __7, + __8, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1082< +>( + mode: Mode, + __0: (TextSize, alloc::vec::Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Identifier, TextSize), + __3: (TextSize, core::option::Option>, TextSize), + __4: (TextSize, ast::Arguments, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __4.2; + let __end0 = __5.0; + let __temp0 = __action284( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action804( + mode, + __0, + __1, + __2, + __3, + __4, + __temp0, + __5, + __6, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1083< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Identifier, TextSize), +) -> alloc::vec::Vec<(token::Tok, ast::Identifier)> +{ + let __start0 = __0.0; + let __end0 = __1.2; + let __temp0 = __action357( + mode, + __0, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action355( + mode, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1084< +>( + mode: Mode, + __0: (TextSize, alloc::vec::Vec<(token::Tok, ast::Identifier)>, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Identifier, TextSize), +) -> alloc::vec::Vec<(token::Tok, ast::Identifier)> +{ + let __start0 = __1.0; + let __end0 = __2.2; + let __temp0 = __action357( + mode, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action356( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1085< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), +) -> core::option::Option +{ + let __start0 = __0.0; + let __end0 = __1.2; + let __temp0 = __action275( + mode, + __0, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action273( + mode, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1086< +>( + mode: Mode, + __0: (TextSize, ast::Identifier, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Expr, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> ast::Arg +{ + let __start0 = __1.0; + let __end0 = __2.2; + let __temp0 = __action1085( + mode, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action785( + mode, + __0, + __temp0, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1087< +>( + mode: Mode, + __0: (TextSize, ast::Identifier, TextSize), + __1: (TextSize, TextSize, TextSize), +) -> ast::Arg +{ + let __start0 = __0.2; + let __end0 = __1.0; + let __temp0 = __action274( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action785( + mode, + __0, + __temp0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1088< +>( + mode: Mode, + __0: (TextSize, ast::Identifier, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Expr, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> ast::TypeParam +{ + let __start0 = __1.0; + let __end0 = __2.2; + let __temp0 = __action1085( + mode, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action928( + mode, + __0, + __temp0, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1089< +>( + mode: Mode, + __0: (TextSize, ast::Identifier, TextSize), + __1: (TextSize, TextSize, TextSize), +) -> ast::TypeParam +{ + let __start0 = __0.2; + let __end0 = __1.0; + let __temp0 = __action274( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action928( + mode, + __0, + __temp0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1090< +>( + mode: Mode, + __0: (TextSize, ast::Identifier, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Expr, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> ast::ArgWithDefault +{ + let __start0 = __1.0; + let __end0 = __2.2; + let __temp0 = __action1085( + mode, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action933( + mode, + __0, + __temp0, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1091< +>( + mode: Mode, + __0: (TextSize, ast::Identifier, TextSize), + __1: (TextSize, TextSize, TextSize), +) -> ast::ArgWithDefault +{ + let __start0 = __0.2; + let __end0 = __1.0; + let __temp0 = __action274( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action933( + mode, + __0, + __temp0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1092< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), +) -> core::option::Option +{ + let __start0 = __0.0; + let __end0 = __1.2; + let __temp0 = __action272( + mode, + __0, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action270( + mode, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1093< +>( + mode: Mode, + __0: (TextSize, ast::Identifier, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Expr, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> ast::Arg +{ + let __start0 = __1.0; + let __end0 = __2.2; + let __temp0 = __action1092( + mode, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action909( + mode, + __0, + __temp0, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1094< +>( + mode: Mode, + __0: (TextSize, ast::Identifier, TextSize), + __1: (TextSize, TextSize, TextSize), +) -> ast::Arg +{ + let __start0 = __0.2; + let __end0 = __1.0; + let __temp0 = __action271( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action909( + mode, + __0, + __temp0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1095< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), +) -> alloc::vec::Vec +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action389( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action392( + mode, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1096< +>( + mode: Mode, + __0: (TextSize, alloc::vec::Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), +) -> alloc::vec::Vec +{ + let __start0 = __1.0; + let __end0 = __1.2; + let __temp0 = __action389( + mode, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action393( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1097< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, TextSize, TextSize), +) -> ast::Mod +{ + let __start0 = __1.2; + let __end0 = __2.0; + let __temp0 = __action387( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action922( + mode, + __0, + __1, + __temp0, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1098< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, alloc::vec::Vec, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> ast::Mod +{ + let __start0 = __2.0; + let __end0 = __2.2; + let __temp0 = __action388( + mode, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action922( + mode, + __0, + __1, + __temp0, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1099< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Identifier, TextSize), +) -> core::option::Option +{ + let __start0 = __0.0; + let __end0 = __1.2; + let __temp0 = __action400( + mode, + __0, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action398( + mode, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1100< +>( + mode: Mode, + __0: (TextSize, ast::Identifier, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Identifier, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> ast::Alias +{ + let __start0 = __1.0; + let __end0 = __2.2; + let __temp0 = __action1099( + mode, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action816( + mode, + __0, + __temp0, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1101< +>( + mode: Mode, + __0: (TextSize, ast::Identifier, TextSize), + __1: (TextSize, TextSize, TextSize), +) -> ast::Alias +{ + let __start0 = __0.2; + let __end0 = __1.0; + let __temp0 = __action399( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action816( + mode, + __0, + __temp0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1102< +>( + mode: Mode, + __0: (TextSize, ast::Identifier, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Identifier, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> ast::Alias +{ + let __start0 = __1.0; + let __end0 = __2.2; + let __temp0 = __action1099( + mode, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action817( + mode, + __0, + __temp0, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1103< +>( + mode: Mode, + __0: (TextSize, ast::Identifier, TextSize), + __1: (TextSize, TextSize, TextSize), +) -> ast::Alias +{ + let __start0 = __0.2; + let __end0 = __1.0; + let __temp0 = __action399( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action817( + mode, + __0, + __temp0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1104< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Suite, TextSize), +) -> core::option::Option +{ + let __start0 = __0.0; + let __end0 = __2.2; + let __temp0 = __action319( + mode, + __0, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action317( + mode, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1105< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Expr, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, ast::Expr, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, ast::Suite, TextSize), + __7: (TextSize, token::Tok, TextSize), + __8: (TextSize, token::Tok, TextSize), + __9: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __7.0; + let __end0 = __9.2; + let __temp0 = __action1104( + mode, + __7, + __8, + __9, + ); + let __temp0 = (__start0, __temp0, __end0); + __action801( + mode, + __0, + __1, + __2, + __3, + __4, + __5, + __6, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1106< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Expr, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, ast::Expr, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __6.2; + let __end0 = __6.2; + let __temp0 = __action318( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action801( + mode, + __0, + __1, + __2, + __3, + __4, + __5, + __6, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1107< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Expr, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, ast::Suite, TextSize), + __6: (TextSize, token::Tok, TextSize), + __7: (TextSize, token::Tok, TextSize), + __8: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __6.0; + let __end0 = __8.2; + let __temp0 = __action1104( + mode, + __6, + __7, + __8, + ); + let __temp0 = (__start0, __temp0, __end0); + __action802( + mode, + __0, + __1, + __2, + __3, + __4, + __5, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1108< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Expr, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __5.2; + let __end0 = __5.2; + let __temp0 = __action318( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action802( + mode, + __0, + __1, + __2, + __3, + __4, + __5, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1109< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Suite, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, ast::Suite, TextSize), + __7: (TextSize, core::option::Option, TextSize), + __8: (TextSize, TextSize, TextSize), +) -> ast::Stmt +{ + let __start0 = __4.0; + let __end0 = __6.2; + let __temp0 = __action1104( + mode, + __4, + __5, + __6, + ); + let __temp0 = (__start0, __temp0, __end0); + __action923( + mode, + __0, + __1, + __2, + __3, + __temp0, + __7, + __8, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1110< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Suite, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, core::option::Option, TextSize), + __5: (TextSize, TextSize, TextSize), +) -> ast::Stmt +{ + let __start0 = __3.2; + let __end0 = __4.0; + let __temp0 = __action318( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action923( + mode, + __0, + __1, + __2, + __3, + __temp0, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1111< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Suite, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, ast::Suite, TextSize), + __7: (TextSize, core::option::Option, TextSize), + __8: (TextSize, TextSize, TextSize), +) -> ast::Stmt +{ + let __start0 = __4.0; + let __end0 = __6.2; + let __temp0 = __action1104( + mode, + __4, + __5, + __6, + ); + let __temp0 = (__start0, __temp0, __end0); + __action924( + mode, + __0, + __1, + __2, + __3, + __temp0, + __7, + __8, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1112< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Suite, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, core::option::Option, TextSize), + __5: (TextSize, TextSize, TextSize), +) -> ast::Stmt +{ + let __start0 = __3.2; + let __end0 = __4.0; + let __temp0 = __action318( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action924( + mode, + __0, + __1, + __2, + __3, + __temp0, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1113< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Suite, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __4.0; + let __end0 = __6.2; + let __temp0 = __action1104( + mode, + __4, + __5, + __6, + ); + let __temp0 = (__start0, __temp0, __end0); + __action936( + mode, + __0, + __1, + __2, + __3, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1114< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __3.2; + let __end0 = __3.2; + let __temp0 = __action318( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action936( + mode, + __0, + __1, + __2, + __3, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1115< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Suite, TextSize), +) -> core::option::Option +{ + let __start0 = __0.0; + let __end0 = __2.2; + let __temp0 = __action312( + mode, + __0, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action310( + mode, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1116< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Suite, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __3.0; + let __end0 = __5.2; + let __temp0 = __action312( + mode, + __3, + __4, + __5, + ); + let __temp0 = (__start0, __temp0, __end0); + __action925( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1117< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Suite, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, ast::Suite, TextSize), + __7: (TextSize, token::Tok, TextSize), + __8: (TextSize, token::Tok, TextSize), + __9: (TextSize, ast::Suite, TextSize), + __10: (TextSize, TextSize, TextSize), +) -> ast::Stmt +{ + let __start0 = __7.0; + let __end0 = __9.2; + let __temp0 = __action1115( + mode, + __7, + __8, + __9, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1109( + mode, + __0, + __1, + __2, + __3, + __4, + __5, + __6, + __temp0, + __10, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1118< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Suite, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, ast::Suite, TextSize), + __7: (TextSize, TextSize, TextSize), +) -> ast::Stmt +{ + let __start0 = __6.2; + let __end0 = __7.0; + let __temp0 = __action311( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1109( + mode, + __0, + __1, + __2, + __3, + __4, + __5, + __6, + __temp0, + __7, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1119< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Suite, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, ast::Suite, TextSize), + __7: (TextSize, TextSize, TextSize), +) -> ast::Stmt +{ + let __start0 = __4.0; + let __end0 = __6.2; + let __temp0 = __action1115( + mode, + __4, + __5, + __6, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1110( + mode, + __0, + __1, + __2, + __3, + __temp0, + __7, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1120< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Suite, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, TextSize, TextSize), +) -> ast::Stmt +{ + let __start0 = __3.2; + let __end0 = __4.0; + let __temp0 = __action311( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1110( + mode, + __0, + __1, + __2, + __3, + __temp0, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1121< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Suite, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, ast::Suite, TextSize), + __7: (TextSize, token::Tok, TextSize), + __8: (TextSize, token::Tok, TextSize), + __9: (TextSize, ast::Suite, TextSize), + __10: (TextSize, TextSize, TextSize), +) -> ast::Stmt +{ + let __start0 = __7.0; + let __end0 = __9.2; + let __temp0 = __action1115( + mode, + __7, + __8, + __9, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1111( + mode, + __0, + __1, + __2, + __3, + __4, + __5, + __6, + __temp0, + __10, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1122< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Suite, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, ast::Suite, TextSize), + __7: (TextSize, TextSize, TextSize), +) -> ast::Stmt +{ + let __start0 = __6.2; + let __end0 = __7.0; + let __temp0 = __action311( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1111( + mode, + __0, + __1, + __2, + __3, + __4, + __5, + __6, + __temp0, + __7, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1123< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Suite, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, ast::Suite, TextSize), + __7: (TextSize, TextSize, TextSize), +) -> ast::Stmt +{ + let __start0 = __4.0; + let __end0 = __6.2; + let __temp0 = __action1115( + mode, + __4, + __5, + __6, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1112( + mode, + __0, + __1, + __2, + __3, + __temp0, + __7, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1124< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Suite, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, TextSize, TextSize), +) -> ast::Stmt +{ + let __start0 = __3.2; + let __end0 = __4.0; + let __temp0 = __action311( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1112( + mode, + __0, + __1, + __2, + __3, + __temp0, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1125< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), +) -> core::option::Option +{ + let __start0 = __0.0; + let __end0 = __1.2; + let __temp0 = __action372( + mode, + __0, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action370( + mode, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1126< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Expr, TextSize), + __4: (TextSize, TextSize, TextSize), +) -> ast::Stmt +{ + let __start0 = __2.0; + let __end0 = __3.2; + let __temp0 = __action1125( + mode, + __2, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action895( + mode, + __0, + __1, + __temp0, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1127< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, TextSize, TextSize), +) -> ast::Stmt +{ + let __start0 = __1.2; + let __end0 = __2.0; + let __temp0 = __action371( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action895( + mode, + __0, + __1, + __temp0, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1128< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Suite, TextSize), +) -> alloc::vec::Vec<(TextSize, ast::Expr, ast::Suite)> +{ + let __start0 = __0.0; + let __end0 = __3.2; + let __temp0 = __action702( + mode, + __0, + __1, + __2, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action405( + mode, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1129< +>( + mode: Mode, + __0: (TextSize, alloc::vec::Vec<(TextSize, ast::Expr, ast::Suite)>, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Expr, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, ast::Suite, TextSize), +) -> alloc::vec::Vec<(TextSize, ast::Expr, ast::Suite)> +{ + let __start0 = __1.0; + let __end0 = __4.2; + let __temp0 = __action702( + mode, + __1, + __2, + __3, + __4, + ); + let __temp0 = (__start0, __temp0, __end0); + __action406( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1130< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Suite, TextSize), + __4: (TextSize, core::option::Option<(TextSize, ast::Suite)>, TextSize), +) -> ast::Stmt +{ + let __start0 = __3.2; + let __end0 = __4.0; + let __temp0 = __action323( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action815( + mode, + __0, + __1, + __2, + __3, + __temp0, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1131< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Suite, TextSize), + __4: (TextSize, alloc::vec::Vec<(TextSize, ast::Expr, ast::Suite)>, TextSize), + __5: (TextSize, core::option::Option<(TextSize, ast::Suite)>, TextSize), +) -> ast::Stmt +{ + let __start0 = __4.0; + let __end0 = __4.2; + let __temp0 = __action324( + mode, + __4, + ); + let __temp0 = (__start0, __temp0, __end0); + __action815( + mode, + __0, + __1, + __2, + __3, + __temp0, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1132< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Suite, TextSize), +) -> core::option::Option<(TextSize, ast::Suite)> +{ + let __start0 = __0.0; + let __end0 = __2.2; + let __temp0 = __action703( + mode, + __0, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action320( + mode, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1133< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Suite, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __4.0; + let __end0 = __6.2; + let __temp0 = __action1132( + mode, + __4, + __5, + __6, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1130( + mode, + __0, + __1, + __2, + __3, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1134< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __3.2; + let __end0 = __3.2; + let __temp0 = __action321( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1130( + mode, + __0, + __1, + __2, + __3, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1135< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Suite, TextSize), + __4: (TextSize, alloc::vec::Vec<(TextSize, ast::Expr, ast::Suite)>, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, token::Tok, TextSize), + __7: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __5.0; + let __end0 = __7.2; + let __temp0 = __action1132( + mode, + __5, + __6, + __7, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1131( + mode, + __0, + __1, + __2, + __3, + __4, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1136< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Suite, TextSize), + __4: (TextSize, alloc::vec::Vec<(TextSize, ast::Expr, ast::Suite)>, TextSize), +) -> ast::Stmt +{ + let __start0 = __4.2; + let __end0 = __4.2; + let __temp0 = __action321( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1131( + mode, + __0, + __1, + __2, + __3, + __4, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1137< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), +) -> alloc::vec::Vec +{ + let __start0 = __0.0; + let __end0 = __1.2; + let __temp0 = __action434( + mode, + __0, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action432( + mode, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1138< +>( + mode: Mode, + __0: (TextSize, alloc::vec::Vec, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, token::Tok, TextSize), +) -> alloc::vec::Vec +{ + let __start0 = __1.0; + let __end0 = __2.2; + let __temp0 = __action434( + mode, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action433( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1139< +>( + mode: Mode, + __0: (TextSize, (Option<(TextSize, TextSize, Option)>, ast::Expr), TextSize), + __1: (TextSize, token::Tok, TextSize), +) -> alloc::vec::Vec<(Option<(TextSize, TextSize, Option)>, ast::Expr)> +{ + let __start0 = __0.0; + let __end0 = __1.2; + let __temp0 = __action443( + mode, + __0, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action444( + mode, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1140< +>( + mode: Mode, + __0: (TextSize, alloc::vec::Vec<(Option<(TextSize, TextSize, Option)>, ast::Expr)>, TextSize), + __1: (TextSize, (Option<(TextSize, TextSize, Option)>, ast::Expr), TextSize), + __2: (TextSize, token::Tok, TextSize), +) -> alloc::vec::Vec<(Option<(TextSize, TextSize, Option)>, ast::Expr)> +{ + let __start0 = __1.0; + let __end0 = __2.2; + let __temp0 = __action443( + mode, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action445( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1141< +>( + mode: Mode, + __0: (TextSize, core::option::Option<(Option<(TextSize, TextSize, Option)>, ast::Expr)>, TextSize), +) -> Vec<(Option<(TextSize, TextSize, Option)>, ast::Expr)> +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action441( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action238( + mode, + __temp0, + __0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1142< +>( + mode: Mode, + __0: (TextSize, alloc::vec::Vec<(Option<(TextSize, TextSize, Option)>, ast::Expr)>, TextSize), + __1: (TextSize, core::option::Option<(Option<(TextSize, TextSize, Option)>, ast::Expr)>, TextSize), +) -> Vec<(Option<(TextSize, TextSize, Option)>, ast::Expr)> +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action442( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action238( + mode, + __temp0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1143< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), +) -> alloc::vec::Vec +{ + let __start0 = __0.0; + let __end0 = __1.2; + let __temp0 = __action448( + mode, + __0, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action446( + mode, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1144< +>( + mode: Mode, + __0: (TextSize, alloc::vec::Vec, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, token::Tok, TextSize), +) -> alloc::vec::Vec +{ + let __start0 = __1.0; + let __end0 = __2.2; + let __temp0 = __action448( + mode, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action447( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1145< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), +) -> core::option::Option> +{ + let __start0 = __0.0; + let __end0 = __1.2; + let __temp0 = __action548( + mode, + __0, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action546( + mode, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1146< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, Vec, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Expr, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __1.0; + let __end0 = __2.2; + let __temp0 = __action1145( + mode, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1064( + mode, + __0, + __temp0, + __3, + __4, + __5, + __6, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1147< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __0.2; + let __end0 = __1.0; + let __temp0 = __action547( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1064( + mode, + __0, + __temp0, + __1, + __2, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1148< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, Vec, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Expr, TextSize), + __4: (TextSize, alloc::vec::Vec, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, token::Tok, TextSize), + __7: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __1.0; + let __end0 = __2.2; + let __temp0 = __action1145( + mode, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1065( + mode, + __0, + __temp0, + __3, + __4, + __5, + __6, + __7, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1149< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, alloc::vec::Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __0.2; + let __end0 = __1.0; + let __temp0 = __action547( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1065( + mode, + __0, + __temp0, + __1, + __2, + __3, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1150< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, Vec, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Expr, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __1.0; + let __end0 = __2.2; + let __temp0 = __action1145( + mode, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1066( + mode, + __0, + __temp0, + __3, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1151< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __0.2; + let __end0 = __1.0; + let __temp0 = __action547( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1066( + mode, + __0, + __temp0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1152< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, Vec, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Expr, TextSize), + __4: (TextSize, alloc::vec::Vec, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __1.0; + let __end0 = __2.2; + let __temp0 = __action1145( + mode, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1067( + mode, + __0, + __temp0, + __3, + __4, + __5, + __6, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1153< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, alloc::vec::Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __0.2; + let __end0 = __1.0; + let __temp0 = __action547( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1067( + mode, + __0, + __temp0, + __1, + __2, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1154< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, Vec, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Expr, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __1.0; + let __end0 = __2.2; + let __temp0 = __action1145( + mode, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1068( + mode, + __0, + __temp0, + __3, + __4, + __5, + __6, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1155< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __0.2; + let __end0 = __1.0; + let __temp0 = __action547( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1068( + mode, + __0, + __temp0, + __1, + __2, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1156< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, Vec, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Expr, TextSize), + __4: (TextSize, alloc::vec::Vec, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, token::Tok, TextSize), + __7: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __1.0; + let __end0 = __2.2; + let __temp0 = __action1145( + mode, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1069( + mode, + __0, + __temp0, + __3, + __4, + __5, + __6, + __7, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1157< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, alloc::vec::Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __0.2; + let __end0 = __1.0; + let __temp0 = __action547( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1069( + mode, + __0, + __temp0, + __1, + __2, + __3, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1158< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, Vec, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Expr, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __1.0; + let __end0 = __2.2; + let __temp0 = __action1145( + mode, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1070( + mode, + __0, + __temp0, + __3, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1159< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __0.2; + let __end0 = __1.0; + let __temp0 = __action547( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1070( + mode, + __0, + __temp0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1160< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, Vec, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Expr, TextSize), + __4: (TextSize, alloc::vec::Vec, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __1.0; + let __end0 = __2.2; + let __temp0 = __action1145( + mode, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1071( + mode, + __0, + __temp0, + __3, + __4, + __5, + __6, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1161< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, alloc::vec::Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, TextSize, TextSize), +) -> Result> +{ + let __start0 = __0.2; + let __end0 = __1.0; + let __temp0 = __action547( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1071( + mode, + __0, + __temp0, + __1, + __2, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1162< +>( + mode: Mode, + __0: (TextSize, ast::Pattern, TextSize), + __1: (TextSize, token::Tok, TextSize), +) -> alloc::vec::Vec +{ + let __start0 = __0.0; + let __end0 = __1.2; + let __temp0 = __action338( + mode, + __0, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action336( + mode, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1163< +>( + mode: Mode, + __0: (TextSize, alloc::vec::Vec, TextSize), + __1: (TextSize, ast::Pattern, TextSize), + __2: (TextSize, token::Tok, TextSize), +) -> alloc::vec::Vec +{ + let __start0 = __1.0; + let __end0 = __2.2; + let __temp0 = __action338( + mode, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action337( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1164< +>( + mode: Mode, + __0: (TextSize, core::option::Option, TextSize), +) -> Vec +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action403( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action335( + mode, + __temp0, + __0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1165< +>( + mode: Mode, + __0: (TextSize, alloc::vec::Vec, TextSize), + __1: (TextSize, core::option::Option, TextSize), +) -> Vec +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action404( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action335( + mode, + __temp0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1166< +>( + mode: Mode, + __0: (TextSize, ast::Stmt, TextSize), + __1: (TextSize, token::Tok, TextSize), +) -> alloc::vec::Vec +{ + let __start0 = __0.0; + let __end0 = __1.2; + let __temp0 = __action386( + mode, + __0, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action394( + mode, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1167< +>( + mode: Mode, + __0: (TextSize, alloc::vec::Vec, TextSize), + __1: (TextSize, ast::Stmt, TextSize), + __2: (TextSize, token::Tok, TextSize), +) -> alloc::vec::Vec +{ + let __start0 = __1.0; + let __end0 = __2.2; + let __temp0 = __action386( + mode, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action395( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1168< +>( + mode: Mode, + __0: (TextSize, ast::Suite, TextSize), + __1: (TextSize, ast::Stmt, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), +) -> ast::Suite +{ + let __start0 = __0.2; + let __end0 = __1.0; + let __temp0 = __action384( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action649( + mode, + __0, + __temp0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1169< +>( + mode: Mode, + __0: (TextSize, ast::Suite, TextSize), + __1: (TextSize, alloc::vec::Vec, TextSize), + __2: (TextSize, ast::Stmt, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, token::Tok, TextSize), +) -> ast::Suite +{ + let __start0 = __1.0; + let __end0 = __1.2; + let __temp0 = __action385( + mode, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action649( + mode, + __0, + __temp0, + __2, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1170< +>( + mode: Mode, + __0: (TextSize, ast::Suite, TextSize), + __1: (TextSize, ast::Stmt, TextSize), + __2: (TextSize, token::Tok, TextSize), +) -> ast::Suite +{ + let __start0 = __0.2; + let __end0 = __1.0; + let __temp0 = __action384( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action650( + mode, + __0, + __temp0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1171< +>( + mode: Mode, + __0: (TextSize, ast::Suite, TextSize), + __1: (TextSize, alloc::vec::Vec, TextSize), + __2: (TextSize, ast::Stmt, TextSize), + __3: (TextSize, token::Tok, TextSize), +) -> ast::Suite +{ + let __start0 = __1.0; + let __end0 = __1.2; + let __temp0 = __action385( + mode, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action650( + mode, + __0, + __temp0, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1172< +>( + mode: Mode, + __0: (TextSize, ast::Stmt, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), +) -> Vec +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action384( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action651( + mode, + __temp0, + __0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1173< +>( + mode: Mode, + __0: (TextSize, alloc::vec::Vec, TextSize), + __1: (TextSize, ast::Stmt, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), +) -> Vec +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action385( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action651( + mode, + __temp0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1174< +>( + mode: Mode, + __0: (TextSize, ast::Stmt, TextSize), + __1: (TextSize, token::Tok, TextSize), +) -> Vec +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action384( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action652( + mode, + __temp0, + __0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1175< +>( + mode: Mode, + __0: (TextSize, alloc::vec::Vec, TextSize), + __1: (TextSize, ast::Stmt, TextSize), + __2: (TextSize, token::Tok, TextSize), +) -> Vec +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action385( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action652( + mode, + __temp0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1176< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, ast::Stmt, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), +) -> Vec +{ + let __start0 = __0.2; + let __end0 = __1.0; + let __temp0 = __action384( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action653( + mode, + __0, + __temp0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1177< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, alloc::vec::Vec, TextSize), + __2: (TextSize, ast::Stmt, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, token::Tok, TextSize), +) -> Vec +{ + let __start0 = __1.0; + let __end0 = __1.2; + let __temp0 = __action385( + mode, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action653( + mode, + __0, + __temp0, + __2, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1178< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, ast::Stmt, TextSize), + __2: (TextSize, token::Tok, TextSize), +) -> Vec +{ + let __start0 = __0.2; + let __end0 = __1.0; + let __temp0 = __action384( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action654( + mode, + __0, + __temp0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1179< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, alloc::vec::Vec, TextSize), + __2: (TextSize, ast::Stmt, TextSize), + __3: (TextSize, token::Tok, TextSize), +) -> Vec +{ + let __start0 = __1.0; + let __end0 = __1.2; + let __temp0 = __action385( + mode, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action654( + mode, + __0, + __temp0, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1180< +>( + mode: Mode, + __0: (TextSize, ast::Stmt, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), +) -> ast::Suite +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action384( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action655( + mode, + __temp0, + __0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1181< +>( + mode: Mode, + __0: (TextSize, alloc::vec::Vec, TextSize), + __1: (TextSize, ast::Stmt, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), +) -> ast::Suite +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action385( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action655( + mode, + __temp0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1182< +>( + mode: Mode, + __0: (TextSize, ast::Stmt, TextSize), + __1: (TextSize, token::Tok, TextSize), +) -> ast::Suite +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action384( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action656( + mode, + __temp0, + __0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1183< +>( + mode: Mode, + __0: (TextSize, alloc::vec::Vec, TextSize), + __1: (TextSize, ast::Stmt, TextSize), + __2: (TextSize, token::Tok, TextSize), +) -> ast::Suite +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action385( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action656( + mode, + __temp0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1184< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Identifier, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, ast::Suite, TextSize), +) -> ast::ExceptHandler +{ + let __start0 = __1.0; + let __end0 = __3.2; + let __temp0 = __action307( + mode, + __1, + __2, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action787( + mode, + __0, + __temp0, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1185< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Expr, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, ast::Identifier, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, ast::Suite, TextSize), +) -> ast::ExceptHandler +{ + let __start0 = __2.0; + let __end0 = __4.2; + let __temp0 = __action307( + mode, + __2, + __3, + __4, + ); + let __temp0 = (__start0, __temp0, __end0); + __action789( + mode, + __0, + __1, + __temp0, + __5, + __6, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1186< +>( + mode: Mode, + __0: (TextSize, (String, StringKind, bool), TextSize), +) -> (TextSize, (String, StringKind, bool), TextSize) +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action704( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1187< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, ast::Operator, TextSize), + __2: (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + let __start0 = __2.2; + let __end0 = __2.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action705( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1188< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + let __start0 = __2.2; + let __end0 = __2.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action706( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1189< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + let __start0 = __2.2; + let __end0 = __2.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action707( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1190< +>( + mode: Mode, + __0: (TextSize, alloc::vec::Vec, TextSize), + __1: (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + let __start0 = __1.2; + let __end0 = __1.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action708( + mode, + __0, + __1, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1191< +>( + mode: Mode, + __0: (TextSize, alloc::vec::Vec, TextSize), + __1: (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + let __start0 = __1.2; + let __end0 = __1.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action709( + mode, + __0, + __1, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1192< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, ast::Operator, TextSize), + __2: (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + let __start0 = __2.2; + let __end0 = __2.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action710( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1193< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, ast::Operator, TextSize), + __2: (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + let __start0 = __2.2; + let __end0 = __2.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action711( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1194< +>( + mode: Mode, + __0: (TextSize, ast::Pattern, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Identifier, TextSize), +) -> Result> +{ + let __start0 = __2.2; + let __end0 = __2.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action712( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1195< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Expr, TextSize), +) -> ast::Stmt +{ + let __start0 = __3.2; + let __end0 = __3.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1060( + mode, + __0, + __1, + __2, + __3, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1196< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), +) -> ast::Stmt +{ + let __start0 = __1.2; + let __end0 = __1.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1061( + mode, + __0, + __1, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1197< +>( + mode: Mode, + __0: (TextSize, ast::Constant, TextSize), +) -> ast::Expr +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action715( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1198< +>( + mode: Mode, + __0: (TextSize, ast::Identifier, TextSize), +) -> ast::Expr +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action716( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1199< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, core::option::Option>, TextSize), + __2: (TextSize, token::Tok, TextSize), +) -> ast::Expr +{ + let __start0 = __2.2; + let __end0 = __2.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action717( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1200< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), +) -> ast::Expr +{ + let __start0 = __3.2; + let __end0 = __3.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action718( + mode, + __0, + __1, + __2, + __3, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1201< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, Vec, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), +) -> ast::Expr +{ + let __start0 = __3.2; + let __end0 = __3.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action719( + mode, + __0, + __1, + __2, + __3, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1202< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, Vec, TextSize), + __2: (TextSize, token::Tok, TextSize), +) -> ast::Expr +{ + let __start0 = __2.2; + let __end0 = __2.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action720( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1203< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, Vec, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Expr, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __5.2; + let __end0 = __5.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1146( + mode, + __0, + __1, + __2, + __3, + __4, + __5, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1204< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __3.2; + let __end0 = __3.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1147( + mode, + __0, + __1, + __2, + __3, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1205< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, Vec, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Expr, TextSize), + __4: (TextSize, alloc::vec::Vec, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __6.2; + let __end0 = __6.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1148( + mode, + __0, + __1, + __2, + __3, + __4, + __5, + __6, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1206< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, alloc::vec::Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __4.2; + let __end0 = __4.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1149( + mode, + __0, + __1, + __2, + __3, + __4, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1207< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, Vec, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Expr, TextSize), + __4: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __4.2; + let __end0 = __4.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1150( + mode, + __0, + __1, + __2, + __3, + __4, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1208< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __2.2; + let __end0 = __2.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1151( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1209< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, Vec, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Expr, TextSize), + __4: (TextSize, alloc::vec::Vec, TextSize), + __5: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __5.2; + let __end0 = __5.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1152( + mode, + __0, + __1, + __2, + __3, + __4, + __5, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1210< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, alloc::vec::Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __3.2; + let __end0 = __3.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1153( + mode, + __0, + __1, + __2, + __3, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1211< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), +) -> ast::Expr +{ + let __start0 = __1.2; + let __end0 = __1.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action723( + mode, + __0, + __1, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1212< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), +) -> ast::Expr +{ + let __start0 = __3.2; + let __end0 = __3.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action724( + mode, + __0, + __1, + __2, + __3, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1213< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Expr, TextSize), + __3: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __3.2; + let __end0 = __3.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action725( + mode, + __0, + __1, + __2, + __3, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1214< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, core::option::Option>, ast::Expr)>>, TextSize), + __2: (TextSize, token::Tok, TextSize), +) -> ast::Expr +{ + let __start0 = __2.2; + let __end0 = __2.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action726( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1215< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, (ast::Expr, ast::Expr), TextSize), + __2: (TextSize, Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), +) -> ast::Expr +{ + let __start0 = __3.2; + let __end0 = __3.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action727( + mode, + __0, + __1, + __2, + __3, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1216< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, Vec, TextSize), + __2: (TextSize, token::Tok, TextSize), +) -> ast::Expr +{ + let __start0 = __2.2; + let __end0 = __2.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action728( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1217< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), +) -> ast::Expr +{ + let __start0 = __3.2; + let __end0 = __3.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action729( + mode, + __0, + __1, + __2, + __3, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1218< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), +) -> ast::Expr +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action730( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1219< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), +) -> ast::Expr +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action731( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1220< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), +) -> ast::Expr +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action732( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1221< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), +) -> ast::Expr +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action733( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1222< +>( + mode: Mode, + __0: (TextSize, ast::Constant, TextSize), +) -> ast::Expr +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action735( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1223< +>( + mode: Mode, + __0: (TextSize, ast::Identifier, TextSize), +) -> ast::Expr +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action736( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1224< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, core::option::Option>, TextSize), + __2: (TextSize, token::Tok, TextSize), +) -> ast::Expr +{ + let __start0 = __2.2; + let __end0 = __2.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action737( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1225< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), +) -> ast::Expr +{ + let __start0 = __3.2; + let __end0 = __3.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action738( + mode, + __0, + __1, + __2, + __3, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1226< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, Vec, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Expr, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __5.2; + let __end0 = __5.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1154( + mode, + __0, + __1, + __2, + __3, + __4, + __5, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1227< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __3.2; + let __end0 = __3.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1155( + mode, + __0, + __1, + __2, + __3, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1228< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, Vec, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Expr, TextSize), + __4: (TextSize, alloc::vec::Vec, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __6.2; + let __end0 = __6.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1156( + mode, + __0, + __1, + __2, + __3, + __4, + __5, + __6, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1229< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, alloc::vec::Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __4.2; + let __end0 = __4.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1157( + mode, + __0, + __1, + __2, + __3, + __4, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1230< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, Vec, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Expr, TextSize), + __4: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __4.2; + let __end0 = __4.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1158( + mode, + __0, + __1, + __2, + __3, + __4, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1231< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __2.2; + let __end0 = __2.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1159( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1232< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, Vec, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Expr, TextSize), + __4: (TextSize, alloc::vec::Vec, TextSize), + __5: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __5.2; + let __end0 = __5.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1160( + mode, + __0, + __1, + __2, + __3, + __4, + __5, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1233< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, alloc::vec::Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __3.2; + let __end0 = __3.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1161( + mode, + __0, + __1, + __2, + __3, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1234< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), +) -> ast::Expr +{ + let __start0 = __1.2; + let __end0 = __1.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action741( + mode, + __0, + __1, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1235< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), +) -> ast::Expr +{ + let __start0 = __3.2; + let __end0 = __3.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action742( + mode, + __0, + __1, + __2, + __3, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1236< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Expr, TextSize), + __3: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __3.2; + let __end0 = __3.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action743( + mode, + __0, + __1, + __2, + __3, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1237< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, core::option::Option>, ast::Expr)>>, TextSize), + __2: (TextSize, token::Tok, TextSize), +) -> ast::Expr +{ + let __start0 = __2.2; + let __end0 = __2.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action744( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1238< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, (ast::Expr, ast::Expr), TextSize), + __2: (TextSize, Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), +) -> ast::Expr +{ + let __start0 = __3.2; + let __end0 = __3.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action745( + mode, + __0, + __1, + __2, + __3, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1239< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, Vec, TextSize), + __2: (TextSize, token::Tok, TextSize), +) -> ast::Expr +{ + let __start0 = __2.2; + let __end0 = __2.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action746( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1240< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), +) -> ast::Expr +{ + let __start0 = __3.2; + let __end0 = __3.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action747( + mode, + __0, + __1, + __2, + __3, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1241< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), +) -> ast::Expr +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action748( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1242< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), +) -> ast::Expr +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action749( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1243< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), +) -> ast::Expr +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action750( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1244< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), +) -> ast::Expr +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action751( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1245< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ArgumentList, TextSize), + __3: (TextSize, token::Tok, TextSize), +) -> ast::Expr +{ + let __start0 = __3.2; + let __end0 = __3.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action752( + mode, + __0, + __1, + __2, + __3, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1246< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Expr, TextSize), + __3: (TextSize, token::Tok, TextSize), +) -> ast::Expr +{ + let __start0 = __3.2; + let __end0 = __3.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action753( + mode, + __0, + __1, + __2, + __3, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1247< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Identifier, TextSize), +) -> ast::Expr +{ + let __start0 = __2.2; + let __end0 = __2.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action754( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1248< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ArgumentList, TextSize), + __3: (TextSize, token::Tok, TextSize), +) -> ast::Expr +{ + let __start0 = __3.2; + let __end0 = __3.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action755( + mode, + __0, + __1, + __2, + __3, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1249< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Expr, TextSize), + __3: (TextSize, token::Tok, TextSize), +) -> ast::Expr +{ + let __start0 = __3.2; + let __end0 = __3.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action756( + mode, + __0, + __1, + __2, + __3, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1250< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Identifier, TextSize), +) -> ast::Expr +{ + let __start0 = __2.2; + let __end0 = __2.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action757( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1251< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + let __start0 = __1.2; + let __end0 = __1.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action758( + mode, + __0, + __1, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1252< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + let __start0 = __1.2; + let __end0 = __1.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action759( + mode, + __0, + __1, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1253< +>( + mode: Mode, + __0: (TextSize, ast::Identifier, TextSize), +) -> ast::Pattern +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action760( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1254< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, Vec<(ast::Identifier, ast::Pattern)>, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, token::Tok, TextSize), +) -> ast::Pattern +{ + let __start0 = __6.2; + let __end0 = __6.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action763( + mode, + __0, + __1, + __2, + __3, + __4, + __5, + __6, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1255< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, Vec<(ast::Identifier, ast::Pattern)>, TextSize), + __5: (TextSize, token::Tok, TextSize), +) -> ast::Pattern +{ + let __start0 = __5.2; + let __end0 = __5.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action764( + mode, + __0, + __1, + __2, + __3, + __4, + __5, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1256< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, token::Tok, TextSize), +) -> ast::Pattern +{ + let __start0 = __4.2; + let __end0 = __4.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action765( + mode, + __0, + __1, + __2, + __3, + __4, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1257< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), +) -> ast::Pattern +{ + let __start0 = __3.2; + let __end0 = __3.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action766( + mode, + __0, + __1, + __2, + __3, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1258< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, Vec<(ast::Identifier, ast::Pattern)>, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, token::Tok, TextSize), +) -> ast::Pattern +{ + let __start0 = __4.2; + let __end0 = __4.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action767( + mode, + __0, + __1, + __2, + __3, + __4, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1259< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, Vec<(ast::Identifier, ast::Pattern)>, TextSize), + __3: (TextSize, token::Tok, TextSize), +) -> ast::Pattern +{ + let __start0 = __3.2; + let __end0 = __3.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action768( + mode, + __0, + __1, + __2, + __3, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1260< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), +) -> ast::Pattern +{ + let __start0 = __2.2; + let __end0 = __2.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action769( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1261< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, Vec<(ast::Identifier, ast::Pattern)>, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, token::Tok, TextSize), +) -> ast::Pattern +{ + let __start0 = __6.2; + let __end0 = __6.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action770( + mode, + __0, + __1, + __2, + __3, + __4, + __5, + __6, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1262< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, Vec<(ast::Identifier, ast::Pattern)>, TextSize), + __5: (TextSize, token::Tok, TextSize), +) -> ast::Pattern +{ + let __start0 = __5.2; + let __end0 = __5.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action771( + mode, + __0, + __1, + __2, + __3, + __4, + __5, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1263< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, token::Tok, TextSize), +) -> ast::Pattern +{ + let __start0 = __4.2; + let __end0 = __4.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action772( + mode, + __0, + __1, + __2, + __3, + __4, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1264< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), +) -> ast::Pattern +{ + let __start0 = __3.2; + let __end0 = __3.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action773( + mode, + __0, + __1, + __2, + __3, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1265< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, Vec<(ast::Identifier, ast::Pattern)>, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, token::Tok, TextSize), +) -> ast::Pattern +{ + let __start0 = __4.2; + let __end0 = __4.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action774( + mode, + __0, + __1, + __2, + __3, + __4, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1266< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, Vec<(ast::Identifier, ast::Pattern)>, TextSize), + __3: (TextSize, token::Tok, TextSize), +) -> ast::Pattern +{ + let __start0 = __3.2; + let __end0 = __3.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action775( + mode, + __0, + __1, + __2, + __3, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1267< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), +) -> ast::Pattern +{ + let __start0 = __2.2; + let __end0 = __2.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action776( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1268< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, alloc::vec::Vec<(ast::CmpOp, ast::Expr)>, TextSize), +) -> ast::Expr +{ + let __start0 = __1.2; + let __end0 = __1.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action777( + mode, + __0, + __1, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1269< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, alloc::vec::Vec<(ast::CmpOp, ast::Expr)>, TextSize), +) -> ast::Expr +{ + let __start0 = __1.2; + let __end0 = __1.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action778( + mode, + __0, + __1, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1270< +>( + mode: Mode, + __0: (TextSize, ast::Constant, TextSize), +) -> ast::Expr +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action779( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1271< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + let __start0 = __1.2; + let __end0 = __1.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action780( + mode, + __0, + __1, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1272< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, token::Tok, TextSize), +) -> ast::Decorator +{ + let __start0 = __1.2; + let __end0 = __2.0; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action781( + mode, + __0, + __1, + __temp0, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1273< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, Vec, TextSize), +) -> ast::Stmt +{ + let __start0 = __1.2; + let __end0 = __1.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action782( + mode, + __0, + __1, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1274< +>( + mode: Mode, + __0: (TextSize, String, TextSize), +) -> ast::Identifier +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action783( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1275< +>( + mode: Mode, + __0: (TextSize, String, TextSize), + __1: (TextSize, alloc::vec::Vec<(token::Tok, ast::Identifier)>, TextSize), +) -> ast::Identifier +{ + let __start0 = __1.2; + let __end0 = __1.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action784( + mode, + __0, + __1, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1276< +>( + mode: Mode, + __0: (TextSize, ast::Identifier, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Expr, TextSize), +) -> ast::Arg +{ + let __start0 = __2.2; + let __end0 = __2.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1086( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1277< +>( + mode: Mode, + __0: (TextSize, ast::Identifier, TextSize), +) -> ast::Arg +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1087( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1278< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + let __start0 = __2.2; + let __end0 = __2.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action790( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1279< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + let __start0 = __2.2; + let __end0 = __2.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action791( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1280< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, alloc::vec::Vec, TextSize), +) -> ast::Stmt +{ + let __start0 = __1.2; + let __end0 = __1.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action792( + mode, + __0, + __1, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1281< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, ast::Operator, TextSize), + __2: (TextSize, ast::Expr, TextSize), +) -> ast::Stmt +{ + let __start0 = __2.2; + let __end0 = __2.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action793( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1282< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Expr, TextSize), + __3: (TextSize, core::option::Option, TextSize), +) -> ast::Stmt +{ + let __start0 = __3.2; + let __end0 = __3.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action794( + mode, + __0, + __1, + __2, + __3, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1283< +>( + mode: Mode, + __0: (TextSize, ast::UnaryOp, TextSize), + __1: (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + let __start0 = __1.2; + let __end0 = __1.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action795( + mode, + __0, + __1, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1284< +>( + mode: Mode, + __0: (TextSize, ast::UnaryOp, TextSize), + __1: (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + let __start0 = __1.2; + let __end0 = __1.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action796( + mode, + __0, + __1, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1285< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), +) -> ast::Stmt +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action797( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1286< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), +) -> ast::Stmt +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action798( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1287< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, core::option::Option, TextSize), +) -> ast::Stmt +{ + let __start0 = __1.2; + let __end0 = __1.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action799( + mode, + __0, + __1, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1288< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), +) -> ast::Stmt +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action800( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1289< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, core::option::Option>, TextSize), +) -> (Option<(TextSize, TextSize, Option)>, ast::Expr) +{ + let __start0 = __1.2; + let __end0 = __1.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action805( + mode, + __0, + __1, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1290< +>( + mode: Mode, + __0: (TextSize, ast::Identifier, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Expr, TextSize), +) -> (Option<(TextSize, TextSize, Option)>, ast::Expr) +{ + let __start0 = __2.2; + let __end0 = __2.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action806( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1291< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), +) -> (Option<(TextSize, TextSize, Option)>, ast::Expr) +{ + let __start0 = __1.2; + let __end0 = __1.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action807( + mode, + __0, + __1, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1292< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), +) -> (Option<(TextSize, TextSize, Option)>, ast::Expr) +{ + let __start0 = __1.2; + let __end0 = __1.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action808( + mode, + __0, + __1, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1293< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), +) -> ast::Expr +{ + let __start0 = __1.2; + let __end0 = __1.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action809( + mode, + __0, + __1, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1294< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), +) -> ast::Expr +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action810( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1295< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), +) -> ast::Expr +{ + let __start0 = __1.2; + let __end0 = __1.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action811( + mode, + __0, + __1, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1296< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), +) -> ast::Expr +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action812( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1297< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, Vec, TextSize), +) -> ast::Stmt +{ + let __start0 = __1.2; + let __end0 = __1.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action813( + mode, + __0, + __1, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1298< +>( + mode: Mode, + __0: (TextSize, String, TextSize), +) -> ast::Identifier +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action814( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1299< +>( + mode: Mode, + __0: (TextSize, ast::Identifier, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Identifier, TextSize), +) -> ast::Alias +{ + let __start0 = __2.2; + let __end0 = __2.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1100( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1300< +>( + mode: Mode, + __0: (TextSize, ast::Identifier, TextSize), +) -> ast::Alias +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1101( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1301< +>( + mode: Mode, + __0: (TextSize, ast::Identifier, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Identifier, TextSize), +) -> ast::Alias +{ + let __start0 = __2.2; + let __end0 = __2.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1102( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1302< +>( + mode: Mode, + __0: (TextSize, ast::Identifier, TextSize), +) -> ast::Alias +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1103( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1303< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), +) -> Vec +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action818( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1304< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, Vec, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), +) -> Vec +{ + let __start0 = __3.2; + let __end0 = __3.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action819( + mode, + __0, + __1, + __2, + __3, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1305< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, Vec, TextSize), + __2: (TextSize, token::Tok, TextSize), +) -> Vec +{ + let __start0 = __2.2; + let __end0 = __2.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action820( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1306< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), +) -> Vec +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action821( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1307< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, Vec, TextSize), +) -> ast::Stmt +{ + let __start0 = __1.2; + let __end0 = __1.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action822( + mode, + __0, + __1, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1308< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, (Option, Option), TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, Vec, TextSize), +) -> ast::Stmt +{ + let __start0 = __3.2; + let __end0 = __3.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action823( + mode, + __0, + __1, + __2, + __3, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1309< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, core::option::Option, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Expr, TextSize), +) -> Result> +{ + let __start0 = __1.2; + let __end0 = __2.0; + let __start1 = __3.2; + let __end1 = __3.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + let __temp1 = __action390( + mode, + &__start1, + &__end1, + ); + let __temp1 = (__start1, __temp1, __end1); + __action824( + mode, + __0, + __1, + __temp0, + __2, + __3, + __temp1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1310< +>( + mode: Mode, + __0: (TextSize, (MagicKind, String), TextSize), +) -> Result> +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action825( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1311< +>( + mode: Mode, + __0: (TextSize, (MagicKind, String), TextSize), +) -> Result> +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action826( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1312< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), +) -> ast::Pattern +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action827( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1313< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), +) -> ast::Pattern +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action828( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1314< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), +) -> ast::Pattern +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action829( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1315< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), +) -> ast::Pattern +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action830( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1316< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), +) -> ast::Pattern +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action831( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1317< +>( + mode: Mode, + __0: (TextSize, alloc::vec::Vec<(TextSize, (String, StringKind, bool), TextSize)>, TextSize), +) -> Result> +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action832( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1318< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), +) -> ast::Expr +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action833( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1319< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), +) -> ast::Expr +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action834( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1320< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), +) -> ast::Expr +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action835( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1321< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), +) -> ast::Pattern +{ + let __start0 = __1.2; + let __end0 = __1.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action837( + mode, + __0, + __1, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1322< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, Vec<(ast::Expr, ast::Pattern)>, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), +) -> ast::Pattern +{ + let __start0 = __3.2; + let __end0 = __3.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action838( + mode, + __0, + __1, + __2, + __3, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1323< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, Vec<(ast::Expr, ast::Pattern)>, TextSize), + __2: (TextSize, token::Tok, TextSize), +) -> ast::Pattern +{ + let __start0 = __2.2; + let __end0 = __2.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action839( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1324< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Identifier, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, token::Tok, TextSize), +) -> ast::Pattern +{ + let __start0 = __4.2; + let __end0 = __4.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action840( + mode, + __0, + __1, + __2, + __3, + __4, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1325< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Identifier, TextSize), + __3: (TextSize, token::Tok, TextSize), +) -> ast::Pattern +{ + let __start0 = __3.2; + let __end0 = __3.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action841( + mode, + __0, + __1, + __2, + __3, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1326< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, Vec<(ast::Expr, ast::Pattern)>, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, ast::Identifier, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, token::Tok, TextSize), +) -> ast::Pattern +{ + let __start0 = __6.2; + let __end0 = __6.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action842( + mode, + __0, + __1, + __2, + __3, + __4, + __5, + __6, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1327< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, Vec<(ast::Expr, ast::Pattern)>, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, ast::Identifier, TextSize), + __5: (TextSize, token::Tok, TextSize), +) -> ast::Pattern +{ + let __start0 = __5.2; + let __end0 = __5.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action843( + mode, + __0, + __1, + __2, + __3, + __4, + __5, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1328< +>( + mode: Mode, + __0: (TextSize, ast::Identifier, TextSize), +) -> ast::Expr +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action845( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1329< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Identifier, TextSize), +) -> ast::Expr +{ + let __start0 = __2.2; + let __end0 = __2.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action846( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1330< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Identifier, TextSize), +) -> ast::Expr +{ + let __start0 = __2.2; + let __end0 = __2.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action847( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1331< +>( + mode: Mode, + __0: (TextSize, ast::Identifier, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + let __start0 = __0.2; + let __end0 = __1.0; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action852( + mode, + __0, + __temp0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1332< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, Vec, TextSize), +) -> ast::Stmt +{ + let __start0 = __1.2; + let __end0 = __1.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action853( + mode, + __0, + __1, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1333< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + let __start0 = __1.2; + let __end0 = __1.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action854( + mode, + __0, + __1, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1334< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + let __start0 = __1.2; + let __end0 = __1.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action855( + mode, + __0, + __1, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1335< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), +) -> ast::Pattern +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action856( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1336< +>( + mode: Mode, + __0: (TextSize, alloc::vec::Vec, TextSize), + __1: (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + let __start0 = __1.2; + let __end0 = __1.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action857( + mode, + __0, + __1, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1337< +>( + mode: Mode, + __0: (TextSize, alloc::vec::Vec, TextSize), + __1: (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + let __start0 = __1.2; + let __end0 = __1.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action858( + mode, + __0, + __1, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1338< +>( + mode: Mode, + __0: (TextSize, ast::ArgWithDefault, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Expr, TextSize), +) -> ast::ArgWithDefault +{ + let __start0 = __2.2; + let __end0 = __2.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action472( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1339< +>( + mode: Mode, + __0: (TextSize, ast::ArgWithDefault, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Expr, TextSize), +) -> ast::ArgWithDefault +{ + let __start0 = __2.2; + let __end0 = __2.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action461( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1340< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Arg, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, Option>, TextSize), + __6: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __6.2; + let __end0 = __6.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action981( + mode, + __0, + __1, + __2, + __3, + __4, + __5, + __6, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1341< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, Option>, TextSize), + __5: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __5.2; + let __end0 = __5.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action982( + mode, + __0, + __1, + __2, + __3, + __4, + __5, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1342< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Arg, TextSize), + __4: (TextSize, alloc::vec::Vec, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, Option>, TextSize), + __7: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __7.2; + let __end0 = __7.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action983( + mode, + __0, + __1, + __2, + __3, + __4, + __5, + __6, + __7, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1343< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, Option>, TextSize), + __6: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __6.2; + let __end0 = __6.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action984( + mode, + __0, + __1, + __2, + __3, + __4, + __5, + __6, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1344< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Arg, TextSize), + __4: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __4.2; + let __end0 = __4.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action985( + mode, + __0, + __1, + __2, + __3, + __4, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1345< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __3.2; + let __end0 = __3.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action986( + mode, + __0, + __1, + __2, + __3, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1346< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Arg, TextSize), + __4: (TextSize, alloc::vec::Vec, TextSize), + __5: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __5.2; + let __end0 = __5.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action987( + mode, + __0, + __1, + __2, + __3, + __4, + __5, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1347< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __4.2; + let __end0 = __4.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action988( + mode, + __0, + __1, + __2, + __3, + __4, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1348< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __1.2; + let __end0 = __1.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action989( + mode, + __0, + __1, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1349< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Arg, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, Option>, TextSize), +) -> Result> +{ + let __start0 = __5.2; + let __end0 = __5.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action990( + mode, + __0, + __1, + __2, + __3, + __4, + __5, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1350< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, Option>, TextSize), +) -> Result> +{ + let __start0 = __4.2; + let __end0 = __4.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action991( + mode, + __0, + __1, + __2, + __3, + __4, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1351< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Arg, TextSize), + __4: (TextSize, alloc::vec::Vec, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, Option>, TextSize), +) -> Result> +{ + let __start0 = __6.2; + let __end0 = __6.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action992( + mode, + __0, + __1, + __2, + __3, + __4, + __5, + __6, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1352< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, Option>, TextSize), +) -> Result> +{ + let __start0 = __5.2; + let __end0 = __5.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action993( + mode, + __0, + __1, + __2, + __3, + __4, + __5, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1353< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Arg, TextSize), +) -> Result> +{ + let __start0 = __3.2; + let __end0 = __3.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action994( + mode, + __0, + __1, + __2, + __3, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1354< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __2.2; + let __end0 = __2.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action995( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1355< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Arg, TextSize), + __4: (TextSize, alloc::vec::Vec, TextSize), +) -> Result> +{ + let __start0 = __4.2; + let __end0 = __4.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action996( + mode, + __0, + __1, + __2, + __3, + __4, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1356< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), +) -> Result> +{ + let __start0 = __3.2; + let __end0 = __3.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action997( + mode, + __0, + __1, + __2, + __3, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1357< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), +) -> Result> +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action998( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1358< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, Option>, TextSize), + __3: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __3.2; + let __end0 = __3.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action861( + mode, + __0, + __1, + __2, + __3, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1359< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, Option>, TextSize), +) -> Result> +{ + let __start0 = __2.2; + let __end0 = __2.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action862( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1360< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Arg, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, Option>, TextSize), + __4: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __4.2; + let __end0 = __4.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action957( + mode, + __0, + __1, + __2, + __3, + __4, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1361< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, Option>, TextSize), + __3: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __3.2; + let __end0 = __3.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action958( + mode, + __0, + __1, + __2, + __3, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1362< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Arg, TextSize), + __2: (TextSize, alloc::vec::Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, Option>, TextSize), + __5: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __5.2; + let __end0 = __5.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action959( + mode, + __0, + __1, + __2, + __3, + __4, + __5, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1363< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, alloc::vec::Vec, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, Option>, TextSize), + __4: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __4.2; + let __end0 = __4.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action960( + mode, + __0, + __1, + __2, + __3, + __4, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1364< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Arg, TextSize), + __2: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __2.2; + let __end0 = __2.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action961( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1365< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __1.2; + let __end0 = __1.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action962( + mode, + __0, + __1, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1366< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Arg, TextSize), + __2: (TextSize, alloc::vec::Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __3.2; + let __end0 = __3.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action963( + mode, + __0, + __1, + __2, + __3, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1367< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, alloc::vec::Vec, TextSize), + __2: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __2.2; + let __end0 = __2.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action964( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1368< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Arg, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, Option>, TextSize), +) -> Result> +{ + let __start0 = __3.2; + let __end0 = __3.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action965( + mode, + __0, + __1, + __2, + __3, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1369< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, Option>, TextSize), +) -> Result> +{ + let __start0 = __2.2; + let __end0 = __2.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action966( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1370< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Arg, TextSize), + __2: (TextSize, alloc::vec::Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, Option>, TextSize), +) -> Result> +{ + let __start0 = __4.2; + let __end0 = __4.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action967( + mode, + __0, + __1, + __2, + __3, + __4, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1371< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, alloc::vec::Vec, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, Option>, TextSize), +) -> Result> +{ + let __start0 = __3.2; + let __end0 = __3.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action968( + mode, + __0, + __1, + __2, + __3, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1372< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Arg, TextSize), +) -> Result> +{ + let __start0 = __1.2; + let __end0 = __1.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action969( + mode, + __0, + __1, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1373< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action970( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1374< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Arg, TextSize), + __2: (TextSize, alloc::vec::Vec, TextSize), +) -> Result> +{ + let __start0 = __2.2; + let __end0 = __2.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action971( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1375< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, alloc::vec::Vec, TextSize), +) -> Result> +{ + let __start0 = __1.2; + let __end0 = __1.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action972( + mode, + __0, + __1, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1376< +>( + mode: Mode, + __0: (TextSize, Option>, TextSize), + __1: (TextSize, token::Tok, TextSize), +) -> ast::Arguments +{ + let __start0 = __1.2; + let __end0 = __1.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action865( + mode, + __0, + __1, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1377< +>( + mode: Mode, + __0: (TextSize, Option>, TextSize), +) -> ast::Arguments +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action866( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1378< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Arg, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, Option>, TextSize), + __6: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __6.2; + let __end0 = __6.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1041( + mode, + __0, + __1, + __2, + __3, + __4, + __5, + __6, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1379< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, Option>, TextSize), + __5: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __5.2; + let __end0 = __5.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1042( + mode, + __0, + __1, + __2, + __3, + __4, + __5, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1380< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Arg, TextSize), + __4: (TextSize, alloc::vec::Vec, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, Option>, TextSize), + __7: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __7.2; + let __end0 = __7.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1043( + mode, + __0, + __1, + __2, + __3, + __4, + __5, + __6, + __7, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1381< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, Option>, TextSize), + __6: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __6.2; + let __end0 = __6.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1044( + mode, + __0, + __1, + __2, + __3, + __4, + __5, + __6, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1382< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Arg, TextSize), + __4: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __4.2; + let __end0 = __4.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1045( + mode, + __0, + __1, + __2, + __3, + __4, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1383< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __3.2; + let __end0 = __3.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1046( + mode, + __0, + __1, + __2, + __3, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1384< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Arg, TextSize), + __4: (TextSize, alloc::vec::Vec, TextSize), + __5: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __5.2; + let __end0 = __5.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1047( + mode, + __0, + __1, + __2, + __3, + __4, + __5, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1385< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __4.2; + let __end0 = __4.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1048( + mode, + __0, + __1, + __2, + __3, + __4, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1386< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __1.2; + let __end0 = __1.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1049( + mode, + __0, + __1, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1387< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Arg, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, Option>, TextSize), +) -> Result> +{ + let __start0 = __5.2; + let __end0 = __5.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1050( + mode, + __0, + __1, + __2, + __3, + __4, + __5, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1388< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, Option>, TextSize), +) -> Result> +{ + let __start0 = __4.2; + let __end0 = __4.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1051( + mode, + __0, + __1, + __2, + __3, + __4, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1389< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Arg, TextSize), + __4: (TextSize, alloc::vec::Vec, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, Option>, TextSize), +) -> Result> +{ + let __start0 = __6.2; + let __end0 = __6.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1052( + mode, + __0, + __1, + __2, + __3, + __4, + __5, + __6, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1390< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, Option>, TextSize), +) -> Result> +{ + let __start0 = __5.2; + let __end0 = __5.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1053( + mode, + __0, + __1, + __2, + __3, + __4, + __5, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1391< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Arg, TextSize), +) -> Result> +{ + let __start0 = __3.2; + let __end0 = __3.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1054( + mode, + __0, + __1, + __2, + __3, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1392< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __2.2; + let __end0 = __2.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1055( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1393< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Arg, TextSize), + __4: (TextSize, alloc::vec::Vec, TextSize), +) -> Result> +{ + let __start0 = __4.2; + let __end0 = __4.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1056( + mode, + __0, + __1, + __2, + __3, + __4, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1394< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), +) -> Result> +{ + let __start0 = __3.2; + let __end0 = __3.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1057( + mode, + __0, + __1, + __2, + __3, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1395< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), +) -> Result> +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1058( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1396< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, Option>, TextSize), + __3: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __3.2; + let __end0 = __3.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action869( + mode, + __0, + __1, + __2, + __3, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1397< +>( + mode: Mode, + __0: (TextSize, (Vec, Vec), TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, Option>, TextSize), +) -> Result> +{ + let __start0 = __2.2; + let __end0 = __2.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action870( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1398< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Arg, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, Option>, TextSize), + __4: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __4.2; + let __end0 = __4.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1017( + mode, + __0, + __1, + __2, + __3, + __4, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1399< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, Option>, TextSize), + __3: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __3.2; + let __end0 = __3.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1018( + mode, + __0, + __1, + __2, + __3, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1400< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Arg, TextSize), + __2: (TextSize, alloc::vec::Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, Option>, TextSize), + __5: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __5.2; + let __end0 = __5.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1019( + mode, + __0, + __1, + __2, + __3, + __4, + __5, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1401< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, alloc::vec::Vec, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, Option>, TextSize), + __4: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __4.2; + let __end0 = __4.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1020( + mode, + __0, + __1, + __2, + __3, + __4, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1402< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Arg, TextSize), + __2: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __2.2; + let __end0 = __2.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1021( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1403< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __1.2; + let __end0 = __1.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1022( + mode, + __0, + __1, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1404< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Arg, TextSize), + __2: (TextSize, alloc::vec::Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __3.2; + let __end0 = __3.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1023( + mode, + __0, + __1, + __2, + __3, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1405< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, alloc::vec::Vec, TextSize), + __2: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __2.2; + let __end0 = __2.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1024( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1406< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Arg, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, Option>, TextSize), +) -> Result> +{ + let __start0 = __3.2; + let __end0 = __3.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1025( + mode, + __0, + __1, + __2, + __3, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1407< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, Option>, TextSize), +) -> Result> +{ + let __start0 = __2.2; + let __end0 = __2.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1026( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1408< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Arg, TextSize), + __2: (TextSize, alloc::vec::Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, Option>, TextSize), +) -> Result> +{ + let __start0 = __4.2; + let __end0 = __4.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1027( + mode, + __0, + __1, + __2, + __3, + __4, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1409< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, alloc::vec::Vec, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, Option>, TextSize), +) -> Result> +{ + let __start0 = __3.2; + let __end0 = __3.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1028( + mode, + __0, + __1, + __2, + __3, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1410< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Arg, TextSize), +) -> Result> +{ + let __start0 = __1.2; + let __end0 = __1.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1029( + mode, + __0, + __1, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1411< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1030( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1412< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Arg, TextSize), + __2: (TextSize, alloc::vec::Vec, TextSize), +) -> Result> +{ + let __start0 = __2.2; + let __end0 = __2.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1031( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1413< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, alloc::vec::Vec, TextSize), +) -> Result> +{ + let __start0 = __1.2; + let __end0 = __1.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1032( + mode, + __0, + __1, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1414< +>( + mode: Mode, + __0: (TextSize, Option>, TextSize), + __1: (TextSize, token::Tok, TextSize), +) -> ast::Arguments +{ + let __start0 = __1.2; + let __end0 = __1.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action873( + mode, + __0, + __1, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1415< +>( + mode: Mode, + __0: (TextSize, Option>, TextSize), +) -> ast::Arguments +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action874( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1416< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, core::option::Option, TextSize), + __2: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __2.2; + let __end0 = __2.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action887( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1417< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), +) -> ast::Stmt +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action888( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1418< +>( + mode: Mode, + __0: (TextSize, ast::Pattern, TextSize), + __1: (TextSize, token::Tok, TextSize), +) -> ast::Pattern +{ + let __start0 = __1.2; + let __end0 = __1.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action889( + mode, + __0, + __1, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1419< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), +) -> ast::Pattern +{ + let __start0 = __1.2; + let __end0 = __1.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action890( + mode, + __0, + __1, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1420< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), +) -> ast::Pattern +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action891( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1421< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + let __start0 = __2.2; + let __end0 = __2.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action892( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1422< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + let __start0 = __2.2; + let __end0 = __2.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action893( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1423< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), +) -> ast::Stmt +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action894( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1424< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Expr, TextSize), +) -> ast::Stmt +{ + let __start0 = __3.2; + let __end0 = __3.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1126( + mode, + __0, + __1, + __2, + __3, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1425< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), +) -> ast::Stmt +{ + let __start0 = __1.2; + let __end0 = __1.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1127( + mode, + __0, + __1, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1426< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Pattern, TextSize), + __2: (TextSize, token::Tok, TextSize), +) -> ast::Pattern +{ + let __start0 = __2.2; + let __end0 = __2.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action896( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1427< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), +) -> ast::Pattern +{ + let __start0 = __1.2; + let __end0 = __1.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action897( + mode, + __0, + __1, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1428< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Pattern, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), +) -> ast::Pattern +{ + let __start0 = __3.2; + let __end0 = __3.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action898( + mode, + __0, + __1, + __2, + __3, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1429< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, alloc::vec::Vec, TextSize), + __2: (TextSize, ast::Pattern, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, token::Tok, TextSize), +) -> ast::Pattern +{ + let __start0 = __4.2; + let __end0 = __4.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action899( + mode, + __0, + __1, + __2, + __3, + __4, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1430< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, alloc::vec::Vec, TextSize), + __2: (TextSize, ast::Pattern, TextSize), + __3: (TextSize, token::Tok, TextSize), +) -> ast::Pattern +{ + let __start0 = __3.2; + let __end0 = __3.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action900( + mode, + __0, + __1, + __2, + __3, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1431< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, Vec, TextSize), + __2: (TextSize, token::Tok, TextSize), +) -> ast::Pattern +{ + let __start0 = __2.2; + let __end0 = __2.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action901( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1432< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, ast::Operator, TextSize), + __2: (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + let __start0 = __2.2; + let __end0 = __2.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action902( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1433< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, ast::Operator, TextSize), + __2: (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + let __start0 = __2.2; + let __end0 = __2.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action903( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1434< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Expr, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, ast::Expr, TextSize), + __5: (TextSize, alloc::vec::Vec, TextSize), +) -> ast::Comprehension +{ + let __start0 = __5.2; + let __end0 = __5.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action904( + mode, + __0, + __1, + __2, + __3, + __4, + __5, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1435< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Expr, TextSize), + __4: (TextSize, alloc::vec::Vec, TextSize), +) -> ast::Comprehension +{ + let __start0 = __4.2; + let __end0 = __4.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action905( + mode, + __0, + __1, + __2, + __3, + __4, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1436< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + let __start0 = __1.2; + let __end0 = __1.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action907( + mode, + __0, + __1, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1437< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Identifier, TextSize), +) -> ast::Pattern +{ + let __start0 = __1.2; + let __end0 = __1.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action908( + mode, + __0, + __1, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1438< +>( + mode: Mode, + __0: (TextSize, ast::Identifier, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Expr, TextSize), +) -> ast::Arg +{ + let __start0 = __2.2; + let __end0 = __2.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1093( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1439< +>( + mode: Mode, + __0: (TextSize, ast::Identifier, TextSize), +) -> ast::Arg +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1094( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1440< +>( + mode: Mode, + __0: (TextSize, ast::Identifier, TextSize), +) -> ast::Arg +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action910( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1441< +>( + mode: Mode, + __0: (TextSize, core::option::Option, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, core::option::Option, TextSize), + __3: (TextSize, core::option::Option>, TextSize), +) -> ast::Expr +{ + let __start0 = __3.2; + let __end0 = __3.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action911( + mode, + __0, + __1, + __2, + __3, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1442< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action912( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1443< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), +) -> ast::Expr +{ + let __start0 = __1.2; + let __end0 = __1.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action913( + mode, + __0, + __1, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1444< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), +) -> ast::Expr +{ + let __start0 = __1.2; + let __end0 = __1.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action914( + mode, + __0, + __1, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1445< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), +) -> ast::Expr +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action915( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1446< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, ast::Operator, TextSize), + __2: (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + let __start0 = __2.2; + let __end0 = __2.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action916( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1447< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, ast::Operator, TextSize), + __2: (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + let __start0 = __2.2; + let __end0 = __2.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action917( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1448< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Expr, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + let __start0 = __4.2; + let __end0 = __4.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action918( + mode, + __0, + __1, + __2, + __3, + __4, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1449< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Expr, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + let __start0 = __4.2; + let __end0 = __4.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action919( + mode, + __0, + __1, + __2, + __3, + __4, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1450< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Suite, TextSize), +) -> ast::Mod +{ + let __start0 = __1.2; + let __end0 = __1.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action920( + mode, + __0, + __1, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1451< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Suite, TextSize), +) -> ast::Mod +{ + let __start0 = __1.2; + let __end0 = __1.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action921( + mode, + __0, + __1, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1452< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), +) -> ast::Mod +{ + let __start0 = __1.2; + let __end0 = __1.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1097( + mode, + __0, + __1, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1453< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, alloc::vec::Vec, TextSize), +) -> ast::Mod +{ + let __start0 = __2.2; + let __end0 = __2.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1098( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1454< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Suite, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, ast::Suite, TextSize), + __7: (TextSize, token::Tok, TextSize), + __8: (TextSize, token::Tok, TextSize), + __9: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __9.2; + let __end0 = __9.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1117( + mode, + __0, + __1, + __2, + __3, + __4, + __5, + __6, + __7, + __8, + __9, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1455< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Suite, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __6.2; + let __end0 = __6.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1118( + mode, + __0, + __1, + __2, + __3, + __4, + __5, + __6, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1456< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Suite, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __6.2; + let __end0 = __6.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1119( + mode, + __0, + __1, + __2, + __3, + __4, + __5, + __6, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1457< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Suite, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), +) -> ast::Stmt +{ + let __start0 = __3.2; + let __end0 = __3.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1120( + mode, + __0, + __1, + __2, + __3, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1458< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Suite, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, ast::Suite, TextSize), + __7: (TextSize, token::Tok, TextSize), + __8: (TextSize, token::Tok, TextSize), + __9: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __9.2; + let __end0 = __9.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1121( + mode, + __0, + __1, + __2, + __3, + __4, + __5, + __6, + __7, + __8, + __9, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1459< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Suite, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __6.2; + let __end0 = __6.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1122( + mode, + __0, + __1, + __2, + __3, + __4, + __5, + __6, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1460< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Suite, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __6.2; + let __end0 = __6.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1123( + mode, + __0, + __1, + __2, + __3, + __4, + __5, + __6, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1461< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Suite, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), +) -> ast::Stmt +{ + let __start0 = __3.2; + let __end0 = __3.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1124( + mode, + __0, + __1, + __2, + __3, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1462< +>( + mode: Mode, + __0: (TextSize, ast::Identifier, TextSize), +) -> ast::Expr +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action926( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1463< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, core::option::Option>, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, ast::Expr, TextSize), +) -> ast::Stmt +{ + let __start0 = __4.2; + let __end0 = __4.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action927( + mode, + __0, + __1, + __2, + __3, + __4, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1464< +>( + mode: Mode, + __0: (TextSize, ast::Identifier, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Expr, TextSize), +) -> ast::TypeParam +{ + let __start0 = __2.2; + let __end0 = __2.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1088( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1465< +>( + mode: Mode, + __0: (TextSize, ast::Identifier, TextSize), +) -> ast::TypeParam +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1089( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1466< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Identifier, TextSize), +) -> ast::TypeParam +{ + let __start0 = __1.2; + let __end0 = __1.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action929( + mode, + __0, + __1, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1467< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Identifier, TextSize), +) -> ast::TypeParam +{ + let __start0 = __1.2; + let __end0 = __1.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action930( + mode, + __0, + __1, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1468< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, Vec, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), +) -> Vec +{ + let __start0 = __3.2; + let __end0 = __3.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action931( + mode, + __0, + __1, + __2, + __3, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1469< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, Vec, TextSize), + __2: (TextSize, token::Tok, TextSize), +) -> Vec +{ + let __start0 = __2.2; + let __end0 = __2.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action932( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1470< +>( + mode: Mode, + __0: (TextSize, ast::Identifier, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Expr, TextSize), +) -> ast::ArgWithDefault +{ + let __start0 = __2.2; + let __end0 = __2.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1090( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1471< +>( + mode: Mode, + __0: (TextSize, ast::Identifier, TextSize), +) -> ast::ArgWithDefault +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1091( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1472< +>( + mode: Mode, + __0: (TextSize, ast::Identifier, TextSize), +) -> ast::ArgWithDefault +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action934( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1473< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), +) -> ast::Pattern +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action935( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1474< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), +) -> ast::WithItem +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action937( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1475< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Expr, TextSize), +) -> ast::WithItem +{ + let __start0 = __2.2; + let __end0 = __2.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action938( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1476< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Expr, TextSize), +) -> ast::WithItem +{ + let __start0 = __2.2; + let __end0 = __2.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action939( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1477< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), +) -> ast::WithItem +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action940( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1478< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Expr, TextSize), +) -> ast::WithItem +{ + let __start0 = __2.2; + let __end0 = __2.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action941( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1479< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), +) -> Vec +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action942( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1480< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + let __start0 = __2.2; + let __end0 = __2.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action945( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1481< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + let __start0 = __2.2; + let __end0 = __2.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action946( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1482< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, core::option::Option, TextSize), +) -> ast::Expr +{ + let __start0 = __1.2; + let __end0 = __1.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action947( + mode, + __0, + __1, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1483< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + let __start0 = __2.2; + let __end0 = __2.2; + let __temp0 = __action390( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action948( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1484< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), +) -> Vec +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action1479( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action304( + mode, + __temp0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1485< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, Vec, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), +) -> Vec +{ + let __start0 = __1.0; + let __end0 = __1.2; + let __temp0 = __action1479( + mode, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action645( + mode, + __0, + __temp0, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1486< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, Vec, TextSize), + __2: (TextSize, token::Tok, TextSize), +) -> Vec +{ + let __start0 = __1.0; + let __end0 = __1.2; + let __temp0 = __action1479( + mode, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action646( + mode, + __0, + __temp0, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1487< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), +) -> core::option::Option> +{ + let __start0 = __0.0; + let __end0 = __1.2; + let __temp0 = __action1484( + mode, + __0, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action302( + mode, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1488< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, Vec, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::WithItem, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), +) -> Vec +{ + let __start0 = __1.0; + let __end0 = __2.2; + let __temp0 = __action1487( + mode, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1074( + mode, + __0, + __temp0, + __3, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1489< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::WithItem, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), +) -> Vec +{ + let __start0 = __0.2; + let __end0 = __1.0; + let __temp0 = __action303( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1074( + mode, + __0, + __temp0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1490< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, Vec, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::WithItem, TextSize), + __4: (TextSize, alloc::vec::Vec, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, token::Tok, TextSize), +) -> Vec +{ + let __start0 = __1.0; + let __end0 = __2.2; + let __temp0 = __action1487( + mode, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1075( + mode, + __0, + __temp0, + __3, + __4, + __5, + __6, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1491< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::WithItem, TextSize), + __2: (TextSize, alloc::vec::Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, token::Tok, TextSize), +) -> Vec +{ + let __start0 = __0.2; + let __end0 = __1.0; + let __temp0 = __action303( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1075( + mode, + __0, + __temp0, + __1, + __2, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1492< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, Vec, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::WithItem, TextSize), + __4: (TextSize, token::Tok, TextSize), +) -> Vec +{ + let __start0 = __1.0; + let __end0 = __2.2; + let __temp0 = __action1487( + mode, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1076( + mode, + __0, + __temp0, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1493< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::WithItem, TextSize), + __2: (TextSize, token::Tok, TextSize), +) -> Vec +{ + let __start0 = __0.2; + let __end0 = __1.0; + let __temp0 = __action303( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1076( + mode, + __0, + __temp0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1494< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, Vec, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::WithItem, TextSize), + __4: (TextSize, alloc::vec::Vec, TextSize), + __5: (TextSize, token::Tok, TextSize), +) -> Vec +{ + let __start0 = __1.0; + let __end0 = __2.2; + let __temp0 = __action1487( + mode, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1077( + mode, + __0, + __temp0, + __3, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1495< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::WithItem, TextSize), + __2: (TextSize, alloc::vec::Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), +) -> Vec +{ + let __start0 = __0.2; + let __end0 = __1.0; + let __temp0 = __action303( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1077( + mode, + __0, + __temp0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1496< +>( + mode: Mode, + __0: (TextSize, (String, StringKind, bool), TextSize), +) -> alloc::vec::Vec<(TextSize, (String, StringKind, bool), TextSize)> +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action1186( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action332( + mode, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1497< +>( + mode: Mode, + __0: (TextSize, alloc::vec::Vec<(TextSize, (String, StringKind, bool), TextSize)>, TextSize), + __1: (TextSize, (String, StringKind, bool), TextSize), +) -> alloc::vec::Vec<(TextSize, (String, StringKind, bool), TextSize)> +{ + let __start0 = __1.0; + let __end0 = __1.2; + let __temp0 = __action1186( + mode, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action333( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1498< +>( + mode: Mode, + __0: (TextSize, ast::CmpOp, TextSize), + __1: (TextSize, ast::Expr, TextSize), +) -> alloc::vec::Vec<(ast::CmpOp, ast::Expr)> +{ + let __start0 = __0.0; + let __end0 = __1.2; + let __temp0 = __action491( + mode, + __0, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action489( + mode, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1499< +>( + mode: Mode, + __0: (TextSize, alloc::vec::Vec<(ast::CmpOp, ast::Expr)>, TextSize), + __1: (TextSize, ast::CmpOp, TextSize), + __2: (TextSize, ast::Expr, TextSize), +) -> alloc::vec::Vec<(ast::CmpOp, ast::Expr)> +{ + let __start0 = __1.0; + let __end0 = __2.2; + let __temp0 = __action491( + mode, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action490( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1500< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), +) -> core::option::Option +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action345( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action343( + mode, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1501< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Pattern, TextSize), + __2: (TextSize, ast::Expr, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, ast::Suite, TextSize), +) -> ast::MatchCase +{ + let __start0 = __2.0; + let __end0 = __2.2; + let __temp0 = __action1500( + mode, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action844( + mode, + __0, + __1, + __temp0, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1502< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Pattern, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Suite, TextSize), +) -> ast::MatchCase +{ + let __start0 = __1.2; + let __end0 = __2.0; + let __temp0 = __action344( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action844( + mode, + __0, + __1, + __temp0, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1503< +>( + mode: Mode, + __0: (TextSize, ast::Arguments, TextSize), +) -> core::option::Option +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action278( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action276( + mode, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1504< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Arguments, TextSize), + __2: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __1.0; + let __end0 = __1.2; + let __temp0 = __action1503( + mode, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1416( + mode, + __0, + __temp0, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1505< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __0.2; + let __end0 = __1.0; + let __temp0 = __action277( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1416( + mode, + __0, + __temp0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1506< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), +) -> ast::Stmt +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action380( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1280( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1507< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, alloc::vec::Vec, TextSize), +) -> ast::Stmt +{ + let __start0 = __1.0; + let __end0 = __1.2; + let __temp0 = __action381( + mode, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1280( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1508< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Expr, TextSize), + __3: (TextSize, ast::Expr, TextSize), +) -> ast::Stmt +{ + let __start0 = __3.0; + let __end0 = __3.2; + let __temp0 = __action375( + mode, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1282( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1509< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Expr, TextSize), +) -> ast::Stmt +{ + let __start0 = __2.2; + let __end0 = __2.2; + let __temp0 = __action376( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1282( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1510< +>( + mode: Mode, + __0: (TextSize, (Option<(TextSize, TextSize, Option)>, ast::Expr), TextSize), +) -> Vec<(Option<(TextSize, TextSize, Option)>, ast::Expr)> +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action439( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1141( + mode, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1511< +>( + mode: Mode, + __lookbehind: &TextSize, + __lookahead: &TextSize, +) -> Vec<(Option<(TextSize, TextSize, Option)>, ast::Expr)> +{ + let __start0 = *__lookbehind; + let __end0 = *__lookahead; + let __temp0 = __action440( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1141( + mode, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1512< +>( + mode: Mode, + __0: (TextSize, alloc::vec::Vec<(Option<(TextSize, TextSize, Option)>, ast::Expr)>, TextSize), + __1: (TextSize, (Option<(TextSize, TextSize, Option)>, ast::Expr), TextSize), +) -> Vec<(Option<(TextSize, TextSize, Option)>, ast::Expr)> +{ + let __start0 = __1.0; + let __end0 = __1.2; + let __temp0 = __action439( + mode, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1142( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1513< +>( + mode: Mode, + __0: (TextSize, alloc::vec::Vec<(Option<(TextSize, TextSize, Option)>, ast::Expr)>, TextSize), +) -> Vec<(Option<(TextSize, TextSize, Option)>, ast::Expr)> +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action440( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1142( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1514< +>( + mode: Mode, + __0: (TextSize, (Option<(TextSize, TextSize, Option)>, ast::Expr), TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action1510( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action227( + mode, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1515< +>( + mode: Mode, + __lookbehind: &TextSize, + __lookahead: &TextSize, +) -> Result> +{ + let __start0 = *__lookbehind; + let __end0 = *__lookahead; + let __temp0 = __action1511( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action227( + mode, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1516< +>( + mode: Mode, + __0: (TextSize, alloc::vec::Vec<(Option<(TextSize, TextSize, Option)>, ast::Expr)>, TextSize), + __1: (TextSize, (Option<(TextSize, TextSize, Option)>, ast::Expr), TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __1.2; + let __temp0 = __action1512( + mode, + __0, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action227( + mode, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1517< +>( + mode: Mode, + __0: (TextSize, alloc::vec::Vec<(Option<(TextSize, TextSize, Option)>, ast::Expr)>, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action1513( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action227( + mode, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1518< +>( + mode: Mode, + __0: (TextSize, ast::Pattern, TextSize), +) -> Vec +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action401( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1164( + mode, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1519< +>( + mode: Mode, + __lookbehind: &TextSize, + __lookahead: &TextSize, +) -> Vec +{ + let __start0 = *__lookbehind; + let __end0 = *__lookahead; + let __temp0 = __action402( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1164( + mode, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1520< +>( + mode: Mode, + __0: (TextSize, alloc::vec::Vec, TextSize), + __1: (TextSize, ast::Pattern, TextSize), +) -> Vec +{ + let __start0 = __1.0; + let __end0 = __1.2; + let __temp0 = __action401( + mode, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1165( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1521< +>( + mode: Mode, + __0: (TextSize, alloc::vec::Vec, TextSize), +) -> Vec +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action402( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1165( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1522< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Pattern, TextSize), + __2: (TextSize, token::Tok, TextSize), +) -> ast::Pattern +{ + let __start0 = __1.0; + let __end0 = __1.2; + let __temp0 = __action1518( + mode, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1431( + mode, + __0, + __temp0, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1523< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), +) -> ast::Pattern +{ + let __start0 = __0.2; + let __end0 = __1.0; + let __temp0 = __action1519( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1431( + mode, + __0, + __temp0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1524< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, alloc::vec::Vec, TextSize), + __2: (TextSize, ast::Pattern, TextSize), + __3: (TextSize, token::Tok, TextSize), +) -> ast::Pattern +{ + let __start0 = __1.0; + let __end0 = __2.2; + let __temp0 = __action1520( + mode, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1431( + mode, + __0, + __temp0, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1525< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, alloc::vec::Vec, TextSize), + __2: (TextSize, token::Tok, TextSize), +) -> ast::Pattern +{ + let __start0 = __1.0; + let __end0 = __1.2; + let __temp0 = __action1521( + mode, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1431( + mode, + __0, + __temp0, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1526< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, Vec, TextSize), +) -> (Option<(TextSize, TextSize, Option)>, ast::Expr) +{ + let __start0 = __1.0; + let __end0 = __1.2; + let __temp0 = __action236( + mode, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1289( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1527< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), +) -> (Option<(TextSize, TextSize, Option)>, ast::Expr) +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action237( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1289( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1528< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Expr, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, ast::Expr, TextSize), +) -> ast::Comprehension +{ + let __start0 = __4.2; + let __end0 = __4.2; + let __temp0 = __action239( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1434( + mode, + __0, + __1, + __2, + __3, + __4, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1529< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Expr, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, ast::Expr, TextSize), + __5: (TextSize, alloc::vec::Vec, TextSize), +) -> ast::Comprehension +{ + let __start0 = __5.0; + let __end0 = __5.2; + let __temp0 = __action240( + mode, + __5, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1434( + mode, + __0, + __1, + __2, + __3, + __4, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1530< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Expr, TextSize), +) -> ast::Comprehension +{ + let __start0 = __3.2; + let __end0 = __3.2; + let __temp0 = __action239( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1435( + mode, + __0, + __1, + __2, + __3, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1531< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Expr, TextSize), + __4: (TextSize, alloc::vec::Vec, TextSize), +) -> ast::Comprehension +{ + let __start0 = __4.0; + let __end0 = __4.2; + let __temp0 = __action240( + mode, + __4, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1435( + mode, + __0, + __1, + __2, + __3, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1532< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Identifier, TextSize), + __2: (TextSize, core::option::Option>, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, ArgumentList, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, token::Tok, TextSize), + __7: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action288( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action761( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + __5, + __6, + __7, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1533< +>( + mode: Mode, + __0: (TextSize, alloc::vec::Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Identifier, TextSize), + __3: (TextSize, core::option::Option>, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, ArgumentList, TextSize), + __6: (TextSize, token::Tok, TextSize), + __7: (TextSize, token::Tok, TextSize), + __8: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action289( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action761( + mode, + __temp0, + __1, + __2, + __3, + __4, + __5, + __6, + __7, + __8, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1534< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Identifier, TextSize), + __2: (TextSize, core::option::Option>, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action288( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action762( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1535< +>( + mode: Mode, + __0: (TextSize, alloc::vec::Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Identifier, TextSize), + __3: (TextSize, core::option::Option>, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action289( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action762( + mode, + __temp0, + __1, + __2, + __3, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1536< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Identifier, TextSize), + __3: (TextSize, core::option::Option>, TextSize), + __4: (TextSize, ast::Arguments, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, ast::Expr, TextSize), + __7: (TextSize, token::Tok, TextSize), + __8: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action288( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1079( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + __5, + __6, + __7, + __8, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1537< +>( + mode: Mode, + __0: (TextSize, alloc::vec::Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Identifier, TextSize), + __4: (TextSize, core::option::Option>, TextSize), + __5: (TextSize, ast::Arguments, TextSize), + __6: (TextSize, token::Tok, TextSize), + __7: (TextSize, ast::Expr, TextSize), + __8: (TextSize, token::Tok, TextSize), + __9: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action289( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1079( + mode, + __temp0, + __1, + __2, + __3, + __4, + __5, + __6, + __7, + __8, + __9, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1538< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Identifier, TextSize), + __3: (TextSize, core::option::Option>, TextSize), + __4: (TextSize, ast::Arguments, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action288( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1080( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + __5, + __6, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1539< +>( + mode: Mode, + __0: (TextSize, alloc::vec::Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Identifier, TextSize), + __4: (TextSize, core::option::Option>, TextSize), + __5: (TextSize, ast::Arguments, TextSize), + __6: (TextSize, token::Tok, TextSize), + __7: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action289( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1080( + mode, + __temp0, + __1, + __2, + __3, + __4, + __5, + __6, + __7, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1540< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Identifier, TextSize), + __2: (TextSize, core::option::Option>, TextSize), + __3: (TextSize, ast::Arguments, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, ast::Expr, TextSize), + __6: (TextSize, token::Tok, TextSize), + __7: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action288( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1081( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + __5, + __6, + __7, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1541< +>( + mode: Mode, + __0: (TextSize, alloc::vec::Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Identifier, TextSize), + __3: (TextSize, core::option::Option>, TextSize), + __4: (TextSize, ast::Arguments, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, ast::Expr, TextSize), + __7: (TextSize, token::Tok, TextSize), + __8: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action289( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1081( + mode, + __temp0, + __1, + __2, + __3, + __4, + __5, + __6, + __7, + __8, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1542< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Identifier, TextSize), + __2: (TextSize, core::option::Option>, TextSize), + __3: (TextSize, ast::Arguments, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action288( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1082( + mode, + __temp0, + __0, + __1, + __2, + __3, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1543< +>( + mode: Mode, + __0: (TextSize, alloc::vec::Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Identifier, TextSize), + __3: (TextSize, core::option::Option>, TextSize), + __4: (TextSize, ast::Arguments, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action289( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1082( + mode, + __temp0, + __1, + __2, + __3, + __4, + __5, + __6, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1544< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, Vec<(Option>, ast::Expr)>, TextSize), + __2: (TextSize, token::Tok, TextSize), +) -> ast::Expr +{ + let __start0 = __1.0; + let __end0 = __1.2; + let __temp0 = __action541( + mode, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1214( + mode, + __0, + __temp0, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1545< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), +) -> ast::Expr +{ + let __start0 = __0.2; + let __end0 = __1.0; + let __temp0 = __action542( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1214( + mode, + __0, + __temp0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1546< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, Vec<(Option>, ast::Expr)>, TextSize), + __2: (TextSize, token::Tok, TextSize), +) -> ast::Expr +{ + let __start0 = __1.0; + let __end0 = __1.2; + let __temp0 = __action541( + mode, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1237( + mode, + __0, + __temp0, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1547< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), +) -> ast::Expr +{ + let __start0 = __0.2; + let __end0 = __1.0; + let __temp0 = __action542( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1237( + mode, + __0, + __temp0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1548< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Arg, TextSize), +) -> Option> +{ + let __start0 = __1.0; + let __end0 = __1.2; + let __temp0 = __action475( + mode, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action413( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1549< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), +) -> Option> +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action476( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action413( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1550< +>( + mode: Mode, + __0: (TextSize, ast::Identifier, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Identifier, TextSize), +) -> Vec +{ + let __start0 = __0.0; + let __end0 = __2.2; + let __temp0 = __action1299( + mode, + __0, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action367( + mode, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1551< +>( + mode: Mode, + __0: (TextSize, ast::Identifier, TextSize), +) -> Vec +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action1300( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action367( + mode, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1552< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Identifier, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, ast::Identifier, TextSize), +) -> Vec +{ + let __start0 = __2.0; + let __end0 = __4.2; + let __temp0 = __action1299( + mode, + __2, + __3, + __4, + ); + let __temp0 = (__start0, __temp0, __end0); + __action368( + mode, + __0, + __1, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1553< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Identifier, TextSize), +) -> Vec +{ + let __start0 = __2.0; + let __end0 = __2.2; + let __temp0 = __action1300( + mode, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action368( + mode, + __0, + __1, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1554< +>( + mode: Mode, + __0: (TextSize, ast::Identifier, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Identifier, TextSize), +) -> Vec +{ + let __start0 = __0.0; + let __end0 = __2.2; + let __temp0 = __action1301( + mode, + __0, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action360( + mode, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1555< +>( + mode: Mode, + __0: (TextSize, ast::Identifier, TextSize), +) -> Vec +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action1302( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action360( + mode, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1556< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Identifier, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, ast::Identifier, TextSize), +) -> Vec +{ + let __start0 = __2.0; + let __end0 = __4.2; + let __temp0 = __action1301( + mode, + __2, + __3, + __4, + ); + let __temp0 = (__start0, __temp0, __end0); + __action361( + mode, + __0, + __1, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1557< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Identifier, TextSize), +) -> Vec +{ + let __start0 = __2.0; + let __end0 = __2.2; + let __temp0 = __action1302( + mode, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action361( + mode, + __0, + __1, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1558< +>( + mode: Mode, + __0: (TextSize, ast::Identifier, TextSize), +) -> (Option, Option) +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __temp0 = __action365( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action62( + mode, + __temp0, + __0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1559< +>( + mode: Mode, + __0: (TextSize, alloc::vec::Vec, TextSize), + __1: (TextSize, ast::Identifier, TextSize), +) -> (Option, Option) +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action366( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action62( + mode, + __temp0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1560< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, Vec, TextSize), + __2: (TextSize, token::Tok, TextSize), +) -> ast::Expr +{ + let __start0 = __1.0; + let __end0 = __1.2; + let __temp0 = __action549( + mode, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1199( + mode, + __0, + __temp0, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1561< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), +) -> ast::Expr +{ + let __start0 = __0.2; + let __end0 = __1.0; + let __temp0 = __action550( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1199( + mode, + __0, + __temp0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1562< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, Vec, TextSize), + __2: (TextSize, token::Tok, TextSize), +) -> ast::Expr +{ + let __start0 = __1.0; + let __end0 = __1.2; + let __temp0 = __action549( + mode, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1224( + mode, + __0, + __temp0, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1563< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), +) -> ast::Expr +{ + let __start0 = __0.2; + let __end0 = __1.0; + let __temp0 = __action550( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1224( + mode, + __0, + __temp0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1564< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Arg, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, Option>, TextSize), + __6: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action418( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1340( + mode, + __temp0, + __1, + __2, + __3, + __4, + __5, + __6, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1565< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, ast::Arg, TextSize), + __6: (TextSize, token::Tok, TextSize), + __7: (TextSize, Option>, TextSize), + __8: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __2.2; + let __temp0 = __action680( + mode, + __0, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1340( + mode, + __temp0, + __3, + __4, + __5, + __6, + __7, + __8, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1566< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, ast::Arg, TextSize), + __7: (TextSize, token::Tok, TextSize), + __8: (TextSize, Option>, TextSize), + __9: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __3.2; + let __temp0 = __action681( + mode, + __0, + __1, + __2, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1340( + mode, + __temp0, + __4, + __5, + __6, + __7, + __8, + __9, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1567< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, Option>, TextSize), + __5: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action418( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1341( + mode, + __temp0, + __1, + __2, + __3, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1568< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, Option>, TextSize), + __7: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __2.2; + let __temp0 = __action680( + mode, + __0, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1341( + mode, + __temp0, + __3, + __4, + __5, + __6, + __7, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1569< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, token::Tok, TextSize), + __7: (TextSize, Option>, TextSize), + __8: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __3.2; + let __temp0 = __action681( + mode, + __0, + __1, + __2, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1341( + mode, + __temp0, + __4, + __5, + __6, + __7, + __8, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1570< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Arg, TextSize), + __4: (TextSize, alloc::vec::Vec, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, Option>, TextSize), + __7: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action418( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1342( + mode, + __temp0, + __1, + __2, + __3, + __4, + __5, + __6, + __7, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1571< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, ast::Arg, TextSize), + __6: (TextSize, alloc::vec::Vec, TextSize), + __7: (TextSize, token::Tok, TextSize), + __8: (TextSize, Option>, TextSize), + __9: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __2.2; + let __temp0 = __action680( + mode, + __0, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1342( + mode, + __temp0, + __3, + __4, + __5, + __6, + __7, + __8, + __9, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1572< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, ast::Arg, TextSize), + __7: (TextSize, alloc::vec::Vec, TextSize), + __8: (TextSize, token::Tok, TextSize), + __9: (TextSize, Option>, TextSize), + __10: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __3.2; + let __temp0 = __action681( + mode, + __0, + __1, + __2, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1342( + mode, + __temp0, + __4, + __5, + __6, + __7, + __8, + __9, + __10, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1573< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, Option>, TextSize), + __6: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action418( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1343( + mode, + __temp0, + __1, + __2, + __3, + __4, + __5, + __6, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1574< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, alloc::vec::Vec, TextSize), + __6: (TextSize, token::Tok, TextSize), + __7: (TextSize, Option>, TextSize), + __8: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __2.2; + let __temp0 = __action680( + mode, + __0, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1343( + mode, + __temp0, + __3, + __4, + __5, + __6, + __7, + __8, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1575< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, alloc::vec::Vec, TextSize), + __7: (TextSize, token::Tok, TextSize), + __8: (TextSize, Option>, TextSize), + __9: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __3.2; + let __temp0 = __action681( + mode, + __0, + __1, + __2, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1343( + mode, + __temp0, + __4, + __5, + __6, + __7, + __8, + __9, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1576< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Arg, TextSize), + __4: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action418( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1344( + mode, + __temp0, + __1, + __2, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1577< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, ast::Arg, TextSize), + __6: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __2.2; + let __temp0 = __action680( + mode, + __0, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1344( + mode, + __temp0, + __3, + __4, + __5, + __6, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1578< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, ast::Arg, TextSize), + __7: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __3.2; + let __temp0 = __action681( + mode, + __0, + __1, + __2, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1344( + mode, + __temp0, + __4, + __5, + __6, + __7, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1579< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action418( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1345( + mode, + __temp0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1580< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __2.2; + let __temp0 = __action680( + mode, + __0, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1345( + mode, + __temp0, + __3, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1581< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __3.2; + let __temp0 = __action681( + mode, + __0, + __1, + __2, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1345( + mode, + __temp0, + __4, + __5, + __6, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1582< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Arg, TextSize), + __4: (TextSize, alloc::vec::Vec, TextSize), + __5: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action418( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1346( + mode, + __temp0, + __1, + __2, + __3, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1583< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, ast::Arg, TextSize), + __6: (TextSize, alloc::vec::Vec, TextSize), + __7: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __2.2; + let __temp0 = __action680( + mode, + __0, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1346( + mode, + __temp0, + __3, + __4, + __5, + __6, + __7, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1584< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, ast::Arg, TextSize), + __7: (TextSize, alloc::vec::Vec, TextSize), + __8: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __3.2; + let __temp0 = __action681( + mode, + __0, + __1, + __2, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1346( + mode, + __temp0, + __4, + __5, + __6, + __7, + __8, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1585< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action418( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1347( + mode, + __temp0, + __1, + __2, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1586< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, alloc::vec::Vec, TextSize), + __6: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __2.2; + let __temp0 = __action680( + mode, + __0, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1347( + mode, + __temp0, + __3, + __4, + __5, + __6, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1587< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, alloc::vec::Vec, TextSize), + __7: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __3.2; + let __temp0 = __action681( + mode, + __0, + __1, + __2, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1347( + mode, + __temp0, + __4, + __5, + __6, + __7, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1588< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action418( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1348( + mode, + __temp0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1589< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __2.2; + let __temp0 = __action680( + mode, + __0, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1348( + mode, + __temp0, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1590< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __3.2; + let __temp0 = __action681( + mode, + __0, + __1, + __2, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1348( + mode, + __temp0, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1591< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Arg, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, Option>, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action418( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1349( + mode, + __temp0, + __1, + __2, + __3, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1592< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, ast::Arg, TextSize), + __6: (TextSize, token::Tok, TextSize), + __7: (TextSize, Option>, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __2.2; + let __temp0 = __action680( + mode, + __0, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1349( + mode, + __temp0, + __3, + __4, + __5, + __6, + __7, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1593< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, ast::Arg, TextSize), + __7: (TextSize, token::Tok, TextSize), + __8: (TextSize, Option>, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __3.2; + let __temp0 = __action681( + mode, + __0, + __1, + __2, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1349( + mode, + __temp0, + __4, + __5, + __6, + __7, + __8, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1594< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, Option>, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action418( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1350( + mode, + __temp0, + __1, + __2, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1595< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, Option>, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __2.2; + let __temp0 = __action680( + mode, + __0, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1350( + mode, + __temp0, + __3, + __4, + __5, + __6, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1596< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, token::Tok, TextSize), + __7: (TextSize, Option>, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __3.2; + let __temp0 = __action681( + mode, + __0, + __1, + __2, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1350( + mode, + __temp0, + __4, + __5, + __6, + __7, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1597< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Arg, TextSize), + __4: (TextSize, alloc::vec::Vec, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, Option>, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action418( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1351( + mode, + __temp0, + __1, + __2, + __3, + __4, + __5, + __6, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1598< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, ast::Arg, TextSize), + __6: (TextSize, alloc::vec::Vec, TextSize), + __7: (TextSize, token::Tok, TextSize), + __8: (TextSize, Option>, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __2.2; + let __temp0 = __action680( + mode, + __0, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1351( + mode, + __temp0, + __3, + __4, + __5, + __6, + __7, + __8, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1599< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, ast::Arg, TextSize), + __7: (TextSize, alloc::vec::Vec, TextSize), + __8: (TextSize, token::Tok, TextSize), + __9: (TextSize, Option>, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __3.2; + let __temp0 = __action681( + mode, + __0, + __1, + __2, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1351( + mode, + __temp0, + __4, + __5, + __6, + __7, + __8, + __9, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1600< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, Option>, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action418( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1352( + mode, + __temp0, + __1, + __2, + __3, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1601< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, alloc::vec::Vec, TextSize), + __6: (TextSize, token::Tok, TextSize), + __7: (TextSize, Option>, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __2.2; + let __temp0 = __action680( + mode, + __0, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1352( + mode, + __temp0, + __3, + __4, + __5, + __6, + __7, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1602< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, alloc::vec::Vec, TextSize), + __7: (TextSize, token::Tok, TextSize), + __8: (TextSize, Option>, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __3.2; + let __temp0 = __action681( + mode, + __0, + __1, + __2, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1352( + mode, + __temp0, + __4, + __5, + __6, + __7, + __8, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1603< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Arg, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action418( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1353( + mode, + __temp0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1604< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, ast::Arg, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __2.2; + let __temp0 = __action680( + mode, + __0, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1353( + mode, + __temp0, + __3, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1605< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, ast::Arg, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __3.2; + let __temp0 = __action681( + mode, + __0, + __1, + __2, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1353( + mode, + __temp0, + __4, + __5, + __6, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1606< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action418( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1354( + mode, + __temp0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1607< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __2.2; + let __temp0 = __action680( + mode, + __0, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1354( + mode, + __temp0, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1608< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __3.2; + let __temp0 = __action681( + mode, + __0, + __1, + __2, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1354( + mode, + __temp0, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1609< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Arg, TextSize), + __4: (TextSize, alloc::vec::Vec, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action418( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1355( + mode, + __temp0, + __1, + __2, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1610< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, ast::Arg, TextSize), + __6: (TextSize, alloc::vec::Vec, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __2.2; + let __temp0 = __action680( + mode, + __0, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1355( + mode, + __temp0, + __3, + __4, + __5, + __6, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1611< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, ast::Arg, TextSize), + __7: (TextSize, alloc::vec::Vec, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __3.2; + let __temp0 = __action681( + mode, + __0, + __1, + __2, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1355( + mode, + __temp0, + __4, + __5, + __6, + __7, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1612< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action418( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1356( + mode, + __temp0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1613< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, alloc::vec::Vec, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __2.2; + let __temp0 = __action680( + mode, + __0, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1356( + mode, + __temp0, + __3, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1614< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, alloc::vec::Vec, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __3.2; + let __temp0 = __action681( + mode, + __0, + __1, + __2, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1356( + mode, + __temp0, + __4, + __5, + __6, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1615< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action418( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1357( + mode, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1616< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __2.2; + let __temp0 = __action680( + mode, + __0, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1357( + mode, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1617< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __3.2; + let __temp0 = __action681( + mode, + __0, + __1, + __2, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1357( + mode, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1618< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, Option>, TextSize), + __3: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action418( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1358( + mode, + __temp0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1619< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, Option>, TextSize), + __5: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __2.2; + let __temp0 = __action680( + mode, + __0, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1358( + mode, + __temp0, + __3, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1620< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, Option>, TextSize), + __6: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __3.2; + let __temp0 = __action681( + mode, + __0, + __1, + __2, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1358( + mode, + __temp0, + __4, + __5, + __6, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1621< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, Option>, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action418( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1359( + mode, + __temp0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1622< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, Option>, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __2.2; + let __temp0 = __action680( + mode, + __0, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1359( + mode, + __temp0, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1623< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, Option>, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __3.2; + let __temp0 = __action681( + mode, + __0, + __1, + __2, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1359( + mode, + __temp0, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1624< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Arg, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, Option>, TextSize), + __6: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action426( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1378( + mode, + __temp0, + __1, + __2, + __3, + __4, + __5, + __6, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1625< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, ast::Arg, TextSize), + __6: (TextSize, token::Tok, TextSize), + __7: (TextSize, Option>, TextSize), + __8: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __2.2; + let __temp0 = __action688( + mode, + __0, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1378( + mode, + __temp0, + __3, + __4, + __5, + __6, + __7, + __8, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1626< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, ast::Arg, TextSize), + __7: (TextSize, token::Tok, TextSize), + __8: (TextSize, Option>, TextSize), + __9: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __3.2; + let __temp0 = __action689( + mode, + __0, + __1, + __2, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1378( + mode, + __temp0, + __4, + __5, + __6, + __7, + __8, + __9, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1627< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, Option>, TextSize), + __5: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action426( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1379( + mode, + __temp0, + __1, + __2, + __3, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1628< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, Option>, TextSize), + __7: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __2.2; + let __temp0 = __action688( + mode, + __0, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1379( + mode, + __temp0, + __3, + __4, + __5, + __6, + __7, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1629< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, token::Tok, TextSize), + __7: (TextSize, Option>, TextSize), + __8: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __3.2; + let __temp0 = __action689( + mode, + __0, + __1, + __2, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1379( + mode, + __temp0, + __4, + __5, + __6, + __7, + __8, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1630< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Arg, TextSize), + __4: (TextSize, alloc::vec::Vec, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, Option>, TextSize), + __7: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action426( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1380( + mode, + __temp0, + __1, + __2, + __3, + __4, + __5, + __6, + __7, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1631< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, ast::Arg, TextSize), + __6: (TextSize, alloc::vec::Vec, TextSize), + __7: (TextSize, token::Tok, TextSize), + __8: (TextSize, Option>, TextSize), + __9: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __2.2; + let __temp0 = __action688( + mode, + __0, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1380( + mode, + __temp0, + __3, + __4, + __5, + __6, + __7, + __8, + __9, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1632< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, ast::Arg, TextSize), + __7: (TextSize, alloc::vec::Vec, TextSize), + __8: (TextSize, token::Tok, TextSize), + __9: (TextSize, Option>, TextSize), + __10: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __3.2; + let __temp0 = __action689( + mode, + __0, + __1, + __2, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1380( + mode, + __temp0, + __4, + __5, + __6, + __7, + __8, + __9, + __10, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1633< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, Option>, TextSize), + __6: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action426( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1381( + mode, + __temp0, + __1, + __2, + __3, + __4, + __5, + __6, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1634< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, alloc::vec::Vec, TextSize), + __6: (TextSize, token::Tok, TextSize), + __7: (TextSize, Option>, TextSize), + __8: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __2.2; + let __temp0 = __action688( + mode, + __0, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1381( + mode, + __temp0, + __3, + __4, + __5, + __6, + __7, + __8, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1635< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, alloc::vec::Vec, TextSize), + __7: (TextSize, token::Tok, TextSize), + __8: (TextSize, Option>, TextSize), + __9: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __3.2; + let __temp0 = __action689( + mode, + __0, + __1, + __2, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1381( + mode, + __temp0, + __4, + __5, + __6, + __7, + __8, + __9, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1636< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Arg, TextSize), + __4: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action426( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1382( + mode, + __temp0, + __1, + __2, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1637< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, ast::Arg, TextSize), + __6: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __2.2; + let __temp0 = __action688( + mode, + __0, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1382( + mode, + __temp0, + __3, + __4, + __5, + __6, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1638< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, ast::Arg, TextSize), + __7: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __3.2; + let __temp0 = __action689( + mode, + __0, + __1, + __2, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1382( + mode, + __temp0, + __4, + __5, + __6, + __7, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1639< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action426( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1383( + mode, + __temp0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1640< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __2.2; + let __temp0 = __action688( + mode, + __0, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1383( + mode, + __temp0, + __3, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1641< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __3.2; + let __temp0 = __action689( + mode, + __0, + __1, + __2, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1383( + mode, + __temp0, + __4, + __5, + __6, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1642< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Arg, TextSize), + __4: (TextSize, alloc::vec::Vec, TextSize), + __5: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action426( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1384( + mode, + __temp0, + __1, + __2, + __3, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1643< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, ast::Arg, TextSize), + __6: (TextSize, alloc::vec::Vec, TextSize), + __7: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __2.2; + let __temp0 = __action688( + mode, + __0, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1384( + mode, + __temp0, + __3, + __4, + __5, + __6, + __7, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1644< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, ast::Arg, TextSize), + __7: (TextSize, alloc::vec::Vec, TextSize), + __8: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __3.2; + let __temp0 = __action689( + mode, + __0, + __1, + __2, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1384( + mode, + __temp0, + __4, + __5, + __6, + __7, + __8, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1645< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action426( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1385( + mode, + __temp0, + __1, + __2, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1646< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, alloc::vec::Vec, TextSize), + __6: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __2.2; + let __temp0 = __action688( + mode, + __0, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1385( + mode, + __temp0, + __3, + __4, + __5, + __6, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1647< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, alloc::vec::Vec, TextSize), + __7: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __3.2; + let __temp0 = __action689( + mode, + __0, + __1, + __2, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1385( + mode, + __temp0, + __4, + __5, + __6, + __7, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1648< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action426( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1386( + mode, + __temp0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1649< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __2.2; + let __temp0 = __action688( + mode, + __0, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1386( + mode, + __temp0, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1650< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __3.2; + let __temp0 = __action689( + mode, + __0, + __1, + __2, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1386( + mode, + __temp0, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1651< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Arg, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, Option>, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action426( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1387( + mode, + __temp0, + __1, + __2, + __3, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1652< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, ast::Arg, TextSize), + __6: (TextSize, token::Tok, TextSize), + __7: (TextSize, Option>, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __2.2; + let __temp0 = __action688( + mode, + __0, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1387( + mode, + __temp0, + __3, + __4, + __5, + __6, + __7, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1653< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, ast::Arg, TextSize), + __7: (TextSize, token::Tok, TextSize), + __8: (TextSize, Option>, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __3.2; + let __temp0 = __action689( + mode, + __0, + __1, + __2, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1387( + mode, + __temp0, + __4, + __5, + __6, + __7, + __8, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1654< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, Option>, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action426( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1388( + mode, + __temp0, + __1, + __2, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1655< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, Option>, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __2.2; + let __temp0 = __action688( + mode, + __0, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1388( + mode, + __temp0, + __3, + __4, + __5, + __6, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1656< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, token::Tok, TextSize), + __7: (TextSize, Option>, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __3.2; + let __temp0 = __action689( + mode, + __0, + __1, + __2, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1388( + mode, + __temp0, + __4, + __5, + __6, + __7, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1657< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Arg, TextSize), + __4: (TextSize, alloc::vec::Vec, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, Option>, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action426( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1389( + mode, + __temp0, + __1, + __2, + __3, + __4, + __5, + __6, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1658< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, ast::Arg, TextSize), + __6: (TextSize, alloc::vec::Vec, TextSize), + __7: (TextSize, token::Tok, TextSize), + __8: (TextSize, Option>, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __2.2; + let __temp0 = __action688( + mode, + __0, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1389( + mode, + __temp0, + __3, + __4, + __5, + __6, + __7, + __8, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1659< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, ast::Arg, TextSize), + __7: (TextSize, alloc::vec::Vec, TextSize), + __8: (TextSize, token::Tok, TextSize), + __9: (TextSize, Option>, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __3.2; + let __temp0 = __action689( + mode, + __0, + __1, + __2, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1389( + mode, + __temp0, + __4, + __5, + __6, + __7, + __8, + __9, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1660< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, Option>, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action426( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1390( + mode, + __temp0, + __1, + __2, + __3, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1661< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, alloc::vec::Vec, TextSize), + __6: (TextSize, token::Tok, TextSize), + __7: (TextSize, Option>, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __2.2; + let __temp0 = __action688( + mode, + __0, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1390( + mode, + __temp0, + __3, + __4, + __5, + __6, + __7, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1662< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, alloc::vec::Vec, TextSize), + __7: (TextSize, token::Tok, TextSize), + __8: (TextSize, Option>, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __3.2; + let __temp0 = __action689( + mode, + __0, + __1, + __2, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1390( + mode, + __temp0, + __4, + __5, + __6, + __7, + __8, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1663< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Arg, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action426( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1391( + mode, + __temp0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1664< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, ast::Arg, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __2.2; + let __temp0 = __action688( + mode, + __0, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1391( + mode, + __temp0, + __3, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1665< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, ast::Arg, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __3.2; + let __temp0 = __action689( + mode, + __0, + __1, + __2, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1391( + mode, + __temp0, + __4, + __5, + __6, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1666< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action426( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1392( + mode, + __temp0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1667< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __2.2; + let __temp0 = __action688( + mode, + __0, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1392( + mode, + __temp0, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1668< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __3.2; + let __temp0 = __action689( + mode, + __0, + __1, + __2, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1392( + mode, + __temp0, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1669< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Arg, TextSize), + __4: (TextSize, alloc::vec::Vec, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action426( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1393( + mode, + __temp0, + __1, + __2, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1670< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, ast::Arg, TextSize), + __6: (TextSize, alloc::vec::Vec, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __2.2; + let __temp0 = __action688( + mode, + __0, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1393( + mode, + __temp0, + __3, + __4, + __5, + __6, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1671< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, ast::Arg, TextSize), + __7: (TextSize, alloc::vec::Vec, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __3.2; + let __temp0 = __action689( + mode, + __0, + __1, + __2, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1393( + mode, + __temp0, + __4, + __5, + __6, + __7, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1672< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action426( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1394( + mode, + __temp0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1673< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, alloc::vec::Vec, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __2.2; + let __temp0 = __action688( + mode, + __0, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1394( + mode, + __temp0, + __3, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1674< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, alloc::vec::Vec, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __3.2; + let __temp0 = __action689( + mode, + __0, + __1, + __2, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1394( + mode, + __temp0, + __4, + __5, + __6, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1675< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action426( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1395( + mode, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1676< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __2.2; + let __temp0 = __action688( + mode, + __0, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1395( + mode, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1677< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __3.2; + let __temp0 = __action689( + mode, + __0, + __1, + __2, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1395( + mode, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1678< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, Option>, TextSize), + __3: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action426( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1396( + mode, + __temp0, + __1, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1679< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, Option>, TextSize), + __5: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __2.2; + let __temp0 = __action688( + mode, + __0, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1396( + mode, + __temp0, + __3, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1680< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, Option>, TextSize), + __6: (TextSize, token::Tok, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __3.2; + let __temp0 = __action689( + mode, + __0, + __1, + __2, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1396( + mode, + __temp0, + __4, + __5, + __6, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1681< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, Option>, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action426( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1397( + mode, + __temp0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1682< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, Option>, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __2.2; + let __temp0 = __action688( + mode, + __0, + __1, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1397( + mode, + __temp0, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1683< +>( + mode: Mode, + __0: (TextSize, Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, alloc::vec::Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, Option>, TextSize), +) -> Result> +{ + let __start0 = __0.0; + let __end0 = __3.2; + let __temp0 = __action689( + mode, + __0, + __1, + __2, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1397( + mode, + __temp0, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1684< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Arguments, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Expr, TextSize), +) -> Result> +{ + let __start0 = __1.0; + let __end0 = __1.2; + let __temp0 = __action259( + mode, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1309( + mode, + __0, + __temp0, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1685< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Expr, TextSize), +) -> Result> +{ + let __start0 = __0.2; + let __end0 = __1.0; + let __temp0 = __action260( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1309( + mode, + __0, + __temp0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1686< +>( + mode: Mode, + __0: (TextSize, core::option::Option, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, core::option::Option, TextSize), + __3: (TextSize, Option, TextSize), +) -> ast::Expr +{ + let __start0 = __3.0; + let __end0 = __3.2; + let __temp0 = __action255( + mode, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1441( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1687< +>( + mode: Mode, + __0: (TextSize, core::option::Option, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, core::option::Option, TextSize), +) -> ast::Expr +{ + let __start0 = __2.2; + let __end0 = __2.2; + let __temp0 = __action256( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1441( + mode, + __0, + __1, + __2, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1688< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Suite, TextSize), +) -> ast::ExceptHandler +{ + let __start0 = __1.0; + let __end0 = __1.2; + let __temp0 = __action305( + mode, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action786( + mode, + __0, + __temp0, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1689< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Suite, TextSize), +) -> ast::ExceptHandler +{ + let __start0 = __0.2; + let __end0 = __1.0; + let __temp0 = __action306( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action786( + mode, + __0, + __temp0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1690< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), +) -> Option +{ + let __start0 = __1.0; + let __end0 = __1.2; + let __temp0 = __action305( + mode, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action906( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1691< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), +) -> Option +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action306( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action906( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1692< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Expr, TextSize), + __3: (TextSize, Option, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __start1 = __2.0; + let __end1 = __2.2; + let __temp0 = __action305( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + let __temp1 = __action305( + mode, + __2, + ); + let __temp1 = (__start1, __temp1, __end1); + __action1686( + mode, + __temp0, + __1, + __temp1, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1693< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, Option, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __start1 = __1.2; + let __end1 = __2.0; + let __temp0 = __action305( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + let __temp1 = __action306( + mode, + &__start1, + &__end1, + ); + let __temp1 = (__start1, __temp1, __end1); + __action1686( + mode, + __temp0, + __1, + __temp1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1694< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, Option, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __start1 = __1.0; + let __end1 = __1.2; + let __temp0 = __action306( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + let __temp1 = __action305( + mode, + __1, + ); + let __temp1 = (__start1, __temp1, __end1); + __action1686( + mode, + __temp0, + __0, + __temp1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1695< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, Option, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __start1 = __0.2; + let __end1 = __1.0; + let __temp0 = __action306( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + let __temp1 = __action306( + mode, + &__start1, + &__end1, + ); + let __temp1 = (__start1, __temp1, __end1); + __action1686( + mode, + __temp0, + __0, + __temp1, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1696< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __start1 = __2.0; + let __end1 = __2.2; + let __temp0 = __action305( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + let __temp1 = __action305( + mode, + __2, + ); + let __temp1 = (__start1, __temp1, __end1); + __action1687( + mode, + __temp0, + __1, + __temp1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1697< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, token::Tok, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __start1 = __1.2; + let __end1 = __1.2; + let __temp0 = __action305( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + let __temp1 = __action306( + mode, + &__start1, + &__end1, + ); + let __temp1 = (__start1, __temp1, __end1); + __action1687( + mode, + __temp0, + __1, + __temp1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1698< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __start1 = __1.0; + let __end1 = __1.2; + let __temp0 = __action306( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + let __temp1 = __action305( + mode, + __1, + ); + let __temp1 = (__start1, __temp1, __end1); + __action1687( + mode, + __temp0, + __0, + __temp1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1699< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.0; + let __start1 = __0.2; + let __end1 = __0.2; + let __temp0 = __action306( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + let __temp1 = __action306( + mode, + &__start1, + &__end1, + ); + let __temp1 = (__start1, __temp1, __end1); + __action1687( + mode, + __temp0, + __0, + __temp1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1700< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Expr, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, ast::Expr, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, ast::Suite, TextSize), + __7: (TextSize, token::Tok, TextSize), + __8: (TextSize, token::Tok, TextSize), + __9: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __4.0; + let __end0 = __4.2; + let __temp0 = __action221( + mode, + __4, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1105( + mode, + __0, + __1, + __2, + __3, + __temp0, + __5, + __6, + __7, + __8, + __9, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1701< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Expr, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, ast::Expr, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __4.0; + let __end0 = __4.2; + let __temp0 = __action221( + mode, + __4, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1106( + mode, + __0, + __1, + __2, + __3, + __temp0, + __5, + __6, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1702< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Expr, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, ast::Suite, TextSize), + __6: (TextSize, token::Tok, TextSize), + __7: (TextSize, token::Tok, TextSize), + __8: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __3.0; + let __end0 = __3.2; + let __temp0 = __action221( + mode, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1107( + mode, + __0, + __1, + __2, + __temp0, + __4, + __5, + __6, + __7, + __8, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1703< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Expr, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __3.0; + let __end0 = __3.2; + let __temp0 = __action221( + mode, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1108( + mode, + __0, + __1, + __2, + __temp0, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1704< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), +) -> core::option::Option +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action221( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action373( + mode, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1705< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action221( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action31( + mode, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1706< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action221( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action33( + mode, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1707< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), +) -> ast::Mod +{ + let __start0 = __1.0; + let __end0 = __1.2; + let __temp0 = __action221( + mode, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1452( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1708< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, alloc::vec::Vec, TextSize), +) -> ast::Mod +{ + let __start0 = __1.0; + let __end0 = __1.2; + let __temp0 = __action221( + mode, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1453( + mode, + __0, + __temp0, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1709< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), +) -> ast::Stmt +{ + let __start0 = __1.0; + let __end0 = __1.2; + let __temp0 = __action1704( + mode, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1287( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1710< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), +) -> ast::Stmt +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action374( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1287( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1711< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), +) -> ast::Expr +{ + let __start0 = __1.0; + let __end0 = __1.2; + let __temp0 = __action1704( + mode, + __1, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1482( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1712< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), +) -> ast::Expr +{ + let __start0 = __0.2; + let __end0 = __0.2; + let __temp0 = __action374( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1482( + mode, + __0, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1713< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), +) -> ast::Stmt +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action1706( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1506( + mode, + __temp0, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1714< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, alloc::vec::Vec, TextSize), +) -> ast::Stmt +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action1706( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1507( + mode, + __temp0, + __1, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1715< +>( + mode: Mode, + __0: (TextSize, ast::Expr, TextSize), + __1: (TextSize, ast::Operator, TextSize), + __2: (TextSize, ast::Expr, TextSize), +) -> ast::Stmt +{ + let __start0 = __0.0; + let __end0 = __0.2; + let __temp0 = __action1706( + mode, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1281( + mode, + __temp0, + __1, + __2, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1716< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Identifier, TextSize), + __2: (TextSize, Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, ArgumentList, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, token::Tok, TextSize), + __7: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __2.0; + let __end0 = __2.2; + let __temp0 = __action286( + mode, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1532( + mode, + __0, + __1, + __temp0, + __3, + __4, + __5, + __6, + __7, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1717< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Identifier, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ArgumentList, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __1.2; + let __end0 = __2.0; + let __temp0 = __action287( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1532( + mode, + __0, + __1, + __temp0, + __2, + __3, + __4, + __5, + __6, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1718< +>( + mode: Mode, + __0: (TextSize, alloc::vec::Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Identifier, TextSize), + __3: (TextSize, Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, ArgumentList, TextSize), + __6: (TextSize, token::Tok, TextSize), + __7: (TextSize, token::Tok, TextSize), + __8: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __3.0; + let __end0 = __3.2; + let __temp0 = __action286( + mode, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1533( + mode, + __0, + __1, + __2, + __temp0, + __4, + __5, + __6, + __7, + __8, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1719< +>( + mode: Mode, + __0: (TextSize, alloc::vec::Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Identifier, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, ArgumentList, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, token::Tok, TextSize), + __7: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __2.2; + let __end0 = __3.0; + let __temp0 = __action287( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1533( + mode, + __0, + __1, + __2, + __temp0, + __3, + __4, + __5, + __6, + __7, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1720< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Identifier, TextSize), + __2: (TextSize, Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __2.0; + let __end0 = __2.2; + let __temp0 = __action286( + mode, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1534( + mode, + __0, + __1, + __temp0, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1721< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Identifier, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __1.2; + let __end0 = __2.0; + let __temp0 = __action287( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1534( + mode, + __0, + __1, + __temp0, + __2, + __3, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1722< +>( + mode: Mode, + __0: (TextSize, alloc::vec::Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Identifier, TextSize), + __3: (TextSize, Vec, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __3.0; + let __end0 = __3.2; + let __temp0 = __action286( + mode, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1535( + mode, + __0, + __1, + __2, + __temp0, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1723< +>( + mode: Mode, + __0: (TextSize, alloc::vec::Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Identifier, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __2.2; + let __end0 = __3.0; + let __temp0 = __action287( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1535( + mode, + __0, + __1, + __2, + __temp0, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1724< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Identifier, TextSize), + __3: (TextSize, Vec, TextSize), + __4: (TextSize, ast::Arguments, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, ast::Expr, TextSize), + __7: (TextSize, token::Tok, TextSize), + __8: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __3.0; + let __end0 = __3.2; + let __temp0 = __action286( + mode, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1536( + mode, + __0, + __1, + __2, + __temp0, + __4, + __5, + __6, + __7, + __8, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1725< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Identifier, TextSize), + __3: (TextSize, ast::Arguments, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, ast::Expr, TextSize), + __6: (TextSize, token::Tok, TextSize), + __7: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __2.2; + let __end0 = __3.0; + let __temp0 = __action287( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1536( + mode, + __0, + __1, + __2, + __temp0, + __3, + __4, + __5, + __6, + __7, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1726< +>( + mode: Mode, + __0: (TextSize, alloc::vec::Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Identifier, TextSize), + __4: (TextSize, Vec, TextSize), + __5: (TextSize, ast::Arguments, TextSize), + __6: (TextSize, token::Tok, TextSize), + __7: (TextSize, ast::Expr, TextSize), + __8: (TextSize, token::Tok, TextSize), + __9: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __4.0; + let __end0 = __4.2; + let __temp0 = __action286( + mode, + __4, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1537( + mode, + __0, + __1, + __2, + __3, + __temp0, + __5, + __6, + __7, + __8, + __9, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1727< +>( + mode: Mode, + __0: (TextSize, alloc::vec::Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Identifier, TextSize), + __4: (TextSize, ast::Arguments, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, ast::Expr, TextSize), + __7: (TextSize, token::Tok, TextSize), + __8: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __3.2; + let __end0 = __4.0; + let __temp0 = __action287( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1537( + mode, + __0, + __1, + __2, + __3, + __temp0, + __4, + __5, + __6, + __7, + __8, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1728< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Identifier, TextSize), + __3: (TextSize, Vec, TextSize), + __4: (TextSize, ast::Arguments, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __3.0; + let __end0 = __3.2; + let __temp0 = __action286( + mode, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1538( + mode, + __0, + __1, + __2, + __temp0, + __4, + __5, + __6, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1729< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Identifier, TextSize), + __3: (TextSize, ast::Arguments, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __2.2; + let __end0 = __3.0; + let __temp0 = __action287( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1538( + mode, + __0, + __1, + __2, + __temp0, + __3, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1730< +>( + mode: Mode, + __0: (TextSize, alloc::vec::Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Identifier, TextSize), + __4: (TextSize, Vec, TextSize), + __5: (TextSize, ast::Arguments, TextSize), + __6: (TextSize, token::Tok, TextSize), + __7: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __4.0; + let __end0 = __4.2; + let __temp0 = __action286( + mode, + __4, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1539( + mode, + __0, + __1, + __2, + __3, + __temp0, + __5, + __6, + __7, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1731< +>( + mode: Mode, + __0: (TextSize, alloc::vec::Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Identifier, TextSize), + __4: (TextSize, ast::Arguments, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __3.2; + let __end0 = __4.0; + let __temp0 = __action287( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1539( + mode, + __0, + __1, + __2, + __3, + __temp0, + __4, + __5, + __6, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1732< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Identifier, TextSize), + __2: (TextSize, Vec, TextSize), + __3: (TextSize, ast::Arguments, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, ast::Expr, TextSize), + __6: (TextSize, token::Tok, TextSize), + __7: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __2.0; + let __end0 = __2.2; + let __temp0 = __action286( + mode, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1540( + mode, + __0, + __1, + __temp0, + __3, + __4, + __5, + __6, + __7, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1733< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Identifier, TextSize), + __2: (TextSize, ast::Arguments, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, ast::Expr, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __1.2; + let __end0 = __2.0; + let __temp0 = __action287( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1540( + mode, + __0, + __1, + __temp0, + __2, + __3, + __4, + __5, + __6, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1734< +>( + mode: Mode, + __0: (TextSize, alloc::vec::Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Identifier, TextSize), + __3: (TextSize, Vec, TextSize), + __4: (TextSize, ast::Arguments, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, ast::Expr, TextSize), + __7: (TextSize, token::Tok, TextSize), + __8: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __3.0; + let __end0 = __3.2; + let __temp0 = __action286( + mode, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1541( + mode, + __0, + __1, + __2, + __temp0, + __4, + __5, + __6, + __7, + __8, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1735< +>( + mode: Mode, + __0: (TextSize, alloc::vec::Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Identifier, TextSize), + __3: (TextSize, ast::Arguments, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, ast::Expr, TextSize), + __6: (TextSize, token::Tok, TextSize), + __7: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __2.2; + let __end0 = __3.0; + let __temp0 = __action287( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1541( + mode, + __0, + __1, + __2, + __temp0, + __3, + __4, + __5, + __6, + __7, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1736< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Identifier, TextSize), + __2: (TextSize, Vec, TextSize), + __3: (TextSize, ast::Arguments, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __2.0; + let __end0 = __2.2; + let __temp0 = __action286( + mode, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1542( + mode, + __0, + __1, + __temp0, + __3, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1737< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Identifier, TextSize), + __2: (TextSize, ast::Arguments, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __1.2; + let __end0 = __2.0; + let __temp0 = __action287( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1542( + mode, + __0, + __1, + __temp0, + __2, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1738< +>( + mode: Mode, + __0: (TextSize, alloc::vec::Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Identifier, TextSize), + __3: (TextSize, Vec, TextSize), + __4: (TextSize, ast::Arguments, TextSize), + __5: (TextSize, token::Tok, TextSize), + __6: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __3.0; + let __end0 = __3.2; + let __temp0 = __action286( + mode, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1543( + mode, + __0, + __1, + __2, + __temp0, + __4, + __5, + __6, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1739< +>( + mode: Mode, + __0: (TextSize, alloc::vec::Vec, TextSize), + __1: (TextSize, token::Tok, TextSize), + __2: (TextSize, ast::Identifier, TextSize), + __3: (TextSize, ast::Arguments, TextSize), + __4: (TextSize, token::Tok, TextSize), + __5: (TextSize, ast::Suite, TextSize), +) -> ast::Stmt +{ + let __start0 = __2.2; + let __end0 = __3.0; + let __temp0 = __action287( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1543( + mode, + __0, + __1, + __2, + __temp0, + __3, + __4, + __5, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1740< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, Vec, TextSize), + __3: (TextSize, token::Tok, TextSize), + __4: (TextSize, ast::Expr, TextSize), +) -> ast::Stmt +{ + let __start0 = __2.0; + let __end0 = __2.2; + let __temp0 = __action286( + mode, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1463( + mode, + __0, + __1, + __temp0, + __3, + __4, + ) +} + +#[allow(unused_variables)] +#[allow(clippy::too_many_arguments)] +fn __action1741< +>( + mode: Mode, + __0: (TextSize, token::Tok, TextSize), + __1: (TextSize, ast::Expr, TextSize), + __2: (TextSize, token::Tok, TextSize), + __3: (TextSize, ast::Expr, TextSize), +) -> ast::Stmt +{ + let __start0 = __1.2; + let __end0 = __2.0; + let __temp0 = __action287( + mode, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action1463( + mode, + __0, + __1, + __temp0, + __2, + __3, + ) +} +#[allow(clippy::type_complexity)] + +pub trait __ToTriple<> +{ + fn to_triple(value: Self) -> Result<(TextSize,token::Tok,TextSize), __lalrpop_util::ParseError>; +} + +impl<> __ToTriple<> for (TextSize, token::Tok, TextSize) +{ + fn to_triple(value: Self) -> Result<(TextSize,token::Tok,TextSize), __lalrpop_util::ParseError> { + Ok(value) + } +} +impl<> __ToTriple<> for Result<(TextSize, token::Tok, TextSize), LexicalError> +{ + fn to_triple(value: Self) -> Result<(TextSize,token::Tok,TextSize), __lalrpop_util::ParseError> { + match value { + Ok(v) => Ok(v), + Err(error) => Err(__lalrpop_util::ParseError::User { error }), + } + } +} diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__ann_assign_name.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__ann_assign_name.snap new file mode 100644 index 0000000000..dcc66532d9 --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__ann_assign_name.snap @@ -0,0 +1,37 @@ +--- +source: crates/ruff_python_parser/src/context.rs +expression: parse_ast +--- +[ + AnnAssign( + StmtAnnAssign { + range: 0..10, + target: Name( + ExprName { + range: 0..1, + id: "x", + ctx: Store, + }, + ), + annotation: Name( + ExprName { + range: 3..6, + id: "int", + ctx: Load, + }, + ), + value: Some( + Constant( + ExprConstant { + range: 9..10, + value: Int( + 1, + ), + kind: None, + }, + ), + ), + simple: true, + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_attribute.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_attribute.snap new file mode 100644 index 0000000000..af9785119c --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_attribute.snap @@ -0,0 +1,66 @@ +--- +source: crates/ruff_python_parser/src/context.rs +expression: parse_ast +--- +[ + Assign( + StmtAssign { + range: 0..15, + targets: [ + Attribute( + ExprAttribute { + range: 0..3, + value: Name( + ExprName { + range: 0..1, + id: "x", + ctx: Load, + }, + ), + attr: Identifier { + id: "y", + range: 2..3, + }, + ctx: Store, + }, + ), + ], + value: Tuple( + ExprTuple { + range: 6..15, + elts: [ + Constant( + ExprConstant { + range: 7..8, + value: Int( + 1, + ), + kind: None, + }, + ), + Constant( + ExprConstant { + range: 10..11, + value: Int( + 2, + ), + kind: None, + }, + ), + Constant( + ExprConstant { + range: 13..14, + value: Int( + 3, + ), + kind: None, + }, + ), + ], + ctx: Load, + }, + ), + type_comment: None, + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_for.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_for.snap new file mode 100644 index 0000000000..8f952845f0 --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_for.snap @@ -0,0 +1,62 @@ +--- +source: crates/ruff_python_parser/src/context.rs +expression: parse_ast +--- +[ + For( + StmtFor { + range: 0..24, + target: Name( + ExprName { + range: 4..5, + id: "x", + ctx: Store, + }, + ), + iter: Tuple( + ExprTuple { + range: 9..18, + elts: [ + Constant( + ExprConstant { + range: 10..11, + value: Int( + 1, + ), + kind: None, + }, + ), + Constant( + ExprConstant { + range: 13..14, + value: Int( + 2, + ), + kind: None, + }, + ), + Constant( + ExprConstant { + range: 16..17, + value: Int( + 3, + ), + kind: None, + }, + ), + ], + ctx: Load, + }, + ), + body: [ + Pass( + StmtPass { + range: 20..24, + }, + ), + ], + orelse: [], + type_comment: None, + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_list.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_list.snap new file mode 100644 index 0000000000..59d5985090 --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_list.snap @@ -0,0 +1,71 @@ +--- +source: crates/ruff_python_parser/src/context.rs +expression: parse_ast +--- +[ + Assign( + StmtAssign { + range: 0..18, + targets: [ + List( + ExprList { + range: 0..6, + elts: [ + Name( + ExprName { + range: 1..2, + id: "x", + ctx: Store, + }, + ), + Name( + ExprName { + range: 4..5, + id: "y", + ctx: Store, + }, + ), + ], + ctx: Store, + }, + ), + ], + value: Tuple( + ExprTuple { + range: 9..18, + elts: [ + Constant( + ExprConstant { + range: 10..11, + value: Int( + 1, + ), + kind: None, + }, + ), + Constant( + ExprConstant { + range: 13..14, + value: Int( + 2, + ), + kind: None, + }, + ), + Constant( + ExprConstant { + range: 16..17, + value: Int( + 3, + ), + kind: None, + }, + ), + ], + ctx: Load, + }, + ), + type_comment: None, + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_list_comp.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_list_comp.snap new file mode 100644 index 0000000000..f145007051 --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_list_comp.snap @@ -0,0 +1,82 @@ +--- +source: crates/ruff_python_parser/src/context.rs +expression: parse_ast +--- +[ + Assign( + StmtAssign { + range: 0..26, + targets: [ + Name( + ExprName { + range: 0..1, + id: "x", + ctx: Store, + }, + ), + ], + value: ListComp( + ExprListComp { + range: 4..26, + elt: Name( + ExprName { + range: 5..6, + id: "y", + ctx: Load, + }, + ), + generators: [ + Comprehension { + range: 7..25, + target: Name( + ExprName { + range: 11..12, + id: "y", + ctx: Store, + }, + ), + iter: Tuple( + ExprTuple { + range: 16..25, + elts: [ + Constant( + ExprConstant { + range: 17..18, + value: Int( + 1, + ), + kind: None, + }, + ), + Constant( + ExprConstant { + range: 20..21, + value: Int( + 2, + ), + kind: None, + }, + ), + Constant( + ExprConstant { + range: 23..24, + value: Int( + 3, + ), + kind: None, + }, + ), + ], + ctx: Load, + }, + ), + ifs: [], + is_async: false, + }, + ], + }, + ), + type_comment: None, + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_name.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_name.snap new file mode 100644 index 0000000000..e73b4b48b8 --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_name.snap @@ -0,0 +1,56 @@ +--- +source: crates/ruff_python_parser/src/context.rs +expression: parse_ast +--- +[ + Assign( + StmtAssign { + range: 0..13, + targets: [ + Name( + ExprName { + range: 0..1, + id: "x", + ctx: Store, + }, + ), + ], + value: Tuple( + ExprTuple { + range: 4..13, + elts: [ + Constant( + ExprConstant { + range: 5..6, + value: Int( + 1, + ), + kind: None, + }, + ), + Constant( + ExprConstant { + range: 8..9, + value: Int( + 2, + ), + kind: None, + }, + ), + Constant( + ExprConstant { + range: 11..12, + value: Int( + 3, + ), + kind: None, + }, + ), + ], + ctx: Load, + }, + ), + type_comment: None, + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_named_expr.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_named_expr.snap new file mode 100644 index 0000000000..d758617752 --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_named_expr.snap @@ -0,0 +1,40 @@ +--- +source: crates/ruff_python_parser/src/context.rs +expression: parse_ast +--- +[ + If( + StmtIf { + range: 0..14, + test: NamedExpr( + ExprNamedExpr { + range: 3..8, + target: Name( + ExprName { + range: 3..4, + id: "x", + ctx: Store, + }, + ), + value: Constant( + ExprConstant { + range: 7..8, + value: Int( + 1, + ), + kind: None, + }, + ), + }, + ), + body: [ + Pass( + StmtPass { + range: 10..14, + }, + ), + ], + elif_else_clauses: [], + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_set_comp.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_set_comp.snap new file mode 100644 index 0000000000..ca07b28d5c --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_set_comp.snap @@ -0,0 +1,82 @@ +--- +source: crates/ruff_python_parser/src/context.rs +expression: parse_ast +--- +[ + Assign( + StmtAssign { + range: 0..26, + targets: [ + Name( + ExprName { + range: 0..1, + id: "x", + ctx: Store, + }, + ), + ], + value: SetComp( + ExprSetComp { + range: 4..26, + elt: Name( + ExprName { + range: 5..6, + id: "y", + ctx: Load, + }, + ), + generators: [ + Comprehension { + range: 7..25, + target: Name( + ExprName { + range: 11..12, + id: "y", + ctx: Store, + }, + ), + iter: Tuple( + ExprTuple { + range: 16..25, + elts: [ + Constant( + ExprConstant { + range: 17..18, + value: Int( + 1, + ), + kind: None, + }, + ), + Constant( + ExprConstant { + range: 20..21, + value: Int( + 2, + ), + kind: None, + }, + ), + Constant( + ExprConstant { + range: 23..24, + value: Int( + 3, + ), + kind: None, + }, + ), + ], + ctx: Load, + }, + ), + ifs: [], + is_async: false, + }, + ], + }, + ), + type_comment: None, + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_starred.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_starred.snap new file mode 100644 index 0000000000..780b93c396 --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_starred.snap @@ -0,0 +1,77 @@ +--- +source: crates/ruff_python_parser/src/context.rs +expression: parse_ast +--- +[ + Assign( + StmtAssign { + range: 0..19, + targets: [ + Tuple( + ExprTuple { + range: 0..7, + elts: [ + Name( + ExprName { + range: 1..2, + id: "x", + ctx: Store, + }, + ), + Starred( + ExprStarred { + range: 4..6, + value: Name( + ExprName { + range: 5..6, + id: "y", + ctx: Store, + }, + ), + ctx: Store, + }, + ), + ], + ctx: Store, + }, + ), + ], + value: Tuple( + ExprTuple { + range: 10..19, + elts: [ + Constant( + ExprConstant { + range: 11..12, + value: Int( + 1, + ), + kind: None, + }, + ), + Constant( + ExprConstant { + range: 14..15, + value: Int( + 2, + ), + kind: None, + }, + ), + Constant( + ExprConstant { + range: 17..18, + value: Int( + 3, + ), + kind: None, + }, + ), + ], + ctx: Load, + }, + ), + type_comment: None, + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_subscript.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_subscript.snap new file mode 100644 index 0000000000..177b23f829 --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_subscript.snap @@ -0,0 +1,69 @@ +--- +source: crates/ruff_python_parser/src/context.rs +expression: parse_ast +--- +[ + Assign( + StmtAssign { + range: 0..16, + targets: [ + Subscript( + ExprSubscript { + range: 0..4, + value: Name( + ExprName { + range: 0..1, + id: "x", + ctx: Load, + }, + ), + slice: Name( + ExprName { + range: 2..3, + id: "y", + ctx: Load, + }, + ), + ctx: Store, + }, + ), + ], + value: Tuple( + ExprTuple { + range: 7..16, + elts: [ + Constant( + ExprConstant { + range: 8..9, + value: Int( + 1, + ), + kind: None, + }, + ), + Constant( + ExprConstant { + range: 11..12, + value: Int( + 2, + ), + kind: None, + }, + ), + Constant( + ExprConstant { + range: 14..15, + value: Int( + 3, + ), + kind: None, + }, + ), + ], + ctx: Load, + }, + ), + type_comment: None, + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_tuple.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_tuple.snap new file mode 100644 index 0000000000..5f3170453f --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_tuple.snap @@ -0,0 +1,71 @@ +--- +source: crates/ruff_python_parser/src/context.rs +expression: parse_ast +--- +[ + Assign( + StmtAssign { + range: 0..18, + targets: [ + Tuple( + ExprTuple { + range: 0..6, + elts: [ + Name( + ExprName { + range: 1..2, + id: "x", + ctx: Store, + }, + ), + Name( + ExprName { + range: 4..5, + id: "y", + ctx: Store, + }, + ), + ], + ctx: Store, + }, + ), + ], + value: Tuple( + ExprTuple { + range: 9..18, + elts: [ + Constant( + ExprConstant { + range: 10..11, + value: Int( + 1, + ), + kind: None, + }, + ), + Constant( + ExprConstant { + range: 13..14, + value: Int( + 2, + ), + kind: None, + }, + ), + Constant( + ExprConstant { + range: 16..17, + value: Int( + 3, + ), + kind: None, + }, + ), + ], + ctx: Load, + }, + ), + type_comment: None, + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_with.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_with.snap new file mode 100644 index 0000000000..f9a490525a --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__assign_with.snap @@ -0,0 +1,42 @@ +--- +source: crates/ruff_python_parser/src/context.rs +expression: parse_ast +--- +[ + With( + StmtWith { + range: 0..17, + items: [ + WithItem { + range: 5..11, + context_expr: Constant( + ExprConstant { + range: 5..6, + value: Int( + 1, + ), + kind: None, + }, + ), + optional_vars: Some( + Name( + ExprName { + range: 10..11, + id: "x", + ctx: Store, + }, + ), + ), + }, + ], + body: [ + Pass( + StmtPass { + range: 13..17, + }, + ), + ], + type_comment: None, + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__aug_assign_attribute.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__aug_assign_attribute.snap new file mode 100644 index 0000000000..5c93b41285 --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__aug_assign_attribute.snap @@ -0,0 +1,64 @@ +--- +source: crates/ruff_python_parser/src/context.rs +expression: parse_ast +--- +[ + AugAssign( + StmtAugAssign { + range: 0..16, + target: Attribute( + ExprAttribute { + range: 0..3, + value: Name( + ExprName { + range: 0..1, + id: "x", + ctx: Load, + }, + ), + attr: Identifier { + id: "y", + range: 2..3, + }, + ctx: Store, + }, + ), + op: Add, + value: Tuple( + ExprTuple { + range: 7..16, + elts: [ + Constant( + ExprConstant { + range: 8..9, + value: Int( + 1, + ), + kind: None, + }, + ), + Constant( + ExprConstant { + range: 11..12, + value: Int( + 2, + ), + kind: None, + }, + ), + Constant( + ExprConstant { + range: 14..15, + value: Int( + 3, + ), + kind: None, + }, + ), + ], + ctx: Load, + }, + ), + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__aug_assign_name.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__aug_assign_name.snap new file mode 100644 index 0000000000..f568177cb4 --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__aug_assign_name.snap @@ -0,0 +1,28 @@ +--- +source: crates/ruff_python_parser/src/context.rs +expression: parse_ast +--- +[ + AugAssign( + StmtAugAssign { + range: 0..6, + target: Name( + ExprName { + range: 0..1, + id: "x", + ctx: Store, + }, + ), + op: Add, + value: Constant( + ExprConstant { + range: 5..6, + value: Int( + 1, + ), + kind: None, + }, + ), + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__aug_assign_subscript.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__aug_assign_subscript.snap new file mode 100644 index 0000000000..62b3def51a --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__aug_assign_subscript.snap @@ -0,0 +1,67 @@ +--- +source: crates/ruff_python_parser/src/context.rs +expression: parse_ast +--- +[ + AugAssign( + StmtAugAssign { + range: 0..17, + target: Subscript( + ExprSubscript { + range: 0..4, + value: Name( + ExprName { + range: 0..1, + id: "x", + ctx: Load, + }, + ), + slice: Name( + ExprName { + range: 2..3, + id: "y", + ctx: Load, + }, + ), + ctx: Store, + }, + ), + op: Add, + value: Tuple( + ExprTuple { + range: 8..17, + elts: [ + Constant( + ExprConstant { + range: 9..10, + value: Int( + 1, + ), + kind: None, + }, + ), + Constant( + ExprConstant { + range: 12..13, + value: Int( + 2, + ), + kind: None, + }, + ), + Constant( + ExprConstant { + range: 15..16, + value: Int( + 3, + ), + kind: None, + }, + ), + ], + ctx: Load, + }, + ), + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__del_attribute.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__del_attribute.snap new file mode 100644 index 0000000000..0ee68d973c --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__del_attribute.snap @@ -0,0 +1,30 @@ +--- +source: crates/ruff_python_parser/src/context.rs +expression: parse_ast +--- +[ + Delete( + StmtDelete { + range: 0..7, + targets: [ + Attribute( + ExprAttribute { + range: 4..7, + value: Name( + ExprName { + range: 4..5, + id: "x", + ctx: Load, + }, + ), + attr: Identifier { + id: "y", + range: 6..7, + }, + ctx: Del, + }, + ), + ], + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__del_name.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__del_name.snap new file mode 100644 index 0000000000..c885abecbb --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__del_name.snap @@ -0,0 +1,20 @@ +--- +source: crates/ruff_python_parser/src/context.rs +expression: parse_ast +--- +[ + Delete( + StmtDelete { + range: 0..5, + targets: [ + Name( + ExprName { + range: 4..5, + id: "x", + ctx: Del, + }, + ), + ], + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__del_subscript.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__del_subscript.snap new file mode 100644 index 0000000000..f6333d4625 --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__context__tests__del_subscript.snap @@ -0,0 +1,33 @@ +--- +source: crates/ruff_python_parser/src/context.rs +expression: parse_ast +--- +[ + Delete( + StmtDelete { + range: 0..8, + targets: [ + Subscript( + ExprSubscript { + range: 4..8, + value: Name( + ExprName { + range: 4..5, + id: "x", + ctx: Load, + }, + ), + slice: Name( + ExprName { + range: 6..7, + id: "y", + ctx: Load, + }, + ), + ctx: Del, + }, + ), + ], + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_kw_only_args.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_kw_only_args.snap new file mode 100644 index 0000000000..505877441b --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_kw_only_args.snap @@ -0,0 +1,76 @@ +--- +source: crates/ruff_python_parser/src/function.rs +expression: parse_ast +--- +Ok( + [ + FunctionDef( + StmtFunctionDef { + range: 0..23, + name: Identifier { + id: "f", + range: 4..5, + }, + args: Arguments { + range: 5..17, + posonlyargs: [], + args: [], + vararg: None, + kwonlyargs: [ + ArgWithDefault { + range: 9..10, + def: Arg { + range: 9..10, + arg: Identifier { + id: "a", + range: 9..10, + }, + annotation: None, + type_comment: None, + }, + default: None, + }, + ArgWithDefault { + range: 12..13, + def: Arg { + range: 12..13, + arg: Identifier { + id: "b", + range: 12..13, + }, + annotation: None, + type_comment: None, + }, + default: None, + }, + ArgWithDefault { + range: 15..16, + def: Arg { + range: 15..16, + arg: Identifier { + id: "c", + range: 15..16, + }, + annotation: None, + type_comment: None, + }, + default: None, + }, + ], + kwarg: None, + }, + body: [ + Pass( + StmtPass { + range: 19..23, + }, + ), + ], + decorator_list: [], + returns: None, + type_params: [], + type_comment: None, + }, + ), + ], +) diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_kw_only_args_with_defaults.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_kw_only_args_with_defaults.snap new file mode 100644 index 0000000000..771d43378c --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_kw_only_args_with_defaults.snap @@ -0,0 +1,96 @@ +--- +source: crates/ruff_python_parser/src/function.rs +expression: parse_ast +--- +Ok( + [ + FunctionDef( + StmtFunctionDef { + range: 0..29, + name: Identifier { + id: "f", + range: 4..5, + }, + args: Arguments { + range: 5..23, + posonlyargs: [], + args: [], + vararg: None, + kwonlyargs: [ + ArgWithDefault { + range: 9..10, + def: Arg { + range: 9..10, + arg: Identifier { + id: "a", + range: 9..10, + }, + annotation: None, + type_comment: None, + }, + default: None, + }, + ArgWithDefault { + range: 12..16, + def: Arg { + range: 12..13, + arg: Identifier { + id: "b", + range: 12..13, + }, + annotation: None, + type_comment: None, + }, + default: Some( + Constant( + ExprConstant { + range: 14..16, + value: Int( + 20, + ), + kind: None, + }, + ), + ), + }, + ArgWithDefault { + range: 18..22, + def: Arg { + range: 18..19, + arg: Identifier { + id: "c", + range: 18..19, + }, + annotation: None, + type_comment: None, + }, + default: Some( + Constant( + ExprConstant { + range: 20..22, + value: Int( + 30, + ), + kind: None, + }, + ), + ), + }, + ], + kwarg: None, + }, + body: [ + Pass( + StmtPass { + range: 25..29, + }, + ), + ], + decorator_list: [], + returns: None, + type_params: [], + type_comment: None, + }, + ), + ], +) diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_no_args.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_no_args.snap new file mode 100644 index 0000000000..7a7e79cc28 --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_no_args.snap @@ -0,0 +1,36 @@ +--- +source: crates/ruff_python_parser/src/function.rs +expression: parse_ast +--- +Ok( + [ + FunctionDef( + StmtFunctionDef { + range: 0..13, + name: Identifier { + id: "f", + range: 4..5, + }, + args: Arguments { + range: 5..7, + posonlyargs: [], + args: [], + vararg: None, + kwonlyargs: [], + kwarg: None, + }, + body: [ + Pass( + StmtPass { + range: 9..13, + }, + ), + ], + decorator_list: [], + returns: None, + type_params: [], + type_comment: None, + }, + ), + ], +) diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_no_args_with_ranges.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_no_args_with_ranges.snap new file mode 100644 index 0000000000..7a7e79cc28 --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_no_args_with_ranges.snap @@ -0,0 +1,36 @@ +--- +source: crates/ruff_python_parser/src/function.rs +expression: parse_ast +--- +Ok( + [ + FunctionDef( + StmtFunctionDef { + range: 0..13, + name: Identifier { + id: "f", + range: 4..5, + }, + args: Arguments { + range: 5..7, + posonlyargs: [], + args: [], + vararg: None, + kwonlyargs: [], + kwarg: None, + }, + body: [ + Pass( + StmtPass { + range: 9..13, + }, + ), + ], + decorator_list: [], + returns: None, + type_params: [], + type_comment: None, + }, + ), + ], +) diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_pos_and_kw_only_args.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_pos_and_kw_only_args.snap new file mode 100644 index 0000000000..d4118e6228 --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_pos_and_kw_only_args.snap @@ -0,0 +1,116 @@ +--- +source: crates/ruff_python_parser/src/function.rs +expression: parse_ast +--- +Ok( + [ + FunctionDef( + StmtFunctionDef { + range: 0..32, + name: Identifier { + id: "f", + range: 4..5, + }, + args: Arguments { + range: 5..26, + posonlyargs: [], + args: [ + ArgWithDefault { + range: 6..7, + def: Arg { + range: 6..7, + arg: Identifier { + id: "a", + range: 6..7, + }, + annotation: None, + type_comment: None, + }, + default: None, + }, + ArgWithDefault { + range: 9..10, + def: Arg { + range: 9..10, + arg: Identifier { + id: "b", + range: 9..10, + }, + annotation: None, + type_comment: None, + }, + default: None, + }, + ArgWithDefault { + range: 12..13, + def: Arg { + range: 12..13, + arg: Identifier { + id: "c", + range: 12..13, + }, + annotation: None, + type_comment: None, + }, + default: None, + }, + ], + vararg: None, + kwonlyargs: [ + ArgWithDefault { + range: 18..19, + def: Arg { + range: 18..19, + arg: Identifier { + id: "d", + range: 18..19, + }, + annotation: None, + type_comment: None, + }, + default: None, + }, + ArgWithDefault { + range: 21..22, + def: Arg { + range: 21..22, + arg: Identifier { + id: "e", + range: 21..22, + }, + annotation: None, + type_comment: None, + }, + default: None, + }, + ArgWithDefault { + range: 24..25, + def: Arg { + range: 24..25, + arg: Identifier { + id: "f", + range: 24..25, + }, + annotation: None, + type_comment: None, + }, + default: None, + }, + ], + kwarg: None, + }, + body: [ + Pass( + StmtPass { + range: 28..32, + }, + ), + ], + decorator_list: [], + returns: None, + type_params: [], + type_comment: None, + }, + ), + ], +) diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_pos_and_kw_only_args_with_defaults.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_pos_and_kw_only_args_with_defaults.snap new file mode 100644 index 0000000000..de5e21a35e --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_pos_and_kw_only_args_with_defaults.snap @@ -0,0 +1,136 @@ +--- +source: crates/ruff_python_parser/src/function.rs +expression: parse_ast +--- +Ok( + [ + FunctionDef( + StmtFunctionDef { + range: 0..38, + name: Identifier { + id: "f", + range: 4..5, + }, + args: Arguments { + range: 5..32, + posonlyargs: [], + args: [ + ArgWithDefault { + range: 6..7, + def: Arg { + range: 6..7, + arg: Identifier { + id: "a", + range: 6..7, + }, + annotation: None, + type_comment: None, + }, + default: None, + }, + ArgWithDefault { + range: 9..10, + def: Arg { + range: 9..10, + arg: Identifier { + id: "b", + range: 9..10, + }, + annotation: None, + type_comment: None, + }, + default: None, + }, + ArgWithDefault { + range: 12..13, + def: Arg { + range: 12..13, + arg: Identifier { + id: "c", + range: 12..13, + }, + annotation: None, + type_comment: None, + }, + default: None, + }, + ], + vararg: None, + kwonlyargs: [ + ArgWithDefault { + range: 18..19, + def: Arg { + range: 18..19, + arg: Identifier { + id: "d", + range: 18..19, + }, + annotation: None, + type_comment: None, + }, + default: None, + }, + ArgWithDefault { + range: 21..25, + def: Arg { + range: 21..22, + arg: Identifier { + id: "e", + range: 21..22, + }, + annotation: None, + type_comment: None, + }, + default: Some( + Constant( + ExprConstant { + range: 23..25, + value: Int( + 20, + ), + kind: None, + }, + ), + ), + }, + ArgWithDefault { + range: 27..31, + def: Arg { + range: 27..28, + arg: Identifier { + id: "f", + range: 27..28, + }, + annotation: None, + type_comment: None, + }, + default: Some( + Constant( + ExprConstant { + range: 29..31, + value: Int( + 30, + ), + kind: None, + }, + ), + ), + }, + ], + kwarg: None, + }, + body: [ + Pass( + StmtPass { + range: 34..38, + }, + ), + ], + decorator_list: [], + returns: None, + type_params: [], + type_comment: None, + }, + ), + ], +) diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_pos_and_kw_only_args_with_defaults_and_varargs.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_pos_and_kw_only_args_with_defaults_and_varargs.snap new file mode 100644 index 0000000000..500623eb0c --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_pos_and_kw_only_args_with_defaults_and_varargs.snap @@ -0,0 +1,146 @@ +--- +source: crates/ruff_python_parser/src/function.rs +expression: parse_ast +--- +Ok( + [ + FunctionDef( + StmtFunctionDef { + range: 0..42, + name: Identifier { + id: "f", + range: 4..5, + }, + args: Arguments { + range: 5..36, + posonlyargs: [], + args: [ + ArgWithDefault { + range: 6..7, + def: Arg { + range: 6..7, + arg: Identifier { + id: "a", + range: 6..7, + }, + annotation: None, + type_comment: None, + }, + default: None, + }, + ArgWithDefault { + range: 9..10, + def: Arg { + range: 9..10, + arg: Identifier { + id: "b", + range: 9..10, + }, + annotation: None, + type_comment: None, + }, + default: None, + }, + ArgWithDefault { + range: 12..13, + def: Arg { + range: 12..13, + arg: Identifier { + id: "c", + range: 12..13, + }, + annotation: None, + type_comment: None, + }, + default: None, + }, + ], + vararg: Some( + Arg { + range: 16..20, + arg: Identifier { + id: "args", + range: 16..20, + }, + annotation: None, + type_comment: None, + }, + ), + kwonlyargs: [ + ArgWithDefault { + range: 22..23, + def: Arg { + range: 22..23, + arg: Identifier { + id: "d", + range: 22..23, + }, + annotation: None, + type_comment: None, + }, + default: None, + }, + ArgWithDefault { + range: 25..29, + def: Arg { + range: 25..26, + arg: Identifier { + id: "e", + range: 25..26, + }, + annotation: None, + type_comment: None, + }, + default: Some( + Constant( + ExprConstant { + range: 27..29, + value: Int( + 20, + ), + kind: None, + }, + ), + ), + }, + ArgWithDefault { + range: 31..35, + def: Arg { + range: 31..32, + arg: Identifier { + id: "f", + range: 31..32, + }, + annotation: None, + type_comment: None, + }, + default: Some( + Constant( + ExprConstant { + range: 33..35, + value: Int( + 30, + ), + kind: None, + }, + ), + ), + }, + ], + kwarg: None, + }, + body: [ + Pass( + StmtPass { + range: 38..42, + }, + ), + ], + decorator_list: [], + returns: None, + type_params: [], + type_comment: None, + }, + ), + ], +) diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_pos_and_kw_only_args_with_defaults_and_varargs_and_kwargs.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_pos_and_kw_only_args_with_defaults_and_varargs_and_kwargs.snap new file mode 100644 index 0000000000..2558f4e4ca --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_pos_and_kw_only_args_with_defaults_and_varargs_and_kwargs.snap @@ -0,0 +1,156 @@ +--- +source: crates/ruff_python_parser/src/function.rs +expression: parse_ast +--- +Ok( + [ + FunctionDef( + StmtFunctionDef { + range: 0..52, + name: Identifier { + id: "f", + range: 4..5, + }, + args: Arguments { + range: 5..46, + posonlyargs: [], + args: [ + ArgWithDefault { + range: 6..7, + def: Arg { + range: 6..7, + arg: Identifier { + id: "a", + range: 6..7, + }, + annotation: None, + type_comment: None, + }, + default: None, + }, + ArgWithDefault { + range: 9..10, + def: Arg { + range: 9..10, + arg: Identifier { + id: "b", + range: 9..10, + }, + annotation: None, + type_comment: None, + }, + default: None, + }, + ArgWithDefault { + range: 12..13, + def: Arg { + range: 12..13, + arg: Identifier { + id: "c", + range: 12..13, + }, + annotation: None, + type_comment: None, + }, + default: None, + }, + ], + vararg: Some( + Arg { + range: 16..20, + arg: Identifier { + id: "args", + range: 16..20, + }, + annotation: None, + type_comment: None, + }, + ), + kwonlyargs: [ + ArgWithDefault { + range: 22..23, + def: Arg { + range: 22..23, + arg: Identifier { + id: "d", + range: 22..23, + }, + annotation: None, + type_comment: None, + }, + default: None, + }, + ArgWithDefault { + range: 25..29, + def: Arg { + range: 25..26, + arg: Identifier { + id: "e", + range: 25..26, + }, + annotation: None, + type_comment: None, + }, + default: Some( + Constant( + ExprConstant { + range: 27..29, + value: Int( + 20, + ), + kind: None, + }, + ), + ), + }, + ArgWithDefault { + range: 31..35, + def: Arg { + range: 31..32, + arg: Identifier { + id: "f", + range: 31..32, + }, + annotation: None, + type_comment: None, + }, + default: Some( + Constant( + ExprConstant { + range: 33..35, + value: Int( + 30, + ), + kind: None, + }, + ), + ), + }, + ], + kwarg: Some( + Arg { + range: 39..45, + arg: Identifier { + id: "kwargs", + range: 39..45, + }, + annotation: None, + type_comment: None, + }, + ), + }, + body: [ + Pass( + StmtPass { + range: 48..52, + }, + ), + ], + decorator_list: [], + returns: None, + type_params: [], + type_comment: None, + }, + ), + ], +) diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_pos_args.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_pos_args.snap new file mode 100644 index 0000000000..3b86c08d86 --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_pos_args.snap @@ -0,0 +1,76 @@ +--- +source: crates/ruff_python_parser/src/function.rs +expression: parse_ast +--- +Ok( + [ + FunctionDef( + StmtFunctionDef { + range: 0..20, + name: Identifier { + id: "f", + range: 4..5, + }, + args: Arguments { + range: 5..14, + posonlyargs: [], + args: [ + ArgWithDefault { + range: 6..7, + def: Arg { + range: 6..7, + arg: Identifier { + id: "a", + range: 6..7, + }, + annotation: None, + type_comment: None, + }, + default: None, + }, + ArgWithDefault { + range: 9..10, + def: Arg { + range: 9..10, + arg: Identifier { + id: "b", + range: 9..10, + }, + annotation: None, + type_comment: None, + }, + default: None, + }, + ArgWithDefault { + range: 12..13, + def: Arg { + range: 12..13, + arg: Identifier { + id: "c", + range: 12..13, + }, + annotation: None, + type_comment: None, + }, + default: None, + }, + ], + vararg: None, + kwonlyargs: [], + kwarg: None, + }, + body: [ + Pass( + StmtPass { + range: 16..20, + }, + ), + ], + decorator_list: [], + returns: None, + type_params: [], + type_comment: None, + }, + ), + ], +) diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_pos_args_with_defaults.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_pos_args_with_defaults.snap new file mode 100644 index 0000000000..348433ef47 --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_pos_args_with_defaults.snap @@ -0,0 +1,96 @@ +--- +source: crates/ruff_python_parser/src/function.rs +expression: parse_ast +--- +Ok( + [ + FunctionDef( + StmtFunctionDef { + range: 0..26, + name: Identifier { + id: "f", + range: 4..5, + }, + args: Arguments { + range: 5..20, + posonlyargs: [], + args: [ + ArgWithDefault { + range: 6..7, + def: Arg { + range: 6..7, + arg: Identifier { + id: "a", + range: 6..7, + }, + annotation: None, + type_comment: None, + }, + default: None, + }, + ArgWithDefault { + range: 9..13, + def: Arg { + range: 9..10, + arg: Identifier { + id: "b", + range: 9..10, + }, + annotation: None, + type_comment: None, + }, + default: Some( + Constant( + ExprConstant { + range: 11..13, + value: Int( + 20, + ), + kind: None, + }, + ), + ), + }, + ArgWithDefault { + range: 15..19, + def: Arg { + range: 15..16, + arg: Identifier { + id: "c", + range: 15..16, + }, + annotation: None, + type_comment: None, + }, + default: Some( + Constant( + ExprConstant { + range: 17..19, + value: Int( + 30, + ), + kind: None, + }, + ), + ), + }, + ], + vararg: None, + kwonlyargs: [], + kwarg: None, + }, + body: [ + Pass( + StmtPass { + range: 22..26, + }, + ), + ], + decorator_list: [], + returns: None, + type_params: [], + type_comment: None, + }, + ), + ], +) diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_pos_args_with_ranges.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_pos_args_with_ranges.snap new file mode 100644 index 0000000000..3b86c08d86 --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__function_pos_args_with_ranges.snap @@ -0,0 +1,76 @@ +--- +source: crates/ruff_python_parser/src/function.rs +expression: parse_ast +--- +Ok( + [ + FunctionDef( + StmtFunctionDef { + range: 0..20, + name: Identifier { + id: "f", + range: 4..5, + }, + args: Arguments { + range: 5..14, + posonlyargs: [], + args: [ + ArgWithDefault { + range: 6..7, + def: Arg { + range: 6..7, + arg: Identifier { + id: "a", + range: 6..7, + }, + annotation: None, + type_comment: None, + }, + default: None, + }, + ArgWithDefault { + range: 9..10, + def: Arg { + range: 9..10, + arg: Identifier { + id: "b", + range: 9..10, + }, + annotation: None, + type_comment: None, + }, + default: None, + }, + ArgWithDefault { + range: 12..13, + def: Arg { + range: 12..13, + arg: Identifier { + id: "c", + range: 12..13, + }, + annotation: None, + type_comment: None, + }, + default: None, + }, + ], + vararg: None, + kwonlyargs: [], + kwarg: None, + }, + body: [ + Pass( + StmtPass { + range: 16..20, + }, + ), + ], + decorator_list: [], + returns: None, + type_params: [], + type_comment: None, + }, + ), + ], +) diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__lambda_kw_only_args.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__lambda_kw_only_args.snap new file mode 100644 index 0000000000..9cef272eea --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__lambda_kw_only_args.snap @@ -0,0 +1,75 @@ +--- +source: crates/ruff_python_parser/src/function.rs +expression: parse_ast +--- +Ok( + [ + Expr( + StmtExpr { + range: 0..20, + value: Lambda( + ExprLambda { + range: 0..20, + args: Arguments { + range: 7..17, + posonlyargs: [], + args: [], + vararg: None, + kwonlyargs: [ + ArgWithDefault { + range: 10..11, + def: Arg { + range: 10..11, + arg: Identifier { + id: "a", + range: 10..11, + }, + annotation: None, + type_comment: None, + }, + default: None, + }, + ArgWithDefault { + range: 13..14, + def: Arg { + range: 13..14, + arg: Identifier { + id: "b", + range: 13..14, + }, + annotation: None, + type_comment: None, + }, + default: None, + }, + ArgWithDefault { + range: 16..17, + def: Arg { + range: 16..17, + arg: Identifier { + id: "c", + range: 16..17, + }, + annotation: None, + type_comment: None, + }, + default: None, + }, + ], + kwarg: None, + }, + body: Constant( + ExprConstant { + range: 19..20, + value: Int( + 1, + ), + kind: None, + }, + ), + }, + ), + }, + ), + ], +) diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__lambda_kw_only_args_with_defaults.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__lambda_kw_only_args_with_defaults.snap new file mode 100644 index 0000000000..f0a47b83e1 --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__lambda_kw_only_args_with_defaults.snap @@ -0,0 +1,95 @@ +--- +source: crates/ruff_python_parser/src/function.rs +expression: parse_ast +--- +Ok( + [ + Expr( + StmtExpr { + range: 0..26, + value: Lambda( + ExprLambda { + range: 0..26, + args: Arguments { + range: 7..23, + posonlyargs: [], + args: [], + vararg: None, + kwonlyargs: [ + ArgWithDefault { + range: 10..11, + def: Arg { + range: 10..11, + arg: Identifier { + id: "a", + range: 10..11, + }, + annotation: None, + type_comment: None, + }, + default: None, + }, + ArgWithDefault { + range: 13..17, + def: Arg { + range: 13..14, + arg: Identifier { + id: "b", + range: 13..14, + }, + annotation: None, + type_comment: None, + }, + default: Some( + Constant( + ExprConstant { + range: 15..17, + value: Int( + 20, + ), + kind: None, + }, + ), + ), + }, + ArgWithDefault { + range: 19..23, + def: Arg { + range: 19..20, + arg: Identifier { + id: "c", + range: 19..20, + }, + annotation: None, + type_comment: None, + }, + default: Some( + Constant( + ExprConstant { + range: 21..23, + value: Int( + 30, + ), + kind: None, + }, + ), + ), + }, + ], + kwarg: None, + }, + body: Constant( + ExprConstant { + range: 25..26, + value: Int( + 1, + ), + kind: None, + }, + ), + }, + ), + }, + ), + ], +) diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__lambda_no_args.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__lambda_no_args.snap new file mode 100644 index 0000000000..3562bea124 --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__lambda_no_args.snap @@ -0,0 +1,35 @@ +--- +source: crates/ruff_python_parser/src/function.rs +expression: parse_ast +--- +Ok( + [ + Expr( + StmtExpr { + range: 0..9, + value: Lambda( + ExprLambda { + range: 0..9, + args: Arguments { + range: 6..6, + posonlyargs: [], + args: [], + vararg: None, + kwonlyargs: [], + kwarg: None, + }, + body: Constant( + ExprConstant { + range: 8..9, + value: Int( + 1, + ), + kind: None, + }, + ), + }, + ), + }, + ), + ], +) diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__lambda_pos_and_kw_only_args.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__lambda_pos_and_kw_only_args.snap new file mode 100644 index 0000000000..065f530a8a --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__lambda_pos_and_kw_only_args.snap @@ -0,0 +1,102 @@ +--- +source: crates/ruff_python_parser/src/function.rs +expression: parse_ast +--- +Ok( + [ + Expr( + StmtExpr { + range: 0..26, + value: Lambda( + ExprLambda { + range: 0..26, + args: Arguments { + range: 7..23, + posonlyargs: [], + args: [ + ArgWithDefault { + range: 7..8, + def: Arg { + range: 7..8, + arg: Identifier { + id: "a", + range: 7..8, + }, + annotation: None, + type_comment: None, + }, + default: None, + }, + ArgWithDefault { + range: 10..11, + def: Arg { + range: 10..11, + arg: Identifier { + id: "b", + range: 10..11, + }, + annotation: None, + type_comment: None, + }, + default: None, + }, + ArgWithDefault { + range: 13..14, + def: Arg { + range: 13..14, + arg: Identifier { + id: "c", + range: 13..14, + }, + annotation: None, + type_comment: None, + }, + default: None, + }, + ], + vararg: None, + kwonlyargs: [ + ArgWithDefault { + range: 19..20, + def: Arg { + range: 19..20, + arg: Identifier { + id: "d", + range: 19..20, + }, + annotation: None, + type_comment: None, + }, + default: None, + }, + ArgWithDefault { + range: 22..23, + def: Arg { + range: 22..23, + arg: Identifier { + id: "e", + range: 22..23, + }, + annotation: None, + type_comment: None, + }, + default: None, + }, + ], + kwarg: None, + }, + body: Constant( + ExprConstant { + range: 25..26, + value: Int( + 0, + ), + kind: None, + }, + ), + }, + ), + }, + ), + ], +) diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__lambda_pos_args.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__lambda_pos_args.snap new file mode 100644 index 0000000000..eed8d7c2ce --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__lambda_pos_args.snap @@ -0,0 +1,75 @@ +--- +source: crates/ruff_python_parser/src/function.rs +expression: parse_ast +--- +Ok( + [ + Expr( + StmtExpr { + range: 0..17, + value: Lambda( + ExprLambda { + range: 0..17, + args: Arguments { + range: 7..14, + posonlyargs: [], + args: [ + ArgWithDefault { + range: 7..8, + def: Arg { + range: 7..8, + arg: Identifier { + id: "a", + range: 7..8, + }, + annotation: None, + type_comment: None, + }, + default: None, + }, + ArgWithDefault { + range: 10..11, + def: Arg { + range: 10..11, + arg: Identifier { + id: "b", + range: 10..11, + }, + annotation: None, + type_comment: None, + }, + default: None, + }, + ArgWithDefault { + range: 13..14, + def: Arg { + range: 13..14, + arg: Identifier { + id: "c", + range: 13..14, + }, + annotation: None, + type_comment: None, + }, + default: None, + }, + ], + vararg: None, + kwonlyargs: [], + kwarg: None, + }, + body: Constant( + ExprConstant { + range: 16..17, + value: Int( + 1, + ), + kind: None, + }, + ), + }, + ), + }, + ), + ], +) diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__lambda_pos_args_with_defaults.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__lambda_pos_args_with_defaults.snap new file mode 100644 index 0000000000..8a974f428f --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__function__tests__lambda_pos_args_with_defaults.snap @@ -0,0 +1,95 @@ +--- +source: crates/ruff_python_parser/src/function.rs +expression: parse_ast +--- +Ok( + [ + Expr( + StmtExpr { + range: 0..23, + value: Lambda( + ExprLambda { + range: 0..23, + args: Arguments { + range: 7..20, + posonlyargs: [], + args: [ + ArgWithDefault { + range: 7..8, + def: Arg { + range: 7..8, + arg: Identifier { + id: "a", + range: 7..8, + }, + annotation: None, + type_comment: None, + }, + default: None, + }, + ArgWithDefault { + range: 10..14, + def: Arg { + range: 10..11, + arg: Identifier { + id: "b", + range: 10..11, + }, + annotation: None, + type_comment: None, + }, + default: Some( + Constant( + ExprConstant { + range: 12..14, + value: Int( + 20, + ), + kind: None, + }, + ), + ), + }, + ArgWithDefault { + range: 16..20, + def: Arg { + range: 16..17, + arg: Identifier { + id: "c", + range: 16..17, + }, + annotation: None, + type_comment: None, + }, + default: Some( + Constant( + ExprConstant { + range: 18..20, + value: Int( + 30, + ), + kind: None, + }, + ), + ), + }, + ], + vararg: None, + kwonlyargs: [], + kwarg: None, + }, + body: Constant( + ExprConstant { + range: 22..23, + value: Int( + 1, + ), + kind: None, + }, + ), + }, + ), + }, + ), + ], +) diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__decorator_ranges.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__decorator_ranges.snap new file mode 100644 index 0000000000..158705cdf5 --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__decorator_ranges.snap @@ -0,0 +1,76 @@ +--- +source: crates/ruff_python_parser/src/parser.rs +expression: parse_ast +--- +[ + FunctionDef( + StmtFunctionDef { + range: 0..34, + name: Identifier { + id: "test", + range: 18..22, + }, + args: Arguments { + range: 22..24, + posonlyargs: [], + args: [], + vararg: None, + kwonlyargs: [], + kwarg: None, + }, + body: [ + Pass( + StmtPass { + range: 30..34, + }, + ), + ], + decorator_list: [ + Decorator { + range: 0..13, + expression: Name( + ExprName { + range: 1..13, + id: "my_decorator", + ctx: Load, + }, + ), + }, + ], + returns: None, + type_params: [], + type_comment: None, + }, + ), + ClassDef( + StmtClassDef { + range: 36..73, + name: Identifier { + id: "Abcd", + range: 59..63, + }, + bases: [], + keywords: [], + body: [ + Pass( + StmtPass { + range: 69..73, + }, + ), + ], + type_params: [], + decorator_list: [ + Decorator { + range: 36..52, + expression: Name( + ExprName { + range: 37..52, + id: "class_decorator", + ctx: Load, + }, + ), + }, + ], + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__dict_unpacking.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__dict_unpacking.snap new file mode 100644 index 0000000000..6d54f4db9e --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__dict_unpacking.snap @@ -0,0 +1,61 @@ +--- +source: crates/ruff_python_parser/src/parser.rs +expression: parse_ast +--- +Dict( + ExprDict { + range: 0..25, + keys: [ + Some( + Constant( + ExprConstant { + range: 1..4, + value: Str( + "a", + ), + kind: None, + }, + ), + ), + None, + Some( + Constant( + ExprConstant { + range: 16..19, + value: Str( + "d", + ), + kind: None, + }, + ), + ), + ], + values: [ + Constant( + ExprConstant { + range: 6..9, + value: Str( + "b", + ), + kind: None, + }, + ), + Name( + ExprName { + range: 13..14, + id: "c", + ctx: Load, + }, + ), + Constant( + ExprConstant { + range: 21..24, + value: Str( + "e", + ), + kind: None, + }, + ), + ], + }, +) diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__generator_expression_argument.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__generator_expression_argument.snap new file mode 100644 index 0000000000..c3883f47d9 --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__generator_expression_argument.snap @@ -0,0 +1,147 @@ +--- +source: crates/ruff_python_parser/src/parser.rs +expression: parse_ast +--- +Call( + ExprCall { + range: 0..141, + func: Attribute( + ExprAttribute { + range: 0..8, + value: Constant( + ExprConstant { + range: 0..3, + value: Str( + " ", + ), + kind: None, + }, + ), + attr: Identifier { + id: "join", + range: 4..8, + }, + ctx: Load, + }, + ), + args: [ + GeneratorExp( + ExprGeneratorExp { + range: 14..139, + elt: Name( + ExprName { + range: 14..17, + id: "sql", + ctx: Load, + }, + ), + generators: [ + Comprehension { + range: 22..139, + target: Name( + ExprName { + range: 26..29, + id: "sql", + ctx: Store, + }, + ), + iter: Tuple( + ExprTuple { + range: 33..139, + elts: [ + IfExp( + ExprIfExp { + range: 43..80, + test: Name( + ExprName { + range: 65..70, + id: "limit", + ctx: Load, + }, + ), + body: BinOp( + ExprBinOp { + range: 43..61, + left: Constant( + ExprConstant { + range: 43..53, + value: Str( + "LIMIT %d", + ), + kind: None, + }, + ), + op: Mod, + right: Name( + ExprName { + range: 56..61, + id: "limit", + ctx: Load, + }, + ), + }, + ), + orelse: Constant( + ExprConstant { + range: 76..80, + value: None, + kind: None, + }, + ), + }, + ), + IfExp( + ExprIfExp { + range: 90..132, + test: Name( + ExprName { + range: 116..122, + id: "offset", + ctx: Load, + }, + ), + body: BinOp( + ExprBinOp { + range: 91..111, + left: Constant( + ExprConstant { + range: 91..102, + value: Str( + "OFFSET %d", + ), + kind: None, + }, + ), + op: Mod, + right: Name( + ExprName { + range: 105..111, + id: "offset", + ctx: Load, + }, + ), + }, + ), + orelse: Constant( + ExprConstant { + range: 128..132, + value: None, + kind: None, + }, + ), + }, + ), + ], + ctx: Load, + }, + ), + ifs: [], + is_async: false, + }, + ], + }, + ), + ], + keywords: [], + }, +) diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__jupyter_magic.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__jupyter_magic.snap new file mode 100644 index 0000000000..ddbbe8a65d --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__jupyter_magic.snap @@ -0,0 +1,352 @@ +--- +source: crates/ruff_python_parser/src/parser.rs +expression: parse_ast +--- +Module( + ModModule { + range: 0..803, + body: [ + Expr( + StmtExpr { + range: 21..42, + value: BinOp( + ExprBinOp { + range: 27..40, + left: Name( + ExprName { + range: 27..28, + id: "a", + ctx: Load, + }, + ), + op: Mod, + right: Name( + ExprName { + range: 39..40, + id: "b", + ctx: Load, + }, + ), + }, + ), + }, + ), + LineMagic( + StmtLineMagic { + range: 66..73, + kind: Help2, + value: "a.foo", + }, + ), + LineMagic( + StmtLineMagic { + range: 74..80, + kind: Help, + value: "a.foo", + }, + ), + LineMagic( + StmtLineMagic { + range: 81..88, + kind: Help, + value: "a.foo?", + }, + ), + LineMagic( + StmtLineMagic { + range: 89..100, + kind: Help2, + value: "a.foo()??", + }, + ), + LineMagic( + StmtLineMagic { + range: 115..128, + kind: Magic, + value: "timeit a = b", + }, + ), + LineMagic( + StmtLineMagic { + range: 129..147, + kind: Magic, + value: "timeit foo(b) % 3", + }, + ), + LineMagic( + StmtLineMagic { + range: 148..176, + kind: Magic, + value: "alias showPath pwd && ls -a", + }, + ), + LineMagic( + StmtLineMagic { + range: 177..205, + kind: Magic, + value: "timeit a = foo(b); b = 2", + }, + ), + LineMagic( + StmtLineMagic { + range: 206..226, + kind: Magic, + value: "matplotlib --inline", + }, + ), + LineMagic( + StmtLineMagic { + range: 227..253, + kind: Magic, + value: "matplotlib --inline", + }, + ), + LineMagic( + StmtLineMagic { + range: 277..309, + kind: Shell, + value: "pwd && ls -a | sed 's/^/\\ /'", + }, + ), + LineMagic( + StmtLineMagic { + range: 310..347, + kind: Shell, + value: "pwd && ls -a | sed 's/^/\\\\ /'", + }, + ), + LineMagic( + StmtLineMagic { + range: 348..393, + kind: ShCap, + value: "cd /Users/foo/Library/Application\\ Support/", + }, + ), + FunctionDef( + StmtFunctionDef { + range: 566..626, + name: Identifier { + id: "foo", + range: 570..573, + }, + args: Arguments { + range: 573..575, + posonlyargs: [], + args: [], + vararg: None, + kwonlyargs: [], + kwarg: None, + }, + body: [ + Return( + StmtReturn { + range: 581..626, + value: Some( + Compare( + ExprCompare { + range: 598..620, + left: Name( + ExprName { + range: 598..599, + id: "a", + ctx: Load, + }, + ), + ops: [ + NotEq, + ], + comparators: [ + Name( + ExprName { + range: 619..620, + id: "b", + ctx: Load, + }, + ), + ], + }, + ), + ), + }, + ), + ], + decorator_list: [], + returns: None, + type_params: [], + type_comment: None, + }, + ), + LineMagic( + StmtLineMagic { + range: 656..664, + kind: Paren, + value: "foo 1 2", + }, + ), + LineMagic( + StmtLineMagic { + range: 665..673, + kind: Quote2, + value: "foo 1 2", + }, + ), + LineMagic( + StmtLineMagic { + range: 674..682, + kind: Quote, + value: "foo 1 2", + }, + ), + For( + StmtFor { + range: 701..727, + target: Name( + ExprName { + range: 705..706, + id: "a", + ctx: Store, + }, + ), + iter: Call( + ExprCall { + range: 710..718, + func: Name( + ExprName { + range: 710..715, + id: "range", + ctx: Load, + }, + ), + args: [ + Constant( + ExprConstant { + range: 716..717, + value: Int( + 5, + ), + kind: None, + }, + ), + ], + keywords: [], + }, + ), + body: [ + LineMagic( + StmtLineMagic { + range: 724..727, + kind: Shell, + value: "ls", + }, + ), + ], + orelse: [], + type_comment: None, + }, + ), + Assign( + StmtAssign { + range: 729..738, + targets: [ + Name( + ExprName { + range: 729..731, + id: "p1", + ctx: Store, + }, + ), + ], + value: LineMagic( + ExprLineMagic { + range: 734..738, + kind: Shell, + value: "pwd", + }, + ), + type_comment: None, + }, + ), + AnnAssign( + StmtAnnAssign { + range: 739..753, + target: Name( + ExprName { + range: 739..741, + id: "p2", + ctx: Store, + }, + ), + annotation: Name( + ExprName { + range: 743..746, + id: "str", + ctx: Load, + }, + ), + value: Some( + LineMagic( + ExprLineMagic { + range: 749..753, + kind: Shell, + value: "pwd", + }, + ), + ), + simple: true, + }, + ), + Assign( + StmtAssign { + range: 754..774, + targets: [ + Name( + ExprName { + range: 754..757, + id: "foo", + ctx: Store, + }, + ), + ], + value: LineMagic( + ExprLineMagic { + range: 760..774, + kind: Magic, + value: "foo bar", + }, + ), + type_comment: None, + }, + ), + LineMagic( + StmtLineMagic { + range: 776..781, + kind: Magic, + value: " foo", + }, + ), + Assign( + StmtAssign { + range: 782..803, + targets: [ + Name( + ExprName { + range: 782..785, + id: "foo", + ctx: Store, + }, + ), + ], + value: LineMagic( + ExprLineMagic { + range: 788..803, + kind: Magic, + value: "foo # comment", + }, + ), + type_comment: None, + }, + ), + ], + type_ignores: [], + }, +) diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__match.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__match.snap new file mode 100644 index 0000000000..e5ceb0de15 --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__match.snap @@ -0,0 +1,440 @@ +--- +source: crates/ruff_python_parser/src/parser.rs +expression: parse_ast +--- +[ + Match( + StmtMatch { + range: 1..73, + subject: Dict( + ExprDict { + range: 7..18, + keys: [ + Some( + Constant( + ExprConstant { + range: 8..14, + value: Str( + "test", + ), + kind: None, + }, + ), + ), + ], + values: [ + Constant( + ExprConstant { + range: 16..17, + value: Int( + 1, + ), + kind: None, + }, + ), + ], + }, + ), + cases: [ + MatchCase { + range: 24..73, + pattern: MatchMapping( + PatternMatchMapping { + range: 29..52, + keys: [], + patterns: [], + rest: Some( + Identifier { + id: "rest", + range: 41..45, + }, + ), + }, + ), + guard: None, + body: [ + Expr( + StmtExpr { + range: 62..73, + value: Call( + ExprCall { + range: 62..73, + func: Name( + ExprName { + range: 62..67, + id: "print", + ctx: Load, + }, + ), + args: [ + Name( + ExprName { + range: 68..72, + id: "rest", + ctx: Load, + }, + ), + ], + keywords: [], + }, + ), + }, + ), + ], + }, + ], + }, + ), + Match( + StmtMatch { + range: 74..177, + subject: Dict( + ExprDict { + range: 80..97, + keys: [ + Some( + Constant( + ExprConstant { + range: 81..88, + value: Str( + "label", + ), + kind: None, + }, + ), + ), + ], + values: [ + Constant( + ExprConstant { + range: 90..96, + value: Str( + "test", + ), + kind: None, + }, + ), + ], + }, + ), + cases: [ + MatchCase { + range: 103..177, + pattern: MatchMapping( + PatternMatchMapping { + range: 108..155, + keys: [ + Constant( + ExprConstant { + range: 118..125, + value: Str( + "label", + ), + kind: None, + }, + ), + ], + patterns: [ + MatchAs( + PatternMatchAs { + range: 127..148, + pattern: Some( + MatchOr( + PatternMatchOr { + range: 127..139, + patterns: [ + MatchClass( + PatternMatchClass { + range: 127..132, + cls: Name( + ExprName { + range: 127..130, + id: "str", + ctx: Load, + }, + ), + patterns: [], + kwd_attrs: [], + kwd_patterns: [], + }, + ), + MatchSingleton( + PatternMatchSingleton { + range: 135..139, + value: None, + }, + ), + ], + }, + ), + ), + name: Some( + Identifier { + id: "label", + range: 143..148, + }, + ), + }, + ), + ], + rest: None, + }, + ), + guard: None, + body: [ + Expr( + StmtExpr { + range: 165..177, + value: Call( + ExprCall { + range: 165..177, + func: Name( + ExprName { + range: 165..170, + id: "print", + ctx: Load, + }, + ), + args: [ + Name( + ExprName { + range: 171..176, + id: "label", + ctx: Load, + }, + ), + ], + keywords: [], + }, + ), + }, + ), + ], + }, + ], + }, + ), + Match( + StmtMatch { + range: 178..218, + subject: Name( + ExprName { + range: 184..185, + id: "x", + ctx: Load, + }, + ), + cases: [ + MatchCase { + range: 191..218, + pattern: MatchSequence( + PatternMatchSequence { + range: 196..203, + patterns: [ + MatchValue( + PatternMatchValue { + range: 197..198, + value: Constant( + ExprConstant { + range: 197..198, + value: Int( + 0, + ), + kind: None, + }, + ), + }, + ), + MatchValue( + PatternMatchValue { + range: 200..201, + value: Constant( + ExprConstant { + range: 200..201, + value: Int( + 1, + ), + kind: None, + }, + ), + }, + ), + ], + }, + ), + guard: None, + body: [ + Assign( + StmtAssign { + range: 213..218, + targets: [ + Name( + ExprName { + range: 213..214, + id: "y", + ctx: Store, + }, + ), + ], + value: Constant( + ExprConstant { + range: 217..218, + value: Int( + 0, + ), + kind: None, + }, + ), + type_comment: None, + }, + ), + ], + }, + ], + }, + ), + Match( + StmtMatch { + range: 219..259, + subject: Name( + ExprName { + range: 225..226, + id: "x", + ctx: Load, + }, + ), + cases: [ + MatchCase { + range: 232..259, + pattern: MatchSequence( + PatternMatchSequence { + range: 237..244, + patterns: [ + MatchValue( + PatternMatchValue { + range: 238..239, + value: Constant( + ExprConstant { + range: 238..239, + value: Int( + 0, + ), + kind: None, + }, + ), + }, + ), + MatchValue( + PatternMatchValue { + range: 241..242, + value: Constant( + ExprConstant { + range: 241..242, + value: Int( + 1, + ), + kind: None, + }, + ), + }, + ), + ], + }, + ), + guard: None, + body: [ + Assign( + StmtAssign { + range: 254..259, + targets: [ + Name( + ExprName { + range: 254..255, + id: "y", + ctx: Store, + }, + ), + ], + value: Constant( + ExprConstant { + range: 258..259, + value: Int( + 0, + ), + kind: None, + }, + ), + type_comment: None, + }, + ), + ], + }, + ], + }, + ), + Match( + StmtMatch { + range: 260..297, + subject: Name( + ExprName { + range: 266..267, + id: "x", + ctx: Load, + }, + ), + cases: [ + MatchCase { + range: 273..297, + pattern: MatchSequence( + PatternMatchSequence { + range: 278..282, + patterns: [ + MatchValue( + PatternMatchValue { + range: 279..280, + value: Constant( + ExprConstant { + range: 279..280, + value: Int( + 0, + ), + kind: None, + }, + ), + }, + ), + ], + }, + ), + guard: None, + body: [ + Assign( + StmtAssign { + range: 292..297, + targets: [ + Name( + ExprName { + range: 292..293, + id: "y", + ctx: Store, + }, + ), + ], + value: Constant( + ExprConstant { + range: 296..297, + value: Int( + 0, + ), + kind: None, + }, + ), + type_comment: None, + }, + ), + ], + }, + ], + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__match_as_identifier.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__match_as_identifier.snap new file mode 100644 index 0000000000..fcf057b09d --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__match_as_identifier.snap @@ -0,0 +1,807 @@ +--- +source: crates/ruff_python_parser/src/parser.rs +expression: "ast::Suite::parse(source, \"\").unwrap()" +--- +[ + Expr( + StmtExpr { + range: 2..17, + value: Tuple( + ExprTuple { + range: 2..17, + elts: [ + BinOp( + ExprBinOp { + range: 2..14, + left: BinOp( + ExprBinOp { + range: 2..10, + left: Name( + ExprName { + range: 2..7, + id: "match", + ctx: Load, + }, + ), + op: Mult, + right: Name( + ExprName { + range: 9..10, + id: "a", + ctx: Load, + }, + ), + }, + ), + op: Add, + right: Name( + ExprName { + range: 13..14, + id: "b", + ctx: Load, + }, + ), + }, + ), + Name( + ExprName { + range: 16..17, + id: "c", + ctx: Load, + }, + ), + ], + ctx: Load, + }, + ), + }, + ), + Expr( + StmtExpr { + range: 43..60, + value: Tuple( + ExprTuple { + range: 43..60, + elts: [ + BinOp( + ExprBinOp { + range: 43..57, + left: Name( + ExprName { + range: 43..48, + id: "match", + ctx: Load, + }, + ), + op: Mult, + right: BinOp( + ExprBinOp { + range: 51..56, + left: Name( + ExprName { + range: 51..52, + id: "a", + ctx: Load, + }, + ), + op: Add, + right: Name( + ExprName { + range: 55..56, + id: "b", + ctx: Load, + }, + ), + }, + ), + }, + ), + Name( + ExprName { + range: 59..60, + id: "c", + ctx: Load, + }, + ), + ], + ctx: Load, + }, + ), + }, + ), + Expr( + StmtExpr { + range: 86..103, + value: Call( + ExprCall { + range: 86..103, + func: Name( + ExprName { + range: 86..91, + id: "match", + ctx: Load, + }, + ), + args: [ + Starred( + ExprStarred { + range: 93..99, + value: BinOp( + ExprBinOp { + range: 94..99, + left: Name( + ExprName { + range: 94..95, + id: "a", + ctx: Load, + }, + ), + op: Add, + right: Name( + ExprName { + range: 98..99, + id: "b", + ctx: Load, + }, + ), + }, + ), + ctx: Load, + }, + ), + Name( + ExprName { + range: 101..102, + id: "c", + ctx: Load, + }, + ), + ], + keywords: [], + }, + ), + }, + ), + Expr( + StmtExpr { + range: 130..146, + value: BinOp( + ExprBinOp { + range: 130..146, + left: BinOp( + ExprBinOp { + range: 130..142, + left: Name( + ExprName { + range: 130..135, + id: "match", + ctx: Load, + }, + ), + op: Sub, + right: BinOp( + ExprBinOp { + range: 137..142, + left: Name( + ExprName { + range: 137..138, + id: "a", + ctx: Load, + }, + ), + op: Mult, + right: Name( + ExprName { + range: 141..142, + id: "b", + ctx: Load, + }, + ), + }, + ), + }, + ), + op: Add, + right: Name( + ExprName { + range: 145..146, + id: "c", + ctx: Load, + }, + ), + }, + ), + }, + ), + Expr( + StmtExpr { + range: 173..191, + value: BinOp( + ExprBinOp { + range: 173..191, + left: BinOp( + ExprBinOp { + range: 173..187, + left: Name( + ExprName { + range: 173..178, + id: "match", + ctx: Load, + }, + ), + op: Sub, + right: BinOp( + ExprBinOp { + range: 181..186, + left: Name( + ExprName { + range: 181..182, + id: "a", + ctx: Load, + }, + ), + op: Mult, + right: Name( + ExprName { + range: 185..186, + id: "b", + ctx: Load, + }, + ), + }, + ), + }, + ), + op: Add, + right: Name( + ExprName { + range: 190..191, + id: "c", + ctx: Load, + }, + ), + }, + ), + }, + ), + Expr( + StmtExpr { + range: 218..236, + value: BinOp( + ExprBinOp { + range: 218..236, + left: BinOp( + ExprBinOp { + range: 218..232, + left: Call( + ExprCall { + range: 218..228, + func: Name( + ExprName { + range: 218..223, + id: "match", + ctx: Load, + }, + ), + args: [ + UnaryOp( + ExprUnaryOp { + range: 225..227, + op: USub, + operand: Name( + ExprName { + range: 226..227, + id: "a", + ctx: Load, + }, + ), + }, + ), + ], + keywords: [], + }, + ), + op: Mult, + right: Name( + ExprName { + range: 231..232, + id: "b", + ctx: Load, + }, + ), + }, + ), + op: Add, + right: Name( + ExprName { + range: 235..236, + id: "c", + ctx: Load, + }, + ), + }, + ), + }, + ), + Expr( + StmtExpr { + range: 264..274, + value: Attribute( + ExprAttribute { + range: 264..274, + value: Call( + ExprCall { + range: 264..272, + func: Name( + ExprName { + range: 264..269, + id: "match", + ctx: Load, + }, + ), + args: [], + keywords: [], + }, + ), + attr: Identifier { + id: "a", + range: 273..274, + }, + ctx: Load, + }, + ), + }, + ), + Expr( + StmtExpr { + range: 291..303, + value: Attribute( + ExprAttribute { + range: 291..303, + value: Call( + ExprCall { + range: 291..301, + func: Name( + ExprName { + range: 291..296, + id: "match", + ctx: Load, + }, + ), + args: [ + Tuple( + ExprTuple { + range: 298..300, + elts: [], + ctx: Load, + }, + ), + ], + keywords: [], + }, + ), + attr: Identifier { + id: "a", + range: 302..303, + }, + ctx: Load, + }, + ), + }, + ), + Expr( + StmtExpr { + range: 322..335, + value: Attribute( + ExprAttribute { + range: 322..335, + value: Call( + ExprCall { + range: 322..333, + func: Name( + ExprName { + range: 322..327, + id: "match", + ctx: Load, + }, + ), + args: [ + Tuple( + ExprTuple { + range: 329..331, + elts: [], + ctx: Load, + }, + ), + ], + keywords: [], + }, + ), + attr: Identifier { + id: "a", + range: 334..335, + }, + ctx: Load, + }, + ), + }, + ), + Expr( + StmtExpr { + range: 354..365, + value: Attribute( + ExprAttribute { + range: 354..365, + value: Subscript( + ExprSubscript { + range: 354..363, + value: Name( + ExprName { + range: 354..359, + id: "match", + ctx: Load, + }, + ), + slice: Name( + ExprName { + range: 361..362, + id: "a", + ctx: Load, + }, + ), + ctx: Load, + }, + ), + attr: Identifier { + id: "b", + range: 364..365, + }, + ctx: Load, + }, + ), + }, + ), + Expr( + StmtExpr { + range: 383..395, + value: Attribute( + ExprAttribute { + range: 383..395, + value: Subscript( + ExprSubscript { + range: 383..393, + value: Name( + ExprName { + range: 383..388, + id: "match", + ctx: Load, + }, + ), + slice: Tuple( + ExprTuple { + range: 390..392, + elts: [ + Name( + ExprName { + range: 390..391, + id: "a", + ctx: Load, + }, + ), + ], + ctx: Load, + }, + ), + ctx: Load, + }, + ), + attr: Identifier { + id: "b", + range: 394..395, + }, + ctx: Load, + }, + ), + }, + ), + Expr( + StmtExpr { + range: 436..450, + value: Attribute( + ExprAttribute { + range: 436..450, + value: Subscript( + ExprSubscript { + range: 436..448, + value: Name( + ExprName { + range: 436..441, + id: "match", + ctx: Load, + }, + ), + slice: Tuple( + ExprTuple { + range: 443..447, + elts: [ + Name( + ExprName { + range: 444..445, + id: "a", + ctx: Load, + }, + ), + ], + ctx: Load, + }, + ), + ctx: Load, + }, + ), + attr: Identifier { + id: "b", + range: 449..450, + }, + ctx: Load, + }, + ), + }, + ), + Expr( + StmtExpr { + range: 471..488, + value: Subscript( + ExprSubscript { + range: 471..488, + value: Call( + ExprCall { + range: 471..478, + func: Name( + ExprName { + range: 471..476, + id: "match", + ctx: Load, + }, + ), + args: [], + keywords: [], + }, + ), + slice: Slice( + ExprSlice { + range: 479..487, + lower: Some( + Name( + ExprName { + range: 479..480, + id: "a", + ctx: Load, + }, + ), + ), + upper: Some( + Name( + ExprName { + range: 486..487, + id: "b", + ctx: Load, + }, + ), + ), + step: None, + }, + ), + ctx: Load, + }, + ), + }, + ), + If( + StmtIf { + range: 508..527, + test: NamedExpr( + ExprNamedExpr { + range: 511..521, + target: Name( + ExprName { + range: 511..516, + id: "match", + ctx: Store, + }, + ), + value: Constant( + ExprConstant { + range: 520..521, + value: Int( + 1, + ), + kind: None, + }, + ), + }, + ), + body: [ + Pass( + StmtPass { + range: 523..527, + }, + ), + ], + elif_else_clauses: [], + }, + ), + Match( + StmtMatch { + range: 528..582, + subject: Name( + ExprName { + range: 534..539, + id: "match", + ctx: Load, + }, + ), + cases: [ + MatchCase { + range: 545..557, + pattern: MatchValue( + PatternMatchValue { + range: 550..551, + value: Constant( + ExprConstant { + range: 550..551, + value: Int( + 1, + ), + kind: None, + }, + ), + }, + ), + guard: None, + body: [ + Pass( + StmtPass { + range: 553..557, + }, + ), + ], + }, + MatchCase { + range: 562..582, + pattern: MatchValue( + PatternMatchValue { + range: 567..568, + value: Constant( + ExprConstant { + range: 567..568, + value: Int( + 2, + ), + kind: None, + }, + ), + }, + ), + guard: None, + body: [ + Pass( + StmtPass { + range: 578..582, + }, + ), + ], + }, + ], + }, + ), + Assign( + StmtAssign { + range: 583..619, + targets: [ + Name( + ExprName { + range: 583..588, + id: "match", + ctx: Store, + }, + ), + ], + value: Lambda( + ExprLambda { + range: 591..619, + args: Arguments { + range: 598..603, + posonlyargs: [], + args: [ + ArgWithDefault { + range: 598..603, + def: Arg { + range: 598..603, + arg: Identifier { + id: "query", + range: 598..603, + }, + annotation: None, + type_comment: None, + }, + default: None, + }, + ], + vararg: None, + kwonlyargs: [], + kwarg: None, + }, + body: Compare( + ExprCompare { + range: 605..619, + left: Name( + ExprName { + range: 605..610, + id: "query", + ctx: Load, + }, + ), + ops: [ + Eq, + ], + comparators: [ + Name( + ExprName { + range: 614..619, + id: "event", + ctx: Load, + }, + ), + ], + }, + ), + }, + ), + type_comment: None, + }, + ), + Expr( + StmtExpr { + range: 620..636, + value: Call( + ExprCall { + range: 620..636, + func: Name( + ExprName { + range: 620..625, + id: "print", + ctx: Load, + }, + ), + args: [ + Call( + ExprCall { + range: 626..635, + func: Name( + ExprName { + range: 626..631, + id: "match", + ctx: Load, + }, + ), + args: [ + Constant( + ExprConstant { + range: 632..634, + value: Int( + 12, + ), + kind: None, + }, + ), + ], + keywords: [], + }, + ), + ], + keywords: [], + }, + ), + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__numeric_literals.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__numeric_literals.snap new file mode 100644 index 0000000000..30a58016e8 --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__numeric_literals.snap @@ -0,0 +1,440 @@ +--- +source: crates/ruff_python_parser/src/parser.rs +expression: "ast::Suite::parse(source, \"\").unwrap()" +--- +[ + Assign( + StmtAssign { + range: 0..13, + targets: [ + Name( + ExprName { + range: 0..1, + id: "x", + ctx: Store, + }, + ), + ], + value: Constant( + ExprConstant { + range: 4..13, + value: Int( + 123456789, + ), + kind: None, + }, + ), + type_comment: None, + }, + ), + Assign( + StmtAssign { + range: 14..24, + targets: [ + Name( + ExprName { + range: 14..15, + id: "x", + ctx: Store, + }, + ), + ], + value: Constant( + ExprConstant { + range: 18..24, + value: Int( + 123456, + ), + kind: None, + }, + ), + type_comment: None, + }, + ), + Assign( + StmtAssign { + range: 25..31, + targets: [ + Name( + ExprName { + range: 25..26, + id: "x", + ctx: Store, + }, + ), + ], + value: Constant( + ExprConstant { + range: 29..31, + value: Float( + 0.1, + ), + kind: None, + }, + ), + type_comment: None, + }, + ), + Assign( + StmtAssign { + range: 32..38, + targets: [ + Name( + ExprName { + range: 32..33, + id: "x", + ctx: Store, + }, + ), + ], + value: Constant( + ExprConstant { + range: 36..38, + value: Float( + 1.0, + ), + kind: None, + }, + ), + type_comment: None, + }, + ), + Assign( + StmtAssign { + range: 39..47, + targets: [ + Name( + ExprName { + range: 39..40, + id: "x", + ctx: Store, + }, + ), + ], + value: Constant( + ExprConstant { + range: 43..47, + value: Float( + 10.0, + ), + kind: None, + }, + ), + type_comment: None, + }, + ), + Assign( + StmtAssign { + range: 48..56, + targets: [ + Name( + ExprName { + range: 48..49, + id: "x", + ctx: Store, + }, + ), + ], + value: Constant( + ExprConstant { + range: 52..56, + value: Float( + 0.1, + ), + kind: None, + }, + ), + type_comment: None, + }, + ), + Assign( + StmtAssign { + range: 57..73, + targets: [ + Name( + ExprName { + range: 57..58, + id: "x", + ctx: Store, + }, + ), + ], + value: Constant( + ExprConstant { + range: 61..73, + value: Float( + 1.00000001, + ), + kind: None, + }, + ), + type_comment: None, + }, + ), + Assign( + StmtAssign { + range: 74..97, + targets: [ + Name( + ExprName { + range: 74..75, + id: "x", + ctx: Store, + }, + ), + ], + value: Constant( + ExprConstant { + range: 78..97, + value: Float( + 123456789.12345679, + ), + kind: None, + }, + ), + type_comment: None, + }, + ), + Assign( + StmtAssign { + range: 98..131, + targets: [ + Name( + ExprName { + range: 98..99, + id: "x", + ctx: Store, + }, + ), + ], + value: Constant( + ExprConstant { + range: 102..131, + value: Float( + inf, + ), + kind: None, + }, + ), + type_comment: None, + }, + ), + Assign( + StmtAssign { + range: 132..155, + targets: [ + Name( + ExprName { + range: 132..133, + id: "x", + ctx: Store, + }, + ), + ], + value: Constant( + ExprConstant { + range: 136..155, + value: Float( + inf, + ), + kind: None, + }, + ), + type_comment: None, + }, + ), + Assign( + StmtAssign { + range: 156..170, + targets: [ + Name( + ExprName { + range: 156..157, + id: "x", + ctx: Store, + }, + ), + ], + value: Constant( + ExprConstant { + range: 160..170, + value: Complex { + real: 0.0, + imag: 123456789.0, + }, + kind: None, + }, + ), + type_comment: None, + }, + ), + Assign( + StmtAssign { + range: 171..195, + targets: [ + Name( + ExprName { + range: 171..172, + id: "x", + ctx: Store, + }, + ), + ], + value: Constant( + ExprConstant { + range: 175..195, + value: Complex { + real: 0.0, + imag: 123456789.12345679, + }, + kind: None, + }, + ), + type_comment: None, + }, + ), + Assign( + StmtAssign { + range: 196..207, + targets: [ + Name( + ExprName { + range: 196..197, + id: "x", + ctx: Store, + }, + ), + ], + value: Constant( + ExprConstant { + range: 200..207, + value: Int( + 727756, + ), + kind: None, + }, + ), + type_comment: None, + }, + ), + Assign( + StmtAssign { + range: 208..218, + targets: [ + Name( + ExprName { + range: 208..209, + id: "x", + ctx: Store, + }, + ), + ], + value: Constant( + ExprConstant { + range: 212..218, + value: Int( + 11, + ), + kind: None, + }, + ), + type_comment: None, + }, + ), + Assign( + StmtAssign { + range: 219..228, + targets: [ + Name( + ExprName { + range: 219..220, + id: "x", + ctx: Store, + }, + ), + ], + value: Constant( + ExprConstant { + range: 223..228, + value: Int( + 511, + ), + kind: None, + }, + ), + type_comment: None, + }, + ), + Assign( + StmtAssign { + range: 229..244, + targets: [ + Name( + ExprName { + range: 229..230, + id: "x", + ctx: Store, + }, + ), + ], + value: Constant( + ExprConstant { + range: 233..244, + value: Float( + 6e-9, + ), + kind: None, + }, + ), + type_comment: None, + }, + ), + Assign( + StmtAssign { + range: 245..254, + targets: [ + Name( + ExprName { + range: 245..246, + id: "x", + ctx: Store, + }, + ), + ], + value: Constant( + ExprConstant { + range: 249..254, + value: Int( + 10000, + ), + kind: None, + }, + ), + type_comment: None, + }, + ), + Assign( + StmtAssign { + range: 255..265, + targets: [ + Name( + ExprName { + range: 255..256, + id: "x", + ctx: Store, + }, + ), + ], + value: Constant( + ExprConstant { + range: 259..265, + value: Int( + 133333, + ), + kind: None, + }, + ), + type_comment: None, + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__numeric_literals_attribute_access.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__numeric_literals_attribute_access.snap new file mode 100644 index 0000000000..20854b6b22 --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__numeric_literals_attribute_access.snap @@ -0,0 +1,672 @@ +--- +source: crates/ruff_python_parser/src/parser.rs +expression: "ast::Suite::parse(source, \"\").unwrap()" +--- +[ + Assign( + StmtAssign { + range: 0..19, + targets: [ + Name( + ExprName { + range: 0..1, + id: "x", + ctx: Store, + }, + ), + ], + value: Call( + ExprCall { + range: 4..19, + func: Attribute( + ExprAttribute { + range: 4..17, + value: Constant( + ExprConstant { + range: 4..6, + value: Float( + 0.1, + ), + kind: None, + }, + ), + attr: Identifier { + id: "is_integer", + range: 7..17, + }, + ctx: Load, + }, + ), + args: [], + keywords: [], + }, + ), + type_comment: None, + }, + ), + Assign( + StmtAssign { + range: 20..32, + targets: [ + Name( + ExprName { + range: 20..21, + id: "x", + ctx: Store, + }, + ), + ], + value: Attribute( + ExprAttribute { + range: 24..32, + value: Constant( + ExprConstant { + range: 24..26, + value: Float( + 1.0, + ), + kind: None, + }, + ), + attr: Identifier { + id: "imag", + range: 28..32, + }, + ctx: Load, + }, + ), + type_comment: None, + }, + ), + Assign( + StmtAssign { + range: 33..46, + targets: [ + Name( + ExprName { + range: 33..34, + id: "x", + ctx: Store, + }, + ), + ], + value: Attribute( + ExprAttribute { + range: 37..46, + value: Constant( + ExprConstant { + range: 37..41, + value: Float( + 10.0, + ), + kind: None, + }, + ), + attr: Identifier { + id: "imag", + range: 42..46, + }, + ctx: Load, + }, + ), + type_comment: None, + }, + ), + Assign( + StmtAssign { + range: 47..60, + targets: [ + Name( + ExprName { + range: 47..48, + id: "x", + ctx: Store, + }, + ), + ], + value: Attribute( + ExprAttribute { + range: 51..60, + value: Constant( + ExprConstant { + range: 51..55, + value: Float( + 0.1, + ), + kind: None, + }, + ), + attr: Identifier { + id: "real", + range: 56..60, + }, + ctx: Load, + }, + ), + type_comment: None, + }, + ), + Assign( + StmtAssign { + range: 61..90, + targets: [ + Name( + ExprName { + range: 61..62, + id: "x", + ctx: Store, + }, + ), + ], + value: Call( + ExprCall { + range: 65..90, + func: Attribute( + ExprAttribute { + range: 65..88, + value: Constant( + ExprConstant { + range: 65..84, + value: Float( + 123456789.12345679, + ), + kind: None, + }, + ), + attr: Identifier { + id: "hex", + range: 85..88, + }, + ctx: Load, + }, + ), + args: [], + keywords: [], + }, + ), + type_comment: None, + }, + ), + Assign( + StmtAssign { + range: 91..130, + targets: [ + Name( + ExprName { + range: 91..92, + id: "x", + ctx: Store, + }, + ), + ], + value: Attribute( + ExprAttribute { + range: 95..130, + value: Constant( + ExprConstant { + range: 95..124, + value: Float( + inf, + ), + kind: None, + }, + ), + attr: Identifier { + id: "real", + range: 126..130, + }, + ctx: Load, + }, + ), + type_comment: None, + }, + ), + Assign( + StmtAssign { + range: 131..167, + targets: [ + Name( + ExprName { + range: 131..132, + id: "x", + ctx: Store, + }, + ), + ], + value: Call( + ExprCall { + range: 135..167, + func: Attribute( + ExprAttribute { + range: 135..165, + value: Constant( + ExprConstant { + range: 135..154, + value: Float( + inf, + ), + kind: None, + }, + ), + attr: Identifier { + id: "conjugate", + range: 156..165, + }, + ctx: Load, + }, + ), + args: [], + keywords: [], + }, + ), + type_comment: None, + }, + ), + Assign( + StmtAssign { + range: 168..187, + targets: [ + Name( + ExprName { + range: 168..169, + id: "x", + ctx: Store, + }, + ), + ], + value: Attribute( + ExprAttribute { + range: 172..187, + value: Constant( + ExprConstant { + range: 172..182, + value: Complex { + real: 0.0, + imag: 123456789.0, + }, + kind: None, + }, + ), + attr: Identifier { + id: "real", + range: 183..187, + }, + ctx: Load, + }, + ), + type_comment: None, + }, + ), + Assign( + StmtAssign { + range: 188..241, + targets: [ + Name( + ExprName { + range: 188..189, + id: "x", + ctx: Store, + }, + ), + ], + value: Call( + ExprCall { + range: 192..241, + func: Attribute( + ExprAttribute { + range: 192..220, + value: Constant( + ExprConstant { + range: 192..212, + value: Complex { + real: 0.0, + imag: 123456789.12345679, + }, + kind: None, + }, + ), + attr: Identifier { + id: "__add__", + range: 213..220, + }, + ctx: Load, + }, + ), + args: [ + Call( + ExprCall { + range: 221..240, + func: Attribute( + ExprAttribute { + range: 221..238, + value: Constant( + ExprConstant { + range: 221..227, + value: Int( + 11, + ), + kind: None, + }, + ), + attr: Identifier { + id: "bit_length", + range: 228..238, + }, + ctx: Load, + }, + ), + args: [], + keywords: [], + }, + ), + ], + keywords: [], + }, + ), + type_comment: None, + }, + ), + Assign( + StmtAssign { + range: 242..265, + targets: [ + Name( + ExprName { + range: 242..243, + id: "x", + ctx: Store, + }, + ), + ], + value: Call( + ExprCall { + range: 246..265, + func: Attribute( + ExprAttribute { + range: 246..263, + value: Constant( + ExprConstant { + range: 246..253, + value: Int( + 727756, + ), + kind: None, + }, + ), + attr: Identifier { + id: "conjugate", + range: 254..263, + }, + ctx: Load, + }, + ), + args: [], + keywords: [], + }, + ), + type_comment: None, + }, + ), + Assign( + StmtAssign { + range: 266..289, + targets: [ + Name( + ExprName { + range: 266..267, + id: "x", + ctx: Store, + }, + ), + ], + value: Call( + ExprCall { + range: 270..289, + func: Attribute( + ExprAttribute { + range: 270..287, + value: Constant( + ExprConstant { + range: 270..276, + value: Int( + 11, + ), + kind: None, + }, + ), + attr: Identifier { + id: "conjugate", + range: 278..287, + }, + ctx: Load, + }, + ), + args: [], + keywords: [], + }, + ), + type_comment: None, + }, + ), + Assign( + StmtAssign { + range: 290..305, + targets: [ + Name( + ExprName { + range: 290..291, + id: "x", + ctx: Store, + }, + ), + ], + value: Attribute( + ExprAttribute { + range: 294..305, + value: Constant( + ExprConstant { + range: 294..299, + value: Int( + 511, + ), + kind: None, + }, + ), + attr: Identifier { + id: "real", + range: 301..305, + }, + ctx: Load, + }, + ), + type_comment: None, + }, + ), + Assign( + StmtAssign { + range: 306..329, + targets: [ + Name( + ExprName { + range: 306..307, + id: "x", + ctx: Store, + }, + ), + ], + value: Call( + ExprCall { + range: 310..329, + func: Attribute( + ExprAttribute { + range: 310..327, + value: Constant( + ExprConstant { + range: 310..321, + value: Float( + 6e-9, + ), + kind: None, + }, + ), + attr: Identifier { + id: "hex", + range: 324..327, + }, + ctx: Load, + }, + ), + args: [], + keywords: [], + }, + ), + type_comment: None, + }, + ), + Assign( + StmtAssign { + range: 330..344, + targets: [ + Name( + ExprName { + range: 330..331, + id: "x", + ctx: Store, + }, + ), + ], + value: UnaryOp( + ExprUnaryOp { + range: 334..344, + op: USub, + operand: Constant( + ExprConstant { + range: 335..344, + value: Complex { + real: 0.0, + imag: 100.0, + }, + kind: None, + }, + ), + }, + ), + type_comment: None, + }, + ), + If( + StmtIf { + range: 346..366, + test: Attribute( + ExprAttribute { + range: 349..357, + value: Constant( + ExprConstant { + range: 349..351, + value: Int( + 10, + ), + kind: None, + }, + ), + attr: Identifier { + id: "real", + range: 353..357, + }, + ctx: Load, + }, + ), + body: [ + Expr( + StmtExpr { + range: 363..366, + value: Constant( + ExprConstant { + range: 363..366, + value: Ellipsis, + kind: None, + }, + ), + }, + ), + ], + elif_else_clauses: [], + }, + ), + Assign( + StmtAssign { + range: 368..379, + targets: [ + Name( + ExprName { + range: 368..369, + id: "y", + ctx: Store, + }, + ), + ], + value: Subscript( + ExprSubscript { + range: 372..379, + value: Constant( + ExprConstant { + range: 372..375, + value: Int( + 100, + ), + kind: None, + }, + ), + slice: Name( + ExprName { + range: 376..378, + id: "no", + ctx: Load, + }, + ), + ctx: Load, + }, + ), + type_comment: None, + }, + ), + Assign( + StmtAssign { + range: 380..391, + targets: [ + Name( + ExprName { + range: 380..381, + id: "y", + ctx: Store, + }, + ), + ], + value: Call( + ExprCall { + range: 384..391, + func: Constant( + ExprConstant { + range: 384..387, + value: Int( + 100, + ), + kind: None, + }, + ), + args: [ + Name( + ExprName { + range: 388..390, + id: "no", + ctx: Load, + }, + ), + ], + keywords: [], + }, + ), + type_comment: None, + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_bool_op_and.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_bool_op_and.snap new file mode 100644 index 0000000000..66a11f2ded --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_bool_op_and.snap @@ -0,0 +1,26 @@ +--- +source: crates/ruff_python_parser/src/parser.rs +expression: parse_ast +--- +BoolOp( + ExprBoolOp { + range: 0..7, + op: And, + values: [ + Name( + ExprName { + range: 0..1, + id: "x", + ctx: Load, + }, + ), + Name( + ExprName { + range: 6..7, + id: "y", + ctx: Load, + }, + ), + ], + }, +) diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_bool_op_or.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_bool_op_or.snap new file mode 100644 index 0000000000..9a7059d242 --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_bool_op_or.snap @@ -0,0 +1,26 @@ +--- +source: crates/ruff_python_parser/src/parser.rs +expression: parse_ast +--- +BoolOp( + ExprBoolOp { + range: 0..6, + op: Or, + values: [ + Name( + ExprName { + range: 0..1, + id: "x", + ctx: Load, + }, + ), + Name( + ExprName { + range: 5..6, + id: "y", + ctx: Load, + }, + ), + ], + }, +) diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_class.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_class.snap new file mode 100644 index 0000000000..10262c370f --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_class.snap @@ -0,0 +1,143 @@ +--- +source: crates/ruff_python_parser/src/parser.rs +expression: "ast::Suite::parse(source, \"\").unwrap()" +--- +[ + ClassDef( + StmtClassDef { + range: 0..98, + name: Identifier { + id: "Foo", + range: 6..9, + }, + bases: [ + Name( + ExprName { + range: 10..11, + id: "A", + ctx: Load, + }, + ), + Name( + ExprName { + range: 13..14, + id: "B", + ctx: Load, + }, + ), + ], + keywords: [], + body: [ + FunctionDef( + StmtFunctionDef { + range: 18..44, + name: Identifier { + id: "__init__", + range: 22..30, + }, + args: Arguments { + range: 30..36, + posonlyargs: [], + args: [ + ArgWithDefault { + range: 31..35, + def: Arg { + range: 31..35, + arg: Identifier { + id: "self", + range: 31..35, + }, + annotation: None, + type_comment: None, + }, + default: None, + }, + ], + vararg: None, + kwonlyargs: [], + kwarg: None, + }, + body: [ + Pass( + StmtPass { + range: 40..44, + }, + ), + ], + decorator_list: [], + returns: None, + type_params: [], + type_comment: None, + }, + ), + FunctionDef( + StmtFunctionDef { + range: 46..98, + name: Identifier { + id: "method_with_default", + range: 50..69, + }, + args: Arguments { + range: 69..90, + posonlyargs: [], + args: [ + ArgWithDefault { + range: 70..74, + def: Arg { + range: 70..74, + arg: Identifier { + id: "self", + range: 70..74, + }, + annotation: None, + type_comment: None, + }, + default: None, + }, + ArgWithDefault { + range: 76..89, + def: Arg { + range: 76..79, + arg: Identifier { + id: "arg", + range: 76..79, + }, + annotation: None, + type_comment: None, + }, + default: Some( + Constant( + ExprConstant { + range: 80..89, + value: Str( + "default", + ), + kind: None, + }, + ), + ), + }, + ], + vararg: None, + kwonlyargs: [], + kwarg: None, + }, + body: [ + Pass( + StmtPass { + range: 94..98, + }, + ), + ], + decorator_list: [], + returns: None, + type_params: [], + type_comment: None, + }, + ), + ], + type_params: [], + decorator_list: [], + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_class_generic_types.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_class_generic_types.snap new file mode 100644 index 0000000000..f0dba8f78f --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_class_generic_types.snap @@ -0,0 +1,388 @@ +--- +source: crates/ruff_python_parser/src/parser.rs +expression: "ast::Suite::parse(source, \"\").unwrap()" +--- +[ + ClassDef( + StmtClassDef { + range: 10..29, + name: Identifier { + id: "Foo", + range: 16..19, + }, + bases: [], + keywords: [], + body: [ + Expr( + StmtExpr { + range: 26..29, + value: Constant( + ExprConstant { + range: 26..29, + value: Ellipsis, + kind: None, + }, + ), + }, + ), + ], + type_params: [ + TypeVar( + TypeParamTypeVar { + range: 20..21, + name: Identifier { + id: "T", + range: 20..21, + }, + bound: None, + }, + ), + ], + decorator_list: [], + }, + ), + ClassDef( + StmtClassDef { + range: 52..76, + name: Identifier { + id: "Foo", + range: 58..61, + }, + bases: [], + keywords: [], + body: [ + Expr( + StmtExpr { + range: 73..76, + value: Constant( + ExprConstant { + range: 73..76, + value: Ellipsis, + kind: None, + }, + ), + }, + ), + ], + type_params: [ + TypeVar( + TypeParamTypeVar { + range: 62..68, + name: Identifier { + id: "T", + range: 62..63, + }, + bound: Some( + Name( + ExprName { + range: 65..68, + id: "str", + ctx: Load, + }, + ), + ), + }, + ), + ], + decorator_list: [], + }, + ), + ClassDef( + StmtClassDef { + range: 105..138, + name: Identifier { + id: "Foo", + range: 111..114, + }, + bases: [], + keywords: [], + body: [ + Expr( + StmtExpr { + range: 135..138, + value: Constant( + ExprConstant { + range: 135..138, + value: Ellipsis, + kind: None, + }, + ), + }, + ), + ], + type_params: [ + TypeVar( + TypeParamTypeVar { + range: 115..130, + name: Identifier { + id: "T", + range: 115..116, + }, + bound: Some( + Tuple( + ExprTuple { + range: 118..130, + elts: [ + Name( + ExprName { + range: 119..122, + id: "str", + ctx: Load, + }, + ), + Name( + ExprName { + range: 124..129, + id: "bytes", + ctx: Load, + }, + ), + ], + ctx: Load, + }, + ), + ), + }, + ), + ], + decorator_list: [], + }, + ), + ClassDef( + StmtClassDef { + range: 159..181, + name: Identifier { + id: "Foo", + range: 165..168, + }, + bases: [], + keywords: [], + body: [ + Expr( + StmtExpr { + range: 178..181, + value: Constant( + ExprConstant { + range: 178..181, + value: Ellipsis, + kind: None, + }, + ), + }, + ), + ], + type_params: [ + TypeVar( + TypeParamTypeVar { + range: 169..170, + name: Identifier { + id: "T", + range: 169..170, + }, + bound: None, + }, + ), + TypeVar( + TypeParamTypeVar { + range: 172..173, + name: Identifier { + id: "U", + range: 172..173, + }, + bound: None, + }, + ), + ], + decorator_list: [], + }, + ), + ClassDef( + StmtClassDef { + range: 200..223, + name: Identifier { + id: "Foo", + range: 206..209, + }, + bases: [], + keywords: [], + body: [ + Expr( + StmtExpr { + range: 220..223, + value: Constant( + ExprConstant { + range: 220..223, + value: Ellipsis, + kind: None, + }, + ), + }, + ), + ], + type_params: [ + TypeVar( + TypeParamTypeVar { + range: 210..211, + name: Identifier { + id: "T", + range: 210..211, + }, + bound: None, + }, + ), + TypeVar( + TypeParamTypeVar { + range: 213..214, + name: Identifier { + id: "U", + range: 213..214, + }, + bound: None, + }, + ), + ], + decorator_list: [], + }, + ), + ClassDef( + StmtClassDef { + range: 240..261, + name: Identifier { + id: "Foo", + range: 246..249, + }, + bases: [], + keywords: [], + body: [ + Expr( + StmtExpr { + range: 258..261, + value: Constant( + ExprConstant { + range: 258..261, + value: Ellipsis, + kind: None, + }, + ), + }, + ), + ], + type_params: [ + TypeVarTuple( + TypeParamTypeVarTuple { + range: 250..253, + name: Identifier { + id: "Ts", + range: 251..253, + }, + }, + ), + ], + decorator_list: [], + }, + ), + ClassDef( + StmtClassDef { + range: 275..296, + name: Identifier { + id: "Foo", + range: 281..284, + }, + bases: [], + keywords: [], + body: [ + Expr( + StmtExpr { + range: 293..296, + value: Constant( + ExprConstant { + range: 293..296, + value: Ellipsis, + kind: None, + }, + ), + }, + ), + ], + type_params: [ + ParamSpec( + TypeParamParamSpec { + range: 285..288, + name: Identifier { + id: "P", + range: 287..288, + }, + }, + ), + ], + decorator_list: [], + }, + ), + ClassDef( + StmtClassDef { + range: 312..351, + name: Identifier { + id: "Foo", + range: 318..321, + }, + bases: [], + keywords: [], + body: [ + Pass( + StmtPass { + range: 347..351, + }, + ), + ], + type_params: [ + TypeVar( + TypeParamTypeVar { + range: 322..323, + name: Identifier { + id: "X", + range: 322..323, + }, + bound: None, + }, + ), + TypeVar( + TypeParamTypeVar { + range: 325..331, + name: Identifier { + id: "Y", + range: 325..326, + }, + bound: Some( + Name( + ExprName { + range: 328..331, + id: "str", + ctx: Load, + }, + ), + ), + }, + ), + TypeVarTuple( + TypeParamTypeVarTuple { + range: 333..335, + name: Identifier { + id: "U", + range: 334..335, + }, + }, + ), + ParamSpec( + TypeParamParamSpec { + range: 337..340, + name: Identifier { + id: "P", + range: 339..340, + }, + }, + ), + ], + decorator_list: [], + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_dict_comprehension.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_dict_comprehension.snap new file mode 100644 index 0000000000..ca8d83bdb3 --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_dict_comprehension.snap @@ -0,0 +1,44 @@ +--- +source: crates/ruff_python_parser/src/parser.rs +expression: parse_ast +--- +DictComp( + ExprDictComp { + range: 0..19, + key: Name( + ExprName { + range: 1..3, + id: "x1", + ctx: Load, + }, + ), + value: Name( + ExprName { + range: 5..7, + id: "x2", + ctx: Load, + }, + ), + generators: [ + Comprehension { + range: 8..18, + target: Name( + ExprName { + range: 12..13, + id: "y", + ctx: Store, + }, + ), + iter: Name( + ExprName { + range: 17..18, + id: "z", + ctx: Load, + }, + ), + ifs: [], + is_async: false, + }, + ], + }, +) diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_double_list_comprehension.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_double_list_comprehension.snap new file mode 100644 index 0000000000..6fc16e9abf --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_double_list_comprehension.snap @@ -0,0 +1,124 @@ +--- +source: crates/ruff_python_parser/src/parser.rs +expression: parse_ast +--- +ListComp( + ExprListComp { + range: 0..48, + elt: Name( + ExprName { + range: 1..2, + id: "x", + ctx: Load, + }, + ), + generators: [ + Comprehension { + range: 3..17, + target: Tuple( + ExprTuple { + range: 7..12, + elts: [ + Name( + ExprName { + range: 7..8, + id: "y", + ctx: Store, + }, + ), + Name( + ExprName { + range: 10..12, + id: "y2", + ctx: Store, + }, + ), + ], + ctx: Store, + }, + ), + iter: Name( + ExprName { + range: 16..17, + id: "z", + ctx: Load, + }, + ), + ifs: [], + is_async: false, + }, + Comprehension { + range: 18..47, + target: Name( + ExprName { + range: 22..23, + id: "a", + ctx: Store, + }, + ), + iter: Name( + ExprName { + range: 27..28, + id: "b", + ctx: Load, + }, + ), + ifs: [ + Compare( + ExprCompare { + range: 32..37, + left: Name( + ExprName { + range: 32..33, + id: "a", + ctx: Load, + }, + ), + ops: [ + Lt, + ], + comparators: [ + Constant( + ExprConstant { + range: 36..37, + value: Int( + 5, + ), + kind: None, + }, + ), + ], + }, + ), + Compare( + ExprCompare { + range: 41..47, + left: Name( + ExprName { + range: 41..42, + id: "a", + ctx: Load, + }, + ), + ops: [ + Gt, + ], + comparators: [ + Constant( + ExprConstant { + range: 45..47, + value: Int( + 10, + ), + kind: None, + }, + ), + ], + }, + ), + ], + is_async: false, + }, + ], + }, +) diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_empty.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_empty.snap new file mode 100644 index 0000000000..657c2bb740 --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_empty.snap @@ -0,0 +1,5 @@ +--- +source: crates/ruff_python_parser/src/parser.rs +expression: parse_ast +--- +[] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_f_string.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_f_string.snap new file mode 100644 index 0000000000..cc110c3f27 --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_f_string.snap @@ -0,0 +1,27 @@ +--- +source: crates/ruff_python_parser/src/parser.rs +expression: parse_ast +--- +[ + Expr( + StmtExpr { + range: 0..14, + value: JoinedStr( + ExprJoinedStr { + range: 0..14, + values: [ + Constant( + ExprConstant { + range: 2..13, + value: Str( + "Hello world", + ), + kind: None, + }, + ), + ], + }, + ), + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_function_definition.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_function_definition.snap new file mode 100644 index 0000000000..b975d16f0e --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_function_definition.snap @@ -0,0 +1,559 @@ +--- +source: crates/ruff_python_parser/src/parser.rs +expression: "ast::Suite::parse(source, \"\").unwrap()" +--- +[ + FunctionDef( + StmtFunctionDef { + range: 0..20, + name: Identifier { + id: "func", + range: 4..8, + }, + args: Arguments { + range: 8..11, + posonlyargs: [], + args: [ + ArgWithDefault { + range: 9..10, + def: Arg { + range: 9..10, + arg: Identifier { + id: "a", + range: 9..10, + }, + annotation: None, + type_comment: None, + }, + default: None, + }, + ], + vararg: None, + kwonlyargs: [], + kwarg: None, + }, + body: [ + Expr( + StmtExpr { + range: 17..20, + value: Constant( + ExprConstant { + range: 17..20, + value: Ellipsis, + kind: None, + }, + ), + }, + ), + ], + decorator_list: [], + returns: None, + type_params: [], + type_comment: None, + }, + ), + FunctionDef( + StmtFunctionDef { + range: 22..53, + name: Identifier { + id: "func", + range: 26..30, + }, + args: Arguments { + range: 33..39, + posonlyargs: [], + args: [ + ArgWithDefault { + range: 34..38, + def: Arg { + range: 34..38, + arg: Identifier { + id: "a", + range: 34..35, + }, + annotation: Some( + Name( + ExprName { + range: 37..38, + id: "T", + ctx: Load, + }, + ), + ), + type_comment: None, + }, + default: None, + }, + ], + vararg: None, + kwonlyargs: [], + kwarg: None, + }, + body: [ + Expr( + StmtExpr { + range: 50..53, + value: Constant( + ExprConstant { + range: 50..53, + value: Ellipsis, + kind: None, + }, + ), + }, + ), + ], + decorator_list: [], + returns: Some( + Name( + ExprName { + range: 43..44, + id: "T", + ctx: Load, + }, + ), + ), + type_params: [ + TypeVar( + TypeParamTypeVar { + range: 31..32, + name: Identifier { + id: "T", + range: 31..32, + }, + bound: None, + }, + ), + ], + type_comment: None, + }, + ), + FunctionDef( + StmtFunctionDef { + range: 55..91, + name: Identifier { + id: "func", + range: 59..63, + }, + args: Arguments { + range: 71..77, + posonlyargs: [], + args: [ + ArgWithDefault { + range: 72..76, + def: Arg { + range: 72..76, + arg: Identifier { + id: "a", + range: 72..73, + }, + annotation: Some( + Name( + ExprName { + range: 75..76, + id: "T", + ctx: Load, + }, + ), + ), + type_comment: None, + }, + default: None, + }, + ], + vararg: None, + kwonlyargs: [], + kwarg: None, + }, + body: [ + Expr( + StmtExpr { + range: 88..91, + value: Constant( + ExprConstant { + range: 88..91, + value: Ellipsis, + kind: None, + }, + ), + }, + ), + ], + decorator_list: [], + returns: Some( + Name( + ExprName { + range: 81..82, + id: "T", + ctx: Load, + }, + ), + ), + type_params: [ + TypeVar( + TypeParamTypeVar { + range: 64..70, + name: Identifier { + id: "T", + range: 64..65, + }, + bound: Some( + Name( + ExprName { + range: 67..70, + id: "str", + ctx: Load, + }, + ), + ), + }, + ), + ], + type_comment: None, + }, + ), + FunctionDef( + StmtFunctionDef { + range: 93..138, + name: Identifier { + id: "func", + range: 97..101, + }, + args: Arguments { + range: 118..124, + posonlyargs: [], + args: [ + ArgWithDefault { + range: 119..123, + def: Arg { + range: 119..123, + arg: Identifier { + id: "a", + range: 119..120, + }, + annotation: Some( + Name( + ExprName { + range: 122..123, + id: "T", + ctx: Load, + }, + ), + ), + type_comment: None, + }, + default: None, + }, + ], + vararg: None, + kwonlyargs: [], + kwarg: None, + }, + body: [ + Expr( + StmtExpr { + range: 135..138, + value: Constant( + ExprConstant { + range: 135..138, + value: Ellipsis, + kind: None, + }, + ), + }, + ), + ], + decorator_list: [], + returns: Some( + Name( + ExprName { + range: 128..129, + id: "T", + ctx: Load, + }, + ), + ), + type_params: [ + TypeVar( + TypeParamTypeVar { + range: 102..117, + name: Identifier { + id: "T", + range: 102..103, + }, + bound: Some( + Tuple( + ExprTuple { + range: 105..117, + elts: [ + Name( + ExprName { + range: 106..109, + id: "str", + ctx: Load, + }, + ), + Name( + ExprName { + range: 111..116, + id: "bytes", + ctx: Load, + }, + ), + ], + ctx: Load, + }, + ), + ), + }, + ), + ], + type_comment: None, + }, + ), + FunctionDef( + StmtFunctionDef { + range: 140..171, + name: Identifier { + id: "func", + range: 144..148, + }, + args: Arguments { + range: 153..162, + posonlyargs: [], + args: [], + vararg: Some( + Arg { + range: 155..161, + arg: Identifier { + id: "a", + range: 155..156, + }, + annotation: Some( + Starred( + ExprStarred { + range: 158..161, + value: Name( + ExprName { + range: 159..161, + id: "Ts", + ctx: Load, + }, + ), + ctx: Load, + }, + ), + ), + type_comment: None, + }, + ), + kwonlyargs: [], + kwarg: None, + }, + body: [ + Expr( + StmtExpr { + range: 168..171, + value: Constant( + ExprConstant { + range: 168..171, + value: Ellipsis, + kind: None, + }, + ), + }, + ), + ], + decorator_list: [], + returns: None, + type_params: [ + TypeVarTuple( + TypeParamTypeVarTuple { + range: 149..152, + name: Identifier { + id: "Ts", + range: 150..152, + }, + }, + ), + ], + type_comment: None, + }, + ), + FunctionDef( + StmtFunctionDef { + range: 173..230, + name: Identifier { + id: "func", + range: 177..181, + }, + args: Arguments { + range: 186..221, + posonlyargs: [], + args: [], + vararg: Some( + Arg { + range: 188..200, + arg: Identifier { + id: "args", + range: 188..192, + }, + annotation: Some( + Attribute( + ExprAttribute { + range: 194..200, + value: Name( + ExprName { + range: 194..195, + id: "P", + ctx: Load, + }, + ), + attr: Identifier { + id: "args", + range: 196..200, + }, + ctx: Load, + }, + ), + ), + type_comment: None, + }, + ), + kwonlyargs: [], + kwarg: Some( + Arg { + range: 204..220, + arg: Identifier { + id: "kwargs", + range: 204..210, + }, + annotation: Some( + Attribute( + ExprAttribute { + range: 212..220, + value: Name( + ExprName { + range: 212..213, + id: "P", + ctx: Load, + }, + ), + attr: Identifier { + id: "kwargs", + range: 214..220, + }, + ctx: Load, + }, + ), + ), + type_comment: None, + }, + ), + }, + body: [ + Expr( + StmtExpr { + range: 227..230, + value: Constant( + ExprConstant { + range: 227..230, + value: Ellipsis, + kind: None, + }, + ), + }, + ), + ], + decorator_list: [], + returns: None, + type_params: [ + ParamSpec( + TypeParamParamSpec { + range: 182..185, + name: Identifier { + id: "P", + range: 184..185, + }, + }, + ), + ], + type_comment: None, + }, + ), + FunctionDef( + StmtFunctionDef { + range: 232..273, + name: Identifier { + id: "func", + range: 236..240, + }, + args: Arguments { + range: 261..263, + posonlyargs: [], + args: [], + vararg: None, + kwonlyargs: [], + kwarg: None, + }, + body: [ + Pass( + StmtPass { + range: 269..273, + }, + ), + ], + decorator_list: [], + returns: None, + type_params: [ + TypeVar( + TypeParamTypeVar { + range: 241..242, + name: Identifier { + id: "T", + range: 241..242, + }, + bound: None, + }, + ), + TypeVar( + TypeParamTypeVar { + range: 244..250, + name: Identifier { + id: "U", + range: 244..245, + }, + bound: Some( + Name( + ExprName { + range: 247..250, + id: "str", + ctx: Load, + }, + ), + ), + }, + ), + TypeVarTuple( + TypeParamTypeVarTuple { + range: 252..255, + name: Identifier { + id: "Ts", + range: 253..255, + }, + }, + ), + ParamSpec( + TypeParamParamSpec { + range: 257..260, + name: Identifier { + id: "P", + range: 259..260, + }, + }, + ), + ], + type_comment: None, + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_generator_comprehension.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_generator_comprehension.snap new file mode 100644 index 0000000000..134f99c688 --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_generator_comprehension.snap @@ -0,0 +1,37 @@ +--- +source: crates/ruff_python_parser/src/parser.rs +expression: parse_ast +--- +GeneratorExp( + ExprGeneratorExp { + range: 0..14, + elt: Name( + ExprName { + range: 1..2, + id: "x", + ctx: Load, + }, + ), + generators: [ + Comprehension { + range: 3..13, + target: Name( + ExprName { + range: 7..8, + id: "y", + ctx: Store, + }, + ), + iter: Name( + ExprName { + range: 12..13, + id: "z", + ctx: Load, + }, + ), + ifs: [], + is_async: false, + }, + ], + }, +) diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_if_elif_else.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_if_elif_else.snap new file mode 100644 index 0000000000..3601f016e0 --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_if_elif_else.snap @@ -0,0 +1,88 @@ +--- +source: crates/ruff_python_parser/src/parser.rs +expression: parse_ast +--- +[ + If( + StmtIf { + range: 0..28, + test: Constant( + ExprConstant { + range: 3..4, + value: Int( + 1, + ), + kind: None, + }, + ), + body: [ + Expr( + StmtExpr { + range: 6..8, + value: Constant( + ExprConstant { + range: 6..8, + value: Int( + 10, + ), + kind: None, + }, + ), + }, + ), + ], + elif_else_clauses: [ + ElifElseClause { + range: 9..19, + test: Some( + Constant( + ExprConstant { + range: 14..15, + value: Int( + 2, + ), + kind: None, + }, + ), + ), + body: [ + Expr( + StmtExpr { + range: 17..19, + value: Constant( + ExprConstant { + range: 17..19, + value: Int( + 20, + ), + kind: None, + }, + ), + }, + ), + ], + }, + ElifElseClause { + range: 20..28, + test: None, + body: [ + Expr( + StmtExpr { + range: 26..28, + value: Constant( + ExprConstant { + range: 26..28, + value: Int( + 30, + ), + kind: None, + }, + ), + }, + ), + ], + }, + ], + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_if_else_generator_comprehension.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_if_else_generator_comprehension.snap new file mode 100644 index 0000000000..0ef98fab3f --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_if_else_generator_comprehension.snap @@ -0,0 +1,56 @@ +--- +source: crates/ruff_python_parser/src/parser.rs +expression: parse_ast +--- +GeneratorExp( + ExprGeneratorExp { + range: 0..26, + elt: IfExp( + ExprIfExp { + range: 1..14, + test: Name( + ExprName { + range: 6..7, + id: "y", + ctx: Load, + }, + ), + body: Name( + ExprName { + range: 1..2, + id: "x", + ctx: Load, + }, + ), + orelse: Name( + ExprName { + range: 13..14, + id: "y", + ctx: Load, + }, + ), + }, + ), + generators: [ + Comprehension { + range: 15..25, + target: Name( + ExprName { + range: 19..20, + id: "y", + ctx: Store, + }, + ), + iter: Name( + ExprName { + range: 24..25, + id: "z", + ctx: Load, + }, + ), + ifs: [], + is_async: false, + }, + ], + }, +) diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_kwargs.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_kwargs.snap new file mode 100644 index 0000000000..bad3e453b3 --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_kwargs.snap @@ -0,0 +1,54 @@ +--- +source: crates/ruff_python_parser/src/parser.rs +expression: parse_ast +--- +[ + Expr( + StmtExpr { + range: 0..32, + value: Call( + ExprCall { + range: 0..32, + func: Name( + ExprName { + range: 0..7, + id: "my_func", + ctx: Load, + }, + ), + args: [ + Constant( + ExprConstant { + range: 8..20, + value: Str( + "positional", + ), + kind: None, + }, + ), + ], + keywords: [ + Keyword { + range: 22..31, + arg: Some( + Identifier { + id: "keyword", + range: 22..29, + }, + ), + value: Constant( + ExprConstant { + range: 30..31, + value: Int( + 2, + ), + kind: None, + }, + ), + }, + ], + }, + ), + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_lambda.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_lambda.snap new file mode 100644 index 0000000000..c1e7d6b06d --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_lambda.snap @@ -0,0 +1,71 @@ +--- +source: crates/ruff_python_parser/src/parser.rs +expression: parse_ast +--- +[ + Expr( + StmtExpr { + range: 0..18, + value: Lambda( + ExprLambda { + range: 0..18, + args: Arguments { + range: 7..11, + posonlyargs: [], + args: [ + ArgWithDefault { + range: 7..8, + def: Arg { + range: 7..8, + arg: Identifier { + id: "x", + range: 7..8, + }, + annotation: None, + type_comment: None, + }, + default: None, + }, + ArgWithDefault { + range: 10..11, + def: Arg { + range: 10..11, + arg: Identifier { + id: "y", + range: 10..11, + }, + annotation: None, + type_comment: None, + }, + default: None, + }, + ], + vararg: None, + kwonlyargs: [], + kwarg: None, + }, + body: BinOp( + ExprBinOp { + range: 13..18, + left: Name( + ExprName { + range: 13..14, + id: "x", + ctx: Load, + }, + ), + op: Mult, + right: Name( + ExprName { + range: 17..18, + id: "y", + ctx: Load, + }, + ), + }, + ), + }, + ), + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_lambda_no_args.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_lambda_no_args.snap new file mode 100644 index 0000000000..4910981fc9 --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_lambda_no_args.snap @@ -0,0 +1,33 @@ +--- +source: crates/ruff_python_parser/src/parser.rs +expression: parse_ast +--- +[ + Expr( + StmtExpr { + range: 0..9, + value: Lambda( + ExprLambda { + range: 0..9, + args: Arguments { + range: 6..6, + posonlyargs: [], + args: [], + vararg: None, + kwonlyargs: [], + kwarg: None, + }, + body: Constant( + ExprConstant { + range: 8..9, + value: Int( + 1, + ), + kind: None, + }, + ), + }, + ), + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_list_comprehension.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_list_comprehension.snap new file mode 100644 index 0000000000..869bc11b0d --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_list_comprehension.snap @@ -0,0 +1,37 @@ +--- +source: crates/ruff_python_parser/src/parser.rs +expression: parse_ast +--- +ListComp( + ExprListComp { + range: 0..14, + elt: Name( + ExprName { + range: 1..2, + id: "x", + ctx: Load, + }, + ), + generators: [ + Comprehension { + range: 3..13, + target: Name( + ExprName { + range: 7..8, + id: "y", + ctx: Store, + }, + ), + iter: Name( + ExprName { + range: 12..13, + id: "z", + ctx: Load, + }, + ), + ifs: [], + is_async: false, + }, + ], + }, +) diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_named_expression_generator_comprehension.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_named_expression_generator_comprehension.snap new file mode 100644 index 0000000000..6455470589 --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_named_expression_generator_comprehension.snap @@ -0,0 +1,64 @@ +--- +source: crates/ruff_python_parser/src/parser.rs +expression: parse_ast +--- +GeneratorExp( + ExprGeneratorExp { + range: 0..23, + elt: NamedExpr( + ExprNamedExpr { + range: 1..11, + target: Name( + ExprName { + range: 1..2, + id: "x", + ctx: Store, + }, + ), + value: BinOp( + ExprBinOp { + range: 6..11, + left: Name( + ExprName { + range: 6..7, + id: "y", + ctx: Load, + }, + ), + op: Add, + right: Constant( + ExprConstant { + range: 10..11, + value: Int( + 1, + ), + kind: None, + }, + ), + }, + ), + }, + ), + generators: [ + Comprehension { + range: 12..22, + target: Name( + ExprName { + range: 16..17, + id: "y", + ctx: Store, + }, + ), + iter: Name( + ExprName { + range: 21..22, + id: "z", + ctx: Load, + }, + ), + ifs: [], + is_async: false, + }, + ], + }, +) diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_print_2.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_print_2.snap new file mode 100644 index 0000000000..22929503ad --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_print_2.snap @@ -0,0 +1,44 @@ +--- +source: crates/ruff_python_parser/src/parser.rs +expression: parse_ast +--- +[ + Expr( + StmtExpr { + range: 0..23, + value: Call( + ExprCall { + range: 0..23, + func: Name( + ExprName { + range: 0..5, + id: "print", + ctx: Load, + }, + ), + args: [ + Constant( + ExprConstant { + range: 6..19, + value: Str( + "Hello world", + ), + kind: None, + }, + ), + Constant( + ExprConstant { + range: 21..22, + value: Int( + 2, + ), + kind: None, + }, + ), + ], + keywords: [], + }, + ), + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_print_hello.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_print_hello.snap new file mode 100644 index 0000000000..23684e9c16 --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_print_hello.snap @@ -0,0 +1,35 @@ +--- +source: crates/ruff_python_parser/src/parser.rs +expression: parse_ast +--- +[ + Expr( + StmtExpr { + range: 0..20, + value: Call( + ExprCall { + range: 0..20, + func: Name( + ExprName { + range: 0..5, + id: "print", + ctx: Load, + }, + ), + args: [ + Constant( + ExprConstant { + range: 6..19, + value: Str( + "Hello world", + ), + kind: None, + }, + ), + ], + keywords: [], + }, + ), + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_string.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_string.snap new file mode 100644 index 0000000000..21c12fb897 --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_string.snap @@ -0,0 +1,20 @@ +--- +source: crates/ruff_python_parser/src/parser.rs +expression: parse_ast +--- +[ + Expr( + StmtExpr { + range: 0..13, + value: Constant( + ExprConstant { + range: 0..13, + value: Str( + "Hello world", + ), + kind: None, + }, + ), + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_tuples.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_tuples.snap new file mode 100644 index 0000000000..7ea89cc810 --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_tuples.snap @@ -0,0 +1,62 @@ +--- +source: crates/ruff_python_parser/src/parser.rs +expression: "ast::Suite::parse(source, \"\").unwrap()" +--- +[ + Assign( + StmtAssign { + range: 0..11, + targets: [ + Tuple( + ExprTuple { + range: 0..4, + elts: [ + Name( + ExprName { + range: 0..1, + id: "a", + ctx: Store, + }, + ), + Name( + ExprName { + range: 3..4, + id: "b", + ctx: Store, + }, + ), + ], + ctx: Store, + }, + ), + ], + value: Tuple( + ExprTuple { + range: 7..11, + elts: [ + Constant( + ExprConstant { + range: 7..8, + value: Int( + 4, + ), + kind: None, + }, + ), + Constant( + ExprConstant { + range: 10..11, + value: Int( + 5, + ), + kind: None, + }, + ), + ], + ctx: Load, + }, + ), + type_comment: None, + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_type_declaration.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_type_declaration.snap new file mode 100644 index 0000000000..a0bc32044f --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__parse_type_declaration.snap @@ -0,0 +1,802 @@ +--- +source: crates/ruff_python_parser/src/parser.rs +expression: "ast::Suite::parse(source, \"\").unwrap()" +--- +[ + TypeAlias( + StmtTypeAlias { + range: 1..13, + name: Name( + ExprName { + range: 6..7, + id: "X", + ctx: Store, + }, + ), + type_params: [], + value: Name( + ExprName { + range: 10..13, + id: "int", + ctx: Load, + }, + ), + }, + ), + TypeAlias( + StmtTypeAlias { + range: 14..32, + name: Name( + ExprName { + range: 19..20, + id: "X", + ctx: Store, + }, + ), + type_params: [], + value: BinOp( + ExprBinOp { + range: 23..32, + left: Name( + ExprName { + range: 23..26, + id: "int", + ctx: Load, + }, + ), + op: BitOr, + right: Name( + ExprName { + range: 29..32, + id: "str", + ctx: Load, + }, + ), + }, + ), + }, + ), + TypeAlias( + StmtTypeAlias { + range: 33..61, + name: Name( + ExprName { + range: 38..39, + id: "X", + ctx: Store, + }, + ), + type_params: [], + value: BinOp( + ExprBinOp { + range: 42..61, + left: Name( + ExprName { + range: 42..45, + id: "int", + ctx: Load, + }, + ), + op: BitOr, + right: Constant( + ExprConstant { + range: 48..61, + value: Str( + "ForwardRefY", + ), + kind: None, + }, + ), + }, + ), + }, + ), + TypeAlias( + StmtTypeAlias { + range: 62..88, + name: Name( + ExprName { + range: 67..68, + id: "X", + ctx: Store, + }, + ), + type_params: [ + TypeVar( + TypeParamTypeVar { + range: 69..70, + name: Identifier { + id: "T", + range: 69..70, + }, + bound: None, + }, + ), + ], + value: BinOp( + ExprBinOp { + range: 74..88, + left: Name( + ExprName { + range: 74..75, + id: "T", + ctx: Load, + }, + ), + op: BitOr, + right: Subscript( + ExprSubscript { + range: 78..88, + value: Name( + ExprName { + range: 78..82, + id: "list", + ctx: Load, + }, + ), + slice: Subscript( + ExprSubscript { + range: 83..87, + value: Name( + ExprName { + range: 83..84, + id: "X", + ctx: Load, + }, + ), + slice: Name( + ExprName { + range: 85..86, + id: "T", + ctx: Load, + }, + ), + ctx: Load, + }, + ), + ctx: Load, + }, + ), + }, + ), + }, + ), + TypeAlias( + StmtTypeAlias { + range: 102..117, + name: Name( + ExprName { + range: 107..108, + id: "X", + ctx: Store, + }, + ), + type_params: [ + TypeVar( + TypeParamTypeVar { + range: 109..110, + name: Identifier { + id: "T", + range: 109..110, + }, + bound: None, + }, + ), + ], + value: Name( + ExprName { + range: 114..117, + id: "int", + ctx: Load, + }, + ), + }, + ), + TypeAlias( + StmtTypeAlias { + range: 118..146, + name: Name( + ExprName { + range: 123..124, + id: "X", + ctx: Store, + }, + ), + type_params: [ + TypeVar( + TypeParamTypeVar { + range: 125..126, + name: Identifier { + id: "T", + range: 125..126, + }, + bound: None, + }, + ), + ], + value: BinOp( + ExprBinOp { + range: 130..146, + left: Subscript( + ExprSubscript { + range: 130..137, + value: Name( + ExprName { + range: 130..134, + id: "list", + ctx: Load, + }, + ), + slice: Name( + ExprName { + range: 135..136, + id: "T", + ctx: Load, + }, + ), + ctx: Load, + }, + ), + op: BitOr, + right: Subscript( + ExprSubscript { + range: 140..146, + value: Name( + ExprName { + range: 140..143, + id: "set", + ctx: Load, + }, + ), + slice: Name( + ExprName { + range: 144..145, + id: "T", + ctx: Load, + }, + ), + ctx: Load, + }, + ), + }, + ), + }, + ), + TypeAlias( + StmtTypeAlias { + range: 147..179, + name: Name( + ExprName { + range: 152..153, + id: "X", + ctx: Store, + }, + ), + type_params: [ + TypeVar( + TypeParamTypeVar { + range: 154..155, + name: Identifier { + id: "T", + range: 154..155, + }, + bound: None, + }, + ), + TypeVarTuple( + TypeParamTypeVarTuple { + range: 157..160, + name: Identifier { + id: "Ts", + range: 158..160, + }, + }, + ), + ParamSpec( + TypeParamParamSpec { + range: 162..165, + name: Identifier { + id: "P", + range: 164..165, + }, + }, + ), + ], + value: Tuple( + ExprTuple { + range: 169..179, + elts: [ + Name( + ExprName { + range: 170..171, + id: "T", + ctx: Load, + }, + ), + Name( + ExprName { + range: 173..175, + id: "Ts", + ctx: Load, + }, + ), + Name( + ExprName { + range: 177..178, + id: "P", + ctx: Load, + }, + ), + ], + ctx: Load, + }, + ), + }, + ), + TypeAlias( + StmtTypeAlias { + range: 180..217, + name: Name( + ExprName { + range: 185..186, + id: "X", + ctx: Store, + }, + ), + type_params: [ + TypeVar( + TypeParamTypeVar { + range: 187..193, + name: Identifier { + id: "T", + range: 187..188, + }, + bound: Some( + Name( + ExprName { + range: 190..193, + id: "int", + ctx: Load, + }, + ), + ), + }, + ), + TypeVarTuple( + TypeParamTypeVarTuple { + range: 195..198, + name: Identifier { + id: "Ts", + range: 196..198, + }, + }, + ), + ParamSpec( + TypeParamParamSpec { + range: 200..203, + name: Identifier { + id: "P", + range: 202..203, + }, + }, + ), + ], + value: Tuple( + ExprTuple { + range: 207..217, + elts: [ + Name( + ExprName { + range: 208..209, + id: "T", + ctx: Load, + }, + ), + Name( + ExprName { + range: 211..213, + id: "Ts", + ctx: Load, + }, + ), + Name( + ExprName { + range: 215..216, + id: "P", + ctx: Load, + }, + ), + ], + ctx: Load, + }, + ), + }, + ), + TypeAlias( + StmtTypeAlias { + range: 218..262, + name: Name( + ExprName { + range: 223..224, + id: "X", + ctx: Store, + }, + ), + type_params: [ + TypeVar( + TypeParamTypeVar { + range: 225..238, + name: Identifier { + id: "T", + range: 225..226, + }, + bound: Some( + Tuple( + ExprTuple { + range: 228..238, + elts: [ + Name( + ExprName { + range: 229..232, + id: "int", + ctx: Load, + }, + ), + Name( + ExprName { + range: 234..237, + id: "str", + ctx: Load, + }, + ), + ], + ctx: Load, + }, + ), + ), + }, + ), + TypeVarTuple( + TypeParamTypeVarTuple { + range: 240..243, + name: Identifier { + id: "Ts", + range: 241..243, + }, + }, + ), + ParamSpec( + TypeParamParamSpec { + range: 245..248, + name: Identifier { + id: "P", + range: 247..248, + }, + }, + ), + ], + value: Tuple( + ExprTuple { + range: 252..262, + elts: [ + Name( + ExprName { + range: 253..254, + id: "T", + ctx: Load, + }, + ), + Name( + ExprName { + range: 256..258, + id: "Ts", + ctx: Load, + }, + ), + Name( + ExprName { + range: 260..261, + id: "P", + ctx: Load, + }, + ), + ], + ctx: Load, + }, + ), + }, + ), + TypeAlias( + StmtTypeAlias { + range: 293..308, + name: Name( + ExprName { + range: 298..302, + id: "type", + ctx: Store, + }, + ), + type_params: [], + value: Name( + ExprName { + range: 305..308, + id: "int", + ctx: Load, + }, + ), + }, + ), + TypeAlias( + StmtTypeAlias { + range: 309..325, + name: Name( + ExprName { + range: 314..319, + id: "match", + ctx: Store, + }, + ), + type_params: [], + value: Name( + ExprName { + range: 322..325, + id: "int", + ctx: Load, + }, + ), + }, + ), + TypeAlias( + StmtTypeAlias { + range: 326..341, + name: Name( + ExprName { + range: 331..335, + id: "case", + ctx: Store, + }, + ), + type_params: [], + value: Name( + ExprName { + range: 338..341, + id: "int", + ctx: Load, + }, + ), + }, + ), + TypeAlias( + StmtTypeAlias { + range: 367..382, + name: Name( + ExprName { + range: 372..375, + id: "foo", + ctx: Store, + }, + ), + type_params: [], + value: Name( + ExprName { + range: 378..382, + id: "type", + ctx: Load, + }, + ), + }, + ), + TypeAlias( + StmtTypeAlias { + range: 383..399, + name: Name( + ExprName { + range: 388..391, + id: "foo", + ctx: Store, + }, + ), + type_params: [], + value: Name( + ExprName { + range: 394..399, + id: "match", + ctx: Load, + }, + ), + }, + ), + TypeAlias( + StmtTypeAlias { + range: 400..415, + name: Name( + ExprName { + range: 405..408, + id: "foo", + ctx: Store, + }, + ), + type_params: [], + value: Name( + ExprName { + range: 411..415, + id: "case", + ctx: Load, + }, + ), + }, + ), + TypeAlias( + StmtTypeAlias { + range: 439..454, + name: Name( + ExprName { + range: 447..448, + id: "X", + ctx: Store, + }, + ), + type_params: [], + value: Name( + ExprName { + range: 451..454, + id: "int", + ctx: Load, + }, + ), + }, + ), + TypeAlias( + StmtTypeAlias { + range: 455..470, + name: Name( + ExprName { + range: 460..461, + id: "X", + ctx: Store, + }, + ), + type_params: [], + value: Name( + ExprName { + range: 467..470, + id: "int", + ctx: Load, + }, + ), + }, + ), + TypeAlias( + StmtTypeAlias { + range: 471..486, + name: Name( + ExprName { + range: 476..477, + id: "X", + ctx: Store, + }, + ), + type_params: [], + value: Name( + ExprName { + range: 483..486, + id: "int", + ctx: Load, + }, + ), + }, + ), + TypeAlias( + StmtTypeAlias { + range: 487..507, + name: Name( + ExprName { + range: 492..493, + id: "X", + ctx: Store, + }, + ), + type_params: [], + value: Name( + ExprName { + range: 502..505, + id: "int", + ctx: Load, + }, + ), + }, + ), + TypeAlias( + StmtTypeAlias { + range: 508..527, + name: Name( + ExprName { + range: 519..520, + id: "X", + ctx: Store, + }, + ), + type_params: [ + TypeVar( + TypeParamTypeVar { + range: 521..522, + name: Identifier { + id: "T", + range: 521..522, + }, + bound: None, + }, + ), + ], + value: Name( + ExprName { + range: 526..527, + id: "T", + ctx: Load, + }, + ), + }, + ), + TypeAlias( + StmtTypeAlias { + range: 528..548, + name: Name( + ExprName { + range: 533..534, + id: "X", + ctx: Store, + }, + ), + type_params: [ + TypeVar( + TypeParamTypeVar { + range: 542..543, + name: Identifier { + id: "T", + range: 542..543, + }, + bound: None, + }, + ), + ], + value: Name( + ExprName { + range: 547..548, + id: "T", + ctx: Load, + }, + ), + }, + ), + TypeAlias( + StmtTypeAlias { + range: 549..568, + name: Name( + ExprName { + range: 554..555, + id: "X", + ctx: Store, + }, + ), + type_params: [ + TypeVar( + TypeParamTypeVar { + range: 556..557, + name: Identifier { + id: "T", + range: 556..557, + }, + bound: None, + }, + ), + ], + value: Name( + ExprName { + range: 567..568, + id: "T", + ctx: Load, + }, + ), + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__patma.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__patma.snap new file mode 100644 index 0000000000..dd3196a7de --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__patma.snap @@ -0,0 +1,3823 @@ +--- +source: crates/ruff_python_parser/src/parser.rs +expression: parse_ast +--- +[ + Match( + StmtMatch { + range: 67..103, + subject: Name( + ExprName { + range: 73..74, + id: "x", + ctx: Load, + }, + ), + cases: [ + MatchCase { + range: 80..103, + pattern: MatchValue( + PatternMatchValue { + range: 85..88, + value: UnaryOp( + ExprUnaryOp { + range: 85..88, + op: USub, + operand: Constant( + ExprConstant { + range: 86..88, + value: Complex { + real: 0.0, + imag: 0.0, + }, + kind: None, + }, + ), + }, + ), + }, + ), + guard: None, + body: [ + Assign( + StmtAssign { + range: 98..103, + targets: [ + Name( + ExprName { + range: 98..99, + id: "y", + ctx: Store, + }, + ), + ], + value: Constant( + ExprConstant { + range: 102..103, + value: Int( + 0, + ), + kind: None, + }, + ), + type_comment: None, + }, + ), + ], + }, + ], + }, + ), + Match( + StmtMatch { + range: 126..167, + subject: Name( + ExprName { + range: 132..133, + id: "x", + ctx: Load, + }, + ), + cases: [ + MatchCase { + range: 139..167, + pattern: MatchClass( + PatternMatchClass { + range: 144..152, + cls: Name( + ExprName { + range: 144..149, + id: "bytes", + ctx: Load, + }, + ), + patterns: [ + MatchAs( + PatternMatchAs { + range: 150..151, + pattern: None, + name: Some( + Identifier { + id: "z", + range: 150..151, + }, + ), + }, + ), + ], + kwd_attrs: [], + kwd_patterns: [], + }, + ), + guard: None, + body: [ + Assign( + StmtAssign { + range: 162..167, + targets: [ + Name( + ExprName { + range: 162..163, + id: "y", + ctx: Store, + }, + ), + ], + value: Constant( + ExprConstant { + range: 166..167, + value: Int( + 0, + ), + kind: None, + }, + ), + type_comment: None, + }, + ), + ], + }, + ], + }, + ), + Match( + StmtMatch { + range: 190..260, + subject: Name( + ExprName { + range: 196..197, + id: "x", + ctx: Load, + }, + ), + cases: [ + MatchCase { + range: 203..229, + pattern: MatchValue( + PatternMatchValue { + range: 208..209, + value: Constant( + ExprConstant { + range: 208..209, + value: Int( + 0, + ), + kind: None, + }, + ), + }, + ), + guard: Some( + Constant( + ExprConstant { + range: 213..214, + value: Int( + 0, + ), + kind: None, + }, + ), + ), + body: [ + Assign( + StmtAssign { + range: 224..229, + targets: [ + Name( + ExprName { + range: 224..225, + id: "y", + ctx: Store, + }, + ), + ], + value: Constant( + ExprConstant { + range: 228..229, + value: Int( + 0, + ), + kind: None, + }, + ), + type_comment: None, + }, + ), + ], + }, + MatchCase { + range: 234..260, + pattern: MatchValue( + PatternMatchValue { + range: 239..240, + value: Constant( + ExprConstant { + range: 239..240, + value: Int( + 0, + ), + kind: None, + }, + ), + }, + ), + guard: Some( + Constant( + ExprConstant { + range: 244..245, + value: Int( + 1, + ), + kind: None, + }, + ), + ), + body: [ + Assign( + StmtAssign { + range: 255..260, + targets: [ + Name( + ExprName { + range: 255..256, + id: "y", + ctx: Store, + }, + ), + ], + value: Constant( + ExprConstant { + range: 259..260, + value: Int( + 1, + ), + kind: None, + }, + ), + type_comment: None, + }, + ), + ], + }, + ], + }, + ), + Match( + StmtMatch { + range: 283..332, + subject: Constant( + ExprConstant { + range: 289..290, + value: Int( + 3, + ), + kind: None, + }, + ), + cases: [ + MatchCase { + range: 296..332, + pattern: MatchOr( + PatternMatchOr { + range: 301..314, + patterns: [ + MatchValue( + PatternMatchValue { + range: 301..302, + value: Constant( + ExprConstant { + range: 301..302, + value: Int( + 0, + ), + kind: None, + }, + ), + }, + ), + MatchValue( + PatternMatchValue { + range: 305..306, + value: Constant( + ExprConstant { + range: 305..306, + value: Int( + 1, + ), + kind: None, + }, + ), + }, + ), + MatchValue( + PatternMatchValue { + range: 309..310, + value: Constant( + ExprConstant { + range: 309..310, + value: Int( + 2, + ), + kind: None, + }, + ), + }, + ), + MatchValue( + PatternMatchValue { + range: 313..314, + value: Constant( + ExprConstant { + range: 313..314, + value: Int( + 3, + ), + kind: None, + }, + ), + }, + ), + ], + }, + ), + guard: None, + body: [ + Assign( + StmtAssign { + range: 324..332, + targets: [ + Name( + ExprName { + range: 324..325, + id: "x", + ctx: Store, + }, + ), + ], + value: Constant( + ExprConstant { + range: 328..332, + value: Bool( + true, + ), + kind: None, + }, + ), + type_comment: None, + }, + ), + ], + }, + ], + }, + ), + Match( + StmtMatch { + range: 355..403, + subject: Name( + ExprName { + range: 361..362, + id: "x", + ctx: Load, + }, + ), + cases: [ + MatchCase { + range: 368..403, + pattern: MatchOr( + PatternMatchOr { + range: 373..388, + patterns: [ + MatchSequence( + PatternMatchSequence { + range: 373..379, + patterns: [ + MatchValue( + PatternMatchValue { + range: 374..375, + value: Constant( + ExprConstant { + range: 374..375, + value: Int( + 0, + ), + kind: None, + }, + ), + }, + ), + MatchValue( + PatternMatchValue { + range: 377..378, + value: Constant( + ExprConstant { + range: 377..378, + value: Int( + 1, + ), + kind: None, + }, + ), + }, + ), + ], + }, + ), + MatchSequence( + PatternMatchSequence { + range: 382..388, + patterns: [ + MatchValue( + PatternMatchValue { + range: 383..384, + value: Constant( + ExprConstant { + range: 383..384, + value: Int( + 1, + ), + kind: None, + }, + ), + }, + ), + MatchValue( + PatternMatchValue { + range: 386..387, + value: Constant( + ExprConstant { + range: 386..387, + value: Int( + 0, + ), + kind: None, + }, + ), + }, + ), + ], + }, + ), + ], + }, + ), + guard: None, + body: [ + Assign( + StmtAssign { + range: 398..403, + targets: [ + Name( + ExprName { + range: 398..399, + id: "y", + ctx: Store, + }, + ), + ], + value: Constant( + ExprConstant { + range: 402..403, + value: Int( + 0, + ), + kind: None, + }, + ), + type_comment: None, + }, + ), + ], + }, + ], + }, + ), + Match( + StmtMatch { + range: 445..523, + subject: Name( + ExprName { + range: 451..452, + id: "x", + ctx: Load, + }, + ), + cases: [ + MatchCase { + range: 458..489, + pattern: MatchSequence( + PatternMatchSequence { + range: 463..467, + patterns: [ + MatchStar( + PatternMatchStar { + range: 464..466, + name: None, + }, + ), + ], + }, + ), + guard: None, + body: [ + Return( + StmtReturn { + range: 477..489, + value: Some( + Constant( + ExprConstant { + range: 484..489, + value: Str( + "seq", + ), + kind: None, + }, + ), + ), + }, + ), + ], + }, + MatchCase { + range: 494..523, + pattern: MatchMapping( + PatternMatchMapping { + range: 499..501, + keys: [], + patterns: [], + rest: None, + }, + ), + guard: None, + body: [ + Return( + StmtReturn { + range: 511..523, + value: Some( + Constant( + ExprConstant { + range: 518..523, + value: Str( + "map", + ), + kind: None, + }, + ), + ), + }, + ), + ], + }, + ], + }, + ), + Match( + StmtMatch { + range: 546..714, + subject: Name( + ExprName { + range: 552..553, + id: "x", + ctx: Load, + }, + ), + cases: [ + MatchCase { + range: 559..594, + pattern: MatchMapping( + PatternMatchMapping { + range: 564..579, + keys: [ + Constant( + ExprConstant { + range: 565..566, + value: Int( + 0, + ), + kind: None, + }, + ), + ], + patterns: [ + MatchSequence( + PatternMatchSequence { + range: 568..578, + patterns: [ + MatchValue( + PatternMatchValue { + range: 569..570, + value: Constant( + ExprConstant { + range: 569..570, + value: Int( + 1, + ), + kind: None, + }, + ), + }, + ), + MatchValue( + PatternMatchValue { + range: 572..573, + value: Constant( + ExprConstant { + range: 572..573, + value: Int( + 2, + ), + kind: None, + }, + ), + }, + ), + MatchMapping( + PatternMatchMapping { + range: 575..577, + keys: [], + patterns: [], + rest: None, + }, + ), + ], + }, + ), + ], + rest: None, + }, + ), + guard: None, + body: [ + Assign( + StmtAssign { + range: 589..594, + targets: [ + Name( + ExprName { + range: 589..590, + id: "y", + ctx: Store, + }, + ), + ], + value: Constant( + ExprConstant { + range: 593..594, + value: Int( + 0, + ), + kind: None, + }, + ), + type_comment: None, + }, + ), + ], + }, + MatchCase { + range: 599..687, + pattern: MatchOr( + PatternMatchOr { + range: 604..672, + patterns: [ + MatchMapping( + PatternMatchMapping { + range: 604..626, + keys: [ + Constant( + ExprConstant { + range: 605..606, + value: Int( + 0, + ), + kind: None, + }, + ), + ], + patterns: [ + MatchOr( + PatternMatchOr { + range: 608..625, + patterns: [ + MatchSequence( + PatternMatchSequence { + range: 608..618, + patterns: [ + MatchValue( + PatternMatchValue { + range: 609..610, + value: Constant( + ExprConstant { + range: 609..610, + value: Int( + 1, + ), + kind: None, + }, + ), + }, + ), + MatchValue( + PatternMatchValue { + range: 612..613, + value: Constant( + ExprConstant { + range: 612..613, + value: Int( + 2, + ), + kind: None, + }, + ), + }, + ), + MatchMapping( + PatternMatchMapping { + range: 615..617, + keys: [], + patterns: [], + rest: None, + }, + ), + ], + }, + ), + MatchSingleton( + PatternMatchSingleton { + range: 621..625, + value: Bool( + true, + ), + }, + ), + ], + }, + ), + ], + rest: None, + }, + ), + MatchMapping( + PatternMatchMapping { + range: 629..638, + keys: [ + Constant( + ExprConstant { + range: 630..631, + value: Int( + 1, + ), + kind: None, + }, + ), + ], + patterns: [ + MatchSequence( + PatternMatchSequence { + range: 633..637, + patterns: [ + MatchSequence( + PatternMatchSequence { + range: 634..636, + patterns: [], + }, + ), + ], + }, + ), + ], + rest: None, + }, + ), + MatchMapping( + PatternMatchMapping { + range: 641..656, + keys: [ + Constant( + ExprConstant { + range: 642..643, + value: Int( + 0, + ), + kind: None, + }, + ), + ], + patterns: [ + MatchSequence( + PatternMatchSequence { + range: 645..655, + patterns: [ + MatchValue( + PatternMatchValue { + range: 646..647, + value: Constant( + ExprConstant { + range: 646..647, + value: Int( + 1, + ), + kind: None, + }, + ), + }, + ), + MatchValue( + PatternMatchValue { + range: 649..650, + value: Constant( + ExprConstant { + range: 649..650, + value: Int( + 2, + ), + kind: None, + }, + ), + }, + ), + MatchMapping( + PatternMatchMapping { + range: 652..654, + keys: [], + patterns: [], + rest: None, + }, + ), + ], + }, + ), + ], + rest: None, + }, + ), + MatchSequence( + PatternMatchSequence { + range: 659..661, + patterns: [], + }, + ), + MatchValue( + PatternMatchValue { + range: 664..667, + value: Constant( + ExprConstant { + range: 664..667, + value: Str( + "X", + ), + kind: None, + }, + ), + }, + ), + MatchMapping( + PatternMatchMapping { + range: 670..672, + keys: [], + patterns: [], + rest: None, + }, + ), + ], + }, + ), + guard: None, + body: [ + Assign( + StmtAssign { + range: 682..687, + targets: [ + Name( + ExprName { + range: 682..683, + id: "y", + ctx: Store, + }, + ), + ], + value: Constant( + ExprConstant { + range: 686..687, + value: Int( + 1, + ), + kind: None, + }, + ), + type_comment: None, + }, + ), + ], + }, + MatchCase { + range: 692..714, + pattern: MatchSequence( + PatternMatchSequence { + range: 697..699, + patterns: [], + }, + ), + guard: None, + body: [ + Assign( + StmtAssign { + range: 709..714, + targets: [ + Name( + ExprName { + range: 709..710, + id: "y", + ctx: Store, + }, + ), + ], + value: Constant( + ExprConstant { + range: 713..714, + value: Int( + 2, + ), + kind: None, + }, + ), + type_comment: None, + }, + ), + ], + }, + ], + }, + ), + Match( + StmtMatch { + range: 737..782, + subject: Name( + ExprName { + range: 743..744, + id: "x", + ctx: Load, + }, + ), + cases: [ + MatchCase { + range: 750..782, + pattern: MatchValue( + PatternMatchValue { + range: 755..767, + value: BinOp( + ExprBinOp { + range: 755..767, + left: Constant( + ExprConstant { + range: 755..759, + value: Float( + 0.25, + ), + kind: None, + }, + ), + op: Add, + right: Constant( + ExprConstant { + range: 762..767, + value: Complex { + real: 0.0, + imag: 1.75, + }, + kind: None, + }, + ), + }, + ), + }, + ), + guard: None, + body: [ + Assign( + StmtAssign { + range: 777..782, + targets: [ + Name( + ExprName { + range: 777..778, + id: "y", + ctx: Store, + }, + ), + ], + value: Constant( + ExprConstant { + range: 781..782, + value: Int( + 0, + ), + kind: None, + }, + ), + type_comment: None, + }, + ), + ], + }, + ], + }, + ), + Match( + StmtMatch { + range: 805..841, + subject: Name( + ExprName { + range: 811..812, + id: "x", + ctx: Load, + }, + ), + cases: [ + MatchCase { + range: 818..841, + pattern: MatchValue( + PatternMatchValue { + range: 823..826, + value: UnaryOp( + ExprUnaryOp { + range: 823..826, + op: USub, + operand: Constant( + ExprConstant { + range: 824..826, + value: Complex { + real: 0.0, + imag: 0.0, + }, + kind: None, + }, + ), + }, + ), + }, + ), + guard: None, + body: [ + Assign( + StmtAssign { + range: 836..841, + targets: [ + Name( + ExprName { + range: 836..837, + id: "y", + ctx: Store, + }, + ), + ], + value: Constant( + ExprConstant { + range: 840..841, + value: Int( + 0, + ), + kind: None, + }, + ), + type_comment: None, + }, + ), + ], + }, + ], + }, + ), + Match( + StmtMatch { + range: 864..913, + subject: Constant( + ExprConstant { + range: 870..871, + value: Int( + 4, + ), + kind: None, + }, + ), + cases: [ + MatchCase { + range: 877..913, + pattern: MatchOr( + PatternMatchOr { + range: 882..895, + patterns: [ + MatchValue( + PatternMatchValue { + range: 882..883, + value: Constant( + ExprConstant { + range: 882..883, + value: Int( + 0, + ), + kind: None, + }, + ), + }, + ), + MatchValue( + PatternMatchValue { + range: 886..887, + value: Constant( + ExprConstant { + range: 886..887, + value: Int( + 1, + ), + kind: None, + }, + ), + }, + ), + MatchValue( + PatternMatchValue { + range: 890..891, + value: Constant( + ExprConstant { + range: 890..891, + value: Int( + 2, + ), + kind: None, + }, + ), + }, + ), + MatchValue( + PatternMatchValue { + range: 894..895, + value: Constant( + ExprConstant { + range: 894..895, + value: Int( + 3, + ), + kind: None, + }, + ), + }, + ), + ], + }, + ), + guard: None, + body: [ + Assign( + StmtAssign { + range: 905..913, + targets: [ + Name( + ExprName { + range: 905..906, + id: "x", + ctx: Store, + }, + ), + ], + value: Constant( + ExprConstant { + range: 909..913, + value: Bool( + true, + ), + kind: None, + }, + ), + type_comment: None, + }, + ), + ], + }, + ], + }, + ), + Match( + StmtMatch { + range: 936..975, + subject: Name( + ExprName { + range: 942..943, + id: "x", + ctx: Load, + }, + ), + cases: [ + MatchCase { + range: 949..975, + pattern: MatchValue( + PatternMatchValue { + range: 954..955, + value: Constant( + ExprConstant { + range: 954..955, + value: Int( + 0, + ), + kind: None, + }, + ), + }, + ), + guard: Some( + Name( + ExprName { + range: 959..960, + id: "x", + ctx: Load, + }, + ), + ), + body: [ + Assign( + StmtAssign { + range: 970..975, + targets: [ + Name( + ExprName { + range: 970..971, + id: "y", + ctx: Store, + }, + ), + ], + value: Constant( + ExprConstant { + range: 974..975, + value: Int( + 0, + ), + kind: None, + }, + ), + type_comment: None, + }, + ), + ], + }, + ], + }, + ), + Match( + StmtMatch { + range: 998..1098, + subject: Name( + ExprName { + range: 1004..1005, + id: "x", + ctx: Load, + }, + ), + cases: [ + MatchCase { + range: 1011..1037, + pattern: MatchMapping( + PatternMatchMapping { + range: 1016..1022, + keys: [ + Constant( + ExprConstant { + range: 1017..1018, + value: Int( + 1, + ), + kind: None, + }, + ), + ], + patterns: [ + MatchValue( + PatternMatchValue { + range: 1020..1021, + value: Constant( + ExprConstant { + range: 1020..1021, + value: Int( + 0, + ), + kind: None, + }, + ), + }, + ), + ], + rest: None, + }, + ), + guard: None, + body: [ + Assign( + StmtAssign { + range: 1032..1037, + targets: [ + Name( + ExprName { + range: 1032..1033, + id: "y", + ctx: Store, + }, + ), + ], + value: Constant( + ExprConstant { + range: 1036..1037, + value: Int( + 0, + ), + kind: None, + }, + ), + type_comment: None, + }, + ), + ], + }, + MatchCase { + range: 1042..1068, + pattern: MatchMapping( + PatternMatchMapping { + range: 1047..1053, + keys: [ + Constant( + ExprConstant { + range: 1048..1049, + value: Int( + 0, + ), + kind: None, + }, + ), + ], + patterns: [ + MatchValue( + PatternMatchValue { + range: 1051..1052, + value: Constant( + ExprConstant { + range: 1051..1052, + value: Int( + 0, + ), + kind: None, + }, + ), + }, + ), + ], + rest: None, + }, + ), + guard: None, + body: [ + Assign( + StmtAssign { + range: 1063..1068, + targets: [ + Name( + ExprName { + range: 1063..1064, + id: "y", + ctx: Store, + }, + ), + ], + value: Constant( + ExprConstant { + range: 1067..1068, + value: Int( + 1, + ), + kind: None, + }, + ), + type_comment: None, + }, + ), + ], + }, + MatchCase { + range: 1073..1098, + pattern: MatchMapping( + PatternMatchMapping { + range: 1078..1083, + keys: [], + patterns: [], + rest: Some( + Identifier { + id: "z", + range: 1081..1082, + }, + ), + }, + ), + guard: None, + body: [ + Assign( + StmtAssign { + range: 1093..1098, + targets: [ + Name( + ExprName { + range: 1093..1094, + id: "y", + ctx: Store, + }, + ), + ], + value: Constant( + ExprConstant { + range: 1097..1098, + value: Int( + 2, + ), + kind: None, + }, + ), + type_comment: None, + }, + ), + ], + }, + ], + }, + ), + Match( + StmtMatch { + range: 1121..1162, + subject: Call( + ExprCall { + range: 1127..1132, + func: Name( + ExprName { + range: 1127..1130, + id: "Seq", + ctx: Load, + }, + ), + args: [], + keywords: [], + }, + ), + cases: [ + MatchCase { + range: 1138..1162, + pattern: MatchSequence( + PatternMatchSequence { + range: 1143..1147, + patterns: [ + MatchStar( + PatternMatchStar { + range: 1144..1146, + name: None, + }, + ), + ], + }, + ), + guard: None, + body: [ + Assign( + StmtAssign { + range: 1157..1162, + targets: [ + Name( + ExprName { + range: 1157..1158, + id: "y", + ctx: Store, + }, + ), + ], + value: Constant( + ExprConstant { + range: 1161..1162, + value: Int( + 0, + ), + kind: None, + }, + ), + type_comment: None, + }, + ), + ], + }, + ], + }, + ), + Match( + StmtMatch { + range: 1185..1245, + subject: Name( + ExprName { + range: 1191..1192, + id: "x", + ctx: Load, + }, + ), + cases: [ + MatchCase { + range: 1198..1219, + pattern: MatchValue( + PatternMatchValue { + range: 1203..1204, + value: Constant( + ExprConstant { + range: 1203..1204, + value: Int( + 1, + ), + kind: None, + }, + ), + }, + ), + guard: None, + body: [ + Assign( + StmtAssign { + range: 1214..1219, + targets: [ + Name( + ExprName { + range: 1214..1215, + id: "y", + ctx: Store, + }, + ), + ], + value: Constant( + ExprConstant { + range: 1218..1219, + value: Int( + 0, + ), + kind: None, + }, + ), + type_comment: None, + }, + ), + ], + }, + MatchCase { + range: 1224..1245, + pattern: MatchValue( + PatternMatchValue { + range: 1229..1230, + value: Constant( + ExprConstant { + range: 1229..1230, + value: Int( + 1, + ), + kind: None, + }, + ), + }, + ), + guard: None, + body: [ + Assign( + StmtAssign { + range: 1240..1245, + targets: [ + Name( + ExprName { + range: 1240..1241, + id: "y", + ctx: Store, + }, + ), + ], + value: Constant( + ExprConstant { + range: 1244..1245, + value: Int( + 1, + ), + kind: None, + }, + ), + type_comment: None, + }, + ), + ], + }, + ], + }, + ), + Match( + StmtMatch { + range: 1268..1315, + subject: Name( + ExprName { + range: 1274..1275, + id: "x", + ctx: Load, + }, + ), + cases: [ + MatchCase { + range: 1281..1315, + pattern: MatchMapping( + PatternMatchMapping { + range: 1286..1298, + keys: [ + Constant( + ExprConstant { + range: 1287..1292, + value: Str( + "foo", + ), + kind: None, + }, + ), + ], + patterns: [ + MatchAs( + PatternMatchAs { + range: 1294..1297, + pattern: None, + name: Some( + Identifier { + id: "bar", + range: 1294..1297, + }, + ), + }, + ), + ], + rest: None, + }, + ), + guard: None, + body: [ + Assign( + StmtAssign { + range: 1308..1315, + targets: [ + Name( + ExprName { + range: 1308..1309, + id: "y", + ctx: Store, + }, + ), + ], + value: Name( + ExprName { + range: 1312..1315, + id: "bar", + ctx: Load, + }, + ), + type_comment: None, + }, + ), + ], + }, + ], + }, + ), + Match( + StmtMatch { + range: 1338..1392, + subject: Tuple( + ExprTuple { + range: 1344..1353, + elts: [ + Constant( + ExprConstant { + range: 1345..1346, + value: Int( + 0, + ), + kind: None, + }, + ), + Constant( + ExprConstant { + range: 1348..1349, + value: Int( + 1, + ), + kind: None, + }, + ), + Constant( + ExprConstant { + range: 1351..1352, + value: Int( + 2, + ), + kind: None, + }, + ), + ], + ctx: Load, + }, + ), + cases: [ + MatchCase { + range: 1359..1392, + pattern: MatchSequence( + PatternMatchSequence { + range: 1364..1377, + patterns: [ + MatchValue( + PatternMatchValue { + range: 1365..1366, + value: Constant( + ExprConstant { + range: 1365..1366, + value: Int( + 0, + ), + kind: None, + }, + ), + }, + ), + MatchValue( + PatternMatchValue { + range: 1368..1369, + value: Constant( + ExprConstant { + range: 1368..1369, + value: Int( + 1, + ), + kind: None, + }, + ), + }, + ), + MatchStar( + PatternMatchStar { + range: 1371..1373, + name: Some( + Identifier { + id: "x", + range: 1372..1373, + }, + ), + }, + ), + MatchValue( + PatternMatchValue { + range: 1375..1376, + value: Constant( + ExprConstant { + range: 1375..1376, + value: Int( + 2, + ), + kind: None, + }, + ), + }, + ), + ], + }, + ), + guard: None, + body: [ + Assign( + StmtAssign { + range: 1387..1392, + targets: [ + Name( + ExprName { + range: 1387..1388, + id: "y", + ctx: Store, + }, + ), + ], + value: Constant( + ExprConstant { + range: 1391..1392, + value: Int( + 0, + ), + kind: None, + }, + ), + type_comment: None, + }, + ), + ], + }, + ], + }, + ), + Match( + StmtMatch { + range: 1415..1529, + subject: Name( + ExprName { + range: 1421..1422, + id: "x", + ctx: Load, + }, + ), + cases: [ + MatchCase { + range: 1428..1451, + pattern: MatchSequence( + PatternMatchSequence { + range: 1433..1436, + patterns: [ + MatchValue( + PatternMatchValue { + range: 1434..1435, + value: Constant( + ExprConstant { + range: 1434..1435, + value: Int( + 0, + ), + kind: None, + }, + ), + }, + ), + ], + }, + ), + guard: None, + body: [ + Assign( + StmtAssign { + range: 1446..1451, + targets: [ + Name( + ExprName { + range: 1446..1447, + id: "y", + ctx: Store, + }, + ), + ], + value: Constant( + ExprConstant { + range: 1450..1451, + value: Int( + 0, + ), + kind: None, + }, + ), + type_comment: None, + }, + ), + ], + }, + MatchCase { + range: 1456..1498, + pattern: MatchSequence( + PatternMatchSequence { + range: 1461..1467, + patterns: [ + MatchValue( + PatternMatchValue { + range: 1462..1463, + value: Constant( + ExprConstant { + range: 1462..1463, + value: Int( + 1, + ), + kind: None, + }, + ), + }, + ), + MatchValue( + PatternMatchValue { + range: 1465..1466, + value: Constant( + ExprConstant { + range: 1465..1466, + value: Int( + 0, + ), + kind: None, + }, + ), + }, + ), + ], + }, + ), + guard: Some( + NamedExpr( + ExprNamedExpr { + range: 1472..1482, + target: Name( + ExprName { + range: 1472..1473, + id: "x", + ctx: Store, + }, + ), + value: Subscript( + ExprSubscript { + range: 1477..1482, + value: Name( + ExprName { + range: 1477..1478, + id: "x", + ctx: Load, + }, + ), + slice: Slice( + ExprSlice { + range: 1479..1481, + lower: None, + upper: Some( + Constant( + ExprConstant { + range: 1480..1481, + value: Int( + 0, + ), + kind: None, + }, + ), + ), + step: None, + }, + ), + ctx: Load, + }, + ), + }, + ), + ), + body: [ + Assign( + StmtAssign { + range: 1493..1498, + targets: [ + Name( + ExprName { + range: 1493..1494, + id: "y", + ctx: Store, + }, + ), + ], + value: Constant( + ExprConstant { + range: 1497..1498, + value: Int( + 1, + ), + kind: None, + }, + ), + type_comment: None, + }, + ), + ], + }, + MatchCase { + range: 1503..1529, + pattern: MatchSequence( + PatternMatchSequence { + range: 1508..1514, + patterns: [ + MatchValue( + PatternMatchValue { + range: 1509..1510, + value: Constant( + ExprConstant { + range: 1509..1510, + value: Int( + 1, + ), + kind: None, + }, + ), + }, + ), + MatchValue( + PatternMatchValue { + range: 1512..1513, + value: Constant( + ExprConstant { + range: 1512..1513, + value: Int( + 0, + ), + kind: None, + }, + ), + }, + ), + ], + }, + ), + guard: None, + body: [ + Assign( + StmtAssign { + range: 1524..1529, + targets: [ + Name( + ExprName { + range: 1524..1525, + id: "y", + ctx: Store, + }, + ), + ], + value: Constant( + ExprConstant { + range: 1528..1529, + value: Int( + 2, + ), + kind: None, + }, + ), + type_comment: None, + }, + ), + ], + }, + ], + }, + ), + Match( + StmtMatch { + range: 1552..1595, + subject: Name( + ExprName { + range: 1558..1559, + id: "w", + ctx: Load, + }, + ), + cases: [ + MatchCase { + range: 1565..1595, + pattern: MatchSequence( + PatternMatchSequence { + range: 1570..1580, + patterns: [ + MatchAs( + PatternMatchAs { + range: 1571..1572, + pattern: None, + name: Some( + Identifier { + id: "x", + range: 1571..1572, + }, + ), + }, + ), + MatchAs( + PatternMatchAs { + range: 1574..1575, + pattern: None, + name: Some( + Identifier { + id: "y", + range: 1574..1575, + }, + ), + }, + ), + MatchStar( + PatternMatchStar { + range: 1577..1579, + name: None, + }, + ), + ], + }, + ), + guard: None, + body: [ + Assign( + StmtAssign { + range: 1590..1595, + targets: [ + Name( + ExprName { + range: 1590..1591, + id: "z", + ctx: Store, + }, + ), + ], + value: Constant( + ExprConstant { + range: 1594..1595, + value: Int( + 0, + ), + kind: None, + }, + ), + type_comment: None, + }, + ), + ], + }, + ], + }, + ), + Match( + StmtMatch { + range: 1618..1664, + subject: Name( + ExprName { + range: 1624..1625, + id: "x", + ctx: Load, + }, + ), + cases: [ + MatchCase { + range: 1631..1664, + pattern: MatchValue( + PatternMatchValue { + range: 1636..1649, + value: BinOp( + ExprBinOp { + range: 1636..1649, + left: UnaryOp( + ExprUnaryOp { + range: 1636..1641, + op: USub, + operand: Constant( + ExprConstant { + range: 1637..1641, + value: Float( + 0.25, + ), + kind: None, + }, + ), + }, + ), + op: Sub, + right: Constant( + ExprConstant { + range: 1644..1649, + value: Complex { + real: 0.0, + imag: 1.75, + }, + kind: None, + }, + ), + }, + ), + }, + ), + guard: None, + body: [ + Assign( + StmtAssign { + range: 1659..1664, + targets: [ + Name( + ExprName { + range: 1659..1660, + id: "y", + ctx: Store, + }, + ), + ], + value: Constant( + ExprConstant { + range: 1663..1664, + value: Int( + 0, + ), + kind: None, + }, + ), + type_comment: None, + }, + ), + ], + }, + ], + }, + ), + Match( + StmtMatch { + range: 1687..1726, + subject: Tuple( + ExprTuple { + range: 1693..1697, + elts: [ + Name( + ExprName { + range: 1694..1695, + id: "x", + ctx: Load, + }, + ), + ], + ctx: Load, + }, + ), + cases: [ + MatchCase { + range: 1703..1726, + pattern: MatchSequence( + PatternMatchSequence { + range: 1708..1711, + patterns: [ + MatchAs( + PatternMatchAs { + range: 1709..1710, + pattern: None, + name: Some( + Identifier { + id: "y", + range: 1709..1710, + }, + ), + }, + ), + ], + }, + ), + guard: None, + body: [ + Assign( + StmtAssign { + range: 1721..1726, + targets: [ + Name( + ExprName { + range: 1721..1722, + id: "z", + ctx: Store, + }, + ), + ], + value: Constant( + ExprConstant { + range: 1725..1726, + value: Int( + 0, + ), + kind: None, + }, + ), + type_comment: None, + }, + ), + ], + }, + ], + }, + ), + Match( + StmtMatch { + range: 1749..1789, + subject: Name( + ExprName { + range: 1755..1756, + id: "x", + ctx: Load, + }, + ), + cases: [ + MatchCase { + range: 1762..1789, + pattern: MatchValue( + PatternMatchValue { + range: 1767..1774, + value: Attribute( + ExprAttribute { + range: 1767..1774, + value: Attribute( + ExprAttribute { + range: 1767..1772, + value: Attribute( + ExprAttribute { + range: 1767..1770, + value: Name( + ExprName { + range: 1767..1768, + id: "A", + ctx: Load, + }, + ), + attr: Identifier { + id: "B", + range: 1769..1770, + }, + ctx: Load, + }, + ), + attr: Identifier { + id: "C", + range: 1771..1772, + }, + ctx: Load, + }, + ), + attr: Identifier { + id: "D", + range: 1773..1774, + }, + ctx: Load, + }, + ), + }, + ), + guard: None, + body: [ + Assign( + StmtAssign { + range: 1784..1789, + targets: [ + Name( + ExprName { + range: 1784..1785, + id: "y", + ctx: Store, + }, + ), + ], + value: Constant( + ExprConstant { + range: 1788..1789, + value: Int( + 0, + ), + kind: None, + }, + ), + type_comment: None, + }, + ), + ], + }, + ], + }, + ), + Match( + StmtMatch { + range: 1812..1849, + subject: Name( + ExprName { + range: 1818..1819, + id: "x", + ctx: Load, + }, + ), + cases: [ + MatchCase { + range: 1825..1849, + pattern: MatchSingleton( + PatternMatchSingleton { + range: 1830..1834, + value: None, + }, + ), + guard: None, + body: [ + Assign( + StmtAssign { + range: 1844..1849, + targets: [ + Name( + ExprName { + range: 1844..1845, + id: "y", + ctx: Store, + }, + ), + ], + value: Constant( + ExprConstant { + range: 1848..1849, + value: Int( + 0, + ), + kind: None, + }, + ), + type_comment: None, + }, + ), + ], + }, + ], + }, + ), + Match( + StmtMatch { + range: 1872..1906, + subject: Name( + ExprName { + range: 1878..1879, + id: "x", + ctx: Load, + }, + ), + cases: [ + MatchCase { + range: 1885..1906, + pattern: MatchValue( + PatternMatchValue { + range: 1890..1891, + value: Constant( + ExprConstant { + range: 1890..1891, + value: Int( + 0, + ), + kind: None, + }, + ), + }, + ), + guard: None, + body: [ + Assign( + StmtAssign { + range: 1901..1906, + targets: [ + Name( + ExprName { + range: 1901..1902, + id: "y", + ctx: Store, + }, + ), + ], + value: Constant( + ExprConstant { + range: 1905..1906, + value: Int( + 0, + ), + kind: None, + }, + ), + type_comment: None, + }, + ), + ], + }, + ], + }, + ), + Match( + StmtMatch { + range: 1929..1967, + subject: Name( + ExprName { + range: 1935..1936, + id: "x", + ctx: Load, + }, + ), + cases: [ + MatchCase { + range: 1942..1967, + pattern: MatchSingleton( + PatternMatchSingleton { + range: 1947..1952, + value: Bool( + false, + ), + }, + ), + guard: None, + body: [ + Assign( + StmtAssign { + range: 1962..1967, + targets: [ + Name( + ExprName { + range: 1962..1963, + id: "y", + ctx: Store, + }, + ), + ], + value: Constant( + ExprConstant { + range: 1966..1967, + value: Int( + 0, + ), + kind: None, + }, + ), + type_comment: None, + }, + ), + ], + }, + ], + }, + ), + Match( + StmtMatch { + range: 1990..2081, + subject: Name( + ExprName { + range: 1996..1997, + id: "x", + ctx: Load, + }, + ), + cases: [ + MatchCase { + range: 2003..2025, + pattern: MatchSequence( + PatternMatchSequence { + range: 2008..2010, + patterns: [], + }, + ), + guard: None, + body: [ + Assign( + StmtAssign { + range: 2020..2025, + targets: [ + Name( + ExprName { + range: 2020..2021, + id: "y", + ctx: Store, + }, + ), + ], + value: Constant( + ExprConstant { + range: 2024..2025, + value: Int( + 0, + ), + kind: None, + }, + ), + type_comment: None, + }, + ), + ], + }, + MatchCase { + range: 2030..2054, + pattern: MatchSequence( + PatternMatchSequence { + range: 2035..2039, + patterns: [ + MatchValue( + PatternMatchValue { + range: 2036..2038, + value: Constant( + ExprConstant { + range: 2036..2038, + value: Str( + "", + ), + kind: None, + }, + ), + }, + ), + ], + }, + ), + guard: None, + body: [ + Assign( + StmtAssign { + range: 2049..2054, + targets: [ + Name( + ExprName { + range: 2049..2050, + id: "y", + ctx: Store, + }, + ), + ], + value: Constant( + ExprConstant { + range: 2053..2054, + value: Int( + 1, + ), + kind: None, + }, + ), + type_comment: None, + }, + ), + ], + }, + MatchCase { + range: 2059..2081, + pattern: MatchValue( + PatternMatchValue { + range: 2064..2066, + value: Constant( + ExprConstant { + range: 2064..2066, + value: Str( + "", + ), + kind: None, + }, + ), + }, + ), + guard: None, + body: [ + Assign( + StmtAssign { + range: 2076..2081, + targets: [ + Name( + ExprName { + range: 2076..2077, + id: "y", + ctx: Store, + }, + ), + ], + value: Constant( + ExprConstant { + range: 2080..2081, + value: Int( + 2, + ), + kind: None, + }, + ), + type_comment: None, + }, + ), + ], + }, + ], + }, + ), + Match( + StmtMatch { + range: 2104..2138, + subject: Name( + ExprName { + range: 2110..2111, + id: "x", + ctx: Load, + }, + ), + cases: [ + MatchCase { + range: 2117..2138, + pattern: MatchAs( + PatternMatchAs { + range: 2122..2123, + pattern: None, + name: Some( + Identifier { + id: "z", + range: 2122..2123, + }, + ), + }, + ), + guard: None, + body: [ + Assign( + StmtAssign { + range: 2133..2138, + targets: [ + Name( + ExprName { + range: 2133..2134, + id: "y", + ctx: Store, + }, + ), + ], + value: Constant( + ExprConstant { + range: 2137..2138, + value: Int( + 0, + ), + kind: None, + }, + ), + type_comment: None, + }, + ), + ], + }, + ], + }, + ), + Match( + StmtMatch { + range: 2161..2207, + subject: Name( + ExprName { + range: 2167..2168, + id: "w", + ctx: Load, + }, + ), + cases: [ + MatchCase { + range: 2174..2207, + pattern: MatchSequence( + PatternMatchSequence { + range: 2179..2192, + patterns: [ + MatchAs( + PatternMatchAs { + range: 2180..2181, + pattern: None, + name: Some( + Identifier { + id: "x", + range: 2180..2181, + }, + ), + }, + ), + MatchAs( + PatternMatchAs { + range: 2183..2184, + pattern: None, + name: Some( + Identifier { + id: "y", + range: 2183..2184, + }, + ), + }, + ), + MatchStar( + PatternMatchStar { + range: 2186..2191, + name: Some( + Identifier { + id: "rest", + range: 2187..2191, + }, + ), + }, + ), + ], + }, + ), + guard: None, + body: [ + Assign( + StmtAssign { + range: 2202..2207, + targets: [ + Name( + ExprName { + range: 2202..2203, + id: "z", + ctx: Store, + }, + ), + ], + value: Constant( + ExprConstant { + range: 2206..2207, + value: Int( + 0, + ), + kind: None, + }, + ), + type_comment: None, + }, + ), + ], + }, + ], + }, + ), + Match( + StmtMatch { + range: 2230..2307, + subject: Name( + ExprName { + range: 2236..2237, + id: "x", + ctx: Load, + }, + ), + cases: [ + MatchCase { + range: 2243..2307, + pattern: MatchOr( + PatternMatchOr { + range: 2248..2278, + patterns: [ + MatchAs( + PatternMatchAs { + range: 2249..2255, + pattern: Some( + MatchValue( + PatternMatchValue { + range: 2249..2250, + value: Constant( + ExprConstant { + range: 2249..2250, + value: Int( + 0, + ), + kind: None, + }, + ), + }, + ), + ), + name: Some( + Identifier { + id: "z", + range: 2254..2255, + }, + ), + }, + ), + MatchAs( + PatternMatchAs { + range: 2260..2266, + pattern: Some( + MatchValue( + PatternMatchValue { + range: 2260..2261, + value: Constant( + ExprConstant { + range: 2260..2261, + value: Int( + 1, + ), + kind: None, + }, + ), + }, + ), + ), + name: Some( + Identifier { + id: "z", + range: 2265..2266, + }, + ), + }, + ), + MatchAs( + PatternMatchAs { + range: 2271..2277, + pattern: Some( + MatchValue( + PatternMatchValue { + range: 2271..2272, + value: Constant( + ExprConstant { + range: 2271..2272, + value: Int( + 2, + ), + kind: None, + }, + ), + }, + ), + ), + name: Some( + Identifier { + id: "z", + range: 2276..2277, + }, + ), + }, + ), + ], + }, + ), + guard: Some( + Compare( + ExprCompare { + range: 2282..2292, + left: Name( + ExprName { + range: 2282..2283, + id: "z", + ctx: Load, + }, + ), + ops: [ + Eq, + ], + comparators: [ + BinOp( + ExprBinOp { + range: 2287..2292, + left: Name( + ExprName { + range: 2287..2288, + id: "x", + ctx: Load, + }, + ), + op: Mod, + right: Constant( + ExprConstant { + range: 2291..2292, + value: Int( + 2, + ), + kind: None, + }, + ), + }, + ), + ], + }, + ), + ), + body: [ + Assign( + StmtAssign { + range: 2302..2307, + targets: [ + Name( + ExprName { + range: 2302..2303, + id: "y", + ctx: Store, + }, + ), + ], + value: Constant( + ExprConstant { + range: 2306..2307, + value: Int( + 0, + ), + kind: None, + }, + ), + type_comment: None, + }, + ), + ], + }, + ], + }, + ), + Match( + StmtMatch { + range: 2330..2499, + subject: Name( + ExprName { + range: 2336..2337, + id: "x", + ctx: Load, + }, + ), + cases: [ + MatchCase { + range: 2343..2378, + pattern: MatchMapping( + PatternMatchMapping { + range: 2348..2363, + keys: [ + Constant( + ExprConstant { + range: 2349..2350, + value: Int( + 0, + ), + kind: None, + }, + ), + ], + patterns: [ + MatchSequence( + PatternMatchSequence { + range: 2352..2362, + patterns: [ + MatchValue( + PatternMatchValue { + range: 2353..2354, + value: Constant( + ExprConstant { + range: 2353..2354, + value: Int( + 1, + ), + kind: None, + }, + ), + }, + ), + MatchValue( + PatternMatchValue { + range: 2356..2357, + value: Constant( + ExprConstant { + range: 2356..2357, + value: Int( + 2, + ), + kind: None, + }, + ), + }, + ), + MatchMapping( + PatternMatchMapping { + range: 2359..2361, + keys: [], + patterns: [], + rest: None, + }, + ), + ], + }, + ), + ], + rest: None, + }, + ), + guard: None, + body: [ + Assign( + StmtAssign { + range: 2373..2378, + targets: [ + Name( + ExprName { + range: 2373..2374, + id: "y", + ctx: Store, + }, + ), + ], + value: Constant( + ExprConstant { + range: 2377..2378, + value: Int( + 0, + ), + kind: None, + }, + ), + type_comment: None, + }, + ), + ], + }, + MatchCase { + range: 2383..2472, + pattern: MatchOr( + PatternMatchOr { + range: 2388..2457, + patterns: [ + MatchMapping( + PatternMatchMapping { + range: 2388..2411, + keys: [ + Constant( + ExprConstant { + range: 2389..2390, + value: Int( + 0, + ), + kind: None, + }, + ), + ], + patterns: [ + MatchOr( + PatternMatchOr { + range: 2392..2410, + patterns: [ + MatchSequence( + PatternMatchSequence { + range: 2392..2402, + patterns: [ + MatchValue( + PatternMatchValue { + range: 2393..2394, + value: Constant( + ExprConstant { + range: 2393..2394, + value: Int( + 1, + ), + kind: None, + }, + ), + }, + ), + MatchValue( + PatternMatchValue { + range: 2396..2397, + value: Constant( + ExprConstant { + range: 2396..2397, + value: Int( + 2, + ), + kind: None, + }, + ), + }, + ), + MatchMapping( + PatternMatchMapping { + range: 2399..2401, + keys: [], + patterns: [], + rest: None, + }, + ), + ], + }, + ), + MatchSingleton( + PatternMatchSingleton { + range: 2405..2410, + value: Bool( + false, + ), + }, + ), + ], + }, + ), + ], + rest: None, + }, + ), + MatchMapping( + PatternMatchMapping { + range: 2414..2423, + keys: [ + Constant( + ExprConstant { + range: 2415..2416, + value: Int( + 1, + ), + kind: None, + }, + ), + ], + patterns: [ + MatchSequence( + PatternMatchSequence { + range: 2418..2422, + patterns: [ + MatchSequence( + PatternMatchSequence { + range: 2419..2421, + patterns: [], + }, + ), + ], + }, + ), + ], + rest: None, + }, + ), + MatchMapping( + PatternMatchMapping { + range: 2426..2441, + keys: [ + Constant( + ExprConstant { + range: 2427..2428, + value: Int( + 0, + ), + kind: None, + }, + ), + ], + patterns: [ + MatchSequence( + PatternMatchSequence { + range: 2430..2440, + patterns: [ + MatchValue( + PatternMatchValue { + range: 2431..2432, + value: Constant( + ExprConstant { + range: 2431..2432, + value: Int( + 1, + ), + kind: None, + }, + ), + }, + ), + MatchValue( + PatternMatchValue { + range: 2434..2435, + value: Constant( + ExprConstant { + range: 2434..2435, + value: Int( + 2, + ), + kind: None, + }, + ), + }, + ), + MatchMapping( + PatternMatchMapping { + range: 2437..2439, + keys: [], + patterns: [], + rest: None, + }, + ), + ], + }, + ), + ], + rest: None, + }, + ), + MatchSequence( + PatternMatchSequence { + range: 2444..2446, + patterns: [], + }, + ), + MatchValue( + PatternMatchValue { + range: 2449..2452, + value: Constant( + ExprConstant { + range: 2449..2452, + value: Str( + "X", + ), + kind: None, + }, + ), + }, + ), + MatchMapping( + PatternMatchMapping { + range: 2455..2457, + keys: [], + patterns: [], + rest: None, + }, + ), + ], + }, + ), + guard: None, + body: [ + Assign( + StmtAssign { + range: 2467..2472, + targets: [ + Name( + ExprName { + range: 2467..2468, + id: "y", + ctx: Store, + }, + ), + ], + value: Constant( + ExprConstant { + range: 2471..2472, + value: Int( + 1, + ), + kind: None, + }, + ), + type_comment: None, + }, + ), + ], + }, + MatchCase { + range: 2477..2499, + pattern: MatchSequence( + PatternMatchSequence { + range: 2482..2484, + patterns: [], + }, + ), + guard: None, + body: [ + Assign( + StmtAssign { + range: 2494..2499, + targets: [ + Name( + ExprName { + range: 2494..2495, + id: "y", + ctx: Store, + }, + ), + ], + value: Constant( + ExprConstant { + range: 2498..2499, + value: Int( + 2, + ), + kind: None, + }, + ), + type_comment: None, + }, + ), + ], + }, + ], + }, + ), + Match( + StmtMatch { + range: 2522..2568, + subject: Tuple( + ExprTuple { + range: 2528..2537, + elts: [ + Constant( + ExprConstant { + range: 2529..2530, + value: Int( + 0, + ), + kind: None, + }, + ), + Constant( + ExprConstant { + range: 2532..2533, + value: Int( + 1, + ), + kind: None, + }, + ), + Constant( + ExprConstant { + range: 2535..2536, + value: Int( + 2, + ), + kind: None, + }, + ), + ], + ctx: Load, + }, + ), + cases: [ + MatchCase { + range: 2543..2568, + pattern: MatchSequence( + PatternMatchSequence { + range: 2548..2553, + patterns: [ + MatchValue( + PatternMatchValue { + range: 2548..2549, + value: Constant( + ExprConstant { + range: 2548..2549, + value: Int( + 0, + ), + kind: None, + }, + ), + }, + ), + MatchStar( + PatternMatchStar { + range: 2551..2553, + name: Some( + Identifier { + id: "x", + range: 2552..2553, + }, + ), + }, + ), + ], + }, + ), + guard: None, + body: [ + Assign( + StmtAssign { + range: 2563..2568, + targets: [ + Name( + ExprName { + range: 2563..2564, + id: "y", + ctx: Store, + }, + ), + ], + value: Constant( + ExprConstant { + range: 2567..2568, + value: Int( + 0, + ), + kind: None, + }, + ), + type_comment: None, + }, + ), + ], + }, + ], + }, + ), + Match( + StmtMatch { + range: 2591..2638, + subject: Tuple( + ExprTuple { + range: 2597..2606, + elts: [ + Constant( + ExprConstant { + range: 2598..2599, + value: Int( + 0, + ), + kind: None, + }, + ), + Constant( + ExprConstant { + range: 2601..2602, + value: Int( + 1, + ), + kind: None, + }, + ), + Constant( + ExprConstant { + range: 2604..2605, + value: Int( + 2, + ), + kind: None, + }, + ), + ], + ctx: Load, + }, + ), + cases: [ + MatchCase { + range: 2612..2638, + pattern: MatchSequence( + PatternMatchSequence { + range: 2617..2623, + patterns: [ + MatchStar( + PatternMatchStar { + range: 2617..2619, + name: Some( + Identifier { + id: "x", + range: 2618..2619, + }, + ), + }, + ), + MatchValue( + PatternMatchValue { + range: 2621..2622, + value: Constant( + ExprConstant { + range: 2621..2622, + value: Int( + 2, + ), + kind: None, + }, + ), + }, + ), + ], + }, + ), + guard: None, + body: [ + Assign( + StmtAssign { + range: 2633..2638, + targets: [ + Name( + ExprName { + range: 2633..2634, + id: "y", + ctx: Store, + }, + ), + ], + value: Constant( + ExprConstant { + range: 2637..2638, + value: Int( + 0, + ), + kind: None, + }, + ), + type_comment: None, + }, + ), + ], + }, + ], + }, + ), + Match( + StmtMatch { + range: 2661..2697, + subject: Name( + ExprName { + range: 2667..2668, + id: "x", + ctx: Load, + }, + ), + cases: [ + MatchCase { + range: 2675..2697, + pattern: MatchSequence( + PatternMatchSequence { + range: 2680..2682, + patterns: [ + MatchAs( + PatternMatchAs { + range: 2680..2681, + pattern: None, + name: Some( + Identifier { + id: "y", + range: 2680..2681, + }, + ), + }, + ), + ], + }, + ), + guard: None, + body: [ + Assign( + StmtAssign { + range: 2692..2697, + targets: [ + Name( + ExprName { + range: 2692..2693, + id: "z", + ctx: Store, + }, + ), + ], + value: Constant( + ExprConstant { + range: 2696..2697, + value: Int( + 0, + ), + kind: None, + }, + ), + type_comment: None, + }, + ), + ], + }, + ], + }, + ), + Match( + StmtMatch { + range: 2720..2760, + subject: Tuple( + ExprTuple { + range: 2720..2760, + elts: [ + Name( + ExprName { + range: 2726..2727, + id: "w", + ctx: Load, + }, + ), + Name( + ExprName { + range: 2729..2730, + id: "x", + ctx: Load, + }, + ), + ], + ctx: Load, + }, + ), + cases: [ + MatchCase { + range: 2736..2760, + pattern: MatchSequence( + PatternMatchSequence { + range: 2741..2745, + patterns: [ + MatchAs( + PatternMatchAs { + range: 2741..2742, + pattern: None, + name: Some( + Identifier { + id: "y", + range: 2741..2742, + }, + ), + }, + ), + MatchAs( + PatternMatchAs { + range: 2744..2745, + pattern: None, + name: Some( + Identifier { + id: "z", + range: 2744..2745, + }, + ), + }, + ), + ], + }, + ), + guard: None, + body: [ + Assign( + StmtAssign { + range: 2755..2760, + targets: [ + Name( + ExprName { + range: 2755..2756, + id: "v", + ctx: Store, + }, + ), + ], + value: Constant( + ExprConstant { + range: 2759..2760, + value: Int( + 0, + ), + kind: None, + }, + ), + type_comment: None, + }, + ), + ], + }, + ], + }, + ), + Match( + StmtMatch { + range: 2783..2829, + subject: NamedExpr( + ExprNamedExpr { + range: 2789..2795, + target: Name( + ExprName { + range: 2789..2790, + id: "w", + ctx: Store, + }, + ), + value: Name( + ExprName { + range: 2794..2795, + id: "x", + ctx: Load, + }, + ), + }, + ), + cases: [ + MatchCase { + range: 2802..2829, + pattern: MatchSequence( + PatternMatchSequence { + range: 2807..2814, + patterns: [ + MatchAs( + PatternMatchAs { + range: 2807..2813, + pattern: Some( + MatchAs( + PatternMatchAs { + range: 2807..2808, + pattern: None, + name: Some( + Identifier { + id: "y", + range: 2807..2808, + }, + ), + }, + ), + ), + name: Some( + Identifier { + id: "v", + range: 2812..2813, + }, + ), + }, + ), + ], + }, + ), + guard: None, + body: [ + Assign( + StmtAssign { + range: 2824..2829, + targets: [ + Name( + ExprName { + range: 2824..2825, + id: "z", + ctx: Store, + }, + ), + ], + value: Constant( + ExprConstant { + range: 2828..2829, + value: Int( + 0, + ), + kind: None, + }, + ), + type_comment: None, + }, + ), + ], + }, + ], + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__slice.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__slice.snap new file mode 100644 index 0000000000..f74e2cf50f --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__slice.snap @@ -0,0 +1,55 @@ +--- +source: crates/ruff_python_parser/src/parser.rs +expression: parse_ast +--- +Subscript( + ExprSubscript { + range: 0..8, + value: Name( + ExprName { + range: 0..1, + id: "x", + ctx: Load, + }, + ), + slice: Slice( + ExprSlice { + range: 2..7, + lower: Some( + Constant( + ExprConstant { + range: 2..3, + value: Int( + 1, + ), + kind: None, + }, + ), + ), + upper: Some( + Constant( + ExprConstant { + range: 4..5, + value: Int( + 2, + ), + kind: None, + }, + ), + ), + step: Some( + Constant( + ExprConstant { + range: 6..7, + value: Int( + 3, + ), + kind: None, + }, + ), + ), + }, + ), + ctx: Load, + }, +) diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__star_index.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__star_index.snap new file mode 100644 index 0000000000..d721fa237e --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__star_index.snap @@ -0,0 +1,271 @@ +--- +source: crates/ruff_python_parser/src/parser.rs +expression: parse_ast +--- +[ + Assign( + StmtAssign { + range: 0..36, + targets: [ + Name( + ExprName { + range: 0..11, + id: "array_slice", + ctx: Store, + }, + ), + ], + value: Subscript( + ExprSubscript { + range: 14..36, + value: Name( + ExprName { + range: 14..19, + id: "array", + ctx: Load, + }, + ), + slice: Tuple( + ExprTuple { + range: 20..35, + elts: [ + Constant( + ExprConstant { + range: 20..21, + value: Int( + 0, + ), + kind: None, + }, + ), + Starred( + ExprStarred { + range: 23..31, + value: Name( + ExprName { + range: 24..31, + id: "indexes", + ctx: Load, + }, + ), + ctx: Load, + }, + ), + UnaryOp( + ExprUnaryOp { + range: 33..35, + op: USub, + operand: Constant( + ExprConstant { + range: 34..35, + value: Int( + 1, + ), + kind: None, + }, + ), + }, + ), + ], + ctx: Load, + }, + ), + ctx: Load, + }, + ), + type_comment: None, + }, + ), + Assign( + StmtAssign { + range: 37..73, + targets: [ + Subscript( + ExprSubscript { + range: 37..59, + value: Name( + ExprName { + range: 37..42, + id: "array", + ctx: Load, + }, + ), + slice: Tuple( + ExprTuple { + range: 43..58, + elts: [ + Constant( + ExprConstant { + range: 43..44, + value: Int( + 0, + ), + kind: None, + }, + ), + Starred( + ExprStarred { + range: 46..54, + value: Name( + ExprName { + range: 47..54, + id: "indexes", + ctx: Load, + }, + ), + ctx: Load, + }, + ), + UnaryOp( + ExprUnaryOp { + range: 56..58, + op: USub, + operand: Constant( + ExprConstant { + range: 57..58, + value: Int( + 1, + ), + kind: None, + }, + ), + }, + ), + ], + ctx: Load, + }, + ), + ctx: Store, + }, + ), + ], + value: Name( + ExprName { + range: 62..73, + id: "array_slice", + ctx: Load, + }, + ), + type_comment: None, + }, + ), + Expr( + StmtExpr { + range: 74..119, + value: Subscript( + ExprSubscript { + range: 74..119, + value: Name( + ExprName { + range: 74..79, + id: "array", + ctx: Load, + }, + ), + slice: Tuple( + ExprTuple { + range: 80..118, + elts: [ + Starred( + ExprStarred { + range: 80..98, + value: Name( + ExprName { + range: 81..98, + id: "indexes_to_select", + ctx: Load, + }, + ), + ctx: Load, + }, + ), + Starred( + ExprStarred { + range: 100..118, + value: Name( + ExprName { + range: 101..118, + id: "indexes_to_select", + ctx: Load, + }, + ), + ctx: Load, + }, + ), + ], + ctx: Load, + }, + ), + ctx: Load, + }, + ), + }, + ), + Expr( + StmtExpr { + range: 120..150, + value: Subscript( + ExprSubscript { + range: 120..150, + value: Name( + ExprName { + range: 120..125, + id: "array", + ctx: Load, + }, + ), + slice: Tuple( + ExprTuple { + range: 126..149, + elts: [ + Slice( + ExprSlice { + range: 126..129, + lower: Some( + Constant( + ExprConstant { + range: 126..127, + value: Int( + 3, + ), + kind: None, + }, + ), + ), + upper: Some( + Constant( + ExprConstant { + range: 128..129, + value: Int( + 5, + ), + kind: None, + }, + ), + ), + step: None, + }, + ), + Starred( + ExprStarred { + range: 131..149, + value: Name( + ExprName { + range: 132..149, + id: "indexes_to_select", + ctx: Load, + }, + ), + ctx: Load, + }, + ), + ], + ctx: Load, + }, + ), + ctx: Load, + }, + ), + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__try.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__try.snap new file mode 100644 index 0000000000..dee8018773 --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__try.snap @@ -0,0 +1,223 @@ +--- +source: crates/ruff_python_parser/src/parser.rs +expression: parse_ast +--- +[ + Try( + StmtTry { + range: 0..134, + body: [ + Raise( + StmtRaise { + range: 9..28, + exc: Some( + Call( + ExprCall { + range: 15..28, + func: Name( + ExprName { + range: 15..25, + id: "ValueError", + ctx: Load, + }, + ), + args: [ + Constant( + ExprConstant { + range: 26..27, + value: Int( + 1, + ), + kind: None, + }, + ), + ], + keywords: [], + }, + ), + ), + cause: None, + }, + ), + ], + handlers: [ + ExceptHandler( + ExceptHandlerExceptHandler { + range: 29..82, + type_: Some( + Name( + ExprName { + range: 36..45, + id: "TypeError", + ctx: Load, + }, + ), + ), + name: Some( + Identifier { + id: "e", + range: 49..50, + }, + ), + body: [ + Expr( + StmtExpr { + range: 56..82, + value: Call( + ExprCall { + range: 56..82, + func: Name( + ExprName { + range: 56..61, + id: "print", + ctx: Load, + }, + ), + args: [ + JoinedStr( + ExprJoinedStr { + range: 62..81, + values: [ + Constant( + ExprConstant { + range: 64..71, + value: Str( + "caught ", + ), + kind: None, + }, + ), + FormattedValue( + ExprFormattedValue { + range: 71..80, + value: Call( + ExprCall { + range: 72..79, + func: Name( + ExprName { + range: 72..76, + id: "type", + ctx: Load, + }, + ), + args: [ + Name( + ExprName { + range: 77..78, + id: "e", + ctx: Load, + }, + ), + ], + keywords: [], + }, + ), + conversion: None, + format_spec: None, + }, + ), + ], + }, + ), + ], + keywords: [], + }, + ), + }, + ), + ], + }, + ), + ExceptHandler( + ExceptHandlerExceptHandler { + range: 83..134, + type_: Some( + Name( + ExprName { + range: 90..97, + id: "OSError", + ctx: Load, + }, + ), + ), + name: Some( + Identifier { + id: "e", + range: 101..102, + }, + ), + body: [ + Expr( + StmtExpr { + range: 108..134, + value: Call( + ExprCall { + range: 108..134, + func: Name( + ExprName { + range: 108..113, + id: "print", + ctx: Load, + }, + ), + args: [ + JoinedStr( + ExprJoinedStr { + range: 114..133, + values: [ + Constant( + ExprConstant { + range: 116..123, + value: Str( + "caught ", + ), + kind: None, + }, + ), + FormattedValue( + ExprFormattedValue { + range: 123..132, + value: Call( + ExprCall { + range: 124..131, + func: Name( + ExprName { + range: 124..128, + id: "type", + ctx: Load, + }, + ), + args: [ + Name( + ExprName { + range: 129..130, + id: "e", + ctx: Load, + }, + ), + ], + keywords: [], + }, + ), + conversion: None, + format_spec: None, + }, + ), + ], + }, + ), + ], + keywords: [], + }, + ), + }, + ), + ], + }, + ), + ], + orelse: [], + finalbody: [], + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__try_star.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__try_star.snap new file mode 100644 index 0000000000..bc62d50f95 --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__try_star.snap @@ -0,0 +1,393 @@ +--- +source: crates/ruff_python_parser/src/parser.rs +expression: parse_ast +--- +[ + TryStar( + StmtTryStar { + range: 0..260, + body: [ + Raise( + StmtRaise { + range: 9..98, + exc: Some( + Call( + ExprCall { + range: 15..98, + func: Name( + ExprName { + range: 15..29, + id: "ExceptionGroup", + ctx: Load, + }, + ), + args: [ + Constant( + ExprConstant { + range: 30..34, + value: Str( + "eg", + ), + kind: None, + }, + ), + List( + ExprList { + range: 44..97, + elts: [ + Call( + ExprCall { + range: 45..58, + func: Name( + ExprName { + range: 45..55, + id: "ValueError", + ctx: Load, + }, + ), + args: [ + Constant( + ExprConstant { + range: 56..57, + value: Int( + 1, + ), + kind: None, + }, + ), + ], + keywords: [], + }, + ), + Call( + ExprCall { + range: 60..72, + func: Name( + ExprName { + range: 60..69, + id: "TypeError", + ctx: Load, + }, + ), + args: [ + Constant( + ExprConstant { + range: 70..71, + value: Int( + 2, + ), + kind: None, + }, + ), + ], + keywords: [], + }, + ), + Call( + ExprCall { + range: 74..84, + func: Name( + ExprName { + range: 74..81, + id: "OSError", + ctx: Load, + }, + ), + args: [ + Constant( + ExprConstant { + range: 82..83, + value: Int( + 3, + ), + kind: None, + }, + ), + ], + keywords: [], + }, + ), + Call( + ExprCall { + range: 86..96, + func: Name( + ExprName { + range: 86..93, + id: "OSError", + ctx: Load, + }, + ), + args: [ + Constant( + ExprConstant { + range: 94..95, + value: Int( + 4, + ), + kind: None, + }, + ), + ], + keywords: [], + }, + ), + ], + ctx: Load, + }, + ), + ], + keywords: [], + }, + ), + ), + cause: None, + }, + ), + ], + handlers: [ + ExceptHandler( + ExceptHandlerExceptHandler { + range: 99..180, + type_: Some( + Name( + ExprName { + range: 107..116, + id: "TypeError", + ctx: Load, + }, + ), + ), + name: Some( + Identifier { + id: "e", + range: 120..121, + }, + ), + body: [ + Expr( + StmtExpr { + range: 127..180, + value: Call( + ExprCall { + range: 127..180, + func: Name( + ExprName { + range: 127..132, + id: "print", + ctx: Load, + }, + ), + args: [ + JoinedStr( + ExprJoinedStr { + range: 133..179, + values: [ + Constant( + ExprConstant { + range: 135..142, + value: Str( + "caught ", + ), + kind: None, + }, + ), + FormattedValue( + ExprFormattedValue { + range: 142..151, + value: Call( + ExprCall { + range: 143..150, + func: Name( + ExprName { + range: 143..147, + id: "type", + ctx: Load, + }, + ), + args: [ + Name( + ExprName { + range: 148..149, + id: "e", + ctx: Load, + }, + ), + ], + keywords: [], + }, + ), + conversion: None, + format_spec: None, + }, + ), + Constant( + ExprConstant { + range: 151..164, + value: Str( + " with nested ", + ), + kind: None, + }, + ), + FormattedValue( + ExprFormattedValue { + range: 164..178, + value: Attribute( + ExprAttribute { + range: 165..177, + value: Name( + ExprName { + range: 165..166, + id: "e", + ctx: Load, + }, + ), + attr: Identifier { + id: "exceptions", + range: 167..177, + }, + ctx: Load, + }, + ), + conversion: None, + format_spec: None, + }, + ), + ], + }, + ), + ], + keywords: [], + }, + ), + }, + ), + ], + }, + ), + ExceptHandler( + ExceptHandlerExceptHandler { + range: 181..260, + type_: Some( + Name( + ExprName { + range: 189..196, + id: "OSError", + ctx: Load, + }, + ), + ), + name: Some( + Identifier { + id: "e", + range: 200..201, + }, + ), + body: [ + Expr( + StmtExpr { + range: 207..260, + value: Call( + ExprCall { + range: 207..260, + func: Name( + ExprName { + range: 207..212, + id: "print", + ctx: Load, + }, + ), + args: [ + JoinedStr( + ExprJoinedStr { + range: 213..259, + values: [ + Constant( + ExprConstant { + range: 215..222, + value: Str( + "caught ", + ), + kind: None, + }, + ), + FormattedValue( + ExprFormattedValue { + range: 222..231, + value: Call( + ExprCall { + range: 223..230, + func: Name( + ExprName { + range: 223..227, + id: "type", + ctx: Load, + }, + ), + args: [ + Name( + ExprName { + range: 228..229, + id: "e", + ctx: Load, + }, + ), + ], + keywords: [], + }, + ), + conversion: None, + format_spec: None, + }, + ), + Constant( + ExprConstant { + range: 231..244, + value: Str( + " with nested ", + ), + kind: None, + }, + ), + FormattedValue( + ExprFormattedValue { + range: 244..258, + value: Attribute( + ExprAttribute { + range: 245..257, + value: Name( + ExprName { + range: 245..246, + id: "e", + ctx: Load, + }, + ), + attr: Identifier { + id: "exceptions", + range: 247..257, + }, + ctx: Load, + }, + ), + conversion: None, + format_spec: None, + }, + ), + ], + }, + ), + ], + keywords: [], + }, + ), + }, + ), + ], + }, + ), + ], + orelse: [], + finalbody: [], + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__type_as_identifier.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__type_as_identifier.snap new file mode 100644 index 0000000000..9be84ed6e2 --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__type_as_identifier.snap @@ -0,0 +1,968 @@ +--- +source: crates/ruff_python_parser/src/parser.rs +expression: "ast::Suite::parse(source, \"\").unwrap()" +--- +[ + Expr( + StmtExpr { + range: 2..16, + value: Tuple( + ExprTuple { + range: 2..16, + elts: [ + BinOp( + ExprBinOp { + range: 2..13, + left: BinOp( + ExprBinOp { + range: 2..9, + left: Name( + ExprName { + range: 2..6, + id: "type", + ctx: Load, + }, + ), + op: Mult, + right: Name( + ExprName { + range: 8..9, + id: "a", + ctx: Load, + }, + ), + }, + ), + op: Add, + right: Name( + ExprName { + range: 12..13, + id: "b", + ctx: Load, + }, + ), + }, + ), + Name( + ExprName { + range: 15..16, + id: "c", + ctx: Load, + }, + ), + ], + ctx: Load, + }, + ), + }, + ), + Expr( + StmtExpr { + range: 41..57, + value: Tuple( + ExprTuple { + range: 41..57, + elts: [ + BinOp( + ExprBinOp { + range: 41..54, + left: Name( + ExprName { + range: 41..45, + id: "type", + ctx: Load, + }, + ), + op: Mult, + right: BinOp( + ExprBinOp { + range: 48..53, + left: Name( + ExprName { + range: 48..49, + id: "a", + ctx: Load, + }, + ), + op: Add, + right: Name( + ExprName { + range: 52..53, + id: "b", + ctx: Load, + }, + ), + }, + ), + }, + ), + Name( + ExprName { + range: 56..57, + id: "c", + ctx: Load, + }, + ), + ], + ctx: Load, + }, + ), + }, + ), + Expr( + StmtExpr { + range: 82..98, + value: Call( + ExprCall { + range: 82..98, + func: Name( + ExprName { + range: 82..86, + id: "type", + ctx: Load, + }, + ), + args: [ + Starred( + ExprStarred { + range: 88..94, + value: BinOp( + ExprBinOp { + range: 89..94, + left: Name( + ExprName { + range: 89..90, + id: "a", + ctx: Load, + }, + ), + op: Add, + right: Name( + ExprName { + range: 93..94, + id: "b", + ctx: Load, + }, + ), + }, + ), + ctx: Load, + }, + ), + Name( + ExprName { + range: 96..97, + id: "c", + ctx: Load, + }, + ), + ], + keywords: [], + }, + ), + }, + ), + Expr( + StmtExpr { + range: 124..139, + value: BinOp( + ExprBinOp { + range: 124..139, + left: BinOp( + ExprBinOp { + range: 124..135, + left: Name( + ExprName { + range: 124..128, + id: "type", + ctx: Load, + }, + ), + op: Sub, + right: BinOp( + ExprBinOp { + range: 130..135, + left: Name( + ExprName { + range: 130..131, + id: "a", + ctx: Load, + }, + ), + op: Mult, + right: Name( + ExprName { + range: 134..135, + id: "b", + ctx: Load, + }, + ), + }, + ), + }, + ), + op: Add, + right: Name( + ExprName { + range: 138..139, + id: "c", + ctx: Load, + }, + ), + }, + ), + }, + ), + Expr( + StmtExpr { + range: 165..182, + value: BinOp( + ExprBinOp { + range: 165..182, + left: BinOp( + ExprBinOp { + range: 165..178, + left: Name( + ExprName { + range: 165..169, + id: "type", + ctx: Load, + }, + ), + op: Sub, + right: BinOp( + ExprBinOp { + range: 172..177, + left: Name( + ExprName { + range: 172..173, + id: "a", + ctx: Load, + }, + ), + op: Mult, + right: Name( + ExprName { + range: 176..177, + id: "b", + ctx: Load, + }, + ), + }, + ), + }, + ), + op: Add, + right: Name( + ExprName { + range: 181..182, + id: "c", + ctx: Load, + }, + ), + }, + ), + }, + ), + Expr( + StmtExpr { + range: 208..225, + value: BinOp( + ExprBinOp { + range: 208..225, + left: BinOp( + ExprBinOp { + range: 208..221, + left: Call( + ExprCall { + range: 208..217, + func: Name( + ExprName { + range: 208..212, + id: "type", + ctx: Load, + }, + ), + args: [ + UnaryOp( + ExprUnaryOp { + range: 214..216, + op: USub, + operand: Name( + ExprName { + range: 215..216, + id: "a", + ctx: Load, + }, + ), + }, + ), + ], + keywords: [], + }, + ), + op: Mult, + right: Name( + ExprName { + range: 220..221, + id: "b", + ctx: Load, + }, + ), + }, + ), + op: Add, + right: Name( + ExprName { + range: 224..225, + id: "c", + ctx: Load, + }, + ), + }, + ), + }, + ), + Expr( + StmtExpr { + range: 252..261, + value: Attribute( + ExprAttribute { + range: 252..261, + value: Call( + ExprCall { + range: 252..259, + func: Name( + ExprName { + range: 252..256, + id: "type", + ctx: Load, + }, + ), + args: [], + keywords: [], + }, + ), + attr: Identifier { + id: "a", + range: 260..261, + }, + ctx: Load, + }, + ), + }, + ), + Expr( + StmtExpr { + range: 277..288, + value: Attribute( + ExprAttribute { + range: 277..288, + value: Call( + ExprCall { + range: 277..286, + func: Name( + ExprName { + range: 277..281, + id: "type", + ctx: Load, + }, + ), + args: [ + Tuple( + ExprTuple { + range: 283..285, + elts: [], + ctx: Load, + }, + ), + ], + keywords: [], + }, + ), + attr: Identifier { + id: "a", + range: 287..288, + }, + ctx: Load, + }, + ), + }, + ), + Expr( + StmtExpr { + range: 306..318, + value: Attribute( + ExprAttribute { + range: 306..318, + value: Call( + ExprCall { + range: 306..316, + func: Name( + ExprName { + range: 306..310, + id: "type", + ctx: Load, + }, + ), + args: [ + Tuple( + ExprTuple { + range: 312..314, + elts: [], + ctx: Load, + }, + ), + ], + keywords: [], + }, + ), + attr: Identifier { + id: "a", + range: 317..318, + }, + ctx: Load, + }, + ), + }, + ), + Expr( + StmtExpr { + range: 336..346, + value: Attribute( + ExprAttribute { + range: 336..346, + value: Subscript( + ExprSubscript { + range: 336..344, + value: Name( + ExprName { + range: 336..340, + id: "type", + ctx: Load, + }, + ), + slice: Name( + ExprName { + range: 342..343, + id: "a", + ctx: Load, + }, + ), + ctx: Load, + }, + ), + attr: Identifier { + id: "b", + range: 345..346, + }, + ctx: Load, + }, + ), + }, + ), + Expr( + StmtExpr { + range: 363..374, + value: Attribute( + ExprAttribute { + range: 363..374, + value: Subscript( + ExprSubscript { + range: 363..372, + value: Name( + ExprName { + range: 363..367, + id: "type", + ctx: Load, + }, + ), + slice: Tuple( + ExprTuple { + range: 369..371, + elts: [ + Name( + ExprName { + range: 369..370, + id: "a", + ctx: Load, + }, + ), + ], + ctx: Load, + }, + ), + ctx: Load, + }, + ), + attr: Identifier { + id: "b", + range: 373..374, + }, + ctx: Load, + }, + ), + }, + ), + Expr( + StmtExpr { + range: 413..426, + value: Attribute( + ExprAttribute { + range: 413..426, + value: Subscript( + ExprSubscript { + range: 413..424, + value: Name( + ExprName { + range: 413..417, + id: "type", + ctx: Load, + }, + ), + slice: Tuple( + ExprTuple { + range: 419..423, + elts: [ + Name( + ExprName { + range: 420..421, + id: "a", + ctx: Load, + }, + ), + ], + ctx: Load, + }, + ), + ctx: Load, + }, + ), + attr: Identifier { + id: "b", + range: 425..426, + }, + ctx: Load, + }, + ), + }, + ), + Expr( + StmtExpr { + range: 446..462, + value: Subscript( + ExprSubscript { + range: 446..462, + value: Call( + ExprCall { + range: 446..452, + func: Name( + ExprName { + range: 446..450, + id: "type", + ctx: Load, + }, + ), + args: [], + keywords: [], + }, + ), + slice: Slice( + ExprSlice { + range: 453..461, + lower: Some( + Name( + ExprName { + range: 453..454, + id: "a", + ctx: Load, + }, + ), + ), + upper: Some( + Name( + ExprName { + range: 460..461, + id: "b", + ctx: Load, + }, + ), + ), + step: None, + }, + ), + ctx: Load, + }, + ), + }, + ), + If( + StmtIf { + range: 481..499, + test: NamedExpr( + ExprNamedExpr { + range: 484..493, + target: Name( + ExprName { + range: 484..488, + id: "type", + ctx: Store, + }, + ), + value: Constant( + ExprConstant { + range: 492..493, + value: Int( + 1, + ), + kind: None, + }, + ), + }, + ), + body: [ + Pass( + StmtPass { + range: 495..499, + }, + ), + ], + elif_else_clauses: [], + }, + ), + Assign( + StmtAssign { + range: 500..535, + targets: [ + Name( + ExprName { + range: 500..504, + id: "type", + ctx: Store, + }, + ), + ], + value: Lambda( + ExprLambda { + range: 507..535, + args: Arguments { + range: 514..519, + posonlyargs: [], + args: [ + ArgWithDefault { + range: 514..519, + def: Arg { + range: 514..519, + arg: Identifier { + id: "query", + range: 514..519, + }, + annotation: None, + type_comment: None, + }, + default: None, + }, + ], + vararg: None, + kwonlyargs: [], + kwarg: None, + }, + body: Compare( + ExprCompare { + range: 521..535, + left: Name( + ExprName { + range: 521..526, + id: "query", + ctx: Load, + }, + ), + ops: [ + Eq, + ], + comparators: [ + Name( + ExprName { + range: 530..535, + id: "event", + ctx: Load, + }, + ), + ], + }, + ), + }, + ), + type_comment: None, + }, + ), + Expr( + StmtExpr { + range: 536..551, + value: Call( + ExprCall { + range: 536..551, + func: Name( + ExprName { + range: 536..541, + id: "print", + ctx: Load, + }, + ), + args: [ + Call( + ExprCall { + range: 542..550, + func: Name( + ExprName { + range: 542..546, + id: "type", + ctx: Load, + }, + ), + args: [ + Constant( + ExprConstant { + range: 547..549, + value: Int( + 12, + ), + kind: None, + }, + ), + ], + keywords: [], + }, + ), + ], + keywords: [], + }, + ), + }, + ), + Expr( + StmtExpr { + range: 552..562, + value: Call( + ExprCall { + range: 552..562, + func: Name( + ExprName { + range: 552..556, + id: "type", + ctx: Load, + }, + ), + args: [ + Name( + ExprName { + range: 557..561, + id: "type", + ctx: Load, + }, + ), + ], + keywords: [], + }, + ), + }, + ), + Assign( + StmtAssign { + range: 563..581, + targets: [ + Name( + ExprName { + range: 563..564, + id: "a", + ctx: Store, + }, + ), + ], + value: Compare( + ExprCompare { + range: 570..579, + left: Name( + ExprName { + range: 570..574, + id: "type", + ctx: Load, + }, + ), + ops: [ + In, + ], + comparators: [ + Name( + ExprName { + range: 578..579, + id: "C", + ctx: Load, + }, + ), + ], + }, + ), + type_comment: None, + }, + ), + Assign( + StmtAssign { + range: 582..598, + targets: [ + Name( + ExprName { + range: 582..583, + id: "a", + ctx: Store, + }, + ), + ], + value: Call( + ExprCall { + range: 589..596, + func: Name( + ExprName { + range: 589..593, + id: "type", + ctx: Load, + }, + ), + args: [ + Name( + ExprName { + range: 594..595, + id: "b", + ctx: Load, + }, + ), + ], + keywords: [], + }, + ), + type_comment: None, + }, + ), + Expr( + StmtExpr { + range: 599..616, + value: Call( + ExprCall { + range: 599..616, + func: Name( + ExprName { + range: 599..603, + id: "type", + ctx: Load, + }, + ), + args: [], + keywords: [ + Keyword { + range: 607..614, + arg: Some( + Identifier { + id: "X", + range: 607..608, + }, + ), + value: Name( + ExprName { + range: 611..614, + id: "int", + ctx: Load, + }, + ), + }, + ], + }, + ), + }, + ), + Assign( + StmtAssign { + range: 617..625, + targets: [ + Name( + ExprName { + range: 617..621, + id: "type", + ctx: Store, + }, + ), + ], + value: Constant( + ExprConstant { + range: 624..625, + value: Int( + 1, + ), + kind: None, + }, + ), + type_comment: None, + }, + ), + Assign( + StmtAssign { + range: 626..638, + targets: [ + Name( + ExprName { + range: 626..630, + id: "type", + ctx: Store, + }, + ), + Name( + ExprName { + range: 633..634, + id: "x", + ctx: Store, + }, + ), + ], + value: Constant( + ExprConstant { + range: 637..638, + value: Int( + 1, + ), + kind: None, + }, + ), + type_comment: None, + }, + ), + Assign( + StmtAssign { + range: 639..651, + targets: [ + Name( + ExprName { + range: 639..640, + id: "x", + ctx: Store, + }, + ), + Name( + ExprName { + range: 643..647, + id: "type", + ctx: Store, + }, + ), + ], + value: Constant( + ExprConstant { + range: 650..651, + value: Int( + 1, + ), + kind: None, + }, + ), + type_comment: None, + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__variadic_generics.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__variadic_generics.snap new file mode 100644 index 0000000000..d7a0d79744 --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__variadic_generics.snap @@ -0,0 +1,92 @@ +--- +source: crates/ruff_python_parser/src/parser.rs +expression: parse_ast +--- +[ + FunctionDef( + StmtFunctionDef { + range: 1..49, + name: Identifier { + id: "args_to_tuple", + range: 5..18, + }, + args: Arguments { + range: 18..30, + posonlyargs: [], + args: [], + vararg: Some( + Arg { + range: 20..29, + arg: Identifier { + id: "args", + range: 20..24, + }, + annotation: Some( + Starred( + ExprStarred { + range: 26..29, + value: Name( + ExprName { + range: 27..29, + id: "Ts", + ctx: Load, + }, + ), + ctx: Load, + }, + ), + ), + type_comment: None, + }, + ), + kwonlyargs: [], + kwarg: None, + }, + body: [ + Expr( + StmtExpr { + range: 46..49, + value: Constant( + ExprConstant { + range: 46..49, + value: Ellipsis, + kind: None, + }, + ), + }, + ), + ], + decorator_list: [], + returns: Some( + Subscript( + ExprSubscript { + range: 34..44, + value: Name( + ExprName { + range: 34..39, + id: "Tuple", + ctx: Load, + }, + ), + slice: Starred( + ExprStarred { + range: 40..43, + value: Name( + ExprName { + range: 41..43, + id: "Ts", + ctx: Load, + }, + ), + ctx: Load, + }, + ), + ctx: Load, + }, + ), + ), + type_params: [], + type_comment: None, + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__with_statement.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__with_statement.snap new file mode 100644 index 0000000000..c020165284 --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__parser__tests__with_statement.snap @@ -0,0 +1,1182 @@ +--- +source: crates/ruff_python_parser/src/parser.rs +expression: "ast::Suite::parse(source, \"\").unwrap()" +--- +[ + With( + StmtWith { + range: 0..12, + items: [ + WithItem { + range: 5..6, + context_expr: Constant( + ExprConstant { + range: 5..6, + value: Int( + 0, + ), + kind: None, + }, + ), + optional_vars: None, + }, + ], + body: [ + Pass( + StmtPass { + range: 8..12, + }, + ), + ], + type_comment: None, + }, + ), + With( + StmtWith { + range: 13..30, + items: [ + WithItem { + range: 18..24, + context_expr: Constant( + ExprConstant { + range: 18..19, + value: Int( + 0, + ), + kind: None, + }, + ), + optional_vars: Some( + Name( + ExprName { + range: 23..24, + id: "x", + ctx: Store, + }, + ), + ), + }, + ], + body: [ + Pass( + StmtPass { + range: 26..30, + }, + ), + ], + type_comment: None, + }, + ), + With( + StmtWith { + range: 31..46, + items: [ + WithItem { + range: 36..37, + context_expr: Constant( + ExprConstant { + range: 36..37, + value: Int( + 0, + ), + kind: None, + }, + ), + optional_vars: None, + }, + WithItem { + range: 39..40, + context_expr: Constant( + ExprConstant { + range: 39..40, + value: Int( + 1, + ), + kind: None, + }, + ), + optional_vars: None, + }, + ], + body: [ + Pass( + StmtPass { + range: 42..46, + }, + ), + ], + type_comment: None, + }, + ), + With( + StmtWith { + range: 47..72, + items: [ + WithItem { + range: 52..58, + context_expr: Constant( + ExprConstant { + range: 52..53, + value: Int( + 0, + ), + kind: None, + }, + ), + optional_vars: Some( + Name( + ExprName { + range: 57..58, + id: "x", + ctx: Store, + }, + ), + ), + }, + WithItem { + range: 60..66, + context_expr: Constant( + ExprConstant { + range: 60..61, + value: Int( + 1, + ), + kind: None, + }, + ), + optional_vars: Some( + Name( + ExprName { + range: 65..66, + id: "y", + ctx: Store, + }, + ), + ), + }, + ], + body: [ + Pass( + StmtPass { + range: 68..72, + }, + ), + ], + type_comment: None, + }, + ), + With( + StmtWith { + range: 73..97, + items: [ + WithItem { + range: 78..91, + context_expr: IfExp( + ExprIfExp { + range: 78..91, + test: Constant( + ExprConstant { + range: 83..84, + value: Int( + 1, + ), + kind: None, + }, + ), + body: Constant( + ExprConstant { + range: 78..79, + value: Int( + 0, + ), + kind: None, + }, + ), + orelse: Constant( + ExprConstant { + range: 90..91, + value: Int( + 2, + ), + kind: None, + }, + ), + }, + ), + optional_vars: None, + }, + ], + body: [ + Pass( + StmtPass { + range: 93..97, + }, + ), + ], + type_comment: None, + }, + ), + With( + StmtWith { + range: 98..127, + items: [ + WithItem { + range: 103..121, + context_expr: IfExp( + ExprIfExp { + range: 103..116, + test: Constant( + ExprConstant { + range: 108..109, + value: Int( + 1, + ), + kind: None, + }, + ), + body: Constant( + ExprConstant { + range: 103..104, + value: Int( + 0, + ), + kind: None, + }, + ), + orelse: Constant( + ExprConstant { + range: 115..116, + value: Int( + 2, + ), + kind: None, + }, + ), + }, + ), + optional_vars: Some( + Name( + ExprName { + range: 120..121, + id: "x", + ctx: Store, + }, + ), + ), + }, + ], + body: [ + Pass( + StmtPass { + range: 123..127, + }, + ), + ], + type_comment: None, + }, + ), + With( + StmtWith { + range: 128..141, + items: [ + WithItem { + range: 133..135, + context_expr: Tuple( + ExprTuple { + range: 133..135, + elts: [], + ctx: Load, + }, + ), + optional_vars: None, + }, + ], + body: [ + Pass( + StmtPass { + range: 137..141, + }, + ), + ], + type_comment: None, + }, + ), + With( + StmtWith { + range: 142..160, + items: [ + WithItem { + range: 147..154, + context_expr: Tuple( + ExprTuple { + range: 147..149, + elts: [], + ctx: Load, + }, + ), + optional_vars: Some( + Name( + ExprName { + range: 153..154, + id: "x", + ctx: Store, + }, + ), + ), + }, + ], + body: [ + Pass( + StmtPass { + range: 156..160, + }, + ), + ], + type_comment: None, + }, + ), + With( + StmtWith { + range: 161..175, + items: [ + WithItem { + range: 167..168, + context_expr: Constant( + ExprConstant { + range: 167..168, + value: Int( + 0, + ), + kind: None, + }, + ), + optional_vars: None, + }, + ], + body: [ + Pass( + StmtPass { + range: 171..175, + }, + ), + ], + type_comment: None, + }, + ), + With( + StmtWith { + range: 176..195, + items: [ + WithItem { + range: 181..189, + context_expr: Constant( + ExprConstant { + range: 182..183, + value: Int( + 0, + ), + kind: None, + }, + ), + optional_vars: Some( + Name( + ExprName { + range: 188..189, + id: "x", + ctx: Store, + }, + ), + ), + }, + ], + body: [ + Pass( + StmtPass { + range: 191..195, + }, + ), + ], + type_comment: None, + }, + ), + With( + StmtWith { + range: 196..211, + items: [ + WithItem { + range: 202..203, + context_expr: Constant( + ExprConstant { + range: 202..203, + value: Int( + 0, + ), + kind: None, + }, + ), + optional_vars: None, + }, + ], + body: [ + Pass( + StmtPass { + range: 207..211, + }, + ), + ], + type_comment: None, + }, + ), + With( + StmtWith { + range: 212..232, + items: [ + WithItem { + range: 217..226, + context_expr: Tuple( + ExprTuple { + range: 217..221, + elts: [ + Constant( + ExprConstant { + range: 218..219, + value: Int( + 0, + ), + kind: None, + }, + ), + ], + ctx: Load, + }, + ), + optional_vars: Some( + Name( + ExprName { + range: 225..226, + id: "x", + ctx: Store, + }, + ), + ), + }, + ], + body: [ + Pass( + StmtPass { + range: 228..232, + }, + ), + ], + type_comment: None, + }, + ), + With( + StmtWith { + range: 233..250, + items: [ + WithItem { + range: 239..243, + context_expr: Constant( + ExprConstant { + range: 239..240, + value: Int( + 0, + ), + kind: None, + }, + ), + optional_vars: None, + }, + WithItem { + range: 239..243, + context_expr: Constant( + ExprConstant { + range: 242..243, + value: Int( + 1, + ), + kind: None, + }, + ), + optional_vars: None, + }, + ], + body: [ + Pass( + StmtPass { + range: 246..250, + }, + ), + ], + type_comment: None, + }, + ), + With( + StmtWith { + range: 251..273, + items: [ + WithItem { + range: 256..267, + context_expr: Tuple( + ExprTuple { + range: 256..262, + elts: [ + Constant( + ExprConstant { + range: 257..258, + value: Int( + 0, + ), + kind: None, + }, + ), + Constant( + ExprConstant { + range: 260..261, + value: Int( + 1, + ), + kind: None, + }, + ), + ], + ctx: Load, + }, + ), + optional_vars: Some( + Name( + ExprName { + range: 266..267, + id: "x", + ctx: Store, + }, + ), + ), + }, + ], + body: [ + Pass( + StmtPass { + range: 269..273, + }, + ), + ], + type_comment: None, + }, + ), + With( + StmtWith { + range: 274..290, + items: [ + WithItem { + range: 279..284, + context_expr: Tuple( + ExprTuple { + range: 279..284, + elts: [ + Starred( + ExprStarred { + range: 280..282, + value: Name( + ExprName { + range: 281..282, + id: "a", + ctx: Load, + }, + ), + ctx: Load, + }, + ), + ], + ctx: Load, + }, + ), + optional_vars: None, + }, + ], + body: [ + Pass( + StmtPass { + range: 286..290, + }, + ), + ], + type_comment: None, + }, + ), + With( + StmtWith { + range: 291..312, + items: [ + WithItem { + range: 296..306, + context_expr: Tuple( + ExprTuple { + range: 296..301, + elts: [ + Starred( + ExprStarred { + range: 297..299, + value: Name( + ExprName { + range: 298..299, + id: "a", + ctx: Load, + }, + ), + ctx: Load, + }, + ), + ], + ctx: Load, + }, + ), + optional_vars: Some( + Name( + ExprName { + range: 305..306, + id: "x", + ctx: Store, + }, + ), + ), + }, + ], + body: [ + Pass( + StmtPass { + range: 308..312, + }, + ), + ], + type_comment: None, + }, + ), + With( + StmtWith { + range: 313..331, + items: [ + WithItem { + range: 318..325, + context_expr: Tuple( + ExprTuple { + range: 318..325, + elts: [ + Constant( + ExprConstant { + range: 319..320, + value: Int( + 0, + ), + kind: None, + }, + ), + Starred( + ExprStarred { + range: 322..324, + value: Name( + ExprName { + range: 323..324, + id: "a", + ctx: Load, + }, + ), + ctx: Load, + }, + ), + ], + ctx: Load, + }, + ), + optional_vars: None, + }, + ], + body: [ + Pass( + StmtPass { + range: 327..331, + }, + ), + ], + type_comment: None, + }, + ), + With( + StmtWith { + range: 332..355, + items: [ + WithItem { + range: 337..349, + context_expr: Tuple( + ExprTuple { + range: 337..344, + elts: [ + Constant( + ExprConstant { + range: 338..339, + value: Int( + 0, + ), + kind: None, + }, + ), + Starred( + ExprStarred { + range: 341..343, + value: Name( + ExprName { + range: 342..343, + id: "a", + ctx: Load, + }, + ), + ctx: Load, + }, + ), + ], + ctx: Load, + }, + ), + optional_vars: Some( + Name( + ExprName { + range: 348..349, + id: "x", + ctx: Store, + }, + ), + ), + }, + ], + body: [ + Pass( + StmtPass { + range: 351..355, + }, + ), + ], + type_comment: None, + }, + ), + With( + StmtWith { + range: 356..375, + items: [ + WithItem { + range: 361..369, + context_expr: NamedExpr( + ExprNamedExpr { + range: 362..368, + target: Name( + ExprName { + range: 362..363, + id: "a", + ctx: Store, + }, + ), + value: Constant( + ExprConstant { + range: 367..368, + value: Int( + 0, + ), + kind: None, + }, + ), + }, + ), + optional_vars: None, + }, + ], + body: [ + Pass( + StmtPass { + range: 371..375, + }, + ), + ], + type_comment: None, + }, + ), + With( + StmtWith { + range: 376..400, + items: [ + WithItem { + range: 381..394, + context_expr: NamedExpr( + ExprNamedExpr { + range: 382..388, + target: Name( + ExprName { + range: 382..383, + id: "a", + ctx: Store, + }, + ), + value: Constant( + ExprConstant { + range: 387..388, + value: Int( + 0, + ), + kind: None, + }, + ), + }, + ), + optional_vars: Some( + Name( + ExprName { + range: 393..394, + id: "x", + ctx: Store, + }, + ), + ), + }, + ], + body: [ + Pass( + StmtPass { + range: 396..400, + }, + ), + ], + type_comment: None, + }, + ), + With( + StmtWith { + range: 401..428, + items: [ + WithItem { + range: 406..422, + context_expr: Tuple( + ExprTuple { + range: 406..422, + elts: [ + NamedExpr( + ExprNamedExpr { + range: 407..413, + target: Name( + ExprName { + range: 407..408, + id: "a", + ctx: Store, + }, + ), + value: Constant( + ExprConstant { + range: 412..413, + value: Int( + 0, + ), + kind: None, + }, + ), + }, + ), + NamedExpr( + ExprNamedExpr { + range: 415..421, + target: Name( + ExprName { + range: 415..416, + id: "b", + ctx: Store, + }, + ), + value: Constant( + ExprConstant { + range: 420..421, + value: Int( + 1, + ), + kind: None, + }, + ), + }, + ), + ], + ctx: Load, + }, + ), + optional_vars: None, + }, + ], + body: [ + Pass( + StmtPass { + range: 424..428, + }, + ), + ], + type_comment: None, + }, + ), + With( + StmtWith { + range: 429..461, + items: [ + WithItem { + range: 434..455, + context_expr: Tuple( + ExprTuple { + range: 434..450, + elts: [ + NamedExpr( + ExprNamedExpr { + range: 435..441, + target: Name( + ExprName { + range: 435..436, + id: "a", + ctx: Store, + }, + ), + value: Constant( + ExprConstant { + range: 440..441, + value: Int( + 0, + ), + kind: None, + }, + ), + }, + ), + NamedExpr( + ExprNamedExpr { + range: 443..449, + target: Name( + ExprName { + range: 443..444, + id: "b", + ctx: Store, + }, + ), + value: Constant( + ExprConstant { + range: 448..449, + value: Int( + 1, + ), + kind: None, + }, + ), + }, + ), + ], + ctx: Load, + }, + ), + optional_vars: Some( + Name( + ExprName { + range: 454..455, + id: "x", + ctx: Store, + }, + ), + ), + }, + ], + body: [ + Pass( + StmtPass { + range: 457..461, + }, + ), + ], + type_comment: None, + }, + ), + With( + StmtWith { + range: 462..481, + items: [ + WithItem { + range: 468..474, + context_expr: Constant( + ExprConstant { + range: 468..469, + value: Int( + 0, + ), + kind: None, + }, + ), + optional_vars: Some( + Name( + ExprName { + range: 473..474, + id: "a", + ctx: Store, + }, + ), + ), + }, + ], + body: [ + Pass( + StmtPass { + range: 477..481, + }, + ), + ], + type_comment: None, + }, + ), + With( + StmtWith { + range: 482..502, + items: [ + WithItem { + range: 488..494, + context_expr: Constant( + ExprConstant { + range: 488..489, + value: Int( + 0, + ), + kind: None, + }, + ), + optional_vars: Some( + Name( + ExprName { + range: 493..494, + id: "a", + ctx: Store, + }, + ), + ), + }, + ], + body: [ + Pass( + StmtPass { + range: 498..502, + }, + ), + ], + type_comment: None, + }, + ), + With( + StmtWith { + range: 503..530, + items: [ + WithItem { + range: 509..515, + context_expr: Constant( + ExprConstant { + range: 509..510, + value: Int( + 0, + ), + kind: None, + }, + ), + optional_vars: Some( + Name( + ExprName { + range: 514..515, + id: "a", + ctx: Store, + }, + ), + ), + }, + WithItem { + range: 517..523, + context_expr: Constant( + ExprConstant { + range: 517..518, + value: Int( + 1, + ), + kind: None, + }, + ), + optional_vars: Some( + Name( + ExprName { + range: 522..523, + id: "b", + ctx: Store, + }, + ), + ), + }, + ], + body: [ + Pass( + StmtPass { + range: 526..530, + }, + ), + ], + type_comment: None, + }, + ), + With( + StmtWith { + range: 531..559, + items: [ + WithItem { + range: 537..543, + context_expr: Constant( + ExprConstant { + range: 537..538, + value: Int( + 0, + ), + kind: None, + }, + ), + optional_vars: Some( + Name( + ExprName { + range: 542..543, + id: "a", + ctx: Store, + }, + ), + ), + }, + WithItem { + range: 545..551, + context_expr: Constant( + ExprConstant { + range: 545..546, + value: Int( + 1, + ), + kind: None, + }, + ), + optional_vars: Some( + Name( + ExprName { + range: 550..551, + id: "b", + ctx: Store, + }, + ), + ), + }, + ], + body: [ + Pass( + StmtPass { + range: 555..559, + }, + ), + ], + type_comment: None, + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__backspace_alias.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__backspace_alias.snap new file mode 100644 index 0000000000..11ee52f9fc --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__backspace_alias.snap @@ -0,0 +1,20 @@ +--- +source: crates/ruff_python_parser/src/string.rs +expression: parse_ast +--- +[ + Expr( + StmtExpr { + range: 0..15, + value: Constant( + ExprConstant { + range: 0..15, + value: Str( + "\u{8}", + ), + kind: None, + }, + ), + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__bell_alias.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__bell_alias.snap new file mode 100644 index 0000000000..3d40adcad1 --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__bell_alias.snap @@ -0,0 +1,20 @@ +--- +source: crates/ruff_python_parser/src/string.rs +expression: parse_ast +--- +[ + Expr( + StmtExpr { + range: 0..9, + value: Constant( + ExprConstant { + range: 0..9, + value: Str( + "\u{7}", + ), + kind: None, + }, + ), + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__carriage_return_alias.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__carriage_return_alias.snap new file mode 100644 index 0000000000..6b57141008 --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__carriage_return_alias.snap @@ -0,0 +1,20 @@ +--- +source: crates/ruff_python_parser/src/string.rs +expression: parse_ast +--- +[ + Expr( + StmtExpr { + range: 0..21, + value: Constant( + ExprConstant { + range: 0..21, + value: Str( + "\r", + ), + kind: None, + }, + ), + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__character_tabulation_with_justification_alias.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__character_tabulation_with_justification_alias.snap new file mode 100644 index 0000000000..b172239e13 --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__character_tabulation_with_justification_alias.snap @@ -0,0 +1,20 @@ +--- +source: crates/ruff_python_parser/src/string.rs +expression: parse_ast +--- +[ + Expr( + StmtExpr { + range: 0..45, + value: Constant( + ExprConstant { + range: 0..45, + value: Str( + "\u{89}", + ), + kind: None, + }, + ), + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__delete_alias.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__delete_alias.snap new file mode 100644 index 0000000000..9bd9b1231d --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__delete_alias.snap @@ -0,0 +1,20 @@ +--- +source: crates/ruff_python_parser/src/string.rs +expression: parse_ast +--- +[ + Expr( + StmtExpr { + range: 0..12, + value: Constant( + ExprConstant { + range: 0..12, + value: Str( + "\u{7f}", + ), + kind: None, + }, + ), + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__double_quoted_byte.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__double_quoted_byte.snap new file mode 100644 index 0000000000..1b6f47e27a --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__double_quoted_byte.snap @@ -0,0 +1,277 @@ +--- +source: crates/ruff_python_parser/src/string.rs +expression: parse_ast +--- +[ + Expr( + StmtExpr { + range: 0..738, + value: Constant( + ExprConstant { + range: 0..738, + value: Bytes( + [ + 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, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + ], + ), + kind: None, + }, + ), + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__escape_alias.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__escape_alias.snap new file mode 100644 index 0000000000..83ac74c136 --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__escape_alias.snap @@ -0,0 +1,20 @@ +--- +source: crates/ruff_python_parser/src/string.rs +expression: parse_ast +--- +[ + Expr( + StmtExpr { + range: 0..12, + value: Constant( + ExprConstant { + range: 0..12, + value: Str( + "\u{1b}", + ), + kind: None, + }, + ), + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__escape_char_in_byte_literal.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__escape_char_in_byte_literal.snap new file mode 100644 index 0000000000..c0da7019e9 --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__escape_char_in_byte_literal.snap @@ -0,0 +1,31 @@ +--- +source: crates/ruff_python_parser/src/string.rs +expression: parse_ast +--- +[ + Expr( + StmtExpr { + range: 0..13, + value: Constant( + ExprConstant { + range: 0..13, + value: Bytes( + [ + 111, + 109, + 107, + 109, + 111, + 107, + 92, + 88, + 97, + 97, + ], + ), + kind: None, + }, + ), + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__escape_octet.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__escape_octet.snap new file mode 100644 index 0000000000..856ca44647 --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__escape_octet.snap @@ -0,0 +1,26 @@ +--- +source: crates/ruff_python_parser/src/string.rs +expression: parse_ast +--- +[ + Expr( + StmtExpr { + range: 0..14, + value: Constant( + ExprConstant { + range: 0..14, + value: Bytes( + [ + 35, + 97, + 4, + 83, + 52, + ], + ), + kind: None, + }, + ), + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__form_feed_alias.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__form_feed_alias.snap new file mode 100644 index 0000000000..4773e4f2d3 --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__form_feed_alias.snap @@ -0,0 +1,20 @@ +--- +source: crates/ruff_python_parser/src/string.rs +expression: parse_ast +--- +[ + Expr( + StmtExpr { + range: 0..15, + value: Constant( + ExprConstant { + range: 0..15, + value: Str( + "\u{c}", + ), + kind: None, + }, + ), + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_constant_range.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_constant_range.snap new file mode 100644 index 0000000000..c0e8aabefa --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_constant_range.snap @@ -0,0 +1,73 @@ +--- +source: crates/ruff_python_parser/src/string.rs +expression: parse_ast +--- +[ + Expr( + StmtExpr { + range: 0..22, + value: JoinedStr( + ExprJoinedStr { + range: 0..22, + values: [ + Constant( + ExprConstant { + range: 2..5, + value: Str( + "aaa", + ), + kind: None, + }, + ), + FormattedValue( + ExprFormattedValue { + range: 5..10, + value: Name( + ExprName { + range: 6..9, + id: "bbb", + ctx: Load, + }, + ), + conversion: None, + format_spec: None, + }, + ), + Constant( + ExprConstant { + range: 10..13, + value: Str( + "ccc", + ), + kind: None, + }, + ), + FormattedValue( + ExprFormattedValue { + range: 13..18, + value: Name( + ExprName { + range: 14..17, + id: "ddd", + ctx: Load, + }, + ), + conversion: None, + format_spec: None, + }, + ), + Constant( + ExprConstant { + range: 18..21, + value: Str( + "eee", + ), + kind: None, + }, + ), + ], + }, + ), + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_escaped_character.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_escaped_character.snap new file mode 100644 index 0000000000..2d6e0045c1 --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_escaped_character.snap @@ -0,0 +1,41 @@ +--- +source: crates/ruff_python_parser/src/string.rs +expression: parse_ast +--- +[ + Expr( + StmtExpr { + range: 0..8, + value: JoinedStr( + ExprJoinedStr { + range: 0..8, + values: [ + Constant( + ExprConstant { + range: 2..4, + value: Str( + "\\", + ), + kind: None, + }, + ), + FormattedValue( + ExprFormattedValue { + range: 4..7, + value: Name( + ExprName { + range: 5..6, + id: "x", + ctx: Load, + }, + ), + conversion: None, + format_spec: None, + }, + ), + ], + }, + ), + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_escaped_newline.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_escaped_newline.snap new file mode 100644 index 0000000000..de96b801f5 --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_escaped_newline.snap @@ -0,0 +1,41 @@ +--- +source: crates/ruff_python_parser/src/string.rs +expression: parse_ast +--- +[ + Expr( + StmtExpr { + range: 0..8, + value: JoinedStr( + ExprJoinedStr { + range: 0..8, + values: [ + Constant( + ExprConstant { + range: 2..4, + value: Str( + "\n", + ), + kind: None, + }, + ), + FormattedValue( + ExprFormattedValue { + range: 4..7, + value: Name( + ExprName { + range: 5..6, + id: "x", + ctx: Load, + }, + ), + conversion: None, + format_spec: None, + }, + ), + ], + }, + ), + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_line_continuation.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_line_continuation.snap new file mode 100644 index 0000000000..27c6658435 --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_line_continuation.snap @@ -0,0 +1,41 @@ +--- +source: crates/ruff_python_parser/src/string.rs +expression: parse_ast +--- +[ + Expr( + StmtExpr { + range: 0..9, + value: JoinedStr( + ExprJoinedStr { + range: 0..9, + values: [ + Constant( + ExprConstant { + range: 3..5, + value: Str( + "\\\n", + ), + kind: None, + }, + ), + FormattedValue( + ExprFormattedValue { + range: 5..8, + value: Name( + ExprName { + range: 6..7, + id: "x", + ctx: Load, + }, + ), + conversion: None, + format_spec: None, + }, + ), + ], + }, + ), + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_parse_self_documenting_base.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_parse_self_documenting_base.snap new file mode 100644 index 0000000000..cfead70d89 --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_parse_self_documenting_base.snap @@ -0,0 +1,38 @@ +--- +source: crates/ruff_python_parser/src/string.rs +expression: parse_ast +--- +[ + Constant( + ExprConstant { + range: 2..9, + value: Str( + "user=", + ), + kind: None, + }, + ), + Constant( + ExprConstant { + range: 2..9, + value: Str( + "", + ), + kind: None, + }, + ), + FormattedValue( + ExprFormattedValue { + range: 2..9, + value: Name( + ExprName { + range: 3..7, + id: "user", + ctx: Load, + }, + ), + conversion: Repr, + format_spec: None, + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_parse_self_documenting_base_more.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_parse_self_documenting_base_more.snap new file mode 100644 index 0000000000..1edb76b71d --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_parse_self_documenting_base_more.snap @@ -0,0 +1,88 @@ +--- +source: crates/ruff_python_parser/src/string.rs +expression: parse_ast +--- +[ + Constant( + ExprConstant { + range: 2..6, + value: Str( + "mix ", + ), + kind: None, + }, + ), + Constant( + ExprConstant { + range: 6..13, + value: Str( + "user=", + ), + kind: None, + }, + ), + Constant( + ExprConstant { + range: 6..13, + value: Str( + "", + ), + kind: None, + }, + ), + FormattedValue( + ExprFormattedValue { + range: 6..13, + value: Name( + ExprName { + range: 7..11, + id: "user", + ctx: Load, + }, + ), + conversion: Repr, + format_spec: None, + }, + ), + Constant( + ExprConstant { + range: 13..28, + value: Str( + " with text and ", + ), + kind: None, + }, + ), + Constant( + ExprConstant { + range: 28..37, + value: Str( + "second=", + ), + kind: None, + }, + ), + Constant( + ExprConstant { + range: 28..37, + value: Str( + "", + ), + kind: None, + }, + ), + FormattedValue( + ExprFormattedValue { + range: 28..37, + value: Name( + ExprName { + range: 29..35, + id: "second", + ctx: Load, + }, + ), + conversion: Repr, + format_spec: None, + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_parse_self_documenting_format.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_parse_self_documenting_format.snap new file mode 100644 index 0000000000..44f9f1c3f9 --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_parse_self_documenting_format.snap @@ -0,0 +1,55 @@ +--- +source: crates/ruff_python_parser/src/string.rs +expression: parse_ast +--- +[ + Constant( + ExprConstant { + range: 2..13, + value: Str( + "user=", + ), + kind: None, + }, + ), + Constant( + ExprConstant { + range: 2..13, + value: Str( + "", + ), + kind: None, + }, + ), + FormattedValue( + ExprFormattedValue { + range: 2..13, + value: Name( + ExprName { + range: 3..7, + id: "user", + ctx: Load, + }, + ), + conversion: None, + format_spec: Some( + JoinedStr( + ExprJoinedStr { + range: 9..12, + values: [ + Constant( + ExprConstant { + range: 9..12, + value: Str( + ">10", + ), + kind: None, + }, + ), + ], + }, + ), + ), + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_unescaped_newline.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_unescaped_newline.snap new file mode 100644 index 0000000000..aded017797 --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__fstring_unescaped_newline.snap @@ -0,0 +1,41 @@ +--- +source: crates/ruff_python_parser/src/string.rs +expression: parse_ast +--- +[ + Expr( + StmtExpr { + range: 0..11, + value: JoinedStr( + ExprJoinedStr { + range: 0..11, + values: [ + Constant( + ExprConstant { + range: 4..5, + value: Str( + "\n", + ), + kind: None, + }, + ), + FormattedValue( + ExprFormattedValue { + range: 5..8, + value: Name( + ExprName { + range: 6..7, + id: "x", + ctx: Load, + }, + ), + conversion: None, + format_spec: None, + }, + ), + ], + }, + ), + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__hts_alias.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__hts_alias.snap new file mode 100644 index 0000000000..3d25aecfae --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__hts_alias.snap @@ -0,0 +1,20 @@ +--- +source: crates/ruff_python_parser/src/string.rs +expression: parse_ast +--- +[ + Expr( + StmtExpr { + range: 0..9, + value: Constant( + ExprConstant { + range: 0..9, + value: Str( + "\u{88}", + ), + kind: None, + }, + ), + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_empty_fstring.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_empty_fstring.snap new file mode 100644 index 0000000000..a1435da183 --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_empty_fstring.snap @@ -0,0 +1,5 @@ +--- +source: crates/ruff_python_parser/src/string.rs +expression: "parse_fstring(\"\").unwrap()" +--- +[] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_f_string_concat_1.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_f_string_concat_1.snap new file mode 100644 index 0000000000..5212d6292e --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_f_string_concat_1.snap @@ -0,0 +1,27 @@ +--- +source: crates/ruff_python_parser/src/string.rs +expression: parse_ast +--- +[ + Expr( + StmtExpr { + range: 0..17, + value: JoinedStr( + ExprJoinedStr { + range: 0..17, + values: [ + Constant( + ExprConstant { + range: 1..16, + value: Str( + "Hello world", + ), + kind: None, + }, + ), + ], + }, + ), + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_f_string_concat_2.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_f_string_concat_2.snap new file mode 100644 index 0000000000..5212d6292e --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_f_string_concat_2.snap @@ -0,0 +1,27 @@ +--- +source: crates/ruff_python_parser/src/string.rs +expression: parse_ast +--- +[ + Expr( + StmtExpr { + range: 0..17, + value: JoinedStr( + ExprJoinedStr { + range: 0..17, + values: [ + Constant( + ExprConstant { + range: 1..16, + value: Str( + "Hello world", + ), + kind: None, + }, + ), + ], + }, + ), + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_f_string_concat_3.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_f_string_concat_3.snap new file mode 100644 index 0000000000..6c013743b5 --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_f_string_concat_3.snap @@ -0,0 +1,43 @@ +--- +source: crates/ruff_python_parser/src/string.rs +expression: parse_ast +--- +[ + Expr( + StmtExpr { + range: 0..22, + value: JoinedStr( + ExprJoinedStr { + range: 0..22, + values: [ + Constant( + ExprConstant { + range: 1..16, + value: Str( + "Hello world", + ), + kind: None, + }, + ), + FormattedValue( + ExprFormattedValue { + range: 16..21, + value: Constant( + ExprConstant { + range: 17..20, + value: Str( + "!", + ), + kind: None, + }, + ), + conversion: None, + format_spec: None, + }, + ), + ], + }, + ), + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring.snap new file mode 100644 index 0000000000..dd2aa0da12 --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring.snap @@ -0,0 +1,43 @@ +--- +source: crates/ruff_python_parser/src/string.rs +expression: parse_ast +--- +[ + FormattedValue( + ExprFormattedValue { + range: 2..5, + value: Name( + ExprName { + range: 3..4, + id: "a", + ctx: Load, + }, + ), + conversion: None, + format_spec: None, + }, + ), + FormattedValue( + ExprFormattedValue { + range: 5..10, + value: Name( + ExprName { + range: 7..8, + id: "b", + ctx: Load, + }, + ), + conversion: None, + format_spec: None, + }, + ), + Constant( + ExprConstant { + range: 10..17, + value: Str( + "{foo}", + ), + kind: None, + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_equals.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_equals.snap new file mode 100644 index 0000000000..78f725e0ac --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_equals.snap @@ -0,0 +1,41 @@ +--- +source: crates/ruff_python_parser/src/string.rs +expression: parse_ast +--- +[ + FormattedValue( + ExprFormattedValue { + range: 2..12, + value: Compare( + ExprCompare { + range: 3..11, + left: Constant( + ExprConstant { + range: 3..5, + value: Int( + 42, + ), + kind: None, + }, + ), + ops: [ + Eq, + ], + comparators: [ + Constant( + ExprConstant { + range: 9..11, + value: Int( + 42, + ), + kind: None, + }, + ), + ], + }, + ), + conversion: None, + format_spec: None, + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_nested_spec.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_nested_spec.snap new file mode 100644 index 0000000000..23946314b2 --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_nested_spec.snap @@ -0,0 +1,42 @@ +--- +source: crates/ruff_python_parser/src/string.rs +expression: parse_ast +--- +[ + FormattedValue( + ExprFormattedValue { + range: 2..14, + value: Name( + ExprName { + range: 3..6, + id: "foo", + ctx: Load, + }, + ), + conversion: None, + format_spec: Some( + JoinedStr( + ExprJoinedStr { + range: 7..13, + values: [ + FormattedValue( + ExprFormattedValue { + range: 7..13, + value: Name( + ExprName { + range: 8..12, + id: "spec", + ctx: Load, + }, + ), + conversion: None, + format_spec: None, + }, + ), + ], + }, + ), + ), + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_not_equals.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_not_equals.snap new file mode 100644 index 0000000000..a96a9d3f5a --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_not_equals.snap @@ -0,0 +1,41 @@ +--- +source: crates/ruff_python_parser/src/string.rs +expression: parse_ast +--- +[ + FormattedValue( + ExprFormattedValue { + range: 2..10, + value: Compare( + ExprCompare { + range: 3..9, + left: Constant( + ExprConstant { + range: 3..4, + value: Int( + 1, + ), + kind: None, + }, + ), + ops: [ + NotEq, + ], + comparators: [ + Constant( + ExprConstant { + range: 8..9, + value: Int( + 2, + ), + kind: None, + }, + ), + ], + }, + ), + conversion: None, + format_spec: None, + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_not_nested_spec.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_not_nested_spec.snap new file mode 100644 index 0000000000..f5dc85c04c --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_not_nested_spec.snap @@ -0,0 +1,37 @@ +--- +source: crates/ruff_python_parser/src/string.rs +expression: parse_ast +--- +[ + FormattedValue( + ExprFormattedValue { + range: 2..12, + value: Name( + ExprName { + range: 3..6, + id: "foo", + ctx: Load, + }, + ), + conversion: None, + format_spec: Some( + JoinedStr( + ExprJoinedStr { + range: 7..11, + values: [ + Constant( + ExprConstant { + range: 7..11, + value: Str( + "spec", + ), + kind: None, + }, + ), + ], + }, + ), + ), + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_self_doc_prec_space.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_self_doc_prec_space.snap new file mode 100644 index 0000000000..99eb52b8ff --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_self_doc_prec_space.snap @@ -0,0 +1,38 @@ +--- +source: crates/ruff_python_parser/src/string.rs +expression: parse_ast +--- +[ + Constant( + ExprConstant { + range: 2..9, + value: Str( + "x =", + ), + kind: None, + }, + ), + Constant( + ExprConstant { + range: 2..9, + value: Str( + "", + ), + kind: None, + }, + ), + FormattedValue( + ExprFormattedValue { + range: 2..9, + value: Name( + ExprName { + range: 3..4, + id: "x", + ctx: Load, + }, + ), + conversion: Repr, + format_spec: None, + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_self_doc_trailing_space.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_self_doc_trailing_space.snap new file mode 100644 index 0000000000..0eee93cd14 --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_self_doc_trailing_space.snap @@ -0,0 +1,38 @@ +--- +source: crates/ruff_python_parser/src/string.rs +expression: parse_ast +--- +[ + Constant( + ExprConstant { + range: 2..9, + value: Str( + "x=", + ), + kind: None, + }, + ), + Constant( + ExprConstant { + range: 2..9, + value: Str( + " ", + ), + kind: None, + }, + ), + FormattedValue( + ExprFormattedValue { + range: 2..9, + value: Name( + ExprName { + range: 3..4, + id: "x", + ctx: Load, + }, + ), + conversion: Repr, + format_spec: None, + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_yield_expr.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_yield_expr.snap new file mode 100644 index 0000000000..fbc63610ed --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_fstring_yield_expr.snap @@ -0,0 +1,19 @@ +--- +source: crates/ruff_python_parser/src/string.rs +expression: parse_ast +--- +[ + FormattedValue( + ExprFormattedValue { + range: 2..9, + value: Yield( + ExprYield { + range: 3..8, + value: None, + }, + ), + conversion: None, + format_spec: None, + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_string_concat.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_string_concat.snap new file mode 100644 index 0000000000..68f419ced0 --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_string_concat.snap @@ -0,0 +1,20 @@ +--- +source: crates/ruff_python_parser/src/string.rs +expression: parse_ast +--- +[ + Expr( + StmtExpr { + range: 0..16, + value: Constant( + ExprConstant { + range: 0..16, + value: Str( + "Hello world", + ), + kind: None, + }, + ), + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_string_triple_quotes_with_kind.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_string_triple_quotes_with_kind.snap new file mode 100644 index 0000000000..b6561e362d --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_string_triple_quotes_with_kind.snap @@ -0,0 +1,22 @@ +--- +source: crates/ruff_python_parser/src/string.rs +expression: parse_ast +--- +[ + Expr( + StmtExpr { + range: 0..20, + value: Constant( + ExprConstant { + range: 0..20, + value: Str( + "Hello, world!", + ), + kind: Some( + "u", + ), + }, + ), + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_u_f_string_concat_1.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_u_f_string_concat_1.snap new file mode 100644 index 0000000000..51f75d9b69 --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_u_f_string_concat_1.snap @@ -0,0 +1,29 @@ +--- +source: crates/ruff_python_parser/src/string.rs +expression: parse_ast +--- +[ + Expr( + StmtExpr { + range: 0..18, + value: JoinedStr( + ExprJoinedStr { + range: 0..18, + values: [ + Constant( + ExprConstant { + range: 2..17, + value: Str( + "Hello world", + ), + kind: Some( + "u", + ), + }, + ), + ], + }, + ), + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_u_f_string_concat_2.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_u_f_string_concat_2.snap new file mode 100644 index 0000000000..30f7c37ff0 --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_u_f_string_concat_2.snap @@ -0,0 +1,29 @@ +--- +source: crates/ruff_python_parser/src/string.rs +expression: parse_ast +--- +[ + Expr( + StmtExpr { + range: 0..22, + value: JoinedStr( + ExprJoinedStr { + range: 0..22, + values: [ + Constant( + ExprConstant { + range: 2..21, + value: Str( + "Hello world!", + ), + kind: Some( + "u", + ), + }, + ), + ], + }, + ), + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_u_string_concat_1.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_u_string_concat_1.snap new file mode 100644 index 0000000000..629c241e8e --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_u_string_concat_1.snap @@ -0,0 +1,20 @@ +--- +source: crates/ruff_python_parser/src/string.rs +expression: parse_ast +--- +[ + Expr( + StmtExpr { + range: 0..17, + value: Constant( + ExprConstant { + range: 0..17, + value: Str( + "Hello world", + ), + kind: None, + }, + ), + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_u_string_concat_2.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_u_string_concat_2.snap new file mode 100644 index 0000000000..f89a6bd7f7 --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__parse_u_string_concat_2.snap @@ -0,0 +1,22 @@ +--- +source: crates/ruff_python_parser/src/string.rs +expression: parse_ast +--- +[ + Expr( + StmtExpr { + range: 0..17, + value: Constant( + ExprConstant { + range: 0..17, + value: Str( + "Hello world", + ), + kind: Some( + "u", + ), + }, + ), + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__raw_byte_literal_1.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__raw_byte_literal_1.snap new file mode 100644 index 0000000000..55f2380f02 --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__raw_byte_literal_1.snap @@ -0,0 +1,25 @@ +--- +source: crates/ruff_python_parser/src/string.rs +expression: parse_ast +--- +[ + Expr( + StmtExpr { + range: 0..8, + value: Constant( + ExprConstant { + range: 0..8, + value: Bytes( + [ + 92, + 120, + 49, + 122, + ], + ), + kind: None, + }, + ), + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__raw_byte_literal_2.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__raw_byte_literal_2.snap new file mode 100644 index 0000000000..8a44d4ee8f --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__raw_byte_literal_2.snap @@ -0,0 +1,23 @@ +--- +source: crates/ruff_python_parser/src/string.rs +expression: parse_ast +--- +[ + Expr( + StmtExpr { + range: 0..6, + value: Constant( + ExprConstant { + range: 0..6, + value: Bytes( + [ + 92, + 92, + ], + ), + kind: None, + }, + ), + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__raw_fstring.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__raw_fstring.snap new file mode 100644 index 0000000000..dc1738dfda --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__raw_fstring.snap @@ -0,0 +1,32 @@ +--- +source: crates/ruff_python_parser/src/string.rs +expression: parse_ast +--- +[ + Expr( + StmtExpr { + range: 0..7, + value: JoinedStr( + ExprJoinedStr { + range: 0..7, + values: [ + FormattedValue( + ExprFormattedValue { + range: 3..6, + value: Name( + ExprName { + range: 4..5, + id: "x", + ctx: Load, + }, + ), + conversion: None, + format_spec: None, + }, + ), + ], + }, + ), + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__single_quoted_byte.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__single_quoted_byte.snap new file mode 100644 index 0000000000..1b6f47e27a --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__single_quoted_byte.snap @@ -0,0 +1,277 @@ +--- +source: crates/ruff_python_parser/src/string.rs +expression: parse_ast +--- +[ + Expr( + StmtExpr { + range: 0..738, + value: Constant( + ExprConstant { + range: 0..738, + value: Bytes( + [ + 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, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + ], + ), + kind: None, + }, + ), + }, + ), +] diff --git a/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__triple_quoted_raw_fstring.snap b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__triple_quoted_raw_fstring.snap new file mode 100644 index 0000000000..862e87d1c6 --- /dev/null +++ b/crates/ruff_python_parser/src/snapshots/ruff_python_parser__string__tests__triple_quoted_raw_fstring.snap @@ -0,0 +1,32 @@ +--- +source: crates/ruff_python_parser/src/string.rs +expression: parse_ast +--- +[ + Expr( + StmtExpr { + range: 0..11, + value: JoinedStr( + ExprJoinedStr { + range: 0..11, + values: [ + FormattedValue( + ExprFormattedValue { + range: 5..8, + value: Name( + ExprName { + range: 6..7, + id: "x", + ctx: Load, + }, + ), + conversion: None, + format_spec: None, + }, + ), + ], + }, + ), + }, + ), +] diff --git a/crates/ruff_python_parser/src/soft_keywords.rs b/crates/ruff_python_parser/src/soft_keywords.rs new file mode 100644 index 0000000000..9b30199bc7 --- /dev/null +++ b/crates/ruff_python_parser/src/soft_keywords.rs @@ -0,0 +1,167 @@ +use crate::{lexer::LexResult, token::Tok, Mode}; +use itertools::{Itertools, MultiPeek}; + +/// An [`Iterator`] that transforms a token stream to accommodate soft keywords (namely, `match` +/// `case`, and `type`). +/// +/// [PEP 634](https://www.python.org/dev/peps/pep-0634/) introduced the `match` and `case` keywords +/// as soft keywords, meaning that they can be used as identifiers (e.g., variable names) in certain +/// contexts. +/// +/// Later, [PEP 695](https://peps.python.org/pep-0695/#generic-type-alias) introduced the `type` +/// soft keyword. +/// +/// This function modifies a token stream to accommodate this change. In particular, it replaces +/// soft keyword tokens with `identifier` tokens if they are used as identifiers. +/// +/// Handling soft keywords in this intermediary pass allows us to simplify both the lexer and +/// `ruff_python_parser`, as neither of them need to be aware of soft keywords. +pub struct SoftKeywordTransformer +where + I: Iterator, +{ + underlying: MultiPeek, + start_of_line: bool, +} + +impl SoftKeywordTransformer +where + I: Iterator, +{ + pub fn new(lexer: I, mode: Mode) -> Self { + Self { + underlying: lexer.multipeek(), // spell-checker:ignore multipeek + start_of_line: matches!(mode, Mode::Interactive | Mode::Module), + } + } +} + +impl Iterator for SoftKeywordTransformer +where + I: Iterator, +{ + type Item = LexResult; + + #[inline] + fn next(&mut self) -> Option { + let mut next = self.underlying.next(); + if let Some(Ok((tok, range))) = next.as_ref() { + // If the token is a soft keyword e.g. `type`, `match`, or `case`, check if it's + // used as an identifier. We assume every soft keyword use is an identifier unless + // a heuristic is met. + + match tok { + // For `match` and `case`, all of the following conditions must be met: + // 1. The token is at the start of a logical line. + // 2. The logical line contains a top-level colon (that is, a colon that is not nested + // inside a parenthesized expression, list, or dictionary). + // 3. The top-level colon is not the immediate sibling of a `match` or `case` token. + // (This is to avoid treating `match` or `case` as identifiers when annotated with + // type hints.) type hints.) + Tok::Match | Tok::Case => { + if self.start_of_line { + let mut nesting = 0; + let mut first = true; + let mut seen_colon = false; + let mut seen_lambda = false; + while let Some(Ok((tok, _))) = self.underlying.peek() { + match tok { + Tok::Newline => break, + Tok::Lambda if nesting == 0 => seen_lambda = true, + Tok::Colon if nesting == 0 => { + if seen_lambda { + seen_lambda = false; + } else if !first { + seen_colon = true; + } + } + Tok::Lpar | Tok::Lsqb | Tok::Lbrace => nesting += 1, + Tok::Rpar | Tok::Rsqb | Tok::Rbrace => nesting -= 1, + _ => {} + } + first = false; + } + if !seen_colon { + next = Some(Ok((soft_to_name(tok), *range))); + } + } else { + next = Some(Ok((soft_to_name(tok), *range))); + } + } + // For `type` all of the following conditions must be met: + // 1. The token is at the start of a logical line. + // 2. The type token is immediately followed by a name token. + // 3. The name token is eventually followed by an equality token. + Tok::Type => { + if self.start_of_line { + let mut is_type_alias = false; + if let Some(Ok((tok, _))) = self.underlying.peek() { + if matches!( + tok, + Tok::Name { .. } | + // We treat a soft keyword token following a type token as a + // name to support cases like `type type = int` or `type match = int` + Tok::Type | Tok::Match | Tok::Case + ) { + let mut nesting = 0; + while let Some(Ok((tok, _))) = self.underlying.peek() { + match tok { + Tok::Newline => break, + Tok::Equal if nesting == 0 => { + is_type_alias = true; + break; + } + Tok::Lsqb => nesting += 1, + Tok::Rsqb => nesting -= 1, + // Allow arbitrary content within brackets for now + _ if nesting > 0 => {} + // Exit if unexpected tokens are seen + _ => break, + } + } + } + } + if !is_type_alias { + next = Some(Ok((soft_to_name(tok), *range))); + } + } else { + next = Some(Ok((soft_to_name(tok), *range))); + } + } + _ => (), // Not a soft keyword token + } + } + + self.start_of_line = next.as_ref().map_or(false, |lex_result| { + lex_result.as_ref().map_or(false, |(tok, _)| { + if matches!(tok, Tok::NonLogicalNewline | Tok::Comment { .. }) { + return self.start_of_line; + } + + matches!( + tok, + Tok::StartModule + | Tok::StartInteractive + | Tok::Newline + | Tok::Indent + | Tok::Dedent + ) + }) + }); + + next + } +} + +#[inline] +fn soft_to_name(tok: &Tok) -> Tok { + let name = match tok { + Tok::Match => "match", + Tok::Case => "case", + Tok::Type => "type", + _ => unreachable!("other tokens never reach here"), + }; + Tok::Name { + name: name.to_owned(), + } +} diff --git a/crates/ruff_python_parser/src/string.rs b/crates/ruff_python_parser/src/string.rs new file mode 100644 index 0000000000..230268106c --- /dev/null +++ b/crates/ruff_python_parser/src/string.rs @@ -0,0 +1,1115 @@ +use itertools::Itertools; + +use ruff_python_ast::{self as ast, Constant, Expr}; +use ruff_python_ast::{ConversionFlag, Ranged}; +use ruff_text_size::{TextLen, TextRange, TextSize}; + +// Contains the logic for parsing string literals (mostly concerned with f-strings.) +// +// The lexer doesn't do any special handling of f-strings, it just treats them as +// regular strings. Since the ruff_python_parser has no definition of f-string formats (Pending PEP 701) +// we have to do the parsing here, manually. +use crate::{ + lexer::{LexicalError, LexicalErrorType}, + parser::{ParseError, ParseErrorType}, + token::{StringKind, Tok}, + Parse, +}; + +// unicode_name2 does not expose `MAX_NAME_LENGTH`, so we replicate that constant here, fix #3798 +const MAX_UNICODE_NAME: usize = 88; + +struct StringParser<'a> { + chars: std::str::Chars<'a>, + kind: StringKind, + location: TextSize, +} + +impl<'a> StringParser<'a> { + fn new(source: &'a str, kind: StringKind, triple_quoted: bool, start: TextSize) -> Self { + let offset = kind.prefix_len() + + if triple_quoted { + TextSize::from(3) + } else { + TextSize::from(1) + }; + Self { + chars: source.chars(), + kind, + location: start + offset, + } + } + + #[inline] + fn next_char(&mut self) -> Option { + let c = self.chars.next()?; + self.location += c.text_len(); + Some(c) + } + + #[inline] + fn peek(&mut self) -> Option { + self.chars.clone().next() + } + + #[inline] + fn peek2(&mut self) -> Option { + let mut chars = self.chars.clone(); + chars.next(); + chars.next() + } + + #[inline] + fn get_pos(&self) -> TextSize { + self.location + } + + #[inline] + fn range(&self, start_location: TextSize) -> TextRange { + TextRange::new(start_location, self.location) + } + + fn parse_unicode_literal(&mut self, literal_number: usize) -> Result { + let mut p: u32 = 0u32; + let unicode_error = LexicalError::new(LexicalErrorType::UnicodeError, self.get_pos()); + for i in 1..=literal_number { + match self.next_char() { + Some(c) => match c.to_digit(16) { + Some(d) => p += d << ((literal_number - i) * 4), + None => return Err(unicode_error), + }, + None => return Err(unicode_error), + } + } + match p { + 0xD800..=0xDFFF => Ok(std::char::REPLACEMENT_CHARACTER), + _ => std::char::from_u32(p).ok_or(unicode_error), + } + } + + fn parse_octet(&mut self, first: char) -> char { + let mut octet_content = String::new(); + octet_content.push(first); + while octet_content.len() < 3 { + if let Some('0'..='7') = self.peek() { + octet_content.push(self.next_char().unwrap()); + } else { + break; + } + } + let value = u32::from_str_radix(&octet_content, 8).unwrap(); + char::from_u32(value).unwrap() + } + + fn parse_unicode_name(&mut self) -> Result { + let start_pos = self.get_pos(); + match self.next_char() { + Some('{') => {} + _ => return Err(LexicalError::new(LexicalErrorType::StringError, start_pos)), + } + let start_pos = self.get_pos(); + let mut name = String::new(); + loop { + match self.next_char() { + Some('}') => break, + Some(c) => name.push(c), + None => { + return Err(LexicalError::new( + LexicalErrorType::StringError, + self.get_pos(), + )) + } + } + } + + if name.len() > MAX_UNICODE_NAME { + return Err(LexicalError::new( + LexicalErrorType::UnicodeError, + self.get_pos(), + )); + } + + unicode_names2::character(&name) + .ok_or_else(|| LexicalError::new(LexicalErrorType::UnicodeError, start_pos)) + } + + fn parse_escaped_char(&mut self) -> Result { + match self.next_char() { + Some(c) => { + let char = match c { + '\\' => '\\', + '\'' => '\'', + '\"' => '"', + 'a' => '\x07', + 'b' => '\x08', + 'f' => '\x0c', + 'n' => '\n', + 'r' => '\r', + 't' => '\t', + 'v' => '\x0b', + o @ '0'..='7' => self.parse_octet(o), + 'x' => self.parse_unicode_literal(2)?, + 'u' if !self.kind.is_any_bytes() => self.parse_unicode_literal(4)?, + 'U' if !self.kind.is_any_bytes() => self.parse_unicode_literal(8)?, + 'N' if !self.kind.is_any_bytes() => self.parse_unicode_name()?, + // Special cases where the escape sequence is not a single character + '\n' => return Ok(String::new()), + c => { + if self.kind.is_any_bytes() && !c.is_ascii() { + return Err(LexicalError { + error: LexicalErrorType::OtherError( + "bytes can only contain ASCII literal characters".to_owned(), + ), + location: self.get_pos(), + }); + } + return Ok(format!("\\{c}")); + } + }; + Ok(char.to_string()) + } + None => Err(LexicalError { + error: LexicalErrorType::StringError, + location: self.get_pos(), + }), + } + } + + fn parse_formatted_value(&mut self, nested: u8) -> Result, LexicalError> { + use FStringErrorType::{ + EmptyExpression, InvalidConversionFlag, InvalidExpression, MismatchedDelimiter, + UnclosedLbrace, Unmatched, UnterminatedString, + }; + + let mut expression = String::new(); + let mut spec = None; + let mut delimiters = Vec::new(); + let mut conversion = ConversionFlag::None; + let mut self_documenting = false; + let mut trailing_seq = String::new(); + let start_location = self.get_pos(); + + assert_eq!(self.next_char(), Some('{')); + + while let Some(ch) = self.next_char() { + match ch { + // can be integrated better with the remaining code, but as a starting point ok + // in general I would do here a tokenizing of the fstrings to omit this peeking. + '!' | '=' | '>' | '<' if self.peek() == Some('=') => { + expression.push(ch); + expression.push('='); + self.next_char(); + } + '!' if delimiters.is_empty() && self.peek() != Some('=') => { + if expression.trim().is_empty() { + return Err(FStringError::new(EmptyExpression, self.get_pos()).into()); + } + + conversion = match self.next_char() { + Some('s') => ConversionFlag::Str, + Some('a') => ConversionFlag::Ascii, + Some('r') => ConversionFlag::Repr, + Some(_) => { + return Err( + FStringError::new(InvalidConversionFlag, self.get_pos()).into() + ); + } + None => { + return Err(FStringError::new(UnclosedLbrace, self.get_pos()).into()); + } + }; + + match self.peek() { + Some('}' | ':') => {} + Some(_) | None => { + return Err(FStringError::new(UnclosedLbrace, self.get_pos()).into()); + } + } + } + + // match a python 3.8 self documenting expression + // format '{' PYTHON_EXPRESSION '=' FORMAT_SPECIFIER? '}' + '=' if self.peek() != Some('=') && delimiters.is_empty() => { + self_documenting = true; + } + + ':' if delimiters.is_empty() => { + let start_location = self.get_pos(); + let parsed_spec = self.parse_spec(nested)?; + + spec = Some(Box::new(Expr::from(ast::ExprJoinedStr { + values: parsed_spec, + range: self.range(start_location), + }))); + } + '(' | '{' | '[' => { + expression.push(ch); + delimiters.push(ch); + } + ')' => { + let last_delim = delimiters.pop(); + match last_delim { + Some('(') => { + expression.push(ch); + } + Some(c) => { + return Err(FStringError::new( + MismatchedDelimiter(c, ')'), + self.get_pos(), + ) + .into()); + } + None => { + return Err(FStringError::new(Unmatched(')'), self.get_pos()).into()); + } + } + } + ']' => { + let last_delim = delimiters.pop(); + match last_delim { + Some('[') => { + expression.push(ch); + } + Some(c) => { + return Err(FStringError::new( + MismatchedDelimiter(c, ']'), + self.get_pos(), + ) + .into()); + } + None => { + return Err(FStringError::new(Unmatched(']'), self.get_pos()).into()); + } + } + } + '}' if !delimiters.is_empty() => { + let last_delim = delimiters.pop(); + match last_delim { + Some('{') => { + expression.push(ch); + } + Some(c) => { + return Err(FStringError::new( + MismatchedDelimiter(c, '}'), + self.get_pos(), + ) + .into()); + } + None => {} + } + } + '}' => { + if expression.trim().is_empty() { + return Err(FStringError::new(EmptyExpression, self.get_pos()).into()); + } + + let ret = if self_documenting { + // TODO: range is wrong but `self_documenting` needs revisiting beyond + // ranges: https://github.com/astral-sh/ruff/issues/5970 + vec![ + Expr::from(ast::ExprConstant { + value: Constant::Str(expression.clone() + "="), + kind: None, + range: self.range(start_location), + }), + Expr::from(ast::ExprConstant { + value: trailing_seq.into(), + kind: None, + range: self.range(start_location), + }), + Expr::from(ast::ExprFormattedValue { + value: Box::new( + parse_fstring_expr(&expression, start_location).map_err( + |e| { + FStringError::new( + InvalidExpression(Box::new(e.error)), + start_location, + ) + }, + )?, + ), + conversion: if conversion == ConversionFlag::None && spec.is_none() + { + ConversionFlag::Repr + } else { + conversion + }, + format_spec: spec, + range: self.range(start_location), + }), + ] + } else { + vec![Expr::from(ast::ExprFormattedValue { + value: Box::new( + parse_fstring_expr(&expression, start_location).map_err(|e| { + FStringError::new( + InvalidExpression(Box::new(e.error)), + start_location, + ) + })?, + ), + conversion, + format_spec: spec, + range: self.range(start_location), + })] + }; + return Ok(ret); + } + '"' | '\'' => { + expression.push(ch); + loop { + let Some(c) = self.next_char() else { + return Err( + FStringError::new(UnterminatedString, self.get_pos()).into() + ); + }; + expression.push(c); + if c == ch { + break; + } + } + } + ' ' if self_documenting => { + trailing_seq.push(ch); + } + '\\' => return Err(FStringError::new(UnterminatedString, self.get_pos()).into()), + _ => { + if self_documenting { + return Err(FStringError::new(UnclosedLbrace, self.get_pos()).into()); + } + + expression.push(ch); + } + } + } + Err(FStringError::new(UnclosedLbrace, self.get_pos()).into()) + } + + fn parse_spec(&mut self, nested: u8) -> Result, LexicalError> { + let mut spec_constructor = Vec::new(); + let mut constant_piece = String::new(); + let mut start_location = self.get_pos(); + while let Some(next) = self.peek() { + match next { + '{' => { + if !constant_piece.is_empty() { + spec_constructor.push(Expr::from(ast::ExprConstant { + value: constant_piece.drain(..).collect::().into(), + kind: None, + range: self.range(start_location), + })); + } + let parsed_expr = self.parse_fstring(nested + 1)?; + spec_constructor.extend(parsed_expr); + start_location = self.get_pos(); + continue; + } + '}' => { + break; + } + _ => { + constant_piece.push(next); + } + } + self.next_char(); + } + if !constant_piece.is_empty() { + spec_constructor.push(Expr::from(ast::ExprConstant { + value: constant_piece.drain(..).collect::().into(), + kind: None, + range: self.range(start_location), + })); + } + Ok(spec_constructor) + } + + fn parse_fstring(&mut self, nested: u8) -> Result, LexicalError> { + use FStringErrorType::{ExpressionNestedTooDeeply, SingleRbrace, UnclosedLbrace}; + + if nested >= 2 { + return Err(FStringError::new(ExpressionNestedTooDeeply, self.get_pos()).into()); + } + + let mut content = String::new(); + let mut start_location = self.get_pos(); + let mut values = vec![]; + + while let Some(ch) = self.peek() { + match ch { + '{' => { + if nested == 0 { + match self.peek2() { + Some('{') => { + self.next_char(); + self.next_char(); + content.push('{'); + continue; + } + None => { + return Err(FStringError::new(UnclosedLbrace, self.get_pos()).into()) + } + _ => {} + } + } + if !content.is_empty() { + values.push(Expr::from(ast::ExprConstant { + value: content.drain(..).collect::().into(), + kind: None, + range: self.range(start_location), + })); + } + + let parsed_values = self.parse_formatted_value(nested)?; + values.extend(parsed_values); + start_location = self.get_pos(); + } + '}' => { + if nested > 0 { + break; + } + self.next_char(); + if let Some('}') = self.peek() { + self.next_char(); + content.push('}'); + } else { + return Err(FStringError::new(SingleRbrace, self.get_pos()).into()); + } + } + '\\' if !self.kind.is_raw() => { + self.next_char(); + content.push_str(&self.parse_escaped_char()?); + } + _ => { + content.push(ch); + self.next_char(); + } + } + } + + if !content.is_empty() { + values.push(Expr::from(ast::ExprConstant { + value: content.into(), + kind: None, + range: self.range(start_location), + })); + } + + Ok(values) + } + + fn parse_bytes(&mut self) -> Result { + let mut content = String::new(); + let start_location = self.get_pos(); + while let Some(ch) = self.next_char() { + match ch { + '\\' if !self.kind.is_raw() => { + content.push_str(&self.parse_escaped_char()?); + } + ch => { + if !ch.is_ascii() { + return Err(LexicalError::new( + LexicalErrorType::OtherError( + "bytes can only contain ASCII literal characters".to_string(), + ), + self.get_pos(), + )); + } + content.push(ch); + } + } + } + + Ok(Expr::from(ast::ExprConstant { + value: Constant::Bytes(content.chars().map(|c| c as u8).collect()), + kind: None, + range: self.range(start_location), + })) + } + + fn parse_string(&mut self) -> Result { + let mut content = String::new(); + let start_location = self.get_pos(); + while let Some(ch) = self.next_char() { + match ch { + '\\' if !self.kind.is_raw() => { + content.push_str(&self.parse_escaped_char()?); + } + ch => content.push(ch), + } + } + Ok(Expr::from(ast::ExprConstant { + value: Constant::Str(content), + kind: self.kind.is_unicode().then(|| "u".to_string()), + range: self.range(start_location), + })) + } + + fn parse(&mut self) -> Result, LexicalError> { + if self.kind.is_any_fstring() { + self.parse_fstring(0) + } else if self.kind.is_any_bytes() { + self.parse_bytes().map(|expr| vec![expr]) + } else { + self.parse_string().map(|expr| vec![expr]) + } + } +} + +fn parse_fstring_expr(source: &str, location: TextSize) -> Result { + let fstring_body = format!("({source})"); + ast::Expr::parse_starts_at(&fstring_body, "", location) +} + +fn parse_string( + source: &str, + kind: StringKind, + triple_quoted: bool, + start: TextSize, +) -> Result, LexicalError> { + StringParser::new(source, kind, triple_quoted, start).parse() +} + +pub(crate) fn parse_strings( + values: Vec<(TextSize, (String, StringKind, bool), TextSize)>, +) -> Result { + // Preserve the initial location and kind. + let initial_start = values[0].0; + let last_end = values.last().unwrap().2; + let initial_kind = (values[0].1 .1 == StringKind::Unicode).then(|| "u".to_owned()); + let has_fstring = values + .iter() + .any(|(_, (_, kind, ..), _)| kind.is_any_fstring()); + let num_bytes = values + .iter() + .filter(|(_, (_, kind, ..), _)| kind.is_any_bytes()) + .count(); + let has_bytes = num_bytes > 0; + + if has_bytes && num_bytes < values.len() { + return Err(LexicalError { + error: LexicalErrorType::OtherError( + "cannot mix bytes and nonbytes literals".to_owned(), + ), + location: initial_start, + }); + } + + if has_bytes { + let mut content: Vec = vec![]; + for (start, (source, kind, triple_quoted), _) in values { + for value in parse_string(&source, kind, triple_quoted, start)? { + match value { + Expr::Constant(ast::ExprConstant { + value: Constant::Bytes(value), + .. + }) => content.extend(value), + _ => unreachable!("Unexpected non-bytes expression."), + } + } + } + return Ok(ast::ExprConstant { + value: Constant::Bytes(content), + kind: None, + range: TextRange::new(initial_start, last_end), + } + .into()); + } + + if !has_fstring { + let mut content: Vec = vec![]; + for (start, (source, kind, triple_quoted), _) in values { + for value in parse_string(&source, kind, triple_quoted, start)? { + match value { + Expr::Constant(ast::ExprConstant { + value: Constant::Str(value), + .. + }) => content.push(value), + _ => unreachable!("Unexpected non-string expression."), + } + } + } + return Ok(ast::ExprConstant { + value: Constant::Str(content.join("")), + kind: initial_kind, + range: TextRange::new(initial_start, last_end), + } + .into()); + } + + // De-duplicate adjacent constants. + let mut deduped: Vec = vec![]; + let mut current: Vec = vec![]; + let mut current_start = initial_start; + let mut current_end = last_end; + + let take_current = |current: &mut Vec, start, end| -> Expr { + Expr::Constant(ast::ExprConstant { + value: Constant::Str(current.drain(..).join("")), + kind: initial_kind.clone(), + range: TextRange::new(start, end), + }) + }; + + for (start, (source, kind, triple_quoted), _) in values { + for value in parse_string(&source, kind, triple_quoted, start)? { + let value_range = value.range(); + match value { + Expr::FormattedValue { .. } => { + if !current.is_empty() { + deduped.push(take_current(&mut current, current_start, current_end)); + } + deduped.push(value); + } + Expr::Constant(ast::ExprConstant { + value: Constant::Str(inner), + .. + }) => { + if current.is_empty() { + current_start = value_range.start(); + } + current_end = value_range.end(); + current.push(inner); + } + _ => unreachable!("Unexpected non-string expression."), + } + } + } + if !current.is_empty() { + deduped.push(take_current(&mut current, current_start, current_end)); + } + + Ok(Expr::JoinedStr(ast::ExprJoinedStr { + values: deduped, + range: TextRange::new(initial_start, last_end), + })) +} + +// TODO: consolidate these with ParseError +/// An error that occurred during parsing of an f-string. +#[derive(Debug, PartialEq)] +struct FStringError { + /// The type of error that occurred. + pub(crate) error: FStringErrorType, + /// The location of the error. + pub(crate) location: TextSize, +} + +impl FStringError { + /// Creates a new `FStringError` with the given error type and location. + pub(crate) fn new(error: FStringErrorType, location: TextSize) -> Self { + Self { error, location } + } +} + +impl From for LexicalError { + fn from(err: FStringError) -> Self { + LexicalError { + error: LexicalErrorType::FStringError(err.error), + location: err.location, + } + } +} + +/// Represents the different types of errors that can occur during parsing of an f-string. +#[derive(Debug, PartialEq)] +pub enum FStringErrorType { + /// Expected a right brace after an opened left brace. + UnclosedLbrace, + /// Expected a left brace after an ending right brace. + UnopenedRbrace, + /// Expected a right brace after a conversion flag. + ExpectedRbrace, + /// An error occurred while parsing an f-string expression. + InvalidExpression(Box), + /// An invalid conversion flag was encountered. + InvalidConversionFlag, + /// An empty expression was encountered. + EmptyExpression, + /// An opening delimiter was not closed properly. + MismatchedDelimiter(char, char), + /// Too many nested expressions in an f-string. + ExpressionNestedTooDeeply, + /// The f-string expression cannot include the given character. + ExpressionCannotInclude(char), + /// A single right brace was encountered. + SingleRbrace, + /// A closing delimiter was not opened properly. + Unmatched(char), + // TODO: Test this case. + /// Unterminated string. + UnterminatedString, +} + +impl std::fmt::Display for FStringErrorType { + fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { + use FStringErrorType::{ + EmptyExpression, ExpectedRbrace, ExpressionCannotInclude, ExpressionNestedTooDeeply, + InvalidConversionFlag, InvalidExpression, MismatchedDelimiter, SingleRbrace, + UnclosedLbrace, Unmatched, UnopenedRbrace, UnterminatedString, + }; + match self { + UnclosedLbrace => write!(f, "expecting '}}'"), + UnopenedRbrace => write!(f, "Unopened '}}'"), + ExpectedRbrace => write!(f, "Expected '}}' after conversion flag."), + InvalidExpression(error) => { + write!(f, "{error}") + } + InvalidConversionFlag => write!(f, "invalid conversion character"), + EmptyExpression => write!(f, "empty expression not allowed"), + MismatchedDelimiter(first, second) => write!( + f, + "closing parenthesis '{second}' does not match opening parenthesis '{first}'" + ), + SingleRbrace => write!(f, "single '}}' is not allowed"), + Unmatched(delim) => write!(f, "unmatched '{delim}'"), + ExpressionNestedTooDeeply => { + write!(f, "expressions nested too deeply") + } + UnterminatedString => { + write!(f, "unterminated string") + } + ExpressionCannotInclude(c) => { + if *c == '\\' { + write!(f, "f-string expression part cannot include a backslash") + } else { + write!(f, "f-string expression part cannot include '{c}'s") + } + } + } + } +} + +impl From for crate::parser::LalrpopError { + fn from(err: FStringError) -> Self { + lalrpop_util::ParseError::User { + error: LexicalError { + error: LexicalErrorType::FStringError(err.error), + location: err.location, + }, + } + } +} + +#[cfg(test)] +mod tests { + use crate::Parse; + use ruff_python_ast as ast; + + use super::*; + + fn parse_fstring(source: &str) -> Result, LexicalError> { + StringParser::new(source, StringKind::FString, false, TextSize::default()).parse() + } + + #[test] + fn test_parse_fstring() { + let source = "{a}{ b }{{foo}}"; + let parse_ast = parse_fstring(source).unwrap(); + + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_parse_fstring_nested_spec() { + let source = "{foo:{spec}}"; + let parse_ast = parse_fstring(source).unwrap(); + + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_parse_fstring_not_nested_spec() { + let source = "{foo:spec}"; + let parse_ast = parse_fstring(source).unwrap(); + + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_parse_empty_fstring() { + insta::assert_debug_snapshot!(parse_fstring("").unwrap()); + } + + #[test] + fn test_fstring_parse_self_documenting_base() { + let src = "{user=}"; + let parse_ast = parse_fstring(src).unwrap(); + + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_fstring_parse_self_documenting_base_more() { + let src = "mix {user=} with text and {second=}"; + let parse_ast = parse_fstring(src).unwrap(); + + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_fstring_parse_self_documenting_format() { + let src = "{user=:>10}"; + let parse_ast = parse_fstring(src).unwrap(); + + insta::assert_debug_snapshot!(parse_ast); + } + + fn parse_fstring_error(source: &str) -> FStringErrorType { + parse_fstring(source) + .map_err(|e| match e.error { + LexicalErrorType::FStringError(e) => e, + e => unreachable!("Expected FStringError: {:?}", e), + }) + .expect_err("Expected error") + } + + #[test] + fn test_parse_invalid_fstring() { + use FStringErrorType::{ + EmptyExpression, ExpressionNestedTooDeeply, InvalidConversionFlag, SingleRbrace, + UnclosedLbrace, + }; + assert_eq!(parse_fstring_error("{5!a"), UnclosedLbrace); + assert_eq!(parse_fstring_error("{5!a1}"), UnclosedLbrace); + assert_eq!(parse_fstring_error("{5!"), UnclosedLbrace); + assert_eq!(parse_fstring_error("abc{!a 'cat'}"), EmptyExpression); + assert_eq!(parse_fstring_error("{!a"), EmptyExpression); + assert_eq!(parse_fstring_error("{ !a}"), EmptyExpression); + + assert_eq!(parse_fstring_error("{5!}"), InvalidConversionFlag); + assert_eq!(parse_fstring_error("{5!x}"), InvalidConversionFlag); + + assert_eq!( + parse_fstring_error("{a:{a:{b}}}"), + ExpressionNestedTooDeeply + ); + + assert_eq!(parse_fstring_error("{a:b}}"), SingleRbrace); + assert_eq!(parse_fstring_error("}"), SingleRbrace); + assert_eq!(parse_fstring_error("{a:{b}"), UnclosedLbrace); + assert_eq!(parse_fstring_error("{"), UnclosedLbrace); + + assert_eq!(parse_fstring_error("{}"), EmptyExpression); + + // TODO: check for InvalidExpression enum? + assert!(parse_fstring("{class}").is_err()); + } + + #[test] + fn test_parse_fstring_not_equals() { + let source = "{1 != 2}"; + let parse_ast = parse_fstring(source).unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_parse_fstring_equals() { + let source = "{42 == 42}"; + let parse_ast = parse_fstring(source).unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_parse_fstring_self_doc_prec_space() { + let source = "{x =}"; + let parse_ast = parse_fstring(source).unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_parse_fstring_self_doc_trailing_space() { + let source = "{x= }"; + let parse_ast = parse_fstring(source).unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_parse_fstring_yield_expr() { + let source = "{yield}"; + let parse_ast = parse_fstring(source).unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_parse_string_concat() { + let source = "'Hello ' 'world'"; + let parse_ast = ast::Suite::parse(source, "").unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_parse_u_string_concat_1() { + let source = "'Hello ' u'world'"; + let parse_ast = ast::Suite::parse(source, "").unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_parse_u_string_concat_2() { + let source = "u'Hello ' 'world'"; + let parse_ast = ast::Suite::parse(source, "").unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_parse_f_string_concat_1() { + let source = "'Hello ' f'world'"; + let parse_ast = ast::Suite::parse(source, "").unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_parse_f_string_concat_2() { + let source = "'Hello ' f'world'"; + let parse_ast = ast::Suite::parse(source, "").unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_parse_f_string_concat_3() { + let source = "'Hello ' f'world{\"!\"}'"; + let parse_ast = ast::Suite::parse(source, "").unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_parse_u_f_string_concat_1() { + let source = "u'Hello ' f'world'"; + let parse_ast = ast::Suite::parse(source, "").unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_parse_u_f_string_concat_2() { + let source = "u'Hello ' f'world' '!'"; + let parse_ast = ast::Suite::parse(source, "").unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_parse_string_triple_quotes_with_kind() { + let source = "u'''Hello, world!'''"; + let parse_ast = ast::Suite::parse(source, "").unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_single_quoted_byte() { + // single quote + let source = r##"b'\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff'"##; + let parse_ast = ast::Suite::parse(source, "").unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_double_quoted_byte() { + // double quote + let source = r##"b"\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff""##; + let parse_ast = ast::Suite::parse(source, "").unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_escape_char_in_byte_literal() { + // backslash does not escape + let source = r##"b"omkmok\Xaa""##; // spell-checker:ignore omkmok + let parse_ast = ast::Suite::parse(source, "").unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_raw_byte_literal_1() { + let source = r"rb'\x1z'"; + let parse_ast = ast::Suite::parse(source, "").unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_raw_byte_literal_2() { + let source = r"rb'\\'"; + let parse_ast = ast::Suite::parse(source, "").unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_escape_octet() { + let source = r##"b'\43a\4\1234'"##; + let parse_ast = ast::Suite::parse(source, "").unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_fstring_escaped_newline() { + let source = r#"f"\n{x}""#; + let parse_ast = ast::Suite::parse(source, "").unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_fstring_constant_range() { + let source = r#"f"aaa{bbb}ccc{ddd}eee""#; + let parse_ast = ast::Suite::parse(source, "").unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_fstring_unescaped_newline() { + let source = r#"f""" +{x}""""#; + let parse_ast = ast::Suite::parse(source, "").unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_fstring_escaped_character() { + let source = r#"f"\\{x}""#; + let parse_ast = ast::Suite::parse(source, "").unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_raw_fstring() { + let source = r#"rf"{x}""#; + let parse_ast = ast::Suite::parse(source, "").unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_triple_quoted_raw_fstring() { + let source = r#"rf"""{x}""""#; + let parse_ast = ast::Suite::parse(source, "").unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + #[test] + fn test_fstring_line_continuation() { + let source = r#"rf"\ +{x}""#; + let parse_ast = ast::Suite::parse(source, "").unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + + macro_rules! test_aliases_parse { + ($($name:ident: $alias:expr,)*) => { + $( + #[test] + fn $name() { + let source = format!(r#""\N{{{0}}}""#, $alias); + let parse_ast = ast::Suite::parse(&source, "").unwrap(); + insta::assert_debug_snapshot!(parse_ast); + } + )* + } + } + + test_aliases_parse! { + test_backspace_alias: "BACKSPACE", + test_bell_alias: "BEL", + test_carriage_return_alias: "CARRIAGE RETURN", + test_delete_alias: "DELETE", + test_escape_alias: "ESCAPE", + test_form_feed_alias: "FORM FEED", + test_hts_alias: "HTS", + test_character_tabulation_with_justification_alias: "CHARACTER TABULATION WITH JUSTIFICATION", + } +} diff --git a/crates/ruff_python_parser/src/token.rs b/crates/ruff_python_parser/src/token.rs new file mode 100644 index 0000000000..6a46cc41b7 --- /dev/null +++ b/crates/ruff_python_parser/src/token.rs @@ -0,0 +1,885 @@ +//! Token type for Python source code created by the lexer and consumed by the `ruff_python_parser`. +//! +//! This module defines the tokens that the lexer recognizes. The tokens are +//! loosely based on the token definitions found in the [CPython source]. +//! +//! [CPython source]: https://github.com/python/cpython/blob/dfc2e065a2e71011017077e549cd2f9bf4944c54/Include/internal/pycore_token.h; +use crate::Mode; +use num_bigint::BigInt; +use ruff_python_ast::MagicKind; +use ruff_text_size::TextSize; +use std::fmt; + +/// The set of tokens the Python source code can be tokenized in. +#[derive(Clone, Debug, PartialEq, is_macro::Is)] +pub enum Tok { + /// Token value for a name, commonly known as an identifier. + Name { + /// The name value. + name: String, + }, + /// Token value for an integer. + Int { + /// The integer value. + value: BigInt, + }, + /// Token value for a floating point number. + Float { + /// The float value. + value: f64, + }, + /// Token value for a complex number. + Complex { + /// The real part of the complex number. + real: f64, + /// The imaginary part of the complex number. + imag: f64, + }, + /// Token value for a string. + String { + /// The string value. + value: String, + /// The kind of string. + kind: StringKind, + /// Whether the string is triple quoted. + triple_quoted: bool, + }, + /// Token value for a Jupyter magic commands. These are filtered out of the token stream + /// prior to parsing when the mode is [`Mode::Jupyter`]. + MagicCommand { + /// The magic command value. + value: String, + /// The kind of magic command. + kind: MagicKind, + }, + /// Token value for a comment. These are filtered out of the token stream prior to parsing. + Comment(String), + /// Token value for a newline. + Newline, + /// Token value for a newline that is not a logical line break. These are filtered out of + /// the token stream prior to parsing. + NonLogicalNewline, + /// Token value for an indent. + Indent, + /// Token value for a dedent. + Dedent, + EndOfFile, + /// Token value for a left parenthesis `(`. + Lpar, + /// Token value for a right parenthesis `)`. + Rpar, + /// Token value for a left square bracket `[`. + Lsqb, + /// Token value for a right square bracket `]`. + Rsqb, + /// Token value for a colon `:`. + Colon, + /// Token value for a comma `,`. + Comma, + /// Token value for a semicolon `;`. + Semi, + /// Token value for plus `+`. + Plus, + /// Token value for minus `-`. + Minus, + /// Token value for star `*`. + Star, + /// Token value for slash `/`. + Slash, + /// Token value for vertical bar `|`. + Vbar, + /// Token value for ampersand `&`. + Amper, + /// Token value for less than `<`. + Less, + /// Token value for greater than `>`. + Greater, + /// Token value for equal `=`. + Equal, + /// Token value for dot `.`. + Dot, + /// Token value for percent `%`. + Percent, + /// Token value for left bracket `{`. + Lbrace, + /// Token value for right bracket `}`. + Rbrace, + /// Token value for double equal `==`. + EqEqual, + /// Token value for not equal `!=`. + NotEqual, + /// Token value for less than or equal `<=`. + LessEqual, + /// Token value for greater than or equal `>=`. + GreaterEqual, + /// Token value for tilde `~`. + Tilde, + /// Token value for caret `^`. + CircumFlex, + /// Token value for left shift `<<`. + LeftShift, + /// Token value for right shift `>>`. + RightShift, + /// Token value for double star `**`. + DoubleStar, + /// Token value for double star equal `**=`. + DoubleStarEqual, + /// Token value for plus equal `+=`. + PlusEqual, + /// Token value for minus equal `-=`. + MinusEqual, + /// Token value for star equal `*=`. + StarEqual, + /// Token value for slash equal `/=`. + SlashEqual, + /// Token value for percent equal `%=`. + PercentEqual, + /// Token value for ampersand equal `&=`. + AmperEqual, + /// Token value for vertical bar equal `|=`. + VbarEqual, + /// Token value for caret equal `^=`. + CircumflexEqual, + /// Token value for left shift equal `<<=`. + LeftShiftEqual, + /// Token value for right shift equal `>>=`. + RightShiftEqual, + /// Token value for double slash `//`. + DoubleSlash, + /// Token value for double slash equal `//=`. + DoubleSlashEqual, + /// Token value for colon equal `:=`. + ColonEqual, + /// Token value for at `@`. + At, + /// Token value for at equal `@=`. + AtEqual, + /// Token value for arrow `->`. + Rarrow, + /// Token value for ellipsis `...`. + Ellipsis, + + // Self documenting. + // Keywords (alphabetically): + False, + None, + True, + + And, + As, + Assert, + Async, + Await, + Break, + Class, + Continue, + Def, + Del, + Elif, + Else, + Except, + Finally, + For, + From, + Global, + If, + Import, + In, + Is, + Lambda, + Nonlocal, + Not, + Or, + Pass, + Raise, + Return, + Try, + While, + Match, + Type, + Case, + With, + Yield, + + // RustPython specific. + StartModule, + StartInteractive, + StartExpression, +} + +impl Tok { + pub fn start_marker(mode: Mode) -> Self { + match mode { + Mode::Module | Mode::Jupyter => Tok::StartModule, + Mode::Interactive => Tok::StartInteractive, + Mode::Expression => Tok::StartExpression, + } + } +} + +impl fmt::Display for Tok { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + #[allow(clippy::enum_glob_use)] + use Tok::*; + match self { + Name { name } => write!(f, "'{name}'"), + Int { value } => write!(f, "'{value}'"), + Float { value } => write!(f, "'{value}'"), + Complex { real, imag } => write!(f, "{real}j{imag}"), + String { + value, + kind, + triple_quoted, + } => { + let quotes = "\"".repeat(if *triple_quoted { 3 } else { 1 }); + write!(f, "{kind}{quotes}{value}{quotes}") + } + MagicCommand { kind, value } => write!(f, "{kind}{value}"), + Newline => f.write_str("Newline"), + NonLogicalNewline => f.write_str("NonLogicalNewline"), + Indent => f.write_str("Indent"), + Dedent => f.write_str("Dedent"), + StartModule => f.write_str("StartProgram"), + StartInteractive => f.write_str("StartInteractive"), + StartExpression => f.write_str("StartExpression"), + EndOfFile => f.write_str("EOF"), + Lpar => f.write_str("'('"), + Rpar => f.write_str("')'"), + Lsqb => f.write_str("'['"), + Rsqb => f.write_str("']'"), + Colon => f.write_str("':'"), + Comma => f.write_str("','"), + Comment(value) => f.write_str(value), + Semi => f.write_str("';'"), + Plus => f.write_str("'+'"), + Minus => f.write_str("'-'"), + Star => f.write_str("'*'"), + Slash => f.write_str("'/'"), + Vbar => f.write_str("'|'"), + Amper => f.write_str("'&'"), + Less => f.write_str("'<'"), + Greater => f.write_str("'>'"), + Equal => f.write_str("'='"), + Dot => f.write_str("'.'"), + Percent => f.write_str("'%'"), + Lbrace => f.write_str("'{'"), + Rbrace => f.write_str("'}'"), + EqEqual => f.write_str("'=='"), + NotEqual => f.write_str("'!='"), + LessEqual => f.write_str("'<='"), + GreaterEqual => f.write_str("'>='"), + Tilde => f.write_str("'~'"), + CircumFlex => f.write_str("'^'"), + LeftShift => f.write_str("'<<'"), + RightShift => f.write_str("'>>'"), + DoubleStar => f.write_str("'**'"), + DoubleStarEqual => f.write_str("'**='"), + PlusEqual => f.write_str("'+='"), + MinusEqual => f.write_str("'-='"), + StarEqual => f.write_str("'*='"), + SlashEqual => f.write_str("'/='"), + PercentEqual => f.write_str("'%='"), + AmperEqual => f.write_str("'&='"), + VbarEqual => f.write_str("'|='"), + CircumflexEqual => f.write_str("'^='"), + LeftShiftEqual => f.write_str("'<<='"), + RightShiftEqual => f.write_str("'>>='"), + DoubleSlash => f.write_str("'//'"), + DoubleSlashEqual => f.write_str("'//='"), + At => f.write_str("'@'"), + AtEqual => f.write_str("'@='"), + Rarrow => f.write_str("'->'"), + Ellipsis => f.write_str("'...'"), + False => f.write_str("'False'"), + None => f.write_str("'None'"), + True => f.write_str("'True'"), + And => f.write_str("'and'"), + As => f.write_str("'as'"), + Assert => f.write_str("'assert'"), + Async => f.write_str("'async'"), + Await => f.write_str("'await'"), + Break => f.write_str("'break'"), + Class => f.write_str("'class'"), + Continue => f.write_str("'continue'"), + Def => f.write_str("'def'"), + Del => f.write_str("'del'"), + Elif => f.write_str("'elif'"), + Else => f.write_str("'else'"), + Except => f.write_str("'except'"), + Finally => f.write_str("'finally'"), + For => f.write_str("'for'"), + From => f.write_str("'from'"), + Global => f.write_str("'global'"), + If => f.write_str("'if'"), + Import => f.write_str("'import'"), + In => f.write_str("'in'"), + Is => f.write_str("'is'"), + Lambda => f.write_str("'lambda'"), + Nonlocal => f.write_str("'nonlocal'"), + Not => f.write_str("'not'"), + Or => f.write_str("'or'"), + Pass => f.write_str("'pass'"), + Raise => f.write_str("'raise'"), + Return => f.write_str("'return'"), + Try => f.write_str("'try'"), + While => f.write_str("'while'"), + Match => f.write_str("'match'"), + Type => f.write_str("'type'"), + Case => f.write_str("'case'"), + With => f.write_str("'with'"), + Yield => f.write_str("'yield'"), + ColonEqual => f.write_str("':='"), + } + } +} + +/// The kind of string literal as described in the [String and Bytes literals] +/// section of the Python reference. +/// +/// [String and Bytes literals]: https://docs.python.org/3/reference/lexical_analysis.html#string-and-bytes-literals +#[derive(PartialEq, Eq, Debug, Clone, Hash, Copy)] // TODO: is_macro::Is +pub enum StringKind { + /// A normal string literal with no prefix. + String, + /// A f-string literal, with a `f` or `F` prefix. + FString, + /// A byte string literal, with a `b` or `B` prefix. + Bytes, + /// A raw string literal, with a `r` or `R` prefix. + RawString, + /// A raw f-string literal, with a `rf`/`fr` or `rF`/`Fr` or `Rf`/`fR` or `RF`/`FR` prefix. + RawFString, + /// A raw byte string literal, with a `rb`/`br` or `rB`/`Br` or `Rb`/`bR` or `RB`/`BR` prefix. + RawBytes, + /// A unicode string literal, with a `u` or `U` prefix. + Unicode, +} + +impl TryFrom for StringKind { + type Error = String; + + fn try_from(ch: char) -> Result { + match ch { + 'r' | 'R' => Ok(StringKind::RawString), + 'f' | 'F' => Ok(StringKind::FString), + 'u' | 'U' => Ok(StringKind::Unicode), + 'b' | 'B' => Ok(StringKind::Bytes), + c => Err(format!("Unexpected string prefix: {c}")), + } + } +} + +impl TryFrom<[char; 2]> for StringKind { + type Error = String; + + fn try_from(chars: [char; 2]) -> Result { + match chars { + ['r' | 'R', 'f' | 'F'] => Ok(StringKind::RawFString), + ['f' | 'F', 'r' | 'R'] => Ok(StringKind::RawFString), + ['r' | 'R', 'b' | 'B'] => Ok(StringKind::RawBytes), + ['b' | 'B', 'r' | 'R'] => Ok(StringKind::RawBytes), + [c1, c2] => Err(format!("Unexpected string prefix: {c1}{c2}")), + } + } +} + +impl fmt::Display for StringKind { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + use StringKind::{Bytes, FString, RawBytes, RawFString, RawString, String, Unicode}; + match self { + String => f.write_str(""), + FString => f.write_str("f"), + Bytes => f.write_str("b"), + RawString => f.write_str("r"), + RawFString => f.write_str("rf"), + RawBytes => f.write_str("rb"), + Unicode => f.write_str("u"), + } + } +} + +impl StringKind { + /// Returns true if the string is a raw string, i,e one of + /// [`StringKind::RawString`] or [`StringKind::RawFString`] or [`StringKind::RawBytes`]. + pub fn is_raw(&self) -> bool { + use StringKind::{RawBytes, RawFString, RawString}; + matches!(self, RawString | RawFString | RawBytes) + } + + /// Returns true if the string is an f-string, i,e one of + /// [`StringKind::FString`] or [`StringKind::RawFString`]. + pub fn is_any_fstring(&self) -> bool { + use StringKind::{FString, RawFString}; + matches!(self, FString | RawFString) + } + + /// Returns true if the string is a byte string, i,e one of + /// [`StringKind::Bytes`] or [`StringKind::RawBytes`]. + pub fn is_any_bytes(&self) -> bool { + use StringKind::{Bytes, RawBytes}; + matches!(self, Bytes | RawBytes) + } + + /// Returns true if the string is a unicode string, i,e [`StringKind::Unicode`]. + pub fn is_unicode(&self) -> bool { + matches!(self, StringKind::Unicode) + } + + /// Returns the number of characters in the prefix. + pub fn prefix_len(&self) -> TextSize { + use StringKind::{Bytes, FString, RawBytes, RawFString, RawString, String, Unicode}; + let len = match self { + String => 0, + RawString | FString | Unicode | Bytes => 1, + RawFString | RawBytes => 2, + }; + len.into() + } +} + +// TODO move to ruff_python_parser? +#[derive(Copy, Clone, PartialEq, Eq, Hash, Debug)] +pub enum TokenKind { + /// Token value for a name, commonly known as an identifier. + Name, + /// Token value for an integer. + Int, + /// Token value for a floating point number. + Float, + /// Token value for a complex number. + Complex, + /// Token value for a string. + String, + /// Token value for a Jupyter magic command. + MagicCommand, + /// Token value for a comment. These are filtered out of the token stream prior to parsing. + Comment, + /// Token value for a newline. + Newline, + /// Token value for a newline that is not a logical line break. These are filtered out of + /// the token stream prior to parsing. + NonLogicalNewline, + /// Token value for an indent. + Indent, + /// Token value for a dedent. + Dedent, + EndOfFile, + /// Token value for a left parenthesis `(`. + Lpar, + /// Token value for a right parenthesis `)`. + Rpar, + /// Token value for a left square bracket `[`. + Lsqb, + /// Token value for a right square bracket `]`. + Rsqb, + /// Token value for a colon `:`. + Colon, + /// Token value for a comma `,`. + Comma, + /// Token value for a semicolon `;`. + Semi, + /// Token value for plus `+`. + Plus, + /// Token value for minus `-`. + Minus, + /// Token value for star `*`. + Star, + /// Token value for slash `/`. + Slash, + /// Token value for vertical bar `|`. + Vbar, + /// Token value for ampersand `&`. + Amper, + /// Token value for less than `<`. + Less, + /// Token value for greater than `>`. + Greater, + /// Token value for equal `=`. + Equal, + /// Token value for dot `.`. + Dot, + /// Token value for percent `%`. + Percent, + /// Token value for left bracket `{`. + Lbrace, + /// Token value for right bracket `}`. + Rbrace, + /// Token value for double equal `==`. + EqEqual, + /// Token value for not equal `!=`. + NotEqual, + /// Token value for less than or equal `<=`. + LessEqual, + /// Token value for greater than or equal `>=`. + GreaterEqual, + /// Token value for tilde `~`. + Tilde, + /// Token value for caret `^`. + CircumFlex, + /// Token value for left shift `<<`. + LeftShift, + /// Token value for right shift `>>`. + RightShift, + /// Token value for double star `**`. + DoubleStar, + /// Token value for double star equal `**=`. + DoubleStarEqual, + /// Token value for plus equal `+=`. + PlusEqual, + /// Token value for minus equal `-=`. + MinusEqual, + /// Token value for star equal `*=`. + StarEqual, + /// Token value for slash equal `/=`. + SlashEqual, + /// Token value for percent equal `%=`. + PercentEqual, + /// Token value for ampersand equal `&=`. + AmperEqual, + /// Token value for vertical bar equal `|=`. + VbarEqual, + /// Token value for caret equal `^=`. + CircumflexEqual, + /// Token value for left shift equal `<<=`. + LeftShiftEqual, + /// Token value for right shift equal `>>=`. + RightShiftEqual, + /// Token value for double slash `//`. + DoubleSlash, + /// Token value for double slash equal `//=`. + DoubleSlashEqual, + /// Token value for colon equal `:=`. + ColonEqual, + /// Token value for at `@`. + At, + /// Token value for at equal `@=`. + AtEqual, + /// Token value for arrow `->`. + Rarrow, + /// Token value for ellipsis `...`. + Ellipsis, + + // Self documenting. + // Keywords (alphabetically): + False, + None, + True, + + And, + As, + Assert, + Async, + Await, + Break, + Class, + Continue, + Def, + Del, + Elif, + Else, + Except, + Finally, + For, + From, + Global, + If, + Import, + In, + Is, + Lambda, + Nonlocal, + Not, + Or, + Pass, + Raise, + Return, + Try, + While, + Match, + Type, + Case, + With, + Yield, + + // RustPython specific. + StartModule, + StartInteractive, + StartExpression, +} + +impl TokenKind { + #[inline] + pub const fn is_newline(&self) -> bool { + matches!(self, TokenKind::Newline | TokenKind::NonLogicalNewline) + } + + #[inline] + pub const fn is_unary(&self) -> bool { + matches!(self, TokenKind::Plus | TokenKind::Minus) + } + + #[inline] + pub const fn is_keyword(&self) -> bool { + matches!( + self, + TokenKind::False + | TokenKind::True + | TokenKind::None + | TokenKind::And + | TokenKind::As + | TokenKind::Assert + | TokenKind::Await + | TokenKind::Break + | TokenKind::Class + | TokenKind::Continue + | TokenKind::Def + | TokenKind::Del + | TokenKind::Elif + | TokenKind::Else + | TokenKind::Except + | TokenKind::Finally + | TokenKind::For + | TokenKind::From + | TokenKind::Global + | TokenKind::If + | TokenKind::Import + | TokenKind::In + | TokenKind::Is + | TokenKind::Lambda + | TokenKind::Nonlocal + | TokenKind::Not + | TokenKind::Or + | TokenKind::Pass + | TokenKind::Raise + | TokenKind::Return + | TokenKind::Try + | TokenKind::While + | TokenKind::With + | TokenKind::Yield + ) + } + + #[inline] + pub const fn is_operator(&self) -> bool { + matches!( + self, + TokenKind::Lpar + | TokenKind::Rpar + | TokenKind::Lsqb + | TokenKind::Rsqb + | TokenKind::Comma + | TokenKind::Semi + | TokenKind::Plus + | TokenKind::Minus + | TokenKind::Star + | TokenKind::Slash + | TokenKind::Vbar + | TokenKind::Amper + | TokenKind::Less + | TokenKind::Greater + | TokenKind::Equal + | TokenKind::Dot + | TokenKind::Percent + | TokenKind::Lbrace + | TokenKind::Rbrace + | TokenKind::EqEqual + | TokenKind::NotEqual + | TokenKind::LessEqual + | TokenKind::GreaterEqual + | TokenKind::Tilde + | TokenKind::CircumFlex + | TokenKind::LeftShift + | TokenKind::RightShift + | TokenKind::DoubleStar + | TokenKind::PlusEqual + | TokenKind::MinusEqual + | TokenKind::StarEqual + | TokenKind::SlashEqual + | TokenKind::PercentEqual + | TokenKind::AmperEqual + | TokenKind::VbarEqual + | TokenKind::CircumflexEqual + | TokenKind::LeftShiftEqual + | TokenKind::RightShiftEqual + | TokenKind::DoubleStarEqual + | TokenKind::DoubleSlash + | TokenKind::DoubleSlashEqual + | TokenKind::At + | TokenKind::AtEqual + | TokenKind::Rarrow + | TokenKind::Ellipsis + | TokenKind::ColonEqual + | TokenKind::Colon + | TokenKind::And + | TokenKind::Or + | TokenKind::Not + | TokenKind::In + | TokenKind::Is + ) + } + + #[inline] + pub const fn is_singleton(&self) -> bool { + matches!(self, TokenKind::False | TokenKind::True | TokenKind::None) + } + + #[inline] + pub const fn is_trivia(&self) -> bool { + matches!( + self, + TokenKind::Newline + | TokenKind::Indent + | TokenKind::Dedent + | TokenKind::NonLogicalNewline + | TokenKind::Comment + ) + } + + #[inline] + pub const fn is_arithmetic(&self) -> bool { + matches!( + self, + TokenKind::DoubleStar + | TokenKind::Star + | TokenKind::Plus + | TokenKind::Minus + | TokenKind::Slash + | TokenKind::DoubleSlash + | TokenKind::At + ) + } + + #[inline] + pub const fn is_bitwise_or_shift(&self) -> bool { + matches!( + self, + TokenKind::LeftShift + | TokenKind::LeftShiftEqual + | TokenKind::RightShift + | TokenKind::RightShiftEqual + | TokenKind::Amper + | TokenKind::AmperEqual + | TokenKind::Vbar + | TokenKind::VbarEqual + | TokenKind::CircumFlex + | TokenKind::CircumflexEqual + | TokenKind::Tilde + ) + } + + #[inline] + pub const fn is_soft_keyword(&self) -> bool { + matches!(self, TokenKind::Match | TokenKind::Case) + } + + pub const fn from_token(token: &Tok) -> Self { + match token { + Tok::Name { .. } => TokenKind::Name, + Tok::Int { .. } => TokenKind::Int, + Tok::Float { .. } => TokenKind::Float, + Tok::Complex { .. } => TokenKind::Complex, + Tok::String { .. } => TokenKind::String, + Tok::MagicCommand { .. } => TokenKind::MagicCommand, + Tok::Comment(_) => TokenKind::Comment, + Tok::Newline => TokenKind::Newline, + Tok::NonLogicalNewline => TokenKind::NonLogicalNewline, + Tok::Indent => TokenKind::Indent, + Tok::Dedent => TokenKind::Dedent, + Tok::EndOfFile => TokenKind::EndOfFile, + Tok::Lpar => TokenKind::Lpar, + Tok::Rpar => TokenKind::Rpar, + Tok::Lsqb => TokenKind::Lsqb, + Tok::Rsqb => TokenKind::Rsqb, + Tok::Colon => TokenKind::Colon, + Tok::Comma => TokenKind::Comma, + Tok::Semi => TokenKind::Semi, + Tok::Plus => TokenKind::Plus, + Tok::Minus => TokenKind::Minus, + Tok::Star => TokenKind::Star, + Tok::Slash => TokenKind::Slash, + Tok::Vbar => TokenKind::Vbar, + Tok::Amper => TokenKind::Amper, + Tok::Less => TokenKind::Less, + Tok::Greater => TokenKind::Greater, + Tok::Equal => TokenKind::Equal, + Tok::Dot => TokenKind::Dot, + Tok::Percent => TokenKind::Percent, + Tok::Lbrace => TokenKind::Lbrace, + Tok::Rbrace => TokenKind::Rbrace, + Tok::EqEqual => TokenKind::EqEqual, + Tok::NotEqual => TokenKind::NotEqual, + Tok::LessEqual => TokenKind::LessEqual, + Tok::GreaterEqual => TokenKind::GreaterEqual, + Tok::Tilde => TokenKind::Tilde, + Tok::CircumFlex => TokenKind::CircumFlex, + Tok::LeftShift => TokenKind::LeftShift, + Tok::RightShift => TokenKind::RightShift, + Tok::DoubleStar => TokenKind::DoubleStar, + Tok::DoubleStarEqual => TokenKind::DoubleStarEqual, + Tok::PlusEqual => TokenKind::PlusEqual, + Tok::MinusEqual => TokenKind::MinusEqual, + Tok::StarEqual => TokenKind::StarEqual, + Tok::SlashEqual => TokenKind::SlashEqual, + Tok::PercentEqual => TokenKind::PercentEqual, + Tok::AmperEqual => TokenKind::AmperEqual, + Tok::VbarEqual => TokenKind::VbarEqual, + Tok::CircumflexEqual => TokenKind::CircumflexEqual, + Tok::LeftShiftEqual => TokenKind::LeftShiftEqual, + Tok::RightShiftEqual => TokenKind::RightShiftEqual, + Tok::DoubleSlash => TokenKind::DoubleSlash, + Tok::DoubleSlashEqual => TokenKind::DoubleSlashEqual, + Tok::ColonEqual => TokenKind::ColonEqual, + Tok::At => TokenKind::At, + Tok::AtEqual => TokenKind::AtEqual, + Tok::Rarrow => TokenKind::Rarrow, + Tok::Ellipsis => TokenKind::Ellipsis, + Tok::False => TokenKind::False, + Tok::None => TokenKind::None, + Tok::True => TokenKind::True, + Tok::And => TokenKind::And, + Tok::As => TokenKind::As, + Tok::Assert => TokenKind::Assert, + Tok::Async => TokenKind::Async, + Tok::Await => TokenKind::Await, + Tok::Break => TokenKind::Break, + Tok::Class => TokenKind::Class, + Tok::Continue => TokenKind::Continue, + Tok::Def => TokenKind::Def, + Tok::Del => TokenKind::Del, + Tok::Elif => TokenKind::Elif, + Tok::Else => TokenKind::Else, + Tok::Except => TokenKind::Except, + Tok::Finally => TokenKind::Finally, + Tok::For => TokenKind::For, + Tok::From => TokenKind::From, + Tok::Global => TokenKind::Global, + Tok::If => TokenKind::If, + Tok::Import => TokenKind::Import, + Tok::In => TokenKind::In, + Tok::Is => TokenKind::Is, + Tok::Lambda => TokenKind::Lambda, + Tok::Nonlocal => TokenKind::Nonlocal, + Tok::Not => TokenKind::Not, + Tok::Or => TokenKind::Or, + Tok::Pass => TokenKind::Pass, + Tok::Raise => TokenKind::Raise, + Tok::Return => TokenKind::Return, + Tok::Try => TokenKind::Try, + Tok::While => TokenKind::While, + Tok::Match => TokenKind::Match, + Tok::Case => TokenKind::Case, + Tok::Type => TokenKind::Type, + Tok::With => TokenKind::With, + Tok::Yield => TokenKind::Yield, + Tok::StartModule => TokenKind::StartModule, + Tok::StartInteractive => TokenKind::StartInteractive, + Tok::StartExpression => TokenKind::StartExpression, + } + } +} + +impl From<&Tok> for TokenKind { + fn from(value: &Tok) -> Self { + Self::from_token(value) + } +} diff --git a/crates/ruff_python_parser/src/token_kind.rs b/crates/ruff_python_parser/src/token_kind.rs deleted file mode 100644 index dd18541b67..0000000000 --- a/crates/ruff_python_parser/src/token_kind.rs +++ /dev/null @@ -1,448 +0,0 @@ -use rustpython_parser::Tok; - -// TODO move to ruff_python_parser? -#[derive(Copy, Clone, PartialEq, Eq, Hash, Debug)] -pub enum TokenKind { - /// Token value for a name, commonly known as an identifier. - Name, - /// Token value for an integer. - Int, - /// Token value for a floating point number. - Float, - /// Token value for a complex number. - Complex, - /// Token value for a string. - String, - /// Token value for a Jupyter magic command. - MagicCommand, - /// Token value for a comment. These are filtered out of the token stream prior to parsing. - Comment, - /// Token value for a newline. - Newline, - /// Token value for a newline that is not a logical line break. These are filtered out of - /// the token stream prior to parsing. - NonLogicalNewline, - /// Token value for an indent. - Indent, - /// Token value for a dedent. - Dedent, - EndOfFile, - /// Token value for a left parenthesis `(`. - Lpar, - /// Token value for a right parenthesis `)`. - Rpar, - /// Token value for a left square bracket `[`. - Lsqb, - /// Token value for a right square bracket `]`. - Rsqb, - /// Token value for a colon `:`. - Colon, - /// Token value for a comma `,`. - Comma, - /// Token value for a semicolon `;`. - Semi, - /// Token value for plus `+`. - Plus, - /// Token value for minus `-`. - Minus, - /// Token value for star `*`. - Star, - /// Token value for slash `/`. - Slash, - /// Token value for vertical bar `|`. - Vbar, - /// Token value for ampersand `&`. - Amper, - /// Token value for less than `<`. - Less, - /// Token value for greater than `>`. - Greater, - /// Token value for equal `=`. - Equal, - /// Token value for dot `.`. - Dot, - /// Token value for percent `%`. - Percent, - /// Token value for left bracket `{`. - Lbrace, - /// Token value for right bracket `}`. - Rbrace, - /// Token value for double equal `==`. - EqEqual, - /// Token value for not equal `!=`. - NotEqual, - /// Token value for less than or equal `<=`. - LessEqual, - /// Token value for greater than or equal `>=`. - GreaterEqual, - /// Token value for tilde `~`. - Tilde, - /// Token value for caret `^`. - CircumFlex, - /// Token value for left shift `<<`. - LeftShift, - /// Token value for right shift `>>`. - RightShift, - /// Token value for double star `**`. - DoubleStar, - /// Token value for double star equal `**=`. - DoubleStarEqual, - /// Token value for plus equal `+=`. - PlusEqual, - /// Token value for minus equal `-=`. - MinusEqual, - /// Token value for star equal `*=`. - StarEqual, - /// Token value for slash equal `/=`. - SlashEqual, - /// Token value for percent equal `%=`. - PercentEqual, - /// Token value for ampersand equal `&=`. - AmperEqual, - /// Token value for vertical bar equal `|=`. - VbarEqual, - /// Token value for caret equal `^=`. - CircumflexEqual, - /// Token value for left shift equal `<<=`. - LeftShiftEqual, - /// Token value for right shift equal `>>=`. - RightShiftEqual, - /// Token value for double slash `//`. - DoubleSlash, - /// Token value for double slash equal `//=`. - DoubleSlashEqual, - /// Token value for colon equal `:=`. - ColonEqual, - /// Token value for at `@`. - At, - /// Token value for at equal `@=`. - AtEqual, - /// Token value for arrow `->`. - Rarrow, - /// Token value for ellipsis `...`. - Ellipsis, - - // Self documenting. - // Keywords (alphabetically): - False, - None, - True, - - And, - As, - Assert, - Async, - Await, - Break, - Class, - Continue, - Def, - Del, - Elif, - Else, - Except, - Finally, - For, - From, - Global, - If, - Import, - In, - Is, - Lambda, - Nonlocal, - Not, - Or, - Pass, - Raise, - Return, - Try, - While, - Match, - Type, - Case, - With, - Yield, - - // RustPython specific. - StartModule, - StartInteractive, - StartExpression, -} - -impl TokenKind { - #[inline] - pub const fn is_newline(&self) -> bool { - matches!(self, TokenKind::Newline | TokenKind::NonLogicalNewline) - } - - #[inline] - pub const fn is_unary(&self) -> bool { - matches!(self, TokenKind::Plus | TokenKind::Minus) - } - - #[inline] - pub const fn is_keyword(&self) -> bool { - matches!( - self, - TokenKind::False - | TokenKind::True - | TokenKind::None - | TokenKind::And - | TokenKind::As - | TokenKind::Assert - | TokenKind::Await - | TokenKind::Break - | TokenKind::Class - | TokenKind::Continue - | TokenKind::Def - | TokenKind::Del - | TokenKind::Elif - | TokenKind::Else - | TokenKind::Except - | TokenKind::Finally - | TokenKind::For - | TokenKind::From - | TokenKind::Global - | TokenKind::If - | TokenKind::Import - | TokenKind::In - | TokenKind::Is - | TokenKind::Lambda - | TokenKind::Nonlocal - | TokenKind::Not - | TokenKind::Or - | TokenKind::Pass - | TokenKind::Raise - | TokenKind::Return - | TokenKind::Try - | TokenKind::While - | TokenKind::With - | TokenKind::Yield - ) - } - - #[inline] - pub const fn is_operator(&self) -> bool { - matches!( - self, - TokenKind::Lpar - | TokenKind::Rpar - | TokenKind::Lsqb - | TokenKind::Rsqb - | TokenKind::Comma - | TokenKind::Semi - | TokenKind::Plus - | TokenKind::Minus - | TokenKind::Star - | TokenKind::Slash - | TokenKind::Vbar - | TokenKind::Amper - | TokenKind::Less - | TokenKind::Greater - | TokenKind::Equal - | TokenKind::Dot - | TokenKind::Percent - | TokenKind::Lbrace - | TokenKind::Rbrace - | TokenKind::EqEqual - | TokenKind::NotEqual - | TokenKind::LessEqual - | TokenKind::GreaterEqual - | TokenKind::Tilde - | TokenKind::CircumFlex - | TokenKind::LeftShift - | TokenKind::RightShift - | TokenKind::DoubleStar - | TokenKind::PlusEqual - | TokenKind::MinusEqual - | TokenKind::StarEqual - | TokenKind::SlashEqual - | TokenKind::PercentEqual - | TokenKind::AmperEqual - | TokenKind::VbarEqual - | TokenKind::CircumflexEqual - | TokenKind::LeftShiftEqual - | TokenKind::RightShiftEqual - | TokenKind::DoubleStarEqual - | TokenKind::DoubleSlash - | TokenKind::DoubleSlashEqual - | TokenKind::At - | TokenKind::AtEqual - | TokenKind::Rarrow - | TokenKind::Ellipsis - | TokenKind::ColonEqual - | TokenKind::Colon - | TokenKind::And - | TokenKind::Or - | TokenKind::Not - | TokenKind::In - | TokenKind::Is - ) - } - - #[inline] - pub const fn is_singleton(&self) -> bool { - matches!(self, TokenKind::False | TokenKind::True | TokenKind::None) - } - - #[inline] - pub const fn is_trivia(&self) -> bool { - matches!( - self, - TokenKind::Newline - | TokenKind::Indent - | TokenKind::Dedent - | TokenKind::NonLogicalNewline - | TokenKind::Comment - ) - } - - #[inline] - pub const fn is_arithmetic(&self) -> bool { - matches!( - self, - TokenKind::DoubleStar - | TokenKind::Star - | TokenKind::Plus - | TokenKind::Minus - | TokenKind::Slash - | TokenKind::DoubleSlash - | TokenKind::At - ) - } - - #[inline] - pub const fn is_bitwise_or_shift(&self) -> bool { - matches!( - self, - TokenKind::LeftShift - | TokenKind::LeftShiftEqual - | TokenKind::RightShift - | TokenKind::RightShiftEqual - | TokenKind::Amper - | TokenKind::AmperEqual - | TokenKind::Vbar - | TokenKind::VbarEqual - | TokenKind::CircumFlex - | TokenKind::CircumflexEqual - | TokenKind::Tilde - ) - } - - #[inline] - pub const fn is_soft_keyword(&self) -> bool { - matches!(self, TokenKind::Match | TokenKind::Case) - } - - pub const fn from_token(token: &Tok) -> Self { - match token { - Tok::Name { .. } => TokenKind::Name, - Tok::Int { .. } => TokenKind::Int, - Tok::Float { .. } => TokenKind::Float, - Tok::Complex { .. } => TokenKind::Complex, - Tok::String { .. } => TokenKind::String, - Tok::MagicCommand { .. } => TokenKind::MagicCommand, - Tok::Comment(_) => TokenKind::Comment, - Tok::Newline => TokenKind::Newline, - Tok::NonLogicalNewline => TokenKind::NonLogicalNewline, - Tok::Indent => TokenKind::Indent, - Tok::Dedent => TokenKind::Dedent, - Tok::EndOfFile => TokenKind::EndOfFile, - Tok::Lpar => TokenKind::Lpar, - Tok::Rpar => TokenKind::Rpar, - Tok::Lsqb => TokenKind::Lsqb, - Tok::Rsqb => TokenKind::Rsqb, - Tok::Colon => TokenKind::Colon, - Tok::Comma => TokenKind::Comma, - Tok::Semi => TokenKind::Semi, - Tok::Plus => TokenKind::Plus, - Tok::Minus => TokenKind::Minus, - Tok::Star => TokenKind::Star, - Tok::Slash => TokenKind::Slash, - Tok::Vbar => TokenKind::Vbar, - Tok::Amper => TokenKind::Amper, - Tok::Less => TokenKind::Less, - Tok::Greater => TokenKind::Greater, - Tok::Equal => TokenKind::Equal, - Tok::Dot => TokenKind::Dot, - Tok::Percent => TokenKind::Percent, - Tok::Lbrace => TokenKind::Lbrace, - Tok::Rbrace => TokenKind::Rbrace, - Tok::EqEqual => TokenKind::EqEqual, - Tok::NotEqual => TokenKind::NotEqual, - Tok::LessEqual => TokenKind::LessEqual, - Tok::GreaterEqual => TokenKind::GreaterEqual, - Tok::Tilde => TokenKind::Tilde, - Tok::CircumFlex => TokenKind::CircumFlex, - Tok::LeftShift => TokenKind::LeftShift, - Tok::RightShift => TokenKind::RightShift, - Tok::DoubleStar => TokenKind::DoubleStar, - Tok::DoubleStarEqual => TokenKind::DoubleStarEqual, - Tok::PlusEqual => TokenKind::PlusEqual, - Tok::MinusEqual => TokenKind::MinusEqual, - Tok::StarEqual => TokenKind::StarEqual, - Tok::SlashEqual => TokenKind::SlashEqual, - Tok::PercentEqual => TokenKind::PercentEqual, - Tok::AmperEqual => TokenKind::AmperEqual, - Tok::VbarEqual => TokenKind::VbarEqual, - Tok::CircumflexEqual => TokenKind::CircumflexEqual, - Tok::LeftShiftEqual => TokenKind::LeftShiftEqual, - Tok::RightShiftEqual => TokenKind::RightShiftEqual, - Tok::DoubleSlash => TokenKind::DoubleSlash, - Tok::DoubleSlashEqual => TokenKind::DoubleSlashEqual, - Tok::ColonEqual => TokenKind::ColonEqual, - Tok::At => TokenKind::At, - Tok::AtEqual => TokenKind::AtEqual, - Tok::Rarrow => TokenKind::Rarrow, - Tok::Ellipsis => TokenKind::Ellipsis, - Tok::False => TokenKind::False, - Tok::None => TokenKind::None, - Tok::True => TokenKind::True, - Tok::And => TokenKind::And, - Tok::As => TokenKind::As, - Tok::Assert => TokenKind::Assert, - Tok::Async => TokenKind::Async, - Tok::Await => TokenKind::Await, - Tok::Break => TokenKind::Break, - Tok::Class => TokenKind::Class, - Tok::Continue => TokenKind::Continue, - Tok::Def => TokenKind::Def, - Tok::Del => TokenKind::Del, - Tok::Elif => TokenKind::Elif, - Tok::Else => TokenKind::Else, - Tok::Except => TokenKind::Except, - Tok::Finally => TokenKind::Finally, - Tok::For => TokenKind::For, - Tok::From => TokenKind::From, - Tok::Global => TokenKind::Global, - Tok::If => TokenKind::If, - Tok::Import => TokenKind::Import, - Tok::In => TokenKind::In, - Tok::Is => TokenKind::Is, - Tok::Lambda => TokenKind::Lambda, - Tok::Nonlocal => TokenKind::Nonlocal, - Tok::Not => TokenKind::Not, - Tok::Or => TokenKind::Or, - Tok::Pass => TokenKind::Pass, - Tok::Raise => TokenKind::Raise, - Tok::Return => TokenKind::Return, - Tok::Try => TokenKind::Try, - Tok::While => TokenKind::While, - Tok::Match => TokenKind::Match, - Tok::Case => TokenKind::Case, - Tok::Type => TokenKind::Type, - Tok::With => TokenKind::With, - Tok::Yield => TokenKind::Yield, - Tok::StartModule => TokenKind::StartModule, - Tok::StartInteractive => TokenKind::StartInteractive, - Tok::StartExpression => TokenKind::StartExpression, - } - } -} - -impl From<&Tok> for TokenKind { - fn from(value: &Tok) -> Self { - Self::from_token(value) - } -} diff --git a/crates/ruff_python_parser/src/typing.rs b/crates/ruff_python_parser/src/typing.rs index 552abb513f..075da24419 100644 --- a/crates/ruff_python_parser/src/typing.rs +++ b/crates/ruff_python_parser/src/typing.rs @@ -1,9 +1,9 @@ +use crate::Parse; use anyhow::Result; use ruff_python_ast::relocate::relocate_expr; use ruff_python_ast::str; +use ruff_python_ast::Expr; use ruff_text_size::{TextLen, TextRange}; -use rustpython_ast::Expr; -use rustpython_parser::Parse; #[derive(is_macro::Is, Copy, Clone)] pub enum AnnotationKind { diff --git a/crates/ruff_python_semantic/Cargo.toml b/crates/ruff_python_semantic/Cargo.toml index 1e3ed5f1e2..9b37767711 100644 --- a/crates/ruff_python_semantic/Cargo.toml +++ b/crates/ruff_python_semantic/Cargo.toml @@ -13,16 +13,16 @@ license = { workspace = true } [lib] [dependencies] +ruff_index = { path = "../ruff_index" } ruff_python_ast = { path = "../ruff_python_ast" } ruff_python_stdlib = { path = "../ruff_python_stdlib" } -ruff_text_size = { workspace = true } ruff_source_file = { path = "../ruff_source_file" } -ruff_index = { path = "../ruff_index" } +ruff_text_size = { path = "../ruff_text_size" } bitflags = { workspace = true } is-macro = { workspace = true } num-traits = { workspace = true } rustc-hash = { workspace = true } -rustpython-parser = { workspace = true } -rustpython-ast = { workspace = true } + + smallvec = { workspace = true } diff --git a/crates/ruff_python_semantic/src/analyze/branch_detection.rs b/crates/ruff_python_semantic/src/analyze/branch_detection.rs index 00a276fecb..64ac31e80f 100644 --- a/crates/ruff_python_semantic/src/analyze/branch_detection.rs +++ b/crates/ruff_python_semantic/src/analyze/branch_detection.rs @@ -1,7 +1,7 @@ use std::cmp::Ordering; use std::iter; -use rustpython_ast::{self as ast, ExceptHandler, Stmt}; +use ruff_python_ast::{self as ast, ExceptHandler, Stmt}; use crate::node::{NodeId, Nodes}; diff --git a/crates/ruff_python_semantic/src/analyze/function_type.rs b/crates/ruff_python_semantic/src/analyze/function_type.rs index a39c01f80d..7cf4884716 100644 --- a/crates/ruff_python_semantic/src/analyze/function_type.rs +++ b/crates/ruff_python_semantic/src/analyze/function_type.rs @@ -1,4 +1,4 @@ -use rustpython_ast::Decorator; +use ruff_python_ast::Decorator; use ruff_python_ast::call_path::from_qualified_name; use ruff_python_ast::helpers::map_callable; diff --git a/crates/ruff_python_semantic/src/analyze/logging.rs b/crates/ruff_python_semantic/src/analyze/logging.rs index 3bb21f701c..fa5006519f 100644 --- a/crates/ruff_python_semantic/src/analyze/logging.rs +++ b/crates/ruff_python_semantic/src/analyze/logging.rs @@ -1,4 +1,4 @@ -use rustpython_ast::{self as ast, Expr, Keyword}; +use ruff_python_ast::{self as ast, Expr, Keyword}; use ruff_python_ast::call_path::{collect_call_path, from_qualified_name}; use ruff_python_ast::helpers::{find_keyword, is_const_true}; diff --git a/crates/ruff_python_semantic/src/analyze/type_inference.rs b/crates/ruff_python_semantic/src/analyze/type_inference.rs index 6a6565d3e6..d65b544b2a 100644 --- a/crates/ruff_python_semantic/src/analyze/type_inference.rs +++ b/crates/ruff_python_semantic/src/analyze/type_inference.rs @@ -1,7 +1,7 @@ //! Analysis rules to perform basic type inference on individual expressions. -use rustpython_ast::{Constant, Expr}; -use rustpython_parser::ast; +use ruff_python_ast as ast; +use ruff_python_ast::{Constant, Expr}; /// An extremely simple type inference system for individual expressions. /// diff --git a/crates/ruff_python_semantic/src/analyze/typing.rs b/crates/ruff_python_semantic/src/analyze/typing.rs index 6e2aaaacdc..ea642026d8 100644 --- a/crates/ruff_python_semantic/src/analyze/typing.rs +++ b/crates/ruff_python_semantic/src/analyze/typing.rs @@ -1,7 +1,7 @@ //! Analysis rules for the `typing` module. use num_traits::identities::Zero; -use rustpython_ast::{self as ast, Constant, Expr, Operator}; +use ruff_python_ast::{self as ast, Constant, Expr, Operator}; use ruff_python_ast::call_path::{from_qualified_name, from_unqualified_name, CallPath}; use ruff_python_ast::helpers::is_const_false; diff --git a/crates/ruff_python_semantic/src/analyze/visibility.rs b/crates/ruff_python_semantic/src/analyze/visibility.rs index c9be45fad7..4817d81b66 100644 --- a/crates/ruff_python_semantic/src/analyze/visibility.rs +++ b/crates/ruff_python_semantic/src/analyze/visibility.rs @@ -1,6 +1,6 @@ use std::path::Path; -use rustpython_ast::{self as ast, Decorator, Stmt}; +use ruff_python_ast::{self as ast, Decorator, Stmt}; use ruff_python_ast::call_path::{collect_call_path, CallPath}; use ruff_python_ast::helpers::map_callable; diff --git a/crates/ruff_python_semantic/src/binding.rs b/crates/ruff_python_semantic/src/binding.rs index 4b38a927d1..622ae32435 100644 --- a/crates/ruff_python_semantic/src/binding.rs +++ b/crates/ruff_python_semantic/src/binding.rs @@ -1,8 +1,8 @@ use std::ops::{Deref, DerefMut}; use bitflags::bitflags; +use ruff_python_ast::Ranged; use ruff_text_size::TextRange; -use rustpython_ast::Ranged; use ruff_index::{newtype_index, IndexSlice, IndexVec}; use ruff_source_file::Locator; diff --git a/crates/ruff_python_semantic/src/definition.rs b/crates/ruff_python_semantic/src/definition.rs index 27bdd15d3d..cfb069dde0 100644 --- a/crates/ruff_python_semantic/src/definition.rs +++ b/crates/ruff_python_semantic/src/definition.rs @@ -5,7 +5,7 @@ use std::fmt::Debug; use std::ops::Deref; use ruff_index::{newtype_index, IndexSlice, IndexVec}; -use rustpython_ast::{self as ast, Stmt}; +use ruff_python_ast::{self as ast, Stmt}; use crate::analyze::visibility::{ class_visibility, function_visibility, method_visibility, ModuleSource, Visibility, diff --git a/crates/ruff_python_semantic/src/globals.rs b/crates/ruff_python_semantic/src/globals.rs index ee54b5a4d1..a17b79b6f8 100644 --- a/crates/ruff_python_semantic/src/globals.rs +++ b/crates/ruff_python_semantic/src/globals.rs @@ -4,10 +4,10 @@ use std::ops::Index; +use ruff_python_ast as ast; +use ruff_python_ast::Stmt; use ruff_text_size::TextRange; use rustc_hash::FxHashMap; -use rustpython_ast::Stmt; -use rustpython_parser::ast; use ruff_index::{newtype_index, IndexVec}; use ruff_python_ast::statement_visitor::{walk_stmt, StatementVisitor}; diff --git a/crates/ruff_python_semantic/src/model.rs b/crates/ruff_python_semantic/src/model.rs index b316249fb3..85c61400fd 100644 --- a/crates/ruff_python_semantic/src/model.rs +++ b/crates/ruff_python_semantic/src/model.rs @@ -1,9 +1,9 @@ use std::path::Path; use bitflags::bitflags; +use ruff_python_ast::{Expr, Ranged, Stmt}; use ruff_text_size::TextRange; use rustc_hash::FxHashMap; -use rustpython_ast::{Expr, Ranged, Stmt}; use smallvec::SmallVec; use ruff_python_ast::call_path::{collect_call_path, from_unqualified_name, CallPath}; diff --git a/crates/ruff_python_semantic/src/node.rs b/crates/ruff_python_semantic/src/node.rs index 319063b1b5..5523ab62d1 100644 --- a/crates/ruff_python_semantic/src/node.rs +++ b/crates/ruff_python_semantic/src/node.rs @@ -1,8 +1,8 @@ use std::ops::{Index, IndexMut}; use ruff_index::{newtype_index, IndexVec}; +use ruff_python_ast::Stmt; use rustc_hash::FxHashMap; -use rustpython_ast::Stmt; use ruff_python_ast::types::RefEquality; diff --git a/crates/ruff_python_semantic/src/scope.rs b/crates/ruff_python_semantic/src/scope.rs index 1437655a46..b263436b09 100644 --- a/crates/ruff_python_semantic/src/scope.rs +++ b/crates/ruff_python_semantic/src/scope.rs @@ -1,8 +1,8 @@ use std::ops::{Deref, DerefMut}; use bitflags::bitflags; +use ruff_python_ast as ast; use rustc_hash::FxHashMap; -use rustpython_parser::ast; use ruff_index::{newtype_index, Idx, IndexSlice, IndexVec}; diff --git a/crates/ruff_python_trivia/Cargo.toml b/crates/ruff_python_trivia/Cargo.toml index da9d7c1ac8..a9c5d4a44e 100644 --- a/crates/ruff_python_trivia/Cargo.toml +++ b/crates/ruff_python_trivia/Cargo.toml @@ -13,7 +13,7 @@ license = { workspace = true } [lib] [dependencies] -ruff_text_size = { workspace = true } +ruff_text_size = { path = "../ruff_text_size" } ruff_source_file = { path = "../ruff_source_file" } memchr = { workspace = true } @@ -22,5 +22,6 @@ unic-ucd-ident = "0.9.0" [dev-dependencies] insta = { workspace = true } -rustpython-parser = { workspace = true } -rustpython-ast = { workspace = true } +ruff_python_ast = { path = "../ruff_python_ast" } +ruff_python_parser = { path = "../ruff_python_parser" } + diff --git a/crates/ruff_python_trivia/src/whitespace.rs b/crates/ruff_python_trivia/src/whitespace.rs index 6688bd15c5..05c40e90b3 100644 --- a/crates/ruff_python_trivia/src/whitespace.rs +++ b/crates/ruff_python_trivia/src/whitespace.rs @@ -83,9 +83,9 @@ impl PythonWhitespace for str { #[cfg(test)] mod tests { use crate::has_trailing_content; + use ruff_python_ast::{Ranged, Suite}; + use ruff_python_parser::{Parse, ParseError}; use ruff_source_file::Locator; - use rustpython_ast::{Ranged, Suite}; - use rustpython_parser::{Parse, ParseError}; #[test] fn trailing_content() -> Result<(), ParseError> { diff --git a/crates/ruff_shrinking/Cargo.toml b/crates/ruff_shrinking/Cargo.toml index e20d8a783c..70730c458e 100644 --- a/crates/ruff_shrinking/Cargo.toml +++ b/crates/ruff_shrinking/Cargo.toml @@ -12,7 +12,8 @@ fs-err = "2.9.0" regex = { workspace = true } ruff_python_ast = { path = "../ruff_python_ast" } ruff_python_parser = { path = "../ruff_python_parser" } -rustpython-ast = { workspace = true } +ruff_text_size = { path = "../ruff_text_size" } + shlex = "1.1.0" tracing = "0.1.37" tracing-subscriber = { version = "0.3.17", features = ["env-filter"] } diff --git a/crates/ruff_shrinking/src/main.rs b/crates/ruff_shrinking/src/main.rs index 1808c1e47a..4c62cfa355 100644 --- a/crates/ruff_shrinking/src/main.rs +++ b/crates/ruff_shrinking/src/main.rs @@ -35,8 +35,8 @@ use fs_err as fs; use regex::Regex; use ruff_python_ast::statement_visitor::{walk_body, walk_stmt, StatementVisitor}; use ruff_python_ast::visitor::{walk_expr, Visitor}; -use rustpython_ast::text_size::TextRange; -use rustpython_ast::{Expr, Ranged, Stmt, Suite}; +use ruff_python_ast::{Expr, Ranged, Stmt, Suite}; +use ruff_text_size::TextRange; use std::collections::HashMap; use std::path::{Path, PathBuf}; use std::process::{Command, ExitCode}; diff --git a/crates/ruff_source_file/Cargo.toml b/crates/ruff_source_file/Cargo.toml index bd760d785a..9d02d7d2a2 100644 --- a/crates/ruff_source_file/Cargo.toml +++ b/crates/ruff_source_file/Cargo.toml @@ -15,7 +15,7 @@ license = { workspace = true } [dependencies] memchr = { workspace = true } once_cell = { workspace = true } -ruff_text_size = { workspace = true } +ruff_text_size = { path = "../ruff_text_size" } serde = { workspace = true, optional = true } [dev-dependencies] diff --git a/crates/ruff_text_size/Cargo.toml b/crates/ruff_text_size/Cargo.toml new file mode 100644 index 0000000000..d3ce185167 --- /dev/null +++ b/crates/ruff_text_size/Cargo.toml @@ -0,0 +1,22 @@ +[package] +name = "ruff_text_size" +version = "0.0.0" +publish = false +edition = "2021" +rust-version = "1.67.1" + +[dependencies] +serde = { version="1.0.152", optional = true, default_features = false } +schemars = { version = "0.8.12", optional = true } + +[dev-dependencies] +serde_test = { version = "1.0.152" } +static_assertions = { version = "1.1.0" } + +[features] +serde = ["dep:serde"] + +[[test]] +name = "serde" +path = "tests/serde.rs" +required-features = ["serde"] \ No newline at end of file diff --git a/crates/ruff_text_size/src/lib.rs b/crates/ruff_text_size/src/lib.rs new file mode 100644 index 0000000000..fd27c65523 --- /dev/null +++ b/crates/ruff_text_size/src/lib.rs @@ -0,0 +1,34 @@ +//! Newtypes for working with text sizes/ranges in a more type-safe manner. +//! +//! This library can help with two things: +//! * Reducing storage requirements for offsets and ranges, under the +//! assumption that 32 bits is enough. +//! * Providing standard vocabulary types for applications where text ranges +//! are pervasive. +//! +//! However, you should not use this library simply because you work with +//! strings. In the overwhelming majority of cases, using `usize` and +//! `std::ops::Range` is better. In particular, if you are publishing a +//! library, using only std types in the interface would make it more +//! interoperable. Similarly, if you are writing something like a lexer, which +//! produces, but does not *store* text ranges, then sticking to `usize` would +//! be better. +//! +//! Minimal Supported Rust Version: latest stable. + +#![forbid(unsafe_code)] +#![warn(missing_debug_implementations, missing_docs)] + +mod range; +mod size; +mod traits; + +#[cfg(feature = "schemars")] +mod schemars_impls; +#[cfg(feature = "serde")] +mod serde_impls; + +pub use crate::{range::TextRange, size::TextSize, traits::TextLen}; + +#[cfg(target_pointer_width = "16")] +compile_error!("text-size assumes usize >= u32 and does not work on 16-bit targets"); diff --git a/crates/ruff_text_size/src/range.rs b/crates/ruff_text_size/src/range.rs new file mode 100644 index 0000000000..2703bf3b6e --- /dev/null +++ b/crates/ruff_text_size/src/range.rs @@ -0,0 +1,544 @@ +use cmp::Ordering; + +use { + crate::TextSize, + std::{ + cmp, fmt, + ops::{Add, AddAssign, Bound, Index, IndexMut, Range, RangeBounds, Sub, SubAssign}, + }, +}; + +/// A range in text, represented as a pair of [`TextSize`][struct@TextSize]. +/// +/// It is a logic error for `start` to be greater than `end`. +#[derive(Default, Copy, Clone, Eq, PartialEq, Hash)] +pub struct TextRange { + // Invariant: start <= end + start: TextSize, + end: TextSize, +} + +impl fmt::Debug for TextRange { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + write!(f, "{}..{}", self.start().raw, self.end().raw) + } +} + +impl TextRange { + /// Creates a new `TextRange` with the given `start` and `end` (`start..end`). + /// + /// # Panics + /// + /// Panics if `end < start`. + /// + /// # Examples + /// + /// ```rust + /// # use ruff_text_size::*; + /// let start = TextSize::from(5); + /// let end = TextSize::from(10); + /// let range = TextRange::new(start, end); + /// + /// assert_eq!(range.start(), start); + /// assert_eq!(range.end(), end); + /// assert_eq!(range.len(), end - start); + /// ``` + #[inline] + pub const fn new(start: TextSize, end: TextSize) -> TextRange { + assert!(start.raw <= end.raw); + TextRange { start, end } + } + + /// Create a new `TextRange` with the given `offset` and `len` (`offset..offset + len`). + /// + /// # Examples + /// + /// ```rust + /// # use ruff_text_size::*; + /// let text = "0123456789"; + /// + /// let offset = TextSize::from(2); + /// let length = TextSize::from(5); + /// let range = TextRange::at(offset, length); + /// + /// assert_eq!(range, TextRange::new(offset, offset + length)); + /// assert_eq!(&text[range], "23456") + /// ``` + #[inline] + pub fn at(offset: TextSize, len: TextSize) -> TextRange { + TextRange::new(offset, offset + len) + } + + /// Create a zero-length range at the specified offset (`offset..offset`). + /// + /// # Examples + /// + /// ```rust + /// # use ruff_text_size::*; + /// let point: TextSize; + /// # point = TextSize::from(3); + /// let range = TextRange::empty(point); + /// assert!(range.is_empty()); + /// assert_eq!(range, TextRange::new(point, point)); + /// ``` + #[inline] + pub fn empty(offset: TextSize) -> TextRange { + TextRange { + start: offset, + end: offset, + } + } + + /// Create a range up to the given end (`..end`). + /// + /// # Examples + /// + /// ```rust + /// # use ruff_text_size::*; + /// let point: TextSize; + /// # point = TextSize::from(12); + /// let range = TextRange::up_to(point); + /// + /// assert_eq!(range.len(), point); + /// assert_eq!(range, TextRange::new(0.into(), point)); + /// assert_eq!(range, TextRange::at(0.into(), point)); + /// ``` + #[inline] + pub fn up_to(end: TextSize) -> TextRange { + TextRange { + start: 0.into(), + end, + } + } +} + +/// Identity methods. +impl TextRange { + /// The start point of this range. + #[inline] + pub const fn start(self) -> TextSize { + self.start + } + + /// The end point of this range. + #[inline] + pub const fn end(self) -> TextSize { + self.end + } + + /// The size of this range. + #[inline] + pub const fn len(self) -> TextSize { + // HACK for const fn: math on primitives only + TextSize { + raw: self.end().raw - self.start().raw, + } + } + + /// Check if this range is empty. + #[inline] + pub const fn is_empty(self) -> bool { + // HACK for const fn: math on primitives only + self.start().raw == self.end().raw + } +} + +/// Manipulation methods. +impl TextRange { + /// Check if this range contains an offset. + /// + /// The end index is considered excluded. + /// + /// # Examples + /// + /// ```rust + /// # use ruff_text_size::*; + /// let (start, end): (TextSize, TextSize); + /// # start = 10.into(); end = 20.into(); + /// let range = TextRange::new(start, end); + /// assert!(range.contains(start)); + /// assert!(!range.contains(end)); + /// ``` + #[inline] + pub fn contains(self, offset: TextSize) -> bool { + self.start() <= offset && offset < self.end() + } + + /// Check if this range contains an offset. + /// + /// The end index is considered included. + /// + /// # Examples + /// + /// ```rust + /// # use ruff_text_size::*; + /// let (start, end): (TextSize, TextSize); + /// # start = 10.into(); end = 20.into(); + /// let range = TextRange::new(start, end); + /// assert!(range.contains_inclusive(start)); + /// assert!(range.contains_inclusive(end)); + /// ``` + #[inline] + pub fn contains_inclusive(self, offset: TextSize) -> bool { + self.start() <= offset && offset <= self.end() + } + + /// Check if this range completely contains another range. + /// + /// # Examples + /// + /// ```rust + /// # use ruff_text_size::*; + /// let larger = TextRange::new(0.into(), 20.into()); + /// let smaller = TextRange::new(5.into(), 15.into()); + /// assert!(larger.contains_range(smaller)); + /// assert!(!smaller.contains_range(larger)); + /// + /// // a range always contains itself + /// assert!(larger.contains_range(larger)); + /// assert!(smaller.contains_range(smaller)); + /// ``` + #[inline] + pub fn contains_range(self, other: TextRange) -> bool { + self.start() <= other.start() && other.end() <= self.end() + } + + /// The range covered by both ranges, if it exists. + /// If the ranges touch but do not overlap, the output range is empty. + /// + /// # Examples + /// + /// ```rust + /// # use ruff_text_size::*; + /// assert_eq!( + /// TextRange::intersect( + /// TextRange::new(0.into(), 10.into()), + /// TextRange::new(5.into(), 15.into()), + /// ), + /// Some(TextRange::new(5.into(), 10.into())), + /// ); + /// ``` + #[inline] + pub fn intersect(self, other: TextRange) -> Option { + let start = cmp::max(self.start(), other.start()); + let end = cmp::min(self.end(), other.end()); + if end < start { + return None; + } + Some(TextRange::new(start, end)) + } + + /// Extends the range to cover `other` as well. + /// + /// # Examples + /// + /// ```rust + /// # use ruff_text_size::*; + /// assert_eq!( + /// TextRange::cover( + /// TextRange::new(0.into(), 5.into()), + /// TextRange::new(15.into(), 20.into()), + /// ), + /// TextRange::new(0.into(), 20.into()), + /// ); + /// ``` + #[inline] + #[must_use] + pub fn cover(self, other: TextRange) -> TextRange { + let start = cmp::min(self.start(), other.start()); + let end = cmp::max(self.end(), other.end()); + TextRange::new(start, end) + } + + /// Extends the range to cover `other` offsets as well. + /// + /// # Examples + /// + /// ```rust + /// # use ruff_text_size::*; + /// assert_eq!( + /// TextRange::empty(0.into()).cover_offset(20.into()), + /// TextRange::new(0.into(), 20.into()), + /// ) + /// ``` + #[inline] + #[must_use] + pub fn cover_offset(self, offset: TextSize) -> TextRange { + self.cover(TextRange::empty(offset)) + } + + /// Add an offset to this range. + /// + /// Note that this is not appropriate for changing where a `TextRange` is + /// within some string; rather, it is for changing the reference anchor + /// that the `TextRange` is measured against. + /// + /// The unchecked version (`Add::add`) will _always_ panic on overflow, + /// in contrast to primitive integers, which check in debug mode only. + #[inline] + pub fn checked_add(self, offset: TextSize) -> Option { + Some(TextRange { + start: self.start.checked_add(offset)?, + end: self.end.checked_add(offset)?, + }) + } + + /// Subtract an offset from this range. + /// + /// Note that this is not appropriate for changing where a `TextRange` is + /// within some string; rather, it is for changing the reference anchor + /// that the `TextRange` is measured against. + /// + /// The unchecked version (`Sub::sub`) will _always_ panic on overflow, + /// in contrast to primitive integers, which check in debug mode only. + #[inline] + pub fn checked_sub(self, offset: TextSize) -> Option { + Some(TextRange { + start: self.start.checked_sub(offset)?, + end: self.end.checked_sub(offset)?, + }) + } + + /// Relative order of the two ranges (overlapping ranges are considered + /// equal). + /// + /// + /// This is useful when, for example, binary searching an array of disjoint + /// ranges. + /// + /// # Examples + /// + /// ``` + /// # use ruff_text_size::*; + /// # use std::cmp::Ordering; + /// + /// let a = TextRange::new(0.into(), 3.into()); + /// let b = TextRange::new(4.into(), 5.into()); + /// assert_eq!(a.ordering(b), Ordering::Less); + /// + /// let a = TextRange::new(0.into(), 3.into()); + /// let b = TextRange::new(3.into(), 5.into()); + /// assert_eq!(a.ordering(b), Ordering::Less); + /// + /// let a = TextRange::new(0.into(), 3.into()); + /// let b = TextRange::new(2.into(), 5.into()); + /// assert_eq!(a.ordering(b), Ordering::Equal); + /// + /// let a = TextRange::new(0.into(), 3.into()); + /// let b = TextRange::new(2.into(), 2.into()); + /// assert_eq!(a.ordering(b), Ordering::Equal); + /// + /// let a = TextRange::new(2.into(), 3.into()); + /// let b = TextRange::new(2.into(), 2.into()); + /// assert_eq!(a.ordering(b), Ordering::Greater); + /// ``` + #[inline] + pub fn ordering(self, other: TextRange) -> Ordering { + if self.end() <= other.start() { + Ordering::Less + } else if other.end() <= self.start() { + Ordering::Greater + } else { + Ordering::Equal + } + } + + /// Subtracts an offset from the start position. + /// + /// + /// ## Panics + /// If `start - amount` is less than zero. + /// + /// ## Examples + /// + /// ``` + /// use ruff_text_size::{TextRange, TextSize}; + /// + /// let range = TextRange::new(TextSize::from(5), TextSize::from(10)); + /// assert_eq!(range.sub_start(TextSize::from(2)), TextRange::new(TextSize::from(3), TextSize::from(10))); + /// ``` + #[inline] + #[must_use] + pub fn sub_start(&self, amount: TextSize) -> TextRange { + TextRange::new(self.start() - amount, self.end()) + } + + /// Adds an offset to the start position. + /// + /// ## Panics + /// If `start + amount > end` + /// + /// ## Examples + /// + /// ``` + /// use ruff_text_size::{TextRange, TextSize}; + /// + /// let range = TextRange::new(TextSize::from(5), TextSize::from(10)); + /// assert_eq!(range.add_start(TextSize::from(3)), TextRange::new(TextSize::from(8), TextSize::from(10))); + /// ``` + #[inline] + #[must_use] + pub fn add_start(&self, amount: TextSize) -> TextRange { + TextRange::new(self.start() + amount, self.end()) + } + + /// Subtracts an offset from the end position. + /// + /// + /// ## Panics + /// If `end - amount < 0` or `end - amount < start` + /// + /// ## Examples + /// + /// ``` + /// use ruff_text_size::{TextRange, TextSize}; + /// + /// let range = TextRange::new(TextSize::from(5), TextSize::from(10)); + /// assert_eq!(range.sub_end(TextSize::from(2)), TextRange::new(TextSize::from(5), TextSize::from(8))); + /// ``` + #[inline] + #[must_use] + pub fn sub_end(&self, amount: TextSize) -> TextRange { + TextRange::new(self.start(), self.end() - amount) + } + + /// Adds an offset to the end position. + /// + /// + /// ## Panics + /// If `end + amount > u32::MAX` + /// + /// ## Examples + /// + /// ``` + /// use ruff_text_size::{TextRange, TextSize}; + /// + /// let range = TextRange::new(TextSize::from(5), TextSize::from(10)); + /// assert_eq!(range.add_end(TextSize::from(2)), TextRange::new(TextSize::from(5), TextSize::from(12))); + /// ``` + #[inline] + #[must_use] + pub fn add_end(&self, amount: TextSize) -> TextRange { + TextRange::new(self.start(), self.end() + amount) + } +} + +impl Index for str { + type Output = str; + #[inline] + fn index(&self, index: TextRange) -> &str { + &self[Range::::from(index)] + } +} + +impl Index for String { + type Output = str; + #[inline] + fn index(&self, index: TextRange) -> &str { + &self[Range::::from(index)] + } +} + +impl IndexMut for str { + #[inline] + fn index_mut(&mut self, index: TextRange) -> &mut str { + &mut self[Range::::from(index)] + } +} + +impl IndexMut for String { + #[inline] + fn index_mut(&mut self, index: TextRange) -> &mut str { + &mut self[Range::::from(index)] + } +} + +impl RangeBounds for TextRange { + fn start_bound(&self) -> Bound<&TextSize> { + Bound::Included(&self.start) + } + + fn end_bound(&self) -> Bound<&TextSize> { + Bound::Excluded(&self.end) + } +} + +impl From> for TextRange { + #[inline] + fn from(r: Range) -> Self { + TextRange::new(r.start, r.end) + } +} + +impl From for Range +where + T: From, +{ + #[inline] + fn from(r: TextRange) -> Self { + r.start().into()..r.end().into() + } +} + +macro_rules! ops { + (impl $Op:ident for TextRange by fn $f:ident = $op:tt) => { + impl $Op<&TextSize> for TextRange { + type Output = TextRange; + #[inline] + fn $f(self, other: &TextSize) -> TextRange { + self $op *other + } + } + impl $Op for &TextRange + where + TextRange: $Op, + { + type Output = TextRange; + #[inline] + fn $f(self, other: T) -> TextRange { + *self $op other + } + } + }; +} + +impl Add for TextRange { + type Output = TextRange; + #[inline] + fn add(self, offset: TextSize) -> TextRange { + self.checked_add(offset) + .expect("TextRange +offset overflowed") + } +} + +impl Sub for TextRange { + type Output = TextRange; + #[inline] + fn sub(self, offset: TextSize) -> TextRange { + self.checked_sub(offset) + .expect("TextRange -offset overflowed") + } +} + +ops!(impl Add for TextRange by fn add = +); +ops!(impl Sub for TextRange by fn sub = -); + +impl AddAssign for TextRange +where + TextRange: Add, +{ + #[inline] + fn add_assign(&mut self, rhs: A) { + *self = *self + rhs; + } +} + +impl SubAssign for TextRange +where + TextRange: Sub, +{ + #[inline] + fn sub_assign(&mut self, rhs: S) { + *self = *self - rhs; + } +} diff --git a/crates/ruff_text_size/src/schemars_impls.rs b/crates/ruff_text_size/src/schemars_impls.rs new file mode 100644 index 0000000000..a1c7fa3618 --- /dev/null +++ b/crates/ruff_text_size/src/schemars_impls.rs @@ -0,0 +1,33 @@ +//! This module implements the [`JsonSchema`] trait from the `schemars` crate for +//! [`TextSize`] and [`TextRange`] if the `schemars` feature is enabled. This trait +//! exposes meta-information on how a given type is serialized and deserialized +//! using `serde`, and is currently used to generate autocomplete information +//! for the `rome.json` configuration file and TypeScript types for the node.js +//! bindings to the Workspace API + +use crate::{TextRange, TextSize}; +use schemars::{gen::SchemaGenerator, schema::Schema, JsonSchema}; + +impl JsonSchema for TextSize { + fn schema_name() -> String { + String::from("TextSize") + } + + fn json_schema(gen: &mut SchemaGenerator) -> Schema { + // TextSize is represented as a raw u32, see serde_impls.rs for the + // actual implementation + ::json_schema(gen) + } +} + +impl JsonSchema for TextRange { + fn schema_name() -> String { + String::from("TextRange") + } + + fn json_schema(gen: &mut SchemaGenerator) -> Schema { + // TextSize is represented as (TextSize, TextSize), see serde_impls.rs + // for the actual implementation + <(TextSize, TextSize)>::json_schema(gen) + } +} diff --git a/crates/ruff_text_size/src/serde_impls.rs b/crates/ruff_text_size/src/serde_impls.rs new file mode 100644 index 0000000000..b6885d674a --- /dev/null +++ b/crates/ruff_text_size/src/serde_impls.rs @@ -0,0 +1,47 @@ +use { + crate::{TextRange, TextSize}, + serde::{de, Deserialize, Deserializer, Serialize, Serializer}, +}; + +impl Serialize for TextSize { + fn serialize(&self, serializer: S) -> Result + where + S: Serializer, + { + self.raw.serialize(serializer) + } +} + +impl<'de> Deserialize<'de> for TextSize { + fn deserialize(deserializer: D) -> Result + where + D: Deserializer<'de>, + { + u32::deserialize(deserializer).map(TextSize::from) + } +} + +impl Serialize for TextRange { + fn serialize(&self, serializer: S) -> Result + where + S: Serializer, + { + (self.start(), self.end()).serialize(serializer) + } +} + +impl<'de> Deserialize<'de> for TextRange { + #[allow(clippy::nonminimal_bool)] + fn deserialize(deserializer: D) -> Result + where + D: Deserializer<'de>, + { + let (start, end) = Deserialize::deserialize(deserializer)?; + if !(start <= end) { + return Err(de::Error::custom(format!( + "invalid range: {start:?}..{end:?}" + ))); + } + Ok(TextRange::new(start, end)) + } +} diff --git a/crates/ruff_text_size/src/size.rs b/crates/ruff_text_size/src/size.rs new file mode 100644 index 0000000000..7002d5a9c4 --- /dev/null +++ b/crates/ruff_text_size/src/size.rs @@ -0,0 +1,197 @@ +use { + crate::TextLen, + std::{ + convert::TryFrom, + fmt, iter, + num::TryFromIntError, + ops::{Add, AddAssign, Sub, SubAssign}, + u32, + }, +}; + +/// A measure of text length. Also, equivalently, an index into text. +/// +/// This is a UTF-8 bytes offset stored as `u32`, but +/// most clients should treat it as an opaque measure. +/// +/// For cases that need to escape `TextSize` and return to working directly +/// with primitive integers, `TextSize` can be converted losslessly to/from +/// `u32` via [`From`] conversions as well as losslessly be converted [`Into`] +/// `usize`. The `usize -> TextSize` direction can be done via [`TryFrom`]. +/// +/// These escape hatches are primarily required for unit testing and when +/// converting from UTF-8 size to another coordinate space, such as UTF-16. +#[derive(Clone, Copy, Default, PartialEq, Eq, PartialOrd, Ord, Hash)] +pub struct TextSize { + pub(crate) raw: u32, +} + +impl fmt::Debug for TextSize { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + write!(f, "{}", self.raw) + } +} + +impl TextSize { + /// Creates a new `TextSize` at the given `offset`. + /// + /// # Examples + /// + /// ```rust + /// # use ruff_text_size::*; + /// assert_eq!(TextSize::from(4), TextSize::new(4)); + /// ``` + pub const fn new(offset: u32) -> Self { + Self { raw: offset } + } + + /// The text size of some primitive text-like object. + /// + /// Accepts `char`, `&str`, and `&String`. + /// + /// # Examples + /// + /// ```rust + /// # use ruff_text_size::*; + /// let char_size = TextSize::of('🦀'); + /// assert_eq!(char_size, TextSize::from(4)); + /// + /// let str_size = TextSize::of("rust-analyzer"); + /// assert_eq!(str_size, TextSize::from(13)); + /// ``` + #[inline] + pub fn of(text: T) -> TextSize { + text.text_len() + } + + /// Returns current raw `offset` as u32. + /// + /// # Examples + /// + /// ```rust + /// # use ruff_text_size::*; + /// assert_eq!(TextSize::from(4).to_u32(), 4); + /// ``` + pub fn to_u32(&self) -> u32 { + self.raw + } + + /// Returns current raw `offset` as usize. + /// + /// # Examples + /// + /// ```rust + /// # use ruff_text_size::*; + /// assert_eq!(TextSize::from(4).to_usize(), 4); + /// ``` + pub fn to_usize(&self) -> usize { + self.raw as usize + } +} + +/// Methods to act like a primitive integer type, where reasonably applicable. +// Last updated for parity with Rust 1.42.0. +impl TextSize { + /// Checked addition. Returns `None` if overflow occurred. + #[inline] + pub fn checked_add(self, rhs: TextSize) -> Option { + self.raw.checked_add(rhs.raw).map(|raw| TextSize { raw }) + } + + /// Checked subtraction. Returns `None` if overflow occurred. + #[inline] + pub fn checked_sub(self, rhs: TextSize) -> Option { + self.raw.checked_sub(rhs.raw).map(|raw| TextSize { raw }) + } +} + +impl From for TextSize { + #[inline] + fn from(raw: u32) -> Self { + TextSize::new(raw) + } +} + +impl From for u32 { + #[inline] + fn from(value: TextSize) -> Self { + value.to_u32() + } +} + +impl TryFrom for TextSize { + type Error = TryFromIntError; + #[inline] + fn try_from(value: usize) -> Result { + Ok(u32::try_from(value)?.into()) + } +} + +impl From for usize { + #[inline] + fn from(value: TextSize) -> Self { + value.to_usize() + } +} + +macro_rules! ops { + (impl $Op:ident for TextSize by fn $f:ident = $op:tt) => { + impl $Op for TextSize { + type Output = TextSize; + #[inline] + fn $f(self, other: TextSize) -> TextSize { + TextSize { raw: self.raw $op other.raw } + } + } + impl $Op<&TextSize> for TextSize { + type Output = TextSize; + #[inline] + fn $f(self, other: &TextSize) -> TextSize { + self $op *other + } + } + impl $Op for &TextSize + where + TextSize: $Op, + { + type Output = TextSize; + #[inline] + fn $f(self, other: T) -> TextSize { + *self $op other + } + } + }; +} + +ops!(impl Add for TextSize by fn add = +); +ops!(impl Sub for TextSize by fn sub = -); + +impl AddAssign for TextSize +where + TextSize: Add, +{ + #[inline] + fn add_assign(&mut self, rhs: A) { + *self = *self + rhs; + } +} + +impl SubAssign for TextSize +where + TextSize: Sub, +{ + #[inline] + fn sub_assign(&mut self, rhs: S) { + *self = *self - rhs; + } +} + +impl iter::Sum for TextSize +where + TextSize: Add, +{ + #[inline] + fn sum>(iter: I) -> TextSize { + iter.fold(0.into(), Add::add) + } +} diff --git a/crates/ruff_text_size/src/traits.rs b/crates/ruff_text_size/src/traits.rs new file mode 100644 index 0000000000..3f5261bfd8 --- /dev/null +++ b/crates/ruff_text_size/src/traits.rs @@ -0,0 +1,37 @@ +use {crate::TextSize, std::convert::TryInto}; + +use priv_in_pub::Sealed; +mod priv_in_pub { + pub trait Sealed {} +} + +/// Primitives with a textual length that can be passed to [`TextSize::of`]. +pub trait TextLen: Copy + Sealed { + /// The textual length of this primitive. + fn text_len(self) -> TextSize; +} + +impl Sealed for &'_ str {} +impl TextLen for &'_ str { + #[inline] + fn text_len(self) -> TextSize { + self.len().try_into().unwrap() + } +} + +impl Sealed for &'_ String {} +impl TextLen for &'_ String { + #[inline] + fn text_len(self) -> TextSize { + self.as_str().text_len() + } +} + +impl Sealed for char {} +impl TextLen for char { + #[inline] + #[allow(clippy::cast_possible_truncation)] + fn text_len(self) -> TextSize { + (self.len_utf8() as u32).into() + } +} diff --git a/crates/ruff_text_size/tests/auto_traits.rs b/crates/ruff_text_size/tests/auto_traits.rs new file mode 100644 index 0000000000..6adf8bd2d6 --- /dev/null +++ b/crates/ruff_text_size/tests/auto_traits.rs @@ -0,0 +1,18 @@ +use { + ruff_text_size::{TextRange, TextSize}, + static_assertions::assert_impl_all, + std::{ + fmt::Debug, + hash::Hash, + marker::{Send, Sync}, + panic::{RefUnwindSafe, UnwindSafe}, + }, +}; + +// auto traits +assert_impl_all!(TextSize: Send, Sync, Unpin, UnwindSafe, RefUnwindSafe); +assert_impl_all!(TextRange: Send, Sync, Unpin, UnwindSafe, RefUnwindSafe); + +// common traits +assert_impl_all!(TextSize: Copy, Debug, Default, Hash, Ord); +assert_impl_all!(TextRange: Copy, Debug, Default, Hash, Eq); diff --git a/crates/ruff_text_size/tests/constructors.rs b/crates/ruff_text_size/tests/constructors.rs new file mode 100644 index 0000000000..8ee2fde942 --- /dev/null +++ b/crates/ruff_text_size/tests/constructors.rs @@ -0,0 +1,24 @@ +use ruff_text_size::TextSize; + +#[derive(Copy, Clone)] +struct BadRope<'a>(&'a [&'a str]); + +impl BadRope<'_> { + fn text_len(self) -> TextSize { + self.0.iter().copied().map(TextSize::of).sum() + } +} + +#[test] +fn main() { + let x: char = 'c'; + let _ = TextSize::of(x); + + let x: &str = "hello"; + let _ = TextSize::of(x); + + let x: &String = &"hello".into(); + let _ = TextSize::of(x); + + let _ = BadRope(&[""]).text_len(); +} diff --git a/crates/ruff_text_size/tests/indexing.rs b/crates/ruff_text_size/tests/indexing.rs new file mode 100644 index 0000000000..e7205fdeea --- /dev/null +++ b/crates/ruff_text_size/tests/indexing.rs @@ -0,0 +1,8 @@ +use ruff_text_size::TextRange; + +#[test] +fn main() { + let range = TextRange::default(); + let _ = &""[range]; + let _ = &String::new()[range]; +} diff --git a/crates/ruff_text_size/tests/main.rs b/crates/ruff_text_size/tests/main.rs new file mode 100644 index 0000000000..8d8dd091e9 --- /dev/null +++ b/crates/ruff_text_size/tests/main.rs @@ -0,0 +1,79 @@ +use { + ruff_text_size::{TextRange, TextSize}, + std::ops, +}; + +fn size(x: u32) -> TextSize { + TextSize::from(x) +} + +fn range(x: ops::Range) -> TextRange { + TextRange::new(x.start.into(), x.end.into()) +} + +#[test] +fn sum() { + let xs: Vec = vec![size(0), size(1), size(2)]; + assert_eq!(xs.iter().sum::(), size(3)); + assert_eq!(xs.into_iter().sum::(), size(3)); +} + +#[test] +fn math() { + assert_eq!(size(10) + size(5), size(15)); + assert_eq!(size(10) - size(5), size(5)); +} + +#[test] +fn checked_math() { + assert_eq!(size(1).checked_add(size(1)), Some(size(2))); + assert_eq!(size(1).checked_sub(size(1)), Some(size(0))); + assert_eq!(size(1).checked_sub(size(2)), None); + assert_eq!(size(!0).checked_add(size(1)), None); +} + +#[test] +#[rustfmt::skip] +fn contains() { + assert!( range(2..4).contains_range(range(2..3))); + assert!( ! range(2..4).contains_range(range(1..3))); +} + +#[test] +fn intersect() { + assert_eq!(range(1..2).intersect(range(2..3)), Some(range(2..2))); + assert_eq!(range(1..5).intersect(range(2..3)), Some(range(2..3))); + assert_eq!(range(1..2).intersect(range(3..4)), None); +} + +#[test] +fn cover() { + assert_eq!(range(1..2).cover(range(2..3)), range(1..3)); + assert_eq!(range(1..5).cover(range(2..3)), range(1..5)); + assert_eq!(range(1..2).cover(range(4..5)), range(1..5)); +} + +#[test] +fn cover_offset() { + assert_eq!(range(1..3).cover_offset(size(0)), range(0..3)); + assert_eq!(range(1..3).cover_offset(size(1)), range(1..3)); + assert_eq!(range(1..3).cover_offset(size(2)), range(1..3)); + assert_eq!(range(1..3).cover_offset(size(3)), range(1..3)); + assert_eq!(range(1..3).cover_offset(size(4)), range(1..4)); +} + +#[test] +#[rustfmt::skip] +fn contains_point() { + assert!( ! range(1..3).contains(size(0))); + assert!( range(1..3).contains(size(1))); + assert!( range(1..3).contains(size(2))); + assert!( ! range(1..3).contains(size(3))); + assert!( ! range(1..3).contains(size(4))); + + assert!( ! range(1..3).contains_inclusive(size(0))); + assert!( range(1..3).contains_inclusive(size(1))); + assert!( range(1..3).contains_inclusive(size(2))); + assert!( range(1..3).contains_inclusive(size(3))); + assert!( ! range(1..3).contains_inclusive(size(4))); +} diff --git a/crates/ruff_text_size/tests/serde.rs b/crates/ruff_text_size/tests/serde.rs new file mode 100644 index 0000000000..0d8f9d4a6a --- /dev/null +++ b/crates/ruff_text_size/tests/serde.rs @@ -0,0 +1,83 @@ +use { + ruff_text_size::{TextRange, TextSize}, + serde_test::{assert_de_tokens_error, assert_tokens, Token}, + std::ops, +}; + +fn size(x: u32) -> TextSize { + TextSize::from(x) +} + +fn range(x: ops::Range) -> TextRange { + TextRange::new(x.start.into(), x.end.into()) +} + +#[test] +fn size_serialization() { + assert_tokens(&size(00), &[Token::U32(00)]); + assert_tokens(&size(10), &[Token::U32(10)]); + assert_tokens(&size(20), &[Token::U32(20)]); + assert_tokens(&size(30), &[Token::U32(30)]); +} + +#[test] +fn range_serialization() { + assert_tokens( + &range(00..10), + &[ + Token::Tuple { len: 2 }, + Token::U32(00), + Token::U32(10), + Token::TupleEnd, + ], + ); + assert_tokens( + &range(10..20), + &[ + Token::Tuple { len: 2 }, + Token::U32(10), + Token::U32(20), + Token::TupleEnd, + ], + ); + assert_tokens( + &range(20..30), + &[ + Token::Tuple { len: 2 }, + Token::U32(20), + Token::U32(30), + Token::TupleEnd, + ], + ); + assert_tokens( + &range(30..40), + &[ + Token::Tuple { len: 2 }, + Token::U32(30), + Token::U32(40), + Token::TupleEnd, + ], + ); +} + +#[test] +fn invalid_range_deserialization() { + assert_tokens::( + &range(62..92), + &[ + Token::Tuple { len: 2 }, + Token::U32(62), + Token::U32(92), + Token::TupleEnd, + ], + ); + assert_de_tokens_error::( + &[ + Token::Tuple { len: 2 }, + Token::U32(92), + Token::U32(62), + Token::TupleEnd, + ], + "invalid range: 92..62", + ); +} diff --git a/crates/ruff_wasm/Cargo.toml b/crates/ruff_wasm/Cargo.toml index 5304225dbd..f3707a7362 100644 --- a/crates/ruff_wasm/Cargo.toml +++ b/crates/ruff_wasm/Cargo.toml @@ -30,7 +30,7 @@ ruff_source_file = { path = "../ruff_source_file" } console_error_panic_hook = { version = "0.1.7", optional = true } console_log = { version = "1.0.0" } log = { workspace = true } -rustpython-parser = { workspace = true } + serde = { workspace = true } serde-wasm-bindgen = { version = "0.5.0" } wasm-bindgen = { version = "0.2.84" } diff --git a/crates/ruff_wasm/src/lib.rs b/crates/ruff_wasm/src/lib.rs index c937f65aa7..443e296afe 100644 --- a/crates/ruff_wasm/src/lib.rs +++ b/crates/ruff_wasm/src/lib.rs @@ -2,8 +2,8 @@ use std::path::Path; use js_sys::Error; -use rustpython_parser::lexer::LexResult; -use rustpython_parser::{parse_tokens, Mode}; +use ruff_python_parser::lexer::LexResult; +use ruff_python_parser::{parse_tokens, Mode}; use serde::{Deserialize, Serialize}; use wasm_bindgen::prelude::*; @@ -268,7 +268,7 @@ impl Workspace { } pub fn format_ir(&self, contents: &str) -> Result { - let tokens: Vec<_> = rustpython_parser::lexer::lex(contents, Mode::Module).collect(); + let tokens: Vec<_> = ruff_python_parser::lexer::lex(contents, Mode::Module).collect(); let mut comment_ranges = CommentRangesBuilder::default(); for (token, range) in tokens.iter().flatten() { @@ -291,13 +291,13 @@ impl Workspace { /// Parses the content and returns its AST pub fn parse(&self, contents: &str) -> Result { - let parsed = rustpython_parser::parse(contents, Mode::Module, ".").map_err(into_error)?; + let parsed = ruff_python_parser::parse(contents, Mode::Module, ".").map_err(into_error)?; Ok(format!("{parsed:#?}")) } pub fn tokens(&self, contents: &str) -> Result { - let tokens: Vec<_> = rustpython_parser::lexer::lex(contents, Mode::Module).collect(); + let tokens: Vec<_> = ruff_python_parser::lexer::lex(contents, Mode::Module).collect(); Ok(format!("{tokens:#?}")) } diff --git a/fuzz/Cargo.toml b/fuzz/Cargo.toml index d57de87402..9d2cf37846 100644 --- a/fuzz/Cargo.toml +++ b/fuzz/Cargo.toml @@ -23,12 +23,10 @@ ruff = { path = "../crates/ruff" } ruff_python_ast = { path = "../crates/ruff_python_ast" } ruff_python_codegen = { path = "../crates/ruff_python_codegen" } ruff_python_formatter = { path = "../crates/ruff_python_formatter" } +ruff_python_parser = { path = "../crates/ruff_python_parser" } ruff_source_file = { path = "../crates/ruff_source_file" } similar = { version = "2.2.1" } -rustpython-parser = { git = "https://github.com/astral-sh/RustPython-Parser.git", rev = "593b46be5e0336fe01917f8ef400bd12d81df8c1" } -rustpython-ast = { git = "https://github.com/astral-sh/RustPython-Parser.git", rev = "593b46be5e0336fe01917f8ef400bd12d81df8c1" } - # Prevent this from interfering with workspaces [workspace] members = ["."] diff --git a/fuzz/fuzz_targets/ruff_parse_simple.rs b/fuzz/fuzz_targets/ruff_parse_simple.rs index 880616369e..3cbdc62491 100644 --- a/fuzz/fuzz_targets/ruff_parse_simple.rs +++ b/fuzz/fuzz_targets/ruff_parse_simple.rs @@ -4,10 +4,10 @@ #![no_main] use libfuzzer_sys::{fuzz_target, Corpus}; +use ruff_python_ast::Suite; use ruff_python_codegen::{Generator, Stylist}; +use ruff_python_parser::{lexer, Mode, Parse, ParseError}; use ruff_source_file::Locator; -use rustpython_ast::Suite; -use rustpython_parser::{lexer, Mode, Parse, ParseError}; fn do_fuzz(case: &[u8]) -> Corpus { let Ok(code) = std::str::from_utf8(case) else {